From 711f09aca4e9949edcd3442169ed1597ad21198c Mon Sep 17 00:00:00 2001
From: David Trattnig <david.trattnig@o94.at>
Date: Fri, 23 Oct 2020 15:03:08 +0200
Subject: [PATCH] Updated terms. #44

---
 engine-core.py               | 24 +++++++++++----------
 modules/cli/redis/adapter.py | 10 ++++-----
 modules/plugins/monitor.py   | 42 ++++++++++++++++++------------------
 test/connection_tester.py    |  6 +++---
 test/tests.py                |  8 +++----
 5 files changed, 46 insertions(+), 44 deletions(-)

diff --git a/engine-core.py b/engine-core.py
index 23b74141..ae996997 100755
--- a/engine-core.py
+++ b/engine-core.py
@@ -52,7 +52,7 @@ class AuraEngine:
     """
     AuraEngine does the following:
 
-    1. Initialize the soundsystem and scheduler
+    1. Initialize the engine and scheduler
     2. Initialize Redis
     3. Start Liquidsoap in a separate thread which connects to the engine
 
@@ -62,7 +62,7 @@ class AuraEngine:
     server = None
     messenger = None
     controller = None
-    soundsystem = None
+    engine = None
     scheduler = None
     lqs = None
     lqs_startup = None
@@ -74,18 +74,18 @@ class AuraEngine:
         Initializes Engine Core.
         """
         self.config = config
+        AuraLogger(self.config)
+        self.logger = logging.getLogger("AuraEngine")
+        
 
 
 
     def startup(self, lqs_startup):
         """
         Starts Engine Core.
-        """
-        AuraLogger(self.config)
-        self.logger = logging.getLogger("AuraEngine")
-
+        """                
         from modules.scheduling.scheduler import AuraScheduler
-        from modules.core.engine import SoundSystem
+        from modules.core.engine import Engine
         from modules.cli.redis.adapter import ServerRedisAdapter
 
         # If Liquidsoap should be started automatically
@@ -96,13 +96,13 @@ class AuraEngine:
             AuraScheduler(self.config, None, None)
 
         # Create scheduler and Liquidsoap communicator
-        self.soundsystem = SoundSystem(self.config)
-        self.scheduler = AuraScheduler(self.config, self.soundsystem, self.on_initialized)
+        self.engine = Engine(self.config)
+        self.scheduler = AuraScheduler(self.config, self.engine, self.on_initialized)
 
         # Create the Redis adapter
         self.messenger = ServerRedisAdapter(self.config)
         self.messenger.scheduler = self.scheduler
-        self.messenger.soundsystem = self.soundsystem
+        self.messenger.engine = self.engine
 
         # And finally wait for redis message / start listener thread
         self.messenger.start()
@@ -168,6 +168,9 @@ class AuraEngine:
             self.lqs.terminate()
             self.logger.info("Terminated Liquidsoap")
 
+        if self.engine:
+            self.engine.terminate()
+                
         if self.messenger:
             self.messenger.terminate()
         
@@ -182,7 +185,6 @@ class AuraEngine:
 
 
 if __name__ == "__main__":        
-
     engine = AuraEngine()
     start_lqs = True
     lqs_cmd = False
diff --git a/modules/cli/redis/adapter.py b/modules/cli/redis/adapter.py
index 39b14af4..bd176692 100644
--- a/modules/cli/redis/adapter.py
+++ b/modules/cli/redis/adapter.py
@@ -45,7 +45,7 @@ class ServerRedisAdapter(threading.Thread, RedisMessenger):
     scheduler = None
     redisclient = None
 #    connection_tester = None
-    soundsystem = None
+    engine = None
     socket = None
     
     # ------------------------------------------------------------------------------------------ #
@@ -147,7 +147,7 @@ class ServerRedisAdapter(threading.Thread, RedisMessenger):
             self.terminate()
 
         elif item["data"] == "init_player":
-            self.execute(RedisChannel.IP_REPLY.value, self.soundsystem.init_player)
+            self.execute(RedisChannel.IP_REPLY.value, self.engine.init_player)
 
         elif item["data"] == "get_act_programme":
             self.execute(RedisChannel.GAP_REPLY.value, self.scheduler.get_act_programme_as_string)
@@ -155,8 +155,8 @@ class ServerRedisAdapter(threading.Thread, RedisMessenger):
         elif item["data"] == "get_status":
             def get_status_string():
                 status = "No monitoring plugin available!"
-                if "monitor" in self.soundsystem.plugins:
-                    status = self.soundsystem.plugins["monitor"].get_status()
+                if "monitor" in self.engine.plugins:
+                    status = self.engine.plugins["monitor"].get_status()
                 return json.dumps(status)
 
             self.execute(RedisChannel.GS_REPLY.value, get_status_string)
@@ -179,7 +179,7 @@ class ServerRedisAdapter(threading.Thread, RedisMessenger):
 
         elif item["data"].find("on_play") >= 0:
             source = item["data"].split("on_play ")[1]
-            self.execute(RedisChannel.TS_REPLY.value, self.scheduler.soundsystem.on_play, source)
+            self.execute(RedisChannel.TS_REPLY.value, self.scheduler.engine.player.on_play, source)
 
         elif item["data"] == "recreate_db":
             self.execute(RedisChannel.RDB_REPLY.value, self.scheduler.recreate_database)
diff --git a/modules/plugins/monitor.py b/modules/plugins/monitor.py
index 8886c99b..2be55884 100644
--- a/modules/plugins/monitor.py
+++ b/modules/plugins/monitor.py
@@ -60,7 +60,7 @@ class AuraMonitor:
 
     """
     logger = None
-    soundsystem = None
+    engine = None
     mailer = None
     status = None
     already_invalid = None
@@ -73,17 +73,17 @@ class AuraMonitor:
     heartbeat_running = None
 
 
-    def __init__(self, config, soundsystem):
+    def __init__(self, config, engine):
         """
         Initialize Monitoring
         """
         self.logger = logging.getLogger("AuraEngine")
         self.config = config
-        self.soundsystem = soundsystem
+        self.engine = engine
         self.mailer = AuraMailer(self.config)
         self.status = dict()
         self.status["engine"] = dict()
-        self.status["soundsystem"] = dict()
+        self.status["lqs"] = dict()
         self.status["redis"] = dict()
         self.status["api"] = dict()
         self.status["api"]["steering"] = dict()
@@ -92,7 +92,7 @@ class AuraMonitor:
         self.already_invalid = False
 
         # Register as an engine plugin
-        self.soundsystem.plugins["monitor"] = self
+        self.engine.plugins["monitor"] = self
 
         # Heartbeat settings
         self.heartbeat_running = False
@@ -169,8 +169,8 @@ class AuraMonitor:
             self.update_status()
             
         try:
-            if self.status["soundsystem"]["active"] \
-                and self.status["soundsystem"]["mixer"]["in_filesystem_0"] \
+            if self.status["lqs"]["active"] \
+                and self.status["lqs"]["mixer"]["in_filesystem_0"] \
                 and self.status["redis"]["active"] \
                 and self.status["audio_source"]["exists"]:
 
@@ -218,13 +218,13 @@ class AuraMonitor:
         """
         self.status["engine"]["version"] = meta.__version__
 
-        self.soundsystem.enable_transaction(self.soundsystem.client)
-        self.status["soundsystem"]["version"]   = self.soundsystem.version()
-        self.status["soundsystem"]["uptime"]    = self.soundsystem.uptime()
-        self.status["soundsystem"]["io"]        = self.get_io_state()
-        self.status["soundsystem"]["mixer"]     = self.soundsystem.mixer_status()
-        #self.status["soundsystem"]["recorder"] = self.soundsystem.get_recorder_status()
-        self.soundsystem.disable_transaction(self.soundsystem.client)
+        self.engine.player.connector.enable_transaction()
+        self.status["lqs"]["version"]   = self.engine.version()
+        self.status["lqs"]["uptime"]    = self.engine.uptime()
+        self.status["lqs"]["io"]        = self.get_io_state()
+        self.status["lqs"]["mixer"]     = self.engine.player.mixer.mixer_status()
+        self.status["lqs"]["mixer_fallback"] = self.engine.player.mixer_fallback.mixer_status()
+        self.engine.player.connector.disable_transaction()
     
         self.status["api"]["steering"]["url"]       = self.config.get("api_steering_status")
         self.status["api"]["steering"]["available"] = self.validate_url_connection(self.config.get("api_steering_status"))
@@ -243,9 +243,9 @@ class AuraMonitor:
         """
         Refreshes the vital status info which are required for the engine to survive.
         """
-        self.soundsystem.enable_transaction(self.soundsystem.client)
-        self.status["soundsystem"]["active"]  = self.soundsystem.is_active()
-        self.soundsystem.disable_transaction(self.soundsystem.client)
+        self.engine.player.connector.enable_transaction()
+        self.status["lqs"]["active"]  = self.engine.is_active()
+        self.engine.player.connector.disable_transaction()
 
         self.status["redis"]["active"] = self.validate_redis_connection()
         self.status["audio_source"] = self.validate_directory(self.config.get("audio_source_folder"))
@@ -274,7 +274,7 @@ class AuraMonitor:
                     "OK - Engine turned back into some HEALTHY STATE!", \
                     "Things seem fine again at '%s':\n\n%s" % (self.engine_id, status))
                 # Route call of event via event dispatcher to provide ability for additional hooks
-                self.soundsystem.event_dispatcher.on_resurrect(status)                    
+                self.engine.event_dispatcher.on_resurrect(status)                    
         else:
             # Engine turned into invalid state
             if not self.already_invalid:
@@ -285,7 +285,7 @@ class AuraMonitor:
                     "ERROR - Engine turned into some INVALID STATE!", \
                     "There's an issue with Aura Engine '%s':\n\n%s" % (self.engine_id, status))
                 # Route call of event via event dispatcher to provide ability for additional hooks
-                self.soundsystem.event_dispatcher.on_sick(status)
+                self.engine.event_dispatcher.on_sick(status)
 
         threading.Timer(self.config.get("heartbeat_frequency"), self.heartbeat).start()
 
@@ -294,14 +294,14 @@ class AuraMonitor:
         """
         Retrieves all input and outputs provided by the engine.
         """
-        ios = self.soundsystem.engine_state()
+        ios = self.engine.engine_state()
 
         try:
             ios = ios.replace('"connected":', '"connected": ""')
             ios = json.loads(ios, strict=False)
             return ios
         except Exception as e:
-            self.logger.warn("Got invalid JSON from soundsystem - " + str(e))
+            self.logger.warn("Got invalid JSON from Liquidsoap - " + str(e))
             return MonitorResponseCode.INVALID_STATE.value
 
 
diff --git a/test/connection_tester.py b/test/connection_tester.py
index 3b2e4cf0..e96fc4b3 100644
--- a/test/connection_tester.py
+++ b/test/connection_tester.py
@@ -22,7 +22,7 @@
 import urllib
 import json
 
-from modules.core.engine import SoundSystem
+from modules.core.engine import Engine
 from modules.base.config import AuraConfig
 
 
@@ -57,7 +57,7 @@ class ConnectionTester(AuraConfig):
     # ------------------------------------------------------------------------------------------ #
     def test_lqs_conn(self):
         try:
-            lsc = SoundSystem(self.config)
+            lsc = Engine(self.config)
             lsc.mixer_status()
             return True
 
@@ -67,7 +67,7 @@ class ConnectionTester(AuraConfig):
     # ------------------------------------------------------------------------------------------ #
     def test_lqsr_conn(self):
         try:
-            lsc = SoundSystem(self.config)
+            lsc = Engine(self.config)
             lsc.get_recorder_status()
             return True
 
diff --git a/test/tests.py b/test/tests.py
index b99c4e1b..f3ecd6cb 100755
--- a/test/tests.py
+++ b/test/tests.py
@@ -27,7 +27,7 @@ import logging
 import sqlalchemy
 import decimal
 
-from modules.core.engine import SoundSystem
+from modules.core.engine import Engine
 from modules.base.config import AuraConfig
 from modules.base.models import Schedule, ScheduleEntry
 from modules.scheduling.scheduler import AuraScheduler, AuraCalendarService
@@ -53,11 +53,11 @@ def select_current_programme():
     config = AuraConfig()
     config.read_config()
 
-    soundsystem = SoundSystem(config.config)
+    engine = Engine(config.config)
     sched = AuraScheduler(config.config)
 
-    soundsystem.scheduler = sched
-    sched.soundsystem = soundsystem
+    engine.scheduler = sched
+    sched.engine = engine
 
     programme = sched.load_programme_from_db()
 
-- 
GitLab