diff --git a/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java b/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java index 925cf9d9a8..3236a692ef 100755 --- a/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java +++ b/activemq-core/src/main/java/org/apache/activemq/command/ConsumerInfo.java @@ -16,6 +16,9 @@ */ package org.apache.activemq.command; +import java.util.ArrayList; +import java.util.List; + import org.apache.activemq.filter.BooleanExpression; import org.apache.activemq.state.CommandVisitor; @@ -54,6 +57,7 @@ public class ConsumerInfo extends BaseCommand { protected BooleanExpression additionalPredicate; protected transient boolean networkSubscription; // this subscription + protected transient List networkConsumerIds; // the original consumerId // originated from a // network connection @@ -90,6 +94,13 @@ public class ConsumerInfo extends BaseCommand { info.retroactive = retroactive; info.priority = priority; info.brokerPath = brokerPath; + info.networkSubscription = networkSubscription; + if (networkConsumerIds != null) { + if (info.networkConsumerIds==null){ + info.networkConsumerIds=new ArrayList(); + } + info.networkConsumerIds.addAll(networkConsumerIds); + } } public boolean isDurable() { @@ -393,4 +404,32 @@ public class ConsumerInfo extends BaseCommand { this.noRangeAcks = noRangeAcks; } + public synchronized void addNetworkConsumerId(ConsumerId networkConsumerId) { + if (networkConsumerIds == null) { + networkConsumerIds = new ArrayList(); + } + networkConsumerIds.add(networkConsumerId); + } + + public synchronized void removeNetworkConsumerId(ConsumerId networkConsumerId) { + if (networkConsumerIds != null) { + networkConsumerIds.remove(networkConsumerId); + if (networkConsumerIds.isEmpty()) { + networkConsumerIds=null; + } + } + } + + public synchronized boolean isNetworkConsumersEmpty() { + return networkConsumerIds == null || networkConsumerIds.isEmpty(); + } + + public synchronized List getNetworkConsumerIds(){ + List result = new ArrayList(); + if (networkConsumerIds != null) { + result.addAll(networkConsumerIds); + } + return result; + } + }