final class PNCounter extends ReplicatedData with ReplicatedDataSerialization with RemovedNodePruning

Implements a 'Increment/Decrement Counter' CRDT, also called a 'PN-Counter'.

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

PN-Counters allow the counter to be incremented by tracking the increments (P) separate from the decrements (N). Both P and N are represented as two internal GCounters. Merge is handled by merging the internal P and N counters. The value of the counter is the value of the P counter minus the value of the N counter.

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

Annotations
@SerialVersionUID()
Source
PNCounter.scala
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. PNCounter
  2. RemovedNodePruning
  3. ReplicatedDataSerialization
  4. Serializable
  5. Serializable
  6. ReplicatedData
  7. AnyRef
  8. 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 = PNCounter

    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
    PNCounterReplicatedData

Value Members

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

    Increment the counter with the delta specified.

    Increment the counter with the delta specified. If the delta is negative then it will decrement instead of increment.

  2. def -(delta: Long)(implicit node: Cluster): PNCounter

    Decrement the counter with the delta specified.

    Decrement the counter with the delta specified. If the delta is negative then it will increment instead of decrement.

  3. def decrement(node: Cluster, delta: Long = 1): PNCounter

    Decrement the counter with the delta specified.

    Decrement the counter with the delta specified. If the delta is negative then it will increment instead of decrement.

  4. def equals(o: Any): Boolean
    Definition Classes
    PNCounter → AnyRef → Any
  5. def getValue: BigInteger

    Java API: Current total value of the counter.

  6. def hashCode(): Int
    Definition Classes
    PNCounter → AnyRef → Any
  7. def increment(node: Cluster, delta: Long = 1): PNCounter

    Increment the counter with the delta specified.

    Increment the counter with the delta specified. If the delta is negative then it will decrement instead of increment.

  8. def merge(that: PNCounter): PNCounter

    Monotonic merge function.

    Monotonic merge function.

    Definition Classes
    PNCounterReplicatedData
  9. 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
    PNCounterRemovedNodePruning
  10. def prune(removedNode: UniqueAddress, collapseInto: UniqueAddress): PNCounter

    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
    PNCounterRemovedNodePruning
  11. def pruningCleanup(removedNode: UniqueAddress): PNCounter

    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
    PNCounterRemovedNodePruning
  12. def toString(): String
    Definition Classes
    PNCounter → AnyRef → Any
  13. def value: BigInt

    Scala API: Current total value of the counter.