1
0
mirror of synced 2024-11-14 17:33:49 +00:00
PettingZoo/PettingZoo.Core/Rendering/MessagePropertiesRenderer.cs

61 lines
2.5 KiB
C#

using System.Collections.Generic;
using PettingZoo.Core.Connection;
namespace PettingZoo.Core.Rendering
{
public class MessagePropertiesRenderer
{
public static IDictionary<string, string> Render(MessageProperties properties)
{
var result = new Dictionary<string, string>();
if (properties.AppId != null)
result.Add(MessagePropertiesRendererStrings.AppId, properties.AppId);
if (properties.ContentEncoding != null)
result.Add(MessagePropertiesRendererStrings.ContentEncoding, properties.ContentEncoding);
if (properties.ContentType != null)
result.Add(MessagePropertiesRendererStrings.ContentType, properties.ContentType);
if (properties.CorrelationId != null)
result.Add(MessagePropertiesRendererStrings.CorrelationId, properties.CorrelationId);
if (properties.DeliveryMode != null)
result.Add(MessagePropertiesRendererStrings.DeliveryMode,
properties.DeliveryMode == MessageDeliveryMode.Persistent
? MessagePropertiesRendererStrings.DeliveryModePersistent
: MessagePropertiesRendererStrings.DeliveryModeNonPersistent);
if (properties.Expiration != null)
result.Add(MessagePropertiesRendererStrings.Expiration, properties.Expiration);
if (properties.MessageId != null)
result.Add(MessagePropertiesRendererStrings.MessageId, properties.MessageId);
if (properties.Priority != null)
result.Add(MessagePropertiesRendererStrings.Priority, properties.Priority.Value.ToString());
if (properties.ReplyTo != null)
result.Add(MessagePropertiesRendererStrings.ReplyTo, properties.ReplyTo);
if (properties.Timestamp != null)
result.Add(MessagePropertiesRendererStrings.Timestamp, properties.Timestamp.Value.ToString("G"));
if (properties.Type != null)
result.Add(MessagePropertiesRendererStrings.Type, properties.Type);
if (properties.UserId != null)
result.Add(MessagePropertiesRendererStrings.UserId, properties.UserId);
foreach (var (key, value) in properties.Headers)
{
if (!result.TryAdd(key, value))
result.TryAdd(MessagePropertiesRendererStrings.HeaderPrefix + key, value);
}
return result;
}
}
}