@ThreadSafe public class FileCache extends Object
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 and Description |
---|
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.
|
Modifier and Type | Method and Description |
---|---|
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.
|
void |
remove(Object hashKey)
Remove all instances of object from the cache
|
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.
|
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.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 nullIOException
- on errorpublic void remove(Object hashKey)
hashKey
- public 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 void showStats(Formatter format)
format
- add to thisCopyright © 1999–2013 UCAR/Unidata. All rights reserved.