mirage-kv-lwt

MirageOS signatures for key/value devices
IN THIS PACKAGE
Module type Mirage_kv_lwt . RO

Read-only key-value stores

type nonrec error#row

The type for errors.

and error = private [>
| Mirage_kv.error
]

The type for errors.

val pp_error : error Fmt.t

pp_error is the pretty-printer for errors.

include Mirage_device.S with type 'a io = 'a Lwt.t
type 'a io = 'a Lwt.t

The type for potentially blocking I/O operation

type t

The type representing the internal state of the device

val disconnect : t -> unit io

Disconnect from the device. While this might take some time to complete, it can never result in an error.

type key = Mirage_kv.Key.t

The type for keys.

type value = string

The type for values.

val exists : t -> key -> ( [ `Value | `Dictionary ] option, error ) Pervasives.result io

exists t k is Some `Value if k is bound to a value in t, Some `Dictionary if k is a prefix of a valid key in t and None if no key with that prefix exists in t.

exists answers two questions: does the key exist and is it referring to a value or a dictionary.

An error occurs when the underlying storage layer fails.

val get : t -> key -> ( value, error ) Pervasives.result io

get t k is the value bound to k in t.

The result is Error (`Value_expected k) if k refers to a dictionary in t.

val list : t -> key -> ( (string * [ `Value | `Dictionary ]) list, error ) Pervasives.result io

list t k is the list of entries and their types in the dictionary referenced by k in t.

The result is Error (`Dictionary_expected k) if k refers to a value in t.

val last_modified : t -> key -> ( int * int64, error ) Pervasives.result io

last_modified t k is the last time the value bound to k in t has been modified.

The modification time (d, ps) is a span for the signed POSIX picosecond span d * 86_400e12 + ps. d is a signed number of POSIX days and ps a number of picoseconds in the range [0;86_399_999_999_999_999L].

When the value bound to k is a dictionary, the modification time is the latest modification of all entries in that dictionary. This behaviour is only one level deep and not recursive.

val digest : t -> key -> ( string, error ) Pervasives.result io

digest t k is the unique digest of the value bound to k in t.

When the value bound to k is a dictionary, the digest is a unique and deterministic digest of its entries.