diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /third_party/libwebrtc/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h')
-rw-r--r-- | third_party/libwebrtc/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/third_party/libwebrtc/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h b/third_party/libwebrtc/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h new file mode 100644 index 0000000000..e72d999cff --- /dev/null +++ b/third_party/libwebrtc/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2017 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 LOGGING_RTC_EVENT_LOG_EVENTS_RTC_EVENT_ICE_CANDIDATE_PAIR_CONFIG_H_ +#define LOGGING_RTC_EVENT_LOG_EVENTS_RTC_EVENT_ICE_CANDIDATE_PAIR_CONFIG_H_ + +#include <stdint.h> + +#include <memory> +#include <string> +#include <vector> + +#include "absl/strings/string_view.h" +#include "api/rtc_event_log/rtc_event.h" +#include "api/units/timestamp.h" +#include "logging/rtc_event_log/events/rtc_event_field_encoding_parser.h" + +namespace webrtc { + +enum class IceCandidatePairConfigType { + kAdded, + kUpdated, + kDestroyed, + kSelected, + kNumValues, +}; + +// TODO(qingsi): Change the names of candidate types to "host", "srflx", "prflx" +// and "relay" after the naming is spec-compliant in the signaling part +enum class IceCandidateType { + kUnknown, + kLocal, + kStun, + kPrflx, + kRelay, + kNumValues, +}; + +enum class IceCandidatePairProtocol { + kUnknown, + kUdp, + kTcp, + kSsltcp, + kTls, + kNumValues, +}; + +enum class IceCandidatePairAddressFamily { + kUnknown, + kIpv4, + kIpv6, + kNumValues, +}; + +enum class IceCandidateNetworkType { + kUnknown, + kEthernet, + kLoopback, + kWifi, + kVpn, + kCellular, + kNumValues, +}; + +struct LoggedIceCandidatePairConfig { + int64_t log_time_us() const { return timestamp.us(); } + int64_t log_time_ms() const { return timestamp.ms(); } + Timestamp log_time() const { return timestamp; } + + Timestamp timestamp = Timestamp::MinusInfinity(); + IceCandidatePairConfigType type; + uint32_t candidate_pair_id; + IceCandidateType local_candidate_type; + IceCandidatePairProtocol local_relay_protocol; + IceCandidateNetworkType local_network_type; + IceCandidatePairAddressFamily local_address_family; + IceCandidateType remote_candidate_type; + IceCandidatePairAddressFamily remote_address_family; + IceCandidatePairProtocol candidate_pair_protocol; +}; + +class IceCandidatePairDescription { + public: + IceCandidatePairDescription(); + explicit IceCandidatePairDescription( + const IceCandidatePairDescription& other); + + ~IceCandidatePairDescription(); + + IceCandidateType local_candidate_type; + IceCandidatePairProtocol local_relay_protocol; + IceCandidateNetworkType local_network_type; + IceCandidatePairAddressFamily local_address_family; + IceCandidateType remote_candidate_type; + IceCandidatePairAddressFamily remote_address_family; + IceCandidatePairProtocol candidate_pair_protocol; +}; + +class RtcEventIceCandidatePairConfig final : public RtcEvent { + public: + static constexpr Type kType = Type::IceCandidatePairConfig; + + RtcEventIceCandidatePairConfig( + IceCandidatePairConfigType type, + uint32_t candidate_pair_id, + const IceCandidatePairDescription& candidate_pair_desc); + + ~RtcEventIceCandidatePairConfig() override; + + Type GetType() const override { return kType; } + // N.B. An ICE config event is not considered an RtcEventLog config event. + bool IsConfigEvent() const override { return false; } + + std::unique_ptr<RtcEventIceCandidatePairConfig> Copy() const; + + IceCandidatePairConfigType type() const { return type_; } + uint32_t candidate_pair_id() const { return candidate_pair_id_; } + const IceCandidatePairDescription& candidate_pair_desc() const { + return candidate_pair_desc_; + } + + static std::string Encode(rtc::ArrayView<const RtcEvent*> batch) { + // TODO(terelius): Implement + return ""; + } + + static RtcEventLogParseStatus Parse( + absl::string_view encoded_bytes, + bool batched, + std::vector<LoggedIceCandidatePairConfig>& output) { + // TODO(terelius): Implement + return RtcEventLogParseStatus::Error("Not Implemented", __FILE__, __LINE__); + } + + private: + RtcEventIceCandidatePairConfig(const RtcEventIceCandidatePairConfig& other); + + const IceCandidatePairConfigType type_; + const uint32_t candidate_pair_id_; + const IceCandidatePairDescription candidate_pair_desc_; +}; + +} // namespace webrtc + +#endif // LOGGING_RTC_EVENT_LOG_EVENTS_RTC_EVENT_ICE_CANDIDATE_PAIR_CONFIG_H_ |