public static void UpdateAmqpMessageHeadersAndProperties(AmqpMessage message, BrokeredMessage brokeredMessage, bool amqpClient) { BrokeredMessage.MessageMembers initializedMembers = brokeredMessage.InitializedMembers; if ((int)(initializedMembers & BrokeredMessage.MessageMembers.DeliveryCount) != 0) { message.Header.DeliveryCount = new uint?((uint)(brokeredMessage.DeliveryCount - (amqpClient ? 1 : 0))); } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.TimeToLive) != 0 && brokeredMessage.TimeToLive != TimeSpan.MaxValue) { message.Header.Ttl = new uint?((uint)brokeredMessage.TimeToLive.TotalMilliseconds); } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.EnqueuedTimeUtc) != 0) { message.MessageAnnotations.Map["x-opt-enqueued-time"] = brokeredMessage.EnqueuedTimeUtc; } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.SequenceNumber) != 0) { message.MessageAnnotations.Map["x-opt-sequence-number"] = brokeredMessage.SequenceNumber; } if (amqpClient && (int)(initializedMembers & BrokeredMessage.MessageMembers.LockedUntilUtc) != 0) { message.MessageAnnotations.Map["x-opt-locked-until"] = brokeredMessage.LockedUntilUtc; } if (amqpClient && (int)(initializedMembers & BrokeredMessage.MessageMembers.Publisher) != 0) { message.MessageAnnotations.Map["x-opt-publisher"] = brokeredMessage.Publisher; } if (amqpClient && (int)(initializedMembers & BrokeredMessage.MessageMembers.PartitionKey) != 0) { message.MessageAnnotations.Map["x-opt-partition-key"] = brokeredMessage.PartitionKey; } if (brokeredMessage.ArePropertiesModifiedByBroker && brokeredMessage.Properties.Count > 0) { if (message.ApplicationProperties == null) { message.ApplicationProperties = new ApplicationProperties(); } foreach (KeyValuePair <string, object> property in brokeredMessage.Properties) { object obj = null; if (!MessageConverter.TryGetAmqpObjectFromNetObject(property.Value, MappingType.ApplicationProperty, out obj)) { continue; } message.ApplicationProperties.Map[property.Key] = obj; } } }
private static void UpdateAmqpMessageHeadersAndProperties(BrokeredMessage source, AmqpMessage target, SerializationTarget serializationTarget) { MessageConverter.UpdateAmqpMessageHeadersAndProperties(target, source, false); BrokeredMessage.MessageMembers initializedMembers = source.InitializedMembers; if ((int)(initializedMembers & BrokeredMessage.MessageMembers.PrefilteredHeaders) != 0) { target.DeliveryAnnotations.Map["x-opt-prefiltered-headers"] = MessageConverter.ReadStream(source.PrefilteredHeaders); } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.PrefilteredProperties) != 0) { target.DeliveryAnnotations.Map["x-opt-prefiltered-properties"] = MessageConverter.ReadStream(source.PrefilteredProperties); } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.TransferDestination) != 0) { target.DeliveryAnnotations.Map["x-opt-transfer-destination"] = source.TransferDestination; } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.TransferSource) != 0) { target.DeliveryAnnotations.Map["x-opt-transfer-source"] = source.TransferSource; } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.TransferSequenceNumber) != 0) { target.DeliveryAnnotations.Map["x-opt-transfer-sn"] = source.TransferSequenceNumber; target.DeliveryAnnotations.Map["x-opt-transfer-session"] = source.SessionId; } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.TransferHopCount) != 0) { target.DeliveryAnnotations.Map["x-opt-transfer-hop-count"] = source.TransferHopCount; } if ((int)(initializedMembers & BrokeredMessage.MessageMembers.TransferDestinationEntityId) != 0) { target.DeliveryAnnotations.Map["x-opt-transfer-resource"] = source.TransferDestinationResourceId; } if (serializationTarget == SerializationTarget.Communication && (int)(initializedMembers & BrokeredMessage.MessageMembers.LockToken) != 0) { target.DeliveryAnnotations.Map["x-opt-lock-token"] = source.LockToken; target.MessageAnnotations.Map["x-opt-locked-until"] = source.LockedUntilUtc; } }