Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1367)

Unified Diff: remoting/protocol/libjingle_transport_factory.cc

Issue 10233021: Move PortAllocator creation out of LibjingleTransportFactory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/protocol/libjingle_transport_factory.h ('k') | remoting/protocol/pepper_transport_factory.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/libjingle_transport_factory.cc
diff --git a/remoting/protocol/libjingle_transport_factory.cc b/remoting/protocol/libjingle_transport_factory.cc
index 189757dd35565cb0e8d98b98db1cbb26eb7f1ce9..6790f9aafb58d98b8f0c14eae437956efa5da865 100644
--- a/remoting/protocol/libjingle_transport_factory.cc
+++ b/remoting/protocol/libjingle_transport_factory.cc
@@ -15,7 +15,7 @@
#include "third_party/libjingle/source/talk/base/basicpacketsocketfactory.h"
#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/httpportallocator.h"
+#include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h"
namespace remoting {
namespace protocol {
@@ -34,8 +34,8 @@ const int kTcpSendBufferSize = kTcpReceiveBufferSize + 30 * 1024;
class LibjingleStreamTransport : public StreamTransport,
public sigslot::has_slots<> {
public:
- LibjingleStreamTransport(talk_base::NetworkManager* network_manager,
- talk_base::PacketSocketFactory* socket_factory);
+ LibjingleStreamTransport(cricket::PortAllocator* port_allocator,
+ bool incoming_only);
virtual ~LibjingleStreamTransport();
// StreamTransport interface.
@@ -66,8 +66,8 @@ class LibjingleStreamTransport : public StreamTransport,
void NotifyConnected(scoped_ptr<net::StreamSocket> socket);
void NotifyConnectFailed();
- talk_base::NetworkManager* network_manager_;
- talk_base::PacketSocketFactory* socket_factory_;
+ cricket::PortAllocator* port_allocator_;
+ bool incoming_only_;
std::string name_;
TransportConfig config_;
@@ -75,8 +75,6 @@ class LibjingleStreamTransport : public StreamTransport,
StreamTransport::ConnectedCallback callback_;
scoped_ptr<ChannelAuthenticator> authenticator_;
- scoped_ptr<cricket::PortAllocator> port_allocator_;
- cricket::HttpPortAllocator* http_port_allocator_;
scoped_ptr<cricket::P2PTransportChannel> channel_;
// We own |socket_| until it is connected.
@@ -86,12 +84,11 @@ class LibjingleStreamTransport : public StreamTransport,
};
LibjingleStreamTransport::LibjingleStreamTransport(
- talk_base::NetworkManager* network_manager,
- talk_base::PacketSocketFactory* socket_factory)
- : network_manager_(network_manager),
- socket_factory_(socket_factory),
- event_handler_(NULL),
- http_port_allocator_(NULL) {
+ cricket::PortAllocator* port_allocator,
+ bool incoming_only)
+ : port_allocator_(port_allocator),
+ incoming_only_(incoming_only),
+ event_handler_(NULL) {
}
LibjingleStreamTransport::~LibjingleStreamTransport() {
@@ -104,10 +101,6 @@ LibjingleStreamTransport::~LibjingleStreamTransport() {
base::MessageLoopProxy::current()->DeleteSoon(
FROM_HERE, channel_.release());
}
- if (port_allocator_.get()) {
- base::MessageLoopProxy::current()->DeleteSoon(
- FROM_HERE, port_allocator_.release());
- }
}
void LibjingleStreamTransport::Initialize(
@@ -135,40 +128,19 @@ void LibjingleStreamTransport::Connect(
callback_ = callback;
- // Create port allocator first.
-
- // We always use PseudoTcp to provide a reliable channel. However
- // when it is used together with TCP the performance is very bad
- // so we explicitly disable TCP connections.
- int port_allocator_flags = cricket::PORTALLOCATOR_DISABLE_TCP;
- if (config_.nat_traversal_mode == TransportConfig::NAT_TRAVERSAL_ENABLED) {
- http_port_allocator_ = new cricket::HttpPortAllocator(
- network_manager_, socket_factory_, "");
- port_allocator_.reset(http_port_allocator_);
- } else {
- port_allocator_flags |= cricket::PORTALLOCATOR_DISABLE_STUN |
- cricket::PORTALLOCATOR_DISABLE_RELAY;
- port_allocator_.reset(
- new cricket::BasicPortAllocator(network_manager_, socket_factory_));
- }
- port_allocator_->set_flags(port_allocator_flags);
-
- port_allocator_->SetPortRange(config_.min_port, config_.max_port);
-
DCHECK(!channel_.get());
// Create P2PTransportChannel, attach signal handlers and connect it.
// TODO(sergeyu): Specify correct component ID for the channel.
channel_.reset(new cricket::P2PTransportChannel(
- name_, 0, NULL, port_allocator_.get()));
+ name_, 0, NULL, port_allocator_));
channel_->SignalRequestSignaling.connect(
this, &LibjingleStreamTransport::OnRequestSignaling);
channel_->SignalCandidateReady.connect(
this, &LibjingleStreamTransport::OnCandidateReady);
channel_->SignalRouteChange.connect(
this, &LibjingleStreamTransport::OnRouteChange);
- if (config_.nat_traversal_mode == TransportConfig::NAT_TRAVERSAL_DISABLED)
- channel_->set_incoming_only(true);
+ channel_->set_incoming_only(incoming_only_);
channel_->Connect();
@@ -311,10 +283,6 @@ void LibjingleStreamTransport::NotifyConnectFailed() {
base::MessageLoopProxy::current()->DeleteSoon(
FROM_HERE, channel_.release());
}
- if (port_allocator_.get()) {
- base::MessageLoopProxy::current()->DeleteSoon(
- FROM_HERE, port_allocator_.release());
- }
authenticator_.reset();
@@ -323,16 +291,31 @@ void LibjingleStreamTransport::NotifyConnectFailed() {
} // namespace
+LibjingleTransportFactory::LibjingleTransportFactory(
+ scoped_ptr<talk_base::NetworkManager> network_manager,
+ scoped_ptr<talk_base::PacketSocketFactory> socket_factory,
+ scoped_ptr<cricket::PortAllocator> port_allocator,
+ bool incoming_only)
+ : network_manager_(network_manager.Pass()),
+ socket_factory_(socket_factory.Pass()),
+ port_allocator_(port_allocator.Pass()),
+ incoming_only_(incoming_only) {
+}
+
LibjingleTransportFactory::LibjingleTransportFactory()
: network_manager_(new talk_base::BasicNetworkManager()),
- socket_factory_(new talk_base::BasicPacketSocketFactory(
- talk_base::Thread::Current())) {
+ socket_factory_(new talk_base::BasicPacketSocketFactory()),
+ port_allocator_(new cricket::BasicPortAllocator(
+ network_manager_.get(), socket_factory_.get())),
+ incoming_only_(false) {
}
LibjingleTransportFactory::~LibjingleTransportFactory() {
// This method may be called in response to a libjingle signal, so
// libjingle objects must be deleted asynchronously.
base::MessageLoopProxy::current()->DeleteSoon(
+ FROM_HERE, port_allocator_.release());
+ base::MessageLoopProxy::current()->DeleteSoon(
FROM_HERE, socket_factory_.release());
base::MessageLoopProxy::current()->DeleteSoon(
FROM_HERE, network_manager_.release());
@@ -340,8 +323,7 @@ LibjingleTransportFactory::~LibjingleTransportFactory() {
scoped_ptr<StreamTransport> LibjingleTransportFactory::CreateStreamTransport() {
return scoped_ptr<StreamTransport>(
- new LibjingleStreamTransport(network_manager_.get(),
- socket_factory_.get()));
+ new LibjingleStreamTransport(port_allocator_.get(), incoming_only_));
}
scoped_ptr<DatagramTransport>
« no previous file with comments | « remoting/protocol/libjingle_transport_factory.h ('k') | remoting/protocol/pepper_transport_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698