package async
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=fef9ebe342ea59d7804f6292b7891ad664a8ba8d4174a1b202db91363a9c71ab
md5=fbfc7059179bc9ddd5dc1411e7d2e815
doc/async.unpack_sequence/Unpack_sequence/index.html
Module Unpack_sequence
Unpack_sequence
uses an Unpack_buffer.t
to unpack a sequence of packed values coming from a string Pipe.Reader.t
or a Reader.t
. It can produce a pipe of upacked values or iterate a user-supplied function over the unpacked values.
module Unpack_iter_result : sig ... end
module Unpack_result : sig ... end
module Unpack_from : sig ... end
Unpack_from
specifies the source of the sequence of bytes to unpack from.
val unpack_into_pipe :
from:Unpack_from.t ->
using:'a Unpack_buffer.t ->
'a Async.Pipe.Reader.t * 'a Unpack_result.t Async.Deferred.t
unpack_into_pipe ~from:input ~using:unpack_buffer
returns (output, result)
, and uses unpack_buffer
to unpack values from input
until input
is closed. It puts the unpacked values into output
, which is closed once unpacking finishes, be it normally or due to an error. result
indicates why unpacking finished.
To unpack from a bin_reader
, use:
unpack_into_pipe ~from ~using:(Unpack_buffer.create_bin_prot bin_reader)
Using ~from:(Reader reader)
is more efficient than ~from:(Pipe (Reader.pipe reader))
because it blits bytes directly from the reader buffer to the unpack buffer, without any intervening allocation.
val unpack_iter :
from:Unpack_from.t ->
using:'a Unpack_buffer.t ->
f:('a -> unit) ->
'a Unpack_iter_result.t Async.Deferred.t
unpack_iter
is a more efficient version of unpack_into_pipe
that calls f
on each value as it is unpacked, rather than putting the value into a pipe. If f
raises, then the result will be Unpack_error
.