Git fork
at reftables-rust 53 lines 1.2 kB view raw
1/* 2 * Copyright 2020 Google LLC 3 * 4 * Use of this source code is governed by a BSD-style 5 * license that can be found in the LICENSE file or at 6 * https://developers.google.com/open-source/licenses/bsd 7 */ 8 9#ifndef WRITER_H 10#define WRITER_H 11 12#include "basics.h" 13#include "block.h" 14#include "tree.h" 15#include "reftable-writer.h" 16 17struct reftable_writer { 18 ssize_t (*write)(void *, const void *, size_t); 19 int (*flush)(void *); 20 void *write_arg; 21 int pending_padding; 22 struct reftable_buf last_key; 23 /* Scratch buffer used to avoid allocations. */ 24 struct reftable_buf scratch; 25 26 /* offset of next block to write. */ 27 uint64_t next; 28 uint64_t min_update_index, max_update_index; 29 struct reftable_write_options opts; 30 31 /* memory buffer for writing */ 32 uint8_t *block; 33 34 /* writer for the current section. NULL or points to 35 * block_writer_data */ 36 struct block_writer *block_writer; 37 38 struct block_writer block_writer_data; 39 40 /* pending index records for the current section */ 41 struct reftable_index_record *index; 42 size_t index_len; 43 size_t index_cap; 44 45 /* 46 * tree for use with tsearch; used to populate the 'o' inverse OID 47 * map */ 48 struct tree_node *obj_index_tree; 49 50 struct reftable_stats stats; 51}; 52 53#endif