package irmin-pack
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=92a9de7a0a2a35c2feba0c35a806b1f0df24c1c0d15164eebf3f919296d26715
sha512=0203ec5117a851ad5afeb2f9091659b4e142e231b6b945caab93f4d7beb23397c8ac43f7056e91d18f4bff0be1062f6ae966d221f877c229328c0cbbf29fd9f0
doc/irmin-pack.mem/Irmin_pack_mem/Maker/Make/Backend/Node/Contents/index.html
Module Node.Contents
Contents
is the underlying contents store.
An indexable store is a read-write store in which values can be added and later found via their keys.
Keys are not necessarily portable between different stores, so each store provides an index
mechanism to find keys by the hashes of the values they reference.
Read-only stores
Read-only stores are store where it is only possible to read existing values.
type key = Val.contents_key
The type for keys.
find t k
is Some v
if k
is associated to v
in t
and None
is k
is not present in t
.
close t
frees up all the resources associated with t
. Any operations run on a closed handle will raise Closed
.
Write the contents of a value to the store, and obtain its key.
Same as add
but allows specifying the value's hash directly. The backend might choose to discard that hash and/or can be corrupt if the hash is not consistent.
Indexing maps the hash of a value to a corresponding key of that value in the store. For stores that are addressed by hashes directly, this is typically fun _t h -> Lwt.return (Key.of_hash h)
; for stores with more complex addressing schemes, index
may attempt a lookup operation in the store.
In general, indexing is best-effort and reveals no information about the membership of the value in the store. In particular:
index t hash = Some key
doesn't guaranteemem t key
: the value with hashhash
may still be absent from the store;
index t hash = None
doesn't guarantee that there is nokey
such thatmem t key
andKey.to_hash key = hash
: the value may still be present in the store under a key that is not indexed.
val batch :
Irmin__.Import.read t ->
([ Irmin__.Import.read | Irmin__.Import.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.
module Key : sig ... end
merge t
lifts the merge functions defined on contents values to contents key. The merge function will: (i) read the values associated with the given keys, (ii) use the merge function defined on values and (iii) write the resulting values into the store to get the resulting key. See val-S.merge
.
If any of these operations fail, return `Conflict
.
module Val : sig ... end
module Hash : sig ... end