| /* | |
| * Copyright 2020 Google LLC | |
| * | |
| * Use of this source code is governed by a BSD-style | |
| * license that can be found in the LICENSE file or at | |
| * https://developers.google.com/open-source/licenses/bsd | |
| */ | |
| #ifndef WRITER_H | |
| #define WRITER_H | |
| #include "basics.h" | |
| #include "block.h" | |
| #include "tree.h" | |
| #include "reftable-writer.h" | |
| struct reftable_writer { | |
| ssize_t (*write)(void *, const void *, size_t); | |
| int (*flush)(void *); | |
| void *write_arg; | |
| int pending_padding; | |
| struct reftable_buf last_key; | |
| /* Scratch buffer used to avoid allocations. */ | |
| struct reftable_buf scratch; | |
| /* offset of next block to write. */ | |
| uint64_t next; | |
| uint64_t min_update_index, max_update_index; | |
| struct reftable_write_options opts; | |
| enum reftable_hash hash_id; | |
| /* memory buffer for writing */ | |
| uint8_t *block; | |
| /* writer for the current section. NULL or points to | |
| * block_writer_data */ | |
| struct block_writer *block_writer; | |
| struct block_writer block_writer_data; | |
| /* pending index records for the current section */ | |
| struct reftable_index_record *index; | |
| size_t index_len; | |
| size_t index_cap; | |
| /* | |
| * tree for use with tsearch; used to populate the 'o' inverse OID | |
| * map */ | |
| struct tree_node *obj_index_tree; | |
| struct reftable_stats stats; | |
| }; | |
| #endif |