1/*
2 *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
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
11#ifndef WEBRTC_VOICE_ENGINE_MONITOR_MODULE_H
12#define WEBRTC_VOICE_ENGINE_MONITOR_MODULE_H
13
14#include "webrtc/modules/include/module.h"
15#include "webrtc/typedefs.h"
16#include "webrtc/voice_engine/voice_engine_defines.h"
17
18class MonitorObserver
19{
20public:
21    virtual void OnPeriodicProcess() = 0;
22protected:
23    virtual ~MonitorObserver() {}
24};
25
26
27namespace webrtc {
28class CriticalSectionWrapper;
29
30namespace voe {
31
32class MonitorModule : public Module
33{
34public:
35    int32_t RegisterObserver(MonitorObserver& observer);
36
37    int32_t DeRegisterObserver();
38
39    MonitorModule();
40
41    virtual ~MonitorModule();
42public:	// module
43 int64_t TimeUntilNextProcess() override;
44
45 int32_t Process() override;
46
47private:
48    MonitorObserver* _observerPtr;
49    CriticalSectionWrapper&	_callbackCritSect;
50    int64_t _lastProcessTime;
51};
52
53}  // namespace voe
54
55}  // namespace webrtc
56
57#endif // VOICE_ENGINE_MONITOR_MODULE
58