SdkByteReadChannel

Supplies an asynchronous stream of bytes. This is a single-reader channel.

Inheritors

Properties

Link copied to clipboard
abstract 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.

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
abstract val isClosedForRead: Boolean

Returns true if the channel is closed and no remaining bytes are available for read. It implies that availableForRead is zero.

Link copied to clipboard

Returns true if the channel is closed from the writer side. availableForRead may be 0

Functions

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

Close channel with optional cause cancellation. This is an idempotent operation — subsequent invocations of this function have no effect and return false

Link copied to clipboard
abstract suspend fun read(sink: SdkBuffer, limit: Long): Long

Remove at least 1 byte, and up-to limit bytes from this and appends them to sink. Suspends if no bytes are available. Returns the number of bytes read, or -1 if this channel is exhausted. It is not safe to modify sink until this function returns

Inherited functions

Link copied to clipboard

Read all bytes from this channel into sink. Returns the total number of bytes written.

Link copied to clipboard
suspend fun SdkByteReadChannel.readFully(sink: SdkBuffer, byteCount: Long)

Read exactly byteCount bytes from this into sink or throws EOFException if the channel is exhausted before all bytes could be read.

Link copied to clipboard

Caution Read the entire contents of the channel into sink. This function will suspend until the channel is exhausted and no bytes remain OR the channel cancelled

Link copied to clipboard

Caution Read the entire contents of the channel into a new buffer and return it. This function will suspend until the channel is exhausted and no bytes remain OR the channel cancelled

Link copied to clipboard

Create a blocking InputStream that blocks everytime the channel suspends at SdkByteReadChannel.read