Skip to content
Snippets Groups Projects
Commit 50558148 authored by David Trattnig's avatar David Trattnig
Browse files

refactor: make scheduler bootable, remove db init

parent a856599e
No related branches found
No related tags found
1 merge request!35ORM-less scheduling
......@@ -150,6 +150,7 @@ class EngineEventDispatcher:
from aura_engine.scheduling.scheduler import AuraScheduler
self.scheduler = AuraScheduler(self.engine)
self.scheduler.boot()
self.call_event("on_initialized", None)
def on_boot(self):
......
......@@ -21,10 +21,16 @@
The scheduler.
"""
from __future__ import annotations
import logging
import threading
import time
import aura_engine
import aura_engine.scheduling.api as api
import aura_engine.scheduling.timetable as timetable
import aura_engine.scheduling.utils as utils
from aura_engine.base.config import AuraConfig
from aura_engine.base.utils import SimpleUtil as SU
from aura_engine.control import EngineExecutor
......@@ -32,9 +38,6 @@ from aura_engine.core.channels import LoadSourceException
from aura_engine.engine import Engine, Player
from aura_engine.resources import ResourceClass, ResourceUtil
from aura_engine.scheduling.domain import PlaylistItem
from aura_engine.scheduling.models import AuraDatabaseModel
from aura_engine.scheduling.timetable import TimetableService
from aura_engine.scheduling.utils import TimetableRenderer
class NoActiveTimeslotException(Exception):
......@@ -55,37 +58,41 @@ class AuraScheduler(threading.Thread):
"""
config: AuraConfig = None
logger = None
engine: Engine = None
exit_event: threading.Event = None
timetable_renderer: TimetableRenderer = None
timetable: TimetableService = None
message_timer = []
is_initialized: bool = None
is_engine_ready: bool = None
def __init__(self, engine):
config: AuraConfig
logger: logging.Logger
engine: Engine
timetable: timetable.TimetableService
timetable_renderer: utils.TimetableRenderer
exit_event: threading.Event
is_initialized: bool
is_engine_ready: bool
def __init__(self, engine: aura_engine):
self.config = AuraConfig.config()
self.logger = logging.getLogger("engine")
self.timetable = TimetableService()
self.timetable_renderer = TimetableRenderer(self)
self.timetable = timetable.TimetableService(self.config.get("cache_dir"))
self.timetable_renderer = utils.TimetableRenderer(self)
self.engine = engine
self.engine.scheduler = self
self.is_soundsytem_init = False
# Scheduler Initialization
AuraDatabaseModel.init_database()
self.exit_event = None
self.is_initialized = False
self.is_engine_ready = False
def boot(self):
"""
Start the scheduler in a thread.
"""
# Init scheduling thread
threading.Thread.__init__(self)
self.exit_event = threading.Event()
self.start()
def run(self):
"""Execute the scheduler.
"""
Execute the scheduler.
Called when thread is started via `start()`. It does the following:
......@@ -107,7 +114,7 @@ class AuraScheduler(threading.Thread):
self.logger.info(SU.cyan(msg))
# Load some stuff from the API in any case
self.timetable.refresh()
self.timetable.refresh(api.ApiFetcher())
# Queue only when the engine is ready to play
if self.is_initialized:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment