package irmin

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

RW_MAKER is the signature exposed by read-write store backends. K is the implementation of keys and V is the implementation of values.

Parameters

module K : Contents.Conv
module V : Contents.Conv

Signature

include RW with type key = K.t and type value = V.t

Read-write stores

Read-write stores read-only stores where it is also possible to update and remove elements, with atomically guarantees.

include RO with type key = K.t with type value = V.t

Read-only stores

type t

The type for read-only backend stores.

type key = K.t

The type for keys.

type value = V.t

The type for raw values.

val mem : t -> key -> bool Lwt.t

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

val find : 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 set : t -> key -> value -> unit Lwt.t

set t k v replaces the contents of k by v in t. If k is not already defined in t, create a fresh binding. Raise Invalid_argument if k is the empty path.

val test_and_set : t -> key -> test:value option -> set:value option -> bool Lwt.t

test_and_set t key ~test ~set sets key to set only if the current value of key is test and in that case returns true. If the current value of key is different, it returns false. None means that the value does not have to exist or is removed.

Note: The operation is guaranteed to be atomic.

val remove : t -> key -> unit Lwt.t

remove t k remove the key k in t.

val list : t -> key list Lwt.t

list t it the list of keys in t. RW stores are typically smaller than AO stores, so scanning these is usually cheap.

type watch

The type of watch handlers.

val watch : t -> ?init:(key * value) list -> (key -> value diff -> unit Lwt.t) -> watch Lwt.t

watch t ?init f adds f to the list of t's watch handlers and returns the watch handler to be used with unwatch. init is the optional initial values. It is more efficient to use watch_key to watch only a single given key.

val watch_key : t -> key -> ?init:value -> (value diff -> unit Lwt.t) -> watch Lwt.t

watch_key t k ?init f adds f to the list of t's watch handlers for the key k and returns the watch handler to be used with unwatch. init is the optional initial value of the key.

val unwatch : t -> watch -> unit Lwt.t

unwatch t w removes w from t's watch handlers.

val v : config -> t Lwt.t

v config is a function returning fresh store handles, with the configuration config, which is provided by the backend.