protected void Send(IDestination destination, IMessage message, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive, bool specifiedTimeToLive)
{
if (null == destination)
{
// See if this producer was created without a destination.
if (null == info.Destination)
{
throw new NotSupportedException();
}
// The producer was created with a destination, but an invalid destination
// was specified.
throw new Apache.NMS.InvalidDestinationException();
}
ActiveMQMessage activeMessage = (ActiveMQMessage)message;
if (!disableMessageID)
{
MessageId id = new MessageId();
id.ProducerId = info.ProducerId;
id.ProducerSequenceId = Interlocked.Increment(ref messageCounter);
activeMessage.MessageId = id;
}
activeMessage.ProducerId = info.ProducerId;
activeMessage.FromDestination = destination;
activeMessage.NMSDeliveryMode = deliveryMode;
activeMessage.NMSPriority = priority;
if (!disableMessageTimestamp)
{
activeMessage.NMSTimestamp = DateTime.UtcNow;
}
if (specifiedTimeToLive)
{
activeMessage.NMSTimeToLive = timeToLive;
}
lock (closedLock)
{
if (closed)
{
throw new ConnectionClosedException();
}
if (session.Transacted)
{
session.DoStartTransaction();
activeMessage.TransactionId = session.TransactionContext.TransactionId;
}
session.DoSend(activeMessage, this.RequestTimeout);
}
}