package irmin-pack

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Save multiple kind of values in the same pack file. Values will be distinguished using V.magic, so they have to all be different.

Parameters

module V : sig ... end

Signature

include Irmin.CONTENT_ADDRESSABLE_STORE with type key = key with type value = V.t

Content-addressable stores

Content-addressable stores are store where it is possible to read and add new values. Keys are derived from the values raw contents and hence are deterministic.

type -'a t

The type for content-addressable backend stores. The 'a phantom type carries information about the store mutability.

type key = key

The type for keys.

type value = V.t

The type for raw values.

val mem : [> Irmin.Perms.read ] t -> key -> bool Lwt.t

mem t k is true iff k is present in t.

val find : [> Irmin.Perms.read ] t -> key -> value option Lwt.t

find t k is Some v if k is associated to v in t and None is k is not present in t.

val add : 'a t -> value -> key Lwt.t

Overwrite add to work with a read-only database handler.

val unsafe_add : 'a t -> key -> value -> unit Lwt.t

Overwrite unsafe_add to work with a read-only database handler.

type index = index
val v : ?fresh:bool -> ?readonly:bool -> ?lru_size:int -> index:index -> string -> Irmin.Perms.read t Lwt.t
val batch : Irmin.Perms.read t -> ([ Irmin.Perms.read | Irmin.Perms.write ] t -> 'a Lwt.t) -> 'a Lwt.t

batch t f applies the writes in f in a separate batch. The exact guarantees depend on the implementation.

val unsafe_append : ensure_unique:bool -> overcommit:bool -> 'a t -> key -> value -> unit
val unsafe_mem : 'a t -> key -> bool
val unsafe_find : check_integrity:bool -> 'a t -> key -> value option
val flush : ?index:bool -> ?index_merge:bool -> 'a t -> unit
val sync : ?on_generation_change:(unit -> unit) -> 'a t -> unit

syncs a readonly instance with the files on disk. The same file instance is shared between several pack instances. Therefore only the first pack instance that checks a generation change, can see it. on_generation_change is a callback for all pack instances to react to a generation change.

val version : 'a t -> [ `V1 | `V2 ]
val generation : 'a t -> int64
val offset : 'a t -> int64
val integrity_check : offset:int64 -> length:int -> key -> _ t -> (unit, [ `Wrong_hash | `Absent_value ]) result
include Irmin.Export_for_backends.Store_properties.CLOSEABLE with type 'a t := 'a t
val close : 'a t -> unit Lwt.t

close t frees up all the resources associated with t. Any operations run on a closed handle will raise Closed.

include Irmin.Export_for_backends.Store_properties.CLEARABLE with type 'a t := 'a t
val clear : 'a t -> unit Lwt.t

Clear the store. This operation is expected to be slow.

val clear_caches : 'a t -> unit

clear_cache t clears all the in-memory caches of t. Persistent data are not removed.

val clear_keep_generation : 'a t -> unit Lwt.t