Package

com.rbmhtechnology.eventuate

crdt

Permalink

package crdt

Visibility
  1. Public
  2. All

Type Members

  1. trait CRDTFormat extends Serializable

    Permalink

    Marker trait for protobuf-serializable CRDTs.

  2. trait CRDTService[A, B] extends AnyRef

    Permalink

    A generic, replicated CRDT service that manages a map of CRDTs identified by name.

    A generic, replicated CRDT service that manages a map of CRDTs identified by name. Replication is based on the replicated event log that preserves causal ordering of events.

    A

    CRDT type

    B

    CRDT value type

  3. trait CRDTServiceOps[A, B] extends AnyRef

    Permalink

    Typeclass to be implemented by CRDTs if they shall be managed by CRDTService

    Typeclass to be implemented by CRDTs if they shall be managed by CRDTService

    A

    CRDT type

    B

    CRDT value type

  4. case class Counter[A](value: A)(implicit evidence$1: Integral[A]) extends Product with Serializable

    Permalink

    Replicated counter.

    Replicated counter.

    A

    Counter value type.

    value

    Current counter value.

    See also

    A comprehensive study of Convergent and Commutative Replicated Data Types

  5. class CounterService[A] extends CRDTService[Counter[A], A]

    Permalink

    Replicated Counter CRDT service.

    Replicated Counter CRDT service.

    A

    Counter value type.

  6. case class LWWRegister[A](mvRegister: MVRegister[A] = MVRegister.apply[A]) extends CRDTFormat with Product with Serializable

    Permalink

    Replicated LWW-Register with an MVRegister-based implementation.

    Replicated LWW-Register with an MVRegister-based implementation. Instead of returning multiple values in case of concurrent assignments, the last written value is returned. The last written value is determined by comparing the following Registered fields in given order:

    • vectorTimestamp: if causally related, return the value with the higher timestamp, otherwise compare
    • systemTimestamp: if not equal, return the value with the higher timestamp, otherwise compare
    • emitterId

    Note that this relies on synchronized system clocks. LWWRegister should only be used when the choice of value is not important for concurrent updates occurring within the clock skew.

    mvRegister

    Initially empty MVRegister.

    See also

    A comprehensive study of Convergent and Commutative Replicated Data Types

  7. class LWWRegisterService[A] extends CRDTService[LWWRegister[A], Option[A]]

    Permalink

    Replicated LWWRegister CRDT service.

    Replicated LWWRegister CRDT service.

    A

    LWWRegister value type.

  8. case class MVRegister[A](registered: Set[Registered[A]] = Set.empty[Registered[A]]) extends CRDTFormat with Product with Serializable

    Permalink

    Replicated MV-Register.

    Replicated MV-Register. Has several Registered values assigned in case of concurrent assignments, otherwise, a single Registered value. Concurrent assignments can be reduced to a single assignment by assigning a Registered value with a vector timestamp that is greater than those of the currently assigned Registered values.

    A

    MV-Register value type.

    registered

    Registered values. Initially empty.

    See also

    A comprehensive study of Convergent and Commutative Replicated Data Types

  9. class MVRegisterService[A] extends CRDTService[MVRegister[A], Set[A]]

    Permalink

    Replicated MVRegister CRDT service.

    Replicated MVRegister CRDT service.

    A

    MVRegister value type.

  10. case class ORSet[A](versionedEntries: Set[Versioned[A]] = Set.empty[Versioned[A]]) extends CRDTFormat with Product with Serializable

    Permalink

    Replicated OR-Set.

    Replicated OR-Set. In case of a concurrent add and remove, add has precedence.

    A

    Entry value type.

    versionedEntries

    Versioned entries.

    See also

    A comprehensive study of Convergent and Commutative Replicated Data Types

  11. class ORSetService[A] extends CRDTService[ORSet[A], Set[A]]

    Permalink

    Replicated ORSet CRDT service.

    Replicated ORSet CRDT service.

    A

    ORSet entry type

  12. case class Registered[A](value: A, updateTimestamp: VectorTime, systemTimestamp: Long, emitterId: String) extends Product with Serializable

    Permalink

    Internal representation of an MVRegister value.

Value Members

  1. object CRDTService

    Permalink
  2. object Counter extends Serializable

    Permalink
  3. object LWWRegister extends Serializable

    Permalink
  4. object MVRegister extends Serializable

    Permalink
  5. object ORSet extends Serializable

    Permalink

Ungrouped