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
- Alphabetic
- By Inheritance
- PNCounter
- RemovedNodePruning
- ReplicatedDataSerialization
- Serializable
- Serializable
- ReplicatedData
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Type Members
-
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
- PNCounter → ReplicatedData
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
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.
-
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.
- def ->[B](y: B): (PNCounter, B)
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
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.
- def ensuring(cond: (PNCounter) ⇒ Boolean, msg: ⇒ Any): PNCounter
- def ensuring(cond: (PNCounter) ⇒ Boolean): PNCounter
- def ensuring(cond: Boolean, msg: ⇒ Any): PNCounter
- def ensuring(cond: Boolean): PNCounter
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(o: Any): Boolean
- Definition Classes
- PNCounter → AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
- def formatted(fmtstr: String): String
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
getValue: BigInteger
Java API: Current total value of the counter.
-
def
hashCode(): Int
- Definition Classes
- PNCounter → AnyRef → Any
-
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.
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
merge(that: PNCounter): PNCounter
Monotonic merge function.
Monotonic merge function.
- Definition Classes
- PNCounter → ReplicatedData
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
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
- PNCounter → RemovedNodePruning
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
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
- PNCounter → RemovedNodePruning
-
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
- PNCounter → RemovedNodePruning
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- PNCounter → AnyRef → Any
-
def
value: BigInt
Scala API: Current total value of the counter.
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
- def →[B](y: B): (PNCounter, B)
Shadowed Implicit Value Members
-
def
+(other: String): String
- Implicit
- This member is added by an implicit conversion from PNCounter to any2stringadd[PNCounter] performed by method any2stringadd in scala.Predef.
- Shadowing
- This implicitly inherited member is shadowed by one or more members in this class.
To access this member you can use a type ascription:(pNCounter: any2stringadd[PNCounter]).+(other)
- Definition Classes
- any2stringadd