blob: 14fbc18a2a5de39f16280cfb4774bb41f81aa3aa [file] [log] [blame]
niklase@google.com470e71d2011-07-07 08:21:25 +00001/*
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
henrike@webrtc.org79cf3ac2014-01-13 15:21:30 +000014#include <list>
15
pbos@webrtc.org8b062002013-07-12 08:28:10 +000016#include "webrtc/modules/utility/interface/process_thread.h"
17#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
18#include "webrtc/system_wrappers/interface/event_wrapper.h"
pbos@webrtc.org8b062002013-07-12 08:28:10 +000019#include "webrtc/system_wrappers/interface/thread_wrapper.h"
20#include "webrtc/typedefs.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000021
22namespace webrtc {
23class ProcessThreadImpl : public ProcessThread
24{
25public:
26 ProcessThreadImpl();
27 virtual ~ProcessThreadImpl();
28
pbos@webrtc.orgc75102e2013-04-09 13:32:55 +000029 virtual int32_t Start();
30 virtual int32_t Stop();
niklase@google.com470e71d2011-07-07 08:21:25 +000031
henrike@webrtc.org79cf3ac2014-01-13 15:21:30 +000032 virtual int32_t RegisterModule(Module* module);
pbos@webrtc.orgc75102e2013-04-09 13:32:55 +000033 virtual int32_t DeRegisterModule(const Module* module);
niklase@google.com470e71d2011-07-07 08:21:25 +000034
35protected:
36 static bool Run(void* obj);
37
38 bool Process();
39
40private:
henrike@webrtc.org79cf3ac2014-01-13 15:21:30 +000041 typedef std::list<Module*> ModuleList;
niklase@google.com470e71d2011-07-07 08:21:25 +000042 EventWrapper& _timeEvent;
henrike@webrtc.org105e0712011-12-16 19:53:46 +000043 CriticalSectionWrapper* _critSectModules;
henrike@webrtc.org79cf3ac2014-01-13 15:21:30 +000044 ModuleList _modules;
niklase@google.com470e71d2011-07-07 08:21:25 +000045 ThreadWrapper* _thread;
46};
pbos@webrtc.orgd900e8b2013-07-03 15:12:26 +000047} // namespace webrtc
niklase@google.com470e71d2011-07-07 08:21:25 +000048
49#endif // WEBRTC_MODULES_UTILITY_SOURCE_PROCESS_THREAD_IMPL_H_