tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

event_wrapper.h (1905B)


      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 MODULES_VIDEO_CODING_DEPRECATED_EVENT_WRAPPER_H_
     12 #define MODULES_VIDEO_CODING_DEPRECATED_EVENT_WRAPPER_H_
     13 
     14 namespace webrtc {
     15 enum EventTypeWrapper { kEventSignaled = 1, kEventTimeout = 2 };
     16 
     17 class EventWrapper {
     18 public:
     19  // Factory method. Constructor disabled.
     20  static EventWrapper* Create();
     21 
     22  virtual ~EventWrapper() {}
     23 
     24  // Releases threads who are calling Wait() and has started waiting. Please
     25  // note that a thread calling Wait() will not start waiting immediately.
     26  // assumptions to the contrary is a very common source of issues in
     27  // multithreaded programming.
     28  // Set is sticky in the sense that it will release at least one thread
     29  // either immediately or some time in the future.
     30  virtual bool Set() = 0;
     31 
     32  // Puts the calling thread into a wait state. The thread may be released
     33  // by a Set() call depending on if other threads are waiting and if so on
     34  // timing. The thread that was released will reset the event before leaving
     35  // preventing more threads from being released. If multiple threads
     36  // are waiting for the same Set(), only one (random) thread is guaranteed to
     37  // be released. It is possible that multiple (random) threads are released
     38  // Depending on timing.
     39  //
     40  // `max_time_ms` is the maximum time to wait in milliseconds.
     41  // TODO(bugs.webrtc.org/14366): Migrate to TimeDelta.
     42  virtual EventTypeWrapper Wait(int max_time_ms) = 0;
     43 };
     44 
     45 }  // namespace webrtc
     46 
     47 #endif  // MODULES_VIDEO_CODING_DEPRECATED_EVENT_WRAPPER_H_