blob: 2d8f4d46565e5997e177fac03d129eeaafcc8e51 [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
Henrik Kjellander98f53512015-10-28 18:17:40 +010011#include "webrtc/system_wrappers/include/tick_util.h"
andrew@webrtc.org00c7c432013-01-02 16:06:39 +000012#include "webrtc/voice_engine/monitor_module.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000013
14namespace webrtc {
15
16namespace voe {
17
18MonitorModule::MonitorModule() :
niklase@google.com470e71d2011-07-07 08:21:25 +000019 _observerPtr(NULL),
andrew@webrtc.org00c7c432013-01-02 16:06:39 +000020 _lastProcessTime(TickTime::MillisecondTimestamp())
niklase@google.com470e71d2011-07-07 08:21:25 +000021{
22}
23
24MonitorModule::~MonitorModule()
25{
niklase@google.com470e71d2011-07-07 08:21:25 +000026}
27
tommi@webrtc.org41617152015-01-29 12:12:49 +000028int32_t
niklase@google.com470e71d2011-07-07 08:21:25 +000029MonitorModule::RegisterObserver(MonitorObserver& observer)
30{
tommi31fc21f2016-01-21 10:37:37 -080031 rtc::CritScope lock(&_callbackCritSect);
niklase@google.com470e71d2011-07-07 08:21:25 +000032 if (_observerPtr)
33 {
34 return -1;
35 }
36 _observerPtr = &observer;
37 return 0;
38}
39
tommi@webrtc.org41617152015-01-29 12:12:49 +000040int32_t
niklase@google.com470e71d2011-07-07 08:21:25 +000041MonitorModule::DeRegisterObserver()
42{
tommi31fc21f2016-01-21 10:37:37 -080043 rtc::CritScope lock(&_callbackCritSect);
niklase@google.com470e71d2011-07-07 08:21:25 +000044 if (!_observerPtr)
45 {
46 return 0;
47 }
48 _observerPtr = NULL;
49 return 0;
50}
51
pkasting@chromium.org0b1534c2014-12-15 22:09:40 +000052int64_t
niklase@google.com470e71d2011-07-07 08:21:25 +000053MonitorModule::TimeUntilNextProcess()
54{
pkasting@chromium.org0b1534c2014-12-15 22:09:40 +000055 int64_t now = TickTime::MillisecondTimestamp();
56 const int64_t kAverageProcessUpdateTimeMs = 1000;
57 return kAverageProcessUpdateTimeMs - (now - _lastProcessTime);
niklase@google.com470e71d2011-07-07 08:21:25 +000058}
59
torbjorngda33a8a2016-02-25 04:34:03 -080060int32_t
niklase@google.com470e71d2011-07-07 08:21:25 +000061MonitorModule::Process()
62{
andrew@webrtc.org00c7c432013-01-02 16:06:39 +000063 _lastProcessTime = TickTime::MillisecondTimestamp();
tommi31fc21f2016-01-21 10:37:37 -080064 rtc::CritScope lock(&_callbackCritSect);
niklase@google.com470e71d2011-07-07 08:21:25 +000065 if (_observerPtr)
66 {
niklase@google.com470e71d2011-07-07 08:21:25 +000067 _observerPtr->OnPeriodicProcess();
68 }
torbjorngda33a8a2016-02-25 04:34:03 -080069 return 0;
niklase@google.com470e71d2011-07-07 08:21:25 +000070}
71
pbos@webrtc.orgd900e8b2013-07-03 15:12:26 +000072} // namespace voe
niklase@google.com470e71d2011-07-07 08:21:25 +000073
pbos@webrtc.orgd900e8b2013-07-03 15:12:26 +000074} // namespace webrtc