Module One_way.Make
Given a model of the types involved in a family of RPCs, this functor provides a single multi-version implementation function implement_multi
in terms of that model and a mechanism for registering the individual versions that implement_multi
knows about. Registration requires knowing how to get into the model.
M1 -->-. \ M2 -->-- M / M3 -->-´
Parameters
Model : sig ... end
Signature
module Register : functor (Version_i : sig ... end) -> sig ... end
Add a new version to the set of versions implemented by
implement_multi
.
include S with type msg := Model.msg
val implement_multi : ?log_not_previously_seen_version:(name:string -> int -> unit) -> ('state -> version:int -> msg -> unit) -> 'state Rpc.Implementation.t list
implement multiple versions at once
val rpcs : unit -> Rpc.Any.t list
All rpcs implemented by
implement_multi
val versions : unit -> Core_kernel.Int.Set.t
All versions implemented by
implement_multi
. (useful for computing which old versions may be pruned)