コード例 #1
0
ファイル: client.py プロジェクト: WolkoDav/TCP-Chat
 def _notification(self):
     while self._running:
         try:
             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)
             handler = self.notification_handler(request, self)
             handler.process_request()
         except OSError as e:
             print_(e)
             self.stop()
         except Exception as e:
             print_(e)
             self.stop()
コード例 #2
0
ファイル: protocol.py プロジェクト: WolkoDav/TCP-Chat
 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
コード例 #3
0
ファイル: messages_test.py プロジェクト: WolkoDav/TCP-Chat
 def test_unpack(self):
     message = b"LOGIN\ngAN9cQBYCAAAAHVzZXJuYW1lcQFYBAAAAHRlc3RxAnMu"
     r = Message.unpack(message)
     self.assertEqual(r.command, "LOGIN")
     self.assertIsInstance(r.kwargs, dict)
     self.assertDictEqual(r.kwargs, {'username': "******"})