Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
                    }
                }
            }
        }
Esempio n. 3
0
        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);
                }
            }
        }