#ifndef CHUNK_TABLE_H_ #define CHUNK_TABLE_H_ #include "b-tree.h" #include "bin.h" #include #include #include struct ec3_tag_ioctx; struct chunk_table { struct b_tree tab_chunks; enum ec3_cluster_size tab_cluster_size; b_btree tab_cache; unsigned char *tab_cluster_buf; size_t tab_next_cdat_cluster; struct ec3_tag_ioctx *tab_ctab; struct ec3_tag_ioctx *tab_cdat; }; extern enum ec3_status chunk_table_init( struct ec3_tag_ioctx *ctab, struct ec3_tag_ioctx *cdat, enum ec3_cluster_size cluster_size, struct chunk_table *tab); extern void chunk_table_init_empty_table(struct chunk_table *table); extern void chunk_table_finish(struct chunk_table *tab); extern enum ec3_status chunk_table_get( struct chunk_table *tab, ec3_chunk_id id, void *out_data, size_t *out_len); extern enum ec3_status chunk_table_put( struct chunk_table *tab, const void *data, size_t len, ec3_chunk_id out_id); extern size_t chunk_table_bytes_per_chunk(struct chunk_table *tab); #endif