(conv) (conv) (conv) (conv) caller callee callee caller | | | | | | | | Q.caller ---->-- Q1 -->-. (impl) .->-- R1 -->---- R.caller \ \ callee / / \--->-- Q2 -->---\ | /--->-- R2 -->---/ \ \ | / / `->-- Q3 -->---- Q.callee --> R.callee ---->-- R3 -->-´
val dispatch_multi : Connection_with_menu.t ‑> caller_query ‑> (caller_response Core_kernel.Or_error.t Async_kernel.Pipe.Reader.t * Async_rpc_kernel.Rpc.Pipe_rpc.Metadata.t, caller_error) Core_kernel.Result.t Core_kernel.Or_error.t Async_kernel.Deferred.t
multi-version dispatch
val dispatch_iter_multi : Connection_with_menu.t ‑> caller_query ‑> f:(caller_response Async_rpc_kernel.Rpc.Pipe_rpc.Pipe_message.t ‑> Async_rpc_kernel.Rpc.Pipe_rpc.Pipe_response.t) ‑> (Async_rpc_kernel.Rpc.Pipe_rpc.Id.t, caller_error) Core_kernel.Result.t Core_kernel.Or_error.t Async_kernel.Deferred.t
val implement_multi : ?log_not_previously_seen_version:(name:string ‑> int ‑> unit) ‑> ('state ‑> version:int ‑> callee_query ‑> (callee_response Async_kernel.Pipe.Reader.t, callee_error) Core_kernel.Result.t Async_kernel.Deferred.t) ‑> 'state Async_rpc_kernel.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 ‑> callee_query ‑> callee_response Versioned_direct_stream_writer.t ‑> (unit, callee_error) Core_kernel.Result.t Async_kernel.Deferred.t) ‑> 'state Async_rpc_kernel.Rpc.Implementation.t list
val versions : unit ‑> Core_kernel.Int.Set.t
All supported versions. Useful for detecting old versions that may be pruned.