NServiceBus.IncomingContextExtensions.TryRemoveResponseStateBasedOnCorrelationId C# (CSharp) Method

TryRemoveResponseStateBasedOnCorrelationId() public static method

public static TryRemoveResponseStateBasedOnCorrelationId ( this context, IncomingMessage message, RequestResponseStateLookup lookup ) : RequestResponseStateLookup.State?
context this
message IncomingMessage
lookup RequestResponseStateLookup
return RequestResponseStateLookup.State?
        public static RequestResponseStateLookup.State? TryRemoveResponseStateBasedOnCorrelationId(this IIncomingContext context, IncomingMessage message, RequestResponseStateLookup lookup)
        {
            var correlationId = context.GetCorrelationId();

            if (correlationId == null)
            {
                return null;
            }

            string version;
            var checkMessageIntent = true;

            if (message.Headers.TryGetValue(Headers.NServiceBusVersion, out version))
            {
                Version parsedVersion;
                if (Version.TryParse(version, out parsedVersion))
                {
                    if (parsedVersion < minimumVersionThatSupportMessageIntent_Reply)
                    {
                        checkMessageIntent = false;
                    }
                }
            }

            var messageIntentEnum = message.GetMesssageIntent();
            if (checkMessageIntent && messageIntentEnum != MessageIntentEnum.Reply)
            {
                return null;
            }

            RequestResponseStateLookup.State state;
            return lookup.TryRemove(correlationId, out state) ? (RequestResponseStateLookup.State?) state : null;
        }