74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
import logging
|
|
|
|
from persistence import p_io, p_out
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class Launcher:
|
|
"""base launcher that launches other submodules"""
|
|
|
|
def __init__(self, **modules):
|
|
""""""
|
|
self.persistence = p_io.PersistentDict("persistence/prst.json")
|
|
self.db = p_out.DataBaseConnector()
|
|
|
|
logger.info(self.__class__.__name__ + " initialized")
|
|
|
|
self.modules = modules
|
|
if len(self.persistence) == 0:
|
|
self.init_persistence()
|
|
self.persistence["global"]["reboots"] += 1
|
|
|
|
self.launch_modules()
|
|
|
|
|
|
|
|
def launch_modules(self):
|
|
|
|
for module in self.modules.values():
|
|
logger.info("Starting module "+ module.__class__.__name__)
|
|
module.modules = self.modules
|
|
module.persistence = self.persistence
|
|
module.db = self.db # pooled ie multithreaded
|
|
module.start()
|
|
|
|
|
|
def init_persistence(self):
|
|
logger.warning("No persistence found, created a new one")
|
|
|
|
self.persistence["global"] ={
|
|
"lists" : {},
|
|
"reboots": 0
|
|
}
|
|
|
|
for m_name in self.modules.keys():
|
|
data = {}
|
|
if m_name == "bot":
|
|
data = {
|
|
"send_activity" : {"hour":[], "count":[]},
|
|
"receive_activity" : {"hour":[], "count":[]},
|
|
"execute_activity" : {"hour":[], "count":[]},
|
|
"log": [],
|
|
"chat_members": {},
|
|
"aliases" : {}
|
|
}
|
|
if m_name == "clock":
|
|
data = {
|
|
"sensors" : {
|
|
"time" : [],
|
|
"temperature":[],
|
|
"humidity":[],
|
|
"brightness" : [],
|
|
}
|
|
}
|
|
|
|
self.persistence[m_name] = data
|
|
|
|
|
|
|
|
########################################################################
|
|
## Aand liftoff!
|
|
# Launcher()
|