Package tigase.cluster.strategy
Class DefaultClusteringStrategyAbstract<E extends ConnectionRecordIfc>
java.lang.Object
tigase.cluster.strategy.DefaultClusteringStrategyAbstract<E>
- All Implemented Interfaces:
ClusteringStrategyIfc<E>,StatisticHolder,OnlineJidsReporter
- Direct Known Subclasses:
DefaultClusteringStrategy
public abstract class DefaultClusteringStrategyAbstract<E extends ConnectionRecordIfc>
extends Object
implements ClusteringStrategyIfc<E>
Created: May 13, 2009 9:53:44 AM
- Author:
- Artur Hefczyc
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ClusterControllerIfcprotected Stringprotected EventBusprotected Stringprotected SessionManagerClusteredIfc -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal voidbooleancontainsJid(BareJID jid) The method checks whether the given JID is known to the installation, either user connected to local machine or any of the cluster nodes.booleanThe method checks whether the given JID is known to local cluster node as connected user.booleancontainsJidLocally(JID jid) The method checks whether the given JID is known to local cluster node as connected user.voidvoidvoidvoidJID[]Retrieve all connection IDs (CIDs) for the given user.getConnectionRecord(JID jid) Returns a ConnectionRecord object associated with this user's full JID if it exists in the cache or null if it does not.getConnectionRecords(BareJID bareJID) Returns a set with all ConnectionRecords found in the cache for a given user ID, that is BareJID.getDefaults(Map<String, Object> params) This method is used for configuration purpose.getInfo()The method returns all cluster nodes currently connected to the cluster node.getNodesForIqResponse(Packet packet) getNodesForPacketForward(JID fromNode, Set<JID> visitedNodes, Packet packet) getSM()voidgetStatistics(String compName, StatisticsList list) voidgetStatistics(StatisticsList list) Add the strategy statistics to the List.voidhandleLocalPacket(Packet packet, XMPPResourceConnection conn) voidvoidvoidhandleLocalUserChangedConnId(BareJID userId, XMPPResourceConnection conn, JID oldConnId, JID newConnId) voidhandleLocalUserLogin(BareJID userId, XMPPResourceConnection conn) voidhandleLocalUserLogout(BareJID userId, XMPPResourceConnection conn) booleanMethod checks whether the clustering strategy has a complete JIDs info.booleanisIqResponseToNode(Packet packet) protected booleanisSuitableForForward(Packet packet) voidnodeConnected(JID node) This is a handler method which is called when a new node connects to the cluster.voidnodeDisconnected(JID node) This is a handler method which is called when a node disconnects from the cluster.booleanprocessPacket(Packet packet, XMPPResourceConnection conn) booleanMethod attempts to send the packet to the next cluster node.voidvoidsetProperties(Map<String, Object> props) Method used to pass configuration parameters to the class.voidsetStatisticsPrefix(String prefix) voidstatisticExecutedIn(long executionTime) toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface tigase.cluster.strategy.ClusteringStrategyIfc
getConnectionRecordsByCreationTime
-
Field Details
-
cluster
-
comp
-
eventBus
-
prefix
-
sm
-
-
Constructor Details
-
DefaultClusteringStrategyAbstract
public DefaultClusteringStrategyAbstract()
-
-
Method Details
-
statisticExecutedIn
public void statisticExecutedIn(long executionTime) - Specified by:
statisticExecutedInin interfaceStatisticHolder
-
everyHour
public void everyHour()- Specified by:
everyHourin interfaceStatisticHolder
-
everyMinute
public void everyMinute()- Specified by:
everyMinutein interfaceStatisticHolder
-
everySecond
public void everySecond()- Specified by:
everySecondin interfaceStatisticHolder
-
getStatistics
- Specified by:
getStatisticsin interfaceStatisticHolder
-
setStatisticsPrefix
- Specified by:
setStatisticsPrefixin interfaceStatisticHolder
-
addCommandListener
-
containsJid
Description copied from interface:OnlineJidsReporterThe method checks whether the given JID is known to the installation, either user connected to local machine or any of the cluster nodes. False result does not mean the user is not connected. It means the method does not know anything about the JID. Some clustering strategies may not cache online users information.- Specified by:
containsJidin interfaceOnlineJidsReporter- Parameters:
jid- a user's JID for whom we query information.- Returns:
- true if the user is known as online to the installation, false if the method does not know.
-
containsJidLocally
Description copied from interface:OnlineJidsReporterThe method checks whether the given JID is known to local cluster node as connected user. False result means that given JID is not connected to local cluster node but it may be connected to other cluster node. Result of this method should be independent of used clustering strategy.- Specified by:
containsJidLocallyin interfaceOnlineJidsReporter- Parameters:
jid- a user's JID for whom we query information- Returns:
- true if user is known as connected to local cluster node, false if it is not connected to local node
-
containsJidLocally
Description copied from interface:OnlineJidsReporterThe method checks whether the given JID is known to local cluster node as connected user. False result means that given JID is not connected to local cluster node but it may be connected to other cluster node. Result of this method should be independent of used clustering strategy.- Specified by:
containsJidLocallyin interfaceOnlineJidsReporter- Parameters:
jid- a user's JID for whom we query information- Returns:
- true if user is known as connected to local cluster node, false if it is not connected to local node
-
handleLocalPacket
- Specified by:
handleLocalPacketin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
handleLocalPresenceSet
- Specified by:
handleLocalPresenceSetin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
handleLocalResourceBind
- Specified by:
handleLocalResourceBindin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
handleLocalUserLogin
- Specified by:
handleLocalUserLoginin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
handleLocalUserLogout
- Specified by:
handleLocalUserLogoutin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
handleLocalUserChangedConnId
public void handleLocalUserChangedConnId(BareJID userId, XMPPResourceConnection conn, JID oldConnId, JID newConnId) - Specified by:
handleLocalUserChangedConnIdin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
processPacket
- Specified by:
processPacketin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
sendToNextNode
public boolean sendToNextNode(JID fromNode, Set<JID> visitedNodes, Map<String, String> data, Packet packet) Method attempts to send the packet to the next cluster node. Returns true on successful attempt and false on failure. The true result does not mean that the packet has been delivered though. Only that it was sent. The send attempt may fail if there is no more cluster nodes to send the packet or if the clustering strategy logic decided that the packet does not have to be sent.- Parameters:
visitedNodes- a list of nodes already visited by the packet.packet- to be sent to a next cluster node- Returns:
- true if the packet was sent to next cluster node and false otherwise.
-
toString
-
getNodesConnected
Description copied from interface:ClusteringStrategyIfcThe method returns all cluster nodes currently connected to the cluster node.- Specified by:
getNodesConnectedin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>- Returns:
- List of all cluster nodes currently connected to the cluster node.
-
getConnectionIdsForJid
Description copied from interface:OnlineJidsReporterRetrieve all connection IDs (CIDs) for the given user.- Specified by:
getConnectionIdsForJidin interfaceOnlineJidsReporter- Parameters:
jid- id of the user for which we want to retrieve the list.- Returns:
- an array of
JIDcontaining all Connection IDs (CIDs) for the given user.
-
getConnectionRecord
Description copied from interface:ClusteringStrategyIfcReturns a ConnectionRecord object associated with this user's full JID if it exists in the cache or null if it does not. All parts of the user's JID are checked and ConnectionRecord is returned only if there is a match for all parts.- Specified by:
getConnectionRecordin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>- Parameters:
jid- is an instance of the user's full JID.- Returns:
- ConnectionRecord instance associated with given user's JID or null if there is no ConnectionRecord in the cache.
-
getConnectionRecordInstance
- Specified by:
getConnectionRecordInstancein interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
getConnectionRecords
Description copied from interface:ClusteringStrategyIfcReturns a set with all ConnectionRecords found in the cache for a given user ID, that is BareJID. In other words all user's resources/connectionIDs found in the cache associated with user's account.- Specified by:
getConnectionRecordsin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>- Parameters:
bareJID- is an instance of the user's BareJID, that is account ID.- Returns:
- a Set instance with all ConnectionRecords found for a given BareJID. Note, the result may be null or it maybe an empty Set or non-empty set.
-
getDefaults
Description copied from interface:ClusteringStrategyIfcThis method is used for configuration purpose. Following the convention used in the Tigase project this method is supposed to provide configuration defaults. All parameters which exist in configuration file overwrite corresponding default parameters. If some parameters are missing in configuration file defaults are used then.
A compiled set of parameters is then passed tosetPropertiesmethod.- Specified by:
getDefaultsin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>- Parameters:
params- aMapwith properties loaded from init.properties file which should be used for generating defaults.- Returns:
- a
Mapwith all the class default configuration parameters.
-
getInfo
- Specified by:
getInfoin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
getNodesForPacketForward
-
isIqResponseToNode
-
getNodesForIqResponse
-
getStatistics
Description copied from interface:ClusteringStrategyIfcAdd the strategy statistics to the List.- Specified by:
getStatisticsin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
hasCompleteJidsInfo
public boolean hasCompleteJidsInfo()Description copied from interface:OnlineJidsReporterMethod checks whether the clustering strategy has a complete JIDs info. That is whether the strategy knows about all users connected to all nodes. Some strategies may choose not to share this information among nodes, hence the methods returns false. Other may synchronize this information and can provide it to further optimize cluster traffic.- Specified by:
hasCompleteJidsInfoin interfaceOnlineJidsReporter- Returns:
- a true boolean value if the strategy has a complete information about all users connected to all cluster nodes.
-
nodeConnected
Description copied from interface:ClusteringStrategyIfcThis is a handler method which is called when a new node connects to the cluster.- Specified by:
nodeConnectedin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>- Parameters:
node- is a cluster node id.
-
nodeDisconnected
Description copied from interface:ClusteringStrategyIfcThis is a handler method which is called when a node disconnects from the cluster.- Specified by:
nodeDisconnectedin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>- Parameters:
node- is a cluster node id.
-
setClusterController
- Specified by:
setClusterControllerin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>
-
setProperties
Description copied from interface:ClusteringStrategyIfcMethod used to pass configuration parameters to the class. Parameters are stored inMapwhich contains compiles set of defaults overwritten by parameters loaded from configuration file.
If he implementation took a good care of providing defaults for all parameters no parameter should be missing.- Specified by:
setPropertiesin interfaceClusteringStrategyIfc<E extends ConnectionRecordIfc>- Parameters:
props- aMapwith all configuration parameters for the class.
-
getSM
-
fireEvent
-
isSuitableForForward
-