Files
platform-external-webrtc/talk/app/webrtc/umametrics.h
guoweis 4fe3c9a773 Change WebRTC SslCipher to be exposed as number only.
This makes the SSL exposed as uint16_t which is the IANA value. GetRfcSslCipherName is introduced to handle the conversion to names from ID. IANA value will be used for UMA reporting. Names will still be used for WebRTC stats reporting.

For SRTP, currently it's still string internally but is reported as IANA number.

This is used by the ongoing CL https://codereview.chromium.org/1335023002.

BUG=523033

Review URL: https://codereview.webrtc.org/1337673002

Cr-Commit-Position: refs/heads/master@{#10124}
2015-10-01 01:49:17 +00:00

129 lines
5.1 KiB
C++

/*
* libjingle
* Copyright 2014 Google Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
// This file contains enums related to IPv4/IPv6 metrics.
#ifndef TALK_APP_WEBRTC_UMAMETRICS_H_
#define TALK_APP_WEBRTC_UMAMETRICS_H_
namespace webrtc {
// Used to specify which enum counter type we're incrementing in
// MetricsObserverInterface::IncrementEnumCounter.
enum PeerConnectionEnumCounterType {
kEnumCounterAddressFamily,
// For the next 2 counters, we track them separately based on the "first hop"
// protocol used by the local candidate. "First hop" means the local candidate
// type in the case of non-TURN candidates, and the protocol used to connect
// to the TURN server in the case of TURN candidates.
kEnumCounterIceCandidatePairTypeUdp,
kEnumCounterIceCandidatePairTypeTcp,
kEnumCounterAudioSrtpCipher,
kEnumCounterAudioSslCipher,
kEnumCounterVideoSrtpCipher,
kEnumCounterVideoSslCipher,
kEnumCounterDataSrtpCipher,
kEnumCounterDataSslCipher,
kPeerConnectionEnumCounterMax
};
// Currently this contains information related to WebRTC network/transport
// information.
// The difference between PeerConnectionEnumCounter and
// PeerConnectionMetricsName is that the "EnumCounter" is only counting the
// occurrences of events, while "Name" has a value associated with it which is
// used to form a histogram.
// This enum is backed by Chromium's histograms.xml,
// chromium/src/tools/metrics/histograms/histograms.xml
// Existing values cannot be re-ordered and new enums must be added
// before kBoundary.
enum PeerConnectionAddressFamilyCounter {
kPeerConnection_IPv4,
kPeerConnection_IPv6,
kBestConnections_IPv4,
kBestConnections_IPv6,
kPeerConnectionAddressFamilyCounter_Max,
};
// TODO(guoweis): Keep previous name here until all references are renamed.
#define kBoundary kPeerConnectionAddressFamilyCounter_Max
// TODO(guoweis): Keep previous name here until all references are renamed.
typedef PeerConnectionAddressFamilyCounter PeerConnectionUMAMetricsCounter;
// This enum defines types for UMA samples, which will have a range.
enum PeerConnectionMetricsName {
kNetworkInterfaces_IPv4, // Number of IPv4 interfaces.
kNetworkInterfaces_IPv6, // Number of IPv6 interfaces.
kTimeToConnect, // In milliseconds.
kLocalCandidates_IPv4, // Number of IPv4 local candidates.
kLocalCandidates_IPv6, // Number of IPv6 local candidates.
kPeerConnectionMetricsName_Max
};
// TODO(guoweis): Keep previous name here until all references are renamed.
typedef PeerConnectionMetricsName PeerConnectionUMAMetricsName;
// The IceCandidatePairType has the format of
// <local_candidate_type>_<remote_candidate_type>. It is recorded based on the
// type of candidate pair used when the PeerConnection first goes to a completed
// state. When BUNDLE is enabled, only the first transport gets recorded.
enum IceCandidatePairType {
// HostHost is deprecated. It was replaced with the set of types at the bottom
// to report private or public host IP address.
kIceCandidatePairHostHost,
kIceCandidatePairHostSrflx,
kIceCandidatePairHostRelay,
kIceCandidatePairHostPrflx,
kIceCandidatePairSrflxHost,
kIceCandidatePairSrflxSrflx,
kIceCandidatePairSrflxRelay,
kIceCandidatePairSrflxPrflx,
kIceCandidatePairRelayHost,
kIceCandidatePairRelaySrflx,
kIceCandidatePairRelayRelay,
kIceCandidatePairRelayPrflx,
kIceCandidatePairPrflxHost,
kIceCandidatePairPrflxSrflx,
kIceCandidatePairPrflxRelay,
// The following 4 types tell whether local and remote hosts have private or
// public IP addresses.
kIceCandidatePairHostPrivateHostPrivate,
kIceCandidatePairHostPrivateHostPublic,
kIceCandidatePairHostPublicHostPrivate,
kIceCandidatePairHostPublicHostPublic,
kIceCandidatePairMax
};
} // namespace webrtc
#endif // TALK_APP_WEBRTC_UMAMETRICS_H_