Package

com.rbmhtechnology.eventuate

crdt

Permalink

package crdt

Visibility
  1. Public
  2. All

Type Members

  1. case class AddOp(entry: Any) extends CRDTFormat with Product with Serializable

    Permalink

    Persistent add operation used for ORSet and ORCart.

  2. case class AssignOp(value: Any) extends CRDTFormat with Product with Serializable

    Permalink

    Persistent assign operation used for MVRegister and LWWRegister.

  3. trait CRDTFormat extends Serializable

    Permalink

    Marker trait for protobuf-serializable CRDTs and operations.

  4. final class CRDTFormats extends AnyRef

    Permalink
  5. class CRDTSerializer extends Serializer

    Permalink
  6. 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

  7. 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

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

    Permalink

    Operation-based Counter CRDT.

    Operation-based Counter CRDT.

    A

    Counter value type.

    value

    Current counter value.

    See also

    A comprehensive study of Convergent and Commutative Replicated Data Types

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

    Permalink

    Replicated Counter CRDT service.

    Replicated Counter CRDT service.

    A

    Counter value type.

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

    Permalink

    Operation-based LWW-Register CRDT with an MVRegister-based implementation.

    Operation-based LWW-Register CRDT 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 Versioned 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, specification 9

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

    Permalink

    Replicated LWWRegister CRDT service.

    Replicated LWWRegister CRDT service.

    A

    LWWRegister value type.

  12. case class MVRegister[A](versioned: Set[Versioned[A]] = Set.empty[Versioned[A]]) extends CRDTFormat with Product with Serializable

    Permalink

    Operation-based MV-Register CRDT.

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

    A

    Assigned value type.

    versioned

    Assigned values. Initially empty.

    See also

    A comprehensive study of Convergent and Commutative Replicated Data Types

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

    Permalink

    Replicated MVRegister CRDT service.

    Replicated MVRegister CRDT service.

    A

    MVRegister value type.

  14. case class ORCart[A](orSet: ORSet[ORCartEntry[A]] = ORSet[ORCartEntry[A]]()) extends CRDTFormat with Product with Serializable

    Permalink

    Operation-based OR-Cart CRDT with an ORSet-based implementation.

    Operation-based OR-Cart CRDT with an ORSet-based implementation. Versioned entry values are of type ORCartEntry and are uniquely identified with vector timestamps.

    A

    Key type.

    orSet

    Backing ORSet.

    See also

    ORCartEntry

    A comprehensive study of Convergent and Commutative Replicated Data Types, specification 21.

  15. case class ORCartEntry[A](key: A, quantity: Int) extends CRDTFormat with Product with Serializable

    Permalink

    ORCart entry.

    ORCart entry.

    A

    Key type.

    key

    Entry key. Used to identify a product in the shopping cart.

    quantity

    Entry quantity.

  16. class ORCartService[A] extends CRDTService[ORCart[A], Map[A, Int]]

    Permalink

    Replicated ORCart CRDT service.

    Replicated ORCart CRDT service.

    • For adding a new key of given quantity a client should call add.
    • For incrementing the quantity of an existing key a client should call add.
    • For decrementing the quantity of an existing key a client should call remove, followed by add (after remove successfully completed).
    • For removing a key a client should call remove.
    A

    ORCart key type.

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

    Permalink

    Operation-based OR-Set CRDT.

    Operation-based OR-Set CRDT. Versioned entries are uniquely identified with vector timestamps.

    A

    Entry value type.

    versionedEntries

    Versioned entries.

    See also

    A comprehensive study of Convergent and Commutative Replicated Data Types, specification 15

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

    Permalink

    Replicated ORSet CRDT service.

    Replicated ORSet CRDT service.

    A

    ORSet entry type.

  19. case class RemoveOp(entry: Any, timestamps: Set[VectorTime] = Set.empty) extends CRDTFormat with Product with Serializable

    Permalink

    Persistent remove operation used for ORSet and ORCart.

  20. case class UpdateOp(delta: Any) extends CRDTFormat with Product with Serializable

    Permalink

    Persistent update operation used for Counter.

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 ORCart extends Serializable

    Permalink
  6. object ORSet extends Serializable

    Permalink
  7. package japi

    Permalink
  8. package pure

    Permalink

Ungrouped