|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectucar.nc2.util.cache.FileCache
@ThreadSafe public class FileCache
Keep cache of open FileCacheable objects, for example NetcdfFile. The FileCacheable object typically contains a RandomAccessFile object that wraps a system resource like a file handle. These are left open when the NetcdfFile is in the cache. The maximum number of these is bounded, though not strictly. A cleanup routine reduces cache size to a minimum number. This cleanup is called periodically in a background thread, and also when the maximum cache size is reached.
NetcdfDataset.initNetcdfFileCache(...); // on application startup ... NetcdfFile ncfile = null; try { ncfile = NetcdfDataset.acquireFile(location, cancelTask); ... } finally { if (ncfile != null) ncfile.close(); } ... NetcdfDataset.shutdown(); // when terminating the applicationAll methods are thread safe. Cleanup is done automatically in a background thread, using LRU algorithm.
Constructor Summary | |
---|---|
FileCache(int minElementsInMemory,
int maxElementsInMemory,
int period)
Constructor. |
|
FileCache(int minElementsInMemory,
int softLimit,
int hardLimit,
int period)
Constructor. |
|
FileCache(String name,
int minElementsInMemory,
int softLimit,
int hardLimit,
int period)
Constructor. |
Method Summary | |
---|---|
FileCacheable |
acquire(FileFactory factory,
Object hashKey,
String location,
int buffer_size,
CancelTask cancelTask,
Object spiObject)
Acquire a FileCacheable from the cache, and lock it so no one else can use it. |
FileCacheable |
acquire(FileFactory factory,
String location,
CancelTask cancelTask)
Acquire a FileCacheable, and lock it so no one else can use it. |
void |
clearCache(boolean force)
Remove all cache entries. |
void |
disable()
Disable the cache, and force release all files. |
void |
enable()
Enable the cache, with the current set of parameters. |
String |
getInfo(FileCacheable ncfile)
|
void |
release(FileCacheable ncfile)
Release the file. |
List<String> |
showCache()
|
void |
showCache(Formatter format)
Show individual cache entries, add to formatter. |
void |
showStats(Formatter format)
Add stat report (hits, misses, etc) to formatter. |
static void |
shutdown()
You must call shutdown() to shut down the background threads in order to get a clean process shutdown. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public FileCache(int minElementsInMemory, int maxElementsInMemory, int period)
minElementsInMemory
- keep this number in the cachemaxElementsInMemory
- trigger a cleanup if it goes over this number.period
- (secs) do periodic cleanups every this number of seconds.public FileCache(int minElementsInMemory, int softLimit, int hardLimit, int period)
minElementsInMemory
- keep this number in the cachesoftLimit
- trigger a cleanup if it goes over this number.hardLimit
- if > 0, never allow more than this many elements. This causes a cleanup to be done in the calling thread.period
- if > 0, do periodic cleanups every this number of seconds.public FileCache(String name, int minElementsInMemory, int softLimit, int hardLimit, int period)
name
- of file cacheminElementsInMemory
- keep this number in the cachesoftLimit
- trigger a cleanup if it goes over this number.hardLimit
- if > 0, never allow more than this many elements. This causes a cleanup to be done in the calling thread.period
- if > 0, do periodic cleanups every this number of seconds.Method Detail |
---|
public static void shutdown()
public void disable()
public void enable()
public FileCacheable acquire(FileFactory factory, String location, CancelTask cancelTask) throws IOException
factory
- use this factory to open the file; may not be nulllocation
- file location, also used as the cache name, will be passed to the NetcdfFileFactorycancelTask
- user can cancel, ok to be null.
IOException
- on errorpublic FileCacheable acquire(FileFactory factory, Object hashKey, String location, int buffer_size, CancelTask cancelTask, Object spiObject) throws IOException
factory
- use this factory to open the file if not in the cache; may not be nullhashKey
- unique key for this file. If null, the location will be usedlocation
- file location, may also used as the cache name, will be passed to the NetcdfFileFactorybuffer_size
- RandomAccessFile buffer size, if <= 0, use default sizecancelTask
- user can cancel, ok to be null.spiObject
- sent to iosp.setSpecial() if not null
IOException
- on errorpublic void release(FileCacheable ncfile) throws IOException
ncfile
- release this file.
IOException
- if file not in cache.public String getInfo(FileCacheable ncfile) throws IOException
IOException
public void clearCache(boolean force)
force
- if true, remove them even if they are currently locked.public void showCache(Formatter format)
format
- add to thispublic List<String> showCache()
public void showStats(Formatter format)
format
- add to this
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |