Index: content/browser/renderer_host/p2p/socket_host.cc |
diff --git a/content/browser/renderer_host/p2p/socket_host.cc b/content/browser/renderer_host/p2p/socket_host.cc |
index 1693918bd32854572a8b085efa8b434cb61a3238..6fce88b20923f35d094db88be4fa1b1cf3a74005 100644 |
--- a/content/browser/renderer_host/p2p/socket_host.cc |
+++ b/content/browser/renderer_host/p2p/socket_host.cc |
@@ -4,6 +4,7 @@ |
#include "content/browser/renderer_host/p2p/socket_host.h" |
+#include "base/metrics/histogram.h" |
#include "base/sys_byteorder.h" |
#include "content/browser/renderer_host/p2p/socket_host_tcp.h" |
#include "content/browser/renderer_host/p2p/socket_host_tcp_server.h" |
@@ -454,16 +455,42 @@ bool UpdateRtpAbsSendTimeExtension(char* rtp, |
} // packet_processing_helpers |
-P2PSocketHost::P2PSocketHost(IPC::Sender* message_sender, int socket_id) |
+P2PSocketHost::P2PSocketHost(IPC::Sender* message_sender, |
+ int socket_id, |
+ ProtocolType protocol_type) |
: message_sender_(message_sender), |
id_(socket_id), |
state_(STATE_UNINITIALIZED), |
dump_incoming_rtp_packet_(false), |
dump_outgoing_rtp_packet_(false), |
- weak_ptr_factory_(this) { |
+ weak_ptr_factory_(this), |
+ protocol_type_(protocol_type), |
+ send_packets_delayed_total_(0), |
+ send_packets_total_(0), |
+ send_bytes_delayed_max_(0), |
+ send_bytes_delayed_cur_(0) { |
} |
-P2PSocketHost::~P2PSocketHost() { } |
+P2PSocketHost::~P2PSocketHost() { |
+ if (protocol_type_ == P2PSocketHost::UDP) { |
+ UMA_HISTOGRAM_COUNTS_10000("WebRTC.SystemMaxConsecutiveBytesDelayed_UDP", |
+ send_bytes_delayed_max_); |
+ } else { |
+ UMA_HISTOGRAM_COUNTS_10000("WebRTC.SystemMaxConsecutiveBytesDelayed_TCP", |
+ send_bytes_delayed_max_); |
+ } |
+ |
+ if (send_packets_total_ > 0) { |
+ int delay_rate = (send_packets_delayed_total_ * 100) / send_packets_total_; |
+ if (protocol_type_ == P2PSocketHost::UDP) { |
+ UMA_HISTOGRAM_PERCENTAGE("WebRTC.SystemPercentPacketsDelayed_UDP", |
+ delay_rate); |
+ } else { |
+ UMA_HISTOGRAM_PERCENTAGE("WebRTC.SystemPercentPacketsDelayed_TCP", |
+ delay_rate); |
+ } |
+ } |
+} |
// Verifies that the packet |data| has a valid STUN header. |
// static |
@@ -644,4 +671,24 @@ void P2PSocketHost::DumpRtpPacketOnIOThread(scoped_ptr<uint8[]> packet_header, |
incoming)); |
} |
+void P2PSocketHost::IncrementDelayedPackets() { |
+ send_packets_delayed_total_++; |
+} |
+ |
+void P2PSocketHost::IncrementTotalSentPackets() { |
+ send_packets_total_++; |
+} |
+ |
+void P2PSocketHost::IncrementDelayedBytes(uint32 size) { |
+ send_bytes_delayed_cur_ += size; |
+ if (send_bytes_delayed_cur_ > send_bytes_delayed_max_) { |
+ send_bytes_delayed_max_ = send_bytes_delayed_cur_; |
+ } |
+} |
+ |
+void P2PSocketHost::DecrementDelayedBytes(uint32 size) { |
+ send_bytes_delayed_cur_ -= size; |
+ DCHECK_GE(send_bytes_delayed_cur_, 0); |
+} |
+ |
} // namespace content |