public class MemorySegmentCache extends Object implements SegmentCache
SegmentCache
that stores segments
in memory.
Segments are held via soft references, so the garbage collector can remove them if it sees fit.
SegmentCache.SegmentCacheInjector, SegmentCache.SegmentCacheListener
Constructor and Description |
---|
MemorySegmentCache() |
Modifier and Type | Method and Description |
---|---|
void |
addListener(SegmentCache.SegmentCacheListener listener)
Adds a listener to this segment cache implementation.
|
boolean |
contains(SegmentHeader header) |
void |
fireSegmentCacheEvent(SegmentCache.SegmentCacheListener.SegmentCacheEvent evt) |
SegmentBody |
get(SegmentHeader header)
Returns a SegmentBody once the
cache has returned any results, or null if no
segment corresponding to the header could be found.
|
List<SegmentHeader> |
getSegmentHeaders()
Returns a list of all segments present in the cache.
|
boolean |
put(SegmentHeader header,
SegmentBody body)
Stores a segment data in the cache.
|
boolean |
remove(SegmentHeader header)
Removes a segment from the cache.
|
void |
removeListener(SegmentCache.SegmentCacheListener listener)
Unregisters a listener from this segment cache implementation.
|
boolean |
supportsRichIndex()
Tells Mondrian whether this segment cache uses the
SegmentHeader
objects as an index, thus preserving them in a serialized state, or if
it uses its identification number only. |
void |
tearDown()
Tear down and clean up the cache.
|
public SegmentBody get(SegmentHeader header)
SegmentCache
Cache implementations are at liberty to 'forget' segments. Therefore it is allowable for this method to return null at any time
get
in interface SegmentCache
header
- The header of the segment to find.
Consider this as a key.null
if no corresponding segment could be found in cache.public boolean contains(SegmentHeader header)
public List<SegmentHeader> getSegmentHeaders()
SegmentCache
getSegmentHeaders
in interface SegmentCache
public boolean put(SegmentHeader header, SegmentBody body)
SegmentCache
put
in interface SegmentCache
header
- The header of the segment.body
- The segment body to cache.public boolean remove(SegmentHeader header)
SegmentCache
remove
in interface SegmentCache
header
- The header of the segment we want to remove.public void tearDown()
SegmentCache
tearDown
in interface SegmentCache
public void addListener(SegmentCache.SegmentCacheListener listener)
SegmentCache
SegmentCache.SegmentCacheListener.SegmentCacheEvent
instances.addListener
in interface SegmentCache
listener
- The listener to attach to this cache.public void removeListener(SegmentCache.SegmentCacheListener listener)
SegmentCache
removeListener
in interface SegmentCache
listener
- The listener to remove.public boolean supportsRichIndex()
SegmentCache
SegmentHeader
objects as an index, thus preserving them in a serialized state, or if
it uses its identification number only.
Not using a rich index prevents Mondrian from doing partial cache invalidation.
It is assumed that this method returns fairly quickly, and for a given cache always returns the same value.
supportsRichIndex
in interface SegmentCache
public void fireSegmentCacheEvent(SegmentCache.SegmentCacheListener.SegmentCacheEvent evt)
Copyright © 2019 Hitachi Vantara. All rights reserved.