Chromium Code Reviews| Index: webrtc/p2p/base/p2ptransportchannel.cc |
| diff --git a/webrtc/p2p/base/p2ptransportchannel.cc b/webrtc/p2p/base/p2ptransportchannel.cc |
| index 94eb01754d459111533fa7f9a7c71e9e5e3223d1..27ecb1073eb1892157995233b1119affae3f61a7 100644 |
| --- a/webrtc/p2p/base/p2ptransportchannel.cc |
| +++ b/webrtc/p2p/base/p2ptransportchannel.cc |
| @@ -11,6 +11,7 @@ |
| #include "webrtc/p2p/base/p2ptransportchannel.h" |
| #include <set> |
| +#include <algorithm> |
| #include "webrtc/p2p/base/common.h" |
| #include "webrtc/p2p/base/relayport.h" // For RELAY_PORT_TYPE. |
| #include "webrtc/p2p/base/stunport.h" // For STUN_PORT_TYPE. |
| @@ -180,13 +181,12 @@ namespace cricket { |
| P2PTransportChannel::P2PTransportChannel(const std::string& content_name, |
| int component, |
| P2PTransport* transport, |
| - PortAllocator *allocator) : |
| + PortAllocator* allocator) : |
| TransportChannelImpl(content_name, component), |
| transport_(transport), |
| allocator_(allocator), |
| worker_thread_(rtc::Thread::Current()), |
| incoming_only_(false), |
| - waiting_for_signaling_(false), |
| error_(0), |
| best_connection_(NULL), |
| pending_best_connection_(NULL), |
| @@ -197,6 +197,7 @@ P2PTransportChannel::P2PTransportChannel(const std::string& content_name, |
| ice_role_(ICEROLE_UNKNOWN), |
| tiebreaker_(0), |
| remote_candidate_generation_(0), |
| + candidate_gathering_state_(Transport::kGatheringNew), |
| check_receiving_delay_(MIN_CHECK_RECEIVING_DELAY * 5), |
| receiving_timeout_(MIN_CHECK_RECEIVING_DELAY * 50) { |
| } |
| @@ -435,7 +436,7 @@ void P2PTransportChannel::OnPortReady(PortAllocatorSession *session, |
| // A new candidate is available, let listeners know |
| void P2PTransportChannel::OnCandidatesReady( |
| - PortAllocatorSession *session, const std::vector<Candidate>& candidates) { |
| + PortAllocatorSession* session, const std::vector<Candidate>& candidates) { |
| ASSERT(worker_thread_ == rtc::Thread::Current()); |
| for (size_t i = 0; i < candidates.size(); ++i) { |
| SignalCandidateReady(this, candidates[i]); |
| @@ -445,6 +446,7 @@ void P2PTransportChannel::OnCandidatesReady( |
| void P2PTransportChannel::OnCandidatesAllocationDone( |
| PortAllocatorSession* session) { |
| ASSERT(worker_thread_ == rtc::Thread::Current()); |
| + candidate_gathering_state_ = Transport::kGatheringDone; |
| SignalCandidatesAllocationDone(this); |
| } |
| @@ -631,16 +633,6 @@ void P2PTransportChannel::OnRoleConflict(PortInterface* port) { |
| // from Transport. |
| } |
| -// When the signalling channel is ready, we can really kick off the allocator |
| -void P2PTransportChannel::OnSignalingReady() { |
| - ASSERT(worker_thread_ == rtc::Thread::Current()); |
| - if (waiting_for_signaling_) { |
| - waiting_for_signaling_ = false; |
| - AddAllocatorSession(allocator_->CreateSession( |
| - SessionId(), content_name(), component(), ice_ufrag_, ice_pwd_)); |
| - } |
| -} |
| - |
| void P2PTransportChannel::OnUseCandidate(Connection* conn) { |
| ASSERT(worker_thread_ == rtc::Thread::Current()); |
| ASSERT(ice_role_ == ICEROLE_CONTROLLED); |
| @@ -917,7 +909,7 @@ bool P2PTransportChannel::GetStats(ConnectionInfos *infos) { |
| std::vector<Connection *>::const_iterator it; |
| for (it = connections_.begin(); it != connections_.end(); ++it) { |
| - Connection *connection = *it; |
| + Connection* connection = *it; |
| ConnectionInfo info; |
| info.best_connection = (best_connection_ == connection); |
| info.readable = |
| @@ -952,12 +944,15 @@ rtc::DiffServCodePoint P2PTransportChannel::DefaultDscpValue() const { |
| return static_cast<rtc::DiffServCodePoint> (it->second); |
| } |
| -// Begin allocate (or immediately re-allocate, if MSG_ALLOCATE pending) |
| +// Begin allocate |
| void P2PTransportChannel::Allocate() { |
|
pthatcher1
2015/08/10 20:40:17
We could probably call this Gather() now
Taylor Brandstetter
2015/08/11 01:20:07
Done (I'll call it StartGatheringCandidates for cl
|
| - // Time for a new allocator, lets make sure we have a signalling channel |
| - // to communicate candidates through first. |
| - waiting_for_signaling_ = true; |
| - SignalRequestSignaling(this); |
| + // Time for a new allocator |
| + if (candidate_gathering_state_ != Transport::kGatheringGathering) { |
| + candidate_gathering_state_ = Transport::kGatheringGathering; |
| + SignalCandidatesAllocationStarted(this); |
| + } |
| + AddAllocatorSession(allocator_->CreateSession( |
| + SessionId(), content_name(), component(), ice_ufrag_, ice_pwd_)); |
| } |
| // Monitor connection states. |
| @@ -1407,7 +1402,7 @@ void P2PTransportChannel::OnPortDestroyed(PortInterface* port) { |
| // We data is available, let listeners know |
| void P2PTransportChannel::OnReadPacket( |
| - Connection *connection, const char *data, size_t len, |
| + Connection* connection, const char *data, size_t len, |
| const rtc::PacketTime& packet_time) { |
| ASSERT(worker_thread_ == rtc::Thread::Current()); |