def appendRaw(self, key, value): if self._block_compress: if self._block: records, keys_len, keys, values_len, values = self._block else: keys_len = DataOutputBuffer() keys = DataOutputBuffer() values_len = DataOutputBuffer() values = DataOutputBuffer() records = 0 writeVInt(keys_len, len(key)) keys.write(key) writeVInt(values_len, len(value)) values.write(value) records += 1 self._block = (records, keys_len, keys, values_len, values) current_block_size = keys.getSize() + values.getSize() if current_block_size >= self.COMPRESSION_BLOCK_SIZE: self.sync() else: if self._compress: value = self._codec.compress(value) key_length = len(key) value_length = len(value) self._checkAndWriteSync() self._stream.writeInt(key_length + value_length) self._stream.writeInt(key_length) self._stream.write(key) self._stream.write(value)