You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/05/25 15:54:53 UTC
svn commit: r1745513 - in /qpid/java/trunk:
broker-core/src/main/java/org/apache/qpid/server/consumer/
broker-core/src/test/java/org/apache/qpid/server/consumer/
broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/
bro...
Author: rgodfrey
Date: Wed May 25 15:54:53 2016
New Revision: 1745513
URL: http://svn.apache.org/viewvc?rev=1745513&view=rev
Log:
QPID-7000 : Use the address of the target of the consumer for route matching in preference to the consumer tag/name
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java
qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java
qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQDestination.java
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/Link.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/url/BindingURL.java
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java Wed May 25 15:54:53 2016
@@ -37,6 +37,8 @@ public interface ConsumerTarget
boolean hasPendingWork();
+ String getTargetAddress();
+
enum State
{
ACTIVE, SUSPENDED, CLOSED
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java Wed May 25 15:54:53 2016
@@ -176,6 +176,12 @@ public class MockConsumer implements Con
}
@Override
+ public String getTargetAddress()
+ {
+ return getName();
+ }
+
+ @Override
public void consumerAdded(final ConsumerImpl sub)
{
}
Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java Wed May 25 15:54:53 2016
@@ -71,6 +71,7 @@ public class ConsumerTarget_0_10 extends
private final AtomicBoolean _deleted = new AtomicBoolean(false);
private final String _name;
+ private final String _targetAddress;
private FlowCreditManager_0_10 _creditManager;
@@ -84,7 +85,6 @@ public class ConsumerTarget_0_10 extends
private final AtomicLong _unacknowledgedCount = new AtomicLong(0);
private final AtomicLong _unacknowledgedBytes = new AtomicLong(0);
- private final Map<String, Object> _arguments;
private int _deferredMessageCredit;
private long _deferredSizeCredit;
private final List<ConsumerImpl> _consumers = new CopyOnWriteArrayList<>();
@@ -118,9 +118,15 @@ public class ConsumerTarget_0_10 extends
_creditManager = creditManager;
_flowMode = flowMode;
_creditManager.addStateListener(this);
- _arguments = arguments == null ? Collections.<String, Object> emptyMap() :
- Collections.<String, Object> unmodifiableMap(arguments);
_name = name;
+ if(arguments != null && arguments.containsKey("local-address"))
+ {
+ _targetAddress = String.valueOf(arguments.get("local-address"));
+ }
+ else
+ {
+ _targetAddress = name;
+ }
}
@Override
@@ -626,11 +632,6 @@ public class ConsumerTarget_0_10 extends
return false;
}
- public Map<String, Object> getArguments()
- {
- return _arguments;
- }
-
public void queueEmpty()
{
}
@@ -639,6 +640,11 @@ public class ConsumerTarget_0_10 extends
{
}
+ @Override
+ public String getTargetAddress()
+ {
+ return _targetAddress;
+ }
@Override
public void consumerAdded(final ConsumerImpl sub)
Modified: qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java Wed May 25 15:54:53 2016
@@ -57,6 +57,7 @@ public abstract class ConsumerTarget_0_8
private final AtomicLong _unacknowledgedBytes = new AtomicLong(0);
private final List<ConsumerImpl> _consumers = new CopyOnWriteArrayList<>();
private final AtomicBoolean _needToClose = new AtomicBoolean();
+ private final String _targetAddress;
public static ConsumerTarget_0_8 createBrowserTarget(AMQChannel channel,
@@ -327,10 +328,20 @@ public abstract class ConsumerTarget_0_8
{
_autoClose = false;
}
+ if(arguments.containsKey("local-address"))
+ {
+ _targetAddress = String.valueOf(arguments.get("local-address"));
+ }
+ else
+ {
+ _targetAddress = consumerTag.toString();
+ }
}
else
{
_autoClose = false;
+ _targetAddress = consumerTag.toString();
+
}
}
@@ -350,6 +361,12 @@ public abstract class ConsumerTarget_0_8
_consumers.add( sub );
}
+ @Override
+ public String getTargetAddress()
+ {
+ return _targetAddress;
+ }
+
public AMQSessionModel getSessionModel()
{
return _channel;
Modified: qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java Wed May 25 15:54:53 2016
@@ -33,6 +33,8 @@ import org.apache.qpid.server.protocol.v
import org.apache.qpid.server.protocol.v1_0.type.Binary;
import org.apache.qpid.server.protocol.v1_0.type.DeliveryState;
import org.apache.qpid.server.protocol.v1_0.type.Outcome;
+import org.apache.qpid.server.protocol.v1_0.type.Source;
+import org.apache.qpid.server.protocol.v1_0.type.Target;
import org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger;
import org.apache.qpid.server.protocol.v1_0.type.codec.AMQPDescribedTypeRegistry;
import org.apache.qpid.server.protocol.v1_0.type.messaging.Accepted;
@@ -507,6 +509,14 @@ class ConsumerTarget_1_0 extends Abstrac
}
@Override
+ public String getTargetAddress()
+ {
+ Target target = _link.getEndpoint().getTarget();
+
+ return target instanceof org.apache.qpid.server.protocol.v1_0.type.messaging.Target ? ((org.apache.qpid.server.protocol.v1_0.type.messaging.Target) target).getAddress() : _link.getEndpoint().getName();
+ }
+
+ @Override
public void consumerAdded(final ConsumerImpl sub)
{
_consumer = sub;
Modified: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java (original)
+++ qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java Wed May 25 15:54:53 2016
@@ -22,6 +22,7 @@ package org.apache.qpid.server.managemen
import java.nio.charset.Charset;
import java.security.AccessControlException;
+import java.security.AccessController;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -35,8 +36,11 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import javax.security.auth.Subject;
+
+import org.apache.qpid.server.connection.SessionPrincipal;
import org.apache.qpid.server.consumer.ConsumerImpl;
import org.apache.qpid.server.consumer.ConsumerTarget;
import org.apache.qpid.server.filter.FilterManager;
@@ -55,7 +59,6 @@ import org.apache.qpid.server.model.Mana
import org.apache.qpid.server.model.NamedAddressSpace;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.plugin.MessageConverter;
-import org.apache.qpid.server.plugin.SystemNodeCreator;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.protocol.MessageConverterRegistry;
import org.apache.qpid.server.store.MessageDurability;
@@ -108,7 +111,7 @@ class ManagementNode implements MessageS
private final Action<ManagementNode> _onDelete;
private final ConfiguredObject<?> _managedObject;
- private Map<String, ManagementNodeConsumer> _consumers = new ConcurrentHashMap<String, ManagementNodeConsumer>();
+ private List<ManagementNodeConsumer> _consumers = new CopyOnWriteArrayList<>();
private Map<String,ManagedEntityType> _entityTypes = Collections.synchronizedMap(new LinkedHashMap<String, ManagedEntityType>());
@@ -356,22 +359,42 @@ class ManagementNode implements MessageS
}
- ManagementNodeConsumer consumer = _consumers.get(message.getMessageHeader().getReplyTo());
- response.setInitialRoutingAddress(message.getMessageHeader().getReplyTo());
- if(consumer != null)
- {
- // TODO - check same owner
- consumer.send(response);
- }
- else
+ sendResponse(message, response);
+
+ }
+
+ private void sendResponse(final InternalMessage message, final InternalMessage response)
+ {
+ String replyTo = message.getMessageHeader().getReplyTo();
+ response.setInitialRoutingAddress(replyTo);
+
+
+ getResponseDestination(replyTo).send(response,
+ replyTo, InstanceProperties.EMPTY,
+ new AutoCommitTransaction(_addressSpace.getMessageStore()),
+ null);
+
+ }
+
+ private MessageDestination getResponseDestination(String replyTo)
+ {
+ ManagementNodeConsumer consumer = null;
+ Subject currentSubject = Subject.getSubject(AccessController.getContext());
+ Set<SessionPrincipal> sessionPrincipals = currentSubject.getPrincipals(SessionPrincipal.class);
+ if (!sessionPrincipals.isEmpty())
{
- _addressSpace.getDefaultDestination().send(response,
- message.getMessageHeader().getReplyTo(), InstanceProperties.EMPTY,
- new AutoCommitTransaction(_addressSpace.getMessageStore()),
- null);
+ AMQSessionModel publishingSession = sessionPrincipals.iterator().next().getSession();
+ for (ManagementNodeConsumer candidate : _consumers)
+ {
+ if (candidate.getTarget().getTargetAddress().equals(replyTo) && candidate.getSessionModel() == publishingSession)
+ {
+ consumer = candidate;
+ break;
+ }
+ }
}
- // TODO - route to a queue
+ return consumer == null ? _addressSpace.getDefaultDestination() : consumer;
}
private InternalMessage performCreateOperation(final InternalMessage message, final String type)
@@ -963,14 +986,27 @@ class ManagementNode implements MessageS
final ManagementNodeConsumer managementNodeConsumer = new ManagementNodeConsumer(consumerName,this, target);
target.consumerAdded(managementNodeConsumer);
- _consumers.put(consumerName, managementNodeConsumer);
+ _consumers.add(managementNodeConsumer);
+ target.addStateListener(new StateChangeListener<ConsumerTarget, ConsumerTarget.State>()
+ {
+ @Override
+ public void stateChanged(final ConsumerTarget object,
+ final ConsumerTarget.State oldState,
+ final ConsumerTarget.State newState)
+ {
+ if(newState == ConsumerTarget.State.CLOSED)
+ {
+ _consumers.remove(managementNodeConsumer);
+ }
+ }
+ });
return managementNodeConsumer;
}
@Override
public synchronized Collection<ManagementNodeConsumer> getConsumers()
{
- return new ArrayList<ManagementNodeConsumer>(_consumers.values());
+ return Collections.unmodifiableCollection(_consumers);
}
@Override
Modified: qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java (original)
+++ qpid/java/trunk/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java Wed May 25 15:54:53 2016
@@ -26,12 +26,19 @@ import java.util.List;
import org.apache.qpid.server.consumer.ConsumerImpl;
import org.apache.qpid.server.consumer.ConsumerTarget;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.MessageDestination;
+import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.message.MessageSource;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.message.internal.InternalMessage;
import org.apache.qpid.server.protocol.AMQSessionModel;
+import org.apache.qpid.server.store.StorableMessageMetaData;
+import org.apache.qpid.server.txn.ServerTransaction;
+import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.StateChangeListener;
-class ManagementNodeConsumer implements ConsumerImpl
+class ManagementNodeConsumer implements ConsumerImpl, MessageDestination
{
private final long _id = ConsumerImpl.CONSUMER_NUMBER_GENERATOR.getAndIncrement();
private final ManagementNode _managementNode;
@@ -158,6 +165,17 @@ class ManagementNodeConsumer implements
}
@Override
+ public <M extends ServerMessage<? extends StorableMessageMetaData>> int send(final M message,
+ final String routingAddress,
+ final InstanceProperties instanceProperties,
+ final ServerTransaction txn,
+ final Action<? super MessageInstance> postEnqueueAction)
+ {
+ send((InternalMessage)message);
+ return 1;
+ }
+
+ @Override
public void flush()
{
Modified: qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQDestination.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQDestination.java (original)
+++ qpid/java/trunk/client/src/main/java/org/apache/qpid/client/AMQDestination.java Wed May 25 15:54:53 2016
@@ -100,6 +100,7 @@ public abstract class AMQDestination imp
private boolean _sendEncrypted;
private String _encryptedRecipients;
private long _deliveryDelay;
+ private String _localAddress;
protected void setExclusive(boolean exclusive)
{
@@ -136,6 +137,11 @@ public abstract class AMQDestination imp
return _deliveryDelay;
}
+ public String getLocalAddress()
+ {
+ return _localAddress;
+ }
+
// ----- Fields required to support new address syntax -------
public enum DestSyntax {
@@ -322,6 +328,7 @@ public abstract class AMQDestination imp
_encryptedRecipients = binding.getOption(BindingURL.OPTION_ENCRYPTED_RECIPIENTS);
String deliveryDelayVal = binding.getOption(BindingURL.OPTION_DELIVERY_DELAY);
_deliveryDelay = deliveryDelayVal == null ? 0L : Long.parseLong(deliveryDelayVal);
+ _localAddress = binding.getOption(BindingURL.OPTION_LOCAL_ADDRESS);
}
protected AMQDestination(String exchangeName, String exchangeClass, String routingKey, String queueName)
@@ -966,6 +973,7 @@ public abstract class AMQDestination imp
_node = _addrHelper.getNode();
_link = _addrHelper.getLink();
_deliveryDelay = _link.getDelay();
+ _localAddress = _link.getLocalAddress();
_sendEncrypted = _addrHelper.getSendEncrypted();
_encryptedRecipients = _addrHelper.getEncryptedRecipients();
}
Modified: qpid/java/trunk/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java (original)
+++ qpid/java/trunk/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java Wed May 25 15:54:53 2016
@@ -193,6 +193,10 @@ public abstract class BasicMessageConsum
{
ft.putAll(rawSelector);
}
+ if(destination.getLocalAddress() != null)
+ {
+ ft.put("local-address", destination.getLocalAddress());
+ }
// We must always send the selector argument even if empty, so that we can tell when a selector is removed from a
// durable topic subscription that the broker arguments don't match any more. This is because it is not otherwise
Modified: qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java (original)
+++ qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java Wed May 25 15:54:53 2016
@@ -250,6 +250,11 @@ public class AddressHelper
{
link.setDelay(delay);
}
+ String localAddress = _linkPropAccess.getString("localAddress");
+ if(localAddress != null)
+ {
+ link.setLocalAddress(localAddress);
+ }
if (((Map) _address.getOptions().get(LINK)).get(CAPACITY) instanceof Map)
{
MapAccessor capacityProps = new MapAccessor((Map) ((Map) _address.getOptions().get(LINK)).get(CAPACITY));
Modified: qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/Link.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/Link.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/Link.java (original)
+++ qpid/java/trunk/client/src/main/java/org/apache/qpid/client/messaging/address/Link.java Wed May 25 15:54:53 2016
@@ -29,16 +29,19 @@ import org.apache.qpid.client.AMQDestina
public class Link
{
+
+
public enum FilterType { SQL92, XQUERY, SUBJECT }
-
+
public enum Reliability { UNRELIABLE, AT_MOST_ONCE, AT_LEAST_ONCE, EXACTLY_ONCE }
-
+
private String name;
private String _filter;
private FilterType _filterType = FilterType.SUBJECT;
private boolean _isNoLocal;
private boolean _isDurable;
private long _delay;
+ private String _localAddress;
private int _consumerCapacity = -1;
private int _producerCapacity = -1;
private Subscription subscription;
@@ -156,6 +159,16 @@ public class Link
_delay = delay;
}
+ public void setLocalAddress(final String localAddress)
+ {
+ _localAddress = localAddress;
+ }
+
+ public String getLocalAddress()
+ {
+ return _localAddress;
+ }
+
public SubscriptionQueue getSubscriptionQueue()
{
return _subscriptionQueue;
Modified: qpid/java/trunk/common/src/main/java/org/apache/qpid/url/BindingURL.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/url/BindingURL.java?rev=1745513&r1=1745512&r2=1745513&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/url/BindingURL.java (original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/url/BindingURL.java Wed May 25 15:54:53 2016
@@ -44,6 +44,7 @@ public interface BindingURL
String OPTION_SEND_ENCRYPTED = "sendencrypted";
String OPTION_ENCRYPTED_RECIPIENTS = "encryptedrecipients";
String OPTION_DELIVERY_DELAY = "deliveryDelay";
+ String OPTION_LOCAL_ADDRESS = "localAddress";
/**
@@ -68,7 +69,8 @@ public interface BindingURL
OPTION_REJECT_BEHAVIOUR,
OPTION_SEND_ENCRYPTED,
OPTION_ENCRYPTED_RECIPIENTS,
- OPTION_DELIVERY_DELAY)));
+ OPTION_DELIVERY_DELAY,
+ OPTION_LOCAL_ADDRESS)));
String getURL();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org