public class JRSwapFile extends Object
Fixed-size blocks are allocated inside the swap file when a caller wants to write data. The caller receives a handle to the allocated area based on which it can read the data or free the area.
The implementation is thread-safe. I/O operations are performed in synchronized blocks, only one thread would do a read or write at one moment.
Modifier and Type | Class and Description |
---|---|
protected static class |
JRSwapFile.LongQueue |
static class |
JRSwapFile.SwapHandle |
Modifier and Type | Field and Description |
---|---|
protected RandomAccessFile |
file |
static String |
PROPERTY_DELETE_ON_EXIT
Property that instructs whether
deleteOnExit is to be requested
for swap files. |
protected File |
swapFile |
Constructor and Description |
---|
JRSwapFile(JasperReportsContext jasperReportsContext,
String directory,
int blockSize,
int minGrowCount)
Creates a swap file.
|
JRSwapFile(String directory,
int blockSize,
int minGrowCount)
Creates a swap file.
|
Modifier and Type | Method and Description |
---|---|
void |
dispose()
Closes and deletes the swap file.
|
protected void |
finalize() |
void |
free(JRSwapFile.SwapHandle handle)
Frees an allocated area.
|
protected void |
freeBlocks(long[] offsets) |
protected void |
read(byte[] data,
int dataOffset,
int dataLength,
long fileOffset) |
byte[] |
read(JRSwapFile.SwapHandle handle,
boolean free)
Reads all the data from an allocated area.
|
protected long[] |
reserveFreeBlocks(int blockCount) |
String |
toString() |
JRSwapFile.SwapHandle |
write(byte[] data)
Allocates an area in the swap file and writes data in it.
|
protected void |
write(byte[] data,
int dataSize,
int dataOffset,
long fileOffset) |
public static final String PROPERTY_DELETE_ON_EXIT
deleteOnExit
is to be requested
for swap files.
Swap files are explicitly deleted on dispose()
and garbage collection.protected final File swapFile
protected final RandomAccessFile file
public JRSwapFile(String directory, int blockSize, int minGrowCount)
directory
- the directory where the file should be created.blockSize
- the size of the blocks allocated by the swap fileminGrowCount
- the minimum number of blocks by which the swap file grows when fullpublic JRSwapFile(JasperReportsContext jasperReportsContext, String directory, int blockSize, int minGrowCount)
jasperReportsContext
- the JasperReportsContext to read configuration from.directory
- the directory where the file should be created.blockSize
- the size of the blocks allocated by the swap fileminGrowCount
- the minimum number of blocks by which the swap file grows when fullpublic JRSwapFile.SwapHandle write(byte[] data) throws IOException
data
- the data for which to allocate an area in the fileIOException
protected void write(byte[] data, int dataSize, int dataOffset, long fileOffset) throws IOException
IOException
public byte[] read(JRSwapFile.SwapHandle handle, boolean free) throws IOException
handle
- the allocated area handlefree
- whether to free the area after readingIOException
protected void read(byte[] data, int dataOffset, int dataLength, long fileOffset) throws IOException
IOException
public void free(JRSwapFile.SwapHandle handle)
handle
- the allocated area handlepublic void dispose()
protected void finalize() throws Throwable
protected long[] reserveFreeBlocks(int blockCount) throws IOException
IOException
protected void freeBlocks(long[] offsets)
Copyright © 2017. All rights reserved.