Index: talk/app/webrtc/webrtcsession.cc |
diff --git a/talk/app/webrtc/webrtcsession.cc b/talk/app/webrtc/webrtcsession.cc |
index 2533328968945e4c2c67a2694e95ae8d19c288ea..29b3a8a51b0cef9081d99a81ee650099a89e2d95 100644 |
--- a/talk/app/webrtc/webrtcsession.cc |
+++ b/talk/app/webrtc/webrtcsession.cc |
@@ -57,6 +57,12 @@ using cricket::MediaContentDescription; |
using cricket::SessionDescription; |
using cricket::TransportInfo; |
+using cricket::LOCAL_PORT_TYPE; |
+using cricket::STUN_PORT_TYPE; |
+using cricket::RELAY_PORT_TYPE; |
+using cricket::PRFLX_PORT_TYPE; |
+using webrtc::IceEndpointType; |
+ |
namespace webrtc { |
// Error messages |
@@ -83,6 +89,32 @@ const char kDtlsSetupFailureRtcp[] = |
"Couldn't set up DTLS-SRTP on RTCP channel."; |
const int kMaxUnsignalledRecvStreams = 20; |
+#define DECLARE_ENDPOINT_TYPE_ENTRY(local_type, remote_type, endpoint_type) \ |
+ if (local.type() == local_type##_PORT_TYPE && \ |
+ remote.type() == remote_type##_PORT_TYPE) { \ |
+ return endpoint_type; \ |
+ } |
+ |
+IceEndpointType GetIceEndpointType(const cricket::Candidate& local, |
+ const cricket::Candidate& remote) { |
+ DECLARE_ENDPOINT_TYPE_ENTRY(LOCAL, LOCAL, kIceEndpoint_Host_Host); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(LOCAL, STUN, kIceEndpoint_Host_Srflx); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(LOCAL, RELAY, kIceEndpoint_Host_Relay); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(LOCAL, PRFLX, kIceEndpoint_Host_Prflx); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(STUN, LOCAL, kIceEndpoint_Srflx_Host); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(STUN, STUN, kIceEndpoint_Srflx_Srflx); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(STUN, RELAY, kIceEndpoint_Srflx_Relay); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(STUN, PRFLX, kIceEndpoint_Srflx_Prflx); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(RELAY, LOCAL, kIceEndpoint_Relay_Host); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(RELAY, STUN, kIceEndpoint_Relay_Srflx); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(RELAY, RELAY, kIceEndpoint_Relay_Relay); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(RELAY, PRFLX, kIceEndpoint_Relay_Prflx); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(PRFLX, LOCAL, kIceEndpoint_Prflx_Host); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(PRFLX, STUN, kIceEndpoint_Prflx_Srflx); |
+ DECLARE_ENDPOINT_TYPE_ENTRY(PRFLX, RELAY, kIceEndpoint_Prflx_Relay); |
+ return kIceEndpoint_Max; |
+} |
+ |
// Compares |answer| against |offer|. Comparision is done |
// for number of m-lines in answer against offer. If matches true will be |
// returned otherwise false. |
@@ -1916,6 +1948,23 @@ void WebRtcSession::ReportBestConnectionState( |
if (!it_info->best_connection) { |
continue; |
} |
+ |
+ // Get the PeerConnectionEnumCounterType. |
+ PeerConnectionEnumCounterType counter = kPeerConnectionEnumCounter_Max; |
juberti1
2015/08/14 21:26:04
looks like this code needs to be updated
|
+ if (it_info->local_candidate.first_hop_protocol() == |
+ cricket::UDP_PROTOCOL_NAME) { |
+ counter = kPeerConnectionEnumCounter_IceEndpointTypeUDP; |
+ } else if (it_info->local_candidate.first_hop_protocol() == |
+ cricket::TCP_PROTOCOL_NAME) { |
+ counter = kPeerConnectionEnumCounter_IceEndpointTypeTCP; |
+ } else { |
+ DCHECK(counter != kPeerConnectionEnumCounter_Max); |
+ } |
+ |
+ metrics_observer_->IncrementEnumCounter( |
+ counter, GetIceEndpointType(it_info->local_candidate, |
+ it_info->remote_candidate), |
+ kIceEndpoint_Max); |
if (it_info->local_candidate.address().family() == AF_INET) { |
metrics_observer_->IncrementCounter(kBestConnections_IPv4); |
} else if (it_info->local_candidate.address().family() == |