AutoUpdatingVar

ca.dvgi.periodic.AutoUpdatingVar
See theAutoUpdatingVar companion object
class AutoUpdatingVar[U[_], R[_], T](periodic: Periodic[U, R])(updateVar: => U[T], updateInterval: UpdateInterval[T], updateAttemptStrategy: AttemptStrategy, blockUntilReadyTimeout: Option[Duration], handleInitializationError: PartialFunction[Throwable, U[T]], updateExistingVar: Option[T => U[T]], varNameOverride: Option[String])(implicit ct: ClassTag[T]) extends AutoCloseable

A variable that updates itself. latest can be called from multiple threads, which are all guaranteed to get the latest var.

An AutoUpdatingVar attempts to get the variable immediately upon class instantiation. If this fails, there are no further attempts (unless specified via handleInitializationError), and the effect returned by the ready method will complete unsuccesfully. If it succeeds, the effect completes successfully and latest can be safely called.

Failed updates other than the first (those that throw an exception) may be retried with various configurations.

A successful update schedules the next update, with an interval that can vary based on the just-updated var.

Value parameters

blockUntilReadyTimeout

If specified, will cause the AutoUpdatingVar constructor to block until an initial value is computed, or there is a timeout or failure. This means that the effect returned by ready will always be complete.

handleInitializationError

A PartialFunction used to recover from exceptions in the var initialization. If unspecified, the exception will fail the effect returned by ready.

periodic

A Periodic instance used to update the var

updateAttemptStrategy

Configuration for retrying updates on failure

updateExistingVar

If specified, will be used to update the var on all updates after initialization. Allows for the use of the current var when updating.

updateInterval

Configuration for the update interval

updateVar

A thunk to initialize and update the var

varNameOverride

A name for this variable, used in logging. If unspecified, the simple class name of T will be used.

Attributes

Companion
object
Graph
Supertypes
trait AutoCloseable
class Object
trait Matchable
class Any

Members list

Value members

Concrete methods

override def close(): Unit

Attributes

Definition Classes
AutoCloseable
def latest: T

Get the latest variable value from memory. Does not attempt to update the var.

Get the latest variable value from memory. Does not attempt to update the var.

Wait for ready to be completed before calling this method.

Attributes

Returns

The latest value of the variable. Calling this method is thread-safe.

Throws
UnreadyAutoUpdatingVarException

if there is not yet a value to return

def ready: R[Unit]

Attributes

Returns

An effect which, once successfully completed, signifies that the AutoUpdatingVar has a value, i.e. latest can be called and no exception will be thrown.