TwoVersionTransactionImpl

Basic implementation of the most fundamental propagation steps as defined by AbstractPropagation. Only compatible with spore definitions that store a pulse value and support graph operations.

Type Params
S

Struct type that defines the spore type used to manage the reactive evaluation

class Object
trait Matchable
class Any

Value members

Abstract methods

allow the propagation to handle dynamic access to reactives

allow the propagation to handle dynamic access to reactives

Concrete methods

override
Definition Classes
final
def commitDependencyDiff(node: Derived, current: Set[ReSource])(updated: Set[ReSource]): Unit
override
def commitPhase(): Unit
Definition Classes
final override
def initializationPhase(initialChanges: Map[ReSource, InitialChange]): Unit
Definition Classes
def observe(f: Observation): Unit
override
def observerPhase(): Unit
Definition Classes
override
def rollbackPhase(): Unit
Definition Classes
override
def schedule(commitable: ReSource): Unit
Definition Classes
def writeState(pulsing: ReSource)(value: Value): Unit

Inherited methods

def preparationPhase(initialWrites: Set[ReSource]): Unit

Locks (and potentially otherwise prepares) all affected reactive values to prevent interfering changes.

Locks (and potentially otherwise prepares) all affected reactive values to prevent interfering changes.

Value Params
initialWrites

List of affected reactive values

Inherited from
TwoVersionTransaction
def propagationPhase(): Unit

Performs the actual propagation, setting the new (not yet committed) values for each reactive element.

Performs the actual propagation, setting the new (not yet committed) values for each reactive element.

Inherited from
TwoVersionTransaction
def releasePhase(): Unit

Unlocks (and potentially otherwise reverts the propagation preparations for) each reactive value to allow future turns to run on them.

Unlocks (and potentially otherwise reverts the propagation preparations for) each reactive value to allow future turns to run on them.

Inherited from
TwoVersionTransaction

Concrete fields

val observers: ArrayBuffer[Observation]
val toCommit: ArrayBuffer[ReSource]