blob: ef863f90b821e1d59b3e20461422471e0657921a [file] [log] [blame]
niklase@google.com470e71d2011-07-07 08:21:25 +00001/*
leozwang@webrtc.org813e4b02012-03-01 18:34:25 +00002 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
niklase@google.com470e71d2011-07-07 08:21:25 +00003 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
andrew@webrtc.org00c7c432013-01-02 16:06:39 +000011#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
12#include "webrtc/system_wrappers/interface/tick_util.h"
13#include "webrtc/voice_engine/monitor_module.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000014
15namespace webrtc {
16
17namespace voe {
18
19MonitorModule::MonitorModule() :
niklase@google.com470e71d2011-07-07 08:21:25 +000020 _observerPtr(NULL),
xians@google.com22963ab2011-08-03 12:40:23 +000021 _callbackCritSect(*CriticalSectionWrapper::CreateCriticalSection()),
andrew@webrtc.org00c7c432013-01-02 16:06:39 +000022 _lastProcessTime(TickTime::MillisecondTimestamp())
niklase@google.com470e71d2011-07-07 08:21:25 +000023{
24}
25
26MonitorModule::~MonitorModule()
27{
28 delete &_callbackCritSect;
29}
30
pbos@webrtc.org6141e132013-04-09 10:09:10 +000031int32_t
niklase@google.com470e71d2011-07-07 08:21:25 +000032MonitorModule::RegisterObserver(MonitorObserver& observer)
33{
mflodman@webrtc.org9a065d12012-03-07 08:12:21 +000034 CriticalSectionScoped lock(&_callbackCritSect);
niklase@google.com470e71d2011-07-07 08:21:25 +000035 if (_observerPtr)
36 {
37 return -1;
38 }
39 _observerPtr = &observer;
40 return 0;
41}
42
pbos@webrtc.org6141e132013-04-09 10:09:10 +000043int32_t
niklase@google.com470e71d2011-07-07 08:21:25 +000044MonitorModule::DeRegisterObserver()
45{
mflodman@webrtc.org9a065d12012-03-07 08:12:21 +000046 CriticalSectionScoped lock(&_callbackCritSect);
niklase@google.com470e71d2011-07-07 08:21:25 +000047 if (!_observerPtr)
48 {
49 return 0;
50 }
51 _observerPtr = NULL;
52 return 0;
53}
54
pbos@webrtc.org6141e132013-04-09 10:09:10 +000055int32_t
leozwang@webrtc.org813e4b02012-03-01 18:34:25 +000056MonitorModule::Version(char* version,
pbos@webrtc.org6141e132013-04-09 10:09:10 +000057 uint32_t& remainingBufferInBytes,
58 uint32_t& position) const
niklase@google.com470e71d2011-07-07 08:21:25 +000059{
60 return 0;
61}
62
pbos@webrtc.org6141e132013-04-09 10:09:10 +000063int32_t
pbos@webrtc.org92135212013-05-14 08:31:39 +000064MonitorModule::ChangeUniqueId(int32_t id)
niklase@google.com470e71d2011-07-07 08:21:25 +000065{
66 return 0;
67}
68
pbos@webrtc.org6141e132013-04-09 10:09:10 +000069int32_t
niklase@google.com470e71d2011-07-07 08:21:25 +000070MonitorModule::TimeUntilNextProcess()
71{
pbos@webrtc.org6141e132013-04-09 10:09:10 +000072 uint32_t now = TickTime::MillisecondTimestamp();
73 int32_t timeToNext =
niklase@google.com470e71d2011-07-07 08:21:25 +000074 kAverageProcessUpdateTimeMs - (now - _lastProcessTime);
75 return (timeToNext);
76}
77
pbos@webrtc.org6141e132013-04-09 10:09:10 +000078int32_t
niklase@google.com470e71d2011-07-07 08:21:25 +000079MonitorModule::Process()
80{
andrew@webrtc.org00c7c432013-01-02 16:06:39 +000081 _lastProcessTime = TickTime::MillisecondTimestamp();
niklase@google.com470e71d2011-07-07 08:21:25 +000082 if (_observerPtr)
83 {
mflodman@webrtc.org9a065d12012-03-07 08:12:21 +000084 CriticalSectionScoped lock(&_callbackCritSect);
niklase@google.com470e71d2011-07-07 08:21:25 +000085 _observerPtr->OnPeriodicProcess();
86 }
87 return 0;
88}
89
90} // namespace voe
91
92} // namespace webrtc