static sparkey_returncode sparkey_logiter_chunk()

in src/logreader.c [353:372]


static sparkey_returncode sparkey_logiter_chunk(sparkey_logiter *iter, sparkey_logreader *log, uint64_t maxlen, uint64_t *len, uint8_t ** res, uint64_t *var) {
  RETHROW(assert_iter_open(iter, log));

  if (iter->state != SPARKEY_ITER_ACTIVE) {
    return SPARKEY_LOG_ITERATOR_INACTIVE;
  }

  if (*var > 0) {
    RETHROW(ensure_available(iter, log));
    uint64_t m = min64(*var, iter->block_len - iter->block_offset);
    m = min64(maxlen, m);
    *len = m;
    *res = &iter->compression_buf[iter->block_offset];
    iter->block_offset += m;
    *var -= m;
    return SPARKEY_SUCCESS;
  }
  *len = 0;
  return SPARKEY_SUCCESS;
}