def _parse_message(self, message): emsg_id, = struct.unpack_from("<I", message) emsg = EMsg(clear_proto_bit(emsg_id)) if not self.connected and emsg != EMsg.ClientLogOnResponse: return if emsg in (EMsg.ChannelEncryptRequest, EMsg.ChannelEncryptResponse, EMsg.ChannelEncryptResult, ): msg = Msg(emsg, message) else: try: if is_proto(emsg_id): msg = MsgProto(emsg, message) else: msg = Msg(emsg, message, extended=True) except Exception as e: self._LOG.fatal("Failed to deserialize message: %s (is_proto: %s)", str(emsg), is_proto(emsg_id) ) self._LOG.exception(e) if self.verbose_debug: self._LOG.debug("Incoming: %s\n%s" % (repr(msg), str(msg))) else: self._LOG.debug("Incoming: %s", repr(msg)) self.emit(emsg, msg)
def _parse_message(self, message): emsg_id, = struct.unpack_from("<I", message) emsg = EMsg(clear_proto_bit(emsg_id)) if not self.connected and emsg != EMsg.ClientLogOnResponse: return if emsg in ( EMsg.ChannelEncryptRequest, EMsg.ChannelEncryptResponse, EMsg.ChannelEncryptResult, ): msg = Msg(emsg, message) else: try: if is_proto(emsg_id): msg = MsgProto(emsg, message) else: msg = Msg(emsg, message, extended=True) except Exception as e: self._LOG.fatal( "Failed to deserialize message: %s (is_proto: %s)", str(emsg), is_proto(emsg_id)) self._LOG.exception(e) if self.verbose_debug: self._LOG.debug("Incoming: %s\n%s" % (repr(msg), str(msg))) else: self._LOG.debug("Incoming: %s", repr(msg)) self.emit(emsg, msg)
def _handle_from_gc(self, msg): if msg.body.appid != self.app_id: return emsg = msg.body.msgtype if is_proto(emsg): header = GCMsgHdrProto(emsg, msg.body.payload) header_size = GCMsgHdrProto._size + header.headerLength else: header = GCMsgHdr(emsg, msg.body.payload) header_size = GCMsgHdr._size body = msg.body.payload[header_size:] self._process_gc_message(clear_proto_bit(emsg), header, body)
def _handle_from_gc(self, msg): if msg.body.appid != self.app_id: return emsg = msg.body.msgtype if is_proto(emsg): header = GCMsgHdrProto(emsg, msg.body.payload) header_size = GCMsgHdrProto._size + header.headerLength else: header = GCMsgHdr(emsg, msg.body.payload) header_size = GCMsgHdr._size body = msg.body.payload[header_size:] self._process_gc_message(clear_proto_bit(emsg), header, body)
def test_set_proto_big(self): self.assertFalse(ut.is_proto(0)) self.assertTrue(ut.is_proto(ut.set_proto_bit(0))) self.assertFalse(ut.is_proto(1)) self.assertTrue(ut.is_proto(ut.set_proto_bit(1)))
def test_is_proto(self): self.assertTrue(ut.is_proto(proto_mask)) self.assertTrue(ut.is_proto(proto_mask | 123456)) self.assertFalse(ut.is_proto(0)) self.assertFalse(ut.is_proto(proto_mask - 1)) self.assertFalse(ut.is_proto(proto_mask << 1))
def test_set_proto_big(self): self.assertFalse(ut.is_proto(0)) self.assertTrue(ut.is_proto(ut.set_proto_bit(0))) self.assertFalse(ut.is_proto(1)) self.assertTrue(ut.is_proto(ut.set_proto_bit(1)))
def test_is_proto(self): self.assertTrue(ut.is_proto(proto_mask)) self.assertTrue(ut.is_proto(proto_mask | 123456)) self.assertFalse(ut.is_proto(0)) self.assertFalse(ut.is_proto(proto_mask - 1)) self.assertFalse(ut.is_proto(proto_mask << 1))