1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/ipc/chromium/src/base/waitable_event_watcher_win.cc Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,60 @@ 1.4 +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1.5 +// Use of this source code is governed by a BSD-style license that can be 1.6 +// found in the LICENSE file. 1.7 + 1.8 +#include "base/waitable_event_watcher.h" 1.9 + 1.10 +#include "base/compiler_specific.h" 1.11 +#include "base/object_watcher.h" 1.12 +#include "base/waitable_event.h" 1.13 + 1.14 +namespace base { 1.15 + 1.16 +WaitableEventWatcher::ObjectWatcherHelper::ObjectWatcherHelper( 1.17 + WaitableEventWatcher* watcher) 1.18 + : watcher_(watcher) { 1.19 +}; 1.20 + 1.21 +void WaitableEventWatcher::ObjectWatcherHelper::OnObjectSignaled(HANDLE h) { 1.22 + watcher_->OnObjectSignaled(); 1.23 +} 1.24 + 1.25 + 1.26 +WaitableEventWatcher::WaitableEventWatcher() 1.27 + : event_(NULL), 1.28 + ALLOW_THIS_IN_INITIALIZER_LIST(helper_(this)), 1.29 + delegate_(NULL) { 1.30 +} 1.31 + 1.32 +WaitableEventWatcher::~WaitableEventWatcher() { 1.33 +} 1.34 + 1.35 +bool WaitableEventWatcher::StartWatching(WaitableEvent* event, 1.36 + Delegate* delegate) { 1.37 + delegate_ = delegate; 1.38 + event_ = event; 1.39 + 1.40 + return watcher_.StartWatching(event->handle(), &helper_); 1.41 +} 1.42 + 1.43 +void WaitableEventWatcher::StopWatching() { 1.44 + delegate_ = NULL; 1.45 + event_ = NULL; 1.46 + watcher_.StopWatching(); 1.47 +} 1.48 + 1.49 +WaitableEvent* WaitableEventWatcher::GetWatchedEvent() { 1.50 + return event_; 1.51 +} 1.52 + 1.53 +void WaitableEventWatcher::OnObjectSignaled() { 1.54 + WaitableEvent* event = event_; 1.55 + Delegate* delegate = delegate_; 1.56 + event_ = NULL; 1.57 + delegate_ = NULL; 1.58 + DCHECK(event); 1.59 + 1.60 + delegate->OnWaitableEventSignaled(event); 1.61 +} 1.62 + 1.63 +} // namespace base