rescala.fullmv.FullMvStateBundle
NonblockingSkipListVersionHistory
Companion object NonblockingSkipListVersionHistory
class NonblockingSkipListVersionHistory[V, T <: (FullMvStateBundle.this)#FullMVTurn, InDep, OutDep] extends (FullMvStateBundle.this)#FullMVState[V, T, InDep, OutDep]
A node version history datastructure
- V
the type of stored values
- T
the type of transactions
- InDep
the type of incoming dependency nodes
- OutDep
the type of outgoing dependency nodes
- Alphabetic
- By Inheritance
- NonblockingSkipListVersionHistory
- FullMVState
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new NonblockingSkipListVersionHistory(init: T, valuePersistency: V)
- init
the initial creating transaction
- valuePersistency
the value persistency descriptor
Type Members
- final class QueuedVersion extends LinkWithCounters[QueuedVersion]
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def casLatestStable(from: QueuedVersion, to: QueuedVersion): Unit
- Attributes
- protected
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- def discover(txn: T, add: OutDep): (List[T], Option[T])
entry point for discover(this, add).
entry point for discover(this, add). May suspend.
- txn
the executing reevaluation's transaction
- add
the new edge's sink node
- returns
the appropriate Version.value.
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- def drop(txn: T, remove: OutDep): (List[T], Option[T])
entry point for drop(this, ticket.issuer); may suspend temporarily.
entry point for drop(this, ticket.issuer); may suspend temporarily.
- txn
the executing reevaluation's transaction
- remove
the removed edge's sink node
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- def dynamicAfter(txn: T): V
entry point for after(this); may suspend.
entry point for after(this); may suspend.
- txn
the executing transaction
- returns
the corresponding value from after this transaction, i.e., awaiting and returning the transaction's own write if one has occurred or will occur.
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- def dynamicBefore(txn: T): V
entry point for before(this); may suspend.
entry point for before(this); may suspend.
- txn
the executing transaction
- returns
the corresponding value from before this transaction, i.e., ignoring the transaction's own writes.
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- var firstFrame: QueuedVersion
pointer that reflects, which firstFrame is currently communicated to all successor nodes.
pointer that reflects, which firstFrame is currently communicated to all successor nodes. writes are sequentialized and synchronized with outgoings changes through the object monitor (this.synchronized)
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- val host: (FullMvStateBundle.this)#FullMVEngine
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- val incomings: Set[InDep]
- Definition Classes
- FullMVState
- def incrementFrame(txn: T): FramingBranchResult[T, OutDep]
entry point for regular framing
entry point for regular framing
- txn
the transaction visiting the node for framing
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- def incrementSupersedeFrame(txn: T, supersede: T): FramingBranchResult[T, OutDep]
entry point for superseding framing
entry point for superseding framing
- txn
the transaction visiting the node for framing
- supersede
the transaction whose frame was superseded by the visiting transaction at the previous node
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- val laggingLatestStable: AtomicReference[QueuedVersion]
- var latestValue: V
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- var lazyPeriodicGC: QueuedVersion
a pointer to some random version at or behind latestStable, used for periodic O(1) gc support accesses are executed only inside reevOut, and are therefore sequential by nature.
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def notify(txn: T, changed: Boolean): (Boolean, NotificationBranchResult[T, OutDep])
entry point for change/nochange notification reception
entry point for change/nochange notification reception
- txn
the transaction sending the notification
- changed
whether or not the dependency changed
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- def notifyFollowFrame(txn: T, changed: Boolean, followFrame: T): (Boolean, NotificationBranchResult[T, OutDep])
entry point for change/nochange notification reception with follow-up framing
entry point for change/nochange notification reception with follow-up framing
- txn
the transaction sending the notification
- changed
whether or not the dependency changed
- followFrame
a transaction for which to create a subsequent frame, furthering its partial framing.
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- var outgoings: Set[OutDep]
successor nodes that are currently sbuscribed for cange notifications.
successor nodes that are currently sbuscribed for cange notifications. accesses are sequentialized and synchronized with firstFrame changes through the object monitor (this.synchronized)
- def reevIn(txn: T): V
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- def reevOut(turn: T, maybeValue: Option[V], unchange: (V) => V): ReevOutBranchResult[T, OutDep]
progress
firstFrame
forward until aVersion.isFrame
is encountered, and return the resulting notification out (with reframing if subsequent write is found).progress
firstFrame
forward until aVersion.isFrame
is encountered, and return the resulting notification out (with reframing if subsequent write is found).- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- def retrofitSinkFrames(successorWrittenVersions: Seq[T], maybeSuccessorFrame: Option[T], arity: Int): Seq[T]
performs the reframings on the sink of a discover(n, this) with arity +1, or drop(n, this) with arity -1
performs the reframings on the sink of a discover(n, this) with arity +1, or drop(n, this) with arity -1
- successorWrittenVersions
the reframings to perform for successor written versions
- maybeSuccessorFrame
maybe a reframing to perform for the first successor frame
- arity
+1 for discover adding frames, -1 for drop removing frames.
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- def staticAfter(txn: T): V
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- def staticBefore(txn: T): V
- Definition Classes
- NonblockingSkipListVersionHistory → FullMVState
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- NonblockingSkipListVersionHistory → AnyRef → Any
- val valuePersistency: V
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])