Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
Module mimicking Async.Pipe
type 'a writer = ('a, {writer_phantom}3) pipe
type 'a reader = ('a, {reader_phantom}4) pipe
val create_reader : f:('a writer -> unit Deferred.t) -> 'a reader
Create a reader given a function f that fills the reader. Once f completes, the reader is closed
val create_writer : f:('a reader -> unit Deferred.t) -> 'a writer
Create a writer given a function f that reads off the writer. Once f completes, the writer is closed
Create a reader/writer pipe. Data written to the reader can be read by the writer. Closing one end will close both ends.
val flush : 'a writer -> unit Deferred.t
Flush a writer. The result we be determined once all elements in the pipe has been consumed
val write : 'a writer -> 'a -> unit Deferred.t
Write to a writer. If the writer is closed, the function raises an exception
val close : 'a writer -> unit
Close a writer
val close_reader : 'a reader -> unit
Close a reader
val read : 'a reader -> 'a option Deferred.t
Read one element from a reader. The function will block until an element becomes available or the reader is closed, in which case None
is returned
val transfer : 'a reader -> 'a writer -> unit Deferred.t
Transfer all data from the reader to the writer. The function becomes determined when the reader or writer is closed
val is_closed : ('a, 'b) pipe -> bool
Return the state of a pipe
val closed : ('a, 'b) pipe -> unit Deferred.t
Wait for a pipe to be closed. The function is determined once the pipe is closed. the function can be called multiple times.
Note that not all elements may have been consumed yet.