public CustomProbe(LivenessStatus livenessStatus, ReadinessStatus readinessStatus) { _livenessStatus = livenessStatus; _readinessStatus = readinessStatus; Receive <GetCurrentLiveness>(_ => Sender.Tell(_livenessStatus)); Receive <GetCurrentReadiness>(_ => Sender.Tell(_readinessStatus)); }
private void DisplayStatus() { if (statusLine != null) { var status = new ReadinessStatus(); if (binder != null) { status = binder.PublisherStatus; } statusLine.faceColor = status.readiness == PublisherReadiness.Ready ? Color.white : Color.red; statusLine.text = $"Status: {status.readiness.ToString()}, Create={status.recommendedForCreate.ToString("0.00")}, {status.readyForCreate.ToString("0.00")}"; } }
public ClusterReadinessProbe(ReadinessStatus readinessStatus) { _readinessStatus = readinessStatus; Receive <ReadinessStatus>(s => { _readinessStatus = s; foreach (var sub in _subscribers) { sub.Tell(s); } }); Receive <GetCurrentReadiness>(_ => Sender.Tell(_readinessStatus)); Receive <SubscribeToReadiness>(s => { _subscribers.Add(s.Subscriber); Context.Watch(s.Subscriber); s.Subscriber.Tell(_readinessStatus); }); Receive <UnsubscribeFromReadiness>(u => { _subscribers.Remove(u.Subscriber); Context.Unwatch(u.Subscriber); }); Receive <Terminated>(t => { _subscribers.Remove(t.ActorRef); }); Receive <ClusterEvent.UnreachableMember>(r => { if (_cluster.State.Unreachable.SetEquals(_cluster.State.Members.Remove(_cluster.SelfMember))) { if (_notReadyTask == null) { _notReadyTask = Context.System.Scheduler.ScheduleTellOnceCancelable(TimeSpan.FromSeconds(20), Self, new ReadinessStatus(false, "everyone else is unreachable"), ActorRefs.NoSender); } } }); Receive <ClusterEvent.ReachableMember>(r => { // someone else has become reachable again. Can abort "not ready" task if it was already running _notReadyTask?.Cancel(); }); }
private void DisplayStatus() { if (statusLine != null) { var status = new ReadinessStatus(); if (binder != null) { status = binder.PublisherStatus; } statusLine.faceColor = status.readiness == PublisherReadiness.Ready ? Color.white : Color.red; string statusText = $"Status: {status.readiness}"; if (status.readiness == PublisherReadiness.NotReadyToCreate) { statusText += $" Create={status.recommendedForCreate.ToString("0.00")}, {status.readyForCreate.ToString("0.00")}"; } string wltStatus = WorldLocking.Core.WorldLockingManager.GetInstance().ErrorStatus; if (string.IsNullOrEmpty(wltStatus)) { wltStatus = "Tracking"; } statusText += $" {wltStatus}"; statusLine.text = statusText; } }