def load(self, data): msg, proto_length = struct.unpack_from("<II", data) self.msg = EMsg(clear_proto_bit(msg)) size = MsgHdrProtoBuf._size self._fullsize = size + proto_length self.proto.ParseFromString(data[size:self._fullsize])
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 load(self, data): (msg, self.headerLength, ) = struct.unpack_from("<Ii", data) self.msg = clear_proto_bit(msg) if self.headerLength: x = GCMsgHdrProto._size self.proto.ParseFromString(data[x:x+self.headerLength])
def load(self, data): ( msg, self.headerLength, ) = struct.unpack_from("<Ii", data) self.msg = clear_proto_bit(msg) if self.headerLength: x = GCMsgHdrProto._size self.proto.ParseFromString(data[x:x + self.headerLength])
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 __init__(self, msg, data=None): self.proto = gc_pb2.CMsgProtoBufHeader() self.msg = clear_proto_bit(msg) if data: self.load(data)
def __init__(self, msg, data=None): self.msg = clear_proto_bit(msg) if data: self.load(data)
def test_clear_proto_big(self): self.assertEqual(ut.clear_proto_bit(0), 0) self.assertEqual(ut.clear_proto_bit(123), 123) self.assertEqual(ut.clear_proto_bit(proto_mask | 123), 123) self.assertEqual(ut.clear_proto_bit((proto_mask - 1) | proto_mask), proto_mask - 1)