aboutsummaryrefslogtreecommitdiff
path: root/reftable/blocksource.h
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2025-04-07 15:16:15 +0200
committerJunio C Hamano <gitster@pobox.com>2025-04-07 14:53:09 -0700
commit1ac4e5e83d997887dcd051c89861292a45a3db8c (patch)
treed843aabb8b472a1f4a523c0552f270b03f784904 /reftable/blocksource.h
parentb648bd654947db06e5549d724f46d3660ac11e19 (diff)
downloadgit-1ac4e5e83d997887dcd051c89861292a45a3db8c.tar.xz
reftable/blocksource: consolidate code into a single file
The code that implements block sources is distributed across a couple of files. Consolidate all of it into "reftable/blocksource.c" and its accompanying header so that it is easier to locate and more self contained. While at it, rename some of the functions to have properly scoped names. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'reftable/blocksource.h')
-rw-r--r--reftable/blocksource.h27
1 files changed, 26 insertions, 1 deletions
diff --git a/reftable/blocksource.h b/reftable/blocksource.h
index 7b67898ae2..639b9a1a3c 100644
--- a/reftable/blocksource.h
+++ b/reftable/blocksource.h
@@ -12,9 +12,34 @@
#include "system.h"
struct reftable_block_source;
+struct reftable_block;
struct reftable_buf;
-/* Create an in-memory block source for reading reftables */
+/*
+ * Close the block source and the underlying resource. This is a no-op in case
+ * the block source is zero-initialized.
+ */
+void block_source_close(struct reftable_block_source *source);
+
+/*
+ * Read a block of length `size` from the source at the given `off`.
+ */
+ssize_t block_source_read_block(struct reftable_block_source *source,
+ struct reftable_block *dest, uint64_t off,
+ uint32_t size);
+
+/*
+ * Return the total length of the underlying resource.
+ */
+uint64_t block_source_size(struct reftable_block_source *source);
+
+/*
+ * Return a block to its original source, releasing any resources associated
+ * with it.
+ */
+void block_source_return_block(struct reftable_block *block);
+
+/* Create an in-memory block source for reading reftables. */
void block_source_from_buf(struct reftable_block_source *bs,
struct reftable_buf *buf);