package babel

  1. Overview
  2. Docs

Module Caller.Pipe_rpc_exnSource

High level functions for working with callers in the style of Async.Rpc.Pipe_rpc.dispatch_exn.

type ('q, 'r) dispatch := 'q -> ('r Async_kernel.Pipe.Reader.t * Async_rpc_kernel.Rpc.Pipe_rpc.Metadata.t) Async_kernel.Deferred.t

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

Sourceval singleton : ('q, 'r, _) Async_rpc_kernel.Rpc.Pipe_rpc.t -> ('q, 'r) dispatch t

Create a new caller supporting a single rpc.

Sourceval add : ('q, 'r) dispatch t -> rpc:('q, 'r, 'e) Async_rpc_kernel.Rpc.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.

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

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

Sourceval 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.Pipe_rpc_exn.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.

Sourceval 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.