1. Overview
  2. Docs

A typical receive loop implicitly calls Iobuf.flip_lo before calling its callback to prepare a packet buffer for reading by the callback and Iobuf.reset afterward to prepare for the next iteration.

It's often convenient to use the same interface for UDP, TCP, and file variants of the same protocol.

stop terminates a typical loop as soon as possible, when it becomes determined.

max_ready limits the number of receive loop iterations within an Fd.every_ready_to iteration, to prevent starvation of other Async jobs and to allow bounded busy-waiting, as on busy network sockets.

type t = {
  1. capacity : int;
  2. init : write_buffer;
  3. stop : unit Async_kernel.Deferred.t;
  4. max_ready : int;
val max_ready : t -> int
val stop : t -> unit Async_kernel.Deferred.t
val init : t -> write_buffer
val capacity : t -> int
module Fields : sig ... end
val create : ?capacity:int -> ?init:write_buffer -> ?stop:unit Async_kernel.Deferred.t -> ?max_ready:int -> unit -> t