def dispatch_client(self): try: while True: # Считать длинну сообщения message_length = yield self._stream.read_bytes(2) # Распоковать length = struct.unpack("!H", message_length)[0] # Считать сообщение message = yield self._stream.read_bytes(length) # Распоковать запрос request = Message.unpack(message=message) # Создать обработчик запросов handler = self._handler(request, self._id, self._storage) # Обработать запрос response = yield handler.process_request() # Вернуть ответ if response: response = Message(response[0], kwargs=response[1]) yield self._stream.write(response.pack()) except iostream.StreamClosedError: pass
def test_pack(self): r = Message("LOGIN", kwargs={"username": "******"}) packing = r.pack() self.assertIsInstance(packing, bytes)