public class org.apache.activemq.broker.region.DurableTopicSubscription extends org.apache.activemq.broker.region.PrefetchSubscription implements org.apache.activemq.usage.UsageListener
{
private static final org.slf4j.Logger LOG;
private final java.util.concurrent.ConcurrentMap redeliveredMessages;
private final java.util.concurrent.ConcurrentMap durableDestinations;
private final org.apache.activemq.util.SubscriptionKey subscriptionKey;
private boolean keepDurableSubsActive;
private boolean enableMessageExpirationOnActiveDurableSubs;
private final java.util.concurrent.atomic.AtomicBoolean active;
private final java.util.concurrent.atomic.AtomicLong offlineTimestamp;
private final java.util.HashSet ackedAndPrepared;
public void <init>(org.apache.activemq.broker.Broker, org.apache.activemq.usage.SystemUsage, org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.ConsumerInfo, boolean) throws javax.jms.JMSException
{
org.apache.activemq.util.SubscriptionKey v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
java.util.HashSet v;
org.apache.activemq.broker.Broker v;
org.apache.activemq.broker.ConnectionContext v;
int v, v;
org.apache.activemq.usage.SystemUsage v;
java.lang.String v, v, v, v;
org.apache.activemq.command.ConsumerInfo v;
boolean v, v;
org.apache.activemq.broker.BrokerService v;
java.util.concurrent.ConcurrentHashMap v, v;
java.util.concurrent.atomic.AtomicLong v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.Broker;
v := @parameter: org.apache.activemq.usage.SystemUsage;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.ConsumerInfo;
v := @parameter: boolean;
specialinvoke v.<org.apache.activemq.broker.region.PrefetchSubscription: void <init>(org.apache.activemq.broker.Broker,org.apache.activemq.usage.SystemUsage,org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.ConsumerInfo)>(v, v, v, v);
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap redeliveredMessages> = v;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>()>();
v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap durableDestinations> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(-1L);
v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicLong offlineTimestamp> = v;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.HashSet ackedAndPrepared> = v;
v = new org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: java.lang.String getClientId()>();
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: java.lang.String getSubscriptionName()>();
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: int getPrefetchSize()>();
specialinvoke v.<org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor: void <init>(org.apache.activemq.broker.Broker,java.lang.String,java.lang.String,int,org.apache.activemq.broker.region.DurableTopicSubscription)>(v, v, v, v, v);
v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending> = v;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void setSystemUsage(org.apache.activemq.usage.SystemUsage)>(v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: int getCursorMemoryHighWaterMark()>();
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void setMemoryUsageHighWaterMark(int)>(v);
v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean keepDurableSubsActive> = v;
v = interfaceinvoke v.<org.apache.activemq.broker.Broker: org.apache.activemq.broker.BrokerService getBrokerService()>();
v = virtualinvoke v.<org.apache.activemq.broker.BrokerService: boolean isEnableMessageExpirationOnActiveDurableSubs()>();
v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean enableMessageExpirationOnActiveDurableSubs> = v;
v = new org.apache.activemq.util.SubscriptionKey;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: java.lang.String getClientId()>();
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: java.lang.String getSubscriptionName()>();
specialinvoke v.<org.apache.activemq.util.SubscriptionKey: void <init>(java.lang.String,java.lang.String)>(v, v);
v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.util.SubscriptionKey subscriptionKey> = v;
return;
}
public final boolean isActive()
{
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
return v;
}
public final long getOfflineTimestamp()
{
java.util.concurrent.atomic.AtomicLong v;
long v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicLong offlineTimestamp>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
return v;
}
public void setOfflineTimestamp(long)
{
java.util.concurrent.atomic.AtomicLong v;
long v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: long;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicLong offlineTimestamp>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: void set(long)>(v);
return;
}
public boolean isFull()
{
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
boolean v, v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = specialinvoke v.<org.apache.activemq.broker.region.PrefetchSubscription: boolean isFull()>();
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void gc()
{
org.apache.activemq.broker.region.DurableTopicSubscription v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
return;
}
public void unmatched(org.apache.activemq.broker.region.MessageReference) throws java.io.IOException
{
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.command.Message$MessageDestination v;
org.apache.activemq.command.MessageAck v;
org.apache.activemq.command.MessageId v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = new org.apache.activemq.command.MessageAck;
specialinvoke v.<org.apache.activemq.command.MessageAck: void <init>()>();
virtualinvoke v.<org.apache.activemq.command.MessageAck: void setAckType(byte)>(5);
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
virtualinvoke v.<org.apache.activemq.command.MessageAck: void setMessageID(org.apache.activemq.command.MessageId)>(v);
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message$MessageDestination getRegionDestination()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.ConnectionContext getContext()>();
interfaceinvoke v.<org.apache.activemq.broker.region.Destination: void acknowledge(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.Subscription,org.apache.activemq.command.MessageAck,org.apache.activemq.broker.region.MessageReference)>(v, v, v, v);
return;
}
protected void setPendingBatchSize(org.apache.activemq.broker.region.cursors.PendingMessageCursor, int)
{
int v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.cursors.PendingMessageCursor;
v := @parameter: int;
return;
}
public void add(org.apache.activemq.broker.ConnectionContext, org.apache.activemq.broker.region.Destination) throws java.lang.Exception
{
org.apache.activemq.util.SubscriptionKey v, v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
java.util.concurrent.ConcurrentMap v, v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.management.CountStatisticImpl v, v;
int v, v;
java.lang.String v, v, v;
boolean v, v, v, v;
org.apache.activemq.store.MessageStore v, v;
java.io.IOException v;
javax.jms.JMSException v;
org.apache.activemq.command.ActiveMQDestination v, v;
org.apache.activemq.broker.region.SubscriptionStatistics v, v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
java.util.concurrent.CopyOnWriteArrayList v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.broker.region.Destination;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.CopyOnWriteArrayList destinations>;
v = virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.PrefetchSubscription: void add(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.Destination)>(v, v);
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap durableDestinations>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: org.apache.activemq.command.ActiveMQDestination getActiveMQDestination()>();
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: boolean containsKey(java.lang.Object)>(v);
if v == 0 goto label;
return;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap durableDestinations>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: org.apache.activemq.command.ActiveMQDestination getActiveMQDestination()>();
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean keepDurableSubsActive>;
if v == 0 goto label;
label:
virtualinvoke v.<org.apache.activemq.broker.region.Topic: void activate(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.DurableTopicSubscription)>(v, v);
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getEnqueues()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: int size()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void add(long)>(v);
goto label;
label:
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: org.apache.activemq.store.MessageStore getMessageStore()>();
if v == null goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: org.apache.activemq.store.MessageStore getMessageStore()>();
label:
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getEnqueues()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.util.SubscriptionKey subscriptionKey>;
v = virtualinvoke v.<org.apache.activemq.util.SubscriptionKey: java.lang.String getClientId()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.util.SubscriptionKey subscriptionKey>;
v = virtualinvoke v.<org.apache.activemq.util.SubscriptionKey: java.lang.String getSubscriptionName()>();
v = interfaceinvoke v.<org.apache.activemq.store.TopicMessageStore: int getMessageCount(java.lang.String,java.lang.String)>(v, v);
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void add(long)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new javax.jms.JMSException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.io.IOException)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to retrieve enqueueCount from store \u0001");
specialinvoke v.<javax.jms.JMSException: void <init>(java.lang.String)>(v);
virtualinvoke v.<javax.jms.JMSException: void setLinkedException(java.lang.Exception)>(v);
throw v;
label:
virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: void dispatchPending()>();
return;
catch java.io.IOException from label to label with label;
}
public boolean isEmpty(org.apache.activemq.broker.region.Topic)
{
org.apache.activemq.broker.region.Topic v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
boolean v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.Topic;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean isEmpty(org.apache.activemq.broker.region.Destination)>(v);
return v;
}
public void activate(org.apache.activemq.usage.SystemUsage, org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.ConsumerInfo, org.apache.activemq.broker.region.RegionBroker) throws java.lang.Exception
{
org.apache.activemq.broker.region.policy.PolicyMap v, v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.usage.MemoryUsage v;
org.apache.activemq.usage.SystemUsage v, v, v;
boolean v, v, v, v, v, v, v, v;
java.util.Collection v, v;
org.apache.activemq.command.ActiveMQDestination v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v, v, v, v, v;
org.apache.activemq.broker.region.Destination v, v;
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v, v;
java.util.concurrent.ConcurrentMap v, v;
org.apache.activemq.broker.Broker v;
int v, v, v;
org.apache.activemq.command.ConsumerInfo v, v;
org.slf4j.Logger v;
java.util.Iterator v, v;
java.util.concurrent.atomic.AtomicLong v;
org.apache.activemq.broker.region.policy.PolicyEntry v;
java.lang.Object v;
org.apache.activemq.broker.region.RegionBroker v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.usage.SystemUsage;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.ConsumerInfo;
v := @parameter: org.apache.activemq.broker.region.RegionBroker;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.ConnectionContext context> = v;
v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.command.ConsumerInfo info> = v;
v = <org.apache.activemq.broker.region.DurableTopicSubscription: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Activating {}", v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean keepDurableSubsActive>;
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap durableDestinations>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: void add(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.Destination)>(v, v);
virtualinvoke v.<org.apache.activemq.broker.region.Topic: void activate(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.DurableTopicSubscription)>(v, v);
goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ActiveMQDestination getDestination()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.RegionBroker: org.apache.activemq.broker.region.policy.PolicyMap getDestinationPolicy()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.RegionBroker: org.apache.activemq.broker.region.policy.PolicyMap getDestinationPolicy()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.policy.PolicyMap: org.apache.activemq.broker.region.policy.PolicyEntry getEntryFor(org.apache.activemq.command.ActiveMQDestination)>(v);
if v == null goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.Broker broker>;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.usage.SystemUsage usageManager>;
virtualinvoke v.<org.apache.activemq.broker.region.policy.PolicyEntry: void configure(org.apache.activemq.broker.Broker,org.apache.activemq.usage.SystemUsage,org.apache.activemq.broker.region.DurableTopicSubscription)>(v, v, v);
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.lang.Object pendingLock>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor: boolean isStarted()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean keepDurableSubsActive>;
if v != 0 goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void setSystemUsage(org.apache.activemq.usage.SystemUsage)>(v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: int getCursorMemoryHighWaterMark()>();
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void setMemoryUsageHighWaterMark(int)>(v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: int getMaxAuditDepth()>();
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void setMaxAuditDepth(int)>(v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: int getMaxProducersToAudit()>();
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void setMaxProducersToAudit(int)>(v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void start()>();
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap durableDestinations>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.Topic: boolean isAlwaysRetroactive()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: boolean isRetroactive()>();
if v == 0 goto label;
label:
virtualinvoke v.<org.apache.activemq.broker.region.Topic: void recoverRetroactiveMessages(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.Subscription)>(v, v);
goto label;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicLong offlineTimestamp>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: void set(long)>(-1L);
virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: void dispatchPending()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.usage.SystemUsage usageManager>;
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.MemoryUsage getMemoryUsage()>();
virtualinvoke v.<org.apache.activemq.usage.MemoryUsage: void addUsageListener(org.apache.activemq.usage.UsageListener)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void deactivate(boolean, long) throws java.lang.Exception
{
java.lang.Integer v, v;
org.apache.activemq.broker.ConnectionContext v;
byte v, v, v, v;
org.apache.activemq.usage.SystemUsage v;
org.apache.activemq.broker.region.Destination v;
java.lang.Throwable v, v, v;
long v, v, v;
java.util.ArrayList v, v, v;
java.util.concurrent.atomic.AtomicLong v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
org.apache.activemq.management.CountStatisticImpl v;
java.util.concurrent.atomic.AtomicInteger v;
org.apache.activemq.usage.MemoryUsage v;
boolean v, v, v, v, v, v, v, v;
org.apache.activemq.command.MessageId v, v, v, v, v;
java.util.Collection v;
java.util.List v, v, v, v, v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.broker.region.DestinationStatistics v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.ConcurrentMap v, v, v, v;
int v, v, v;
java.lang.Boolean v;
org.apache.activemq.broker.region.MessageReference v;
org.slf4j.Logger v;
java.util.Iterator v, v, v;
org.apache.activemq.management.SizeStatisticImpl v;
org.apache.activemq.broker.region.SubscriptionStatistics v;
java.lang.Object v, v, v, v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: boolean;
v := @parameter: long;
v = <org.apache.activemq.broker.region.DurableTopicSubscription: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Deactivating keepActive={}, {}", v, v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean keepDurableSubsActive> = v;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicLong offlineTimestamp>;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: void set(long)>(v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.usage.SystemUsage usageManager>;
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.MemoryUsage getMemoryUsage()>();
virtualinvoke v.<org.apache.activemq.usage.MemoryUsage: void removeUsageListener(org.apache.activemq.usage.UsageListener)>(v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = null;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.lang.Object pendingLock>;
entermonitor v;
label:
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void stop()>();
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.lang.Object dispatchLock>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap durableDestinations>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v != 0 goto label;
virtualinvoke v.<java.util.ArrayList: boolean add(java.lang.Object)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.broker.region.Topic: org.apache.activemq.broker.region.DestinationStatistics getDestinationStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DestinationStatistics: org.apache.activemq.management.CountStatisticImpl getInflight()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.List dispatched>;
v = interfaceinvoke v.<java.util.List: int size()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void subtract(long)>(v);
goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.List dispatched>;
staticinvoke <java.util.Collections: void reverse(java.util.List)>(v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.List dispatched>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v cmp -2L;
if v == 0 goto label;
v = v cmp 0L;
if v == 0 goto label;
v = v cmp 0L;
if v <= 0 goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: long getBrokerSequenceId()>();
v = v cmp v;
if v > 0 goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap redeliveredMessages>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap redeliveredMessages>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = v + 1;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap redeliveredMessages>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(1);
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean isTransient()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void addMessageFirst(org.apache.activemq.broker.region.MessageReference)>(v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void rollback(org.apache.activemq.command.MessageId)>(v);
label:
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
goto label;
label:
v = virtualinvoke v.<java.util.ArrayList: boolean isEmpty()>();
if v != 0 goto label;
v = new java.util.ArrayList;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.List dispatched>;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.List dispatched>;
interfaceinvoke v.<java.util.List: void clear()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.SizeStatisticImpl getInflightMessageSize()>();
virtualinvoke v.<org.apache.activemq.management.SizeStatisticImpl: void reset()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean isTransient()>();
if v == 0 goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void reset()>();
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean hasNext()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: org.apache.activemq.broker.region.MessageReference next()>();
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void remove()>();
goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void release()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void release()>();
throw v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = virtualinvoke v.<java.util.ArrayList: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
virtualinvoke v.<org.apache.activemq.broker.region.Topic: void deactivate(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.DurableTopicSubscription,java.util.List)>(v, v, v);
goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
protected org.apache.activemq.command.MessageDispatch createMessageDispatch(org.apache.activemq.broker.region.MessageReference, org.apache.activemq.command.Message)
{
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.command.MessageId v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
java.util.concurrent.ConcurrentMap v;
org.apache.activemq.command.Message v;
org.apache.activemq.command.MessageDispatch v;
int v;
java.lang.Object v;
org.apache.activemq.broker.region.QueueMessageReference v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v := @parameter: org.apache.activemq.command.Message;
v = specialinvoke v.<org.apache.activemq.broker.region.PrefetchSubscription: org.apache.activemq.command.MessageDispatch createMessageDispatch(org.apache.activemq.broker.region.MessageReference,org.apache.activemq.command.Message)>(v, v);
v = <org.apache.activemq.broker.region.QueueMessageReference: org.apache.activemq.broker.region.QueueMessageReference NULL_MESSAGE>;
if v == v goto label;
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int incrementReferenceCount()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap redeliveredMessages>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
virtualinvoke v.<org.apache.activemq.command.MessageDispatch: void setRedeliveryCounter(int)>(v);
label:
return v;
}
public void add(org.apache.activemq.broker.region.MessageReference) throws java.lang.Exception
{
org.apache.activemq.broker.region.MessageReference v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
boolean v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean keepDurableSubsActive>;
if v != 0 goto label;
return;
label:
specialinvoke v.<org.apache.activemq.broker.region.PrefetchSubscription: void add(org.apache.activemq.broker.region.MessageReference)>(v);
return;
}
public void dispatchPending() throws java.io.IOException
{
org.apache.activemq.broker.region.DurableTopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean isActive()>();
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.PrefetchSubscription: void dispatchPending()>();
label:
return;
}
public void removePending(org.apache.activemq.broker.region.MessageReference) throws java.io.IOException
{
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void remove(org.apache.activemq.broker.region.MessageReference)>(v);
return;
}
protected void doAddRecoveredMessage(org.apache.activemq.broker.region.MessageReference) throws java.lang.Exception
{
java.lang.Throwable v;
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void addRecoveredMessage(org.apache.activemq.broker.region.MessageReference)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public int getPendingQueueSize()
{
int v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
boolean v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean keepDurableSubsActive>;
if v == 0 goto label;
label:
v = specialinvoke v.<org.apache.activemq.broker.region.PrefetchSubscription: int getPendingQueueSize()>();
return v;
label:
return 0;
}
public void setSelector(java.lang.String) throws javax.jms.InvalidSelectorException
{
java.lang.UnsupportedOperationException v;
java.util.concurrent.atomic.AtomicBoolean v;
java.lang.String v, v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: java.lang.String;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicBoolean active>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>("You cannot dynamically change the selector for durable topic subscriptions");
throw v;
label:
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.lang.String getSelector()>();
specialinvoke v.<org.apache.activemq.broker.region.PrefetchSubscription: void setSelector(java.lang.String)>(v);
return;
}
protected boolean canDispatch(org.apache.activemq.broker.region.MessageReference)
{
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
return 1;
}
protected boolean trackedInPendingTransaction(org.apache.activemq.broker.region.MessageReference)
{
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.command.MessageId v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
java.util.HashSet v, v;
boolean v, v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.HashSet ackedAndPrepared>;
v = virtualinvoke v.<java.util.HashSet: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.HashSet ackedAndPrepared>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<java.util.HashSet: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected void acknowledge(org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.MessageAck, org.apache.activemq.broker.region.MessageReference) throws java.io.IOException
{
org.apache.activemq.command.Message$MessageDestination v, v, v;
long v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
java.util.concurrent.ConcurrentMap v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.management.CountStatisticImpl v, v;
int v;
org.apache.activemq.command.TransactionId v;
org.apache.activemq.command.ConsumerInfo v;
boolean v, v, v;
org.apache.activemq.broker.region.DurableTopicSubscription$1 v;
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.command.MessageAck v;
org.apache.activemq.command.MessageId v;
org.apache.activemq.broker.region.DestinationStatistics v, v;
org.apache.activemq.transaction.Transaction v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.MessageAck;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: void setTimeOfLastMessageAck(long)>(v);
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message$MessageDestination getRegionDestination()>();
interfaceinvoke v.<org.apache.activemq.broker.region.Destination: void acknowledge(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.Subscription,org.apache.activemq.command.MessageAck,org.apache.activemq.broker.region.MessageReference)>(v, v, v, v);
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap redeliveredMessages>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
interfaceinvoke v.<java.util.concurrent.ConcurrentMap: java.lang.Object remove(java.lang.Object)>(v);
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: boolean isInTransaction()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.transaction.Transaction getTransaction()>();
v = virtualinvoke v.<org.apache.activemq.transaction.Transaction: org.apache.activemq.command.TransactionId getTransactionId()>();
v = virtualinvoke v.<org.apache.activemq.command.TransactionId: boolean isXATransaction()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.transaction.Transaction getTransaction()>();
v = new org.apache.activemq.broker.region.DurableTopicSubscription$1;
specialinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription$1: void <init>(org.apache.activemq.broker.region.DurableTopicSubscription,org.apache.activemq.broker.region.MessageReference)>(v, v);
virtualinvoke v.<org.apache.activemq.transaction.Transaction: void addSynchronization(org.apache.activemq.transaction.Synchronization)>(v);
label:
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message$MessageDestination getRegionDestination()>();
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: org.apache.activemq.broker.region.DestinationStatistics getDestinationStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DestinationStatistics: org.apache.activemq.management.CountStatisticImpl getDequeues()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void increment()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: boolean isNetworkSubscription()>();
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message$MessageDestination getRegionDestination()>();
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: org.apache.activemq.broker.region.DestinationStatistics getDestinationStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DestinationStatistics: org.apache.activemq.management.CountStatisticImpl getForwards()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: int getMessageCount()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void add(long)>(v);
label:
return;
}
public synchronized java.lang.String toString()
{
org.apache.activemq.util.SubscriptionKey v;
long v, v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
org.apache.activemq.command.ConsumerId v;
java.util.concurrent.ConcurrentMap v;
org.apache.activemq.management.CountStatisticImpl v, v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v, v;
java.lang.String v;
org.apache.activemq.command.ConsumerInfo v;
boolean v;
java.util.List v;
org.apache.activemq.broker.region.SubscriptionStatistics v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.util.SubscriptionKey getSubscriptionKey()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean isActive()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.ConcurrentMap durableDestinations>;
v = interfaceinvoke v.<java.util.concurrent.ConcurrentMap: int size()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getEnqueues()>();
v = virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: long getCount()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: int getPendingQueueSize()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getDispatched()>();
v = virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: long getCount()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.List dispatched>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.concurrent.atomic.AtomicInteger getPrefetchExtension()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.util.SubscriptionKey,org.apache.activemq.command.ConsumerId,boolean,int,long,int,long,int,java.util.concurrent.atomic.AtomicInteger)>(v, v, v, v, v, v, v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("DurableTopicSubscription-\u, id=\u, active=\u, destinations=\u, total=\u, pending=\u, dispatched=\u, inflight=\u, prefetchExtension=\u0001");
return v;
}
public org.apache.activemq.util.SubscriptionKey getSubscriptionKey()
{
org.apache.activemq.broker.region.DurableTopicSubscription v;
org.apache.activemq.util.SubscriptionKey v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.util.SubscriptionKey subscriptionKey>;
return v;
}
public void destroy()
{
java.lang.Throwable v, v, v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
java.util.HashSet v;
boolean v, v;
org.apache.activemq.broker.region.MessageReference v;
java.util.Iterator v;
java.util.List v, v;
java.lang.Object v, v, v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v, v, v, v, v, v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.lang.Object pendingLock>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void reset()>();
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean hasNext()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: org.apache.activemq.broker.region.MessageReference next()>();
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void release()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void clear()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void release()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor pending>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void clear()>();
throw v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.lang.Object dispatchLock>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.List dispatched>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
goto label;
label:
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.List dispatched>;
interfaceinvoke v.<java.util.List: void clear()>();
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: java.util.HashSet ackedAndPrepared>;
virtualinvoke v.<java.util.HashSet: void clear()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: void setSlowConsumer(boolean)>(0);
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void onUsageChanged(org.apache.activemq.usage.Usage, int, int)
{
org.slf4j.Logger v;
int v, v;
java.io.IOException v;
org.apache.activemq.usage.Usage v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.usage.Usage;
v := @parameter: int;
v := @parameter: int;
if v <= v goto label;
if v < 90 goto label;
label:
virtualinvoke v.<org.apache.activemq.broker.region.DurableTopicSubscription: void dispatchPending()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.DurableTopicSubscription: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("problem calling dispatchMatched", v);
label:
return;
catch java.io.IOException from label to label with label;
}
protected boolean isDropped(org.apache.activemq.broker.region.MessageReference)
{
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.broker.region.DurableTopicSubscription v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
return 0;
}
public boolean isKeepDurableSubsActive()
{
org.apache.activemq.broker.region.DurableTopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean keepDurableSubsActive>;
return v;
}
public boolean isEnableMessageExpirationOnActiveDurableSubs()
{
org.apache.activemq.broker.region.DurableTopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.DurableTopicSubscription;
v = v.<org.apache.activemq.broker.region.DurableTopicSubscription: boolean enableMessageExpirationOnActiveDurableSubs>;
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/broker/region/DurableTopicSubscription;");
<org.apache.activemq.broker.region.DurableTopicSubscription: org.slf4j.Logger LOG> = v;
return;
}
}