Source code for ska_tango_base.callback_scheduler._mixin

from ..ska_device import SKADevice
from ._scheduler import CallbackScheduler


[docs] class CallbackSchedulerMixin(SKADevice): """Mix-in to provide CallbackScheduler."""
[docs] def init_device(self) -> None: """Initialise the device with a scheduler.""" super().init_device() self._callback_scheduler = self.create_callback_scheduler()
[docs] def delete_device(self) -> None: """Shutdown the device's scheduler.""" try: self._callback_scheduler.shutdown() finally: super().delete_device()
[docs] def create_callback_scheduler(self) -> CallbackScheduler: """ Create a CallbackScheduler object. Subclasses can override this to change the behaviour of the scheduler. Remember to provide a :obj:`!name` for the scheduler to aid debugging. For example, to process events on two threads :: def create_callback_scheduler(self) -> CallbackScheduler: return stb.CallbackScheduler( thread_count=2, logger=self.logger, name=f"Scheduler({self.get_name()})", ) """ return CallbackScheduler( logger=self.logger, name=f"Scheduler({self.get_name()})" )
@property def callback_scheduler(self) -> CallbackScheduler: """Return the callback scheduler.""" return self._callback_scheduler