Source code for leads.dt.odometer

from threading import Lock as _Lock
from typing import override as _override

from leads.dt.device import Device


[docs] class Odometer(Device): def __init__(self) -> None: super().__init__() self._mileage: float = 0
[docs] @_override def write(self, payload: float) -> None: self._mileage += payload
[docs] @_override def read(self) -> float: return self._mileage
[docs] class ConcurrentOdometer(Odometer): def __init__(self) -> None: super().__init__() self._lock: _Lock = _Lock()
[docs] @_override def write(self, payload: float) -> None: self._lock.acquire() try: super().write(payload) finally: self._lock.release()