aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/MemoryState.py11
-rw-r--r--app/PluginManager.py9
2 files changed, 16 insertions, 4 deletions
diff --git a/app/MemoryState.py b/app/MemoryState.py
new file mode 100644
index 0000000..b5fe1f1
--- /dev/null
+++ b/app/MemoryState.py
@@ -0,0 +1,11 @@
+from dataclasses import dataclass
+
+
+@dataclass
+class MemoryState:
+ """MemoryState is a singleton class used for communicating between threads."""
+
+ running: bool
+
+
+memory_state = MemoryState(running=False)
diff --git a/app/PluginManager.py b/app/PluginManager.py
index 2b616ca..3ec9d44 100644
--- a/app/PluginManager.py
+++ b/app/PluginManager.py
@@ -7,13 +7,13 @@ from app.Item import Item
from app.PluginInterface import PluginInterface
from app.AggroConfig import AggroConfig
from app.utils import get_param
+from app.MemoryState import memory_state
class PluginManager:
def __init__(self, config: AggroConfig) -> None:
self._plugins: dict[str, Any] = {}
self.plugin_instances: dict[str, PluginInterface] = {}
- self.running = False
self.config = config
def load_plugin(self, plugin_name: str) -> None:
@@ -21,6 +21,8 @@ class PluginManager:
plugin_class = module.Plugin
self._plugins[plugin_name] = plugin_class
+ # TODO instead of propagating procedurally,
+ # insert data into an next_node_id-identified input queue in tinydb
def propagate(self, id: str, items: list[Item]):
next_nodes: list[str]
if id not in self.config.graph:
@@ -32,7 +34,7 @@ class PluginManager:
self.run_plugin_job(next_node_id, items)
def run_plugin_job(self, id: str, items: list[Item] = []):
- if not self.running:
+ if not memory_state.running:
return
plugin: PluginInterface = self.plugin_instances[id]
@@ -65,7 +67,6 @@ class PluginManager:
self.plugin_instances[id] = plugin
def run(self) -> None:
- self.running = True
- while self.running:
+ while memory_state.running:
schedule.run_pending()
time.sleep(1)