Packages

abstract class Ref[F[_], A] extends AnyRef

An asynchronous, concurrent mutable reference.

Provides safe concurrent access and modification of its content, but no functionality for synchronisation, which is instead handled by Deferred. For this reason, a Ref is always initialised to a value.

The default implementation is nonblocking and lightweight, consisting essentially of a purely functional wrapper over an AtomicReference.

Source
Ref.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Ref
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Ref()

Abstract Value Members

  1. abstract def access: F[(A, (A) => F[Boolean])]

    Obtains a snapshot of the current value, and a setter for updating it.

    Obtains a snapshot of the current value, and a setter for updating it. The setter may noop (in which case false is returned) if another concurrent call to access uses its setter first.

    Once it has noop'd or been used once, a setter never succeeds again.

    Satisfies: r.access.map(_._1) == r.get r.access.flatMap { case (v, setter) => setter(f(v)) } == r.tryUpdate(f).map(_.isDefined)

  2. abstract def get: F[A]

    Obtains the current value.

    Obtains the current value.

    Since Ref is always guaranteed to have a value, the returned action completes immediately after being bound.

  3. abstract def modify[B](f: (A) => (A, B)): F[B]

    Like tryModify but does not complete until the update has been successfully made.

  4. abstract def modifyState[B](state: State[A, B]): F[B]

    Like tryModifyState but retries the modification until successful.

  5. abstract def set(a: A): F[Unit]

    Sets the current value to a.

    Sets the current value to a.

    The returned action completes after the reference has been successfully set.

    Satisfies: r.set(fa) *> r.get == fa

  6. abstract def tryModify[B](f: (A) => (A, B)): F[Option[B]]

    Like tryUpdate but allows the update function to return an output value of type B.

    Like tryUpdate but allows the update function to return an output value of type B. The returned action completes with None if the value is not updated successfully and Some(b) otherwise.

  7. abstract def tryModifyState[B](state: State[A, B]): F[Option[B]]

    Update the value of this ref with a state computation.

    Update the value of this ref with a state computation.

    The current value of this ref is used as the initial state and the computed output state is stored in this ref after computation completes. If a concurrent modification occurs, None is returned.

  8. abstract def tryUpdate(f: (A) => A): F[Boolean]

    Attempts to modify the current value once, returning false if another concurrent modification completes between the time the variable is read and the time it is set.

  9. abstract def update(f: (A) => A): F[Unit]

    Modifies the current value using the supplied update function.

    Modifies the current value using the supplied update function. If another modification occurs between the time the current value is read and subsequently updated, the modification is retried using the new value. Hence, f may be invoked multiple times.

    Satisfies: r.update(_ => a) == r.set(a)

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. def getAndSet(a: A): F[A]

    Replaces the current value with a, returning the previous value.

  9. def getAndUpdate(f: (A) => A): F[A]

    Updates the current value using f and returns the previous value.

    Updates the current value using f and returns the previous value.

    In case of retries caused by concurrent modifications, the returned value will be the last one before a successful update.

  10. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. def mapK[G[_]](f: ~>[F, G])(implicit F: Functor[F]): Ref[G, A]

    Modify the context F using transformation f.

  14. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  15. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  16. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  17. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  18. def toString(): String
    Definition Classes
    AnyRef → Any
  19. def updateAndGet(f: (A) => A): F[A]

    Updates the current value using f, and returns the updated value.

  20. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  21. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  22. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from AnyRef

Inherited from Any

Ungrouped