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

Unified Diff: mojo/public/cpp/bindings/binding.h

Issue 860483004: Revert "Adding API documentation to the C++ Array and Binding classes." (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 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
« no previous file with comments | « mojo/public/cpp/bindings/array.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/cpp/bindings/binding.h
diff --git a/mojo/public/cpp/bindings/binding.h b/mojo/public/cpp/bindings/binding.h
index 658b6a07cd052a2a60a7450b80fa89cac4dd1b06..4ecc6a8821d9d6e021325c74db5e3a2f4316e091 100644
--- a/mojo/public/cpp/bindings/binding.h
+++ b/mojo/public/cpp/bindings/binding.h
@@ -17,10 +17,8 @@
namespace mojo {
-// Represents the binding of an interface implementation to a message pipe.
-// When the |Binding| object is destroyed, the binding between the message pipe
-// and the interface is torn down and the message pipe is closed, leaving the
-// interface implementation in an unbound state.
+// This binds an interface implementation a pipe. Deleting the binding closes
+// the pipe.
//
// Example:
//
@@ -45,29 +43,13 @@ namespace mojo {
// // delete FooImpl on connection errors.
// }
// };
-//
-// The caller may specify a |MojoAsyncWaiter| to be used by the connection when
-// waiting for calls to arrive. Normally it is fine to use the default waiter.
-// However, the caller may provide their own implementation if needed. The
-// |Binding| will not take ownership of the waiter, and the waiter must outlive
-// the |Binding|.
-//
-// TODO(ggowan): Find out under what circumstances the caller may need to
-// provide their own implementation of MojoAsyncWaiter, and then describe those
-// circumstances.
template <typename Interface>
class Binding : public ErrorHandler {
public:
using Client = typename Interface::Client;
- // Constructs an incomplete binding that will use the implementation |impl|.
- // The binding may be completed with a subsequent call to the |Bind| method.
- // Does not take ownership of |impl|, which must outlive the binding.
explicit Binding(Interface* impl) : impl_(impl) { stub_.set_sink(impl_); }
- // Constructs a completed binding of message pipe |handle| to implementation
- // |impl|. Does not take ownership of |impl|, which must outlive the binding.
- // See class comment for definition of |waiter|.
Binding(Interface* impl,
ScopedMessagePipeHandle handle,
const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter())
@@ -75,12 +57,6 @@ class Binding : public ErrorHandler {
Bind(handle.Pass(), waiter);
}
- // Constructs a completed binding of |impl| to a new message pipe, passing the
- // client end to |ptr|, which takes ownership of it. The caller is expected to
- // pass |ptr| on to the client of the service. Does not take ownership of any
- // of the parameters. |impl| must outlive the binding. |ptr| only needs to
- // last until the constructor returns. See class comment for definition of
- // |waiter|.
Binding(Interface* impl,
InterfacePtr<Interface>* ptr,
const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter())
@@ -88,10 +64,6 @@ class Binding : public ErrorHandler {
Bind(ptr, waiter);
}
- // Constructs a completed binding of |impl| to the message pipe endpoint in
- // |request|, taking ownership of the endpoint. Does not take ownership of
- // |impl|, which must outlive the binding. See class comment for definition of
- // |waiter|.
Binding(Interface* impl,
InterfaceRequest<Interface> request,
const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter())
@@ -99,8 +71,6 @@ class Binding : public ErrorHandler {
Bind(request.PassMessagePipe(), waiter);
}
- // Tears down the binding, closing the message pipe and leaving the interface
- // implementation unbound.
~Binding() override {
delete proxy_;
if (internal_router_) {
@@ -109,9 +79,6 @@ class Binding : public ErrorHandler {
}
}
- // Completes a binding that was constructed with only an interface
- // implementation. Takes ownership of |handle| and binds it to the previously
- // specified implementation. See class comment for definition of |waiter|.
void Bind(
ScopedMessagePipeHandle handle,
const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter()) {
@@ -128,12 +95,6 @@ class Binding : public ErrorHandler {
proxy_ = new typename Client::Proxy_(internal_router_);
}
- // Completes a binding that was constructed with only an interface
- // implementation by creating a new message pipe, binding one end of it to the
- // previously specified implementation, and passing the other to |ptr|, which
- // takes ownership of it. The caller is expected to pass |ptr| on to the
- // eventual client of the service. Does not take ownership of |ptr|. See
- // class comment for definition of |waiter|.
void Bind(
InterfacePtr<Interface>* ptr,
const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter()) {
@@ -142,50 +103,35 @@ class Binding : public ErrorHandler {
Bind(pipe.handle1.Pass(), waiter);
}
- // Completes a binding that was constructed with only an interface
- // implementation by removing the message pipe endpoint from |request| and
- // binding it to the previously specified implementation. See class comment
- // for definition of |waiter|.
void Bind(
InterfaceRequest<Interface> request,
const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter()) {
Bind(request.PassMessagePipe(), waiter);
}
- // Blocks the calling thread until either a call arrives on the previously
- // bound message pipe, or an error occurs.
bool WaitForIncomingMethodCall() {
MOJO_DCHECK(internal_router_);
return internal_router_->WaitForIncomingMessage();
}
- // Closes the message pipe that was previously bound.
void Close() {
MOJO_DCHECK(internal_router_);
internal_router_->CloseMessagePipe();
}
- // Sets an error handler that will be called if a connection error occurs on
- // the bound message pipe.
void set_error_handler(ErrorHandler* error_handler) {
error_handler_ = error_handler;
}
- // Implements the |Binding|'s response to a connection error.
+ // ErrorHandler implementation
void OnConnectionError() override {
if (error_handler_)
error_handler_->OnConnectionError();
}
- // Returns the interface implementation that was previously specified. Caller
- // does not take ownership.
Interface* impl() { return impl_; }
-
- // Returns the client's interface.
Client* client() { return proxy_; }
- // Indicates whether the binding has been completed (i.e., whether a message
- // pipe has been bound to the implementation).
bool is_bound() const { return !!internal_router_; }
// Exposed for testing, should not generally be used.
« no previous file with comments | « mojo/public/cpp/bindings/array.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698