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

Unified Diff: talk/app/webrtc/webrtcsession.cc

Issue 1277263002: Add instrumentation to track the IceEndpointType. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 5 years, 4 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
Index: talk/app/webrtc/webrtcsession.cc
diff --git a/talk/app/webrtc/webrtcsession.cc b/talk/app/webrtc/webrtcsession.cc
index 2533328968945e4c2c67a2694e95ae8d19c288ea..0415c8860aa95c0f4d7c43d60b1d3c2f74cb10dd 100644
--- a/talk/app/webrtc/webrtcsession.cc
+++ b/talk/app/webrtc/webrtcsession.cc
@@ -57,6 +57,11 @@ 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;
+
namespace webrtc {
// Error messages
@@ -83,6 +88,33 @@ const char kDtlsSetupFailureRtcp[] =
"Couldn't set up DTLS-SRTP on RTCP channel.";
const int kMaxUnsignalledRecvStreams = 20;
+#define CANDIDATE_PAIR_TYPE_ENTRY(local_type, remote_type, endpoint_type) \
+ if (local.type() == local_type##_PORT_TYPE && \
+ remote.type() == remote_type##_PORT_TYPE) { \
+ return endpoint_type; \
+ }
+
+IceCandidatePairType GetIceCandidatePairCounter(
+ const cricket::Candidate& local,
+ const cricket::Candidate& remote) {
+ CANDIDATE_PAIR_TYPE_ENTRY(LOCAL, LOCAL, kIceCandidatePairHostHost);
pthatcher1 2015/08/19 02:47:53 I still think this would be better than the macro:
guoweis_webrtc 2015/08/19 18:25:52 Done.
+ CANDIDATE_PAIR_TYPE_ENTRY(LOCAL, STUN, kIceCandidatePairHostSrflx);
+ CANDIDATE_PAIR_TYPE_ENTRY(LOCAL, RELAY, kIceCandidatePairHostRelay);
+ CANDIDATE_PAIR_TYPE_ENTRY(LOCAL, PRFLX, kIceCandidatePairHostPrflx);
+ CANDIDATE_PAIR_TYPE_ENTRY(STUN, LOCAL, kIceCandidatePairSrflxHost);
+ CANDIDATE_PAIR_TYPE_ENTRY(STUN, STUN, kIceCandidatePairSrflxSrflx);
+ CANDIDATE_PAIR_TYPE_ENTRY(STUN, RELAY, kIceCandidatePairSrflxRelay);
+ CANDIDATE_PAIR_TYPE_ENTRY(STUN, PRFLX, kIceCandidatePairSrflxPrflx);
+ CANDIDATE_PAIR_TYPE_ENTRY(RELAY, LOCAL, kIceCandidatePairRelayHost);
+ CANDIDATE_PAIR_TYPE_ENTRY(RELAY, STUN, kIceCandidatePairRelaySrflx);
+ CANDIDATE_PAIR_TYPE_ENTRY(RELAY, RELAY, kIceCandidatePairRelayRelay);
+ CANDIDATE_PAIR_TYPE_ENTRY(RELAY, PRFLX, kIceCandidatePairRelayPrflx);
+ CANDIDATE_PAIR_TYPE_ENTRY(PRFLX, LOCAL, kIceCandidatePairPrflxHost);
+ CANDIDATE_PAIR_TYPE_ENTRY(PRFLX, STUN, kIceCandidatePairPrflxSrflx);
+ CANDIDATE_PAIR_TYPE_ENTRY(PRFLX, RELAY, kIceCandidatePairPrflxRelay);
+ return kIceCandidatePairMax;
+}
+
// 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,14 +1948,46 @@ void WebRtcSession::ReportBestConnectionState(
if (!it_info->best_connection) {
continue;
}
- if (it_info->local_candidate.address().family() == AF_INET) {
+
+ PeerConnectionEnumCounterType type = kPeerConnectionEnumCounter_Max;
+ const cricket::Candidate& local = it_info->local_candidate;
+ const cricket::Candidate& remote = it_info->remote_candidate;
+
+ // Increment the counter for IceCandidatePairType.
+ if (local.protocol() == cricket::TCP_PROTOCOL_NAME ||
+ (local.type() == RELAY_PORT_TYPE &&
+ local.relay_protocol() == cricket::TCP_PROTOCOL_NAME)) {
+ type = kEnumCounterIceCandidatePairTypeTcp;
+ } else if (local.protocol() == cricket::UDP_PROTOCOL_NAME) {
+ type = kEnumCounterIceCandidatePairTypeUdp;
+ } else {
+ DCHECK(0);
+ }
+ metrics_observer_->IncrementEnumCounter(
+ type, GetIceCandidatePairCounter(local, remote),
+ kIceCandidatePairMax);
+
+ // Increment the counter for IP type.
+ if (local.address().family() == AF_INET) {
+ // TODO(guoweis): Remove this next line once IncrementEnumCounter
+ // implemented for PeerConnectionMetrics.
metrics_observer_->IncrementCounter(kBestConnections_IPv4);
- } else if (it_info->local_candidate.address().family() ==
- AF_INET6) {
+
+ metrics_observer_->IncrementEnumCounter(
+ kEnumCounterAddressFamily, kBestConnections_IPv4,
+ kPeerConnectionAddressFamilyCounter_Max);
+
+ } else if (local.address().family() == AF_INET6) {
+ // TODO(guoweis): Remove this next line.
metrics_observer_->IncrementCounter(kBestConnections_IPv6);
+
+ metrics_observer_->IncrementEnumCounter(
+ kEnumCounterAddressFamily, kBestConnections_IPv6,
+ kPeerConnectionAddressFamilyCounter_Max);
} else {
RTC_NOTREACHED();
}
+
return;
}
}

Powered by Google App Engine
This is Rietveld 408576698