SdkByteWriteChannel

A channel for writing a sequence of bytes asynchronously. This is a single writer channel.

Inheritors

Properties

Link copied to clipboard
abstract val autoFlush: Boolean

Returns true if the channel flushes automatically all pending bytes after every write operation. If false then flush only happens when flush is explicitly called or when the buffer is full.

Link copied to clipboard
abstract val availableForWrite: Int

Returns the number of bytes that can be written without suspension. Write operations do not suspend and return immediately when this number is at least the number of bytes requested for write.

Link copied to clipboard
abstract val closedCause: Throwable?

Returns the underlying cause the channel was closed with or null if closed successfully or not yet closed. A failed channel will have a closed cause.

Link copied to clipboard

Returns true if channel has been closed. Attempting to write to the channel will throw an exception

Link copied to clipboard
abstract val totalBytesWritten: Long

Total number of bytes written to the channel.

Functions

Link copied to clipboard
abstract fun close(cause: Throwable?): Boolean

Closes this channel with an optional exceptional cause. All pending bytes are flushed. This is an idempotent operation — subsequent invocations of this function have no effect and return false

Link copied to clipboard
abstract fun flush()

Flushes all pending write bytes making them available for read. Thread safe and can be invoked at any time. It does nothing when invoked on a closed channel.

Link copied to clipboard
abstract suspend fun write(source: SdkBuffer, byteCount: Long = source.size)

Removes exactly byteCount bytes from source and appends them to this. Suspends until all bytes have been written. It is not safe to modify source until this function returns Throws ClosedWriteChannelException if this channel was already closed.

Inherited functions

Link copied to clipboard
expect abstract fun close()

Release any resources held by this object

Link copied to clipboard
suspend fun SdkByteWriteChannel.write(source: ByteArray, offset: Int = 0, limit: Int = source.size - offset)

Write limit bytes from source starting at offset. Suspends until all bytes can be written.

Link copied to clipboard

Removes all bytes from source and writes them to this channel. Returns the total number of bytes read.

Link copied to clipboard

Convenience function to write as many bytes from source as possible without suspending. Returns the number of bytes that could be written.