static sparkey_returncode flush_compressed()

in src/logwriter.c [173:197]


static sparkey_returncode flush_compressed(sparkey_logwriter *log) {
  log->flushed = 1;
  if (log->entry_count > (int) log->header.max_entries_per_block) {
    log->header.max_entries_per_block = log->entry_count;
  }
  log->entry_count = 0;
  sparkey_buf *block_buf = &log->block_buf;
  uint8_t *compressed = log->compressed;
  uint32_t compressed_size = log->max_compressed_size;
  sparkey_buf *file_buf = &log->file_buf;
  int fd = log->fd;

  sparkey_returncode ret = sparkey_compressors[log->header.compression_type].compress(
    block_buf->start, buf_used(block_buf), compressed, &compressed_size);
  if (ret != SPARKEY_SUCCESS) {
    return ret;
  }

  uint8_t buf1[10];
  ptrdiff_t written1 = write_vlq(buf1, compressed_size);
  RETHROW(buf_add(file_buf, fd, buf1, written1));
  RETHROW(buf_add(file_buf, fd, compressed, compressed_size));
  block_buf->cur = block_buf->start;
  return SPARKEY_SUCCESS;
}