#!/usr/bin/python3 import signal import os from modules.scheduling.scheduler import AuraScheduler from modules.communication.liquidsoap.communicator import LiquidSoapCommunicator from modules.communication.redis.adapter import ServerRedisAdapter from modules.web.routes import Routes from libraries.base.config import AuraConfig from libraries.base.logger import AuraLogger class Aura(AuraConfig, AuraLogger): server = None messenger = None controller = None # ------------------------------------------------------------------------------------------ # def __init__(self): super(Aura, self).__init__() server = object # self.controller = AuraController(self.config) # create scheduler and ls_communicator self.liquidsoapcommunicator = LiquidSoapCommunicator(self.config) self.scheduler = AuraScheduler(self.config) # give both a reference of each other self.liquidsoapcommunicator.scheduler = self.scheduler self.scheduler.liquidsoapcommunicator = self.liquidsoapcommunicator # create the redis adapter self.messenger = ServerRedisAdapter() self.messenger.config = self.config self.messenger.scheduler = self.scheduler self.messenger.liquidsoapcommunicator = self.liquidsoapcommunicator def receive_signal(signum, stack): print("received signal") server.reload() signal.signal(signal.SIGUSR1, receive_signal) def join_comm(self): # start listener thread self.messenger.start() def start_web_service(self): try: Routes() except OSError as e: self.messenger.halt() self.logger.critical("AuraEngine already running? Exception: " + e.strerror + ". Exiting...") os._exit(0) # # ## ## ## ## ## # # # # ENTRY FUNCTION # # # # ## ## ## ## ## # # def main(): aura = Aura() aura.join_comm() aura.start_web_service() # # ## ## ## ## ## ## # # # # End ENTRY FUNCTION # # # # ## ## ## ## ## ## # # if __name__ == "__main__": main()