feat(gateway): monotonic clock helper (1879)

This commit is contained in:
PedroHMCosme
2026-07-13 18:39:23 -03:00
parent 55f67216ee
commit d6cb1e492d
4 changed files with 27 additions and 0 deletions

View File

View File

@@ -0,0 +1,19 @@
import time
class MonotonicClock:
"""Single monotonic reference for latency/timeout math (1879 §2).
Wall-clock (`now_wall`) is only for human-facing timestamps; all elapsed/
timeout math must use `elapsed()` so NTP re-sync can't produce negatives.
"""
def __init__(self):
self._start = time.monotonic()
def elapsed(self) -> float:
return time.monotonic() - self._start
@staticmethod
def now_wall() -> float:
return time.time()

View File

View File

@@ -0,0 +1,8 @@
from ingestor.connection.clock import MonotonicClock
def test_elapsed_is_non_negative_and_monotonic():
clk = MonotonicClock()
a = clk.elapsed()
b = clk.elapsed()
assert a >= 0 and b >= a # never negative even if wall clock jumps back