1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- * 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,
- RemoteEstimateEvent,
- AudioNetworkAdaptation,
- AudioPlayout,
- AudioReceiveStreamConfig,
- AudioSendStreamConfig,
- BweUpdateDelayBased,
- BweUpdateLossBased,
- DtlsTransportState,
- DtlsWritableState,
- IceCandidatePairConfig,
- IceCandidatePairEvent,
- ProbeClusterCreated,
- ProbeResultFailure,
- ProbeResultSuccess,
- RtcpPacketIncoming,
- RtcpPacketOutgoing,
- RtpPacketIncoming,
- RtpPacketOutgoing,
- VideoReceiveStreamConfig,
- VideoSendStreamConfig,
- GenericPacketSent,
- GenericPacketReceived,
- GenericAckReceived,
- FrameDecoded
- };
- 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_
|