process_thread_impl.h revision c75102eba7ceb57f76a2e9c140dac123896a6d0b
1/*
2 *  Copyright (c) 2011 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_MODULES_UTILITY_SOURCE_PROCESS_THREAD_IMPL_H_
12#define WEBRTC_MODULES_UTILITY_SOURCE_PROCESS_THREAD_IMPL_H_
13
14#include "critical_section_wrapper.h"
15#include "event_wrapper.h"
16#include "list_wrapper.h"
17#include "process_thread.h"
18#include "thread_wrapper.h"
19#include "typedefs.h"
20
21namespace webrtc {
22class ProcessThreadImpl : public ProcessThread
23{
24public:
25    ProcessThreadImpl();
26    virtual ~ProcessThreadImpl();
27
28    virtual int32_t Start();
29    virtual int32_t Stop();
30
31    virtual int32_t RegisterModule(const Module* module);
32    virtual int32_t DeRegisterModule(const Module* module);
33
34protected:
35    static bool Run(void* obj);
36
37    bool Process();
38
39private:
40    EventWrapper&           _timeEvent;
41    CriticalSectionWrapper* _critSectModules;
42    ListWrapper             _modules;
43    ThreadWrapper*          _thread;
44};
45} // namespace webrtc
46
47#endif // WEBRTC_MODULES_UTILITY_SOURCE_PROCESS_THREAD_IMPL_H_
48