A stream of writable items
include STREAM
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
advanced stream position
declares that we have processed all data up to position
and therefore any buffers may be recycled.
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