summaryrefslogtreecommitdiff
path: root/reftable/blocksource.h
diff options
context:
space:
mode:
authorLibravatar Han-Wen Nienhuys <hanwen@google.com>2021-10-07 20:25:01 +0000
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-10-08 10:45:48 -0700
commit1214aa841bc825c97541a68f397227cb2bfd3f3c (patch)
tree782222593af1c28bbefd31058460aec0b3aa6107 /reftable/blocksource.h
parentreftable: utility functions (diff)
downloadtgif-1214aa841bc825c97541a68f397227cb2bfd3f3c.tar.xz
reftable: add blocksource, an abstraction for random access reads
The reftable format is usually used with files for storage. However, we abstract away this using the blocksource data structure. This has two advantages: * log blocks are zlib compressed, and handling them is simplified if we can discard byte segments from within the block layer. * for unittests, it is useful to read and write in-memory. The blocksource allows us to abstract the data away from on-disk files. Signed-off-by: Han-Wen Nienhuys <hanwen@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'reftable/blocksource.h')
-rw-r--r--reftable/blocksource.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/reftable/blocksource.h b/reftable/blocksource.h
new file mode 100644
index 0000000000..072e2727ad
--- /dev/null
+++ b/reftable/blocksource.h
@@ -0,0 +1,22 @@
+/*
+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 BLOCKSOURCE_H
+#define BLOCKSOURCE_H
+
+#include "system.h"
+
+struct reftable_block_source;
+
+/* Create an in-memory block source for reading reftables */
+void block_source_from_strbuf(struct reftable_block_source *bs,
+ struct strbuf *buf);
+
+struct reftable_block_source malloc_block_source(void);
+
+#endif