Line data Source code
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 : #include "webrtc/system_wrappers/include/event_wrapper.h"
12 :
13 : #if defined(_WIN32)
14 : #include <windows.h>
15 : #include "webrtc/system_wrappers/source/event_timer_win.h"
16 : #elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
17 : #include <ApplicationServices/ApplicationServices.h>
18 : #include <pthread.h>
19 : #include "webrtc/system_wrappers/source/event_timer_posix.h"
20 : #else
21 : #include <pthread.h>
22 : #include "webrtc/system_wrappers/source/event_timer_posix.h"
23 : #endif
24 :
25 : #include "webrtc/base/event.h"
26 :
27 : namespace webrtc {
28 :
29 : class EventWrapperImpl : public EventWrapper {
30 : public:
31 0 : EventWrapperImpl() : event_(false, false) {}
32 0 : ~EventWrapperImpl() override {}
33 :
34 0 : bool Set() override {
35 0 : event_.Set();
36 0 : return true;
37 : }
38 :
39 0 : EventTypeWrapper Wait(unsigned long max_time) override {
40 0 : int to_wait = max_time == WEBRTC_EVENT_INFINITE ?
41 0 : rtc::Event::kForever : static_cast<int>(max_time);
42 0 : return event_.Wait(to_wait) ? kEventSignaled : kEventTimeout;
43 : }
44 :
45 : private:
46 : rtc::Event event_;
47 : };
48 :
49 : // static
50 0 : EventWrapper* EventWrapper::Create() {
51 0 : return new EventWrapperImpl();
52 : }
53 :
54 : } // namespace webrtc
|