예제 #1
0
        /// <summary>
        /// Transforms the timeout to a <see cref="TransportMessage"/>.
        /// </summary>
        /// <returns>Returns a <see cref="TransportMessage"/>.</returns>
        public TransportMessage ToTransportMessage()
        {
            var replyToAddress = Address.Local;

            if (Headers != null && Headers.ContainsKey(OriginalReplyToAddress))
            {
                replyToAddress = Address.Parse(Headers[OriginalReplyToAddress]);
                Headers.Remove(OriginalReplyToAddress);
            }

            var transportMessage = new TransportMessage(Id, Headers)
            {
                ReplyToAddress = replyToAddress,
                Recoverable    = true,
                CorrelationId  = CorrelationId,
                Body           = State
            };


            if (SagaId != Guid.Empty)
            {
                transportMessage.Headers[NServiceBus.Headers.SagaId] = SagaId.ToString();
            }


            transportMessage.Headers["NServiceBus.RelatedToTimeoutId"] = Id;

            return(transportMessage);
        }
 public long CalculateSize()
 {
     unsafe
     {
         return((2 * PartitionKey.Length) +
                (2 * RowKey.Length) +
                sizeof(DateTimeOffset) + // Timestamp
                8 + (2 * nameof(Destination).Length) + Destination.Length +
                8 + (2 * nameof(SagaId).Length) + SagaId.ToString().Length +
                8 + (2 * nameof(StateAddress).Length) + StateAddress.Length +
                8 + (2 * nameof(Time).Length) + sizeof(DateTime) + // Time property
                8 + (2 * nameof(OwningTimeoutManager).Length) + OwningTimeoutManager.Length +
                8 + (2 * nameof(Headers).Length) + Headers.Length);
     }
 }
예제 #3
0
        /// <summary>
        /// Transforms the timeout to a <see cref="TransportMessage"/>.
        /// </summary>
        /// <returns>Returns a <see cref="TransportMessage"/>.</returns>
        public TransportMessage ToTransportMessage()
        {
            var transportMessage = new TransportMessage(Id, Headers)
            {
                Recoverable = true,
                Body        = State
            };


            if (SagaId != Guid.Empty)
            {
                transportMessage.Headers[NServiceBus.Headers.SagaId] = SagaId.ToString();
            }

            transportMessage.Headers[NServiceBus.Headers.TimeSent]     = DateTimeExtensions.ToWireFormattedString(DateTime.UtcNow);
            transportMessage.Headers["NServiceBus.RelatedToTimeoutId"] = Id;

            return(transportMessage);
        }
예제 #4
0
        /// <summary>
        /// Transforms the timeout to a <see cref="TransportMessage"/>.
        /// </summary>
        /// <returns>Returns a <see cref="TransportMessage"/>.</returns>
        public TransportMessage ToTransportMessage()
        {
            var transportMessage = new TransportMessage(Id, Headers)
            {
                Recoverable = true,
                Body        = State
            };


            if (SagaId != Guid.Empty)
            {
                transportMessage.Headers[NServiceBus.Headers.SagaId] = SagaId.ToString();
            }


            transportMessage.Headers["NServiceBus.RelatedToTimeoutId"] = Id;

            return(transportMessage);
        }