package irmin-pack
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=6aa5ba4c6a0233747d4bd3ab396f2b3a33bb80f9d8ed4a178c83a035033c0e52
sha512=8a5506a57e8569a11c883ca25b3c60ae7a9a03c2da111668193d7b4296434c43f1a310e78f189e4b38c234da790259d2961c6a0ae481282c18bb97f618fccfb6
doc/irmin-pack.unix/Irmin_pack_unix/Chunked_suffix/Make/index.html
Module Chunked_suffix.MakeSource
Abstraction for a chunked suffix. It is functionally equivalent to Append_only_file but with a chunked implementation that is parameterized by
start_idxforcreate_rwto know the starting file name, andstart_idxandchunk_numfor the open functions to know the starting file name and how many files there are.
Parameters
module Errs : Io_errors.S with module Io = IoSignature
module Io = Iomodule Errs = ErrsAbstraction for irmin-pack's append only files (i.e. suffix and dict).
type open_error = [ | Io.open_error| `Closed| `Invalid_argument| `Inconsistent_store| `Read_out_of_bounds
]type add_new_error = [ | open_error| Io.close_error| `Pending_flush| `File_exists of string| `Multiple_empty_chunks
]val create_rw :
root:string ->
start_idx:int ->
overwrite:bool ->
auto_flush_threshold:int ->
auto_flush_procedure:Ao.auto_flush_procedure ->
(t, [> create_error ]) resultval open_rw :
root:string ->
appendable_chunk_poff:Optint.Int63.t ->
start_idx:int ->
chunk_num:int ->
dead_header_size:int ->
auto_flush_threshold:int ->
auto_flush_procedure:Ao.auto_flush_procedure ->
(t, [> open_error ]) resultval open_ro :
root:string ->
appendable_chunk_poff:Optint.Int63.t ->
dead_header_size:int ->
start_idx:int ->
chunk_num:int ->
(t, [> open_error ]) resultval add_chunk :
auto_flush_threshold:int ->
auto_flush_procedure:Ao.auto_flush_procedure ->
t ->
(unit, [> add_new_error ]) resultappendable_chunk_poff t is the number of bytes of the chunk file that is currently appendable. It does not perform IO.
RW mode
It also counts the bytes not flushed yet.
RO mode
This information originates from the latest reload of the control file. Calling refresh_appendable_chunk_poff t updates appendable_chunk_poff.
val refresh_appendable_chunk_poff :
t ->
Optint.Int63.t ->
(unit, [> `Rw_not_allowed ]) resultIngest the new end offset of the appendable chunk file. Typically happens in RO mode when the control file has been re-read.
RW mode
Always returns Error `Rw_not_allowed.
end_soff t is the end offset for the chunked suffix. The valid range of offsets is 0 <= off < end_soff. Therefore, end_soff also represents the length of the chunked suffix.
val fold_chunks :
(acc:'a ->
idx:int ->
start_suffix_off:Optint.Int63.t ->
end_suffix_off:Optint.Int63.t ->
is_appendable:bool ->
'a) ->
'a ->
t ->
'a