public class org.apache.activemq.broker.region.TopicSubscription extends org.apache.activemq.broker.region.AbstractSubscription
{
private static final org.slf4j.Logger LOG;
private static final java.util.concurrent.atomic.AtomicLong CURSOR_NAME_COUNTER;
protected org.apache.activemq.broker.region.cursors.PendingMessageCursor matched;
protected final org.apache.activemq.usage.SystemUsage usageManager;
boolean singleDestination;
org.apache.activemq.broker.region.Destination destination;
private final org.apache.activemq.thread.Scheduler scheduler;
private int maximumPendingMessages;
private org.apache.activemq.broker.region.policy.MessageEvictionStrategy messageEvictionStrategy;
private final java.util.concurrent.atomic.AtomicInteger discarded;
private final java.lang.Object matchedListMutex;
private int memoryUsageHighWaterMark;
protected int maxProducersToAudit;
protected int maxAuditDepth;
protected boolean enableAudit;
protected org.apache.activemq.ActiveMQMessageAudit audit;
protected boolean active;
protected boolean discarding;
private boolean useTopicSubscriptionInflightStats;
protected final java.lang.Object dispatchLock;
protected final java.util.List dispatched;
public void <init>(org.apache.activemq.broker.Broker, org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.ConsumerInfo, org.apache.activemq.usage.SystemUsage) throws java.lang.Exception
{
long v;
org.apache.activemq.command.ConsumerId v;
java.util.ArrayList v;
org.apache.activemq.broker.Broker v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.broker.region.cursors.FilePendingMessageCursor v;
java.util.concurrent.atomic.AtomicInteger v;
int v;
org.apache.activemq.store.PListStore v;
org.apache.activemq.usage.SystemUsage v;
java.lang.String v, v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.broker.region.cursors.VMPendingMessageCursor v;
org.apache.activemq.command.ConsumerInfo v;
boolean v;
org.apache.activemq.command.ActiveMQDestination v;
java.util.concurrent.atomic.AtomicLong v;
org.apache.activemq.broker.region.policy.OldestMessageEvictionStrategy v;
org.apache.activemq.thread.Scheduler v;
java.lang.Object v, v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.Broker;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.ConsumerInfo;
v := @parameter: org.apache.activemq.usage.SystemUsage;
specialinvoke v.<org.apache.activemq.broker.region.AbstractSubscription: void <init>(org.apache.activemq.broker.Broker,org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.ConsumerInfo)>(v, v, v);
v.<org.apache.activemq.broker.region.TopicSubscription: boolean singleDestination> = 1;
v = (int) -1;
v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages> = v;
v = new org.apache.activemq.broker.region.policy.OldestMessageEvictionStrategy;
specialinvoke v.<org.apache.activemq.broker.region.policy.OldestMessageEvictionStrategy: void <init>()>();
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.policy.MessageEvictionStrategy messageEvictionStrategy> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger discarded> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object matchedListMutex> = v;
v.<org.apache.activemq.broker.region.TopicSubscription: int memoryUsageHighWaterMark> = 95;
v.<org.apache.activemq.broker.region.TopicSubscription: int maxProducersToAudit> = 1024;
v.<org.apache.activemq.broker.region.TopicSubscription: int maxAuditDepth> = 1000;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean enableAudit> = 0;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean active> = 0;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean discarding> = 0;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean useTopicSubscriptionInflightStats> = 1;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object dispatchLock> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<org.apache.activemq.broker.region.TopicSubscription: java.util.List dispatched> = v;
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.usage.SystemUsage usageManager> = v;
v = <org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicLong CURSOR_NAME_COUNTER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndIncrement()>();
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
v = virtualinvoke v.<org.apache.activemq.command.ConsumerId: java.lang.String toString()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long,java.lang.String)>(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[])>("TopicSubscription:\u[\u]");
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ActiveMQDestination getDestination()>();
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: boolean isTemporary()>();
if v != 0 goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.Broker: org.apache.activemq.store.PListStore getTempDataStore()>();
if v != null goto label;
label:
v = new org.apache.activemq.broker.region.cursors.VMPendingMessageCursor;
specialinvoke v.<org.apache.activemq.broker.region.cursors.VMPendingMessageCursor: void <init>(boolean)>(0);
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched> = v;
goto label;
label:
v = new org.apache.activemq.broker.region.cursors.FilePendingMessageCursor;
specialinvoke v.<org.apache.activemq.broker.region.cursors.FilePendingMessageCursor: void <init>(org.apache.activemq.broker.Broker,java.lang.String,boolean)>(v, v, 0);
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched> = v;
label:
v = interfaceinvoke v.<org.apache.activemq.broker.Broker: org.apache.activemq.thread.Scheduler getScheduler()>();
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.thread.Scheduler scheduler> = v;
return;
}
public void init() throws java.lang.Exception
{
org.apache.activemq.ActiveMQMessageAudit v;
int v, v, v;
org.apache.activemq.usage.SystemUsage v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v, v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.usage.SystemUsage usageManager>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void setSystemUsage(org.apache.activemq.usage.SystemUsage)>(v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getCursorMemoryHighWaterMark()>();
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void setMemoryUsageHighWaterMark(int)>(v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void start()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: boolean enableAudit>;
if v == 0 goto label;
v = new org.apache.activemq.ActiveMQMessageAudit;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maxAuditDepth>;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maxProducersToAudit>;
specialinvoke v.<org.apache.activemq.ActiveMQMessageAudit: void <init>(int,int)>(v, v);
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit> = v;
label:
v.<org.apache.activemq.broker.region.TopicSubscription: boolean active> = 1;
return;
}
public void add(org.apache.activemq.broker.region.MessageReference) throws java.lang.Exception
{
org.apache.activemq.usage.TempUsage v;
java.lang.Integer v, v, v;
org.apache.activemq.broker.ConnectionContext v, v, v, v, v;
org.apache.activemq.command.Message v;
org.apache.activemq.usage.SystemUsage v, v;
org.apache.activemq.broker.region.TopicSubscription v;
java.util.concurrent.CopyOnWriteArrayList v;
org.apache.activemq.broker.region.Destination v;
java.lang.Throwable v, v;
java.lang.Object[] v, v;
java.lang.String v, v, v, v, v;
org.apache.activemq.broker.Connection v, v;
org.apache.activemq.command.ConsumerInfo v, v;
org.apache.activemq.broker.region.MessageReference[] v;
org.apache.activemq.management.CountStatisticImpl v, v;
org.apache.activemq.usage.MemoryUsage v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.command.MessageId v;
org.apache.activemq.broker.region.policy.MessageEvictionStrategy v, v, v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.atomic.AtomicBoolean v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.LinkedList v;
org.apache.activemq.broker.region.MessageReference v, v;
org.apache.activemq.broker.region.IndirectMessageReference v;
org.slf4j.Logger v, v, v, v;
java.util.Iterator v, v;
org.apache.activemq.broker.region.SubscriptionStatistics v, v;
java.lang.Object v, v, v, v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isDuplicate(org.apache.activemq.broker.region.MessageReference)>(v);
if v == 0 goto label;
return;
label:
v = new org.apache.activemq.broker.region.IndirectMessageReference;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message getMessage()>();
specialinvoke v.<org.apache.activemq.broker.region.IndirectMessageReference: void <init>(org.apache.activemq.command.Message)>(v);
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getEnqueues()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void increment()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object matchedListMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: boolean discarding>;
if v == 0 goto label;
exitmonitor v;
label:
return;
label:
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isFull()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean isEmpty()>();
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void dispatch(org.apache.activemq.broker.region.MessageReference)>(v);
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void setSlowConsumer(boolean)>(0);
goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: int getPrefetchSize()>();
if v <= 1 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: int size()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: int getPrefetchSize()>();
if v <= v goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isSlowConsumer()>();
if v != 0 goto label;
v = null;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
v = interfaceinvoke v.<org.apache.activemq.broker.Connection: java.lang.String getRemoteAddress()>();
label:
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.String toString()>();
if v == null goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>(": \u0001");
goto label;
label:
v = "";
label:
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("{}: has twice its prefetch limit pending, without an ack; it appears to be slow{}", v, v);
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void setSlowConsumer(boolean)>(1);
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.CopyOnWriteArrayList destinations>;
v = virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: 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 = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext getContext()>();
interfaceinvoke v.<org.apache.activemq.broker.region.Destination: void slowConsumer(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.Subscription)>(v, v);
goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages>;
if v == 0 goto label;
v = 0;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: boolean active>;
if v == 0 goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean isFull()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext getContext()>();
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: java.util.concurrent.atomic.AtomicBoolean getStopping()>();
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.String toString()>();
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("{}: stopped waiting for space in pendingMessage cursor for: {}", v, v);
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getEnqueues()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void decrement()>();
exitmonitor v;
label:
return;
label:
if v != 0 goto label;
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[4];
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.String toString()>();
v[0] = v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v[1] = v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: org.apache.activemq.usage.SystemUsage getSystemUsage()>();
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.TempUsage getTempUsage()>();
v = virtualinvoke v.<org.apache.activemq.usage.TempUsage: int getPercentUsage()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: org.apache.activemq.usage.SystemUsage getSystemUsage()>();
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.MemoryUsage getMemoryUsage()>();
v = virtualinvoke v.<org.apache.activemq.usage.MemoryUsage: int getPercentUsage()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[3] = v;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object[])>("{}: Pending message cursor [{}] is full, temp usage ({}%) or memory usage ({}%) limit reached, blocking message add() pending the release of resources.", v);
v = 1;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object matchedListMutex>;
virtualinvoke v.<java.lang.Object: void wait(long)>(20L);
goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean tryAddMessageLast(org.apache.activemq.broker.region.MessageReference,long)>(v, 10L);
if v == 0 goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages>;
if v <= 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.policy.MessageEvictionStrategy messageEvictionStrategy>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.policy.MessageEvictionStrategy: int getEvictExpiredMessagesHighWatermark()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages>;
if v <= 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages>;
if v >= v goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages>;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: int size()>();
if v <= v goto label;
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void removeExpiredMessages()>();
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: int size()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages>;
if v <= v goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: int size()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages>;
v = v - v;
v = staticinvoke <java.lang.Math: int max(int,int)>(1000, v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: java.util.LinkedList pageInList(int)>(v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.policy.MessageEvictionStrategy messageEvictionStrategy>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.policy.MessageEvictionStrategy: org.apache.activemq.broker.region.MessageReference[] evictMessages(java.util.LinkedList)>(v);
v = virtualinvoke v.<java.util.LinkedList: 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:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = 0;
if v == null goto label;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void discard(org.apache.activemq.broker.region.MessageReference)>(v);
v = v + 1;
goto label;
label:
if v != 0 goto label;
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.Destination destination>;
v[0] = v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.policy.MessageEvictionStrategy messageEvictionStrategy>;
v[1] = v;
v = virtualinvoke v.<java.util.LinkedList: int size()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object[])>("No messages to evict returned for {} from eviction strategy: {} out of {} candidates", v);
label:
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void dispatchMatched()>();
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
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;
catch java.lang.Throwable from label to label with label;
}
private boolean isDuplicate(org.apache.activemq.broker.region.MessageReference)
{
org.apache.activemq.broker.region.MessageReference v;
org.slf4j.Logger v, v;
org.apache.activemq.command.MessageId v;
org.apache.activemq.ActiveMQMessageAudit v, v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v, v, v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = 0;
v = v.<org.apache.activemq.broker.region.TopicSubscription: boolean enableAudit>;
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit>;
v = virtualinvoke v.<org.apache.activemq.ActiveMQMessageAudit: boolean isDuplicate(org.apache.activemq.broker.region.MessageReference)>(v);
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
if v == 0 goto label;
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("{}, ignoring duplicate add: {}", v, v);
label:
return v;
}
protected void removeExpiredMessages() throws java.io.IOException
{
java.lang.Throwable v;
org.apache.activemq.command.Message$MessageDestination v;
org.apache.activemq.broker.Broker v, v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.management.CountStatisticImpl v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v, v, v;
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v, v, v, v, v;
org.apache.activemq.broker.region.DestinationStatistics v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void reset()>();
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean hasNext()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
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 = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: boolean isExpired()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void remove()>();
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.Broker broker>;
v = interfaceinvoke v.<org.apache.activemq.broker.Broker: boolean isExpired(org.apache.activemq.broker.region.MessageReference)>(v);
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 getExpired()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void increment()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.Broker broker>;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext getContext()>();
interfaceinvoke v.<org.apache.activemq.broker.Broker: void messageExpired(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.MessageReference,org.apache.activemq.broker.region.Subscription)>(v, v, v);
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void release()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void release()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void processMessageDispatchNotification(org.apache.activemq.command.MessageDispatchNotification)
{
java.lang.Throwable v, v, v;
org.apache.activemq.command.MessageDispatchNotification v;
org.apache.activemq.management.CountStatisticImpl v;
int v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v, v, v;
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.command.MessageId v, v;
org.apache.activemq.management.SizeStatisticImpl v;
java.util.List v;
org.apache.activemq.broker.region.SubscriptionStatistics v, v;
java.lang.Object v, v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v, v, v, v, v;
org.apache.activemq.broker.region.TopicSubscription$DispatchedNode v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.command.MessageDispatchNotification;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object matchedListMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void reset()>();
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean hasNext()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
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 = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageDispatchNotification: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object dispatchLock>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void remove()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getDispatched()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void increment()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isUseTopicSubscriptionInflightStats()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.List dispatched>;
v = new org.apache.activemq.broker.region.TopicSubscription$DispatchedNode;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription$DispatchedNode: void <init>(org.apache.activemq.broker.region.MessageReference)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.SizeStatisticImpl getInflightMessageSize()>();
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int getSize()>();
virtualinvoke v.<org.apache.activemq.management.SizeStatisticImpl: void addSize(long)>(v);
label:
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void release()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
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:
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 synchronized void acknowledge(org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.MessageAck) throws java.lang.Exception
{
org.apache.activemq.broker.ConnectionContext v;
int v, v, v;
java.lang.String v, v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v, v, v, v, v, v, v, v;
org.apache.activemq.command.MessageAck v;
javax.jms.JMSException v, v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.MessageAck;
specialinvoke v.<org.apache.activemq.broker.region.AbstractSubscription: void acknowledge(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.MessageAck)>(v, v);
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isStandardAck()>();
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void updateStatsOnAck(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.MessageAck)>(v, v);
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isPoisonAck()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isInTransaction()>();
if v == 0 goto label;
v = new javax.jms.JMSException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.MessageAck)>(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[])>("Poison ack cannot be transacted: \u0001");
specialinvoke v.<javax.jms.JMSException: void <init>(java.lang.String)>(v);
throw v;
label:
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void updateStatsOnAck(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.MessageAck)>(v, v);
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: int getMessageCount()>();
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void contractPrefetchExtension(int)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isIndividualAck()>();
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void updateStatsOnAck(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.command.MessageAck)>(v, v);
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isInTransaction()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void expandPrefetchExtension(int)>(1);
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isExpiredAck()>();
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void updateStatsOnAck(org.apache.activemq.command.MessageAck)>(v);
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: int getMessageCount()>();
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void contractPrefetchExtension(int)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isDeliveredAck()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: int getMessageCount()>();
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void expandPrefetchExtension(int)>(v);
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isRedeliveredAck()>();
if v == 0 goto label;
return;
label:
v = new javax.jms.JMSException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.MessageAck)>(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[])>("Invalid acknowledgment: \u0001");
specialinvoke v.<javax.jms.JMSException: void <init>(java.lang.String)>(v);
throw v;
label:
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void dispatchMatched()>();
return;
}
private void updateStatsOnAck(org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.MessageAck)
{
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.command.MessageAck v;
org.apache.activemq.broker.region.TopicSubscription$1 v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.transaction.Transaction v;
boolean v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.MessageAck;
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 = new org.apache.activemq.broker.region.TopicSubscription$1;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription$1: void <init>(org.apache.activemq.broker.region.TopicSubscription,org.apache.activemq.command.MessageAck)>(v, v);
virtualinvoke v.<org.apache.activemq.transaction.Transaction: void addSynchronization(org.apache.activemq.transaction.Synchronization)>(v);
goto label;
label:
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void updateStatsOnAck(org.apache.activemq.command.MessageAck)>(v);
label:
return;
}
public org.apache.activemq.command.Response pullMessage(org.apache.activemq.broker.ConnectionContext, org.apache.activemq.command.MessagePull) throws java.lang.Exception
{
long v, v, v, v, v;
org.apache.activemq.command.MessagePull v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.management.CountStatisticImpl v, v;
byte v, v, v;
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v;
org.apache.activemq.broker.region.SubscriptionStatistics v, v;
org.apache.activemq.thread.Scheduler v;
org.apache.activemq.broker.region.TopicSubscription$2 v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.command.MessagePull;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getPrefetchSize()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: 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.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
v = virtualinvoke v.<org.apache.activemq.command.MessagePull: int getQuantity()>();
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(v);
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void dispatchMatched()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: 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 cmp v;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.MessagePull: boolean isAlwaysSignalDone()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.MessagePull: long getTimeout()>();
v = v cmp -1L;
if v != 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void dispatch(org.apache.activemq.broker.region.MessageReference)>(null);
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
label:
v = virtualinvoke v.<org.apache.activemq.command.MessagePull: long getTimeout()>();
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.thread.Scheduler scheduler>;
v = new org.apache.activemq.broker.region.TopicSubscription$2;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription$2: void <init>(org.apache.activemq.broker.region.TopicSubscription,long,org.apache.activemq.command.MessagePull)>(v, v, v);
v = virtualinvoke v.<org.apache.activemq.command.MessagePull: long getTimeout()>();
virtualinvoke v.<org.apache.activemq.thread.Scheduler: void executeAfterDelay(java.lang.Runnable,long)>(v, v);
label:
return null;
}
private final void pullTimeout(long, boolean)
{
java.lang.Throwable v, v;
long v, v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.management.CountStatisticImpl v;
byte v;
java.util.concurrent.atomic.AtomicInteger v, v, v;
org.apache.activemq.broker.Connection v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v;
java.lang.Exception v;
org.apache.activemq.broker.region.SubscriptionStatistics v;
java.lang.Object v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: long;
v := @parameter: boolean;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object matchedListMutex>;
entermonitor v;
label:
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: 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 cmp v;
if v == 0 goto label;
if v == 0 goto label;
label:
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void dispatch(org.apache.activemq.broker.region.MessageReference)>(null);
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
interfaceinvoke v.<org.apache.activemq.broker.Connection: void serviceException(java.lang.Throwable)>(v);
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: void set(int)>(0);
throw v;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Exception 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;
catch java.lang.Throwable from label to label with label;
}
private void updateStatsOnAck(org.apache.activemq.command.MessageAck)
{
org.apache.activemq.broker.region.TopicSubscription v;
boolean v, v, v, v, v, v, v, v, v;
org.apache.activemq.command.MessageId v, v, v, v;
java.util.List v, v;
org.apache.activemq.broker.region.Destination v, v, v;
java.lang.Throwable v;
long v, v;
java.util.ArrayList v;
int v, v;
org.apache.activemq.command.MessageAck v;
java.util.Iterator v, v;
org.apache.activemq.management.SizeStatisticImpl v;
org.apache.activemq.broker.region.SubscriptionStatistics v;
java.lang.Object v, v, v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.command.MessageAck;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isUseTopicSubscriptionInflightStats()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object dispatchLock>;
entermonitor v;
label:
v = 0;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: 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 = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription$DispatchedNode: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: org.apache.activemq.command.MessageId getFirstMessageId()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: org.apache.activemq.command.MessageId getFirstMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
v = 1;
label:
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: org.apache.activemq.command.MessageId getLastMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
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.<org.apache.activemq.broker.region.TopicSubscription: java.util.List dispatched>;
interfaceinvoke v.<java.util.List: boolean remove(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.SizeStatisticImpl getInflightMessageSize()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription$DispatchedNode: long getSize()>();
v = neg v;
virtualinvoke v.<org.apache.activemq.management.SizeStatisticImpl: void addSize(long)>(v);
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription$DispatchedNode: org.apache.activemq.broker.region.Destination getDestination()>();
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void incrementStatsOnAck(org.apache.activemq.broker.region.Destination,org.apache.activemq.command.MessageAck,int)>(v, v, 1);
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isInTransaction()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void contractPrefetchExtension(int)>(1);
goto label;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: boolean singleDestination>;
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.Destination destination>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.Destination destination>;
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: int getMessageCount()>();
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void incrementStatsOnAck(org.apache.activemq.broker.region.Destination,org.apache.activemq.command.MessageAck,int)>(v, v, v);
label:
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isInTransaction()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: int getMessageCount()>();
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void contractPrefetchExtension(int)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void incrementStatsOnAck(org.apache.activemq.broker.region.Destination, org.apache.activemq.command.MessageAck, int)
{
org.apache.activemq.management.CountStatisticImpl v, v, v, v, v;
int v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
boolean v, v;
org.apache.activemq.command.MessageAck v;
org.apache.activemq.broker.region.SubscriptionStatistics v;
org.apache.activemq.broker.region.DestinationStatistics v, v, v, v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.region.Destination;
v := @parameter: org.apache.activemq.command.MessageAck;
v := @parameter: int;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getDequeues()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void add(long)>(v);
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 add(long)>(v);
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 getInflight()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void subtract(long)>(v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: 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.Destination: org.apache.activemq.broker.region.DestinationStatistics getDestinationStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.DestinationStatistics: org.apache.activemq.management.CountStatisticImpl getForwards()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void add(long)>(v);
label:
v = virtualinvoke v.<org.apache.activemq.command.MessageAck: boolean isExpiredAck()>();
if v == 0 goto label;
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 getExpired()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void add(long)>(v);
label:
return;
}
public int countBeforeFull()
{
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v, v, v, v, v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getPrefetchSize()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: int getPrefetchSize()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = v + v;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getDispatchedQueueSize()>();
v = v - v;
label:
return v;
}
public int getPendingQueueSize()
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int matched()>();
return v;
}
public long getPendingMessageSize()
{
long v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: long messageSize()>();
return v;
}
public int getDispatchedQueueSize()
{
long v, v, v;
org.apache.activemq.management.CountStatisticImpl v, v;
org.apache.activemq.broker.region.SubscriptionStatistics v, v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: 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 = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getDequeues()>();
v = virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: long getCount()>();
v = v - v;
return v;
}
public int getMaximumPendingMessages()
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages>;
return v;
}
public long getDispatchedCounter()
{
org.apache.activemq.management.CountStatisticImpl v;
org.apache.activemq.broker.region.SubscriptionStatistics v;
long v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: 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()>();
return v;
}
public long getEnqueueCounter()
{
org.apache.activemq.management.CountStatisticImpl v;
org.apache.activemq.broker.region.SubscriptionStatistics v;
long v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: 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()>();
return v;
}
public long getDequeueCounter()
{
org.apache.activemq.management.CountStatisticImpl v;
org.apache.activemq.broker.region.SubscriptionStatistics v;
long v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getDequeues()>();
v = virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: long getCount()>();
return v;
}
public int discarded()
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
java.util.concurrent.atomic.AtomicInteger v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger discarded>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
return v;
}
public int matched()
{
int v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: int size()>();
return v;
}
public void setMaximumPendingMessages(int)
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: int;
v.<org.apache.activemq.broker.region.TopicSubscription: int maximumPendingMessages> = v;
return;
}
public org.apache.activemq.broker.region.policy.MessageEvictionStrategy getMessageEvictionStrategy()
{
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.broker.region.policy.MessageEvictionStrategy v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.policy.MessageEvictionStrategy messageEvictionStrategy>;
return v;
}
public void setMessageEvictionStrategy(org.apache.activemq.broker.region.policy.MessageEvictionStrategy)
{
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.broker.region.policy.MessageEvictionStrategy v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.region.policy.MessageEvictionStrategy;
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.policy.MessageEvictionStrategy messageEvictionStrategy> = v;
return;
}
public synchronized int getMaxProducersToAudit()
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maxProducersToAudit>;
return v;
}
public synchronized void setMaxProducersToAudit(int)
{
org.apache.activemq.ActiveMQMessageAudit v, v;
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: int;
v.<org.apache.activemq.broker.region.TopicSubscription: int maxProducersToAudit> = v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit>;
virtualinvoke v.<org.apache.activemq.ActiveMQMessageAudit: void setMaximumNumberOfProducersToTrack(int)>(v);
label:
return;
}
public synchronized int getMaxAuditDepth()
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maxAuditDepth>;
return v;
}
public synchronized void setMaxAuditDepth(int)
{
org.apache.activemq.ActiveMQMessageAudit v, v;
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: int;
v.<org.apache.activemq.broker.region.TopicSubscription: int maxAuditDepth> = v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit>;
virtualinvoke v.<org.apache.activemq.ActiveMQMessageAudit: void setAuditDepth(int)>(v);
label:
return;
}
public boolean isEnableAudit()
{
org.apache.activemq.broker.region.TopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: boolean enableAudit>;
return v;
}
public synchronized void setEnableAudit(boolean)
{
org.apache.activemq.ActiveMQMessageAudit v, v;
int v, v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: boolean;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean enableAudit> = v;
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit>;
if v != null goto label;
v = new org.apache.activemq.ActiveMQMessageAudit;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maxAuditDepth>;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int maxProducersToAudit>;
specialinvoke v.<org.apache.activemq.ActiveMQMessageAudit: void <init>(int,int)>(v, v);
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.ActiveMQMessageAudit audit> = v;
label:
return;
}
public boolean isFull()
{
java.util.concurrent.atomic.AtomicInteger v, v;
int v, v, v, v, v, v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
boolean v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getPrefetchSize()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getDispatchedQueueSize()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = v - v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: int getPrefetchSize()>();
if v < v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public int getInFlightSize()
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getDispatchedQueueSize()>();
return v;
}
public boolean isLowWaterMark()
{
byte v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v, v, v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
boolean v;
double v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getDispatchedQueueSize()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = v - v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: int getPrefetchSize()>();
v = v * 0.4;
v = v cmpg v;
if v > 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean isHighWaterMark()
{
byte v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v, v, v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
boolean v;
double v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getDispatchedQueueSize()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = v - v;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: int getPrefetchSize()>();
v = v * 0.9;
v = v cmpl v;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void setMemoryUsageHighWaterMark(int)
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: int;
v.<org.apache.activemq.broker.region.TopicSubscription: int memoryUsageHighWaterMark> = v;
return;
}
public int getMemoryUsageHighWaterMark()
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: int memoryUsageHighWaterMark>;
return v;
}
public org.apache.activemq.usage.SystemUsage getUsageManager()
{
org.apache.activemq.usage.SystemUsage v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.usage.SystemUsage usageManager>;
return v;
}
public org.apache.activemq.broker.region.cursors.PendingMessageCursor getMatched()
{
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
return v;
}
public void setMatched(org.apache.activemq.broker.region.cursors.PendingMessageCursor)
{
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.region.cursors.PendingMessageCursor;
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched> = v;
return;
}
public void updateConsumerPrefetch(int)
{
org.apache.activemq.command.ConsumerId v;
org.apache.activemq.broker.ConnectionContext v, v, v, v;
org.apache.activemq.command.ConsumerControl v;
int v;
org.apache.activemq.broker.Connection v, v, v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
boolean v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: int;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
v = interfaceinvoke v.<org.apache.activemq.broker.Connection: boolean isManageable()>();
if v == 0 goto label;
v = new org.apache.activemq.command.ConsumerControl;
specialinvoke v.<org.apache.activemq.command.ConsumerControl: void <init>()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
virtualinvoke v.<org.apache.activemq.command.ConsumerControl: void setConsumerId(org.apache.activemq.command.ConsumerId)>(v);
virtualinvoke v.<org.apache.activemq.command.ConsumerControl: void setPrefetch(int)>(v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
interfaceinvoke v.<org.apache.activemq.broker.Connection: void dispatchAsync(org.apache.activemq.command.Command)>(v);
label:
return;
}
private void dispatchMatched() throws java.io.IOException
{
java.lang.Throwable v, v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v, v, v, v, v;
org.apache.activemq.broker.region.MessageReference v;
java.lang.Object v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v, v, v, v, v, v, v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object matchedListMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isFull()>();
if v != 0 goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void reset()>();
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: boolean hasNext()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isFull()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
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.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void remove()>();
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: boolean isExpired()>();
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void discard(org.apache.activemq.broker.region.MessageReference)>(v);
goto label;
label:
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void dispatch(org.apache.activemq.broker.region.MessageReference)>(v);
goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void release()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
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:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void dispatch(org.apache.activemq.broker.region.MessageReference) throws java.io.IOException
{
org.apache.activemq.command.ConsumerId v;
org.apache.activemq.broker.ConnectionContext v, v;
org.apache.activemq.command.Message v, v;
org.apache.activemq.command.MessageDispatch v;
org.apache.activemq.management.CountStatisticImpl v, v, v;
org.apache.activemq.broker.region.TopicSubscription v;
boolean v, v, v;
org.apache.activemq.command.ActiveMQDestination v;
java.util.List v;
org.apache.activemq.broker.region.TopicSubscription$3 v;
org.apache.activemq.broker.region.DestinationStatistics v, v;
org.apache.activemq.broker.region.TopicSubscription$DispatchedNode v;
org.apache.activemq.broker.region.Destination v, v;
java.lang.Throwable v;
org.apache.activemq.command.Message$MessageDestination v, v, v, v;
int v, v;
org.apache.activemq.broker.Connection v, v;
org.apache.activemq.command.ConsumerInfo v, v;
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.management.SizeStatisticImpl v;
org.apache.activemq.broker.region.SubscriptionStatistics v, v;
java.lang.Object v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
if v == null goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message getMessage()>();
goto label;
label:
v = null;
label:
v = v;
if v == null goto label;
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int incrementReferenceCount()>();
label:
v = new org.apache.activemq.command.MessageDispatch;
specialinvoke v.<org.apache.activemq.command.MessageDispatch: void <init>()>();
virtualinvoke v.<org.apache.activemq.command.MessageDispatch: void setMessage(org.apache.activemq.command.Message)>(v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
virtualinvoke v.<org.apache.activemq.command.MessageDispatch: void setConsumerId(org.apache.activemq.command.ConsumerId)>(v);
if v == null 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.command.ActiveMQDestination getActiveMQDestination()>();
virtualinvoke v.<org.apache.activemq.command.MessageDispatch: void setDestination(org.apache.activemq.command.ActiveMQDestination)>(v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object dispatchLock>;
entermonitor v;
label:
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.CountStatisticImpl getDispatched()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void increment()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isUseTopicSubscriptionInflightStats()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.List dispatched>;
v = new org.apache.activemq.broker.region.TopicSubscription$DispatchedNode;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription$DispatchedNode: void <init>(org.apache.activemq.broker.region.MessageReference)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.SubscriptionStatistics getSubscriptionStatistics()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.SubscriptionStatistics: org.apache.activemq.management.SizeStatisticImpl getInflightMessageSize()>();
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int getSize()>();
virtualinvoke v.<org.apache.activemq.management.SizeStatisticImpl: void addSize(long)>(v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: boolean singleDestination>;
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.Destination destination>;
if v != null goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message$MessageDestination getRegionDestination()>();
v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.Destination destination> = v;
goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.Destination destination>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message$MessageDestination getRegionDestination()>();
if v == v goto label;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean singleDestination> = 0;
label:
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getPrefetchSize()>();
if v != 0 goto label;
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void decrementPrefetchExtension(int)>(1);
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: boolean isDispatchAsync()>();
if v == 0 goto label;
if v == null goto label;
v = new org.apache.activemq.broker.region.TopicSubscription$3;
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription$3: void <init>(org.apache.activemq.broker.region.TopicSubscription,org.apache.activemq.broker.region.MessageReference)>(v, v);
virtualinvoke v.<org.apache.activemq.command.MessageDispatch: void setTransmitCallback(org.apache.activemq.transport.TransmitCallback)>(v);
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
interfaceinvoke v.<org.apache.activemq.broker.Connection: void dispatchAsync(org.apache.activemq.command.Command)>(v);
goto label;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext context>;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.broker.Connection getConnection()>();
interfaceinvoke v.<org.apache.activemq.broker.Connection: void dispatchSync(org.apache.activemq.command.Command)>(v);
if v == null 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 getDispatched()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void increment()>();
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 getInflight()>();
virtualinvoke v.<org.apache.activemq.management.CountStatisticImpl: void increment()>();
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void discard(org.apache.activemq.broker.region.MessageReference)
{
java.lang.Throwable v, v;
org.apache.activemq.command.Message$MessageDestination v;
org.apache.activemq.command.ConsumerId v;
org.apache.activemq.broker.Broker v, v;
org.apache.activemq.broker.ConnectionContext v, v;
org.apache.activemq.management.CountStatisticImpl v;
java.util.concurrent.atomic.AtomicInteger v;
java.lang.String v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
org.apache.activemq.broker.region.MessageReference v;
org.slf4j.Logger v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
org.apache.activemq.broker.region.DestinationStatistics v;
org.apache.activemq.broker.region.Destination v, v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean discarding> = 1;
label:
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void remove(org.apache.activemq.broker.region.MessageReference)>(v);
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger discarded>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.Destination destination>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.Destination destination>;
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()>();
label:
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("{}, discarding message {}", v, v);
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message$MessageDestination getRegionDestination()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext getContext()>();
interfaceinvoke v.<org.apache.activemq.broker.region.Destination: void messageDiscarded(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.Subscription,org.apache.activemq.broker.region.MessageReference)>(v, v, v);
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.Broker broker>;
v = interfaceinvoke v.<org.apache.activemq.broker.Broker: org.apache.activemq.broker.Broker getRoot()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.ConnectionContext getContext()>();
v = new java.lang.Throwable;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.ConsumerId)>(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[])>("TopicSubDiscard. ID:\u0001");
specialinvoke v.<java.lang.Throwable: void <init>(java.lang.String)>(v);
interfaceinvoke v.<org.apache.activemq.broker.Broker: boolean sendToDeadLetterQueue(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.region.MessageReference,org.apache.activemq.broker.region.Subscription,java.lang.Throwable)>(v, v, v, v);
label:
v.<org.apache.activemq.broker.region.TopicSubscription: boolean discarding> = 0;
goto label;
label:
v := @caughtexception;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean discarding> = 0;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public java.lang.String toString()
{
long v;
org.apache.activemq.command.ConsumerId v;
java.util.concurrent.atomic.AtomicInteger v;
int v, v, v, v, v;
java.lang.String v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
boolean v;
java.util.concurrent.CopyOnWriteArrayList v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: org.apache.activemq.command.ConsumerId getConsumerId()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.CopyOnWriteArrayList destinations>;
v = virtualinvoke v.<java.util.concurrent.CopyOnWriteArrayList: int size()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int getDispatchedQueueSize()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: long getDequeueCounter()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int matched()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: int discarded()>();
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicInteger prefetchExtension>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: boolean isUsePrefetchExtension()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.activemq.command.ConsumerId,int,int,long,int,int,int,boolean)>(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[])>("TopicSubscription: consumer=\u, destinations=\u, dispatched=\u, delivered=\u, matched=\u, discarded=\u, prefetchExtension=\u, usePrefetchExtension=\u0001");
return v;
}
public void destroy()
{
java.lang.Throwable v, v;
org.slf4j.Logger v;
java.lang.Exception v;
java.util.List v;
java.lang.Object v, v;
org.apache.activemq.broker.region.cursors.PendingMessageCursor v;
org.apache.activemq.broker.region.TopicSubscription v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean active> = 0;
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object matchedListMutex>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.broker.region.cursors.PendingMessageCursor matched>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingMessageCursor: void destroy()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Throwable)>("Failed to destroy cursor", v);
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
virtualinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void setSlowConsumer(boolean)>(0);
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.lang.Object dispatchLock>;
entermonitor v;
label:
v = v.<org.apache.activemq.broker.region.TopicSubscription: java.util.List dispatched>;
interfaceinvoke v.<java.util.List: void clear()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Exception 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 int getPrefetchSize()
{
int v;
org.apache.activemq.broker.region.TopicSubscription v;
org.apache.activemq.command.ConsumerInfo v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
v = virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: int getPrefetchSize()>();
return v;
}
public void setPrefetchSize(int)
{
org.slf4j.Logger v;
int v;
org.apache.activemq.broker.region.TopicSubscription v;
java.lang.Exception v;
org.apache.activemq.command.ConsumerInfo v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: int;
v = v.<org.apache.activemq.broker.region.TopicSubscription: org.apache.activemq.command.ConsumerInfo info>;
virtualinvoke v.<org.apache.activemq.command.ConsumerInfo: void setPrefetchSize(int)>(v);
label:
specialinvoke v.<org.apache.activemq.broker.region.TopicSubscription: void dispatchMatched()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("Caught exception on dispatch after prefetch size change.");
label:
return;
catch java.lang.Exception from label to label with label;
}
public boolean isUseTopicSubscriptionInflightStats()
{
org.apache.activemq.broker.region.TopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v = v.<org.apache.activemq.broker.region.TopicSubscription: boolean useTopicSubscriptionInflightStats>;
return v;
}
public void setUseTopicSubscriptionInflightStats(boolean)
{
org.apache.activemq.broker.region.TopicSubscription v;
boolean v;
v := @this: org.apache.activemq.broker.region.TopicSubscription;
v := @parameter: boolean;
v.<org.apache.activemq.broker.region.TopicSubscription: boolean useTopicSubscriptionInflightStats> = v;
return;
}
static void <clinit>()
{
java.util.concurrent.atomic.AtomicLong v;
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/broker/region/TopicSubscription;");
<org.apache.activemq.broker.region.TopicSubscription: org.slf4j.Logger LOG> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(0L);
<org.apache.activemq.broker.region.TopicSubscription: java.util.concurrent.atomic.AtomicLong CURSOR_NAME_COUNTER> = v;
return;
}
}