package mirage-flow-combinators

  1. Overview
  2. Docs

In-memory, function-based flows.

include Mirage_flow.S
type error
val pp_error : error Fmt.t
type nonrec write_error = private [>
  1. | Mirage_flow.write_error
]
val pp_write_error : write_error Fmt.t
type flow
val read : flow -> (Cstruct.t Mirage_flow.or_eof, error) Stdlib.result Lwt.t
val write : flow -> Cstruct.t -> (unit, write_error) Stdlib.result Lwt.t
val writev : flow -> Cstruct.t list -> (unit, write_error) Stdlib.result Lwt.t
val close : flow -> unit Lwt.t
type refill = Cstruct.t -> int -> int -> int Lwt.t

The type for refill functions.

val make : ?close:(unit -> unit Lwt.t) -> ?input:refill -> ?output:refill -> unit -> flow

make ~close ~input ~output () is a flow using input to refill its internal input buffer when needed and output to refill its external output buffer. It is using close to eventually clean-up other resources on close.

String flows

val input_string : string -> refill

input_string buf is the refill function reading its inputs from the string buf.

val output_bytes : bytes -> refill

output_bytes buf is the refill function writing its outputs in the buffer buf.

val string : ?input:string -> ?output:bytes -> unit -> flow

The flow built using input_string and output_bytes.

val input_strings : string list -> refill

input_strings bufs is the refill function reading its inputs from the list of buffers bufs. Empty strings are ignored.

val output_bytess : bytes list -> refill

output_bytess buf is the refill function writing its outputs in the list of buffers buf. Empty strings are ignored.

val strings : ?input:string list -> ?output:bytes list -> unit -> flow

The flow built using input_strings and output_bytess.

Cstruct buffers flows

val input_cstruct : Cstruct.t -> refill

Same as input_string but for Cstruct.t buffers.

val output_cstruct : Cstruct.t -> refill

Same as output_string buf for Cstruct.t buffers.

val cstruct : ?input:Cstruct.t -> ?output:Cstruct.t -> unit -> flow

Same as string but for Cstruct.t buffers.

val input_cstructs : Cstruct.t list -> refill

Same as input_strings but for Cstruct.t buffers.

val output_cstructs : Cstruct.t list -> refill

Same as output_strings but for Cstruct.t buffers.

val cstructs : ?input:Cstruct.t list -> ?output:Cstruct.t list -> unit -> flow

Same as strings but for Cstruct.t buffers.

OCaml

Innovation. Community. Security.