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 -->-ยด
Model : sig ... end
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 Async_rpc_kernel.Rpc.Implementation.t list
implement multiple versions at once
val versions : unit ‑> Core_kernel.Int.Set.t
All versions implemented by implement_multi
.
(useful for computing which old versions may be pruned)