AbstractInputChannel

Base InputChannel implementation, adding a one-element lookahead queue on top of AbstractChannel so that peek and isOver both work without consuming an element, while subclasses only need to implement the actual blocking read in readActually.

Inheritors

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
open override val available: Boolean
Link copied to clipboard
override var isClosed: Boolean

Whether this channel has been closed.

Link copied to clipboard
open override val isOver: Boolean
Link copied to clipboard
open override val streamTerm: Struct

The Prolog $stream(Direction, Id)-like Struct term identifying this channel, e.g. for current_output/1.

Functions

Link copied to clipboard
open override fun addListener(listener: Listener<T?>)

Registers listener to be invoked with every element subsequently transiting this channel.

Link copied to clipboard
open override fun clearListeners()

Unregisters every currently-registered Listener.

Link copied to clipboard
open override fun close()
Link copied to clipboard
override fun peek(): T?
Link copied to clipboard
override fun read(): T?
Link copied to clipboard
open override fun removeListener(listener: Listener<T?>)

Unregisters listener, previously added via addListener.

Link copied to clipboard
open override fun toString(): String
Link copied to clipboard
open fun <R> use(function: InputChannel<T>.() -> R): R

Runs function against this channel, closeing it once function returns normally (not on exceptions).