Index: remoting/protocol/ice_transport.cc |
diff --git a/remoting/protocol/ice_transport.cc b/remoting/protocol/ice_transport.cc |
index 8984dd29a3fd49b51da28a19d33303b126de6ac2..08e95d34aff463ba2a90a17bc30a1418c7bd42b9 100644 |
--- a/remoting/protocol/ice_transport.cc |
+++ b/remoting/protocol/ice_transport.cc |
@@ -10,6 +10,7 @@ |
#include "remoting/protocol/pseudotcp_channel_factory.h" |
#include "remoting/protocol/secure_channel_factory.h" |
#include "remoting/protocol/stream_channel_factory.h" |
+#include "remoting/protocol/transport_context.h" |
namespace remoting { |
namespace protocol { |
@@ -22,24 +23,16 @@ const int kTransportInfoSendDelayMs = 20; |
// Name of the multiplexed channel. |
static const char kMuxChannelName[] = "mux"; |
-IceTransport::IceTransport(cricket::PortAllocator* port_allocator, |
- const NetworkSettings& network_settings, |
- TransportRole role) |
- : port_allocator_(port_allocator), |
- network_settings_(network_settings), |
- role_(role), |
- weak_factory_(this) {} |
+IceTransport::IceTransport(scoped_refptr<TransportContext> transport_context) |
+ : transport_context_(transport_context), weak_factory_(this) { |
+ transport_context->Prepare(); |
+} |
IceTransport::~IceTransport() { |
channel_multiplexer_.reset(); |
DCHECK(channels_.empty()); |
} |
-base::Closure IceTransport::GetCanStartClosure() { |
- return base::Bind(&IceTransport::OnCanStart, |
- weak_factory_.GetWeakPtr()); |
-} |
- |
void IceTransport::Start(Transport::EventHandler* event_handler, |
Authenticator* authenticator) { |
DCHECK(event_handler); |
@@ -95,24 +88,12 @@ StreamChannelFactory* IceTransport::GetMultiplexedChannelFactory() { |
return channel_multiplexer_.get(); |
} |
-void IceTransport::OnCanStart() { |
- DCHECK(!can_start_); |
- |
- can_start_ = true; |
- for (ChannelsMap::iterator it = channels_.begin(); it != channels_.end(); |
- ++it) { |
- it->second->OnCanStart(); |
- } |
-} |
- |
void IceTransport::CreateChannel(const std::string& name, |
const ChannelCreatedCallback& callback) { |
DCHECK(!channels_[name]); |
scoped_ptr<IceTransportChannel> channel( |
- new IceTransportChannel(port_allocator_, network_settings_, role_)); |
- if (can_start_) |
- channel->OnCanStart(); |
+ new IceTransportChannel(transport_context_)); |
channel->Connect(name, this, callback); |
AddPendingRemoteTransportInfo(channel.get()); |
channels_[name] = channel.release(); |
@@ -205,5 +186,15 @@ void IceTransport::SendTransportInfo() { |
pending_transport_info_message_.reset(); |
} |
+IceTransportFactory::IceTransportFactory( |
+ scoped_refptr<TransportContext> transport_context) |
+ : transport_context_(transport_context) {} |
+ |
+IceTransportFactory::~IceTransportFactory() {} |
+ |
+scoped_ptr<Transport> IceTransportFactory::CreateTransport() { |
+ return make_scoped_ptr(new IceTransport(transport_context_.get())); |
+} |
+ |
} // namespace protocol |
} // namespace remoting |