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

Unified Diff: webrtc/p2p/base/p2ptransportchannel.h

Issue 1577233006: Implement Turn/Turn first logic for connection selection. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Fix test cases Created 4 years, 10 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 | « webrtc/api/webrtcsession.cc ('k') | webrtc/p2p/base/p2ptransportchannel.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/p2p/base/p2ptransportchannel.h
diff --git a/webrtc/p2p/base/p2ptransportchannel.h b/webrtc/p2p/base/p2ptransportchannel.h
index 60ce9730546ae109461e230c6b2c149c16706bfb..eac405d9166c51f09205885e7ab9ae9e3a65067b 100644
--- a/webrtc/p2p/base/p2ptransportchannel.h
+++ b/webrtc/p2p/base/p2ptransportchannel.h
@@ -21,6 +21,7 @@
#define WEBRTC_P2P_BASE_P2PTRANSPORTCHANNEL_H_
#include <map>
+#include <set>
#include <string>
#include <vector>
#include "webrtc/p2p/base/candidate.h"
@@ -94,6 +95,7 @@ class P2PTransportChannel : public TransportChannelImpl,
// Sets the receiving timeout and gather_continually.
// This also sets the check_receiving_delay proportionally.
void SetIceConfig(const IceConfig& config) override;
+ const IceConfig& config() const;
// From TransportChannel:
int SendPacket(const char* data,
@@ -164,7 +166,7 @@ class P2PTransportChannel : public TransportChannelImpl,
return false;
}
- int receiving_timeout() const { return receiving_timeout_; }
+ int receiving_timeout() const { return config_.receiving_timeout_ms; }
int check_receiving_delay() const { return check_receiving_delay_; }
// Helper method used only in unittest.
@@ -172,6 +174,7 @@ class P2PTransportChannel : public TransportChannelImpl,
// Public for unit tests.
Connection* FindNextPingableConnection();
+ void MarkConnectionPinged(Connection* conn);
// Public for unit tests.
const std::vector<Connection*>& connections() const { return connections_; }
@@ -250,6 +253,18 @@ class P2PTransportChannel : public TransportChannelImpl,
Connection* best_nominated_connection() const;
bool IsBackupConnection(Connection* conn) const;
+ Connection* FindConnectionToPing(uint32_t now);
+ Connection* FindOldestConnectionNeedingTriggeredCheck(uint32_t now);
+ // Between |conn1| and |conn2|, this function returns the one which should
+ // be pinged first.
+ Connection* SelectMostPingableConnection(Connection* conn1,
+ Connection* conn2);
+ // Select the connection which is Relay/Relay. If both of them are,
+ // UDP relay protocol takes precedence.
+ Connection* MostLikelyToWork(Connection* conn1, Connection* conn2);
+ // Compare the last_ping_sent time and return the one least recently pinged.
+ Connection* LeastRecentlyPinged(Connection* conn1, Connection* conn2);
+
// Returns the latest remote ICE parameters or nullptr if there are no remote
// ICE parameters yet.
IceParameters* remote_ice() {
@@ -274,8 +289,18 @@ class P2PTransportChannel : public TransportChannelImpl,
int error_;
std::vector<PortAllocatorSession*> allocator_sessions_;
std::vector<PortInterface *> ports_;
+
+ // |connections_| is a sorted list with the first one always be the
+ // |best_connection_| when it's not nullptr. The combination of
+ // |pinged_connections_| and |unpinged_connections_| has the same
+ // connections as |connections_|. These 2 sets maintain whether a
+ // connection should be pinged next or not.
std::vector<Connection *> connections_;
+ std::set<Connection*> pinged_connections_;
+ std::set<Connection*> unpinged_connections_;
+
Connection* best_connection_;
+
// Connection selected by the controlling agent. This should be used only
// at controlled side when protocol type is RFC5245.
Connection* pending_best_connection_;
@@ -293,12 +318,10 @@ class P2PTransportChannel : public TransportChannelImpl,
IceGatheringState gathering_state_;
int check_receiving_delay_;
- int receiving_timeout_;
- int backup_connection_ping_interval_;
uint32_t last_ping_sent_ms_ = 0;
- bool gather_continually_ = false;
int weak_ping_delay_ = WEAK_PING_DELAY;
TransportChannelState state_ = TransportChannelState::STATE_INIT;
+ IceConfig config_;
RTC_DISALLOW_COPY_AND_ASSIGN(P2PTransportChannel);
};
« no previous file with comments | « webrtc/api/webrtcsession.cc ('k') | webrtc/p2p/base/p2ptransportchannel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698