Class GSet<A>

java.lang.Object
org.apache.pekko.cluster.ddata.GSet<A>
All Implemented Interfaces:
Serializable, DeltaReplicatedData, FastMerge, ReplicatedData, ReplicatedDataSerialization, ReplicatedDelta, scala.Equals, scala.Product

public final class GSet<A> extends Object implements DeltaReplicatedData, ReplicatedDelta, ReplicatedDataSerialization, FastMerge, scala.Product, Serializable
See Also:
  • Constructor Details

    • GSet

      public GSet()
  • Method Details

    • empty

      public static <A> GSet<A> empty()
    • apply

      public static GSet<Object> apply()
    • create

      public static <A> GSet<A> create()
      Java API
    • apply

      public static <A> GSet<A> apply(scala.collection.immutable.Set<A> elements, scala.Option<GSet<A>> delta)
      Implements a 'Add Set' CRDT, also called a 'G-Set'. You can't remove elements of a G-Set.

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

      A G-Set doesn't accumulate any garbage apart from the elements themselves.

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

    • unapply

      public static <A> scala.Option<scala.collection.immutable.Set<A>> unapply(GSet<A> x$0)
    • elements

      public scala.collection.immutable.Set<A> elements()
    • delta

      public scala.Option<GSet<A>> delta()
      Description copied from interface: DeltaReplicatedData
      The accumulated delta of mutator operations since previous DeltaReplicatedData.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 DeltaReplicatedData.delta() accessor. The modify function shall still return the full state in the same way as ReplicatedData without support for deltas.
      Specified by:
      delta in interface DeltaReplicatedData
    • getElements

      public Set<A> getElements()
      Java API
    • contains

      public boolean contains(A a)
    • isEmpty

      public boolean isEmpty()
    • size

      public int size()
    • $plus

      public GSet<A> $plus(A element)
      Adds an element to the set
    • add

      public GSet<A> add(A element)
      Adds an element to the set
    • merge

      public GSet<A> merge(GSet<A> that)
    • mergeDelta

      public GSet<A> mergeDelta(GSet<A> thatDelta)
    • zero

      public GSet<A> zero()
      Description copied from interface: ReplicatedDelta
      The empty full state. This is used when a delta is received and no existing full state exists on the receiving side. Then the delta is merged into the zero to create the initial full state.
      Specified by:
      zero in interface ReplicatedDelta
    • resetDelta

      public GSet<A> resetDelta()
      Description copied from interface: DeltaReplicatedData
      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 DeltaReplicatedData.delta() accessor. When the Replicator has grabbed the delta it will invoke this method to get a clean data instance without the delta.
      Specified by:
      resetDelta in interface DeltaReplicatedData
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • copy

      public GSet<A> copy(scala.collection.immutable.Set<A> e)
    • productPrefix

      public String productPrefix()
      Specified by:
      productPrefix in interface scala.Product
    • productArity

      public int productArity()
      Specified by:
      productArity in interface scala.Product
    • productElement

      public Object productElement(int x$1)
      Specified by:
      productElement in interface scala.Product
    • productIterator

      public scala.collection.Iterator<Object> productIterator()
      Specified by:
      productIterator in interface scala.Product
    • canEqual

      public boolean canEqual(Object x$1)
      Specified by:
      canEqual in interface scala.Equals
    • productElementName

      public String productElementName(int x$1)
      Specified by:
      productElementName in interface scala.Product
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object x$1)
      Specified by:
      equals in interface scala.Equals
      Overrides:
      equals in class Object