public class org.apache.activemq.store.kahadb.disk.page.Transaction extends java.lang.Object implements java.lang.Iterable
{
private static final org.slf4j.Logger LOG;
private java.io.RandomAccessFile tmpFile;
private java.io.File txFile;
private long nextLocation;
private final org.apache.activemq.store.kahadb.disk.page.PageFile pageFile;
private long writeTransactionId;
private java.util.TreeMap writes;
private final org.apache.activemq.store.kahadb.disk.util.SequenceSet allocateList;
private final org.apache.activemq.store.kahadb.disk.util.SequenceSet freeList;
private long maxTransactionSize;
private long size;
void <init>(org.apache.activemq.store.kahadb.disk.page.PageFile)
{
java.util.TreeMap v;
java.lang.Long v;
org.apache.activemq.store.kahadb.disk.util.SequenceSet v, v;
long v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.PageFile;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long nextLocation> = 0L;
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId> = -1L;
v = new java.util.TreeMap;
specialinvoke v.<java.util.TreeMap: void <init>()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.util.TreeMap writes> = v;
v = new org.apache.activemq.store.kahadb.disk.util.SequenceSet;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: void <init>()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet allocateList> = v;
v = new org.apache.activemq.store.kahadb.disk.util.SequenceSet;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: void <init>()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet freeList> = v;
v = staticinvoke <java.lang.Long: java.lang.Long getLong(java.lang.String,long)>("maxKahaDBTxSize", 10485760L);
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long maxTransactionSize> = v;
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long size> = 0L;
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile> = v;
return;
}
public org.apache.activemq.store.kahadb.disk.page.PageFile getPageFile()
{
org.apache.activemq.store.kahadb.disk.page.PageFile v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
return v;
}
public org.apache.activemq.store.kahadb.disk.page.Page allocate() throws java.io.IOException
{
org.apache.activemq.store.kahadb.disk.page.Transaction v;
org.apache.activemq.store.kahadb.disk.page.Page v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.Page allocate(int)>(1);
return v;
}
public org.apache.activemq.store.kahadb.disk.page.Page allocate(int) throws java.io.IOException
{
org.apache.activemq.store.kahadb.disk.util.Sequence v;
org.apache.activemq.store.kahadb.disk.util.SequenceSet v;
long v, v, v, v;
org.apache.activemq.store.kahadb.disk.page.Page v;
int v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: int;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: org.apache.activemq.store.kahadb.disk.page.Page allocate(int)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet allocateList>;
v = new org.apache.activemq.store.kahadb.disk.util.Sequence;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: long getPageId()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: long getPageId()>();
v = v + v;
v = v - 1L;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.util.Sequence: void <init>(long,long)>(v, v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: void add(org.apache.activemq.store.kahadb.disk.util.Sequence)>(v);
return v;
}
public void free(long) throws java.io.IOException
{
long v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
org.apache.activemq.store.kahadb.disk.page.Page v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: long;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.Page load(long,org.apache.activemq.store.kahadb.disk.util.Marshaller)>(v, null);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void free(org.apache.activemq.store.kahadb.disk.page.Page)>(v);
return;
}
public void free(long, int) throws java.io.IOException
{
int v;
long v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
org.apache.activemq.store.kahadb.disk.page.Page v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: long;
v := @parameter: int;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.Page load(long,org.apache.activemq.store.kahadb.disk.util.Marshaller)>(v, null);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void free(org.apache.activemq.store.kahadb.disk.page.Page,int)>(v, v);
return;
}
public void free(org.apache.activemq.store.kahadb.disk.page.Page, int) throws java.io.IOException
{
int v, v;
long v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
org.apache.activemq.store.kahadb.disk.page.Page v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Page;
v := @parameter: int;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void assertLoaded()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: long getPageId()>();
label:
v = v;
v = v - 1;
if v <= 0 goto label;
if v != null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.Page load(long,org.apache.activemq.store.kahadb.disk.util.Marshaller)>(v, null);
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void free(org.apache.activemq.store.kahadb.disk.page.Page)>(v);
v = null;
v = v + 1L;
goto label;
label:
return;
}
public void free(org.apache.activemq.store.kahadb.disk.page.Page) throws java.io.IOException
{
byte[] v;
org.apache.activemq.store.kahadb.disk.util.SequenceSet v;
long v, v, v;
short v, v;
int v;
org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream v;
org.apache.activemq.store.kahadb.disk.page.PageFile v, v, v;
org.apache.activemq.store.kahadb.disk.page.Page v, v, v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Page;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void assertLoaded()>();
label:
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: short getType()>();
if v != 0 goto label;
return;
label:
v = null;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: short getType()>();
if v != 1 goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: long getNext()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.Page load(long,org.apache.activemq.store.kahadb.disk.util.Marshaller)>(v, null);
label:
v = specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long getWriteTransactionId()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: void makeFree(long)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: org.apache.activemq.store.kahadb.disk.page.Page copy()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void addToCache(org.apache.activemq.store.kahadb.disk.page.Page)>(v);
v = new org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: int getPageSize()>();
specialinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void <init>(int)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: void write(java.io.DataOutput)>(v);
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: byte[] getData()>();
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void write(org.apache.activemq.store.kahadb.disk.page.Page,byte[])>(v, v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet freeList>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: long getPageId()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: boolean add(long)>(v);
v = v;
goto label;
label:
return;
}
public void store(org.apache.activemq.store.kahadb.disk.page.Page, org.apache.activemq.store.kahadb.disk.util.Marshaller, boolean) throws java.io.IOException
{
java.io.OutputStream v;
org.apache.activemq.store.kahadb.disk.util.Marshaller v;
java.lang.Object v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
boolean v;
org.apache.activemq.store.kahadb.disk.page.Page v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Page;
v := @parameter: org.apache.activemq.store.kahadb.disk.util.Marshaller;
v := @parameter: boolean;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.OutputStream openOutputStream(org.apache.activemq.store.kahadb.disk.page.Page,boolean)>(v, v);
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: java.lang.Object get()>();
interfaceinvoke v.<org.apache.activemq.store.kahadb.disk.util.Marshaller: void writePayload(java.lang.Object,java.io.DataOutput)>(v, v);
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void close()>();
return;
}
public java.io.OutputStream openOutputStream(org.apache.activemq.store.kahadb.disk.page.Page, boolean) throws java.io.IOException
{
org.apache.activemq.store.kahadb.disk.page.Transaction$1 v;
org.apache.activemq.store.kahadb.disk.page.Page v, v;
int v, v;
org.apache.activemq.store.kahadb.disk.page.PageFile v, v, v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Page;
v := @parameter: boolean;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void assertLoaded()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: org.apache.activemq.store.kahadb.disk.page.Page copy()>();
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void addToCache(org.apache.activemq.store.kahadb.disk.page.Page)>(v);
v = new org.apache.activemq.store.kahadb.disk.page.Transaction$1;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: int getPageSize()>();
v = v * 2;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction$1: void <init>(org.apache.activemq.store.kahadb.disk.page.Transaction,int,org.apache.activemq.store.kahadb.disk.page.Page,boolean)>(v, v, v, v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayOutputStream: void skip(int)>(21);
return v;
}
public org.apache.activemq.store.kahadb.disk.page.Page load(long, org.apache.activemq.store.kahadb.disk.util.Marshaller) throws java.io.IOException
{
org.apache.activemq.store.kahadb.disk.util.Marshaller v;
long v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
org.apache.activemq.store.kahadb.disk.page.Page v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: long;
v := @parameter: org.apache.activemq.store.kahadb.disk.util.Marshaller;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void assertLoaded()>();
v = new org.apache.activemq.store.kahadb.disk.page.Page;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: void <init>(long)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void load(org.apache.activemq.store.kahadb.disk.page.Page,org.apache.activemq.store.kahadb.disk.util.Marshaller)>(v, v);
return v;
}
public void load(org.apache.activemq.store.kahadb.disk.page.Page, org.apache.activemq.store.kahadb.disk.util.Marshaller) throws java.io.IOException
{
byte[] v, v;
java.io.DataInputStream v;
org.apache.activemq.store.kahadb.disk.page.Transaction$InvalidPageIOException v;
long v;
byte v;
java.lang.Long v;
org.apache.activemq.store.kahadb.disk.util.Marshaller v;
org.apache.activemq.store.kahadb.disk.page.PageFile v, v, v, v;
org.apache.activemq.store.kahadb.disk.page.Page v, v, v;
java.util.TreeMap v;
java.lang.Object v, v;
org.apache.activemq.store.kahadb.disk.util.DataByteArrayInputStream v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
java.io.InputStream v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Page;
v := @parameter: org.apache.activemq.store.kahadb.disk.util.Marshaller;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void assertLoaded()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: long getPageId()>();
v = v cmp 0L;
if v >= 0 goto label;
v = new org.apache.activemq.store.kahadb.disk.page.Transaction$InvalidPageIOException;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction$InvalidPageIOException: void <init>(org.apache.activemq.store.kahadb.disk.page.Transaction,java.lang.String,long)>(v, "Page id is not valid", v);
throw v;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.util.TreeMap writes>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = virtualinvoke v.<java.util.TreeMap: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile$PageWrite: org.apache.activemq.store.kahadb.disk.page.Page getPage()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: org.apache.activemq.store.kahadb.disk.page.Page copy(org.apache.activemq.store.kahadb.disk.page.Page)>(v);
return;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: org.apache.activemq.store.kahadb.disk.page.Page getFromCache(long)>(v);
if v == null goto label;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: org.apache.activemq.store.kahadb.disk.page.Page copy(org.apache.activemq.store.kahadb.disk.page.Page)>(v);
return;
label:
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.InputStream openInputStream(org.apache.activemq.store.kahadb.disk.page.Page)>(v);
v = new java.io.DataInputStream;
specialinvoke v.<java.io.DataInputStream: void <init>(java.io.InputStream)>(v);
v = interfaceinvoke v.<org.apache.activemq.store.kahadb.disk.util.Marshaller: java.lang.Object readPayload(java.io.DataInput)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: void set(java.lang.Object)>(v);
virtualinvoke v.<java.io.InputStream: void close()>();
goto label;
label:
v = new org.apache.activemq.store.kahadb.disk.util.DataByteArrayInputStream;
v = newarray (byte)[21];
specialinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayInputStream: void <init>(byte[])>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.DataByteArrayInputStream: byte[] getRawData()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void readPage(long,byte[])>(v, v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: void read(java.io.DataInput)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: void set(java.lang.Object)>(null);
label:
if v == null goto label;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void addToCache(org.apache.activemq.store.kahadb.disk.page.Page)>(v);
label:
return;
}
public java.io.InputStream openInputStream(org.apache.activemq.store.kahadb.disk.page.Page) throws java.io.IOException
{
org.apache.activemq.store.kahadb.disk.page.Transaction$2 v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
org.apache.activemq.store.kahadb.disk.page.Page v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Page;
v = new org.apache.activemq.store.kahadb.disk.page.Transaction$2;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction$2: void <init>(org.apache.activemq.store.kahadb.disk.page.Transaction,org.apache.activemq.store.kahadb.disk.page.Page)>(v, v);
return v;
}
public java.util.Iterator iterator()
{
java.util.Iterator v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.util.Iterator iterator(boolean)>(0);
return v;
}
public java.util.Iterator iterator(boolean)
{
org.apache.activemq.store.kahadb.disk.page.Transaction$3 v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: boolean;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void assertLoaded()>();
v = new org.apache.activemq.store.kahadb.disk.page.Transaction$3;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction$3: void <init>(org.apache.activemq.store.kahadb.disk.page.Transaction,boolean)>(v, v);
return v;
}
public void commit() throws java.io.IOException
{
java.io.RandomAccessFile v, v, v;
org.apache.activemq.store.kahadb.disk.util.SequenceSet v, v, v, v;
long v, v, v, v;
byte v;
java.lang.Long v, v;
org.apache.activemq.store.kahadb.disk.page.PageFile v, v;
org.slf4j.Logger v;
java.util.Set v;
java.io.File v;
java.util.TreeMap v, v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId>;
v = v cmp -1L;
if v == 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile>;
if v == null goto label;
v = <org.apache.activemq.store.kahadb.disk.page.Transaction: org.slf4j.Logger LOG>;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile>;
v = virtualinvoke v.<java.io.RandomAccessFile: long length()>();
v = v / 1024L;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Committing transaction {}: Size {} kb", v, v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File getTempFile()>();
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void removeTmpFile(java.io.File,java.io.RandomAccessFile)>(v, v);
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile> = null;
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File txFile> = null;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.util.TreeMap writes>;
v = virtualinvoke v.<java.util.TreeMap: java.util.Set entrySet()>();
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: void write(java.util.Collection)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet freeList>;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void freePages(org.apache.activemq.store.kahadb.disk.util.SequenceSet)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet freeList>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: void clear()>();
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet allocateList>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: void clear()>();
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.util.TreeMap writes>;
virtualinvoke v.<java.util.TreeMap: void clear()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId> = -1L;
goto label;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet allocateList>;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void freePages(org.apache.activemq.store.kahadb.disk.util.SequenceSet)>(v);
label:
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long size> = 0L;
return;
}
public void rollback() throws java.io.IOException
{
java.io.RandomAccessFile v, v;
org.apache.activemq.store.kahadb.disk.util.SequenceSet v, v, v, v;
long v;
java.io.File v;
byte v;
java.util.TreeMap v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId>;
v = v cmp -1L;
if v == 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile>;
if v == null goto label;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile>;
virtualinvoke v.<java.io.RandomAccessFile: void close()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File getTempFile()>();
virtualinvoke v.<java.io.File: boolean delete()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile> = null;
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File txFile> = null;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet allocateList>;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void freePages(org.apache.activemq.store.kahadb.disk.util.SequenceSet)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet freeList>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: void clear()>();
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet allocateList>;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: void clear()>();
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.util.TreeMap writes>;
virtualinvoke v.<java.util.TreeMap: void clear()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId> = -1L;
goto label;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.util.SequenceSet allocateList>;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void freePages(org.apache.activemq.store.kahadb.disk.util.SequenceSet)>(v);
label:
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long size> = 0L;
return;
}
private long getWriteTransactionId()
{
byte v;
long v, v, v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId>;
v = v cmp -1L;
if v != 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: long getNextWriteTransactionId()>();
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId> = v;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId>;
return v;
}
protected java.io.File getTempFile()
{
long v, v;
java.io.File v, v, v, v;
java.lang.String v, v, v, v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File txFile>;
if v != null goto label;
v = new java.io.File;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile getPageFile()>();
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: java.io.File getDirectory()>();
v = specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long getWriteTransactionId()>();
v = staticinvoke <java.lang.Long: java.lang.String toString(long)>(v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = staticinvoke <java.lang.Long: java.lang.String toString(long)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,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[])>("tx-\u0001-\u.tmp");
v = staticinvoke <org.apache.activemq.util.IOHelper: java.lang.String toFileSystemSafeName(java.lang.String)>(v);
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File txFile> = v;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File txFile>;
return v;
}
private void write(org.apache.activemq.store.kahadb.disk.page.Page, byte[]) throws java.io.IOException
{
byte[] v;
java.io.RandomAccessFile v, v, v, v;
long v, v, v, v, v, v, v;
byte v;
java.lang.Long v;
int v, v, v, v;
org.apache.activemq.store.kahadb.disk.page.PageFile v;
java.io.File v, v;
org.apache.activemq.store.kahadb.disk.page.Page v;
java.util.TreeMap v, v;
org.apache.activemq.store.kahadb.disk.page.PageFile$PageWrite v, v, v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Page;
v := @parameter: byte[];
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Page: long getPageId()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.util.TreeMap writes>;
v = virtualinvoke v.<java.util.TreeMap: int size()>();
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: org.apache.activemq.store.kahadb.disk.page.PageFile pageFile>;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile: int getPageSize()>();
v = v * v;
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long size> = v;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long size>;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long maxTransactionSize>;
v = v cmp v;
if v <= 0 goto label;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile>;
if v != null goto label;
v = new java.io.RandomAccessFile;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File getTempFile()>();
specialinvoke v.<java.io.RandomAccessFile: void <init>(java.io.File,java.lang.String)>(v, "rw");
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile> = v;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long nextLocation>;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile>;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long nextLocation>;
virtualinvoke v.<java.io.RandomAccessFile: void seek(long)>(v);
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.RandomAccessFile tmpFile>;
virtualinvoke v.<java.io.RandomAccessFile: void write(byte[])>(v);
v = lengthof v;
v = v + v;
v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long nextLocation> = v;
v = new org.apache.activemq.store.kahadb.disk.page.PageFile$PageWrite;
v = lengthof v;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.io.File getTempFile()>();
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile$PageWrite: void <init>(org.apache.activemq.store.kahadb.disk.page.Page,long,int,java.io.File)>(v, v, v, v);
v = v;
goto label;
label:
v = new org.apache.activemq.store.kahadb.disk.page.PageFile$PageWrite;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.PageFile$PageWrite: void <init>(org.apache.activemq.store.kahadb.disk.page.Page,byte[])>(v, v);
v = v;
label:
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: java.util.TreeMap writes>;
virtualinvoke v.<java.util.TreeMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
return;
}
private void freePages(org.apache.activemq.store.kahadb.disk.util.SequenceSet) throws java.lang.RuntimeException
{
org.apache.activemq.store.kahadb.disk.util.SequenceSet v;
org.apache.activemq.store.kahadb.disk.page.Transaction$4 v;
org.apache.activemq.store.kahadb.disk.util.LinkedNode v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.util.SequenceSet;
v = virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.SequenceSet: org.apache.activemq.store.kahadb.disk.util.LinkedNode getHead()>();
label:
if v == null goto label;
v = new org.apache.activemq.store.kahadb.disk.page.Transaction$4;
specialinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction$4: void <init>(org.apache.activemq.store.kahadb.disk.page.Transaction)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.Sequence: void each(org.apache.activemq.store.kahadb.disk.util.Sequence$Closure)>(v);
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.util.Sequence: org.apache.activemq.store.kahadb.disk.util.LinkedNode getNext()>();
goto label;
label:
return;
}
public boolean isReadOnly()
{
byte v;
long v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
boolean v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v = v.<org.apache.activemq.store.kahadb.disk.page.Transaction: long writeTransactionId>;
v = v cmp -1L;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void execute(org.apache.activemq.store.kahadb.disk.page.Transaction$Closure) throws java.lang.Throwable, java.io.IOException
{
java.lang.Throwable v;
org.apache.activemq.store.kahadb.disk.page.Transaction$Closure v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Transaction$Closure;
label:
interfaceinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction$Closure: void execute(org.apache.activemq.store.kahadb.disk.page.Transaction)>(v);
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void commit()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void rollback()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public java.lang.Object execute(org.apache.activemq.store.kahadb.disk.page.Transaction$CallableClosure) throws java.lang.Throwable, java.io.IOException
{
java.lang.Throwable v;
java.lang.Object v;
org.apache.activemq.store.kahadb.disk.page.Transaction v;
org.apache.activemq.store.kahadb.disk.page.Transaction$CallableClosure v;
v := @this: org.apache.activemq.store.kahadb.disk.page.Transaction;
v := @parameter: org.apache.activemq.store.kahadb.disk.page.Transaction$CallableClosure;
label:
v = interfaceinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction$CallableClosure: java.lang.Object execute(org.apache.activemq.store.kahadb.disk.page.Transaction)>(v);
label:
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void commit()>();
return v;
label:
v := @caughtexception;
virtualinvoke v.<org.apache.activemq.store.kahadb.disk.page.Transaction: void rollback()>();
throw v;
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/page/Transaction;");
<org.apache.activemq.store.kahadb.disk.page.Transaction: org.slf4j.Logger LOG> = v;
return;
}
}