OLD | NEW |
| (Empty) |
1 /* | |
2 * libjingle | |
3 * Copyright 2014 Google Inc. | |
4 * | |
5 * Redistribution and use in source and binary forms, with or without | |
6 * modification, are permitted provided that the following conditions are met: | |
7 * | |
8 * 1. Redistributions of source code must retain the above copyright notice, | |
9 * this list of conditions and the following disclaimer. | |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | |
11 * this list of conditions and the following disclaimer in the documentation | |
12 * and/or other materials provided with the distribution. | |
13 * 3. The name of the author may not be used to endorse or promote products | |
14 * derived from this software without specific prior written permission. | |
15 * | |
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED | |
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | |
19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | |
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | |
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | |
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
26 */ | |
27 | |
28 // This file contains enums related to IPv4/IPv6 metrics. | |
29 | |
30 #ifndef TALK_APP_WEBRTC_UMAMETRICS_H_ | |
31 #define TALK_APP_WEBRTC_UMAMETRICS_H_ | |
32 | |
33 namespace webrtc { | |
34 | |
35 // Used to specify which enum counter type we're incrementing in | |
36 // MetricsObserverInterface::IncrementEnumCounter. | |
37 enum PeerConnectionEnumCounterType { | |
38 kEnumCounterAddressFamily, | |
39 // For the next 2 counters, we track them separately based on the "first hop" | |
40 // protocol used by the local candidate. "First hop" means the local candidate | |
41 // type in the case of non-TURN candidates, and the protocol used to connect | |
42 // to the TURN server in the case of TURN candidates. | |
43 kEnumCounterIceCandidatePairTypeUdp, | |
44 kEnumCounterIceCandidatePairTypeTcp, | |
45 | |
46 kEnumCounterAudioSrtpCipher, | |
47 kEnumCounterAudioSslCipher, | |
48 kEnumCounterVideoSrtpCipher, | |
49 kEnumCounterVideoSslCipher, | |
50 kEnumCounterDataSrtpCipher, | |
51 kEnumCounterDataSslCipher, | |
52 kPeerConnectionEnumCounterMax | |
53 }; | |
54 | |
55 // Currently this contains information related to WebRTC network/transport | |
56 // information. | |
57 | |
58 // The difference between PeerConnectionEnumCounter and | |
59 // PeerConnectionMetricsName is that the "EnumCounter" is only counting the | |
60 // occurrences of events, while "Name" has a value associated with it which is | |
61 // used to form a histogram. | |
62 | |
63 // This enum is backed by Chromium's histograms.xml, | |
64 // chromium/src/tools/metrics/histograms/histograms.xml | |
65 // Existing values cannot be re-ordered and new enums must be added | |
66 // before kBoundary. | |
67 enum PeerConnectionAddressFamilyCounter { | |
68 kPeerConnection_IPv4, | |
69 kPeerConnection_IPv6, | |
70 kBestConnections_IPv4, | |
71 kBestConnections_IPv6, | |
72 kPeerConnectionAddressFamilyCounter_Max, | |
73 }; | |
74 | |
75 // TODO(guoweis): Keep previous name here until all references are renamed. | |
76 #define kBoundary kPeerConnectionAddressFamilyCounter_Max | |
77 | |
78 // TODO(guoweis): Keep previous name here until all references are renamed. | |
79 typedef PeerConnectionAddressFamilyCounter PeerConnectionUMAMetricsCounter; | |
80 | |
81 // This enum defines types for UMA samples, which will have a range. | |
82 enum PeerConnectionMetricsName { | |
83 kNetworkInterfaces_IPv4, // Number of IPv4 interfaces. | |
84 kNetworkInterfaces_IPv6, // Number of IPv6 interfaces. | |
85 kTimeToConnect, // In milliseconds. | |
86 kLocalCandidates_IPv4, // Number of IPv4 local candidates. | |
87 kLocalCandidates_IPv6, // Number of IPv6 local candidates. | |
88 kPeerConnectionMetricsName_Max | |
89 }; | |
90 | |
91 // TODO(guoweis): Keep previous name here until all references are renamed. | |
92 typedef PeerConnectionMetricsName PeerConnectionUMAMetricsName; | |
93 | |
94 // The IceCandidatePairType has the format of | |
95 // <local_candidate_type>_<remote_candidate_type>. It is recorded based on the | |
96 // type of candidate pair used when the PeerConnection first goes to a completed | |
97 // state. When BUNDLE is enabled, only the first transport gets recorded. | |
98 enum IceCandidatePairType { | |
99 // HostHost is deprecated. It was replaced with the set of types at the bottom | |
100 // to report private or public host IP address. | |
101 kIceCandidatePairHostHost, | |
102 kIceCandidatePairHostSrflx, | |
103 kIceCandidatePairHostRelay, | |
104 kIceCandidatePairHostPrflx, | |
105 kIceCandidatePairSrflxHost, | |
106 kIceCandidatePairSrflxSrflx, | |
107 kIceCandidatePairSrflxRelay, | |
108 kIceCandidatePairSrflxPrflx, | |
109 kIceCandidatePairRelayHost, | |
110 kIceCandidatePairRelaySrflx, | |
111 kIceCandidatePairRelayRelay, | |
112 kIceCandidatePairRelayPrflx, | |
113 kIceCandidatePairPrflxHost, | |
114 kIceCandidatePairPrflxSrflx, | |
115 kIceCandidatePairPrflxRelay, | |
116 | |
117 // The following 4 types tell whether local and remote hosts have private or | |
118 // public IP addresses. | |
119 kIceCandidatePairHostPrivateHostPrivate, | |
120 kIceCandidatePairHostPrivateHostPublic, | |
121 kIceCandidatePairHostPublicHostPrivate, | |
122 kIceCandidatePairHostPublicHostPublic, | |
123 kIceCandidatePairMax | |
124 }; | |
125 | |
126 } // namespace webrtc | |
127 | |
128 #endif // TALK_APP_WEBRTC_UMAMETRICS_H_ | |
OLD | NEW |