blob: 8eaed6d2ff58ec291c6d4e2b4b24909b890bda46 [file] [log] [blame]
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +00001/*
2 * libjingle
jlmiller@webrtc.org5f93d0a2015-01-20 21:36:13 +00003 * Copyright 2014 Google Inc.
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +00004 *
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
33namespace webrtc {
34
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070035// Used to specify which enum counter type we're incrementing in
36// MetricsObserverInterface::IncrementEnumCounter.
37enum 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 kPeerConnectionEnumCounterMax
46};
47
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +000048// Currently this contains information related to WebRTC network/transport
49// information.
50
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070051// The difference between PeerConnectionEnumCounter and
52// PeerConnectionMetricsName is that the "EnumCounter" is only counting the
guoweis@webrtc.org7169afd2014-12-04 17:59:29 +000053// occurrences of events, while "Name" has a value associated with it which is
54// used to form a histogram.
55
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +000056// This enum is backed by Chromium's histograms.xml,
57// chromium/src/tools/metrics/histograms/histograms.xml
58// Existing values cannot be re-ordered and new enums must be added
59// before kBoundary.
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070060enum PeerConnectionAddressFamilyCounter {
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +000061 kPeerConnection_IPv4,
62 kPeerConnection_IPv6,
63 kBestConnections_IPv4,
64 kBestConnections_IPv6,
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070065 kPeerConnectionAddressFamilyCounter_Max,
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +000066};
67
guoweis@webrtc.org7169afd2014-12-04 17:59:29 +000068// TODO(guoweis): Keep previous name here until all references are renamed.
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070069#define kBoundary kPeerConnectionAddressFamilyCounter_Max
guoweis@webrtc.org7169afd2014-12-04 17:59:29 +000070
71// TODO(guoweis): Keep previous name here until all references are renamed.
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070072typedef PeerConnectionAddressFamilyCounter PeerConnectionUMAMetricsCounter;
guoweis@webrtc.org7169afd2014-12-04 17:59:29 +000073
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +000074// This enum defines types for UMA samples, which will have a range.
guoweis@webrtc.org7169afd2014-12-04 17:59:29 +000075enum PeerConnectionMetricsName {
76 kNetworkInterfaces_IPv4, // Number of IPv4 interfaces.
77 kNetworkInterfaces_IPv6, // Number of IPv6 interfaces.
78 kTimeToConnect, // In milliseconds.
79 kLocalCandidates_IPv4, // Number of IPv4 local candidates.
80 kLocalCandidates_IPv6, // Number of IPv6 local candidates.
jbauchac8869e2015-07-03 01:36:14 -070081 kAudioSrtpCipher, // Name of SRTP cipher used in audio channel.
82 kAudioSslCipher, // Name of SSL cipher used in audio channel.
83 kVideoSrtpCipher, // Name of SRTP cipher used in video channel.
84 kVideoSslCipher, // Name of SSL cipher used in video channel.
85 kDataSrtpCipher, // Name of SRTP cipher used in data channel.
86 kDataSslCipher, // Name of SSL cipher used in data channel.
guoweis@webrtc.org7169afd2014-12-04 17:59:29 +000087 kPeerConnectionMetricsName_Max
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +000088};
89
guoweis@webrtc.org7169afd2014-12-04 17:59:29 +000090// TODO(guoweis): Keep previous name here until all references are renamed.
91typedef PeerConnectionMetricsName PeerConnectionUMAMetricsName;
92
Guo-wei Shieh3d564c12015-08-19 16:51:15 -070093// The IceCandidatePairType has the format of
94// <local_candidate_type>_<remote_candidate_type>. It is recorded based on the
95// type of candidate pair used when the PeerConnection first goes to a completed
96// state. When BUNDLE is enabled, only the first transport gets recorded.
97enum IceCandidatePairType {
Guo-wei Shieh3cc834a2015-09-04 15:52:14 -070098 // HostHost is deprecated. It was replaced with the set of types at the bottom
99 // to report private or public host IP address.
Guo-wei Shieh3d564c12015-08-19 16:51:15 -0700100 kIceCandidatePairHostHost,
101 kIceCandidatePairHostSrflx,
102 kIceCandidatePairHostRelay,
103 kIceCandidatePairHostPrflx,
104 kIceCandidatePairSrflxHost,
105 kIceCandidatePairSrflxSrflx,
106 kIceCandidatePairSrflxRelay,
107 kIceCandidatePairSrflxPrflx,
108 kIceCandidatePairRelayHost,
109 kIceCandidatePairRelaySrflx,
110 kIceCandidatePairRelayRelay,
111 kIceCandidatePairRelayPrflx,
112 kIceCandidatePairPrflxHost,
113 kIceCandidatePairPrflxSrflx,
114 kIceCandidatePairPrflxRelay,
Guo-wei Shieh3cc834a2015-09-04 15:52:14 -0700115
116 // The following 4 types tell whether local and remote hosts have private or
117 // public IP addresses.
118 kIceCandidatePairHostPrivateHostPrivate,
119 kIceCandidatePairHostPrivateHostPublic,
120 kIceCandidatePairHostPublicHostPrivate,
121 kIceCandidatePairHostPublicHostPublic,
Guo-wei Shieh3d564c12015-08-19 16:51:15 -0700122 kIceCandidatePairMax
123};
124
buildbot@webrtc.org1567b8c2014-05-08 19:54:16 +0000125} // namespace webrtc
126
Guo-wei Shieh3d564c12015-08-19 16:51:15 -0700127#endif // TALK_APP_WEBRTC_UMAMETRICS_H_