Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: webrtc/base/messagequeue.h

Issue 2915253002: Delete SignalThread class. (Closed)
Patch Set: Fix template magic. Naming and formatting fixes. Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 140
141 template<class T> 141 template<class T>
142 class DisposeData : public MessageData { 142 class DisposeData : public MessageData {
143 public: 143 public:
144 explicit DisposeData(T* data) : data_(data) { } 144 explicit DisposeData(T* data) : data_(data) { }
145 virtual ~DisposeData() { delete data_; } 145 virtual ~DisposeData() { delete data_; }
146 private: 146 private:
147 T* data_; 147 T* data_;
148 }; 148 };
149 149
150 class CallableData : public MessageData {
151 public:
152 virtual void Call(void) = 0;
tommi 2017/06/27 12:01:14 virtual void Call() = 0; Btw, this seems to now b
kwiberg-webrtc 2017/06/27 13:14:56 sgtm---the new Post() call could take a unique_ptr
nisse-webrtc 2017/06/28 11:47:54 Done.
tommi 2017/06/28 13:17:33 yes, I think so
nisse-webrtc 2017/06/29 10:40:31 I've renamed Call to Run, and Callable to Runnable
nisse-webrtc 2017/06/29 10:40:32 Sounds like it could work, I'll give it a try, but
153 };
154
155 template <class FunctorT>
156 class FunctorData : public CallableData {
157 public:
158 explicit FunctorData(FunctorT functor) : functor_(std::move(functor)) {}
159 void Call(void) override { functor_(); }
tommi 2017/06/27 12:01:14 same here (no 'void' when there aren't any argumen
160
161 private:
162 FunctorT functor_;
163 };
164
150 const uint32_t MQID_ANY = static_cast<uint32_t>(-1); 165 const uint32_t MQID_ANY = static_cast<uint32_t>(-1);
151 const uint32_t MQID_DISPOSE = static_cast<uint32_t>(-2); 166 const uint32_t MQID_DISPOSE = static_cast<uint32_t>(-2);
152 167
153 // No destructor 168 // No destructor
154 169
155 struct Message { 170 struct Message {
156 Message() 171 Message()
157 : phandler(nullptr), message_id(0), pdata(nullptr), ts_sensitive(0) {} 172 : phandler(nullptr), message_id(0), pdata(nullptr), ts_sensitive(0) {}
158 inline bool Match(MessageHandler* handler, uint32_t id) const { 173 inline bool Match(MessageHandler* handler, uint32_t id) const {
159 return (handler == nullptr || handler == phandler) && 174 return (handler == nullptr || handler == phandler) &&
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 // 2) cmsWait seconds have elapsed (returns false) 244 // 2) cmsWait seconds have elapsed (returns false)
230 // 3) Stop() is called (returns false) 245 // 3) Stop() is called (returns false)
231 virtual bool Get(Message *pmsg, int cmsWait = kForever, 246 virtual bool Get(Message *pmsg, int cmsWait = kForever,
232 bool process_io = true); 247 bool process_io = true);
233 virtual bool Peek(Message *pmsg, int cmsWait = 0); 248 virtual bool Peek(Message *pmsg, int cmsWait = 0);
234 virtual void Post(const Location& posted_from, 249 virtual void Post(const Location& posted_from,
235 MessageHandler* phandler, 250 MessageHandler* phandler,
236 uint32_t id = 0, 251 uint32_t id = 0,
237 MessageData* pdata = nullptr, 252 MessageData* pdata = nullptr,
238 bool time_sensitive = false); 253 bool time_sensitive = false);
254
255 // Additional type check, or else it collides with calls to the
256 // above Post method with the optional arguments omitted.
257 template <class FunctorT,
258 typename std::enable_if<!std::is_pointer<FunctorT>::value>::type* =
259 nullptr>
260 void Post(const Location& posted_from, FunctorT functor) {
261 PostFunctorInternal(posted_from,
262 new FunctorData<FunctorT>(std::move(functor)));
263 }
264
239 virtual void PostDelayed(const Location& posted_from, 265 virtual void PostDelayed(const Location& posted_from,
240 int cmsDelay, 266 int cmsDelay,
241 MessageHandler* phandler, 267 MessageHandler* phandler,
242 uint32_t id = 0, 268 uint32_t id = 0,
243 MessageData* pdata = nullptr); 269 MessageData* pdata = nullptr);
244 virtual void PostAt(const Location& posted_from, 270 virtual void PostAt(const Location& posted_from,
245 int64_t tstamp, 271 int64_t tstamp,
246 MessageHandler* phandler, 272 MessageHandler* phandler,
247 uint32_t id = 0, 273 uint32_t id = 0,
248 MessageData* pdata = nullptr); 274 MessageData* pdata = nullptr);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 bool fPeekKeep_; 331 bool fPeekKeep_;
306 Message msgPeek_; 332 Message msgPeek_;
307 MessageList msgq_ GUARDED_BY(crit_); 333 MessageList msgq_ GUARDED_BY(crit_);
308 PriorityQueue dmsgq_ GUARDED_BY(crit_); 334 PriorityQueue dmsgq_ GUARDED_BY(crit_);
309 uint32_t dmsgq_next_num_ GUARDED_BY(crit_); 335 uint32_t dmsgq_next_num_ GUARDED_BY(crit_);
310 CriticalSection crit_; 336 CriticalSection crit_;
311 bool fInitialized_; 337 bool fInitialized_;
312 bool fDestroyed_; 338 bool fDestroyed_;
313 339
314 private: 340 private:
341 void PostFunctorInternal(const Location& posted_from,
342 CallableData* message_data);
343
315 volatile int stop_; 344 volatile int stop_;
316 345
317 // The SocketServer might not be owned by MessageQueue. 346 // The SocketServer might not be owned by MessageQueue.
318 SocketServer* const ss_; 347 SocketServer* const ss_;
319 // Used if SocketServer ownership lies with |this|. 348 // Used if SocketServer ownership lies with |this|.
320 std::unique_ptr<SocketServer> own_ss_; 349 std::unique_ptr<SocketServer> own_ss_;
321 350
322 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(MessageQueue); 351 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(MessageQueue);
323 }; 352 };
324 353
325 } // namespace rtc 354 } // namespace rtc
326 355
327 #endif // WEBRTC_BASE_MESSAGEQUEUE_H_ 356 #endif // WEBRTC_BASE_MESSAGEQUEUE_H_
OLDNEW
« no previous file with comments | « webrtc/base/BUILD.gn ('k') | webrtc/base/messagequeue.cc » ('j') | webrtc/base/messagequeue.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698