`Mirage_kv.RO`

The type for errors.

`val pp_error : error Fmt.t`

`pp_error`

is the pretty-printer for errors.

`val disconnect : t -> unit Lwt.t`

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

`type key = Key.t`

The type for keys.

`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.

`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`

.

`get_partial t k ~offset ~length`

is the `length`

bytes wide value bound at `offset`

of `k`

in `t`

.

If the size of `k`

is less than `offset`

, `get_partial`

returns an empty string. If the size of `k`

is less than `offset`

+`length`

, `get_partial`

returns a short string. The result is `Error (`Value_expected k)`

if `k`

refers to a dictionary in `t`

.

`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`

.

`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.

`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.