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
=
{
capacity : int; |
init : write_buffer; |
stop : unit Async_extra__.Import.Deferred.t; |
max_ready : int; |
}
include sig ... end
val max_ready : t ‑> int
val stop : t ‑> unit Async_extra__.Import.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_extra__.Import.Deferred.t ‑> ?max_ready:int ‑> unit ‑> t