public static void Set(this IDictionary <string, object> dictionary, IEnumerable <HeaderValue> headerValues)
 {
     foreach (HeaderValue header in headerValues)
     {
         _adapter.Set(dictionary, header);
     }
 }
        /// <summary>
        /// Set the host headers on the SendContext (for error, dead-letter, etc.)
        /// </summary>
        /// <param name="adapter"></param>
        /// <param name="headers"></param>
        /// <param name="exceptionContext"></param>
        public static void SetExceptionHeaders <T>(this ITransportSetHeaderAdapter <T> adapter, IDictionary <string, T> headers, ExceptionReceiveContext
                                                   exceptionContext)
        {
            var exception = exceptionContext.Exception.GetBaseException() ?? exceptionContext.Exception;

            var exceptionMessage = ExceptionUtil.GetMessage(exception);

            adapter.Set(headers, MessageHeaders.Reason, "fault");

            adapter.Set(headers, MessageHeaders.FaultExceptionType, TypeMetadataCache.GetShortName(exception.GetType()));
            adapter.Set(headers, MessageHeaders.FaultMessage, exceptionMessage);
            adapter.Set(headers, MessageHeaders.FaultTimestamp, exceptionContext.ExceptionTimestamp);
            adapter.Set(headers, MessageHeaders.FaultStackTrace, ExceptionUtil.GetStackTrace(exception));

            if (exceptionContext.TryGetPayload(out ConsumerFaultInfo info))
            {
                adapter.Set(headers, MessageHeaders.FaultConsumerType, info.ConsumerType);
                adapter.Set(headers, MessageHeaders.FaultMessageType, info.MessageType);
            }

            if (exceptionContext.TryGetPayload(out RetryContext retryContext) && retryContext.RetryCount > 0)
            {
                adapter.Set(headers, MessageHeaders.FaultRetryCount, retryContext.RetryCount);
            }
        }
 public static void Set <TValueType>(this ITransportSetHeaderAdapter <TValueType> adapter, IDictionary <string, TValueType> dictionary,
                                     IEnumerable <HeaderValue> headerValues)
 {
     foreach (HeaderValue header in headerValues)
     {
         adapter.Set(dictionary, header);
     }
 }
 public static void Set <TValueType>(this ITransportSetHeaderAdapter <TValueType> adapter, IDictionary <string, TValueType> dictionary, string key,
                                     DateTime?value, Func <DateTime, string> formatter)
 {
     if (value.HasValue)
     {
         adapter.Set(dictionary, new HeaderValue <string>(key, formatter(value.Value)));
     }
 }
 public static void Set <TValueType>(this ITransportSetHeaderAdapter <TValueType> adapter, IDictionary <string, TValueType> dictionary, string key,
                                     TimeSpan?value)
 {
     if (value.HasValue)
     {
         adapter.Set(dictionary, new HeaderValue <string>(key, ToString(value.Value)));
     }
 }
 public static void Set <TValueType>(this ITransportSetHeaderAdapter <TValueType> adapter, IDictionary <string, TValueType> dictionary, string key,
                                     string value)
 {
     if (!string.IsNullOrWhiteSpace(value))
     {
         adapter.Set(dictionary, new HeaderValue <string>(key, value));
     }
 }
 /// <summary>
 /// Set the host headers on the SendContext (for error, dead-letter, etc.)
 /// </summary>
 /// <param name="adapter"></param>
 /// <param name="dictionary"></param>
 public static void SetHostHeaders <T>(this ITransportSetHeaderAdapter <T> adapter, IDictionary <string, T> dictionary)
 {
     adapter.Set(dictionary, MessageHeaders.Host.MachineName, HostMetadataCache.Host.MachineName);
     adapter.Set(dictionary, MessageHeaders.Host.ProcessName, HostMetadataCache.Host.ProcessName);
     adapter.Set(dictionary, MessageHeaders.Host.ProcessId, HostMetadataCache.Host.ProcessId);
     adapter.Set(dictionary, MessageHeaders.Host.Assembly, HostMetadataCache.Host.Assembly);
     adapter.Set(dictionary, MessageHeaders.Host.AssemblyVersion, HostMetadataCache.Host.AssemblyVersion);
     adapter.Set(dictionary, MessageHeaders.Host.MassTransitVersion, HostMetadataCache.Host.MassTransitVersion);
     adapter.Set(dictionary, MessageHeaders.Host.FrameworkVersion, HostMetadataCache.Host.FrameworkVersion);
     adapter.Set(dictionary, MessageHeaders.Host.OperatingSystemVersion, HostMetadataCache.Host.OperatingSystemVersion);
 }
            public Headers Serialize(SendContext context)
            {
                var dictionary = new Dictionary <string, Header>();

                if (context.MessageId.HasValue)
                {
                    _adapter.Set(dictionary, nameof(MessageContext.MessageId), context.MessageId.Value);
                }

                if (context.CorrelationId.HasValue)
                {
                    _adapter.Set(dictionary, nameof(MessageContext.CorrelationId), context.CorrelationId.Value);
                }

                if (context.ConversationId.HasValue)
                {
                    _adapter.Set(dictionary, nameof(MessageContext.ConversationId), context.ConversationId.Value);
                }

                if (context.InitiatorId.HasValue)
                {
                    _adapter.Set(dictionary, nameof(MessageContext.InitiatorId), context.InitiatorId.Value);
                }

                if (context.DestinationAddress != null)
                {
                    _adapter.Set(dictionary, nameof(MessageContext.DestinationAddress), context.DestinationAddress.ToString());
                }

                if (context.SourceAddress != null)
                {
                    _adapter.Set(dictionary, nameof(MessageContext.SourceAddress), context.SourceAddress.ToString());
                }

                if (context.ContentType != null)
                {
                    _adapter.Set(dictionary, MessageHeaders.ContentType, context.ContentType.MediaType);
                }

                foreach (var headerValue in context.Headers)
                {
                    _adapter.Set(dictionary, headerValue);
                }

                var headers = new Headers();

                foreach (var value in dictionary.Values)
                {
                    headers.Add(value);
                }

                return(headers);
            }