emit
Writes all buffered data to the underlying sink if one exists. The underlying sink will not be explicitly flushed.
This method behaves like flush, but has weaker guarantees. Call this method before a buffered sink goes out of scope so that its data can reach its destination.
Throws
when the sink is closed.
when some I/O error occurs.
Samples
import kotlinx.io.*
import kotlin.test.*
fun main() {
//sampleStart
val rawSink = object : RawSink {
val buffer = Buffer()
var flushed = false
override fun write(source: Buffer, byteCount: Long) {
source.readTo(buffer, byteCount)
}
override fun flush() {
flushed = true
}
override fun close() = Unit
}
val buffered = rawSink.buffered()
buffered.writeShort(0x1000)
// Not data were sent to the underlying sink and it was not flushed yet
assertFalse(rawSink.flushed)
assertEquals(0, rawSink.buffer.size)
buffered.emit()
// The sink was filled with buffered data, but it was not flushed
assertFalse(rawSink.flushed)
assertContentEquals(byteArrayOf(0x10, 0), rawSink.buffer.readByteArray())
//sampleEnd
}