package async
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=74f2b7b01ce3b92289cc7a68cd3ae53885c763cedd320d27949d585e5c13dc64
md5=9f80cfb72e3defcc9fca50f67e23e93c
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 unpacked 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
.