AsyncDolls.Pipeline.Outgoing.OutgoingPipeline.Invoke C# (CSharp) Method

Invoke() public method

public Invoke ( LogicalMessage outgoingLogicalMessage, DeliveryOptions options, EndpointConfiguration configuration, TransportMessage incomingTransportMessage = null ) : System.Threading.Tasks.Task
outgoingLogicalMessage LogicalMessage
options DeliveryOptions
configuration EndpointConfiguration
incomingTransportMessage TransportMessage
return System.Threading.Tasks.Task
        public virtual async Task Invoke(LogicalMessage outgoingLogicalMessage, DeliveryOptions options, EndpointConfiguration.ReadOnly configuration, TransportMessage incomingTransportMessage = null)
        {
            executingLogicalPipeline = new Queue<IOutgoingLogicalStep>(registeredlogicalPipelineSteps);
            var logicalContext = new OutgoingLogicalContext(outgoingLogicalMessage, options, configuration);
            await InvokeLogical(logicalContext)
                .ConfigureAwait(false);

            // We assume that someone in the pipeline made transport message
            var outgoingTransportMessage = logicalContext.Get<TransportMessage>();

            executingTransportPipeline = new Queue<IOutgoingTransportStep>(registeredTransportPipelineSteps);
            var transportContext = new OutgoingTransportContext(outgoingLogicalMessage, outgoingTransportMessage, options, configuration, incomingTransportMessage);
            await InvokeTransport(transportContext)
                .ConfigureAwait(false);
        }