/* * Copyright 2024 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_TEST_NETWORK_EMULATION_ECN_MARKING_COUNTER_H_ #define API_TEST_NETWORK_EMULATION_ECN_MARKING_COUNTER_H_ #include "api/transport/ecn_marking.h" namespace webrtc { // Counts Explicit Congestion Notifaction marks in IP packets. // https://www.rfc-editor.org/rfc/rfc9331.html class EcnMarkingCounter { public: // Number of packets without ECT explicitly set sent through the network. int not_ect() const { return not_ect_; } // Number of packets with ECT(1) sent through the network. int ect_0() const { return ect_0_; } // Number of packets with ECT(1) sent through the network. int ect_1() const { return ect_1_; } // Number of packets the network has marked as CE (congestion experienced). int ce() const { return ce_; } void Add(EcnMarking ecn); EcnMarkingCounter& operator+=(const EcnMarkingCounter& counter); private: int not_ect_ = 0; int ect_0_ = 0; // Not used by WebRTC or L4S. int ect_1_ = 0; int ce_ = 0; }; } // namespace webrtc #endif // API_TEST_NETWORK_EMULATION_ECN_MARKING_COUNTER_H_