Module type Internal_event.SINK

An implementation of SINK is responsible for handling/storing events, for instance, a sink could be output to a file, to a database, or a simple "memory-less" forwarding mechanism.

type t

A sink can store any required state, e.g. a database handle, in a value of the t type see configure.

val uri_scheme : string

Registered sinks are a distinguished by their URI scheme.

val configure : Uri.t -> t Tezos_error_monad.Error_monad.tzresult Lwt.t

When a registered sink is activated the configure function is called to initialize it. The parameters should be encoded or obtained from the URI (the scheme of the URI is already uri_scheme).

val handle : t -> 'a event_definition -> ?⁠section:Section.t -> (unit -> 'a) -> unit Tezos_error_monad.Error_monad.tzresult Lwt.t

A sink's main function is to handle incoming events from the code base.

val close : t -> unit Tezos_error_monad.Error_monad.tzresult Lwt.t

A function to be called on graceful termination of processes (e.g. to flush file-descriptors, etc.).