ipc/chromium/src/base/waitable_event_watcher_win.cc

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
     2 // Use of this source code is governed by a BSD-style license that can be
     3 // found in the LICENSE file.
     5 #include "base/waitable_event_watcher.h"
     7 #include "base/compiler_specific.h"
     8 #include "base/object_watcher.h"
     9 #include "base/waitable_event.h"
    11 namespace base {
    13 WaitableEventWatcher::ObjectWatcherHelper::ObjectWatcherHelper(
    14     WaitableEventWatcher* watcher)
    15     : watcher_(watcher) {
    16 };
    18 void WaitableEventWatcher::ObjectWatcherHelper::OnObjectSignaled(HANDLE h) {
    19   watcher_->OnObjectSignaled();
    20 }
    23 WaitableEventWatcher::WaitableEventWatcher()
    24     : event_(NULL),
    25       ALLOW_THIS_IN_INITIALIZER_LIST(helper_(this)),
    26       delegate_(NULL) {
    27 }
    29 WaitableEventWatcher::~WaitableEventWatcher() {
    30 }
    32 bool WaitableEventWatcher::StartWatching(WaitableEvent* event,
    33                                          Delegate* delegate) {
    34   delegate_ = delegate;
    35   event_ = event;
    37   return watcher_.StartWatching(event->handle(), &helper_);
    38 }
    40 void WaitableEventWatcher::StopWatching() {
    41   delegate_ = NULL;
    42   event_ = NULL;
    43   watcher_.StopWatching();
    44 }
    46 WaitableEvent* WaitableEventWatcher::GetWatchedEvent() {
    47   return event_;
    48 }
    50 void WaitableEventWatcher::OnObjectSignaled() {
    51   WaitableEvent* event = event_;
    52   Delegate* delegate = delegate_;
    53   event_ = NULL;
    54   delegate_ = NULL;
    55   DCHECK(event);
    57   delegate->OnWaitableEventSignaled(event);
    58 }
    60 }  // namespace base

mercurial