Source code for src.data_acquisition.event_manager.random_timeout_event_manager
import random
from logging import Logger
from typing import Optional
from ..events import TimeoutEvent
from ..gui import Gui
from .simple_event_manager import SimpleEventManager
[docs]
class RandomTimeoutEventManager(SimpleEventManager[None]):
def __init__(
self,
*,
gui: Gui,
timeout_min_millis: int,
timeout_max_millis: int,
logger: Optional[Logger] = None,
) -> None:
self._gui = gui
self._timeout_min_millis = timeout_min_millis
self._timeout_max_millis = timeout_max_millis
random_timeout_event_millis = random.randint(
timeout_min_millis, timeout_max_millis
)
self._random_timeout_event = TimeoutEvent(
gui=gui,
timeout_millis=random_timeout_event_millis,
logger=logger,
)
super().__init__(events=[self._random_timeout_event], logger=logger)
def _setup(self) -> None:
self._random_timeout_event.subscribe(lambda: self._trigger_callbacks(None))
def _clone(self) -> "RandomTimeoutEventManager":
return RandomTimeoutEventManager(
gui=self._gui,
timeout_min_millis=self._timeout_min_millis,
timeout_max_millis=self._timeout_max_millis,
)