public abstract class org.apache.activemq.broker.region.cursors.AbstractStoreCursor extends org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor implements org.apache.activemq.store.MessageRecoveryListener
{
private static final org.slf4j.Logger LOG;
protected final org.apache.activemq.broker.region.Destination regionDestination;
protected final org.apache.activemq.broker.region.cursors.PendingList batchList;
private java.util.Iterator iterator;
protected boolean batchResetNeeded;
protected int size;
private final java.util.LinkedList pendingCachedIds;
private static int SYNC_ADD;
private static int ASYNC_ADD;
final org.apache.activemq.command.MessageId[] lastCachedIds;
protected boolean hadSpace;
final java.util.LinkedList duplicatesFromStore;
protected void <init>(org.apache.activemq.broker.region.Destination)
{
org.apache.activemq.broker.region.cursors.PrioritizedPendingList v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.apache.activemq.command.MessageId[] v;
org.apache.activemq.broker.region.cursors.OrderedPendingList v;
java.util.LinkedList v, v;
boolean v, v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.broker.region.Destination;
if v == null goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: boolean isPrioritizedMessages()>();
goto label;
label:
v = 0;
label:
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor: void <init>(boolean)>(v);
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator> = null;
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean batchResetNeeded> = 0;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList pendingCachedIds> = v;
v = newarray (org.apache.activemq.command.MessageId)[2];
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds> = v;
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean hadSpace> = 0;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList duplicatesFromStore> = v;
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.Destination regionDestination> = v;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean prioritizedMessages>;
if v == 0 goto label;
v = new org.apache.activemq.broker.region.cursors.PrioritizedPendingList;
specialinvoke v.<org.apache.activemq.broker.region.cursors.PrioritizedPendingList: void <init>()>();
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList> = v;
goto label;
label:
v = new org.apache.activemq.broker.region.cursors.OrderedPendingList;
specialinvoke v.<org.apache.activemq.broker.region.cursors.OrderedPendingList: void <init>()>();
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList> = v;
label:
return;
}
public final synchronized void start() throws java.lang.Exception
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
int v;
boolean v, v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean isStarted()>();
if v != 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor: void start()>();
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void resetBatch()>();
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void resetSize()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean useCache>;
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setCacheEnabled(boolean)>(v);
label:
return;
}
protected void resetSize()
{
int v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int getStoreSize()>();
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size> = v;
return;
}
public void rebase()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.slf4j.Logger v;
org.apache.activemq.command.MessageId v;
org.apache.activemq.command.MessageId[] v;
int v;
java.lang.RuntimeException v;
java.lang.Exception v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = v[v];
if v == null goto label;
label:
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setBatch(org.apache.activemq.command.MessageId)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("{} - Failed to set batch on rebase", v, v);
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.lang.Exception from label to label with label;
}
public final synchronized void stop() throws java.lang.Exception
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void resetBatch()>();
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor: void stop()>();
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void gc()>();
return;
}
public final boolean recoverMessage(org.apache.activemq.command.Message) throws java.lang.Exception
{
org.apache.activemq.command.Message v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
boolean v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.command.Message;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean recoverMessage(org.apache.activemq.command.Message,boolean)>(v, 0);
return v;
}
public synchronized boolean recoverMessage(org.apache.activemq.command.Message, boolean) throws java.lang.Exception
{
java.lang.Object[] v, v, v;
org.apache.activemq.broker.region.cursors.PendingList v;
org.apache.activemq.command.Message v;
org.apache.activemq.usage.MemoryUsage v, v;
org.apache.activemq.usage.SystemUsage v;
boolean v, v, v, v, v, v;
org.slf4j.Logger v, v, v, v;
org.apache.activemq.command.MessageId v, v, v, v, v, v, v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.lang.Object v, v, v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.command.Message;
v := @parameter: boolean;
v = 0;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.Destination regionDestination>;
virtualinvoke v.<org.apache.activemq.command.Message: void setRegionDestination(org.apache.activemq.command.Message$MessageDestination)>(v);
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean recordUniqueId(org.apache.activemq.command.MessageId)>(v);
if v == 0 goto label;
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.usage.MemoryUsage getMemoryUsage()>();
if v != null goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.usage.SystemUsage getSystemUsage()>();
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.MemoryUsage getMemoryUsage()>();
virtualinvoke v.<org.apache.activemq.command.Message: void setMemoryUsage(org.apache.activemq.usage.MemoryUsage)>(v);
label:
virtualinvoke v.<org.apache.activemq.command.Message: int incrementReferenceCount()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: org.apache.activemq.broker.region.cursors.PendingNode addMessageLast(org.apache.activemq.broker.region.MessageReference)>(v);
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void clearIterator(boolean)>(1);
v = 1;
goto label;
label:
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean duplicateFromStoreExcepted(org.apache.activemq.command.Message)>(v);
if v == 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v[1] = v;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object[])>("{} store replayed pending message due to concurrentStoreAndDispatchQueues {} seq: {}", v);
goto label;
label:
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v[1] = v;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object[])>("{} - cursor got duplicate from store {} seq: {}", v);
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void duplicate(org.apache.activemq.command.Message)>(v);
goto label;
label:
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v[1] = v;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object[])>("{} - cursor got duplicate send {} seq: {}", v);
v = staticinvoke <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean gotToTheStore(org.apache.activemq.command.Message)>(v);
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void duplicate(org.apache.activemq.command.Message)>(v);
label:
return v;
}
protected boolean duplicateFromStoreExcepted(org.apache.activemq.command.Message)
{
org.apache.activemq.command.Message v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
boolean v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.command.Message;
v = virtualinvoke v.<org.apache.activemq.command.Message: boolean isRecievedByDFBridge()>();
return v;
}
public static boolean gotToTheStore(org.apache.activemq.command.Message) throws java.lang.Exception
{
org.apache.activemq.command.MessageId v, v;
long v;
java.lang.Exception v;
org.apache.activemq.command.Message v;
int v;
java.lang.Object v, v;
boolean v, v, v, v;
v := @parameter: org.apache.activemq.command.Message;
v = virtualinvoke v.<org.apache.activemq.command.Message: boolean isRecievedByDFBridge()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = v instanceof java.util.concurrent.Future;
if v == 0 goto label;
label:
interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get()>();
label:
goto label;
label:
v := @caughtexception;
label:
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
if v == null goto label;
v = v instanceof java.lang.Long;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = staticinvoke <java.lang.Long: int compare(long,long)>(v, -1L);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 1;
catch java.lang.Exception from label to label with label;
}
private void duplicate(org.apache.activemq.command.Message)
{
org.apache.activemq.command.Message v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.util.LinkedList v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.command.Message;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList duplicatesFromStore>;
virtualinvoke v.<java.util.LinkedList: boolean add(java.lang.Object)>(v);
return;
}
void dealWithDuplicates()
{
java.util.Iterator v;
org.apache.activemq.broker.region.Subscription v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.lang.Object v;
java.util.LinkedList v, v;
boolean v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList duplicatesFromStore>;
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()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.Destination regionDestination>;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.Subscription getSubscription()>();
interfaceinvoke v.<org.apache.activemq.broker.region.Destination: void duplicateFromStore(org.apache.activemq.command.Message,org.apache.activemq.broker.region.Subscription)>(v, v);
goto label;
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList duplicatesFromStore>;
virtualinvoke v.<java.util.LinkedList: void clear()>();
return;
}
public final synchronized void reset()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.slf4j.Logger v;
org.apache.activemq.broker.region.cursors.PendingList v;
java.lang.RuntimeException v;
java.lang.Exception v;
boolean v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: boolean isEmpty()>();
if v == 0 goto label;
label:
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void fillBatch()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("{} - Failed to fill batch", v, v);
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void clearIterator(boolean)>(1);
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size()>();
return;
catch java.lang.Exception from label to label with label;
}
public synchronized void release()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void clearIterator(boolean)>(0);
return;
}
private synchronized void clearIterator(boolean)
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.util.Iterator v;
boolean v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: boolean;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator> = null;
if v == 0 goto label;
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void ensureIterator()>();
label:
return;
}
private synchronized void ensureIterator()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.util.Iterator v, v;
org.apache.activemq.broker.region.cursors.PendingList v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator>;
if v != null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: java.util.Iterator iterator()>();
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator> = v;
label:
return;
}
public final void finished()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
return;
}
public final synchronized boolean hasNext()
{
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.activemq.broker.region.cursors.PendingList v;
java.lang.RuntimeException v;
java.lang.Exception v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
boolean v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: boolean isEmpty()>();
if v == 0 goto label;
label:
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void fillBatch()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("{} - Failed to fill batch", v, v);
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void ensureIterator()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator>;
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
return v;
catch java.lang.Exception from label to label with label;
}
public final synchronized org.apache.activemq.broker.region.MessageReference next()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.util.Iterator v, v;
org.apache.activemq.broker.region.cursors.PendingList v;
java.lang.Object v;
boolean v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator>;
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator>;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
label:
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.MessageReference last> = v;
if v == null goto label;
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int incrementReferenceCount()>();
label:
return v;
}
public synchronized boolean tryAddMessageLast(org.apache.activemq.broker.region.MessageReference, long) throws java.lang.Exception
{
java.lang.Object[] v;
long v;
org.apache.activemq.command.Message v, v;
int v, v;
boolean v, v, v, v, v, v;
org.apache.activemq.broker.region.MessageReference v;
org.slf4j.Logger v, v;
org.apache.activemq.command.MessageId v, v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.lang.Object v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v := @parameter: long;
v = 0;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean hasSpace()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean isCacheEnabled()>();
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message getMessage()>();
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean recoverMessage(org.apache.activemq.command.Message,boolean)>(v, 1);
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void trackLastCached(org.apache.activemq.broker.region.MessageReference)>(v);
goto label;
label:
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void dealWithDuplicates()>();
return 0;
label:
v = 1;
label:
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean isCacheEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v[1] = v;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object[])>("{} - disabling cache on add {} {}", v);
label:
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message getMessage()>();
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void syncWithStore(org.apache.activemq.command.Message)>(v);
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setCacheEnabled(boolean)>(0);
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
v = v + 1;
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size> = v;
return 1;
}
public synchronized boolean isCacheEnabled()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
boolean v, v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor: boolean isCacheEnabled()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean enableCacheNow()>();
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected boolean enableCacheNow()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.slf4j.Logger v, v;
boolean v, v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = 0;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean canEnableCash()>();
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setCacheEnabled(boolean)>(1);
v = 1;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("{} enabling cache on empty store", v);
label:
return v;
}
protected boolean canEnableCash()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
int v;
boolean v, v, v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean useCache>;
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean hasSpace()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean isStarted()>();
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean canRecoveryNextMessage()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
boolean v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean parentHasSpace(int)>(90);
return v;
}
private void syncWithStore(org.apache.activemq.command.Message) throws java.lang.Exception
{
java.util.ListIterator v;
java.util.concurrent.TimeoutException v;
org.apache.activemq.command.Message v;
boolean v, v, v, v, v;
java.util.concurrent.CancellationException v;
org.apache.activemq.command.MessageId v, v, v, v;
java.lang.Exception v;
org.apache.activemq.command.MessageId[] v, v, v, v, v;
long v, v;
int v, v, v, v, v, v, v, v, v;
java.lang.String v;
java.util.LinkedList v, v, v;
org.slf4j.Logger v, v, v, v;
java.util.concurrent.TimeUnit v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.lang.Object v, v, v, v, v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.command.Message;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void pruneLastCached()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList pendingCachedIds>;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList pendingCachedIds>;
v = virtualinvoke v.<java.util.LinkedList: int size()>();
v = virtualinvoke v.<java.util.LinkedList: java.util.ListIterator listIterator(int)>(v);
label:
v = interfaceinvoke v.<java.util.ListIterator: boolean hasPrevious()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.ListIterator: java.lang.Object previous()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = v instanceof java.util.concurrent.Future;
if v == 0 goto label;
v = interfaceinvoke v.<java.util.concurrent.Future: boolean isCancelled()>();
if v != 0 goto label;
label:
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get(long,java.util.concurrent.TimeUnit)>(5L, v);
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setLastCachedId(int,org.apache.activemq.command.MessageId)>(v, v);
label:
goto label;
label:
v := @caughtexception;
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("{} timed out waiting for async add", v, v);
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("{} exception waiting for async add", v, v);
goto label;
label:
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setLastCachedId(int,org.apache.activemq.command.MessageId)>(v, v);
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
v = v[v];
if v == null goto label;
v = staticinvoke <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean isAsync(org.apache.activemq.command.Message)>(v);
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
v = v[v];
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = staticinvoke <java.lang.Long: int compare(long,long)>(v, v);
if v >= 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Object,java.lang.Object,org.apache.activemq.broker.region.cursors.AbstractStoreCursor)>(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[])>("no set batch from async:\u >= than current: \u, \u0001");
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>(v);
label:
v = null;
label:
if v != null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = v[v];
label:
if v == null goto label;
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setBatch(org.apache.activemq.command.MessageId)>(v);
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
v[v] = null;
v[v] = null;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList pendingCachedIds>;
virtualinvoke v.<java.util.LinkedList: void clear()>();
return;
catch java.util.concurrent.CancellationException from label to label with label;
catch java.util.concurrent.TimeoutException from label to label with label;
catch java.lang.Exception from label to label with label;
}
private void trackLastCached(org.apache.activemq.broker.region.MessageReference)
{
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.command.MessageId v, v;
org.apache.activemq.command.Message v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
int v;
java.util.LinkedList v;
boolean v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.Message getMessage()>();
v = staticinvoke <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean isAsync(org.apache.activemq.command.Message)>(v);
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void pruneLastCached()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList pendingCachedIds>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
virtualinvoke v.<java.util.LinkedList: boolean add(java.lang.Object)>(v);
goto label;
label:
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setLastCachedId(int,org.apache.activemq.command.MessageId)>(v, v);
label:
return;
}
private static final boolean isAsync(org.apache.activemq.command.Message)
{
org.apache.activemq.command.Message v;
org.apache.activemq.command.MessageId v;
java.lang.Object v;
boolean v, v, v;
v := @parameter: org.apache.activemq.command.Message;
v = virtualinvoke v.<org.apache.activemq.command.Message: boolean isRecievedByDFBridge()>();
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = v instanceof java.util.concurrent.Future;
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private void pruneLastCached()
{
long v, v, v;
int v, v, v, v, v;
java.util.LinkedList v;
boolean v, v, v, v;
org.slf4j.Logger v;
java.util.Iterator v;
org.apache.activemq.command.MessageId v, v;
java.lang.Exception v;
java.util.concurrent.ExecutionException v;
java.util.concurrent.TimeUnit v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.apache.activemq.command.MessageId[] v, v;
java.lang.Object v, v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList pendingCachedIds>;
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()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = v instanceof java.util.concurrent.Future;
if v == 0 goto label;
v = interfaceinvoke v.<java.util.concurrent.Future: boolean isDone()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.concurrent.Future: boolean isCancelled()>();
if v == 0 goto label;
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get(long,java.util.concurrent.TimeUnit)>(0L, v);
label:
goto label;
label:
v := @caughtexception;
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("{} unexpected exception verifying exception state of future", v, v);
goto label;
label:
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setLastCachedId(int,org.apache.activemq.command.MessageId)>(v, v);
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = v[v];
if v == null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = v[v];
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = 1L + v;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = staticinvoke <java.lang.Long: int compare(long,long)>(v, v);
if v != 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setLastCachedId(int,org.apache.activemq.command.MessageId)>(v, v);
label:
interfaceinvoke v.<java.util.Iterator: void remove()>();
goto label;
label:
return;
catch java.util.concurrent.ExecutionException from label to label with label;
catch java.lang.Exception from label to label with label;
}
private void setLastCachedId(int, org.apache.activemq.command.MessageId)
{
long v, v;
int v, v;
java.lang.String v;
boolean v;
org.slf4j.Logger v, v;
org.apache.activemq.command.MessageId v, v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.apache.activemq.command.MessageId[] v, v, v, v;
java.lang.Object v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: int;
v := @parameter: org.apache.activemq.command.MessageId;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = v[v];
if v != null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v[v] = v;
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
if v != null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v[v] = v;
goto label;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = staticinvoke <java.lang.Long: int compare(long,long)>(v, v);
if v <= 0 goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v[v] = v;
goto label;
label:
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,java.lang.Object,java.lang.Object,org.apache.activemq.broker.region.cursors.AbstractStoreCursor)>(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[])>("no set last cached[\u] current:\u <= than candidate: \u, \u0001");
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>(v);
label:
return;
}
protected void setBatch(org.apache.activemq.command.MessageId) throws java.lang.Exception
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.apache.activemq.command.MessageId v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.command.MessageId;
return;
}
public synchronized void addMessageFirst(org.apache.activemq.broker.region.MessageReference) throws java.lang.Exception
{
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
int v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
v = v + 1;
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size> = v;
return;
}
public final synchronized void remove()
{
org.apache.activemq.broker.region.MessageReference v, v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.util.Iterator v, v;
int v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
v = v - 1;
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size> = v;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.Iterator iterator>;
interfaceinvoke v.<java.util.Iterator: void remove()>();
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.MessageReference last>;
if v == null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.MessageReference last>;
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
label:
return;
}
public final synchronized void remove(org.apache.activemq.broker.region.MessageReference)
{
org.apache.activemq.broker.region.MessageReference v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.apache.activemq.broker.region.cursors.PendingNode v;
org.apache.activemq.broker.region.cursors.PendingList v;
int v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v := @parameter: org.apache.activemq.broker.region.MessageReference;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: org.apache.activemq.broker.region.cursors.PendingNode remove(org.apache.activemq.broker.region.MessageReference)>(v);
if v == null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
v = v - 1;
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size> = v;
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setCacheEnabled(boolean)>(0);
label:
return;
}
public final synchronized void clear()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void gc()>();
return;
}
public synchronized void gc()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.util.Iterator v;
org.apache.activemq.broker.region.cursors.PendingList v, v;
org.apache.activemq.command.MessageId v;
java.lang.Object v;
boolean v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: 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 = interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: org.apache.activemq.command.MessageId getMessageId()>();
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void rollback(org.apache.activemq.command.MessageId)>(v);
interfaceinvoke v.<org.apache.activemq.broker.region.MessageReference: int decrementReferenceCount()>();
goto label;
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: void clear()>();
specialinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void clearIterator(boolean)>(0);
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean batchResetNeeded> = 1;
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setCacheEnabled(boolean)>(0);
return;
}
protected final synchronized void fillBatch()
{
org.slf4j.Logger v, v, v;
org.apache.activemq.broker.region.cursors.PendingList v;
java.lang.RuntimeException v;
java.lang.Exception v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
int v, v, v, v;
boolean v, v, v;
org.apache.activemq.broker.region.Destination v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("{} fillBatch", v);
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean batchResetNeeded>;
if v == 0 goto label;
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void resetSize()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.Destination regionDestination>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: int getMaxPageSize()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void setMaxBatchSize(int)>(v);
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void resetBatch()>();
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean batchResetNeeded> = 0;
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: boolean isEmpty()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
if v <= 0 goto label;
label:
virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: void doFillBatch()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("{} - Failed to fill batch", v, v);
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.lang.Exception from label to label with label;
}
public final synchronized boolean isEmpty()
{
int v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
boolean v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public final synchronized boolean hasMessagesBufferedToDeliver()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
org.apache.activemq.broker.region.cursors.PendingList v;
boolean v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.cursors.PendingList batchList>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.cursors.PendingList: boolean isEmpty()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public final synchronized int size()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
int v, v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
if v >= 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int getStoreSize()>();
v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size> = v;
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
return v;
}
public final synchronized long messageSize()
{
long v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: long getStoreMessageSize()>();
return v;
}
public java.lang.String toString()
{
boolean v, v, v;
org.apache.activemq.command.MessageId v, v, v, v, v, v;
org.apache.activemq.command.ActiveMQDestination v;
org.apache.activemq.command.MessageId[] v, v, v, v, v, v;
org.apache.activemq.broker.region.Destination v;
int v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v;
java.util.LinkedList v;
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
java.lang.Object v, v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
v = specialinvoke v.<java.lang.Object: java.lang.String toString()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.broker.region.Destination regionDestination>;
v = interfaceinvoke v.<org.apache.activemq.broker.region.Destination: org.apache.activemq.command.ActiveMQDestination getActiveMQDestination()>();
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: java.lang.String getPhysicalName()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean batchResetNeeded>;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int size>;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean cacheEnabled>;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int maxBatchSize>;
v = virtualinvoke v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: boolean hasSpace()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: java.util.LinkedList pendingCachedIds>;
v = virtualinvoke v.<java.util.LinkedList: int size()>();
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = v[v];
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = v[v];
if v == null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD>;
v = v[v];
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
goto label;
label:
v = "null";
label:
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
v = v[v];
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
v = v[v];
if v == null goto label;
v = v.<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.apache.activemq.command.MessageId[] lastCachedIds>;
v = <org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD>;
v = v[v];
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.Object getFutureOrSequenceLong()>();
goto label;
label:
v = "null";
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,boolean,int,boolean,int,boolean,int,org.apache.activemq.command.MessageId,java.lang.Object,org.apache.activemq.command.MessageId,java.lang.Object)>(v, v, v, v, v, v, v, v, v, v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001:\u,batchResetNeeded=\u,size=\u,cacheEnabled=\u,maxBatchSize:\u,hasSpace:\u,pendingCachedIds.size:\u,lastSyncCachedId:\u,lastSyncCachedId-seq:\u,lastAsyncCachedId:\u,lastAsyncCachedId-seq:\u0001");
return v;
}
protected abstract void doFillBatch() throws java.lang.Exception;
protected abstract void resetBatch();
protected abstract int getStoreSize();
protected abstract long getStoreMessageSize();
protected abstract boolean isStoreEmpty();
public org.apache.activemq.broker.region.Subscription getSubscription()
{
org.apache.activemq.broker.region.cursors.AbstractStoreCursor v;
v := @this: org.apache.activemq.broker.region.cursors.AbstractStoreCursor;
return null;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/broker/region/cursors/AbstractStoreCursor;");
<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: org.slf4j.Logger LOG> = v;
<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int SYNC_ADD> = 0;
<org.apache.activemq.broker.region.cursors.AbstractStoreCursor: int ASYNC_ADD> = 1;
return;
}
}