public class org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender extends java.lang.Object implements org.apache.activemq.store.kahadb.disk.journal.FileAppender
{
private static final org.slf4j.Logger LOG;
private final org.apache.activemq.store.kahadb.disk.journal.Journal journal;
private final org.apache.activemq.store.kahadb.disk.journal.DataFile target;
private final java.util.Map inflightWrites;
private final int maxWriteBatchSize;
private boolean closed;
private boolean preallocate;
private org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch;
private int statIdx;
private int[] stats;
public void <init>(org.apache.activemq.store.kahadb.disk.journal.Journal, org.apache.activemq.store.kahadb.disk.journal.DataFile)
{
int[] v;
java.util.Map v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
int v, v;
org.apache.activemq.store.kahadb.disk.journal.DataFile v;
org.apache.activemq.store.kahadb.disk.journal.Journal v, v, v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v := @parameter: org.apache.activemq.store.kahadb.disk.journal.Journal;
v := @parameter: org.apache.activemq.store.kahadb.disk.journal.DataFile;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int statIdx> = 0;
v = <org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int maxStat>;
v = newarray (int)[v];
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int[] stats> = v;
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.Journal journal> = v;
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.DataFile target> = v;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: java.util.Map getInflightWrites()>();
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: java.util.Map inflightWrites> = v;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: int getWriteBatchSize()>();
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int maxWriteBatchSize> = v;
return;
}
public org.apache.activemq.store.kahadb.disk.journal.Location storeItem(org.apache.activemq.util.ByteSequence, byte, boolean) throws java.io.IOException
{
byte v;
org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
int v, v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
org.apache.activemq.util.ByteSequence v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v := @parameter: org.apache.activemq.util.ByteSequence;
v := @parameter: byte;
v := @parameter: boolean;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: void checkClosed()>();
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getLength()>();
v = v + 5;
v = new org.apache.activemq.store.kahadb.disk.journal.Location;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Location: void <init>()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Location: void setSize(int)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Location: void setType(byte)>(v);
v = new org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: void <init>(org.apache.activemq.store.kahadb.disk.journal.Location,org.apache.activemq.util.ByteSequence,boolean)>(v, v, v);
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch enqueueWrite(org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand)>(v);
if v == 0 goto label;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: void writePendingBatch()>();
label:
return v;
}
public org.apache.activemq.store.kahadb.disk.journal.Location storeItem(org.apache.activemq.util.ByteSequence, byte, java.lang.Runnable) throws java.io.IOException
{
java.lang.Runnable v;
byte v;
org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
int v, v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
org.apache.activemq.util.ByteSequence v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v := @parameter: org.apache.activemq.util.ByteSequence;
v := @parameter: byte;
v := @parameter: java.lang.Runnable;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: void checkClosed()>();
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getLength()>();
v = v + 5;
v = new org.apache.activemq.store.kahadb.disk.journal.Location;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Location: void <init>()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Location: void setSize(int)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Location: void setType(byte)>(v);
v = new org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: void <init>(org.apache.activemq.store.kahadb.disk.journal.Location,org.apache.activemq.util.ByteSequence,java.lang.Runnable)>(v, v, v);
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch enqueueWrite(org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand)>(v);
return v;
}
public void close() throws java.io.IOException
{
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch v;
org.slf4j.Logger v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: boolean closed>;
if v != 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
if v == null goto label;
v = <org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Close of targeted appender flushing last batch.");
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: void writePendingBatch()>();
label:
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: boolean closed> = 1;
label:
return;
}
public boolean isPreallocate()
{
boolean v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: boolean preallocate>;
return v;
}
public void setPreallocate(boolean)
{
boolean v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v := @parameter: boolean;
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: boolean preallocate> = v;
return;
}
private void checkClosed() throws java.io.IOException
{
java.io.IOException v;
boolean v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: boolean closed>;
if v == 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("The appender is clsoed");
throw v;
label:
return;
}
private org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch enqueueWrite(org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand) throws java.io.IOException
{
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch v, v, v, v, v;
org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand v;
java.util.Map v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
int v;
org.apache.activemq.store.kahadb.disk.journal.Journal$WriteKey v;
org.apache.activemq.store.kahadb.disk.journal.DataFile v, v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
boolean v, v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v := @parameter: org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand;
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
if v != null goto label;
v = new org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.DataFile target>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.DataFile target>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.DataFile: int getLength()>();
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: void <init>(org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender,org.apache.activemq.store.kahadb.disk.journal.DataFile,int,org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand)>(v, v, v, v);
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch> = v;
goto label;
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: boolean canAppend(org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand)>(v);
if v == 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: void append(org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand)>(v);
goto label;
label:
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: void writePendingBatch()>();
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch> = null;
goto label;
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: boolean sync>;
if v != 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: java.util.Map inflightWrites>;
v = new org.apache.activemq.store.kahadb.disk.journal.Journal$WriteKey;
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.store.kahadb.disk.journal.Location location>;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteKey: void <init>(org.apache.activemq.store.kahadb.disk.journal.Location)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
return v;
}
private void writePendingBatch() throws java.io.IOException
{
byte[] v, v, v, v, v, v, v, v;
java.lang.Integer v;
org.apache.activemq.store.kahadb.disk.util.LinkedNodeList v, v;
byte v, v;
java.lang.Long v;
org.apache.activemq.util.ByteSequence v, v, v, v;
org.apache.activemq.store.kahadb.disk.util.LinkedNode v, v;
java.lang.Throwable v, v;
long v, v, v, v;
org.apache.activemq.store.kahadb.disk.journal.ReplicationTarget v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
java.io.IOException v;
org.apache.activemq.store.kahadb.disk.journal.DataFile v;
org.apache.activemq.store.kahadb.disk.journal.Journal v, v, v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch v, v, v, v, v, v;
java.util.zip.Adler v;
int[] v, v;
org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream v;
org.apache.activemq.store.kahadb.disk.journal.Location v, v, v;
boolean v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.slf4j.Logger v, v;
org.apache.activemq.util.RecoverableRandomAccessFile v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: org.apache.activemq.store.kahadb.disk.journal.DataFile dataFile>;
label:
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.DataFile: org.apache.activemq.util.RecoverableRandomAccessFile openRandomAccessFile()>();
label:
v = new org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int maxWriteBatchSize>;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void <init>(int)>(v);
label:
v = virtualinvoke v.<org.apache.activemq.util.RecoverableRandomAccessFile: long length()>();
v = v cmp 0L;
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: boolean isPreallocate()>();
if v == 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: void preallocateEntireJournalDataFile(org.apache.activemq.util.RecoverableRandomAccessFile)>(v);
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: org.apache.activemq.store.kahadb.disk.util.LinkedNodeList writes>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.LinkedNodeList: org.apache.activemq.store.kahadb.disk.util.LinkedNode getHead()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void reset()>();
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: int BATCH_CONTROL_RECORD_SIZE>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void writeInt(int)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void writeByte(int)>(2);
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: byte[] BATCH_CONTROL_RECORD_MAGIC>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void write(byte[])>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void writeInt(int)>(0);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void writeLong(long)>(0L);
label:
if v == null goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.store.kahadb.disk.journal.Location location>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Location: int getSize()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void writeInt(int)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.store.kahadb.disk.journal.Location location>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Location: byte getType()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void writeByte(int)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.util.ByteSequence data>;
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: byte[] getData()>();
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.util.ByteSequence data>;
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getOffset()>();
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.util.ByteSequence data>;
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getLength()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void write(byte[],int,int)>(v, v, v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.store.kahadb.disk.util.LinkedNode getNext()>();
goto label;
label:
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: byte[] EOF_RECORD>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void write(byte[])>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: org.apache.activemq.util.ByteSequence toByteSequence()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void reset()>();
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: byte[] BATCH_CONTROL_RECORD_MAGIC>;
v = lengthof v;
v = 5 + v;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void skip(int)>(v);
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getLength()>();
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: int BATCH_CONTROL_RECORD_SIZE>;
v = v - v;
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: byte[] EOF_RECORD>;
v = lengthof v;
v = v - v;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void writeInt(int)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: boolean isChecksum()>();
if v == 0 goto label;
v = new java.util.zip.Adler;
specialinvoke v.<java.util.zip.Adler32: void <init>()>();
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: byte[] getData()>();
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getOffset()>();
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: int BATCH_CONTROL_RECORD_SIZE>;
v = v + v;
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getLength()>();
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: int BATCH_CONTROL_RECORD_SIZE>;
v = v - v;
v = <org.apache.activemq.store.kahadb.disk.journal.Journal: byte[] EOF_RECORD>;
v = lengthof v;
v = v - v;
interfaceinvoke v.<java.util.zip.Checksum: void update(byte[],int,int)>(v, v, v);
v = interfaceinvoke v.<java.util.zip.Checksum: long getValue()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void writeLong(long)>(v);
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: int offset>;
virtualinvoke v.<org.apache.activemq.util.RecoverableRandomAccessFile: void seek(long)>(v);
v = <org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int maxStat>;
if v <= 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int statIdx>;
v = <org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int maxStat>;
if v >= v goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int[] stats>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int statIdx>;
v = v + 1;
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int statIdx> = v;
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getLength()>();
v[v] = v;
goto label;
label:
v = 0L;
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int statIdx>;
if v <= 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int[] stats>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int statIdx>;
v = v - 1;
v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int statIdx> = v;
v = v[v];
v = v + v;
goto label;
label:
v = <org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.slf4j.Logger LOG>;
v = <org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: int maxStat>;
v = v / v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Ave writeSize: {}", v);
label:
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: byte[] getData()>();
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getOffset()>();
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getLength()>();
virtualinvoke v.<org.apache.activemq.util.RecoverableRandomAccessFile: void write(byte[],int,int)>(v, v, v);
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.Journal journal>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal: org.apache.activemq.store.kahadb.disk.journal.ReplicationTarget getReplicationTarget()>();
if v == null goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: org.apache.activemq.store.kahadb.disk.util.LinkedNodeList writes>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.LinkedNodeList: org.apache.activemq.store.kahadb.disk.util.LinkedNode getHead()>();
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.store.kahadb.disk.journal.Location location>;
interfaceinvoke v.<org.apache.activemq.store.kahadb.disk.journal.ReplicationTarget: void replicate(org.apache.activemq.store.kahadb.disk.journal.Location,org.apache.activemq.util.ByteSequence,boolean)>(v, v, 1);
label:
virtualinvoke v.<org.apache.activemq.util.RecoverableRandomAccessFile: void sync()>();
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: void signalDone(org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch)>(v);
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
virtualinvoke v.<org.apache.activemq.util.RecoverableRandomAccessFile: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = <org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch nextWriteBatch>;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: int offset>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Journal failed while writing at: {}", 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.io.IOException from label to label with label;
}
private void signalDone(org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch)
{
java.lang.Throwable v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch v;
org.slf4j.Logger v;
java.lang.Runnable v, v;
org.apache.activemq.store.kahadb.disk.util.LinkedNodeList v;
java.util.Map v;
org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender v;
org.apache.activemq.store.kahadb.disk.journal.Journal$WriteKey v;
org.apache.activemq.store.kahadb.disk.util.LinkedNode v;
org.apache.activemq.store.kahadb.disk.journal.Location v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender;
v := @parameter: org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender$WriteBatch: org.apache.activemq.store.kahadb.disk.util.LinkedNodeList writes>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.LinkedNodeList: org.apache.activemq.store.kahadb.disk.util.LinkedNode getHead()>();
label:
if v == null goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: boolean sync>;
if v != 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: java.util.Map inflightWrites>;
v = new org.apache.activemq.store.kahadb.disk.journal.Journal$WriteKey;
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.store.kahadb.disk.journal.Location location>;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteKey: void <init>(org.apache.activemq.store.kahadb.disk.journal.Location)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: java.lang.Runnable onComplete>;
if v == null goto label;
label:
v = v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: java.lang.Runnable onComplete>;
interfaceinvoke v.<java.lang.Runnable: void run()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Throwable)>("Add exception was raised while executing the run command for onComplete", v);
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.journal.Journal$WriteCommand: org.apache.activemq.store.kahadb.disk.util.LinkedNode getNext()>();
goto label;
label:
return;
catch java.lang.Throwable from label to label with label;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/store/kahadb/disk/journal/TargetedDataFileAppender;");
<org.apache.activemq.store.kahadb.disk.journal.TargetedDataFileAppender: org.slf4j.Logger LOG> = v;
return;
}
}