コード例 #1
0
    def _read_message(self, socket):
        """ Exceptions: IOError """
        try:
            size_as_raw_string = utils.recv_size(socket, 4, self._ev_stop_getter)

            if self._stop:
                return None
            if size_as_raw_string == '':
                return None

            size_as_uint = long(struct.unpack('I', size_as_raw_string)[0])
            message_as_raw_string = utils.recv_size(socket, size_as_uint, self._ev_stop_getter)

            if self._stop:
                return None
            if message_as_raw_string == '': 
                return None

            result = CommandMessage()
            result.ParseFromString(message_as_raw_string)
            return result

        except ValueError, e:
            raise utils.wrap_exc(IOError, "can't parse a length of a packet", e)
コード例 #2
0
            size_as_uint = long(struct.unpack('I', size_as_raw_string)[0])
            message_as_raw_string = utils.recv_size(socket, size_as_uint, self._ev_stop_getter)

            if self._stop:
                return None
            if message_as_raw_string == '': 
                return None

            result = CommandMessage()
            result.ParseFromString(message_as_raw_string)
            return result

        except ValueError, e:
            raise utils.wrap_exc(IOError, "can't parse a length of a packet", e)
        except DecodeError, e:
            raise utils.wrap_exc(IOError, "can't parse protobuf message", e)
        except origin_socket.error, e:
            raise utils.wrap_exc(IOError, "socket reading error", e)

    def _send_message(self, message, sock):
        message_as_string = message.SerializeToString()
        header = struct.pack('I', len(message_as_string))
        assert len(header) == 4
        try:
            sock.sendall(header)
            sock.sendall(message_as_string)
        except origin_socket.error:
            print traceback.format_exc()

    #noinspection PyUnresolvedReferences
    def _create_message(self, solver_result):