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