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: EventWrapperImpl()31 EventWrapperImpl() : event_(false, false) {} ~EventWrapperImpl()32 ~EventWrapperImpl() override {} 33 Set()34 bool Set() override { 35 event_.Set(); 36 return true; 37 } 38 Wait(unsigned long max_time)39 EventTypeWrapper Wait(unsigned long max_time) override { 40 int to_wait = max_time == WEBRTC_EVENT_INFINITE ? 41 rtc::Event::kForever : static_cast<int>(max_time); 42 return event_.Wait(to_wait) ? kEventSignaled : kEventTimeout; 43 } 44 45 private: 46 rtc::Event event_; 47 }; 48 49 // static Create()50EventWrapper* EventWrapper::Create() { 51 return new EventWrapperImpl(); 52 } 53 54 } // namespace webrtc 55