static vxmem *vxmem_chunk_fromfd(int fd, off_t size) { vxmem_chunk *chunk; chunk = calloc(sizeof *chunk, 1); if (chunk == NULL) return NULL; chunk->mem = chunk_proto; chunk->fd = fd; if (chunk_resize((vxmem*)chunk, size) < 0) { free(chunk); return NULL; } return (vxmem*)chunk; }
void chunk_decompress( chunk_t *chunk, uint8_t *cbuffer, uint32_t N ) { chunk_resize( chunk, N ); // Do the varint decoding streamvbyte_delta_decode( cbuffer, chunk->buffer, N, 0 ); }
// Push value, returns 1 if we are now full int chunk_push( chunk_t *chunk, uint32_t value ) { chunk_resize( chunk, 256 ); chunk->buffer[ chunk->size++ ] = value; return chunk->size == chunk->cap; }