/// <summary> /// TBD /// </summary> /// <param name="selfAddress">TBD</param> /// <param name="nodes">TBD</param> /// <param name="unreachable">TBD</param> /// <param name="monitoredByNumberOfNodes">TBD</param> /// <exception cref="ArgumentException"> /// This exception is thrown when the specified <paramref name="nodes"/> doesn't contain the specified <paramref name="selfAddress"/>. /// </exception> public HeartbeatNodeRing( UniqueAddress selfAddress, ImmutableHashSet <UniqueAddress> nodes, ImmutableHashSet <UniqueAddress> unreachable, int monitoredByNumberOfNodes) { SelfAddress = selfAddress; Nodes = nodes; NodeRing = nodes.ToImmutableSortedSet(RingComparer.Instance); Unreachable = unreachable; MonitoredByNumberOfNodes = monitoredByNumberOfNodes; if (!nodes.Contains(selfAddress)) { throw new ArgumentException($"Nodes [${string.Join(", ", nodes)}] must contain selfAddress [{selfAddress}]"); } _useAllAsReceivers = MonitoredByNumberOfNodes >= (NodeRing.Count - 1); _myReceivers = Option <IImmutableSet <UniqueAddress> > .None; }
public void ToImmutableHashSet() { ImmutableHashSet <int> .Builder builder = ImmutableHashSet.CreateBuilder <int>(); builder.Add(1); builder.Add(2); builder.Add(3); var set = builder.ToImmutableSortedSet(); Assert.True(builder.Contains(1)); Assert.True(builder.Contains(2)); Assert.True(builder.Contains(3)); builder.Remove(3); Assert.False(builder.Contains(3)); Assert.True(set.Contains(3)); builder.Clear(); Assert.True(builder.ToImmutableHashSet().IsEmpty); Assert.False(set.IsEmpty); ImmutableHashSet <int> .Builder nullBuilder = null; AssertExtensions.Throws <ArgumentNullException>("builder", () => nullBuilder.ToImmutableHashSet()); }