package irmin-pack

  1. Overview
  2. Docs
Irmin backend which stores values in a pack file

Install

Dune Dependency

Authors

Maintainers

Sources

irmin-3.5.1.tbz
sha256=cd788a8d3f4a3dd18dc160a153d4aec91eaf6b0fb41ad41464d26c79c304a98e
sha512=4f97862678d35e0b4aa814a1df51d6f8c59bcf5b611c73f0a475f9b5386ca42a4a18e65ce80fc425ddad93fcdacfcb563c52f6423777610a0bc567902f4db088

doc/irmin-pack.unix/Irmin_pack_unix/Dispatcher/Make/argument-1-Fm/Mapping_file/index.html

Module Fm.Mapping_file

type t

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 = Io
module Errs : Io_errors.S with module Io = Io
type open_error := [
  1. | `Corrupted_mapping_file of string
  2. | `No_such_file_or_directory
]
val create : ?report_file_sizes:(file_sizes -> unit) -> root:string -> generation:int -> register_entries: (register_entry:(off:Optint.Int63.t -> len:int -> unit) -> 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.

type entry = {
  1. off : Optint.Int63.t;
  2. poff : Optint.Int63.t;
  3. len : int;
}
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

OCaml

Innovation. Community. Security.