package irmin-pack
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=6e430cf44aee5ffdc94f6bfad8dbc401e3ea036ed1fbcf2a8697198ecbf6d412
sha512=b969d0913f0776384fafc4f138cb5187a921e827fd9940d0b350601e1913bdecdfc5acc62ec0ff7c6906e230950a68b39bd886ba3fe37be52e1c6117ddce1791
doc/irmin-pack.unix/Irmin_pack_unix/Dispatcher/Make/index.html
Module Dispatcher.Make
Source
Parameters
module Fm : File_manager.S with module Io = Io.Unix
Signature
module Mapping_file : Mapping_file.S with module Io = Fm.Io
An accessor
designates a valid readable area in one of the pack files.
Accessors are meant to be used from within the Irmin_pack_unix
implementation. Their validity is only checked at creation time, so they are not meant to be kept for a long time. (e.g. if kept over a GC finalisation, an accessor could no longer point to a valid area because the GC changes the domain of valid readable areas)
create_accessor_exn
returns an accessor if off
and len
designate a readable area of the pack files, otherwise it raises one of Errors.Pack_error `Read_out_of_bounds
, Errors.Pack_error (`Invalid_prefix_read _)
and Errors.Pack_error (`Invalid_read_of_gced_object _)
.
val create_accessor_from_range_exn :
t ->
off:Optint.Int63.t ->
min_len:int ->
max_len:int ->
accessor
create_accessor_from_maxlen_exn
is similar to create_accessor_exn
except that the precise length of the span will be decided during the call.
shrink_accessor_exn a ~new_len
is a
where the length is smaller than in a
.
val create_sequential_accessor_seq :
t ->
min_header_len:int ->
max_header_len:int ->
read_len:(bytes -> int) ->
(Optint.Int63.t * accessor) Irmin.Export_for_backends.Seq.t
create_sequential_accessor_seq ~min_header_len ~max_header_len ~read_len
returns a sequence of accessors, which simulates iterating sequentially trough the entries of a pack file. min_header_len
& max_header_len
represents the minimum & maximum lengths required to read the header of an entry. read_len
will then be called with a buffer containing the header of the entry and should return the total length of the entry (the length of he header plus the length of the payload)
read_exn
either reads in the prefix or the suffix file, depending on accessor
.
end_offset
is the end offsets of the pack entries, counting that the prefix doesn't start at 0. It counts the entries not yet flushed from the prefix.
offset_of_suffix_poff t suffix_off
converts a suffix offset into a (global) offset.
Simlar to read_exn
but if off + len
is greater than the end of the prefix, it will read the remaining in the prefix.
val create_accessor_to_prefix_exn :
Mapping_file.t ->
off:Optint.Int63.t ->
len:int ->
accessor
create_accessor_to_prefix_exn mapping ~off ~len
returns an accessor for the prefix file associated with mapping
.