Internal.Dispatcher
module Fm : Irmin_pack_unix.File_manager.S
Abstraction that governs the lifetime of the various files that are part of a pack store (except the branch store).
val read_exn :
t ->
off:Optint.Int63.t ->
len:int ->
?volume_identifier:Irmin_pack_unix.Lower.volume_identifier ->
bytes ->
Irmin_pack_unix.Lower.volume_identifier option
read_exn t ~off ~len buffer
writes into buffer
the bytes from off
to off+len
. If the read occurred, in a lower volume, its identifier is returned.
If you know which volume to read from in the lower, provide volume_identifier
to skip checking the prefix.
Note: read_exn
is the only read function that supports reading in the lower.
val read_range_exn :
t ->
off:Optint.Int63.t ->
min_len:int ->
max_len:int ->
?volume_identifier:Irmin_pack_unix.Lower.volume_identifier ->
bytes ->
int * Irmin_pack_unix.Lower.volume_identifier option
Same as read_exn
, the amount read is max_len
if possible or at least min_len
if reading more would step over a hole in the sparse file. Returns the actually read length and optionnaly the volume where the data was found.
val end_offset : t -> Optint.Int63.t
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.
val suffix_start_offset : t -> Optint.Int63.t
suffix_start_offset
is the offsets of the first pack entry in the suffix. All pack entries in the prefix fit below suffix_start_offset
.
val offset_of_soff : t -> Optint.Int63.t -> Optint.Int63.t
offset_of_soff t suffix_off
converts a suffix offset into a (global) offset.
val soff_of_offset : t -> Optint.Int63.t -> Optint.Int63.t
soff_of_offset t global_offset
converts a global offset to a suffix offset.
val read_seq_exn :
t ->
off:Optint.Int63.t ->
len:Optint.Int63.t ->
string Irmin.Export_for_backends.Seq.t
val read_bytes_exn :
t ->
f:(string -> unit) ->
off:Optint.Int63.t ->
len:Optint.Int63.t ->
unit
read_bytes_exn
reads a slice of the global offset space defined by off
and len
.
The calls to f
ignore the objects boundaries (i.e. the string passed to f
will most of the time not be the beginning of an object).
The strings passed to f
are safe. They can be kept around, they are not the result of an unsafe_to_string
conversion.
The call will fail if the (off, len)
range is invalid. It will succeed in these cases:
val next_valid_offset : t -> off:Optint.Int63.t -> Optint.Int63.t option
next_valid_offset t ~off
returns an offset greater or equal to off
that can be read. Used to iterate over the entries while skipping over the holes in the sparse file.