/*
 *  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_
