Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: mojo/public/utility/bindings_support_impl.cc

Issue 134253004: Mojo: AsyncWaiter and mojo/public/environment (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add missing files Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/utility/bindings_support_impl.cc
diff --git a/mojo/public/utility/bindings_support_impl.cc b/mojo/public/utility/bindings_support_impl.cc
deleted file mode 100644
index b78f782ff6228edaec562f5b8b7eefebf06164fc..0000000000000000000000000000000000000000
--- a/mojo/public/utility/bindings_support_impl.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2013 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/utility/bindings_support_impl.h"
-
-#include <assert.h>
-
-#include "mojo/public/bindings/lib/buffer.h"
-#include "mojo/public/utility/run_loop.h"
-#include "mojo/public/utility/run_loop_handler.h"
-#include "mojo/public/utility/thread_local.h"
-
-namespace mojo {
-namespace internal {
-namespace {
-
-ThreadLocalPointer<Buffer>* tls_buffer = NULL;
-
-// RunLoopHandler implementation used for a request to AsyncWait(). There are
-// two ways RunLoopHandlerImpl is deleted:
-// . when the handle is ready (or errored).
-// . when BindingsSupport::CancelWait() is invoked.
-class RunLoopHandlerImpl : public RunLoopHandler {
- public:
- RunLoopHandlerImpl(const Handle& handle,
- BindingsSupport::AsyncWaitCallback* callback)
- : handle_(handle),
- callback_(callback) {}
- virtual ~RunLoopHandlerImpl() {
- RunLoop::current()->RemoveHandler(handle_);
- }
-
- // RunLoopHandler:
- virtual void OnHandleReady(const Handle& handle) MOJO_OVERRIDE {
- NotifyCallback(MOJO_RESULT_OK);
- }
-
- virtual void OnHandleError(const Handle& handle,
- MojoResult result) MOJO_OVERRIDE {
- NotifyCallback(result);
- }
-
- private:
- void NotifyCallback(MojoResult result) {
- // Delete this to unregister the handle. That way if the callback
- // reregisters everything is ok.
- BindingsSupport::AsyncWaitCallback* callback = callback_;
- delete this;
-
- callback->OnHandleReady(result);
- }
-
- const Handle handle_;
- BindingsSupport::AsyncWaitCallback* callback_;
-
- MOJO_DISALLOW_COPY_AND_ASSIGN(RunLoopHandlerImpl);
-};
-
-} // namespace
-
-BindingsSupportImpl::BindingsSupportImpl() {
-}
-
-BindingsSupportImpl::~BindingsSupportImpl() {
-}
-
-// static
-void BindingsSupportImpl::SetUp() {
- assert(!tls_buffer);
- tls_buffer = new ThreadLocalPointer<Buffer>;
-}
-
-// static
-void BindingsSupportImpl::TearDown() {
- assert(tls_buffer);
- delete tls_buffer;
- tls_buffer = NULL;
-}
-
-Buffer* BindingsSupportImpl::GetCurrentBuffer() {
- return tls_buffer->Get();
-}
-
-Buffer* BindingsSupportImpl::SetCurrentBuffer(Buffer* buf) {
- Buffer* old_buf = tls_buffer->Get();
- tls_buffer->Set(buf);
- return old_buf;
-}
-
-BindingsSupport::AsyncWaitID BindingsSupportImpl::AsyncWait(
- const Handle& handle,
- MojoWaitFlags flags,
- AsyncWaitCallback* callback) {
- RunLoop* run_loop = RunLoop::current();
- assert(run_loop);
- // |run_loop_handler| is destroyed either when the handle is ready or if
- // CancelWait is invoked.
- RunLoopHandlerImpl* run_loop_handler =
- new RunLoopHandlerImpl(handle, callback);
- run_loop->AddHandler(run_loop_handler, handle, flags,
- MOJO_DEADLINE_INDEFINITE);
- return run_loop_handler;
-}
-
-void BindingsSupportImpl::CancelWait(AsyncWaitID async_wait_id) {
- delete static_cast<RunLoopHandlerImpl*>(async_wait_id);
-}
-
-} // namespace internal
-} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698