Module Mavryk_raw_protocol_alpha.Storage_description

This module is responsible for building the description of the current state of the storage, which is then used to build specification of the RPC endpoints for accessing the storage. It produces resto RPC_directory.t values, which can be used directly to construct the RPC endpoint tree.

type 'key t

Typed description of the key-value context.

Trivial display of the key-value context layout.

val build_directory : 'key t -> 'key Mavryk_protocol_environment_alpha.RPC_directory.t

Export an RPC hierarchy for querying the context. There is one service by possible path in the context. Services for "directory" are able to aggregate in one JSON object the whole subtree.

val create : unit -> 'key t

Create a empty context description, keys will be registered by side effects.

Register a single key accessor at a given path.

val register_named_subcontext : 'key t -> string list -> 'key t

Return a description for a prefixed fragment of the given context. All keys registered in the subcontext will be shared by the external context

type (_, _, _) args =
  1. | One : {
    1. rpc_arg : 'a Mavryk_protocol_environment_alpha.RPC_arg.t;
    2. encoding : 'a Mavryk_protocol_environment_alpha.Data_encoding.t;
    3. compare : 'a -> 'a -> int;
    } -> ('key, 'a, 'key * 'a) args
  2. | Pair : ('key, 'a, 'inter_key) args * ('inter_key, 'b, 'sub_key) args -> ('key, 'a * 'b, 'sub_key) args

Description of an index as a sequence of `RPC_arg.t`.

val register_indexed_subcontext : 'key t -> list: ('key -> 'arg list Mavryk_protocol_environment_alpha.Error_monad.tzresult Mavryk_protocol_environment_alpha.Lwt.t) -> ('key, 'arg, 'sub_key) args -> 'sub_key t

Return a description for a indexed sub-context. All keys registered in the subcontext will be shared by the external context. One should provide a function to list all the registered index in the context.

Helpers for manipulating and defining indexes.

val pack : ('key, 'a, 'sub_key) args -> 'key -> 'a -> 'sub_key
val unpack : ('key, 'a, 'sub_key) args -> 'sub_key -> 'key * 'a
module type INDEX = sig ... end