class ByteChannelSequentialJVM : ByteChannelSequentialBase
ByteChannelSequentialJVM(initial: IoBuffer, autoFlush: Boolean) |
open val autoFlush: Boolean
Returns |
|
open val availableForRead: Int
Returns number of bytes that can be read without suspension. Read operations do no suspend and return immediately when this number is at least the number of bytes requested for read. |
|
open val availableForWrite: Int
Returns number of bytes that can be written without suspension. Write operations do no suspend and return immediately when this number is at least the number of bytes requested for write. |
|
var closed: Boolean |
|
var closedCause: Throwable?
An closure cause exception or |
|
open val isClosedForRead: Boolean
Returns |
|
open val isClosedForWrite: Boolean
Returns |
|
open var readByteOrder: ByteOrder
Byte order that is used for multi-byte read operations (such as readShort, readInt, readLong, readFloat, and readDouble). |
|
val readable: ByteReadPacket |
|
open val totalBytesRead: Long
Number of bytes read from the channel. It is not guaranteed to be atomic so could be updated in the middle of long running read operation. |
|
open val totalBytesWritten: Long
Number of bytes written to the channel. It is not guaranteed to be atomic so could be updated in the middle of write operation. |
|
val writable: BytePacketBuilder |
|
open var writeByteOrder: ByteOrder
Byte order that is used for multi-byte write operations (such as writeShort, writeInt, writeLong, writeFloat, and writeDouble). |
fun attachJob(job: Job): Unit |
|
suspend fun awaitContent(): Unit |
|
suspend fun |
|
fun <R> lookAhead(visitor: LookAheadSession.() -> R): R |
|
suspend fun <R> lookAheadSuspend(visitor: suspend LookAheadSuspendSession.() -> R): R |
|
suspend fun read(min: Int, consumer: (ByteBuffer) -> Unit): Unit |
|
suspend fun readAvailable(dst: ByteBuffer): Int fun readAvailable(min: Int, block: (ByteBuffer) -> Unit): Int |
|
suspend fun readFully(dst: ByteBuffer): Int |
|
suspend fun write(min: Int, block: (ByteBuffer) -> Unit): Unit |
|
suspend fun writeAvailable(src: ByteBuffer): Int fun writeAvailable(min: Int, block: (ByteBuffer) -> Unit): Int |
|
suspend fun writeFully(src: ByteBuffer): Unit |
|
suspend fun writeWhile(block: (ByteBuffer) -> Boolean): Unit |
fun fun afterRead(count: Int): Unit |
|
fun fun afterWrite(count: Int): Unit |
|
open suspend fun await(atLeast: Int): Boolean
Suspend until atLeast bytes become available or end of stream encountered (possibly due to exceptional close) |
|
open suspend fun awaitFreeSpace(): Unit |
|
suspend fun awaitSuspend(atLeast: Int): Boolean |
|
open fun beginWriteSession(): WriterSuspendSession |
|
open fun cancel(cause: Throwable?): Boolean
Close channel with optional cause cancellation. Unlike ByteWriteChannel.close that could close channel normally, cancel does always close with error so any operations on this channel will always fail and all suspensions will be resumed with exception. |
|
open fun close(cause: Throwable?): Boolean
Closes this channel with an optional exceptional cause.
It flushes all pending write bytes (via flush).
This is an idempotent operation -- repeated invocations of this function have no effect and return |
|
open fun discard(n: Int): Int
Discard at most n available bytes or 0 if no bytes available yet open suspend fun discard(max: Long): Long
Discard up to max bytes |
|
open fun endReadSession(): Unit |
|
open fun endWriteSession(written: Int): Unit |
|
open fun flush(): Unit
Flushes all pending write bytes making them available for read. |
|
suspend fun peekTo(destination: Memory, destinationOffset: Long, offset: Long, min: Long, max: Long): Long
Try to copy at least min but up to max bytes to the specified destination buffer from this input
skipping offset bytes. If there are not enough bytes available to provide min bytes after skipping offset
bytes then it will trigger the underlying source reading first and after that will
simply copy available bytes even if EOF encountered so min is not a requirement but a desired number of bytes.
It is safe to specify max greater than the destination free space.
|
|
fun prepareFlushedBytes(): Unit
Take flushed bytes before read. |
|
open suspend fun readAvailable(dst: IoBuffer): Int open suspend fun readAvailable(dst: ByteArray, offset: Int, length: Int): Int
Reads all available bytes to dst buffer and returns immediately or suspends if no bytes available |
|
fun readAvailableClosed(): Int |
|
open suspend fun readBoolean(): Boolean
Reads a boolean value (suspending if no bytes available yet) or fails if channel has been closed and not enough bytes. |
|
open suspend fun readByte(): Byte
Reads a byte (suspending if no bytes available yet) or fails if channel has been closed and not enough bytes. |
|
open suspend fun readDouble(): Double
Reads double number (suspending if not enough bytes available) or fails if channel has been closed and not enough bytes. |
|
open suspend fun readFloat(): Float
Reads float number (suspending if not enough bytes available) or fails if channel has been closed and not enough bytes. |
|
open suspend fun readFully(dst: IoBuffer, n: Int): Unit open suspend fun readFully(dst: ByteArray, offset: Int, length: Int): Unit
Reads all length bytes to dst buffer or fails if channel has been closed. Suspends if not enough bytes available. |
|
open suspend fun readInt(): Int
Reads an int number (suspending if not enough bytes available) or fails if channel has been closed and not enough bytes. |
|
open suspend fun readLong(): Long
Reads a long number (suspending if not enough bytes available) or fails if channel has been closed and not enough bytes. |
|
open suspend fun readPacket(size: Int, headerSizeHint: Int): ByteReadPacket
Reads the specified amount of bytes and makes a byte packet from them. Fails if channel has been closed and not enough bytes available. Accepts headerSizeHint to be provided, see WritePacket. |
|
open suspend fun readRemaining(limit: Long, headerSizeHint: Int): ByteReadPacket
Reads up to limit bytes and makes a byte packet or until end of stream encountered. Accepts headerSizeHint to be provided, see BytePacketBuilder. |
|
open fun
Starts non-suspendable read session. After channel preparation consumer lambda will be invoked immediately event if there are no bytes available for read yet. |
|
open suspend fun readShort(): Short
Reads a short number (suspending if not enough bytes available) or fails if channel has been closed and not enough bytes. |
|
open suspend fun
Starts a suspendable read session. After channel preparation consumer lambda will be invoked immediately even if there are no bytes available for read yet. consumer lambda could suspend as much as needed. |
|
open suspend fun readUTF8Line(limit: Int): String?
Reads a line of UTF-8 characters up to limit characters. Supports both CR-LF and LF line endings. Throws an exception if the specified limit has been exceeded. |
|
open suspend fun <A : Appendable> readUTF8LineTo(out: A, limit: Int): Boolean
Reads a line of UTF-8 characters to the specified out buffer up to limit characters. Supports both CR-LF and LF line endings. Throws an exception if the specified limit has been exceeded. |
|
open fun request(atLeast: Int): IoBuffer?
Request buffer range atLeast bytes length |
|
open fun startReadSession(): SuspendableReadSession |
|
open suspend fun writeAvailable(src: IoBuffer): Int open suspend fun writeAvailable(src: ByteArray, offset: Int, length: Int): Int
Writes as much as possible and only suspends if buffer is full |
|
open suspend fun writeByte(b: Byte): Unit
Writes byte and suspends until written. Crashes if channel get closed while writing. |
|
open suspend fun writeDouble(d: Double): Unit
Writes double number and suspends until written. Crashes if channel get closed while writing. |
|
open suspend fun writeFloat(f: Float): Unit
Writes float number and suspends until written. Crashes if channel get closed while writing. |
|
open suspend fun writeFully(src: IoBuffer): Unit open suspend fun writeFully(src: Buffer): Unit open suspend fun writeFully(memory: Memory, startIndex: Int, endIndex: Int): Unit open suspend fun writeFully(src: ByteArray, offset: Int, length: Int): Unit
Writes all src bytes and suspends until all bytes written. Causes flush if buffer filled up or when autoFlush Crashes if channel get closed while writing. |
|
open suspend fun writeInt(i: Int): Unit
Writes int number and suspends until written. Crashes if channel get closed while writing. |
|
open suspend fun writeLong(l: Long): Unit
Writes long number and suspends until written. Crashes if channel get closed while writing. |
|
open suspend fun writePacket(packet: ByteReadPacket): Unit
Writes a packet fully or fails if channel get closed before the whole packet has been written |
|
open suspend fun writeShort(s: Short): Unit
Writes short number and suspends until written. Crashes if channel get closed while writing. |
|
open suspend fun writeSuspendSession(visitor: suspend WriterSuspendSession.() -> Unit): Unit |
fun ByteReadChannel.cancel(): Boolean |
|
fun ByteWriteChannel.close(): Boolean
Closes this channel with no failure (successfully) |
|
suspend fun ByteReadChannel.consumeEachBufferRange(visitor: ConsumeEachBufferVisitor): Unit
For every available bytes range invokes visitor function until it return false or end of stream encountered. The provided buffer should be never captured outside of the visitor block otherwise resource leaks, crashes and data corruptions may occur. The visitor block may be invoked multiple times, once or never. |
|
suspend fun ByteReadChannel.copyAndClose(dst: ByteWriteChannel, limit: Long = Long.MAX_VALUE): Long
Reads all the bytes from receiver channel and writes them to dst channel and then closes it. Closes dst channel if fails to read or write with cause exception. |
|
suspend fun ByteChannelSequentialBase. suspend fun ByteReadChannel.copyTo(dst: ByteWriteChannel): Long
Reads bytes from receiver channel and writes them to dst channel. Closes dst channel if fails to read or write with cause exception. |
|
suspend fun ByteReadChannel.copyTo(out: OutputStream, limit: Long = Long.MAX_VALUE): Long
Copies up to limit bytes from this byte channel to out stream suspending on read channel and blocking on output |
|
suspend fun ByteReadChannel.copyTo(channel: WritableByteChannel, limit: Long = Long.MAX_VALUE): Long
Copy up to limit bytes to blocking NIO channel. Copying to non-blocking channel requires selection and not supported. It does suspend if no data available in byte channel but may block if destination NIO channel blocks. suspend fun ByteReadChannel.copyTo(pipe: Pipe, limit: Long = Long.MAX_VALUE): Long
Copy up to limit bytes to blocking pipe. A shortcut to copyTo function with NIO channel destination |
|
suspend fun ByteReadChannel.discard(): Long
Discards all bytes in the channel and suspends until end of stream. |
|
suspend fun ByteReadChannel.discardExact(n: Long): Unit
Discards exactly n bytes or fails if not enough bytes in the channel |
|
suspend fun ByteChannelSequentialBase. |
|
suspend fun ByteReadChannel.read(desiredSize: Int = 1, block: (source: Memory, start: Long, endExclusive: Long) -> Int): Int
Await until at least desiredSize is available for read or EOF and invoke block function. The block function should never capture a provided Memory instance outside otherwise an undefined behaviour may occur including accidental crash or data corruption. Block function should return number of bytes consumed or 0. |
|
suspend fun ByteReadChannel.readAvailable(dst: ByteArray): Int |
|
suspend fun ByteReadChannel.readDouble(byteOrder: ByteOrder): Double |
|
suspend fun ByteReadChannel.readDoubleLittleEndian(): Double |
|
suspend fun ByteReadChannel.readFloat(byteOrder: ByteOrder): Float |
|
suspend fun ByteReadChannel.readFloatLittleEndian(): Float |
|
suspend fun ByteReadChannel.readFully(dst: IoBuffer): Unit suspend fun ByteReadChannel.readFully(dst: ByteArray): Unit |
|
suspend fun ByteReadChannel.readInt(byteOrder: ByteOrder): Int |
|
suspend fun ByteReadChannel.readIntLittleEndian(): Int |
|
suspend fun ByteReadChannel.readLong(byteOrder: ByteOrder): Long |
|
suspend fun ByteReadChannel.readLongLittleEndian(): Long |
|
suspend fun ByteReadChannel.readPacket(size: Int): ByteReadPacket
Reads the specified amount of bytes and makes a byte packet from them. Fails if channel has been closed and not enough bytes available. |
|
suspend fun ByteReadChannel.readRemaining(limit: Long): ByteReadPacket
Reads up to limit bytes and makes a byte packet or until end of stream encountered. suspend fun ByteReadChannel.readRemaining(): ByteReadPacket
Reads all remaining bytes and makes a byte packet |
|
suspend fun ByteReadChannel.readShort(byteOrder: ByteOrder): Short |
|
suspend fun ByteReadChannel.readShortLittleEndian(): Short |
|
suspend fun ByteReadChannel.readUTF8Line(): String? |
|
suspend fun ByteReadChannel.readUTF8LineTo(out: Appendable): Boolean |
|
suspend fun ByteReadChannel.readUntilDelimiter(delimiter: ByteBuffer, dst: ByteBuffer): Int
Reads from the channel to the specified dst byte buffer until one of the following: |
|
suspend fun ByteReadChannel.skipDelimiter(delimiter: ByteBuffer): Unit |
|
fun ByteReadChannel.toInputStream(parent: Job? = null): InputStream
Create blocking java.io.InputStream for this channel that does block every time the channel suspends at read Similar to do reading in runBlocking however you can pass it to regular blocking API |
|
fun ByteWriteChannel.toOutputStream(parent: Job? = null): OutputStream
Create blocking java.io.OutputStream for this channel that does block every time the channel suspends at write Similar to do reading in runBlocking however you can pass it to regular blocking API |
|
suspend fun ByteWriteChannel.write(desiredSpace: Int = 1, block: (freeSpace: Memory, startOffset: Long, endExclusive: Long) -> Int): Int
Await for desiredSpace will be available for write and invoke block function providing Memory instance and the corresponding range suitable for wiring in the memory. The block function should return number of bytes were written, possibly 0. |
|
suspend fun ByteWriteChannel.writeAvailable(src: ByteArray): Int |
|
suspend fun ByteWriteChannel.writeBoolean(b: Boolean): Unit |
|
suspend fun ByteWriteChannel.writeByte(b: Int): Unit |
|
suspend fun ByteWriteChannel.writeChar(ch: Char): Unit
Writes UTF16 character |
|
suspend fun ByteWriteChannel.writeDouble(value: Double, byteOrder: ByteOrder): Unit |
|
suspend fun ByteWriteChannel.writeDoubleLittleEndian(value: Double): Unit |
|
suspend fun ByteWriteChannel.writeFloat(value: Float, byteOrder: ByteOrder): Unit |
|
suspend fun ByteWriteChannel.writeFloatLittleEndian(value: Float): Unit |
|
suspend fun ByteWriteChannel.writeFully(src: ByteArray): Unit |
|
suspend fun ByteWriteChannel.writeInt(i: Long): Unit suspend fun ByteWriteChannel.writeInt(i: Long, byteOrder: ByteOrder): Unit suspend fun ByteWriteChannel.writeInt(value: Int, byteOrder: ByteOrder): Unit |
|
suspend fun ByteWriteChannel.writeIntLittleEndian(value: Int): Unit |
|
suspend fun ByteWriteChannel.writeLong(value: Long, byteOrder: ByteOrder): Unit |
|
suspend fun ByteWriteChannel.writeLongLittleEndian(value: Long): Unit |
|
suspend fun ByteWriteChannel.writePacket(headerSizeHint: Int = 0, builder: BytePacketBuilder.() -> Unit): Unit |
|
suspend fun ByteWriteChannel.writePacketSuspend(builder: suspend BytePacketBuilder.() -> Unit): Unit |
|
suspend fun ByteWriteChannel.writeShort(s: Int): Unit suspend fun ByteWriteChannel.writeShort(s: Int, byteOrder: ByteOrder): Unit suspend fun ByteWriteChannel.writeShort(value: Short, byteOrder: ByteOrder): Unit |
|
suspend fun ByteWriteChannel.writeShortLittleEndian(value: Short): Unit |
|
suspend fun ByteWriteChannel.writeStringUtf8(s: CharSequence): Unit suspend fun ByteWriteChannel.writeStringUtf8(s: String): Unit |