final class GCounter extends ReplicatedData with ReplicatedDataSerialization with RemovedNodePruning with FastMerge

Implements a 'Growing Counter' CRDT, also called a 'G-Counter'.

It is described in the paper A comprehensive study of Convergent and Commutative Replicated Data Types.

A G-Counter is a increment-only counter (inspired by vector clocks) in which only increment and merge are possible. Incrementing the counter adds 1 to the count for the current node. Divergent histories are resolved by taking the maximum count for each node (like a vector clock merge). The value of the counter is the sum of all node counts.

This class is immutable, i.e. "modifying" methods return a new instance.

Annotations
@SerialVersionUID()
Source
GCounter.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. GCounter
  2. FastMerge
  3. RemovedNodePruning
  4. ReplicatedDataSerialization
  5. Serializable
  6. Serializable
  7. ReplicatedData
  8. AnyRef
  9. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. type T = GCounter

    The type of the concrete implementation, e.g.

    The type of the concrete implementation, e.g. GSet[A]. To be specified by subclass.

    Definition Classes
    GCounterReplicatedData

Value Members

  1. def +(delta: Long)(implicit node: Cluster): GCounter

    Increment the counter with the delta specified.

    Increment the counter with the delta specified. The delta must be zero or positive.

  2. def equals(o: Any): Boolean
    Definition Classes
    GCounter → AnyRef → Any
  3. def getValue: BigInteger

    Java API: Current total value of the counter.

  4. def hashCode(): Int
    Definition Classes
    GCounter → AnyRef → Any
  5. def increment(node: Cluster, delta: Long = 1): GCounter

    Increment the counter with the delta specified.

    Increment the counter with the delta specified. The delta must be zero or positive.

  6. def merge(that: GCounter): GCounter

    Monotonic merge function.

    Monotonic merge function.

    Definition Classes
    GCounterReplicatedData
  7. def needPruningFrom(removedNode: UniqueAddress): Boolean

    Does it have any state changes from a specific node, which has been removed from the cluster.

    Does it have any state changes from a specific node, which has been removed from the cluster.

    Definition Classes
    GCounterRemovedNodePruning
  8. def prune(removedNode: UniqueAddress, collapseInto: UniqueAddress): GCounter

    When the removed node has been removed from the cluster the state changes from that node will be pruned by collapsing the data entries to another node.

    When the removed node has been removed from the cluster the state changes from that node will be pruned by collapsing the data entries to another node.

    Definition Classes
    GCounterRemovedNodePruning
  9. def pruningCleanup(removedNode: UniqueAddress): GCounter

    Remove data entries from a node that has been removed from the cluster and already been pruned.

    Remove data entries from a node that has been removed from the cluster and already been pruned.

    Definition Classes
    GCounterRemovedNodePruning
  10. def toString(): String
    Definition Classes
    GCounter → AnyRef → Any
  11. def value: BigInt

    Scala API: Current total value of the counter.