TwoVersionTransaction

Abstract propagation definition that defines phases for reactive propagation through dependent reactive elements.

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

def commitPhase(): Unit

Commits all uncommitted changes to the reactive element.

Commits all uncommitted changes to the reactive element.

def initializationPhase(initialChanges: Map[ReSource, InitialChange]): Unit

Starts the propagation by applying the initial changes

Starts the propagation by applying the initial changes

def observerPhase(): Unit

Call all registered after-commit obverser functions.

Call all registered after-commit obverser functions.

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

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.

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.

def rollbackPhase(): Unit

Reverts all uncommitted changes to the reactive element.

Reverts all uncommitted changes to the reactive element.

def schedule(committable: ReSource): Unit

Schedules a temporarily written change to be committed by the turn.

Schedules a temporarily written change to be committed by the turn.

Value Params
committable

Commitable element to be scheduled