Home | History | Annotate | Download | only in voice_engine
      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 
     18 class MonitorObserver
     19 {
     20 public:
     21     virtual void OnPeriodicProcess() = 0;
     22 protected:
     23     virtual ~MonitorObserver() {}
     24 };
     25 
     26 
     27 namespace webrtc {
     28 class CriticalSectionWrapper;
     29 
     30 namespace voe {
     31 
     32 class MonitorModule : public Module
     33 {
     34 public:
     35     int32_t RegisterObserver(MonitorObserver& observer);
     36 
     37     int32_t DeRegisterObserver();
     38 
     39     MonitorModule();
     40 
     41     virtual ~MonitorModule();
     42 public:	// module
     43  int64_t TimeUntilNextProcess() override;
     44 
     45  int32_t Process() override;
     46 
     47 private:
     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