def __init__(self, logger, config_filename=CONFIG_FILENAME): self._node_dict = {} self._crash_dict = {} self._logger = logger self._config = ConfigParser(config_filename) beacon_port, beacon_timeout, config_req_interval = self._config.beacon_config report_port = self._config.report_server_config web_port = self._config.web_server_config self._beacon_queue = Queue() self._node_queue = Queue() self._report_queue = Queue() self._web_queue = Queue() self._db_queue = Queue() self._db_worker = DatabaseWorker(self._db_queue, self._node_dict, self._crash_dict) self._db_worker.load() self._beacon_server = BeaconServer(beacon_port, self._beacon_queue) self._beacon_worker = BeaconWorker(self._beacon_queue, self._node_queue, self._db_queue, beacon_timeout, config_req_interval, self._node_dict) self._report_server = ReportServer(report_port, self._report_queue) self._report_worker = ReportWorker(self._report_queue, self._db_queue, self._node_dict, self._crash_dict) self._node_client_worker = NodeClientWorker(self._node_queue) self._web_intf = WebInterface(self._web_queue, self._node_dict, self._crash_dict) self._web_server = WebServer(web_port, self._web_intf.app) self._web_worker = WebWorker(self._node_dict, self._web_queue, self._node_queue, self._db_queue)