feat: the status bar and the exit dump report resequencing, holes and stale packets

This commit is contained in:
Martino Ferrari committed 2026-10-08 18:58:06 +02:00
1 parent d38ab3f9c9
commit fc81e661d0
5 files changed
+59 -2

No files matched your search

+15
View File
@@ -195,6 +195,21 @@ struct StreamStats {
std::atomic<bool> have_config{false};
std::atomic<std::uint64_t> holes{0}; ///< reserved invalidated spans
std::atomic<std::uint64_t> hole_slots{0}; ///< stored slots those spans cover
/// Out-of-order packets put back in order inside the reorder window: no hole was ever
/// seen for these.
std::atomic<std::uint64_t> resequenced{0};
/// Out-of-order packets delivered behind the sequence, past the window.
std::atomic<std::uint64_t> late{0};
/// Packets the client still refused outright (a duplicate, or any late packet while
/// resequencing is disabled). Counted since the beginning and displayed nowhere until
/// now, which is why an inversion had to be inferred from `packets` and `frames`
/// diverging.
std::atomic<std::uint64_t> stale{0};
/// Stored slots a late packet repaired. Declared here rather than with the backfill that
/// writes it, because the display segment below is built once and reads it from the start:
/// a reading of 0 beside a non-zero `holes` is exactly the honest answer until the
/// backfill lands.
std::atomic<std::uint64_t> backfilled{0};
};
/// What the plot is showing, which is one decision made once per frame: the bind, the