## org.das2.qds.ReferenceCache

Provide a cache of datasets that are in memory, so that the same data is not loaded twice. This first implementation uses WeakReferences, so that this cache need not be emptied, but we will avoid the situation where the same data is loaded twice.

## getDataSet

getDataSet( String uri ) → QDataSet

Query to see if the dataset exists in the cache. Null is returned if it is not, or a QDataSet is returned if it is.

### Parameters

uri - the URI that can be resolved into a dataset.

### Returns:

the dataset or null
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getDataSetOrLock

getDataSetOrLock( String uri, ProgressMonitor monitor ) → org.das2.qds.ReferenceCache.ReferenceCacheEntry

Get a ReferenceCacheEntry for the URI, which will indicate the thread which has been designated as the load thread.

>     rcent= ReferenceCache.getInstance().getDataSetOrLock( this.tsb.getURI(), mon);
>     if ( !rcent.shouldILoad( Thread.currentThread() ) ) {
>        QDataSet result= rcent.park( mon );

Be sure to use try/finally when using this cache!

### Parameters

uri - the URI to load.
monitor - to monitor the load.

### Returns:

the ReferenceCacheEntry
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getInstance

getInstance( ) → org.das2.qds.ReferenceCache

get the single instance of the ReferenceCache

### Returns:

an org.das2.qds.ReferenceCache
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## park

park( org.das2.qds.ReferenceCache.ReferenceCacheEntry ent, ProgressMonitor monitor ) → void

park this thread until the other guy has finished loading.

### Parameters

ent - a ReferenceCache.ReferenceCacheEntry
monitor - the monitor of the load.

### Returns:

void (returns nothing)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## printStatus

printStatus( ) → void

display the status of all the entries.

### Returns:

void (returns nothing)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## putDataSet

putDataSet( String uri, QDataSet ds ) → void

put the dataset into the ReferenceCache. If it is mutable, then a copy is made.

### Parameters

uri - a String
ds - a QDataSet

### Returns:

void (returns nothing)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## reset

reset( ) → void

explicitly remove entries from the cache.

### Returns:

void (returns nothing)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## tidy

tidy( ) → void

remove all the entries that have been garbage collected.

### Returns:

void (returns nothing)
[search for examples] [view on GitHub] [view on old javadoc] [view source]