Invokes consume with the data that are currently available and haven't
yet been consumed.
If the amount of data is sufficient, consume must return the number of
bytes it consumed. Otherwise if consume consumed all data and needs more
input data to be read from the I/O device, it must return a value
greater than the number of data bytes passed to it.
Invokes consume to consume the available data until consume indicates to
be finished or all available data is consumed.
Invokes consume with the data that are currently available and haven't yet been consumed. If the amount of data is sufficient, consume must return the number of bytes it consumed. Otherwise if consume consumed all data and needs more input data to be read from the I/O device, it must return a value greater than the number of data bytes passed to it.
Invokes consume to consume the available data until consume indicates to be finished or all available data is consumed.