OLD | NEW |
| (Empty) |
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_MODULES_INCLUDE_MODULE_H_ | |
12 #define WEBRTC_MODULES_INCLUDE_MODULE_H_ | |
13 | |
14 #pragma message("WARNING: webrtc/modules/include is DEPRECATED; use webrtc/modul
es/include") | |
15 | |
16 #include "webrtc/typedefs.h" | |
17 | |
18 namespace webrtc { | |
19 | |
20 class ProcessThread; | |
21 | |
22 class Module { | |
23 public: | |
24 // Returns the number of milliseconds until the module wants a worker | |
25 // thread to call Process. | |
26 // This method is called on the same worker thread as Process will | |
27 // be called on. | |
28 // TODO(tommi): Almost all implementations of this function, need to know | |
29 // the current tick count. Consider passing it as an argument. It could | |
30 // also improve the accuracy of when the next callback occurs since the | |
31 // thread that calls Process() will also have it's tick count reference | |
32 // which might not match with what the implementations use. | |
33 virtual int64_t TimeUntilNextProcess() = 0; | |
34 | |
35 // Process any pending tasks such as timeouts. | |
36 // Called on a worker thread. | |
37 virtual int32_t Process() = 0; | |
38 | |
39 // This method is called when the module is attached to a *running* process | |
40 // thread or detached from one. In the case of detaching, |process_thread| | |
41 // will be nullptr. | |
42 // | |
43 // This method will be called in the following cases: | |
44 // | |
45 // * Non-null process_thread: | |
46 // * ProcessThread::RegisterModule() is called while the thread is running. | |
47 // * ProcessThread::Start() is called and RegisterModule has previously | |
48 // been called. The thread will be started immediately after notifying | |
49 // all modules. | |
50 // | |
51 // * Null process_thread: | |
52 // * ProcessThread::DeRegisterModule() is called while the thread is | |
53 // running. | |
54 // * ProcessThread::Stop() was called and the thread has been stopped. | |
55 // | |
56 // NOTE: This method is not called from the worker thread itself, but from | |
57 // the thread that registers/deregisters the module or calls Start/Stop. | |
58 virtual void ProcessThreadAttached(ProcessThread* process_thread) {} | |
59 | |
60 protected: | |
61 virtual ~Module() {} | |
62 }; | |
63 | |
64 // Reference counted version of the Module interface. | |
65 class RefCountedModule : public Module { | |
66 public: | |
67 // Increase the reference count by one. | |
68 // Returns the incremented reference count. | |
69 virtual int32_t AddRef() const = 0; | |
70 | |
71 // Decrease the reference count by one. | |
72 // Returns the decreased reference count. | |
73 // Returns 0 if the last reference was just released. | |
74 // When the reference count reaches 0 the object will self-destruct. | |
75 virtual int32_t Release() const = 0; | |
76 | |
77 protected: | |
78 ~RefCountedModule() override = default; | |
79 }; | |
80 | |
81 } // namespace webrtc | |
82 | |
83 #endif // WEBRTC_MODULES_INCLUDE_MODULE_H_ | |
OLD | NEW |