Index: remoting/protocol/fake_stream_socket.cc |
diff --git a/remoting/protocol/fake_stream_socket.cc b/remoting/protocol/fake_stream_socket.cc |
index b857ca1a1546c992a994a6972f430f651c9c60e4..12b771229b19d41b269b9e17f345c2c600d51c85 100644 |
--- a/remoting/protocol/fake_stream_socket.cc |
+++ b/remoting/protocol/fake_stream_socket.cc |
@@ -169,12 +169,24 @@ FakeStreamSocket* FakeStreamChannelFactory::GetFakeChannel( |
return channels_[name].get(); |
} |
+void FakeStreamChannelFactory::PairWith( |
+ FakeStreamChannelFactory* peer_factory) { |
+ peer_factory_ = peer_factory->weak_factory_.GetWeakPtr(); |
+ peer_factory->peer_factory_ = weak_factory_.GetWeakPtr(); |
+} |
+ |
void FakeStreamChannelFactory::CreateChannel( |
const std::string& name, |
const ChannelCreatedCallback& callback) { |
scoped_ptr<FakeStreamSocket> channel(new FakeStreamSocket()); |
channels_[name] = channel->GetWeakPtr(); |
+ if (peer_factory_) { |
+ FakeStreamSocket* peer_channel = peer_factory_->GetFakeChannel(name); |
+ if (peer_channel) |
+ channel->PairWith(peer_channel); |
+ } |
+ |
if (fail_create_) |
channel.reset(); |