blob: 2262f2d7afd467417332464eb6cdad3b126d8501 [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_INTERFACE_PROCESS_THREAD_H_
12#define WEBRTC_MODULES_UTILITY_INTERFACE_PROCESS_THREAD_H_
13
pbos@webrtc.org8b062002013-07-12 08:28:10 +000014#include "webrtc/typedefs.h"
tommi@webrtc.org0c3e12b2015-02-06 09:44:12 +000015#include "webrtc/base/scoped_ptr.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000016
17namespace webrtc {
18class Module;
19
tommi@webrtc.org0c3e12b2015-02-06 09:44:12 +000020class ProcessThread {
21 public:
22 virtual ~ProcessThread();
niklase@google.com470e71d2011-07-07 08:21:25 +000023
tommi@webrtc.org0c3e12b2015-02-06 09:44:12 +000024 static rtc::scoped_ptr<ProcessThread> Create();
niklase@google.com470e71d2011-07-07 08:21:25 +000025
tommi@webrtc.org0c3e12b2015-02-06 09:44:12 +000026 // Starts the worker thread. Must be called from the construction thread.
27 virtual int32_t Start() = 0;
28
29 // Stops the worker thread. Must be called from the construction thread.
30 virtual int32_t Stop() = 0;
31
32 // Wakes the thread up to give a module a chance to do processing right
33 // away. This causes the worker thread to wake up and requery the specified
34 // module for when it should be called back. (Typically the module should
35 // return 0 from TimeUntilNextProcess on the worker thread at that point).
36 // Can be called on any thread.
37 virtual void WakeUp(Module* module) = 0;
38
39 // Adds a module that will start to receive callbacks on the worker thread.
40 // Can be called from any thread.
41 virtual int32_t RegisterModule(Module* module) = 0;
42
43 // Removes a previously registered module.
44 // Can be called from any thread.
45 virtual int32_t DeRegisterModule(const Module* module) = 0;
niklase@google.com470e71d2011-07-07 08:21:25 +000046};
tommi@webrtc.org0c3e12b2015-02-06 09:44:12 +000047
pbos@webrtc.orgd900e8b2013-07-03 15:12:26 +000048} // namespace webrtc
tommi@webrtc.org0c3e12b2015-02-06 09:44:12 +000049
niklase@google.com470e71d2011-07-07 08:21:25 +000050#endif // WEBRTC_MODULES_UTILITY_INTERFACE_PROCESS_THREAD_H_