Module Bin_prot.Utils

Utility functions for user convenience

val size_header_length : int

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.

val bin_read_size_header : int Read.reader
val bin_write_size_header : int Write.writer

bin_read_size_header and bin_write_size_header are bin-prot serializers for the size header described above.

val bin_dump : ?⁠header:bool ‑> 'a Type_class.writer ‑> 'a ‑> Common.buf

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.

val bin_read_stream : ?⁠max_size:int ‑> read:(Common.buf ‑> pos:int ‑> len:int ‑> unit) ‑> 'a Type_class.reader ‑> 'a

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.

Conversion of binable types

module type Make_binable_spec : sig ... end
module Of_minimal : functor (S : Binable.Minimal.S) -> Binable.S with type t := S.t
module Make_binable : functor (Bin_spec : Make_binable_spec) -> Binable.S with type t := Bin_spec.t
module type Make_binable1_spec : sig ... end
module Make_binable1 : functor (Bin_spec : Make_binable1_spec) -> Binable.S1 with type t := a Bin_spec.t
module type Make_binable2_spec : sig ... end
module Make_binable2 : functor (Bin_spec : Make_binable2_spec) -> Binable.S2 with type (a, b) t := (a, b) Bin_spec.t
module type Make_binable3_spec : sig ... end
module Make_binable3 : functor (Bin_spec : Make_binable3_spec) -> Binable.S3 with type (a, b, c) t := (a, b, c) Bin_spec.t

Conversion of iterable types

module type Make_iterable_binable_spec : sig ... end
module Make_iterable_binable : functor (Iterable_spec : Make_iterable_binable_spec) -> Binable.S with type t := Iterable_spec.t
module type Make_iterable_binable1_spec : sig ... end
module Make_iterable_binable1 : functor (Iterable_spec : Make_iterable_binable1_spec) -> Binable.S1 with type t := a Iterable_spec.t
module type Make_iterable_binable2_spec : sig ... end
module Make_iterable_binable2 : functor (Iterable_spec : Make_iterable_binable2_spec) -> Binable.S2 with type (a, b) t := (a, b) Iterable_spec.t
module type Make_iterable_binable3_spec : sig ... end
module Make_iterable_binable3 : functor (Iterable_spec : Make_iterable_binable3_spec) -> Binable.S3 with type (a, b, c) t := (a, b, c) Iterable_spec.t