blob: 24c8bffb726bd6e413d8f5f2b210a8d22d6b98ef [file] [log] [blame] [edit]
/*
* 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_