Openfire 3.6.0 Javadoc

org.jivesoftware.util.cache
Class DefaultLocalCacheStrategy

java.lang.Object
  extended by org.jivesoftware.util.cache.DefaultLocalCacheStrategy
All Implemented Interfaces:
CacheFactoryStrategy

public class DefaultLocalCacheStrategy
extends Object
implements CacheFactoryStrategy

CacheFactoryStrategy for use in Openfire. It creates and manages local caches, and it's cluster related method implementations do nothing.

See Also:
Cache, CacheFactory

Constructor Summary
DefaultLocalCacheStrategy()
           
 
Method Summary
 Cache createCache(String name)
          Creates a new cache for the cache name specified.
 void destroyCache(Cache cache)
          Destroys the supplied cache.
 void doClusterTask(ClusterTask task)
          Invokes a task on other cluster members in an asynchronous fashion.
 boolean doClusterTask(ClusterTask task, byte[] nodeID)
          Invokes a task on other the specified cluster member in an asynchronous fashion.
 Collection<Object> doSynchronousClusterTask(ClusterTask task, boolean includeLocalMember)
          Invokes a task on other cluster members synchronously and returns the result as a Collection (method will not return until the task has been executed on each cluster member).
 Object doSynchronousClusterTask(ClusterTask task, byte[] nodeID)
          Invokes a task on a given cluster member synchronously and returns the result of the remote operation.
 byte[] getClusterMemberID()
          Returns a byte[] that uniquely identifies this member within the cluster or null when not in a cluster.
 Collection<ClusterNodeInfo> getClusterNodesInfo()
          Returns basic information about the current members of the cluster or an empty collection if not running in a cluster.
 Lock getLock(Object key, Cache cache)
          Returns an existing lock on the specified key or creates a new one if none was found.
 int getMaxClusterNodes()
          Returns the maximum number of cluster members allowed.
 byte[] getSeniorClusterMemberID()
          Returns a byte[] that uniquely identifies this senior cluster member or null when not in a cluster.
 boolean isSeniorClusterMember()
          Returns true if this node is the maste node of the cluster.
 boolean startCluster()
          Returns true if the cluster has been started.
 void stopCluster()
          Stops the cluster.
 void updateCacheStats(Map<String,Cache> caches)
          Updates the statistics of the specified caches and publishes them into a cache for statistics.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultLocalCacheStrategy

public DefaultLocalCacheStrategy()
Method Detail

startCluster

public boolean startCluster()
Description copied from interface: CacheFactoryStrategy
Returns true if the cluster has been started. When running in local mode a true value should be returned.

An error should be logged when the cluster fails to be started.

Specified by:
startCluster in interface CacheFactoryStrategy
Returns:
true if the cluster has been started.

stopCluster

public void stopCluster()
Description copied from interface: CacheFactoryStrategy
Stops the cluster. When not running in a cluster this request will be ignored.

Specified by:
stopCluster in interface CacheFactoryStrategy

createCache

public Cache createCache(String name)
Description copied from interface: CacheFactoryStrategy
Creates a new cache for the cache name specified. The created cache is already configured. Different implementations could store the cache configuration in different ways. It is recommended to store the cache configuration in an external file so it is easier for customers to change the default configuration.

Specified by:
createCache in interface CacheFactoryStrategy
Parameters:
name - name of the cache to create.
Returns:
newly created and configured cache.

destroyCache

public void destroyCache(Cache cache)
Description copied from interface: CacheFactoryStrategy
Destroys the supplied cache.

Specified by:
destroyCache in interface CacheFactoryStrategy
Parameters:
cache - the cache to destroy.

isSeniorClusterMember

public boolean isSeniorClusterMember()
Description copied from interface: CacheFactoryStrategy
Returns true if this node is the maste node of the cluster. When not running in cluster mode a value of true should be returned.

Specified by:
isSeniorClusterMember in interface CacheFactoryStrategy
Returns:
true if this node is the maste node of the cluster.

getClusterNodesInfo

public Collection<ClusterNodeInfo> getClusterNodesInfo()
Description copied from interface: CacheFactoryStrategy
Returns basic information about the current members of the cluster or an empty collection if not running in a cluster.

Specified by:
getClusterNodesInfo in interface CacheFactoryStrategy
Returns:
information about the current members of the cluster or an empty collection if not running in a cluster.

getMaxClusterNodes

public int getMaxClusterNodes()
Description copied from interface: CacheFactoryStrategy
Returns the maximum number of cluster members allowed. A value of 0 will be returned when clustering is not allowed.

Specified by:
getMaxClusterNodes in interface CacheFactoryStrategy
Returns:
the maximum number of cluster members allowed or 0 if clustering is not allowed.

getSeniorClusterMemberID

public byte[] getSeniorClusterMemberID()
Description copied from interface: CacheFactoryStrategy
Returns a byte[] that uniquely identifies this senior cluster member or null when not in a cluster.

Specified by:
getSeniorClusterMemberID in interface CacheFactoryStrategy
Returns:
a byte[] that uniquely identifies this senior cluster member or null when not in a cluster.

getClusterMemberID

public byte[] getClusterMemberID()
Description copied from interface: CacheFactoryStrategy
Returns a byte[] that uniquely identifies this member within the cluster or null when not in a cluster.

Specified by:
getClusterMemberID in interface CacheFactoryStrategy
Returns:
a byte[] that uniquely identifies this member within the cluster or null when not in a cluster.

doClusterTask

public void doClusterTask(ClusterTask task)
Description copied from interface: CacheFactoryStrategy
Invokes a task on other cluster members in an asynchronous fashion. The task will not be executed on the local cluster member. If clustering is not enabled, this method will do nothing.

Specified by:
doClusterTask in interface CacheFactoryStrategy
Parameters:
task - the task to be invoked on all other cluster members.

doClusterTask

public boolean doClusterTask(ClusterTask task,
                             byte[] nodeID)
Description copied from interface: CacheFactoryStrategy
Invokes a task on other the specified cluster member in an asynchronous fashion. If clustering is not enabled, this method will do nothing.

Specified by:
doClusterTask in interface CacheFactoryStrategy
Parameters:
task - the task to be invoked on the specified cluster member.
nodeID - the byte array that identifies the target cluster member.
Returns:
false if not in a cluster or specified cluster node was not found.

doSynchronousClusterTask

public Collection<Object> doSynchronousClusterTask(ClusterTask task,
                                                   boolean includeLocalMember)
Description copied from interface: CacheFactoryStrategy
Invokes a task on other cluster members synchronously and returns the result as a Collection (method will not return until the task has been executed on each cluster member). The task will not be executed on the local cluster member. If clustering is not enabled, this method will return an empty collection.

Specified by:
doSynchronousClusterTask in interface CacheFactoryStrategy
Parameters:
task - the ClusterTask object to be invoked on all other cluster members.
includeLocalMember - true to run the task on the local member, false otherwise
Returns:
collection with the result of the execution.

doSynchronousClusterTask

public Object doSynchronousClusterTask(ClusterTask task,
                                       byte[] nodeID)
Description copied from interface: CacheFactoryStrategy
Invokes a task on a given cluster member synchronously and returns the result of the remote operation. If clustering is not enabled, this method will return null.

Specified by:
doSynchronousClusterTask in interface CacheFactoryStrategy
Parameters:
task - the ClusterTask object to be invoked on a given cluster member.
nodeID - the byte array that identifies the target cluster member.
Returns:
result of remote operation or null if operation failed or operation returned null.

updateCacheStats

public void updateCacheStats(Map<String,Cache> caches)
Description copied from interface: CacheFactoryStrategy
Updates the statistics of the specified caches and publishes them into a cache for statistics. The statistics cache is already known to the application but this could change in the future (?). When not in cluster mode then do nothing.

The statistics cache must contain a long array of 5 positions for each cache with the following content:

  1. cache.getCacheSize()
  2. cache.getMaxCacheSize()
  3. cache.size()
  4. cache.getCacheHits()
  5. cache.getCacheMisses()

Specified by:
updateCacheStats in interface CacheFactoryStrategy
Parameters:
caches - caches to get their stats and publish them in a statistics cache.

getLock

public Lock getLock(Object key,
                    Cache cache)
Description copied from interface: CacheFactoryStrategy
Returns an existing lock on the specified key or creates a new one if none was found. This operation is thread safe. The supplied cache may or may not be used depending whether the server is running on cluster mode or not. When not running as part of a cluster then the lock will be unrelated to the cache and will only be visible in this JVM.

Specified by:
getLock in interface CacheFactoryStrategy
Parameters:
key - the object that defines the visibility or scope of the lock.
cache - the cache used for holding the lock.
Returns:
an existing lock on the specified key or creates a new one if none was found.

Openfire 3.6.0 Javadoc

Copyright © 2003-2008 Jive Software.