Chromium Code Reviews| Index: remoting/protocol/libjingle_transport_factory.cc |
| diff --git a/remoting/protocol/libjingle_transport_factory.cc b/remoting/protocol/libjingle_transport_factory.cc |
| index 02d0d97e5b619e2e9bce64878529f9791fa1e142..1ff0a377f72ae23f70ab12fae1d8d2f2251dbb60 100644 |
| --- a/remoting/protocol/libjingle_transport_factory.cc |
| +++ b/remoting/protocol/libjingle_transport_factory.cc |
| @@ -16,6 +16,7 @@ |
| #include "third_party/libjingle/source/talk/base/network.h" |
| #include "third_party/libjingle/source/talk/p2p/base/p2ptransportchannel.h" |
| #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h" |
| +#include "third_party/libjingle/source/talk/p2p/client/httpportallocator.h" |
| namespace remoting { |
| namespace protocol { |
| @@ -41,7 +42,6 @@ class LibjingleStreamTransport : public StreamTransport, |
| // StreamTransport interface. |
| virtual void Initialize( |
| const std::string& name, |
| - const TransportConfig& config, |
| Transport::EventHandler* event_handler, |
| scoped_ptr<ChannelAuthenticator> authenticator) OVERRIDE; |
| virtual void Connect( |
| @@ -70,7 +70,6 @@ class LibjingleStreamTransport : public StreamTransport, |
| bool incoming_only_; |
| std::string name_; |
| - TransportConfig config_; |
| EventHandler* event_handler_; |
| StreamTransport::ConnectedCallback callback_; |
| scoped_ptr<ChannelAuthenticator> authenticator_; |
| @@ -105,7 +104,6 @@ LibjingleStreamTransport::~LibjingleStreamTransport() { |
| void LibjingleStreamTransport::Initialize( |
| const std::string& name, |
| - const TransportConfig& config, |
| Transport::EventHandler* event_handler, |
| scoped_ptr<ChannelAuthenticator> authenticator) { |
| DCHECK(CalledOnValidThread()); |
| @@ -117,7 +115,6 @@ void LibjingleStreamTransport::Initialize( |
| DCHECK(name_.empty()); |
| name_ = name; |
| - config_ = config; |
| event_handler_ = event_handler; |
| authenticator_ = authenticator.Pass(); |
| } |
| @@ -294,10 +291,11 @@ void LibjingleStreamTransport::NotifyConnectFailed() { |
| LibjingleTransportFactory::LibjingleTransportFactory( |
| scoped_ptr<talk_base::NetworkManager> network_manager, |
| scoped_ptr<talk_base::PacketSocketFactory> socket_factory, |
| - scoped_ptr<cricket::PortAllocator> port_allocator, |
| + scoped_ptr<cricket::HttpPortAllocatorBase> port_allocator, |
| bool incoming_only) |
| : network_manager_(network_manager.Pass()), |
| socket_factory_(socket_factory.Pass()), |
| + http_port_allocator_(port_allocator.get()), |
| port_allocator_(port_allocator.Pass()), |
| incoming_only_(incoming_only) { |
| } |
| @@ -305,6 +303,7 @@ LibjingleTransportFactory::LibjingleTransportFactory( |
| LibjingleTransportFactory::LibjingleTransportFactory() |
| : network_manager_(new talk_base::BasicNetworkManager()), |
| socket_factory_(new talk_base::BasicPacketSocketFactory()), |
| + http_port_allocator_(NULL), |
| port_allocator_(new cricket::BasicPortAllocator( |
| network_manager_.get(), socket_factory_.get())) { |
| } |
| @@ -320,6 +319,25 @@ LibjingleTransportFactory::~LibjingleTransportFactory() { |
| FROM_HERE, network_manager_.release()); |
| } |
| +void LibjingleTransportFactory::SetConfig(const TransportConfig& config) { |
| + if (http_port_allocator_) { |
| + std::vector<talk_base::SocketAddress> stun_hosts; |
| + talk_base::SocketAddress stun_address; |
| + if (stun_address.FromString(config.stun_server)) { |
| + stun_hosts.push_back(talk_base::SocketAddress()); |
|
Wez
2012/04/27 23:49:15
Don't you mean to push |stun_address|?
Sergey Ulanov
2012/04/28 00:18:19
Done.
|
| + http_port_allocator_->SetStunHosts(stun_hosts); |
|
Wez
2012/04/27 23:49:15
Doesn't this mean we have only a single STUN host?
Sergey Ulanov
2012/04/28 00:18:19
Yes. Even if we provide more than one STUN host he
|
| + } else { |
| + LOG(ERROR) << "Failed to parse stun server address: " |
| + << config.stun_server; |
| + } |
| + |
| + std::vector<std::string> relay_hosts; |
| + relay_hosts.push_back(config.relay_server); |
| + http_port_allocator_->SetRelayHosts(relay_hosts); |
| + http_port_allocator_->SetRelayToken(config.relay_token); |
| + } |
| +} |
| + |
| scoped_ptr<StreamTransport> LibjingleTransportFactory::CreateStreamTransport() { |
| return scoped_ptr<StreamTransport>( |
| new LibjingleStreamTransport(port_allocator_.get(), incoming_only_)); |