package babel

  1. Overview
  2. Docs

High level functions for working with callers in the style of Streamable.Pipe_rpc.dispatch.

Determine which supported dispatch strategy to use and invoke the chosen rpcs. To unsubscribe, you can close the pipe.

val singleton : ('q, 'r) Streamable.Pipe_rpc.t -> ('q, 'r) dispatch t

Create a new caller supporting a single rpc.

val add : ('q, 'r) dispatch t -> rpc:('q, 'r) Streamable.Pipe_rpc.t -> ('q, 'r) dispatch t

Add support for dispatching another rpc. dispatch_multi will prefer this rpc over the ones the caller already supports.

val map_query : ('q1, 'r) dispatch t -> f:('q2 -> 'q1) -> ('q2, 'r) dispatch t

A specialization of map for the query type of a protocol.

val map_response : ('q, 'r1) dispatch t -> f:('r1 -> 'r2) -> ('q, 'r2) dispatch t

A specialization of map for the response type of a protocol.

Sometimes, Caller.Streamable_pipe_rpc.map_response is not sufficient. For example, sometimes it might not be possible to convert the response to the desired type, in which case it may be appropriate to drop the value from the pipe entirely. For such cases, use Caller.map_response instead. It gives you access to the pipe itself, not just the values inside it, allowing you to use something like Pipe.filter_map.

val filter_map_response : ('q, 'r1) dispatch t -> f:('r1 -> 'r2 option) -> ('q, 'r2) dispatch t

Same as map_response but filters out some responses from the response pipe

OCaml

Innovation. Community. Security.