Answer whether the data stream has ended.
Answer how many bytes are available in the buffer.
Answer the data that is in the buffer, and empty it.
Fill the buffer with more data if it is empty, and answer true if the fill block was able to read more data.
Set the block that fills the buffer. It receives a collection and the number of bytes to fill in it, and must return the number of bytes actually read
Answer whether the next input operation will force a buffer fill
Answer whether the buffer has been just filled
Check whether the next input operation will force a buffer fill and answer true if it will not.
Try to fill the buffer if the data stream has ended.