BroadcastChannel
@ExperimentalCoroutinesApi interface BroadcastChannel<E> :
SendChannel<E>
(source)Broadcast channel is a non-blocking primitive for communication between the sender and multiple receivers that subscribe for the elements using openSubscription function and unsubscribe using ReceiveChannel.cancel function.
See BroadcastChannel()
factory function for the description of available
broadcast channel implementations.
Note: This API is obsolete. It will be deprecated and replaced by SharedFlow when it becomes stable.
Inherited Properties
abstract val isClosedForSend: Boolean Returns |
|
abstract val onSend: SelectClause2<E, SendChannel<E>> Clause for the select expression of the send suspending function that selects when the element that is specified as the parameter is sent to the channel. When the clause is selected, the reference to this channel is passed into the corresponding block. |
Functions
abstract fun cancel( Cancels reception of remaining elements from this channel with an optional cause. This function closes the channel with the specified cause (unless it was already closed), removes all buffered sent elements from it, and cancels all open subscriptions. A cause can be used to specify an error message or to provide other details on a cancellation reason for debugging purposes. |
|
abstract fun openSubscription(): ReceiveChannel<E> Subscribes to this BroadcastChannel and returns a channel to receive elements from it. The resulting channel shall be cancelled to unsubscribe from this broadcast channel. |
Inherited Functions
Closes this channel.
This is an idempotent operation — subsequent invocations of this function have no effect and return |
|
Registers a handler which is synchronously invoked once the channel is closed
or the receiving side of this channel is cancelled.
Only one handler can be attached to a channel during its lifetime.
The |
|
Immediately adds the specified element to this channel, if this doesn’t violate its capacity restrictions,
and returns |
|
Sends the specified element to this channel, suspending the caller while the buffer of this channel is full
or if it does not exist, or throws an exception if the channel is closed for |
Extension Functions
fun <T> BroadcastChannel<T>.asFlow(): Flow<T> Represents the given broadcast channel as a hot flow. Every flow collector will trigger a new broadcast channel subscription. |
|
fun <E, R> BroadcastChannel<E>.consume( Opens subscription to this BroadcastChannel and makes sure that the given block consumes all elements from it by always invoking cancel after the execution of the block. |
|
suspend fun <E> BroadcastChannel<E>.consumeEach( Subscribes to this BroadcastChannel and performs the specified action for each received element. |
Inheritors
class ConflatedBroadcastChannel<E> : BroadcastChannel<E> Broadcasts the most recently sent element (aka value) to all openSubscription subscribers. |