blob: 1bbd01ffacb99f120092e69572505f9242402049 [file] [log] [blame]
hellner@google.com23a80652011-08-25 21:40:11 +00001/*
niklase@google.com470e71d2011-07-07 08:21:25 +00002 * 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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#include "system_wrappers/include/event_wrapper.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000012
13#if defined(_WIN32)
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000014#include <windows.h>
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020015#include "system_wrappers/source/event_timer_win.h"
sjlee@webrtc.org414fa7f2012-09-11 17:25:46 +000016#elif defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000017#include <ApplicationServices/ApplicationServices.h>
18#include <pthread.h>
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020019#include "system_wrappers/source/event_timer_posix.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000020#else
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000021#include <pthread.h>
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020022#include "system_wrappers/source/event_timer_posix.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000023#endif
24
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020025#include "rtc_base/event.h"
Peter Boström64c03662015-04-08 11:24:19 +020026
niklase@google.com470e71d2011-07-07 08:21:25 +000027namespace webrtc {
Peter Boström64c03662015-04-08 11:24:19 +020028
29class EventWrapperImpl : public EventWrapper {
30 public:
31 EventWrapperImpl() : event_(false, false) {}
32 ~EventWrapperImpl() override {}
33
34 bool Set() override {
35 event_.Set();
36 return true;
37 }
38
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
phoglund@webrtc.org5bbe0692012-12-10 10:44:37 +000050EventWrapper* EventWrapper::Create() {
Peter Boström64c03662015-04-08 11:24:19 +020051 return new EventWrapperImpl();
niklase@google.com470e71d2011-07-07 08:21:25 +000052}
Peter Boström64c03662015-04-08 11:24:19 +020053
pbos@webrtc.orgd900e8b2013-07-03 15:12:26 +000054} // namespace webrtc