| Index: mojo/public/bindings/lib/remote_ptr.h
|
| diff --git a/mojo/public/bindings/lib/remote_ptr.h b/mojo/public/bindings/lib/remote_ptr.h
|
| index 3b57594e23ef0ddf722990d892673ba04ea60c7c..57c11eb8b51c1c1a45ccf0f7fd924a9573108f66 100644
|
| --- a/mojo/public/bindings/lib/remote_ptr.h
|
| +++ b/mojo/public/bindings/lib/remote_ptr.h
|
| @@ -54,8 +54,8 @@ class RemotePtr {
|
|
|
| public:
|
| RemotePtr() : state_(NULL) {}
|
| - explicit RemotePtr(ScopedMessagePipeHandle message_pipe)
|
| - : state_(new State(message_pipe.Pass())) {
|
| + RemotePtr(ScopedMessagePipeHandle message_pipe, typename S::_Peer* peer)
|
| + : state_(new State(message_pipe.Pass(), peer)) {
|
| }
|
|
|
| // Move-only constructor and operator=.
|
| @@ -87,9 +87,9 @@ class RemotePtr {
|
| state_ = NULL;
|
| }
|
|
|
| - void reset(ScopedMessagePipeHandle message_pipe) {
|
| + void reset(ScopedMessagePipeHandle message_pipe, typename S::_Peer* peer) {
|
| delete state_;
|
| - state_ = new State(message_pipe.Pass());
|
| + state_ = new State(message_pipe.Pass(), peer);
|
| }
|
|
|
| bool encountered_error() const {
|
| @@ -97,19 +97,17 @@ class RemotePtr {
|
| return state_->connector.encountered_error();
|
| }
|
|
|
| - void SetPeer(typename S::_Peer::_Stub* peer) {
|
| - assert(state_);
|
| - state_->connector.SetIncomingReceiver(peer);
|
| - }
|
| -
|
| private:
|
| struct State {
|
| - State(ScopedMessagePipeHandle message_pipe)
|
| + State(ScopedMessagePipeHandle message_pipe, typename S::_Peer* peer)
|
| : connector(message_pipe.Pass()),
|
| - proxy(&connector) {
|
| + proxy(&connector),
|
| + stub(peer) {
|
| + connector.SetIncomingReceiver(&stub);
|
| }
|
| internal::Connector connector;
|
| typename S::_Proxy proxy;
|
| + typename S::_Peer::_Stub stub;
|
| };
|
|
|
| State* release() {
|
|
|