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 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 _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: self._LOG.debug( "Dropped unexpected message: %s (is_proto: %s)", repr(emsg), is_proto(emsg_id), ) return if emsg in ( EMsg.ChannelEncryptRequest, EMsg.ChannelEncryptResponse, EMsg.ChannelEncryptResult, ): msg = Msg(emsg, message, parse=False) else: try: if is_proto(emsg_id): msg = MsgProto(emsg, message, parse=False) else: msg = Msg(emsg, message, extended=True, parse=False) except Exception as e: self._LOG.fatal( "Failed to deserialize message: %s (is_proto: %s)", repr(emsg), is_proto(emsg_id)) self._LOG.exception(e) return if self.count_listeners(emsg) or self.verbose_debug: msg.parse() 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) return emsg, msg
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(utp.clear_proto_bit(0), 0) self.assertEqual(utp.clear_proto_bit(123), 123) self.assertEqual(utp.clear_proto_bit(proto_mask | 123), 123) self.assertEqual(utp.clear_proto_bit((proto_mask - 1) | proto_mask), proto_mask - 1)