This source file includes following definitions.
- OnHandleReady
- CancelWait
- GetDefaultAsyncWaiterImpl
#include "mojo/environment/async_waiter_impl.h"
#include "base/bind.h"
#include "mojo/common/handle_watcher.h"
namespace mojo {
namespace internal {
namespace {
void OnHandleReady(common::HandleWatcher* watcher,
MojoAsyncWaitCallback callback,
uintptr_t user_data,
MojoResult result) {
delete watcher;
callback(user_data, result);
}
MojoAsyncWaitID AsyncWait(MojoAsyncWaiter* waiter,
MojoHandle handle,
MojoWaitFlags flags,
MojoDeadline deadline,
MojoAsyncWaitCallback callback,
uintptr_t user_data) {
common::HandleWatcher* watcher = new common::HandleWatcher();
watcher->Start(Handle(handle), flags, deadline,
base::Bind(&OnHandleReady, watcher, callback, user_data));
return reinterpret_cast<MojoAsyncWaitID>(watcher);
}
void CancelWait(MojoAsyncWaiter* waiter, MojoAsyncWaitID wait_id) {
delete reinterpret_cast<common::HandleWatcher*>(wait_id);
}
MojoAsyncWaiter s_default_async_waiter = {
AsyncWait,
CancelWait
};
}
MojoAsyncWaiter* GetDefaultAsyncWaiterImpl() {
return &s_default_async_waiter;
}
}
}