Rework radar system
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
"""Exclusive pipeline pause held until a synchronous or asynchronous operation ends."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable
|
||||
|
||||
|
||||
class PipelinePause:
|
||||
"""Suspend acquisition and restart intent; an explicit Stop cancels resumption."""
|
||||
|
||||
def __init__(self, valid: Callable[[], bool], release: Callable[[bool], None]) -> None:
|
||||
self._valid = valid
|
||||
self._release = release
|
||||
self._finished = False
|
||||
|
||||
@property
|
||||
def valid(self) -> bool:
|
||||
return not self._finished and self._valid()
|
||||
|
||||
def finish(self, *, resume: bool = True) -> None:
|
||||
if self._finished:
|
||||
return
|
||||
should_resume = resume and self.valid
|
||||
self._finished = True
|
||||
self._release(should_resume)
|
||||
|
||||
def __enter__(self) -> PipelinePause:
|
||||
return self
|
||||
|
||||
def __exit__(self, *_exc: object) -> None:
|
||||
self.finish()
|
||||
Reference in New Issue
Block a user