Beispiel #1
0
        async Task <HostReceiveEndpointHandle> StartEndpoint(string endpointName, IReceiveEndpoint endpoint)
        {
            try
            {
                var endpointReady = new ReceiveEndpointReadyObserver(endpoint);

                var consumeObserver         = endpoint.ConnectConsumeObserver(_consumeObservers);
                var receiveObserver         = endpoint.ConnectReceiveObserver(_receiveObservers);
                var receiveEndpointObserver = endpoint.ConnectReceiveEndpointObserver(_receiveEndpointObservers);
                var endpointHandle          = endpoint.Start();

                var handle = new Handle(endpointHandle, endpoint, endpointReady.Ready, () => Remove(endpointName),
                                        receiveObserver, receiveEndpointObserver, consumeObserver);

                await handle.Ready.ConfigureAwait(false);

                lock (_mutateLock)
                    _handles.Add(endpointName, handle);

                return(handle);
            }
            catch
            {
                lock (_mutateLock)
                    _endpoints.Remove(endpointName);

                throw;
            }
        }
Beispiel #2
0
        async Task RestartReceiveEndpoint()
        {
            try
            {
                var handle = _receiveEndpoint.Start();

                await handle.Ready.ConfigureAwait(false);
            }
            catch (Exception exception)
            {
                LogContext.Error?.Log(exception, "Kill Switch failed to restart endpoint: {InputAddress}", _receiveEndpoint.InputAddress);
            }
        }