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

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
type 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 rpcs : unit -> Async_rpc_kernel.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)

val name : string