Пример #1
0
def _pack_data_records_unchecked(contents):
    f = BytesIO()
    for record in contents:
        record = record.encode("ascii")
        write_uleb128(len(record), f)
        f.write(record)
    return f.getvalue()
Пример #2
0
    def write_block(self, level, first_record, last_record, payload, zpayload):
        if not (0 <= level < FIRST_EXTENSION_LEVEL):
            raise ZSError("invalid level %s" % (level,))

        if level == 0:
            self._hasher.update(payload)

        block_offset = self._file.tell()
        block_contents = six.int2byte(level) + zpayload
        write_uleb128(len(block_contents), self._file)
        self._file.write(block_contents)
        self._file.write(encoded_crc64xz(block_contents))
        total_block_length = self._file.tell() - block_offset

        self._spin(total_block_length, 1, False)

        if level >= len(self._level_entries):
            # First block we've seen at this level
            assert level == len(self._level_entries)
            self._level_entries.append([])
            # This can only happen if all the previous levels just flushed.
            for i in range(level):
                assert not self._level_entries[i]
        entries = self._level_entries[level]
        entries.append((first_record, last_record,
                        block_offset, total_block_length))
        if len(entries) >= self._branching_factor:
            self._flush_index(level)
Пример #3
0
def _pack_data_records_unchecked(contents):
    f = BytesIO()
    for record in contents:
        record = record.encode("ascii")
        write_uleb128(len(record), f)
        f.write(record)
    return f.getvalue()
Пример #4
0
 def raw_block(self, block_level, zpayload,
               bad_checksum=False, truncate_checksum=0):
     self.f.seek(0, 2)
     offset = self.f.tell()
     contents = int2byte(block_level) + zpayload
     write_uleb128(len(contents), self.f)
     self.f.write(contents)
     checksum = encoded_crc64xz(contents)
     if bad_checksum:
         checksum = b"\x00" * len(checksum)
     if truncate_checksum > 0:
         checksum = checksum[:-truncate_checksum]
     self.f.write(checksum)
     block_length = self.f.tell() - offset
     return offset, block_length
Пример #5
0
 def raw_block(self,
               block_level,
               zpayload,
               bad_checksum=False,
               truncate_checksum=0):
     self.f.seek(0, 2)
     offset = self.f.tell()
     contents = int2byte(block_level) + zpayload
     write_uleb128(len(contents), self.f)
     self.f.write(contents)
     checksum = encoded_crc64xz(contents)
     if bad_checksum:
         checksum = b"\x00" * len(checksum)
     if truncate_checksum > 0:
         checksum = checksum[:-truncate_checksum]
     self.f.write(checksum)
     block_length = self.f.tell() - offset
     return offset, block_length
Пример #6
0
def _pack_index_records_unchecked(contents):
    f = BytesIO()
    for key, offset, length in zip(*contents):
        key = key.encode("ascii")
        write_uleb128(len(key), f)
        f.write(key)
        write_uleb128(offset, f)
        write_uleb128(length, f)
    return f.getvalue()
Пример #7
0
def _pack_index_records_unchecked(contents):
    f = BytesIO()
    for key, offset, length in zip(*contents):
        key = key.encode("ascii")
        write_uleb128(len(key), f)
        f.write(key)
        write_uleb128(offset, f)
        write_uleb128(length, f)
    return f.getvalue()