Mavryk_raw_protocol_alpha.Services_registration
Functions for RPC service registration, using Updater.rpc_context
and RPC_service.t
from the Protocol Environment.
This module is a frontend to a mutable service directory. The various register
functions update the directory as a side-effect.
The get_rpc_services
function returns the resulting RPC_context
. It is parameterized by Updater.rpc_context
which acts as the service prefix (in practice meaning this type will be passed to each handler). Hence, Protocol RPC services provide a read-only view of the Ledger state.
type rpc_context = {
block_hash : Mavryk_protocol_environment_alpha.Block_hash.t;
block_header : Alpha_context.Block_header.shell_header;
context : Alpha_context.t;
}
val rpc_init :
Mavryk_protocol_environment_alpha.Updater.rpc_context ->
[ `Head_level | `Successor_level ] ->
rpc_context Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
rpc_init rpc_context mode
allows to instantiate an rpc_context
using the Alpha_context
representation from a raw context representation (the one the shell knows).
If mode = `Head_level
, the Alpha_context
uses the same level as the head of the chain (given by rpc_context.block_header
).
If mode= `Successor_level
, the Alpha_context
uses the successor level of the head.
This function aims to be used by RPCs, in particular by RPCs which simulate an operation to determine the fees/gas of an operation. Using the `Head_level
can be dangerous if some storage paths depend on the level. Using the successor level allows to ensure that the simulation is done on a fresh level.
val register0 :
chunked:bool ->
([< Mavryk_protocol_environment_alpha.RPC_service.meth ],
Mavryk_protocol_environment_alpha.Updater.rpc_context,
Mavryk_protocol_environment_alpha.Updater.rpc_context,
'a,
'b,
'c)
Mavryk_protocol_environment_alpha.RPC_service.t ->
(Alpha_context.t ->
'a ->
'b ->
'c Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t) ->
unit
val register0_noctxt :
chunked:bool ->
([< Mavryk_protocol_environment_alpha.RPC_service.meth ],
Mavryk_protocol_environment_alpha.Updater.rpc_context,
'a,
'b,
'c,
'd)
Mavryk_protocol_environment_alpha.RPC_service.t ->
('b ->
'c ->
'd Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t) ->
unit
val register1 :
chunked:bool ->
([< Mavryk_protocol_environment_alpha.RPC_service.meth ],
Mavryk_protocol_environment_alpha.Updater.rpc_context,
Mavryk_protocol_environment_alpha.Updater.rpc_context * 'a,
'b,
'c,
'd)
Mavryk_protocol_environment_alpha.RPC_service.t ->
(Alpha_context.t ->
'a ->
'b ->
'c ->
'd Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t) ->
unit
val register2 :
chunked:bool ->
([< Mavryk_protocol_environment_alpha.RPC_service.meth ],
Mavryk_protocol_environment_alpha.Updater.rpc_context,
(Mavryk_protocol_environment_alpha.Updater.rpc_context * 'a) * 'b,
'c,
'd,
'e)
Mavryk_protocol_environment_alpha.RPC_service.t ->
(Alpha_context.t ->
'a ->
'b ->
'c ->
'd ->
'e Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t) ->
unit
val opt_register0 :
chunked:bool ->
([< Mavryk_protocol_environment_alpha.RPC_service.meth ],
Mavryk_protocol_environment_alpha.Updater.rpc_context,
Mavryk_protocol_environment_alpha.Updater.rpc_context,
'a,
'b,
'c)
Mavryk_protocol_environment_alpha.RPC_service.t ->
(Alpha_context.t ->
'a ->
'b ->
'c option Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t) ->
unit
val opt_register1 :
chunked:bool ->
([< Mavryk_protocol_environment_alpha.RPC_service.meth ],
Mavryk_protocol_environment_alpha.Updater.rpc_context,
Mavryk_protocol_environment_alpha.Updater.rpc_context * 'a,
'b,
'c,
'd)
Mavryk_protocol_environment_alpha.RPC_service.t ->
(Alpha_context.t ->
'a ->
'b ->
'c ->
'd option Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t) ->
unit
val opt_register2 :
chunked:bool ->
([< Mavryk_protocol_environment_alpha.RPC_service.meth ],
Mavryk_protocol_environment_alpha.Updater.rpc_context,
(Mavryk_protocol_environment_alpha.Updater.rpc_context * 'a) * 'b,
'c,
'd,
'e)
Mavryk_protocol_environment_alpha.RPC_service.t ->
(Alpha_context.t ->
'a ->
'b ->
'c ->
'd ->
'e option Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t) ->
unit
val get_rpc_services :
unit ->
Mavryk_protocol_environment_alpha.Updater.rpc_context
Mavryk_protocol_environment_alpha.RPC_directory.directory