private DeadPeerDetectorEntry CreateEntry(PeerDescriptor descriptor) { var entry = new DeadPeerDetectorEntry(descriptor, _configuration, _bus, TaskScheduler); entry.PeerTimeoutDetected += OnPeerTimeout; entry.PeerRespondingDetected += OnPeerResponding; entry.PingMissed += (detectorEntry, time) => PingMissed(detectorEntry.Descriptor.PeerId, time); return entry; }
public void Setup() { _configurationMock = new Mock<IDirectoryConfiguration>(); _bus = new TestBus(); var peer = new Peer(new PeerId("Abc.Testing.0"), "tcp://abctest:12300"); var peerDescriptor = peer.ToPeerDescriptor(true); _entry = new DeadPeerDetectorEntry(peerDescriptor, _configurationMock.Object, _bus, new CurrentThreadTaskScheduler()); }
private DeadPeerDetectorEntry CreateEntry(PeerDescriptor descriptor) { var entry = new DeadPeerDetectorEntry(descriptor, _configuration, _bus, TaskScheduler); entry.PeerTimeoutDetected += OnPeerTimeout; entry.PeerRespondingDetected += OnPeerResponding; entry.PingTimeout += (detectorEntry, time) => PingTimeout?.Invoke(detectorEntry.Descriptor.PeerId, time); return(entry); }
private void OnPeerTimeout(DeadPeerDetectorEntry entry, DateTime timeoutTimestampUtc) { var descriptor = entry.Descriptor; if (descriptor.PeerId.IsPersistence()) { PersistenceDownDetected(); return; } var canPeerBeUnregistered = !descriptor.IsPersistent || descriptor.HasDebuggerAttached; if (canPeerBeUnregistered) { _bus.Send(new UnregisterPeerCommand(descriptor.Peer, timeoutTimestampUtc)); } else if (descriptor.Peer.IsResponding) { PeerDownDetected(descriptor.PeerId, timeoutTimestampUtc); descriptor.Peer.IsResponding = false; } }
private void OnPeerTimeout(DeadPeerDetectorEntry entry, DateTime timeoutTimestampUtc) { var descriptor = entry.Descriptor; if (descriptor.PeerId.IsPersistence()) { PersistenceDownDetected?.Invoke(); return; } var canPeerBeUnregistered = (!descriptor.IsPersistent || descriptor.HasDebuggerAttached) && IsNotInTheProtectedList(descriptor); if (canPeerBeUnregistered) { _bus.Send(new UnregisterPeerCommand(descriptor.Peer, timeoutTimestampUtc)); } else if (descriptor.Peer.IsResponding) { _bus.Send(new MarkPeerAsNotRespondingCommand(descriptor.PeerId, timeoutTimestampUtc)).Wait(_commandTimeout); descriptor.Peer.IsResponding = false; } }
private void OnPeerResponding(DeadPeerDetectorEntry entry, DateTime timeoutTimestampUtc) { _bus.Send(new MarkPeerAsRespondingCommand(entry.Descriptor.PeerId, timeoutTimestampUtc)).Wait(_commandTimeout); }
private void OnPeerResponding(DeadPeerDetectorEntry entry,DateTime timeoutTimestampUtc) { PeerRespondingDetected(entry.Descriptor.PeerId, timeoutTimestampUtc); }