dashboard/app/state.py

22 lines
533 B
Python

import time
from collections import deque
from app.sample import Sample
class HistoryStore:
def __init__(self, maxlen: int) -> None:
self._buf: deque[Sample] = deque(maxlen=maxlen)
def record(self, sample: Sample) -> None:
sample.ts = time.time()
self._buf.append(sample)
def snapshot(self) -> list[Sample]:
return list(self._buf)
def latest(self) -> Sample | None:
return self._buf[-1] if self._buf else None
def __len__(self) -> int:
return len(self._buf)