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

Unified Diff: remoting/protocol/ice_transport_factory.cc

Issue 1521883006: Add TransportContext class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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/ice_transport_factory.h ('k') | remoting/protocol/ice_transport_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/ice_transport_factory.cc
diff --git a/remoting/protocol/ice_transport_factory.cc b/remoting/protocol/ice_transport_factory.cc
deleted file mode 100644
index 19b14cba24ec545a5f6bcf1ea613111b443f2306..0000000000000000000000000000000000000000
--- a/remoting/protocol/ice_transport_factory.cc
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "remoting/protocol/ice_transport_factory.h"
-
-#include "base/single_thread_task_runner.h"
-#include "base/thread_task_runner_handle.h"
-#include "remoting/protocol/ice_transport.h"
-#include "third_party/webrtc/p2p/client/httpportallocator.h"
-
-namespace remoting {
-namespace protocol {
-
-// Get fresh STUN/Relay configuration every hour.
-static const int kJingleInfoUpdatePeriodSeconds = 3600;
-
-IceTransportFactory::IceTransportFactory(
- SignalStrategy* signal_strategy,
- scoped_ptr<cricket::HttpPortAllocatorBase> port_allocator,
- const NetworkSettings& network_settings,
- TransportRole role)
- : signal_strategy_(signal_strategy),
- port_allocator_(port_allocator.Pass()),
- network_settings_(network_settings),
- role_(role) {}
-
-IceTransportFactory::~IceTransportFactory() {
- // This method may be called in response to a libjingle signal, so
- // libjingle objects must be deleted asynchronously.
- scoped_refptr<base::SingleThreadTaskRunner> task_runner =
- base::ThreadTaskRunnerHandle::Get();
- task_runner->DeleteSoon(FROM_HERE, port_allocator_.release());
-}
-
-scoped_ptr<Transport> IceTransportFactory::CreateTransport() {
- scoped_ptr<IceTransport> result(
- new IceTransport(port_allocator_.get(), network_settings_, role_));
-
- EnsureFreshJingleInfo();
-
- // If there is a pending |jingle_info_request_| delay starting the new
- // transport until the request is finished.
- if (jingle_info_request_) {
- on_jingle_info_callbacks_.push_back(result->GetCanStartClosure());
- } else {
- result->GetCanStartClosure().Run();
- }
-
- return result.Pass();
-}
-
-void IceTransportFactory::EnsureFreshJingleInfo() {
- uint32 stun_or_relay_flags = NetworkSettings::NAT_TRAVERSAL_STUN |
- NetworkSettings::NAT_TRAVERSAL_RELAY;
- if (!(network_settings_.flags & stun_or_relay_flags) ||
- jingle_info_request_) {
- return;
- }
-
- if (last_jingle_info_update_time_.is_null() ||
- base::TimeTicks::Now() - last_jingle_info_update_time_ >
- base::TimeDelta::FromSeconds(kJingleInfoUpdatePeriodSeconds)) {
- jingle_info_request_.reset(new JingleInfoRequest(signal_strategy_));
- jingle_info_request_->Send(base::Bind(
- &IceTransportFactory::OnJingleInfo, base::Unretained(this)));
- }
-}
-
-void IceTransportFactory::OnJingleInfo(
- const std::string& relay_token,
- const std::vector<std::string>& relay_hosts,
- const std::vector<rtc::SocketAddress>& stun_hosts) {
- if (!relay_token.empty() && !relay_hosts.empty()) {
- port_allocator_->SetRelayHosts(relay_hosts);
- port_allocator_->SetRelayToken(relay_token);
- }
- if (!stun_hosts.empty()) {
- port_allocator_->SetStunHosts(stun_hosts);
- }
-
- jingle_info_request_.reset();
- if ((!relay_token.empty() && !relay_hosts.empty()) || !stun_hosts.empty())
- last_jingle_info_update_time_ = base::TimeTicks::Now();
-
- while (!on_jingle_info_callbacks_.empty()) {
- on_jingle_info_callbacks_.begin()->Run();
- on_jingle_info_callbacks_.pop_front();
- }
-}
-
-} // namespace protocol
-} // namespace remoting
« no previous file with comments | « remoting/protocol/ice_transport_factory.h ('k') | remoting/protocol/ice_transport_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698