def parse_command(self, inp): """Parses a command Params: inp - command input (string) """ inp_list = inp.split(' ') if len(inp_list) > 2: print("Invalid syntax") cmd = inp_list[0].lower() param = inp_list[1] if len(inp_list) > 1 else None if self.type == CLIENT: cmds = ["get", "post", "connect", "window", "disconnect"] if cmd != "connect" and not self.conn and cmd != "disconnect": print("You need to connect first!") elif cmd == "connect": print("Connecting...") self.conn = RxP.connect((self.A, self.P), self.X) if self.conn: print("Connected!") self.start_conn_thread() else: print("Connection Failed") elif cmd == "window": try: win = int(param) self.cmd_queue.put(inp) except: print("Invalid window size!") elif cmd == "disconnect": print("Attempting to close the connection") self.cmd_queue.put(inp) for i in range(5): if not self.cmd_queue.empty(): time.sleep(1) if not self.cmd_queue.empty(): print("Server took too long to close gracefully, exiting...") return False elif cmd == "get" or cmd == "post": print(cmd + " for file: " + param) msg = cmd + " " + param self.cmd_queue.put(msg) else: print("Invalid command: " + cmd) print("Valid commands: ") for c in cmds: print(c, end=' ') print("") return True elif self.type == SERVER: cmds = ["window", "terminate"] if cmd == "window": try: win = int(param) self.cmd_queue.put(inp) except: print("Invalid window size!") elif cmd == "terminate": print("Attempting to close the connection") self.cmd_queue.put(inp) for i in range(5): if not self.cmd_queue.empty(): time.sleep(1) if not self.cmd_queue.empty(): print("Client took too long to close gracefully, exiting...") return False return True