arrow-fx-coroutines / arrow.fx.coroutines.stream.concurrent / SignallingAtomic

SignallingAtomic

class SignallingAtomic<A> : Atomic<A>, Signal<A>

Pure holder of a single atomic value of type A that can be both read and updated. Composes Signal and Atomic together to make an signalling atomic value.

Functions

access Obtain a snapshot of the current value, and a setter for updating it.suspend fun access(): Pair<A, suspend (A) -> Boolean>
continuous Returns a stream of the current value of the signal. An element is always available – on each pull, the current value is supplied.fun continuous(): Stream<A>
discrete Returns a stream of the updates to this signal.fun discrete(): Stream<A>
get Obtains the current value. Since AtomicRef is always guaranteed to have a value, the returned action completes immediately after being bound.suspend fun get(): A
getAndSet Replaces the current value with a, returning the old value.suspend fun getAndSet(a: A): A
getAndUpdate Modifies the current value using the supplied update function and returns the old value.suspend fun getAndUpdate(f: (A) -> A): A
modify Modify allows to inspect the state A of the AtomicRef, update it and extract a different state B.suspend fun <B> modify(f: (A) -> Pair<A, B>): B
modifyGet ModifyGet allows to inspect state A, update it and extract a different state B. In contrast to modify it a Pair of the updated state A and the extracted state B.suspend fun <B> modifyGet(f: (A) -> Pair<A, B>): Pair<A, B>
set Sets the current value to a. The returned action completes after the reference has been successfully set.suspend fun set(a: A): Unit
setAndGet Replaces the current value with a, returning the new value.suspend fun setAndGet(a: A): A
tryModify Like tryUpdate but allows the update function to return an output value of type B.suspend fun <B> tryModify(f: (A) -> Pair<A, B>): B?
tryUpdate Attempts to modify the current value once, in contrast to update which calls f until it succeeds.suspend fun tryUpdate(f: (A) -> A): Boolean
update Updates the current value using the supplied function f.suspend fun update(f: (A) -> A): Unit
updateAndGet Modifies the current value using the supplied update function and returns the new value.suspend fun updateAndGet(f: (A) -> A): A

Companion Object Functions

invoke suspend operator fun <A> invoke(initial: A): SignallingAtomic<A>
unsafe fun <A> unsafe(initial: A): SignallingAtomic<A>

Extension Functions

interrupt fun <O> Signal<Boolean>.interrupt(stream: Stream<O>): Stream<O>

Do you like Arrow?

Arrow Org
<