예제 #1
0
파일: cm.py 프로젝트: jaredballou/steam
    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)
예제 #2
0
파일: cm.py 프로젝트: baidumail/steam
    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)
예제 #3
0
    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)
예제 #4
0
파일: gc.py 프로젝트: ValvePython/steam
    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)
예제 #5
0
 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)))
예제 #6
0
 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))
예제 #7
0
파일: test_util.py 프로젝트: philippj/steam
 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)))
예제 #8
0
파일: test_util.py 프로젝트: philippj/steam
 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))