| Index: mojo/public/cpp/bindings/interface_ptr.h
|
| diff --git a/mojo/public/cpp/bindings/interface_ptr.h b/mojo/public/cpp/bindings/interface_ptr.h
|
| deleted file mode 100644
|
| index a2ede4d510b04c7f12fd59e8f4e08fd351893fe0..0000000000000000000000000000000000000000
|
| --- a/mojo/public/cpp/bindings/interface_ptr.h
|
| +++ /dev/null
|
| @@ -1,140 +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_INTERFACE_PTR_H_
|
| -#define MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_H_
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "mojo/public/cpp/bindings/error_handler.h"
|
| -#include "mojo/public/cpp/bindings/lib/interface_ptr_internal.h"
|
| -#include "mojo/public/cpp/environment/environment.h"
|
| -#include "mojo/public/cpp/system/macros.h"
|
| -
|
| -namespace mojo {
|
| -class ErrorHandler;
|
| -
|
| -// InterfacePtr represents a proxy to a remote instance of an interface.
|
| -template <typename Interface>
|
| -class InterfacePtr {
|
| - MOJO_MOVE_ONLY_TYPE(InterfacePtr)
|
| - public:
|
| - InterfacePtr() {}
|
| - InterfacePtr(decltype(nullptr)) {}
|
| -
|
| - InterfacePtr(InterfacePtr&& other) {
|
| - internal_state_.Swap(&other.internal_state_);
|
| - }
|
| - InterfacePtr& operator=(InterfacePtr&& other) {
|
| - reset();
|
| - internal_state_.Swap(&other.internal_state_);
|
| - return *this;
|
| - }
|
| -
|
| - InterfacePtr& operator=(decltype(nullptr)) {
|
| - reset();
|
| - return *this;
|
| - }
|
| -
|
| - ~InterfacePtr() {}
|
| -
|
| - Interface* get() const { return internal_state_.instance(); }
|
| - Interface* operator->() const { return get(); }
|
| - Interface& operator*() const { return *get(); }
|
| -
|
| - void reset() {
|
| - State doomed;
|
| - internal_state_.Swap(&doomed);
|
| - }
|
| -
|
| - // Blocks the current thread for the first incoming method call, i.e., either
|
| - // a call to a client method or a callback method. Returns |true| if a method
|
| - // has been called, |false| in case of error. It must only be called on a
|
| - // bound object.
|
| - bool WaitForIncomingMethodCall() {
|
| - return internal_state_.WaitForIncomingMethodCall();
|
| - }
|
| -
|
| - // This method configures the InterfacePtr<..> to be a proxy to a remote
|
| - // object on the other end of the given pipe.
|
| - //
|
| - // The proxy is bound to the current thread, which means its methods may
|
| - // only be called on the current thread.
|
| - //
|
| - // To move a bound InterfacePtr<..> to another thread, call PassMessagePipe().
|
| - // Then create a new InterfacePtr<..> on another thread, and bind the new
|
| - // InterfacePtr<..> to the message pipe on that thread.
|
| - void Bind(
|
| - ScopedMessagePipeHandle handle,
|
| - const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter()) {
|
| - reset();
|
| - internal_state_.Bind(handle.Pass(), waiter);
|
| - }
|
| -
|
| - // The client interface may only be set after this InterfacePtr<..> is bound.
|
| - void set_client(typename Interface::Client* client) {
|
| - internal_state_.set_client(client);
|
| - }
|
| -
|
| - // This method may be called to query if the underlying pipe has encountered
|
| - // an error. If true, this means method calls made on this interface will be
|
| - // dropped (and may have already been dropped) on the floor.
|
| - bool encountered_error() const { return internal_state_.encountered_error(); }
|
| -
|
| - // This method may be called to register an ErrorHandler to observe a
|
| - // connection error on the underlying pipe. It must only be called on a bound
|
| - // object.
|
| - // The callback runs asynchronously from the current message loop.
|
| - void set_error_handler(ErrorHandler* error_handler) {
|
| - internal_state_.set_error_handler(error_handler);
|
| - }
|
| -
|
| - // Returns the underlying message pipe handle (if any) and resets the
|
| - // InterfacePtr<..> to its uninitialized state. This method is helpful if you
|
| - // need to move a proxy to another thread. See related notes for Bind.
|
| - ScopedMessagePipeHandle PassMessagePipe() {
|
| - State state;
|
| - internal_state_.Swap(&state);
|
| - return state.PassMessagePipe();
|
| - }
|
| -
|
| - // DO NOT USE. Exposed only for internal use and for testing.
|
| - internal::InterfacePtrState<Interface>* internal_state() {
|
| - return &internal_state_;
|
| - }
|
| -
|
| - // Allow InterfacePtr<> to be used in boolean expressions, but not
|
| - // implicitly convertible to a real bool (which is dangerous).
|
| - private:
|
| - typedef internal::InterfacePtrState<Interface> InterfacePtr::*Testable;
|
| -
|
| - public:
|
| - operator Testable() const {
|
| - return internal_state_.is_bound() ? &InterfacePtr::internal_state_
|
| - : nullptr;
|
| - }
|
| -
|
| - private:
|
| - typedef internal::InterfacePtrState<Interface> State;
|
| - mutable State internal_state_;
|
| -};
|
| -
|
| -// Takes a handle to the proxy end-point of a pipe. On the other end is
|
| -// presumed to be an interface implementation of type |Interface|. Returns a
|
| -// generated proxy to that interface, which may be used on the current thread.
|
| -// It is valid to call set_client on the returned InterfacePtr<..> to set an
|
| -// instance of Interface::Client.
|
| -template <typename Interface>
|
| -InterfacePtr<Interface> MakeProxy(
|
| - ScopedMessagePipeHandle handle,
|
| - const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter()) {
|
| - InterfacePtr<Interface> ptr;
|
| - if (handle.is_valid())
|
| - ptr.Bind(handle.Pass(), waiter);
|
| - return ptr.Pass();
|
| -}
|
| -
|
| -} // namespace mojo
|
| -
|
| -#endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_H_
|
|
|