OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "net/socket_stream/socket_stream_metrics.h" | |
6 | |
7 #include <string.h> | |
8 | |
9 #include "base/metrics/histogram.h" | |
10 #include "base/time/time.h" | |
11 #include "url/gurl.h" | |
12 | |
13 namespace net { | |
14 | |
15 SocketStreamMetrics::SocketStreamMetrics(const GURL& url) | |
16 : received_bytes_(0), | |
17 received_counts_(0), | |
18 sent_bytes_(0), | |
19 sent_counts_(0) { | |
20 ProtocolType protocol_type = PROTOCOL_UNKNOWN; | |
21 if (url.SchemeIs("ws")) | |
22 protocol_type = PROTOCOL_WEBSOCKET; | |
23 else if (url.SchemeIs("wss")) | |
24 protocol_type = PROTOCOL_WEBSOCKET_SECURE; | |
25 | |
26 UMA_HISTOGRAM_ENUMERATION("Net.SocketStream.ProtocolType", | |
27 protocol_type, NUM_PROTOCOL_TYPES); | |
28 } | |
29 | |
30 SocketStreamMetrics::~SocketStreamMetrics() {} | |
31 | |
32 void SocketStreamMetrics::OnWaitConnection() { | |
33 wait_start_time_ = base::TimeTicks::Now(); | |
34 } | |
35 | |
36 void SocketStreamMetrics::OnStartConnection() { | |
37 connect_start_time_ = base::TimeTicks::Now(); | |
38 if (!wait_start_time_.is_null()) | |
39 UMA_HISTOGRAM_TIMES("Net.SocketStream.ConnectionLatency", | |
40 connect_start_time_ - wait_start_time_); | |
41 OnCountConnectionType(ALL_CONNECTIONS); | |
42 } | |
43 | |
44 void SocketStreamMetrics::OnConnected() { | |
45 connect_establish_time_ = base::TimeTicks::Now(); | |
46 UMA_HISTOGRAM_TIMES("Net.SocketStream.ConnectionEstablish", | |
47 connect_establish_time_ - connect_start_time_); | |
48 } | |
49 | |
50 void SocketStreamMetrics::OnRead(int len) { | |
51 received_bytes_ += len; | |
52 ++received_counts_; | |
53 } | |
54 | |
55 void SocketStreamMetrics::OnWrite(int len) { | |
56 sent_bytes_ += len; | |
57 ++sent_counts_; | |
58 } | |
59 | |
60 void SocketStreamMetrics::OnClose() { | |
61 base::TimeTicks closed_time = base::TimeTicks::Now(); | |
62 if (!connect_establish_time_.is_null()) { | |
63 UMA_HISTOGRAM_LONG_TIMES("Net.SocketStream.Duration", | |
64 closed_time - connect_establish_time_); | |
65 UMA_HISTOGRAM_COUNTS("Net.SocketStream.ReceivedBytes", | |
66 received_bytes_); | |
67 UMA_HISTOGRAM_COUNTS("Net.SocketStream.ReceivedCounts", | |
68 received_counts_); | |
69 UMA_HISTOGRAM_COUNTS("Net.SocketStream.SentBytes", | |
70 sent_bytes_); | |
71 UMA_HISTOGRAM_COUNTS("Net.SocketStream.SentCounts", | |
72 sent_counts_); | |
73 } | |
74 } | |
75 | |
76 void SocketStreamMetrics::OnCountConnectionType(ConnectionType type) { | |
77 UMA_HISTOGRAM_ENUMERATION("Net.SocketStream.ConnectionType", type, | |
78 NUM_CONNECTION_TYPES); | |
79 } | |
80 | |
81 void SocketStreamMetrics::OnCountWireProtocolType(WireProtocolType type) { | |
82 UMA_HISTOGRAM_ENUMERATION("Net.SocketStream.WireProtocolType", type, | |
83 NUM_WIRE_PROTOCOL_TYPES); | |
84 } | |
85 | |
86 } // namespace net | |
OLD | NEW |