Index: mojo/public/cpp/bindings/lib/interface_ptr_internal.h |
diff --git a/mojo/public/cpp/bindings/lib/interface_ptr_internal.h b/mojo/public/cpp/bindings/lib/interface_ptr_internal.h |
deleted file mode 100644 |
index a38baf783358494d73dd851cd07070cc60c57515..0000000000000000000000000000000000000000 |
--- a/mojo/public/cpp/bindings/lib/interface_ptr_internal.h |
+++ /dev/null |
@@ -1,149 +0,0 @@ |
-// Copyright 2014 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. |
- |
-#ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_INTERFACE_PTR_INTERNAL_H_ |
-#define MOJO_PUBLIC_CPP_BINDINGS_LIB_INTERFACE_PTR_INTERNAL_H_ |
- |
-#include <algorithm> // For |std::swap()|. |
- |
-#include "mojo/public/cpp/bindings/lib/filter_chain.h" |
-#include "mojo/public/cpp/bindings/lib/message_header_validator.h" |
-#include "mojo/public/cpp/bindings/lib/router.h" |
-#include "mojo/public/cpp/environment/logging.h" |
- |
-struct MojoAsyncWaiter; |
- |
-namespace mojo { |
-namespace internal { |
- |
-template <typename Interface> |
-class InterfacePtrState { |
- public: |
- InterfacePtrState() : proxy_(nullptr), router_(nullptr), waiter_(nullptr) {} |
- |
- ~InterfacePtrState() { |
- // Destruction order matters here. We delete |proxy_| first, even though |
- // |router_| may have a reference to it, so that |~Interface| may have a |
- // shot at generating new outbound messages (ie, invoking client methods). |
- delete proxy_; |
- delete router_; |
- } |
- |
- Interface* instance() { |
- ConfigureProxyIfNecessary(); |
- |
- // This will be null if the object is not bound. |
- return proxy_; |
- } |
- |
- void Swap(InterfacePtrState* other) { |
- std::swap(other->proxy_, proxy_); |
- std::swap(other->router_, router_); |
- handle_.swap(other->handle_); |
- std::swap(other->waiter_, waiter_); |
- } |
- |
- void Bind(ScopedMessagePipeHandle handle, const MojoAsyncWaiter* waiter) { |
- MOJO_DCHECK(!proxy_); |
- MOJO_DCHECK(!router_); |
- MOJO_DCHECK(!handle_.is_valid()); |
- MOJO_DCHECK(!waiter_); |
- |
- handle_ = handle.Pass(); |
- waiter_ = waiter; |
- } |
- |
- bool WaitForIncomingMethodCall() { |
- ConfigureProxyIfNecessary(); |
- |
- MOJO_DCHECK(router_); |
- return router_->WaitForIncomingMessage(); |
- } |
- |
- ScopedMessagePipeHandle PassMessagePipe() { |
- if (router_) |
- return router_->PassMessagePipe(); |
- |
- waiter_ = nullptr; |
- return handle_.Pass(); |
- } |
- |
- bool is_bound() const { return handle_.is_valid() || router_; } |
- |
- void set_client(typename Interface::Client* client) { |
- ConfigureProxyIfNecessary(); |
- |
- MOJO_DCHECK(proxy_); |
- proxy_->stub.set_sink(client); |
- } |
- |
- bool encountered_error() const { |
- return router_ ? router_->encountered_error() : false; |
- } |
- |
- void set_error_handler(ErrorHandler* error_handler) { |
- ConfigureProxyIfNecessary(); |
- |
- MOJO_DCHECK(router_); |
- router_->set_error_handler(error_handler); |
- } |
- |
- Router* router_for_testing() { |
- ConfigureProxyIfNecessary(); |
- return router_; |
- } |
- |
- private: |
- class ProxyWithStub : public Interface::Proxy_ { |
- public: |
- explicit ProxyWithStub(MessageReceiverWithResponder* receiver) |
- : Interface::Proxy_(receiver) {} |
- typename Interface::Client::Stub_ stub; |
- |
- private: |
- MOJO_DISALLOW_COPY_AND_ASSIGN(ProxyWithStub); |
- }; |
- |
- void ConfigureProxyIfNecessary() { |
- // The proxy has been configured. |
- if (proxy_) { |
- MOJO_DCHECK(router_); |
- return; |
- } |
- // The object hasn't been bound. |
- if (!waiter_) { |
- MOJO_DCHECK(!handle_.is_valid()); |
- return; |
- } |
- |
- FilterChain filters; |
- filters.Append<MessageHeaderValidator>(); |
- filters.Append<typename Interface::Client::RequestValidator_>(); |
- filters.Append<typename Interface::ResponseValidator_>(); |
- |
- router_ = new Router(handle_.Pass(), filters.Pass(), waiter_); |
- waiter_ = nullptr; |
- |
- ProxyWithStub* proxy = new ProxyWithStub(router_); |
- router_->set_incoming_receiver(&proxy->stub); |
- |
- proxy_ = proxy; |
- } |
- |
- ProxyWithStub* proxy_; |
- Router* router_; |
- |
- // |proxy_| and |router_| are not initialized until read/write with the |
- // message pipe handle is needed. Before that, |handle_| and |waiter_| store |
- // the arguments of Bind(). |
- ScopedMessagePipeHandle handle_; |
- const MojoAsyncWaiter* waiter_; |
- |
- MOJO_DISALLOW_COPY_AND_ASSIGN(InterfacePtrState); |
-}; |
- |
-} // namespace internal |
-} // namespace mojo |
- |
-#endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_INTERFACE_PTR_INTERNAL_H_ |