com.ibm.websphere.cache
Interface DistributedNioMap

All Known Implementing Classes:
DistributedObjectCache

public interface DistributedNioMap

The DistributedNioMap is a high performance map specifically designed for storing java.nio.Buffer objects. When a cached object is being removed from cache and the cached object implements the DistributedNioMapObject interface, the DistributedNioMapObject.release() method will be called to notify the cache object it is being removed from cache.


Method Summary
 void addAlias(java.lang.Object key, java.lang.Object[] aliasArray)
          Adds an alias for the given key in the cache's mapping table.
 void clear()
          Removes all mappings from this DistributedNioMap.
 boolean containsKey(java.lang.Object key, boolean includeDiskCache)
          Returns true if this map contains mapping for the specified key.
 CacheEntry getCacheEntry(java.lang.Object key)
          Returns the cache entry which maps the specified key.
 void invalidate(java.lang.Object key)
          Invalidates the given key.
 void invalidate(java.lang.Object key, boolean wait)
          Invalidates the given key.
 boolean isEmpty(boolean includeDiskCache)
          Returns true if this map contains no key-value mappings.
 void put(java.lang.Object key, java.lang.Object value, java.lang.Object userMetaData, int priority, int timeToLive, int inactivityTime, int sharingPolicy, java.lang.Object[] dependencyIds, java.lang.Object[] alias)
          Associates the specified value with the specified key in this map.
 void put(java.lang.Object key, java.lang.Object value, java.lang.Object userMetaData, int priority, int timeToLive, int sharingPolicy, java.lang.Object[] dependencyIds, java.lang.Object[] alias)
          Associates the specified value with the specified key in this map.
 CacheEntry putAndGet(java.lang.Object key, java.lang.Object value, java.lang.Object userMetaData, int priority, int timeToLive, int inactivityTime, int sharingPolicy, java.lang.Object[] dependencyIds, java.lang.Object[] alias)
          Associates the specified value with the specified key in this map.
 CacheEntry putAndGet(java.lang.Object key, java.lang.Object value, java.lang.Object userMetaData, int priority, int timeToLive, int sharingPolicy, java.lang.Object[] dependencyIds, java.lang.Object[] alias)
          Associates the specified value with the specified key in this map.
 void releaseLruEntries(int numOfEntries)
          Use this method to release LRU cache entries (regular objects or ByteByffers/MetaData).
 void removeAlias(java.lang.Object alias)
          Removes an alias from the cache's mapping table.
 int size(boolean includeDiskCache)
          Returns the total number of key-value mappings.
 

Method Detail

getCacheEntry

public CacheEntry getCacheEntry(java.lang.Object key)
Returns the cache entry which maps the specified key. Returns null if specified key does not exist in cache's mapping table or the cache entry is in invalidated state.
You must call CacheEntry.finish() when you are finished using the entry. This will release resources associated with this CacheEntry.

Parameters:
key - key whose associated value is to be returned.
Returns:
the cache entry to which maps the specified key, or null if the specified key does not exist or the cache entry is in invalidated state.
Throws:
java.lang.ClassCastException - if the key is not of an inappropriate type for this map. (Currently supports only type String)
java.lang.NullPointerException - key is null and this map does not not permit null keys.

put

public void put(java.lang.Object key,
                java.lang.Object value,
                java.lang.Object userMetaData,
                int priority,
                int timeToLive,
                int sharingPolicy,
                java.lang.Object[] dependencyIds,
                java.lang.Object[] alias)
Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.

Parameters:
key - key with which the specified value is to be associated.
value - value to be associated with the specified key.
userMetaData - userMetaData for the cache entry.
priority - the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.
timeToLive - the time in seconds that the cache entry should remain in the cache
sharingPolicy - how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL.
dependencyIds - an optional set of dependency ids to associate with the cache entry
alias - an optional set of alias ids to associate with the cache entry
Throws:
java.lang.UnsupportedOperationException - if the put operation is not supported by this map.
java.lang.ClassCastException - if the class of the specified key or value prevents it from being stored in this map.
java.lang.IllegalArgumentException - if some aspect of this key or value prevents it from being stored in this map.
java.lang.NullPointerException - this map does not permit null keys or values, and the specified key or value is null.
See Also:
DistributedNioMapObject

put

public void put(java.lang.Object key,
                java.lang.Object value,
                java.lang.Object userMetaData,
                int priority,
                int timeToLive,
                int inactivityTime,
                int sharingPolicy,
                java.lang.Object[] dependencyIds,
                java.lang.Object[] alias)
Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.

Parameters:
key - key with which the specified value is to be associated.
value - value to be associated with the specified key.
userMetaData - userMetaData for the cache entry.
priority - the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.
timeToLive - the time in seconds that the cache entry should remain in the cache
inactivityTime - the time in seconds that a cache entry should remain in the cache if not accessed. inactivityTime is reset to 0 every time an entry is accessed.
sharingPolicy - how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL.
dependencyIds - an optional set of dependency ids to associate with the cache entry
alias - an optional set of alias ids to associate with the cache entry
Throws:
java.lang.UnsupportedOperationException - if the put operation is not supported by this map.
java.lang.ClassCastException - if the class of the specified key or value prevents it from being stored in this map.
java.lang.IllegalArgumentException - if some aspect of this key or value prevents it from being stored in this map.
java.lang.NullPointerException - this map does not permit null keys or values, and the specified key or value is null.
See Also:
DistributedNioMapObject

putAndGet

public CacheEntry putAndGet(java.lang.Object key,
                            java.lang.Object value,
                            java.lang.Object userMetaData,
                            int priority,
                            int timeToLive,
                            int sharingPolicy,
                            java.lang.Object[] dependencyIds,
                            java.lang.Object[] alias)
Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.

Parameters:
key - key with which the specified value is to be associated.
value - value to be associated with the specified key.
userMetaData - userMetaData for the cache entry.
priority - the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.
timeToLive - the time in seconds that the cache entry should remain in the cache
sharingPolicy - how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL.
dependencyIds - an optional set of dependency ids to associate with the cache entry
alias - an optional set of alias ids to associate with the cache entry
Returns:
The newly created CacheEntry. You must call CacheEntry.finish() when you are finished using the entry.
Throws:
java.lang.UnsupportedOperationException - if the put operation is not supported by this map.
java.lang.ClassCastException - if the class of the specified key or value prevents it from being stored in this map.
java.lang.IllegalArgumentException - if some aspect of this key or value prevents it from being stored in this map.
java.lang.NullPointerException - this map does not permit null keys or values, and the specified key or value is null.
See Also:
DistributedNioMapObject

putAndGet

public CacheEntry putAndGet(java.lang.Object key,
                            java.lang.Object value,
                            java.lang.Object userMetaData,
                            int priority,
                            int timeToLive,
                            int inactivityTime,
                            int sharingPolicy,
                            java.lang.Object[] dependencyIds,
                            java.lang.Object[] alias)
Associates the specified value with the specified key in this map. If specified key does not exists, put new cache entry to cache's mapping table. If specified key exists, replaces the old cache entry in cache's mapping table with new one and then delete the old cache entry after reference count becomes zero.

Parameters:
key - key with which the specified value is to be associated.
value - value to be associated with the specified key.
userMetaData - userMetaData for the cache entry.
priority - the priority value for the cache entry. entries with higher priority will remain in the cache longer than those with a lower priority in the case of cache overflow.
timeToLive - the time in seconds that the cache entry should remain in the cache
inactivityTime - the time in seconds that a cache entry should remain in the cache if not accessed. inactivityTime is reset to 0 every time an entry is accessed.
sharingPolicy - how the cache entry should be shared in a cluster. values are EntryInfo.NOT_SHARED, EntryInfo.SHARED_PUSH, and EntryInfo.SHARED_PUSH_PULL.
dependencyIds - an optional set of dependency ids to associate with the cache entry
alias - an optional set of alias ids to associate with the cache entry
Returns:
The newly created CacheEntry. You must call CacheEntry.finish() when you are finished using the entry.
Throws:
java.lang.UnsupportedOperationException - if the put operation is not supported by this map.
java.lang.ClassCastException - if the class of the specified key or value prevents it from being stored in this map.
java.lang.IllegalArgumentException - if some aspect of this key or value prevents it from being stored in this map.
java.lang.NullPointerException - this map does not permit null keys or values, and the specified key or value is null.
See Also:
DistributedNioMapObject

invalidate

public void invalidate(java.lang.Object key,
                       boolean wait)
Invalidates the given key. If the key is for a specific cache entry, then only that object is invalidated. If the key is for a dependency id, then all objects that share that dependency id will be invalidated.

Parameters:
key - the key which will be invalidated
wait - if true, then the method will not complete until the invalidation has occured. if false, then the invalidation will occur in batch mode

invalidate

public void invalidate(java.lang.Object key)
Invalidates the given key. If the key is for a specific cache entry, then only that object is invalidated. If the key is for a dependency id, then all objects that share that dependency id will be invalidated. This method is the same as using invalidate(key, true).

Parameters:
key - the key which will be invalidated

clear

public void clear()
Removes all mappings from this DistributedNioMap.


addAlias

public void addAlias(java.lang.Object key,
                     java.lang.Object[] aliasArray)
Adds an alias for the given key in the cache's mapping table. If the alias is already associated with another key, it will be changed to associate with the new key.

Parameters:
key - the key assoicated with alias
aliasArray - the alias to use for lookups
Throws:
java.lang.IllegalArgumentException - if the key is not in the cache's mapping table.

removeAlias

public void removeAlias(java.lang.Object alias)
Removes an alias from the cache's mapping table.

Parameters:
alias - the alias to move out of the cache's mapping table

releaseLruEntries

public void releaseLruEntries(int numOfEntries)
Use this method to release LRU cache entries (regular objects or ByteByffers/MetaData).

Parameters:
numOfEntries - the number of cache entries to be released

size

public int size(boolean includeDiskCache)
Returns the total number of key-value mappings. Returns size of memory map plus disk map if includeDiskCache is true. Returns size of memory map size if includeDiskCache is false.

Parameters:
includeDiskCache - true to get the size of the memory and disk maps; false to get the size of memory map.
Returns:
the number of key-value mappings in this map.

isEmpty

public boolean isEmpty(boolean includeDiskCache)
Returns true if this map contains no key-value mappings. Checks both memory and disk maps if includeDiskCache is true. Check only memory cache if includeDiskCache is false.

Parameters:
includeDiskCache - true to check the memory and disk maps; false to check the memory map.
Returns:
true if this map contains no key-value mappings.

containsKey

public boolean containsKey(java.lang.Object key,
                           boolean includeDiskCache)
Returns true if this map contains mapping for the specified key. Checks both memory and disk map if includeDiskCache is true. Check only memory map if includeDiskCache is false.

Parameters:
key - whose presence in this map is to be tested.
includeDiskCache - true to check the specified key contained in the memory or disk maps; false to check the specified key contained in the memory map.
Returns:
true if this map contains a mapping for the specified key.