ORMap

org.apache.pekko.cluster.ddata.ORMap
See theORMap companion object

Implements a 'Observed Remove Map' CRDT, also called a 'OR-Map'.

It has similar semantics as an ORSet, but in case of concurrent updates the values are merged, and must therefore be ReplicatedData types themselves.

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

Attributes

Companion
object
Source
ORMap.scala
Graph
Supertypes
trait Serializable
class Object
trait Matchable
class Any
Show all

Members list

Type members

Types

type D = DeltaOp

The type of the delta. To be specified by subclass. It may be the same type as T or a different type if needed. For example GSet uses the same type and ORSet uses different types.

The type of the delta. To be specified by subclass. It may be the same type as T or a different type if needed. For example GSet uses the same type and ORSet uses different types.

Attributes

Source
ORMap.scala
type T = ORMap[A, B]

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

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

Attributes

Source
ORMap.scala

Value members

Concrete methods

def :+(entry: (A, B))(implicit node: SelfUniqueAddress): ORMap[A, B]

Adds an entry to the map

Adds an entry to the map

Attributes

See also

ORMap#put

Source
ORMap.scala
def contains(key: A): Boolean

Attributes

Source
ORMap.scala
def entries: Map[A, B]

Scala API: All entries of the map.

Scala API: All entries of the map.

Attributes

Source
ORMap.scala
override def equals(o: Any): Boolean

Compares the receiver object (this) with the argument object (that) for equivalence.

Compares the receiver object (this) with the argument object (that) for equivalence.

Any implementation of this method should be an equivalence relation:

  • It is reflexive: for any instance x of type Any, x.equals(x) should return true.
  • It is symmetric: for any instances x and y of type Any, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any instances x, y, and z of type Any if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

If you override this method, you should verify that your implementation remains an equivalence relation. Additionally, when overriding this method it is usually necessary to override hashCode to ensure that objects which are "equal" (o1.equals(o2) returns true) hash to the same scala.Int. (o1.hashCode.equals(o2.hashCode)).

Value parameters

that

the object to compare against this object for equality.

Attributes

Returns

true if the receiver object is equivalent to the argument; false otherwise.

Definition Classes
Any
Source
ORMap.scala
def get(key: A): Option[B]

Attributes

Source
ORMap.scala
def getEntries(): Map[A, B]

Java API: All entries of the map.

Java API: All entries of the map.

Attributes

Source
ORMap.scala
def getOrElse(key: A, default: => B): B

Scala API: Get the value associated with the key if there is one, else return the given default.

Scala API: Get the value associated with the key if there is one, else return the given default.

Attributes

Source
ORMap.scala
override def hashCode: Int

Calculate a hash code value for the object.

Calculate a hash code value for the object.

The default hashing algorithm is platform dependent.

Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0. However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals method.

Attributes

Returns

the hash code value for this object.

Definition Classes
Any
Source
ORMap.scala

Attributes

Source
ORMap.scala
override def merge(that: ORMap[A, B]): ORMap[A, B]

Monotonic merge function.

Monotonic merge function.

Attributes

Definition Classes
Source
ORMap.scala
override def mergeDelta(thatDelta: DeltaOp): ORMap[A, B]

When delta is merged into the full state this method is used. When the type D of the delta is of the same type as the full state T this method can be implemented by delegating to merge.

When delta is merged into the full state this method is used. When the type D of the delta is of the same type as the full state T this method can be implemented by delegating to merge.

Attributes

Definition Classes
Source
ORMap.scala

The nodes that have changed the state for this data and would need pruning when such node is no longer part of the cluster.

The nodes that have changed the state for this data and would need pruning when such node is no longer part of the cluster.

Attributes

Definition Classes
Source
ORMap.scala
override 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.

Attributes

Definition Classes
Source
ORMap.scala
override def prune(removedNode: UniqueAddress, collapseInto: UniqueAddress): ORMap[A, B]

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.

Attributes

Definition Classes
Source
ORMap.scala
override def pruningCleanup(removedNode: UniqueAddress): ORMap[A, B]

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.

Attributes

Definition Classes
Source
ORMap.scala
def put(node: SelfUniqueAddress, key: A, value: B): ORMap[A, B]

Adds an entry to the map. Note that the new value will be merged with existing values on other nodes and the outcome depends on what ReplicatedData type that is used.

Adds an entry to the map. Note that the new value will be merged with existing values on other nodes and the outcome depends on what ReplicatedData type that is used.

Consider using ORMap#updated instead of put if you want modify existing entry.

IllegalArgumentException is thrown if you try to replace an existing ORSet value, because important history can be lost when replacing the ORSet and undesired effects of merging will occur. Use ORMultiMap or ORMap#updated instead.

Attributes

Source
ORMap.scala
def remove(key: A)(implicit node: SelfUniqueAddress): ORMap[A, B]

Scala API Removes an entry from the map. Note that if there is a conflicting update on another node the entry will not be removed after merge.

Scala API Removes an entry from the map. Note that if there is a conflicting update on another node the entry will not be removed after merge.

Attributes

Source
ORMap.scala
def remove(node: SelfUniqueAddress, key: A): ORMap[A, B]

Java API Removes an entry from the map. Note that if there is a conflicting update on another node the entry will not be removed after merge.

Java API Removes an entry from the map. Note that if there is a conflicting update on another node the entry will not be removed after merge.

Attributes

Source
ORMap.scala
override def resetDelta: ORMap[A, B]

Reset collection of deltas from mutator operations. When the Replicator invokes the modify function of the Update message the delta is always "reset" and when the user code is invoking one or more mutator operations the data is collecting the delta of the operations and makes it available for the Replicator with the delta accessor. When the Replicator has grabbed the delta it will invoke this method to get a clean data instance without the delta.

Reset collection of deltas from mutator operations. When the Replicator invokes the modify function of the Update message the delta is always "reset" and when the user code is invoking one or more mutator operations the data is collecting the delta of the operations and makes it available for the Replicator with the delta accessor. When the Replicator has grabbed the delta it will invoke this method to get a clean data instance without the delta.

Attributes

Definition Classes
Source
ORMap.scala
def size: Int

Attributes

Source
ORMap.scala
override def toString: String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Attributes

Returns

a string representation of the object.

Definition Classes
Any
Source
ORMap.scala
def update(node: SelfUniqueAddress, key: A, initial: B, modify: Function[B, B]): ORMap[A, B]

Java API: Replace a value by applying the modify function on the existing value.

Java API: Replace a value by applying the modify function on the existing value.

If there is no current value for the key the initial value will be passed to the modify function.

Attributes

Source
ORMap.scala
def updated(node: SelfUniqueAddress, key: A, initial: B)(modify: B => B): ORMap[A, B]

Scala API: Replace a value by applying the modify function on the existing value.

Scala API: Replace a value by applying the modify function on the existing value.

If there is no current value for the key the initial value will be passed to the modify function.

Attributes

Source
ORMap.scala

Deprecated methods

def +(entry: (A, B))(implicit node: Cluster): ORMap[A, B]

Attributes

Deprecated
[Since version Akka 2.5.20]
Source
ORMap.scala
def -(key: A)(implicit node: Cluster): ORMap[A, B]

Attributes

Deprecated
[Since version Akka 2.5.20]
Source
ORMap.scala
def put(node: Cluster, key: A, value: B): ORMap[A, B]

Attributes

Deprecated
[Since version Akka 2.5.20]
Source
ORMap.scala
def remove(node: Cluster, key: A): ORMap[A, B]

Attributes

Deprecated
[Since version Akka 2.5.20]
Source
ORMap.scala
def update(node: Cluster, key: A, initial: B, modify: Function[B, B]): ORMap[A, B]

Attributes

Deprecated
[Since version Akka 2.5.20]
Source
ORMap.scala
def updated(node: Cluster, key: A, initial: B)(modify: B => B): ORMap[A, B]

Attributes

Deprecated
[Since version Akka 2.5.20]
Source
ORMap.scala
def updated(node: Cluster, key: A, initial: B, modify: Function[B, B]): ORMap[A, B]

Java API: Replace a value by applying the modify function on the existing value.

Java API: Replace a value by applying the modify function on the existing value.

If there is no current value for the key the initial value will be passed to the modify function.

Attributes

Deprecated
true
Source
ORMap.scala

Concrete fields

override val delta: Option[DeltaOp]

The accumulated delta of mutator operations since previous resetDelta. When the Replicator invokes the modify function of the Update message and the user code is invoking one or more mutator operations the data is collecting the delta of the operations and makes it available for the Replicator with the delta accessor. The modify function shall still return the full state in the same way as ReplicatedData without support for deltas.

The accumulated delta of mutator operations since previous resetDelta. When the Replicator invokes the modify function of the Update message and the user code is invoking one or more mutator operations the data is collecting the delta of the operations and makes it available for the Replicator with the delta accessor. The modify function shall still return the full state in the same way as ReplicatedData without support for deltas.

Attributes

Source
ORMap.scala