78 lines
2.8 KiB
C++
78 lines
2.8 KiB
C++
/*
|
|
* Copyright 2020 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef PC_USAGE_PATTERN_H_
|
|
#define PC_USAGE_PATTERN_H_
|
|
|
|
#include "api/peer_connection_interface.h"
|
|
|
|
namespace webrtc {
|
|
|
|
class PeerConnectionObserver;
|
|
|
|
// A bit in the usage pattern is registered when its defining event occurs
|
|
// at least once.
|
|
enum class UsageEvent : int {
|
|
TURN_SERVER_ADDED = 0x01,
|
|
STUN_SERVER_ADDED = 0x02,
|
|
DATA_ADDED = 0x04,
|
|
AUDIO_ADDED = 0x08,
|
|
VIDEO_ADDED = 0x10,
|
|
// `SetLocalDescription` returns successfully.
|
|
SET_LOCAL_DESCRIPTION_SUCCEEDED = 0x20,
|
|
// `SetRemoteDescription` returns successfully.
|
|
SET_REMOTE_DESCRIPTION_SUCCEEDED = 0x40,
|
|
// A local candidate (with type host, server-reflexive, or relay) is
|
|
// collected.
|
|
CANDIDATE_COLLECTED = 0x80,
|
|
// A remote candidate is successfully added via `AddIceCandidate`.
|
|
ADD_ICE_CANDIDATE_SUCCEEDED = 0x100,
|
|
ICE_STATE_CONNECTED = 0x200,
|
|
CLOSE_CALLED = 0x400,
|
|
// A local candidate with private IP is collected.
|
|
PRIVATE_CANDIDATE_COLLECTED = 0x800,
|
|
// A remote candidate with private IP is added, either via AddiceCandidate
|
|
// or from the remote description.
|
|
REMOTE_PRIVATE_CANDIDATE_ADDED = 0x1000,
|
|
// A local mDNS candidate is collected.
|
|
MDNS_CANDIDATE_COLLECTED = 0x2000,
|
|
// A remote mDNS candidate is added, either via AddIceCandidate or from the
|
|
// remote description.
|
|
REMOTE_MDNS_CANDIDATE_ADDED = 0x4000,
|
|
// A local candidate with IPv6 address is collected.
|
|
IPV6_CANDIDATE_COLLECTED = 0x8000,
|
|
// A remote candidate with IPv6 address is added, either via AddIceCandidate
|
|
// or from the remote description.
|
|
REMOTE_IPV6_CANDIDATE_ADDED = 0x10000,
|
|
// A remote candidate (with type host, server-reflexive, or relay) is
|
|
// successfully added, either via AddIceCandidate or from the remote
|
|
// description.
|
|
REMOTE_CANDIDATE_ADDED = 0x20000,
|
|
// An explicit host-host candidate pair is selected, i.e. both the local and
|
|
// the remote candidates have the host type. This does not include candidate
|
|
// pairs formed with equivalent prflx remote candidates, e.g. a host-prflx
|
|
// pair where the prflx candidate has the same base as a host candidate of
|
|
// the remote peer.
|
|
DIRECT_CONNECTION_SELECTED = 0x40000,
|
|
MAX_VALUE = 0x80000,
|
|
};
|
|
|
|
class UsagePattern {
|
|
public:
|
|
void NoteUsageEvent(UsageEvent event);
|
|
void ReportUsagePattern(PeerConnectionObserver* observer) const;
|
|
|
|
private:
|
|
int usage_event_accumulator_ = 0;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
#endif // PC_USAGE_PATTERN_H_
|