package shuttle

  1. Overview
  2. Docs
type t
val sexp_of_t : t -> Sexplib0.Sexp.t
type slice = private {
  1. buf : Core.Bigstring.t;
  2. pos : int;
  3. len : int;
}
val create : ?max_buffer_size:int -> ?buf_len:int -> ?time_source:[> Core.read ] Async_kernel.Time_source.T1.t -> Async_unix.Fd.t -> t
val is_closed : t -> bool
val closed : t -> unit Async_kernel.Deferred.t
val close : t -> unit Async_kernel.Deferred.t
val refill : t -> [> `Ok | `Eof ] Async_kernel.Deferred.t
exception Timeout
val refill_with_timeout : t -> Core.Time_ns.Span.t -> [> `Ok | `Eof ] Async_kernel.Deferred.t
val view : t -> slice
val consume : t -> int -> unit
val drain : t -> unit Async_kernel.Deferred.t

drain t reads chunks of data from the reader and discards them.

val pipe : t -> string Async_kernel.Pipe.Reader.t

pipe returns a reader pipe that contains the results of reading chunks from an input_channel.

val transfer : t -> string Async_kernel.Pipe.Writer.t -> unit Async_kernel.Deferred.t

transfer will read chunks from an input channel and write them to the provided writer end of an async pipe. The deferred returned by the function will be determined on EOF or if the writer is closed. Use transfer in scenarios where pipe is needed, but if there is a need to not close the channel automatically once the transfer is finished.