Publish rtc event log api and default factory for it in api/
Bug: webrtc:10206 Change-Id: I34194ddb6fd2b0a3d7c553fadc9ddc1ea9740da0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137500 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28023}
This commit is contained in:
committed by
Commit Bot
parent
23aff9b737
commit
b32f2c7f57
75
api/rtc_event_log/rtc_event.h
Normal file
75
api/rtc_event_log/rtc_event.h
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* 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 API_RTC_EVENT_LOG_RTC_EVENT_H_
|
||||
#define API_RTC_EVENT_LOG_RTC_EVENT_H_
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// This class allows us to store unencoded RTC events. Subclasses of this class
|
||||
// store the actual information. This allows us to keep all unencoded events,
|
||||
// even when their type and associated information differ, in the same buffer.
|
||||
// Additionally, it prevents dependency leaking - a module that only logs
|
||||
// events of type RtcEvent_A doesn't need to know about anything associated
|
||||
// with events of type RtcEvent_B.
|
||||
class RtcEvent {
|
||||
public:
|
||||
// Subclasses of this class have to associate themselves with a unique value
|
||||
// of Type. This leaks the information of existing subclasses into the
|
||||
// superclass, but the *actual* information - rtclog::StreamConfig, etc. -
|
||||
// is kept separate.
|
||||
enum class Type {
|
||||
AlrStateEvent,
|
||||
RouteChangeEvent,
|
||||
AudioNetworkAdaptation,
|
||||
AudioPlayout,
|
||||
AudioReceiveStreamConfig,
|
||||
AudioSendStreamConfig,
|
||||
BweUpdateDelayBased,
|
||||
BweUpdateLossBased,
|
||||
DtlsTransportState,
|
||||
DtlsWritableState,
|
||||
IceCandidatePairConfig,
|
||||
IceCandidatePairEvent,
|
||||
ProbeClusterCreated,
|
||||
ProbeResultFailure,
|
||||
ProbeResultSuccess,
|
||||
RtcpPacketIncoming,
|
||||
RtcpPacketOutgoing,
|
||||
RtpPacketIncoming,
|
||||
RtpPacketOutgoing,
|
||||
VideoReceiveStreamConfig,
|
||||
VideoSendStreamConfig,
|
||||
GenericPacketSent,
|
||||
GenericPacketReceived,
|
||||
GenericAckReceived
|
||||
};
|
||||
|
||||
RtcEvent();
|
||||
virtual ~RtcEvent() = default;
|
||||
|
||||
virtual Type GetType() const = 0;
|
||||
|
||||
virtual bool IsConfigEvent() const = 0;
|
||||
|
||||
int64_t timestamp_ms() const { return timestamp_us_ / 1000; }
|
||||
int64_t timestamp_us() const { return timestamp_us_; }
|
||||
|
||||
protected:
|
||||
explicit RtcEvent(int64_t timestamp_us) : timestamp_us_(timestamp_us) {}
|
||||
|
||||
const int64_t timestamp_us_;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // API_RTC_EVENT_LOG_RTC_EVENT_H_
|
||||
Reference in New Issue
Block a user