Openfire 3.4.1 Javadoc

org.jivesoftware.util.cache
Interface CacheFactoryStrategy

All Known Implementing Classes:
DefaultLocalCacheStrategy

public interface CacheFactoryStrategy

Implementation of CacheFactory that relies on the specific clustering solution.

Author:
Gaston Dombiak

Method Summary
 Cache createCache(String name)
          Creates a new cache for the cache name specified.
 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.
 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.
 void lockKey(Object key, long timeout)
          Locks the specified key in the locking map.
 boolean startCluster()
          Returns true if the cluster has been started.
 void stopCluster()
          Stops the cluster.
 void unlockKey(Object key)
          Unlocks the specified key in the locking map.
 void updateCacheStats(Map<String,Cache> caches)
          Updates the statistics of the specified caches and publishes them into a cache for statistics.
 

Method Detail

startCluster

boolean startCluster()
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.

Returns:
true if the cluster has been started.

stopCluster

void stopCluster()
Stops the cluster. When not running in a cluster this request will be ignored.


createCache

Cache createCache(String name)
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.

Parameters:
name - name of the cache to create.
Returns:
newly created and configured cache.

isSeniorClusterMember

boolean isSeniorClusterMember()
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.

Returns:
true if this node is the maste node of the cluster.

getClusterNodesInfo

Collection<ClusterNodeInfo> getClusterNodesInfo()
Returns basic information about the current members of the cluster or an empty collection if not running in a cluster.

Returns:
information about the current members of the cluster or an empty collection if not running in a cluster.

getMaxClusterNodes

int getMaxClusterNodes()
Returns the maximum number of cluster members allowed. A value of 0 will be returned when clustering is not allowed.

Returns:
the maximum number of cluster members allowed or 0 if clustering is not allowed.

getSeniorClusterMemberID

byte[] getSeniorClusterMemberID()
Returns a byte[] that uniquely identifies this senior cluster member or null when not in a cluster.

Returns:
a byte[] that uniquely identifies this senior cluster member or null when not in a cluster.

getClusterMemberID

byte[] getClusterMemberID()
Returns a byte[] that uniquely identifies this member within the cluster or null when not in a cluster.

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

doClusterTask

void doClusterTask(ClusterTask task)
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.

Parameters:
task - the task to be invoked on all other cluster members.

doClusterTask

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

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

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). The task will not be executed on the local cluster member. If clustering is not enabled, this method will return an empty collection.

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

Object doSynchronousClusterTask(ClusterTask task,
                                byte[] nodeID)
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.

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.
Throws:
IllegalStateException - if requested node was not found.

updateCacheStats

void updateCacheStats(Map<String,Cache> caches)
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()

Parameters:
caches - caches to get their stats and publish them in a statistics cache.

lockKey

void lockKey(Object key,
             long timeout)
Locks the specified key in the locking map. The map should be clusterable thus locking a key is visible to the cluster. When not in cluster mode the lock is only visible to this JVM.

Parameters:
key - the key to lock.
timeout - number of milliseconds to wait to obtain the lock. -1 means wait forever.

unlockKey

void unlockKey(Object key)
Unlocks the specified key in the locking map. The map should be clusterable thus locking a key is visible to the cluster. When not in cluster mode the lock is only visible to this JVM.

Parameters:
key - the key to unlock.

Openfire 3.4.1 Javadoc

Copyright © 2003-2007 Jive Software.