Utility functions for user convenience
size_header_length
is the standard number of bytes allocated for the size header in
size-prefixed bin-io payloads. This size-prefixed layout is used by the bin_dump
and bin_read_stream
functions below, as well as:
The size prefix is always 8 bytes at present. This is exposed so your program does not have to know this fact too.
We do not use a variable length header because we want to know how many bytes to read to get the size without having to peek into the payload.
bin_dump ?header writer v
uses writer
to first compute the size of
v
in the binary protocol, then allocates a buffer of exactly this
size, and then writes out the value. If header
is true
, the
size of the resulting binary string will be prefixed as a signed
64bit integer.
false
Failure
if the size of the value changes during writing,
and any other exceptions that the binary writer in writer
can raise.
bin_read_stream ?max_size ~read reader
reads binary protocol data
from a stream as generated by the read
function, which places
data of a given length into a given buffer. Requires a header.
The reader
type class will be used for conversion to OCaml-values.
Failure
if the size of the value disagrees with the one
specified in the header, and any other exceptions that the binary
reader associated with reader
can raise.
Failure
if the size reported in the data header is longer than
max_size
.
Conversion of binable types
Conversion of iterable types