class Controller(object): """docstring for Manager""" def __init__(self): self.__exp_sarted = False self.__exp_ended = False self.ready = False self.__beginning_time = 'Not yet started' self.__persistence_manager = PersistenceManager(self) def readConfig(self, env_var, path): self.__config_loader = ConfigLoader(path) self.ready = False if env_var: self.ready = self.__config_loader.readFromEnv() else: self.ready = self.__config_loader.readFromFile() writers = self.__config_loader.writers readers = self.__config_loader.readers initial_collabs = self.__config_loader.initial_collabs typing_speed = self.__config_loader.typing_speed self.__clients_manager = ClientsManager(self, readers, writers, initial_collabs, typing_speed) return self.ready def addNode(self, node_id): return self.__clients_manager.addNode(node_id) def acknowledgeRegistration(self, node_id): self.__clients_manager.acknowledgeRegistration(node_id) def saveResults(self, node_id, results): self.__persistence_manager.saveResults(node_id, results) def startExp(self): logger.debug("=== Experience will start NOW ===") self.__exp_sarted = True self.__beginning_time = time.strftime("%H:%M:%S") self.__rmq_communication = RMQCommunication(self) self.__rmq_communication.broadcastStartSignal() def getReadyCollabsNmbr(self): return self.__clients_manager.getReadyCollabsNmbr() def getNoAckCollabsNmbr(self): return self.__clients_manager.getNoAckCollabsNmbr() def getStatus(self): return { 'ready': self.getReadyCollabsNmbr(), 'no_ack': self.getNoAckCollabsNmbr(), 'is_exp_started': self.__exp_sarted, 'is_exp_ended': self.__exp_ended, 'beginning_time': self.__beginning_time, } def getConfig(self): return self.__config_loader.getJSONConfig()