Module Mavryk_validation.Protocol_plugin

module type T = sig ... end

Type of a protocol accompanied with its main plugin (aka the validation & mempool plugin).

module type RPC = sig ... end

Type of a protocol-specific RPC plug-in.

To use when no registered plugin is found. This module is functional; it just misses on the smarter logic that a plugin can add on top of the protocol.

module type METRICS = sig ... end

This is a protocol specific module that is used to collect all the * protocol-specific metrics. This module * allows to decode protocol data payload and provide back basic * types that can be used as metrics.

module Undefined_metrics_plugin (P : sig ... end) : METRICS

Emtpy metrics module. All metrics are -1.

val register_validation_plugin : (module T) -> unit

Register a validation plugin for a specific protocol (according to its Proto.hash).

val register_rpc : (module RPC) -> unit

Registers a RPC plug-in for a specific protocol

val register_metrics : (module METRICS) -> unit

Register a metrics plugin module

Retrieves the registered protocol with the provided hash and wraps it together with its validation plugin.

If no validation plugin has been registered for the protocol, then uses No_plugin which is functional, but not as smart as a protocol-specific plugin.

Returns the error Block_validator_errors.Unavailable_protocol when there is no registered protocol with the given hash.

The block_hash argument is only used as additional information for the potential aforementioned error.

val find_rpc : Mavryk_base.TzPervasives.Protocol_hash.t -> (module RPC) option

Looks for an rpc plug-in for a specific protocol.

val find_metrics : Mavryk_base.TzPervasives.Protocol_hash.t -> (module METRICS) option

Looks for a metrics plugin module for a specific protocol

val safe_find_metrics : Mavryk_base.TzPervasives.Protocol_hash.t -> (module METRICS) Lwt.t

Same as find_metrics but returns Undefined_metrics_plugin if not found