package octez-libs
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=c6df840ebbf115e454db949028c595bec558a59a66cade73b52a6d099d6fa4d4
sha512=d8aee903b9fe130d73176bc8ec38b78c9ff65317da3cb4f3415f09af0c625b4384e7498201fdb61aa39086a7d5d409d0ab3423f9bc3ab989a680cf444a79bc13
doc/octez-libs.stdlib/Tezos_stdlib/Circular_buffer/index.html
Module Tezos_stdlib.Circular_buffer
Source
This module implements a bufferisation abstraction to store temporary raw data chunks (as bytes) when chunks are read sequentially. The function write
allows to store chunks in the buffer and the function read to read them from the buffer.
The global contract is that if we write consecutively d1;d2
onto the buffer, then we have to fully read d1
and d2
, in that order.
This contract is not enforced by the library, it is the user responsibility to respect it.
If the circular buffer is full, a new temporary buffer is allocated to store the chunk of data to be written.
Type of circular buffers
An abstraction over a chunk of data written in the buffer.
create ?maxlength ?fresh_buf_size ()
creates a buffer of size maxlength
(by default 32
kb). If the buffer is full, a buffer of size fresh_buf_size
is allocated (by default 2
kb).
val write :
maxlen:int ->
fill_using:(Bytes.t -> int -> int -> (int, 'error) result Lwt.t) ->
t ->
(data, 'error) result Lwt.t
write ~maxlen ~fill_using buffer
calls fill_using buf offset maxlen
where buf
is a buffer that has room for maxlen
data starting from offset
.
Assumes that fill_using
returns the exact amount of written bytes.
Behaviour is unspecified if fill_using
writes more than maxlen
data or lies on the number of written bytes.
It returns a data descriptor for the supposedly written chunk.
read data ~len ~into:buf buffer ~offset
copies len
data from the data
chunk into buf
. If len
is not provided, it copies all the data. If len
is less than the amount of data available, it returns a new handler of the remainder.
- Assumes that
data
has been produced by awrite
attempt inbuffer
. - Assumes that
len
is less thanlength data
.