From 09e044428d7e5005841729ca20c3311a09c5ad9d Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Sat, 31 Oct 2020 21:31:26 +0100 Subject: [PATCH] Event for end of timeslot. #38 --- src/core/events.py | 13 +++++++++++++ src/scheduling/scheduler.py | 11 ++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/core/events.py b/src/core/events.py index 2a2dcb87..8652ae4d 100644 --- a/src/core/events.py +++ b/src/core/events.py @@ -204,6 +204,19 @@ class EngineEventDispatcher(): thread.start() + def on_timeslot_end(self, timeslot): + """ + Called when a timeslot ends. + """ + def func(self, timeslot): + self.logger.debug("on_timeslot_end(..)") + self.fallback_manager.on_timeslot_end(timeslot) + self.call_event("on_timeslot_end", timeslot) + + thread = Thread(target = func, args = (self, timeslot)) + thread.start() + + def on_play(self, entry): """ Event Handler which is called by the engine when some entry is actually playing. diff --git a/src/scheduling/scheduler.py b/src/scheduling/scheduler.py index 198524e8..ebabe854 100644 --- a/src/scheduling/scheduler.py +++ b/src/scheduling/scheduler.py @@ -52,7 +52,7 @@ class EntryQueueState(Enum): class TimeslotCommand(EngineExecutor): """ - Command for triggering start of timeslot events. + Command for triggering start and end of timeslot events. """ engine = None @@ -68,8 +68,13 @@ class TimeslotCommand(EngineExecutor): def do_start_timeslot(timeslot): self.logger.info(SU.cyan(f"=== on_timeslot_start('{timeslot}') ===")) self.engine.event_dispatcher.on_timeslot_start(timeslot) - - super().__init__("TIMESLOT", None, timeslot.start_unix, do_start_timeslot, timeslot) + + def do_end_timeslot(timeslot): + self.logger.info(SU.cyan(f"=== on_timeslot_end('{timeslot}') ===")) + self.engine.event_dispatcher.on_timeslot_end(timeslot) + + child_timer = EngineExecutor("TIMESLOT", None, timeslot.end_unix, do_end_timeslot, timeslot) + super().__init__("TIMESLOT", child_timer, timeslot.start_unix, do_start_timeslot, timeslot) -- GitLab