async_rpc_kernel

Platform-independent core of Async RPC library
IN THIS PACKAGE

Parameters

module Model : sig ... end

Signature

module type Version_shared = sig ... end
module Register (Version_i : sig ... end) : sig ... end

add a new version to the set of versions available via implement_multi or implement_direct.

module Register_raw (Version_i : sig ... end) : sig ... end

Register_raw is like Register except you get the whole pipe to deal with.

include S with type query := Model.query with type response := Model.response with type error := Model.error
val implement_multi : ?log_not_previously_seen_version:( name:string -> int -> unit ) -> ( 'state -> version:int -> Model.query -> ( Model.response Async_kernel.Pipe.Reader.t, Model.error ) Core_kernel.Result.t Async_kernel.Deferred.t ) -> 'state Rpc.Implementation.t list

implement multiple versions at once

val implement_direct_multi : ?log_not_previously_seen_version:( name:string -> int -> unit ) -> ( 'state -> version:int -> Model.query -> Model.response Versioned_direct_stream_writer.t -> ( unit, Model.error ) Core_kernel.Result.t Async_kernel.Deferred.t ) -> 'state Rpc.Implementation.t list

implement multiple versions at once, using a Versioned_direct_stream_writer

val rpcs : unit -> Rpc.Any.t list

All rpcs implemented by implement_multi

val versions : unit -> Core_kernel.Int.Set.t

All versions supported by implement_multi. (useful for computing which old versions may be pruned)

val name : string