Click or drag to resize
Akka.NETORSetT Class
Implements a 'Observed Remove Set' CRDT, also called a 'OR-Set'. Elements can be added and removed any number of times. Concurrent add wins over remove. It is not implemented as in the paper A comprehensive study of Convergent and Commutative Replicated Data Types. This is more space efficient and doesn't accumulate garbage for removed elements. It is described in the paper An optimized conflict-free replicated set The implementation is inspired by the Riak DT riak_dt_orswot. The ORSet has a version vector that is incremented when an element is added to the set. The `node -> count` pair for that increment is stored against the element as its "birth dot". Every time the element is re-added to the set, its "birth dot" is updated to that of the `node -> count` version vector entry resulting from the add. When an element is removed, we simply drop it, no tombstones. When an element exists in replica A and not replica B, is it because A added it and B has not yet seen that, or that B removed it and A has not yet seen that? In this implementation we compare the `dot` of the present element to the version vector in the Set it is absent from. If the element dot is not "seen" by the Set version vector, that means the other set has yet to see this add, and the item is in the merged Set. If the Set version vector dominates the dot, that means the other Set has removed this element already, and the item is not in the merged Set. This class is immutable, i.e. "modifying" methods return a new instance.
Inheritance Hierarchy
SystemObject
  Akka.DistributedDataFastMergeORSetT
    Akka.DistributedDataORSetT

Namespace:  Akka.DistributedData
Assembly:  Akka.DistributedData (in Akka.DistributedData.dll) Version: 1.2.3.42 (1.2.3.42)
Syntax
[SerializableAttribute]
public class ORSet<T> : FastMerge<ORSet<T>>, 
	IReplicatedDataSerialization, IRemovedNodePruning<ORSet<T>>, IReplicatedData<ORSet<T>>, 
	IReplicatedData, IEquatable<ORSet<T>>, IEnumerable<T>, IEnumerable

Type Parameters

T

[Missing <typeparam name="T"/> documentation for "T:Akka.DistributedData.ORSet`1"]

The ORSetT type exposes the following members.

Constructors
  NameDescription
Public methodORSetT
Initializes a new instance of the ORSetT class
Public methodORSetT(IImmutableDictionaryT, VersionVector, VersionVector)
Initializes a new instance of the ORSetT class
Top
Properties
  NameDescription
Public propertyCount
Public propertyElements
Public propertyIsEmpty
Top
Methods
  NameDescription
Public methodAdd(Cluster, T)
Adds an element to the set
Public methodAdd(UniqueAddress, T)
Adds an element to the set
Protected methodAssignAncestor
INTERNAL API: should be called from "updating" methods
(Inherited from FastMergeT.)
Public methodClear
Protected methodClearAncestor
INTERNAL API: should be called from merge
(Inherited from FastMergeT.)
Public methodContains
Public methodEquals(Object)
Determines whether the specified object is equal to the current object.
(Overrides ObjectEquals(Object).)
Public methodEquals(ORSetT)
Indicates whether the current object is equal to another object of the same type.
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetEnumerator
Returns an enumerator that iterates through the collection.
Public methodGetHashCode
Serves as the default hash function.
(Overrides ObjectGetHashCode.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodIsAncestorOf
INTERNAL API: should be used from merge
(Inherited from FastMergeT.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodMerge(IReplicatedData)
TBD
(Inherited from FastMergeT.)
Public methodMerge(ORSetT)
When element is in this Set but not in that Set: Compare the "birth dot" of the present element to the version vector in the Set it is absent from. If the element dot is not "seen" by other Set version vector, that means the other set has yet to see this add, and the element is to be in the merged Set. If the other Set version vector dominates the dot, that means the other Set has removed the element already, and the element is not to be in the merged Set. When element in both this Set and in that Set: Some dots may still need to be shed. If this Set has dots that the other Set does not have, and the other Set version vector dominates those dots, then we need to drop those dots. Keep only common dots, and dots that are not dominated by the other sides version vector
(Overrides FastMergeTMerge(T).)
Public methodNeedPruningFrom
Public methodPrune
Public methodPruningCleanup
Public methodRemove(Cluster, T)
Removes an element from the set.
Public methodRemove(UniqueAddress, T)
Removes an element from the set.
Public methodToString
Returns a string that represents the current object.
(Overrides ObjectToString.)
Top
Fields
  NameDescription
Public fieldStatic memberEmpty
Top
Extension Methods
  NameDescription
Public Extension MethodAsInstanceOfT
TBD
(Defined by Extensions.)
Public Extension MethodConcatT
TBD
(Defined by Extensions.)
Public Extension MethodDropT
Scala alias for Skip
(Defined by Extensions.)
Public Extension MethodForEachT
Applies a delegate action to all elements of this enumerable.
(Defined by Extensions.)
Public Extension MethodGroupedT
Partitions elements in fixed size Credits to http://stackoverflow.com/a/13731854/465132
(Defined by EnumerableExtensions.)
Public Extension MethodHeadT
Scala alias for FirstOrDefault
(Defined by Extensions.)
Public Extension MethodIteratorT
TBD
(Defined by EnumeratorExtensions.)
Public Extension MethodMatchOverloaded.
Matches the specified target.
(Defined by PatternMatch.)
Public Extension MethodMatchTOverloaded.
Matches the specified target and return a result of target processing.
(Defined by PatternMatch.)
Public Extension MethodShouldBeT
TBD
(Defined by AkkaSpecExtensions.)
Public Extension MethodShouldOnlyContainInOrderT
TBD
(Defined by AkkaSpecExtensions.)
Public Extension MethodTakeRightT
Selects last n elements.
(Defined by Extensions.)
Top
See Also