public async Task Send(HttpHostContext context, IPipe <HttpHostContext> next) { var inputAddress = context.HostSettings.GetInputAddress(); var consumer = new HttpConsumer(_context); context.RegisterEndpointHandler(_receiveSettings.PathMatch, consumer); await consumer.Ready.ConfigureAwait(false); Add(consumer); await _context.TransportObservers.Ready(new ReceiveTransportReadyEvent(inputAddress)).ConfigureAwait(false); try { await consumer.Completed.ConfigureAwait(false); } finally { HttpConsumerMetrics metrics = consumer; await _context.TransportObservers.Completed(new ReceiveTransportCompletedEvent(inputAddress, metrics)).ConfigureAwait(false); LogContext.Debug?.Log("Consumer completed: {DeliveryCount} received, {ConcurrentDeliveryCount} concurrent", metrics.DeliveryCount, metrics.ConcurrentDeliveryCount); } }
public async Task Send(OwinHostContext context, IPipe <OwinHostContext> next) { var inputAddress = context.HostSettings.GetInputAddress(); using (var scope = _supervisor.CreateScope($"{TypeMetadataCache<HttpConsumerFilter>.ShortName} - {inputAddress}", () => TaskUtil.Completed)) { var controller = new HttpConsumerAction(_receiveObserver, _hostSettings, _receiveSettings, _receivePipe, scope, _sendPipe); context.RegisterEndpointHandler(_receiveSettings.PathMatch, controller); await scope.Ready.ConfigureAwait(false); await _transportObserver.Ready(new ReceiveTransportReadyEvent(inputAddress)).ConfigureAwait(false); scope.SetReady(); try { await scope.Completed.ConfigureAwait(false); } finally { HttpConsumerMetrics metrics = controller; await _transportObserver.Completed(new ReceiveTransportCompletedEvent(inputAddress, metrics)).ConfigureAwait(false); if (_log.IsDebugEnabled) { _log.DebugFormat("Consumer {0} received, {1} concurrent", metrics.DeliveryCount, metrics.ConcurrentDeliveryCount); } } } }
public async Task Send(HttpHostContext context, IPipe <HttpHostContext> next) { var inputAddress = context.HostSettings.GetInputAddress(); var consumer = new HttpConsumer(_receiveObserver, _hostSettings, _receivePipe, _context); context.RegisterEndpointHandler(_receiveSettings.PathMatch, consumer); await consumer.Ready.ConfigureAwait(false); Add(consumer); await _transportObserver.Ready(new ReceiveTransportReadyEvent(inputAddress)).ConfigureAwait(false); try { await consumer.Completed.ConfigureAwait(false); } finally { HttpConsumerMetrics metrics = consumer; await _transportObserver.Completed(new ReceiveTransportCompletedEvent(inputAddress, metrics)).ConfigureAwait(false); if (_log.IsDebugEnabled) { _log.DebugFormat("Consumer {0} received, {1} concurrent", metrics.DeliveryCount, metrics.ConcurrentDeliveryCount); } } }