package shuttle

  1. Overview
  2. Docs

Alternative to Async_unix.Reader, based on the low latency transport in async_rpc.

type 'a handle_chunk_result = [
  1. | `Stop of 'a
    (*

    Stop a indicates that the read loop's handler consumed 0 bytes and that the read loop should stop.

    *)
  2. | `Continue
    (*

    Continue indicates that the read loop's handler consumed some bytes, and would like to keep reading.

    *)
]
val sexp_of_handle_chunk_result : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a handle_chunk_result -> Ppx_sexp_conv_lib.Sexp.t
type t
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
val create : ?buf_len:int -> Async_unix.Fd.t -> t
val is_closed : t -> bool
val close : t -> unit Async_kernel.Deferred.t
val read_one_chunk_at_a_time : t -> on_chunk:(Bytebuffer.t -> 'a handle_chunk_result) -> [ `Stopped of 'a | `Eof | `Eof_with_unconsumed of Core.Bigstring.t ] Async_kernel.Deferred.t

read_one_chunk_at_a_time ~on_chunk reads bytes into the reader's internal buffer, and calls on_chunk whenever there is data available.

OCaml

Innovation. Community. Security.