public ClusterReadView(Cluster cluster) { _cluster = cluster; _state = new ClusterEvent.CurrentClusterState(); _reachability = Reachability.Empty; _latestStats = new ClusterEvent.CurrentInternalStats(new GossipStats(), new VectorClockStats()); _selfAddress = cluster.SelfAddress; _eventBusListener = cluster.System.SystemActorOf( Props.Create(() => new EventBusListener(cluster, this)) .WithDispatcher(cluster.Settings.UseDispatcher) .WithDeploy(Deploy.Local), "clusterEventBusListener"); }
public ReachabilityChanged(Reachability reachability) { _reachability = reachability; }
public Reachability Merge(IEnumerable<UniqueAddress> allowed, Reachability other) { var recordBuilder = ImmutableList.CreateBuilder<Record>(); //TODO: Size hint somehow? var newVersions = _versions; foreach (var observer in allowed) { var observerVersion1 = CurrentVersion(observer); var observerVersion2 = other.CurrentVersion(observer); var rows1 = ObserverRows(observer); var rows2 = other.ObserverRows(observer); if (rows1 != null && rows2 != null) { var rows = observerVersion1 > observerVersion2 ? rows1 : rows2; foreach(var record in rows.Values.Where(r => allowed.Contains(r.Subject))) recordBuilder.Add(record); } if (rows1 != null && rows2 == null) { if(observerVersion1 > observerVersion2) foreach (var record in rows1.Values.Where(r => allowed.Contains(r.Subject))) recordBuilder.Add(record); } if (rows1 == null && rows2 != null) { if (observerVersion2 > observerVersion1) foreach (var record in rows2.Values.Where(r => allowed.Contains(r.Subject))) recordBuilder.Add(record); } if (observerVersion2 > observerVersion1) newVersions = newVersions.SetItem(observer, observerVersion2); } newVersions = ImmutableDictionary.CreateRange(newVersions.Where(p => allowed.Contains(p.Key))); return new Reachability(recordBuilder.ToImmutable(), newVersions); }
public ReachabilityChanged(Reachability reachability) { _reachability = reachability; }
/// <summary> /// TBD /// </summary> /// <param name="seen">TBD</param> /// <param name="reachability">TBD</param> /// <returns>TBD</returns> public GossipOverview Copy(ImmutableHashSet <UniqueAddress> seen = null, Reachability reachability = null) { return(new GossipOverview(seen ?? _seen, reachability ?? _reachability)); }
/// <summary> /// TBD /// </summary> /// <param name="seen">TBD</param> /// <param name="reachability">TBD</param> public GossipOverview(ImmutableHashSet <UniqueAddress> seen, Reachability reachability) { _seen = seen; _reachability = reachability; }
/// <summary> /// TBD /// </summary> /// <param name="reachability">TBD</param> public GossipOverview(Reachability reachability) : this(ImmutableHashSet.Create <UniqueAddress>(), reachability) { }
public GossipOverview Copy(ImmutableHashSet<UniqueAddress> seen = null, Reachability reachability = null) { return new GossipOverview(seen ?? _seen, reachability ?? _reachability); }
public GossipOverview(ImmutableHashSet<UniqueAddress> seen, Reachability reachability) { _seen = seen; _reachability = reachability; }
public GossipOverview(Reachability reachability) : this(ImmutableHashSet.Create<UniqueAddress>(), reachability) { }