Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
latency_tracker.h
Go to the documentation of this file.
1
5
6#ifndef LATENCY_TRACKER_H
7#define LATENCY_TRACKER_H
8
9#include <QList>
10#include <QMetaType>
11#include <array>
12
22{
23public:
24 static constexpr int WindowSize = 64;
25
26 struct Stats
27 {
28 qint64 lastMs = 0;
29 qint64 medianMs = 0;
30 qint64 p95Ms = 0;
31 qint64 maxMs = 0;
32 int sampleCount = 0;
33 };
34
35 void addSample(qint64 ms);
36 Stats stats() const;
37
39 QList<qint64> recentSamples() const;
40
41 void clear();
42
43private:
44 std::array<qint64, WindowSize> samples{};
45 int head = 0;
46 int count = 0;
47};
48
49Q_DECLARE_METATYPE(LatencyTracker::Stats)
50
51#endif
Fixed-capacity rolling window of network round-trip time samples.
Definition latency_tracker.h:22
Stats stats() const
Definition latency_tracker.cpp:26
int count
number of valid samples, capped at WindowSize
Definition latency_tracker.h:46
void clear()
Definition latency_tracker.cpp:55
std::array< qint64, WindowSize > samples
Definition latency_tracker.h:44
void addSample(qint64 ms)
Definition latency_tracker.cpp:6
int head
index where the next sample will be written
Definition latency_tracker.h:45
QList< qint64 > recentSamples() const
Snapshot of the current window in chronological order (oldest first).
Definition latency_tracker.cpp:15
static constexpr int WindowSize
Definition latency_tracker.h:24
Definition latency_tracker.h:27
qint64 medianMs
median over the current window
Definition latency_tracker.h:29
qint64 lastMs
most recently added sample
Definition latency_tracker.h:28
int sampleCount
number of samples currently in the window
Definition latency_tracker.h:32
qint64 maxMs
maximum over the current window
Definition latency_tracker.h:31
qint64 p95Ms
95th percentile over the current window
Definition latency_tracker.h:30