A stream of writable items

include STREAM
type stream = Cstruct.t
type position = int32

A stream remains at a fixed position so that repeated calls to read or write process the same data. To advance the stream call advance new_position

val advance : stream -> position -> unit

advanced stream position declares that we have processed all data up to position and therefore any buffers may be recycled.

val write : stream -> position * Cstruct.t

write stream item returns writable buffers at the current position. This function does not advance the stream, so multiple calls will write at the same position. To advance the stream, call advance position