Index: mojo/system/message_pipe_dispatcher.cc |
diff --git a/mojo/system/message_pipe_dispatcher.cc b/mojo/system/message_pipe_dispatcher.cc |
index 85c0d38b6cfc92f871fa05e7c4d83f134a326f07..94aceb0e054c641d57036bea705114720b9ef2f2 100644 |
--- a/mojo/system/message_pipe_dispatcher.cc |
+++ b/mojo/system/message_pipe_dispatcher.cc |
@@ -83,14 +83,15 @@ Dispatcher::Type MessagePipeDispatcher::GetType() const { |
} |
// static |
-std::pair<scoped_refptr<MessagePipeDispatcher>, scoped_refptr<MessagePipe> > |
-MessagePipeDispatcher::CreateRemoteMessagePipe() { |
- scoped_refptr<MessagePipe> message_pipe(MessagePipe::CreateLocalProxy()); |
+scoped_refptr<MessagePipeDispatcher> |
+MessagePipeDispatcher::CreateRemoteMessagePipe( |
+ scoped_refptr<ChannelEndpoint>* channel_endpoint) { |
+ scoped_refptr<MessagePipe> message_pipe( |
+ MessagePipe::CreateLocalProxy(channel_endpoint)); |
scoped_refptr<MessagePipeDispatcher> dispatcher( |
new MessagePipeDispatcher(MessagePipeDispatcher::kDefaultCreateOptions)); |
dispatcher->Init(message_pipe, 0); |
- |
- return std::make_pair(dispatcher, message_pipe); |
+ return dispatcher; |
} |
// static |
@@ -103,8 +104,9 @@ scoped_refptr<MessagePipeDispatcher> MessagePipeDispatcher::Deserialize( |
return scoped_refptr<MessagePipeDispatcher>(); |
} |
- std::pair<scoped_refptr<MessagePipeDispatcher>, scoped_refptr<MessagePipe> > |
- remote_message_pipe = CreateRemoteMessagePipe(); |
+ scoped_refptr<ChannelEndpoint> channel_endpoint; |
+ scoped_refptr<MessagePipeDispatcher> dispatcher = |
+ CreateRemoteMessagePipe(&channel_endpoint); |
MessageInTransit::EndpointId remote_id = |
static_cast<const SerializedMessagePipeDispatcher*>(source)->endpoint_id; |
@@ -117,8 +119,7 @@ scoped_refptr<MessagePipeDispatcher> MessagePipeDispatcher::Deserialize( |
return scoped_refptr<MessagePipeDispatcher>(); |
} |
MessageInTransit::EndpointId local_id = |
- channel->AttachEndpoint(make_scoped_refptr( |
- new ChannelEndpoint(remote_message_pipe.second.get(), 1))); |
+ channel->AttachEndpoint(channel_endpoint); |
if (local_id == MessageInTransit::kInvalidEndpointId) { |
LOG(ERROR) << "Failed to deserialize message pipe dispatcher (failed to " |
"attach; remote ID = " << remote_id << ")"; |
@@ -135,7 +136,7 @@ scoped_refptr<MessagePipeDispatcher> MessagePipeDispatcher::Deserialize( |
// TODO(vtl): FIXME -- Need some error handling here. |
channel->RunRemoteMessagePipeEndpoint(local_id, remote_id); |
- return remote_message_pipe.first; |
+ return dispatcher; |
} |
MessagePipeDispatcher::~MessagePipeDispatcher() { |