12 #ifndef hifi_ConnectionStats_h
13 #define hifi_ConnectionStats_h
21 class ConnectionStats {
32 using microseconds = std::chrono::microseconds;
33 using Events = std::array<int, NumEvents>;
35 microseconds startTime;
42 uint32_t sentPackets { 0 };
43 uint32_t receivedPackets { 0 };
44 uint32_t retransmittedPackets { 0 };
45 uint32_t duplicatePackets { 0 };
47 uint64_t sentUtilBytes { 0 };
48 uint64_t receivedUtilBytes { 0 };
49 uint64_t retransmittedUtilBytes { 0 };
50 uint64_t duplicateUtilBytes { 0 };
52 uint64_t sentBytes { 0 };
53 uint64_t receivedBytes { 0 };
54 uint64_t retransmittedBytes { 0 };
55 uint64_t duplicateBytes { 0 };
57 uint32_t sentUnreliablePackets { 0 };
58 uint32_t receivedUnreliablePackets { 0 };
59 uint64_t sentUnreliableUtilBytes { 0 };
60 uint64_t receivedUnreliableUtilBytes { 0 };
61 uint64_t sentUnreliableBytes { 0 };
62 uint64_t receivedUnreliableBytes { 0 };
66 int receiveRate { 0 };
67 int estimatedBandwith { 0 };
69 int congestionWindowSize { 0 };
70 int packetSendPeriod { 0 };
73 Stats() { events.fill(0); }
80 void record(Stats::Event event);
82 void recordSentACK(
int size);
83 void recordReceivedACK(
int size);
85 void recordSentPackets(
int payload,
int total);
86 void recordReceivedPackets(
int payload,
int total);
88 void recordRetransmittedPackets(
int payload,
int total);
89 void recordDuplicatePackets(
int payload,
int total);
91 void recordUnreliableSentPackets(
int payload,
int total);
92 void recordUnreliableReceivedPackets(
int payload,
int total);
94 void recordCongestionWindowSize(
int sample);
95 void recordPacketSendPeriod(
int sample);
104 QDebug& operator<<(QDebug&& debug,
const udt::ConnectionStats::Stats& stats);