package momento:bytes@1.0.0;
interface bytes {
// for reading from the host
resource buffer {
// Get the number of bytes currently ready to be read.
//
// `read` can return this many bytes without blocking.
remaining: func() -> u32;
// Read up to `max-size` bytes from the body.
//
// It is an error to return more than `max-size` bytes.
//
// You have no guarantee that you'll get `max-size` bytes,
// but you will never get an empty list.
//
// Returns None if there is no more data.
read: func(max-size: u32) -> option<list<u8>>;
// Advance the read cursor by `size` bytes.
advance: func(size: u32);
}
// could be bytes or a buffer reference
variant data {
// use the remainder of this buffer
buffer(buffer),
// use these literal bytes
value(list<u8>),
}
}
world imports {
import bytes;
}