Attempts to fill the buffer with at least byteCount bytes of data from the underlying source and returns a value indicating if the requirement was successfully fulfilled.
false
value returned by this method indicates that the underlying source was exhausted before filling the buffer with byteCount bytes of data.
Parameters
the number of bytes that the buffer should contain.
Throws
when the source is closed.
when some I/O error occurs.
Samples
import kotlinx.io.*
import kotlin.test.*
fun main() {
val singleByteSource = object : RawSource {
private var exhausted = false
override fun readAtMostTo(sink: Buffer, byteCount: Long): Long = when {
byteCount == 0L -> 0L
exhausted -> -1L
else -> {
exhausted = true
sink.writeByte(42)
1L
}
}
override fun close() = Unit
}
val source = singleByteSource.buffered()
assertTrue(source.request(1))
assertEquals(-1, singleByteSource.readAtMostTo(Buffer(), 1))
assertFalse(source.request(2))
assertTrue(source.request(1))
assertEquals(42, source.readByte())
assertFalse(source.request(1))
}
Target: JVMRunning on v.2.1.20