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