def __execute(self, msg): msg_obj = Message(msg) cmd = msg_obj.get_cmd() src = msg_obj.get_src() response = "" if cmd == "info": body = msg_obj.get_msg() method = body["method"] params = body["params"] if method == "stat": response = self.__app_handler.get_processes_info() elif method == "prior": pid = params["pid"] priority_id = params["priority_id"] response = self.__app_handler.set_priority(priority_id, pid) elif method == "term": pid = params["pid"] response = self.__app_handler.terminate(pid) elif method == "halt": self.__app_handler.terminate_all() response = "All processes have been terminated" elif method == "launch": self.__app_handler.run() response = "Processes running" else: response = f"error: no such method {method}" elif cmd == "stop" and src == "KERNEL": self.__app_handler.terminate_all() response = "Closing due to KERNEL request. BYE" else: response = f"error: no such command {cmd} or access denied" response_msg = {"body": response} response_str = Message.format("send", "APP", msg_obj.get_src(), response_msg) return response_str
def __execute(self, msg): msg_obj = Message(msg) cmd = msg_obj.get_cmd() src = msg_obj.get_src() response = "" if cmd == "info": body = msg_obj.get_msg() method = body['method'] params = body['params'] if method == "addLineLog": infoLog = params["info"] response = self.__file_manager.addLineLog(infoLog) elif method == "deleteLog": response = self.__file_manager.deleteLogFile() elif method == "readLogFile": response = self.__file_manager.readLogFile() elif method == "listLogs": response = self.__file_manager.listLogs() elif method == "createDir": nameDir = params['nameDir'] response = self.__file_manager.createDir(nameDir) elif method == "deleteDir": nameDir = params['nameDir'] response = self.__file_manager.deleteDir(nameDir) elif method == "addFileInDirectory": nameDir = params['nameDir'] response = self.__file_manager.addFileInDirectory(nameDir) elif method == "addLineInFileDirectory": nameDir = params['nameDir'] info = params['info'] response = self.__file_manager.addLineInFileDirectory( nameDir, info) elif method == "listDirectoriesInDirectory": nameDir = params['nameDir'] response = self.__file_manager.listDirectoriesInDirectory( nameDir) elif method == "setFileName": fileName = params['fileName'] response = self.__file_manager.setFileName(fileName) elif method == "getFileName": response = self.__file_manager.getFileName() else: response = f"error: no such method {method}" elif cmd == "stop" and src == "KERNEL": response = "Closing due to KERNEL request. BYE" else: response = f"error: no such command {cmd} or access denied" response_msg = {"body": response} response_str = Message.format("send", "FILE_MAN", msg_obj.get_src(), response_msg) print("RES: " + response) return response_str
def readLogFile(self): msg = Message.format("info", "GUI", "FILE_MAN", { "body": "", "method": "readLogFile", "params": {} }) self.__kernel_socket.send(msg.encode()) data = self.__kernel_socket.recv(self.__BUFFER_SIZE) if data: line = data.decode('UTF-8') # convert to string (Python 3 only) print("< " + line) response = Message(line) msge = response.get_msg() return json.loads(msge["body"]) else: raise InterruptedError
def status(self): msg = Message.format("info", "GUI", "APP", { "body": "", "method": "stat", "params": {} }) self.__kernel_socket.send(msg.encode()) data = self.__kernel_socket.recv(self.__BUFFER_SIZE) if data: line = data.decode('UTF-8') # convert to string (Python 3 only) print("< " + line) response = Message(line) msge = response.get_msg() body = msge["body"] return [tuple(d.values()) for d in body] else: raise InterruptedError
def __execute(self, request): request_obj = Message(request) #send request log request_log = self.__kernel.generate_log(request_obj) self.__file_man_socket.send(request_log.encode()) print("< request log response: " + self.__file_man_socket.recv( self.__BUFFER_SIZE).decode('UTF-8').replace('\n', '')) cmd = request_obj.get_cmd() dst = request_obj.get_dst() response = "" if cmd == "info": if dst == "APP": self.__app_socket.send(request.encode()) response = self.__app_socket.recv( self.__BUFFER_SIZE).decode('UTF-8').replace('\n', '') elif dst == "FILE_MAN": self.__file_man_socket.send(request.encode()) response = self.__file_man_socket.recv( self.__BUFFER_SIZE).decode('UTF-8').replace('\n', '') else: response_msg = { "body": f"error: no such destination {dst} for command {cmd}" } response = Message.format("send", "KERNEL", request_obj.get_src(), response_msg) elif cmd == "stop": if dst == "KERNEL": #closing FILE_MAN request = Message.format("stop", "KERNEL", "FILE_MAN", {"body": "Close. BYE"}) self.__file_man_socket.send(request.encode()) response = self.__file_man_socket.recv( self.__BUFFER_SIZE).decode('UTF-8').replace('\n', '') print(f"< {response}") #closing APP request = Message.format("stop", "KERNEL", "APP", {"body": "Close. BYE"}) self.__app_socket.send(request.encode()) response = self.__app_socket.recv( self.__BUFFER_SIZE).decode('UTF-8').replace('\n', '') print(f"< {response}") #send response to close GUI response = Message.format("stop", "KERNEL", "GUI", {"body": "Close. BYE"}) self.__app_socket.close() self.__file_man_socket.close() else: response_msg = { "body": f"error: you cannot stop single modules" } response = Message.format("send", "KERNEL", request_obj.get_src(), response_msg) else: response_msg = {"body": f"error: no such command {cmd}"} response = Message.format("send", "KERNEL", request_obj.get_src(), response_msg) body = request_obj.get_msg() method = body['method'] # it can be closed if the request cmd is 'stop' if not self.__file_man_socket._closed and method != "readLogFile": print(f"< {self.__address}: {response}") #Send response log response_obj = Message(response) response_log = self.__kernel.generate_log(response_obj) self.__file_man_socket.send(response_log.encode()) print("< response log response: " + self.__file_man_socket.recv( self.__BUFFER_SIZE).decode('UTF-8').replace('\n', '')) return response