Fixes for Android GN build input/outputs
[chromium-blink-merge.git] / mojo / environment / default_async_waiter_impl.cc
blobff7a524752ec6e4674a9e554b796128d7b8a7ac0
1 // Copyright 2014 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 "mojo/environment/default_async_waiter_impl.h"
7 #include "base/bind.h"
8 #include "mojo/common/handle_watcher.h"
10 namespace mojo {
11 namespace internal {
12 namespace {
14 void OnHandleReady(common::HandleWatcher* watcher,
15 MojoAsyncWaitCallback callback,
16 void* closure,
17 MojoResult result) {
18 delete watcher;
19 callback(closure, result);
22 MojoAsyncWaitID AsyncWait(MojoHandle handle,
23 MojoHandleSignals signals,
24 MojoDeadline deadline,
25 MojoAsyncWaitCallback callback,
26 void* closure) {
27 // This instance will be deleted when done or cancelled.
28 common::HandleWatcher* watcher = new common::HandleWatcher();
29 watcher->Start(Handle(handle), signals, deadline,
30 base::Bind(&OnHandleReady, watcher, callback, closure));
31 return reinterpret_cast<MojoAsyncWaitID>(watcher);
34 void CancelWait(MojoAsyncWaitID wait_id) {
35 delete reinterpret_cast<common::HandleWatcher*>(wait_id);
38 const MojoAsyncWaiter kDefaultAsyncWaiter = {
39 AsyncWait,
40 CancelWait
43 } // namespace
45 const MojoAsyncWaiter* GetDefaultAsyncWaiterImpl() {
46 return &kDefaultAsyncWaiter;
49 } // namespace internal
50 } // namespace mojo