def create_client(self, addr): ''' Create a client given it's address ''' Console.print(f"[UDP] |{addr[0]}| Connected.") client = Client(addr) self.add_client(client)
def start(self): ''' Start a infinite loop in another thread to listen to the server. ''' self.running = True self._thread = threading.Thread(target=self.run) self._thread.start() Console.print("[UDP] Started client's thread.")
def call(traceback, warning=False): if warning: call_type = '[WARNING]' else: call_type = '[ERROR]' Console.print('[UDP]', call_type, traceback)
def call(traceback, id=None, warning=False): if warning: call_type = "[WARNING]" else: call_type = "[ERROR]" if id == None: Console.print("[TCP]", call_type, traceback) else: Console.print(f"[TCP] |{id}| {call_type} {traceback}")
def call(traceback, warning=False): ''' Display a message in the terminal. In the format: `"[TCP] [call type] traceback"` ''' if warning: call_type = "WARNING" else: call_type = "ERROR" Console.print(f"[TCP] [{call_type}] {traceback}")
def run(self): ''' Loop that wait for connections. Execute on_connection method. To end execution, set running attribute to False. ''' while self._running: conn, addr = self._socket.accept() Console.print(f'[TCP] |{addr[0]}| Connected.') self.on_connection(conn, addr)
def display_msg(self, msg: Message): ''' Display the Message to the terminal in a pretty printing way. ''' if type(msg.content) is str and '\n' in msg.content: content = '' elif type(msg.content) is np.ndarray: content = '' # player stats elif msg.identifier == 'rpd': content = msg.content['username'] else: content = str(msg.content) Console.print('[TCP] {' + msg.identifier + '} ' + content)
def print(self, string, *strings, warning=False): ''' Print a string to the terminal. ''' # compose string for _str in strings: string += ' ' + _str if self.logged: id = self.username else: id = self.ip if warning: Console.print(f'[TCP] |{id}| [WARNING] {string}') else: Console.print(f'[TCP] |{id}| {string}')