| 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
|
| index 5caed2f123d99d39843600aacf7899b60a83baca..04d7b20a081fe189169322da9cb86e6b43734cee 100644
|
| --- a/mojo/public/cpp/bindings/lib/interface_ptr_internal.h
|
| +++ b/mojo/public/cpp/bindings/lib/interface_ptr_internal.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_INTERFACE_PTR_INTERNAL_H_
|
| #define MOJO_PUBLIC_CPP_BINDINGS_LIB_INTERFACE_PTR_INTERNAL_H_
|
|
|
| +#include <assert.h>
|
| #include <stdio.h>
|
|
|
| #include "mojo/public/cpp/bindings/lib/filter_chain.h"
|
| @@ -17,28 +18,28 @@ namespace internal {
|
| template <typename Interface>
|
| class InterfacePtrState {
|
| public:
|
| - InterfacePtrState() : instance_(NULL), router_(NULL) {}
|
| + InterfacePtrState() : proxy_(NULL), router_(NULL) {}
|
|
|
| ~InterfacePtrState() {
|
| - // Destruction order matters here. We delete |instance_| first, even though
|
| + // 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 instance_;
|
| + delete proxy_;
|
| delete router_;
|
| }
|
|
|
| - Interface* instance() const { return instance_; }
|
| + Interface* instance() const { return proxy_; }
|
|
|
| Router* router() const { return router_; }
|
|
|
| void Swap(InterfacePtrState* other) {
|
| - std::swap(other->instance_, instance_);
|
| + std::swap(other->proxy_, proxy_);
|
| std::swap(other->router_, router_);
|
| }
|
|
|
| void ConfigureProxy(ScopedMessagePipeHandle handle,
|
| MojoAsyncWaiter* waiter = GetDefaultAsyncWaiter()) {
|
| - assert(!instance_);
|
| + assert(!proxy_);
|
| assert(!router_);
|
|
|
| FilterChain filters;
|
| @@ -50,7 +51,12 @@ class InterfacePtrState {
|
| ProxyWithStub* proxy = new ProxyWithStub(router_);
|
| router_->set_incoming_receiver(&proxy->stub);
|
|
|
| - instance_ = proxy;
|
| + proxy_ = proxy;
|
| + }
|
| +
|
| + void set_client(typename Interface::Client* client) {
|
| + assert(proxy_);
|
| + proxy_->stub.set_sink(client);
|
| }
|
|
|
| private:
|
| @@ -59,15 +65,12 @@ class InterfacePtrState {
|
| explicit ProxyWithStub(MessageReceiver* receiver)
|
| : Interface::Proxy_(receiver) {
|
| }
|
| - virtual void SetClient(typename Interface::Client* client) MOJO_OVERRIDE {
|
| - stub.set_sink(client);
|
| - }
|
| typename Interface::Client::Stub_ stub;
|
| private:
|
| MOJO_DISALLOW_COPY_AND_ASSIGN(ProxyWithStub);
|
| };
|
|
|
| - Interface* instance_;
|
| + ProxyWithStub* proxy_;
|
| Router* router_;
|
|
|
| MOJO_DISALLOW_COPY_AND_ASSIGN(InterfacePtrState);
|
|
|