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

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 c37eadb8a82ceb0cc48f401ab0256957ed9f21f1..fde45104d61ddfafee2791b1e297d164ab6425ac 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,48 @@ const char kDtlsSetupFailureRtcp[] =
"Couldn't set up DTLS-SRTP on RTCP channel.";
const int kMaxUnsignalledRecvStreams = 20;
+IceCandidatePairType GetIceCandidatePairCounter(
+ const cricket::Candidate& local,
+ const cricket::Candidate& remote) {
+ const auto& l = local.type();
+ const auto& r = remote.type();
+ const auto& host = LOCAL_PORT_TYPE;
+ const auto& srflx = STUN_PORT_TYPE;
+ const auto& relay = RELAY_PORT_TYPE;
+ const auto& prflx = PRFLX_PORT_TYPE;
+ if (l == host && r == host)
+ return kIceCandidatePairHostHost;
+ if (l == host && r == srflx)
+ return kIceCandidatePairHostSrflx;
+ if (l == host && r == relay)
+ return kIceCandidatePairHostRelay;
+ if (l == host && r == prflx)
+ return kIceCandidatePairHostPrflx;
+ if (l == srflx && r == host)
+ return kIceCandidatePairSrflxHost;
+ if (l == srflx && r == srflx)
+ return kIceCandidatePairSrflxSrflx;
+ if (l == srflx && r == relay)
+ return kIceCandidatePairSrflxRelay;
+ if (l == srflx && r == prflx)
+ return kIceCandidatePairSrflxPrflx;
+ if (l == relay && r == host)
+ return kIceCandidatePairRelayHost;
+ if (l == relay && r == srflx)
+ return kIceCandidatePairRelaySrflx;
+ if (l == relay && r == relay)
+ return kIceCandidatePairRelayRelay;
+ if (l == relay && r == prflx)
+ return kIceCandidatePairRelayPrflx;
+ if (l == prflx && r == host)
+ return kIceCandidatePairPrflxHost;
+ if (l == prflx && r == srflx)
+ return kIceCandidatePairPrflxSrflx;
+ if (l == prflx && r == relay)
+ return 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.
@@ -1921,14 +1968,46 @@ void WebRtcSession::ReportBestConnectionState(
if (!it_info->best_connection) {
continue;
}
- if (it_info->local_candidate.address().family() == AF_INET) {
+
+ PeerConnectionEnumCounterType type = kPeerConnectionEnumCounterMax;
+ 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 {
+ CHECK(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();
+ CHECK(0);
}
+
return;
}
}

Powered by Google App Engine
This is Rietveld 408576698