in src/main/csharp/Protocol/StompWireFormat.cs [525:586]
protected virtual void WriteConsumerInfo(ConsumerInfo command, BinaryWriter dataOut)
{
StompFrame frame = new StompFrame("SUBSCRIBE", encodeHeaders);
if(command.ResponseRequired)
{
frame.SetProperty("receipt", command.CommandId);
}
frame.SetProperty("destination", Destination.ConvertToStompString(command.Destination));
frame.SetProperty("id", command.ConsumerId.ToString());
frame.SetProperty("durable-subscriber-name", command.SubscriptionName);
frame.SetProperty("selector", command.Selector);
frame.SetProperty("ack", StompHelper.ToStomp(command.AckMode));
if(command.NoLocal)
{
frame.SetProperty("no-local", command.NoLocal.ToString());
}
// ActiveMQ extensions to STOMP
if(command.Transformation != null)
{
frame.SetProperty("transformation", command.Transformation);
}
else
{
frame.SetProperty("transformation", "jms-xml");
}
frame.SetProperty("activemq.dispatchAsync", command.DispatchAsync);
if(command.Exclusive)
{
frame.SetProperty("activemq.exclusive", command.Exclusive);
}
if(command.SubscriptionName != null)
{
frame.SetProperty("activemq.subscriptionName", command.SubscriptionName);
// For an older 4.0 broker we need to set this header so they get the
// subscription as well..
frame.SetProperty("activemq.subcriptionName", command.SubscriptionName);
}
frame.SetProperty("activemq.maximumPendingMessageLimit", command.MaximumPendingMessageLimit);
frame.SetProperty("activemq.prefetchSize", command.PrefetchSize);
frame.SetProperty("activemq.priority", command.Priority);
if(command.Retroactive)
{
frame.SetProperty("activemq.retroactive", command.Retroactive);
}
if(Tracer.IsDebugEnabled)
{
Tracer.Debug("StompWireFormat - Writing " + frame.ToString());
}
frame.ToStream(dataOut);
}