Beispiel #1
0
    def check(self, callback):
        #callback
        counter = 0

        #        message = ''
        #        MSGLEN = 20480
        #        while len(message) < MSGLEN:
        #            chunk = self.sock.recv(MSGLEN-len(message))
        #            if chunk == '':
        #                raise RuntimeError("socket connection broken")
        #            message = message + chunk
        #        return message

        #        message = self.sock.recv(20480)
        message = self.sock.recv(20240)
        while callback and message and len(message) > counter + 4:
            tag = struct.unpack('<HH', message[counter:counter + 4])[1]
            for subclass in Serializer.__subclasses__():
                if tag == subclass().tag:
                    callback(subclass().deserialize(message[counter:counter +
                                                            subclass().size]))
                    counter += subclass().size