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());
        }
示例#3
0
        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;
            }
        }
示例#5
0
        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;
            }
        }
示例#6
0
 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);
 }