public static Message Convert(System.Messaging.Message m)
{
var result = new Message
{
Id = m.Id,
CorrelationId = m.CorrelationId == "00000000-0000-0000-0000-000000000000\\0" ? null : m.CorrelationId,
Recoverable = m.Recoverable,
TimeToBeReceived = m.TimeToBeReceived,
ReplyToAddress = GetIndependentAddressForQueue(m.ResponseQueue),
MessageIntent = Enum.IsDefined(typeof(MessageIntentEnum), m.AppSpecific) ? (MessageIntentEnum)m.AppSpecific : MessageIntentEnum.Send
};
m.BodyStream.Position = 0;
result.Body = new byte[m.BodyStream.Length];
m.BodyStream.Read(result.Body, 0, result.Body.Length);
result.Headers = new Dictionary<string, string>();
if (m.Extension.Length > 0)
{
var stream = new MemoryStream(m.Extension);
var o = headerSerializer.Deserialize(stream);
foreach (var pair in o as List<HeaderInfo>)
if (pair.Key != null)
result.Headers.Add(pair.Key, pair.Value);
}
result.Id = result.GetOriginalId();
if (result.Headers.ContainsKey("EnclosedMessageTypes")) // This is a V2.6 message
ExtractMsmqMessageLabelInformationForBackwardCompatibility(m, result);
result.IdForCorrelation = result.GetIdForCorrelation();
return result;
}