aboutsummaryrefslogtreecommitdiff
path: root/mojo/public/cpp/bindings/lib/sync_event_watcher.cc
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/public/cpp/bindings/lib/sync_event_watcher.cc')
-rw-r--r--mojo/public/cpp/bindings/lib/sync_event_watcher.cc67
1 files changed, 0 insertions, 67 deletions
diff --git a/mojo/public/cpp/bindings/lib/sync_event_watcher.cc b/mojo/public/cpp/bindings/lib/sync_event_watcher.cc
deleted file mode 100644
index b1c97e3..0000000
--- a/mojo/public/cpp/bindings/lib/sync_event_watcher.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "mojo/public/cpp/bindings/sync_event_watcher.h"
-
-#include "base/logging.h"
-
-namespace mojo {
-
-SyncEventWatcher::SyncEventWatcher(base::WaitableEvent* event,
- const base::Closure& callback)
- : event_(event),
- callback_(callback),
- registry_(SyncHandleRegistry::current()),
- destroyed_(new base::RefCountedData<bool>(false)) {}
-
-SyncEventWatcher::~SyncEventWatcher() {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (registered_)
- registry_->UnregisterEvent(event_);
- destroyed_->data = true;
-}
-
-void SyncEventWatcher::AllowWokenUpBySyncWatchOnSameThread() {
- DCHECK(thread_checker_.CalledOnValidThread());
- IncrementRegisterCount();
-}
-
-bool SyncEventWatcher::SyncWatch(const bool* should_stop) {
- DCHECK(thread_checker_.CalledOnValidThread());
- IncrementRegisterCount();
- if (!registered_) {
- DecrementRegisterCount();
- return false;
- }
-
- // This object may be destroyed during the Wait() call. So we have to preserve
- // the boolean that Wait uses.
- auto destroyed = destroyed_;
- const bool* should_stop_array[] = {should_stop, &destroyed->data};
- bool result = registry_->Wait(should_stop_array, 2);
-
- // This object has been destroyed.
- if (destroyed->data)
- return false;
-
- DecrementRegisterCount();
- return result;
-}
-
-void SyncEventWatcher::IncrementRegisterCount() {
- register_request_count_++;
- if (!registered_)
- registered_ = registry_->RegisterEvent(event_, callback_);
-}
-
-void SyncEventWatcher::DecrementRegisterCount() {
- DCHECK_GT(register_request_count_, 0u);
- register_request_count_--;
- if (register_request_count_ == 0 && registered_) {
- registry_->UnregisterEvent(event_);
- registered_ = false;
- }
-}
-
-} // namespace mojo