Cockatrice 2026-10-19-Development-3.1.2-beta.2
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 <QByteArray>
10#include <QList>
11#include <QMetaType>
12#include <QtGlobal>
13#include <array>
14
24{
25public:
26 static constexpr int WindowSize = 64;
27
28 struct Stats
29 {
30 qint64 lastMs = 0;
31 qint64 medianMs = 0;
32 qint64 p95Ms = 0;
33 qint64 maxMs = 0;
34 int sampleCount = 0;
35 };
36
37 void addSample(qint64 ms);
38 Stats stats() const;
39
42
43 void clear();
44
45private:
46 std::array<qint64, WindowSize> samples{};
47 int head = 0;
48 int count = 0;
49};
50
51Q_DECLARE_METATYPE(LatencyTracker::Stats)
52
53#endif
Fixed-capacity rolling window of network round-trip time samples.
Definition latency_tracker.h:24
Stats stats() const
Definition latency_tracker.cpp:29
int count
number of valid samples, capped at WindowSize
Definition latency_tracker.h:48
void clear()
Definition latency_tracker.cpp:58
std::array< qint64, WindowSize > samples
Definition latency_tracker.h:46
void addSample(qint64 ms)
Definition latency_tracker.cpp:9
int head
index where the next sample will be written
Definition latency_tracker.h:47
QList< qint64 > recentSamples() const
Snapshot of the current window in chronological order (oldest first).
Definition latency_tracker.cpp:18
static constexpr int WindowSize
Definition latency_tracker.h:26
Definition remote_connection_controller.h:20
Definition latency_tracker.h:29
qint64 medianMs
median over the current window
Definition latency_tracker.h:31
qint64 lastMs
most recently added sample
Definition latency_tracker.h:30
int sampleCount
number of samples currently in the window
Definition latency_tracker.h:34
qint64 maxMs
maximum over the current window
Definition latency_tracker.h:33
qint64 p95Ms
95th percentile over the current window
Definition latency_tracker.h:32