Trait

com.rbmhtechnology.eventuate.crdt.pure

CvRDTPureOp

Related Doc: package pure

Permalink

trait CvRDTPureOp[C, B] extends CRDTServiceOps[CRDT[C], B]

Type-class for pure-op based CRDT.

C

CRDT state type

B

CRDT value type

Linear Supertypes
CRDTServiceOps[CRDT[C], B], AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CvRDTPureOp
  2. CRDTServiceOps
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. implicit abstract def causalRedundancy: CausalRedundancy

    Permalink

    The data-type specific relations r,r0 and r1 used for reducing the POLog size via causal redundancy

  2. abstract def eval(crdt: CRDT[C]): B

    Permalink
    Definition Classes
    CRDTServiceOps
  3. abstract def stabilizeState(state: C, stableOps: Seq[Operation]): C

    Permalink

    Updates the current CRDT.state with the sequence of stable operations that were removed from the POLog on POLog.stable The implementation will vary depending on the CRDT's state type.

    Updates the current CRDT.state with the sequence of stable operations that were removed from the POLog on POLog.stable The implementation will vary depending on the CRDT's state type.

    state

    the current CRDT state

    stableOps

    the sequence of stable operations that were removed from the POLog

    returns

    the updated state

    Attributes
    protected
  4. abstract def updateState(op: Operation, redundant: Boolean, state: C): C

    Permalink

    Data-type specific method that updates the stable state with the newly delivered operation, that is always on the causal future of all the (non-timestamped) operations currently in the state.

    Data-type specific method that updates the stable state with the newly delivered operation, that is always on the causal future of all the (non-timestamped) operations currently in the state. This method is needed because operations in the causal future could make stable operations redundant (e.g. in a AWSet a ClearOp makes all the stable AddOp redundant and hence must be removed) The returned state could potentially contain less operations if they were discarded, but it would never contain more operations, in other words the newly delivered operation must not be added to the state.

    op

    the newly delivered operation

    redundant

    a flag indicating if the newly delivered operation was redundant or it was added to the POLog.

    state

    the current CRDT state

    returns

    the updated state

    Attributes
    protected
    See also

    POLog.add

  5. abstract def zero: CRDT[C]

    Permalink

    Default CRDT instance.

    Default CRDT instance.

    Definition Classes
    CRDTServiceOps

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def effect(crdt: CRDT[C], op: Operation, vt: VectorTime, systemTimestamp: Long = 0L, creator: String = ""): CRDT[C]

    Permalink

    Adds the operation to the POLog using the causal redundancy relations and also updates the state with the newly delivered operation.

    Adds the operation to the POLog using the causal redundancy relations and also updates the state with the newly delivered operation.

    op

    newly delivered operation

    vt

    operation's timestamp

    systemTimestamp

    operation's metadata

    creator

    operation's metadata

    returns

    a copy of the CRDT with its POLog and state updated

    Definition Classes
    CvRDTPureOpCRDTServiceOps
  7. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  11. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  12. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  14. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  16. def precondition: Boolean

    Permalink

    A pure-op based doesn't need to check preconditions because the framework just returns the unmodified operation on prepare

    A pure-op based doesn't need to check preconditions because the framework just returns the unmodified operation on prepare

    Definition Classes
    CvRDTPureOpCRDTServiceOps
  17. def prepare(crdt: CRDT[C], operation: Operation): Try[Option[Operation]]

    Permalink

    Update phase 1 ("atSource").

    Update phase 1 ("atSource"). Prepares an operation for phase 2.

    Definition Classes
    CRDTServiceOps
  18. def stabilize(polog: POLog, stable: TCStable): POLog

    Permalink

    "This function takes a stable timestamp t (fed by the TCSB middleware) and the full PO-Log s as input, and returns a new PO-Log (i.e., a map), possibly discarding a set of operations at once."

    "This function takes a stable timestamp t (fed by the TCSB middleware) and the full PO-Log s as input, and returns a new PO-Log (i.e., a map), possibly discarding a set of operations at once."

    Attributes
    protected
  19. def stable(crdt: CRDT[C], tcstable: TCStable): CRDT[C]

    Permalink

    "The stable handler, on the other hand, invokes stabilize and then strips the timestamp (if the operation has not been discarded by stabilize), by replacing a (t', o') pair that is present in the returned PO-Log by (⊥, o')" The actual implementation doesn't replace the timestamp with ⊥, instead it calls stabilizeState with the current CRDT.state and the sequence of stable operations discarded from the POLog.

    "The stable handler, on the other hand, invokes stabilize and then strips the timestamp (if the operation has not been discarded by stabilize), by replacing a (t', o') pair that is present in the returned PO-Log by (⊥, o')" The actual implementation doesn't replace the timestamp with ⊥, instead it calls stabilizeState with the current CRDT.state and the sequence of stable operations discarded from the POLog.

    crdt

    a crdt

    tcstable

    a stable VectorTime fed by the middleware

    returns

    a possible optimized crdt after discarding operations and removing timestamps

    Definition Classes
    CvRDTPureOpCRDTServiceOps
  20. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  21. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  22. final def value(crdt: CRDT[C]): B

    Permalink

    Returns the CRDT value (for example, the entries of an OR-Set)

    Returns the CRDT value (for example, the entries of an OR-Set)

    Definition Classes
    CRDTServiceOps
  23. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  25. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from CRDTServiceOps[CRDT[C], B]

Inherited from AnyRef

Inherited from Any

Ungrouped