package irmin-pack
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=6e430cf44aee5ffdc94f6bfad8dbc401e3ea036ed1fbcf2a8697198ecbf6d412
sha512=b969d0913f0776384fafc4f138cb5187a921e827fd9940d0b350601e1913bdecdfc5acc62ec0ff7c6906e230950a68b39bd886ba3fe37be52e1c6117ddce1791
doc/irmin-pack.unix/Irmin_pack_unix/Dispatcher/Make/Mapping_file/index.html
Module Make.Mapping_file
A mapping file is a collection of chunks which contain 3 integers. A length, the global offset (off
) of the chunk and the offset of the chunk in the prefix file (poff
).
The chunks have consecutive poff
with respect to their lengths.
There is no need to close a t
because its underlying file-descriptor is always closed.
module Io = Fm.Io
module Errs : Io_errors.S with module Io = Io
val create :
root:string ->
generation:int ->
register_entries:
(register_entry:(off:Optint.Int63.t -> len:int -> unit) -> unit) ->
(t, Errs.t) result
create
creates inside the directory root
a mapping file. It never raises exceptions.
register_entries
is a user callback that is responsible for calling register_entry
for each live entry. Duplicates allowed, no specfic order expected.
Returns an error if the platform is not 64bits.
Creates temporary files in root
that are unlinked before the function returns.
val open_map : root:string -> generation:int -> (t, [> open_error ]) result
open_map ~root ~generation
opens a mapping file.
val iter :
t ->
(off:Optint.Int63.t -> len:int -> unit) ->
(unit, Errs.t) result
iter mapping f
calls f
on each (off,len)
pair in mapping
.
It is guaranteed for the offsets to be iterated in monotonic order.
It is guaranteed that entries don't overlap.
The exceptions raised by f
are caught and returned (as long as they are known by Errs
).
val iter_exn : t -> (off:Optint.Int63.t -> len:int -> unit) -> unit
Similar to iter mapping f
but raises exceptions.
val find_nearest_leq : t -> Optint.Int63.t -> entry option
find_nearest_leq t off
returns the entry in t
whose offset is the nearest <=
the given off