Package tigase.pubsub.cluster
Class ClusteredNodeStrategy
- java.lang.Object
-
- tigase.pubsub.cluster.AbstractStrategy
-
- tigase.pubsub.cluster.ClusteredNodeStrategy
-
- All Implemented Interfaces:
tigase.kernel.beans.Initializable,tigase.kernel.beans.UnregisterAware,StrategyIfc
@Bean(name="strategy", parent=PubSubComponentClustered.class, active=true) public class ClusteredNodeStrategy extends AbstractStrategy implements StrategyIfcClusteredNodeStrategy - all pubsub nodes are shared between all cluster nodes, which implies forwarding of packet information across the cluster with the exception of create/remove operation on nodes (to avoid race conditions).- Author:
- andrzej
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String[]FORWARD_ELEMENTSprotected java.lang.ThreadLocal<java.util.ArrayDeque<tigase.xml.Element>>nodesModifications-
Fields inherited from class tigase.pubsub.cluster.AbstractStrategy
cl_controller, config, eventBus, localNodeJid, NODE_ATTR, nodeConfigureElemNames, PUBSUB_PATH, pubSubComponent
-
-
Constructor Summary
Constructors Constructor Description ClusteredNodeStrategy()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbroadcastNotification(tigase.pubsub.utils.executors.Executor.Priority priority, tigase.xmpp.jid.BareJID serviceJID, java.lang.String nodeName, tigase.xml.Element message)booleanfilterOutPacket(tigase.server.Packet packet)java.util.List<tigase.xmpp.jid.JID>getNodesForPacket(tigase.server.Packet packet)protected booleanhandleLocally(tigase.xmpp.jid.BareJID jid)booleanisLocalNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String node)booleanisOnlineLocally(tigase.xmpp.jid.JID jid)voidnodeAddedToCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.lang.String collection)voidnodeAddedToRootCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)voidnodeAffiliationsChanged(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.util.Map<tigase.xmpp.jid.BareJID,tigase.pubsub.repository.stateless.UsersAffiliation> changedAffiliations)voidnodeConfigurationChanged(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, tigase.pubsub.AbstractNodeConfig config)voidnodeDisconnected(tigase.xmpp.jid.JID jid)voidnodeRemovedFromCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.lang.String collection)voidnodeRemovedFromRootCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)voidnodeSubscriptionsChanged(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.util.Map<tigase.xmpp.jid.BareJID,tigase.pubsub.repository.stateless.UsersSubscription> changedSubscriptions)voidnotifyNodeConfigurationChanges()voidpacketProcessed()voidpresenceCapsChanged(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.JID jid, java.lang.String caps)voidpresenceCapsRemoved(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.JID jid)protected voidrequestSync(tigase.xmpp.jid.JID nodeJid)booleansendException(tigase.server.Packet packet, tigase.component.exceptions.ComponentException ex)voidsendToNodes(java.lang.String command, java.util.Queue<tigase.xml.Element> packets, tigase.xmpp.jid.JID... toNodes)booleanshouldBroadcastNotificationLocallyFor(tigase.xmpp.jid.JID jid)Method checks if notifications should be sent on this node for passed JIDprotected booleanshouldBroadcastNotificationLocallyForOption1(tigase.xmpp.jid.JID jid)protected booleanshouldBroadcastNotificationLocallyForOption2(tigase.xmpp.jid.JID jid)voiduserRemoved(tigase.xmpp.jid.BareJID serviceJid)tigase.pubsub.AbstractNodeConfigwrapNodeConfig(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, tigase.pubsub.AbstractNodeConfig config)-
Methods inherited from class tigase.pubsub.cluster.AbstractStrategy
beforeUnregister, getLocalNodeJid, getNodeForHashCode, getNodeForServiceJid, getNodesConnected, getNodesConnectedWithLocal, initialize, isNodeConfigure, newNodeSubscriptions, nodeConnected, prepareCommandData, setClusterController, setConfig, setLocalNodeJid, setPubSubComponent
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface tigase.pubsub.cluster.StrategyIfc
getLocalNodeJid, getNodesConnected, getNodesConnectedWithLocal, newNodeSubscriptions, nodeConnected, setClusterController, setConfig, setPubSubComponent
-
-
-
-
Method Detail
-
filterOutPacket
public boolean filterOutPacket(tigase.server.Packet packet)
- Specified by:
filterOutPacketin interfaceStrategyIfc
-
nodeDisconnected
public void nodeDisconnected(tigase.xmpp.jid.JID jid)
- Specified by:
nodeDisconnectedin interfaceStrategyIfc- Overrides:
nodeDisconnectedin classAbstractStrategy
-
getNodesForPacket
public java.util.List<tigase.xmpp.jid.JID> getNodesForPacket(tigase.server.Packet packet) throws tigase.pubsub.exceptions.PubSubException- Specified by:
getNodesForPacketin interfaceStrategyIfc- Throws:
tigase.pubsub.exceptions.PubSubException
-
isLocalNode
public boolean isLocalNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String node)- Specified by:
isLocalNodein interfaceStrategyIfc
-
presenceCapsChanged
public void presenceCapsChanged(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.JID jid, java.lang.String caps)- Specified by:
presenceCapsChangedin interfaceStrategyIfc
-
presenceCapsRemoved
public void presenceCapsRemoved(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.JID jid)- Specified by:
presenceCapsRemovedin interfaceStrategyIfc
-
nodeAddedToCollection
public void nodeAddedToCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.lang.String collection)- Specified by:
nodeAddedToCollectionin interfaceStrategyIfc
-
nodeAddedToRootCollection
public void nodeAddedToRootCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)- Specified by:
nodeAddedToRootCollectionin interfaceStrategyIfc
-
nodeRemovedFromCollection
public void nodeRemovedFromCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.lang.String collection)- Specified by:
nodeRemovedFromCollectionin interfaceStrategyIfc
-
nodeRemovedFromRootCollection
public void nodeRemovedFromRootCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)- Specified by:
nodeRemovedFromRootCollectionin interfaceStrategyIfc
-
nodeConfigurationChanged
public void nodeConfigurationChanged(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, tigase.pubsub.AbstractNodeConfig config)- Specified by:
nodeConfigurationChangedin interfaceStrategyIfc
-
nodeAffiliationsChanged
public void nodeAffiliationsChanged(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.util.Map<tigase.xmpp.jid.BareJID,tigase.pubsub.repository.stateless.UsersAffiliation> changedAffiliations)- Specified by:
nodeAffiliationsChangedin interfaceStrategyIfc
-
nodeSubscriptionsChanged
public void nodeSubscriptionsChanged(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.util.Map<tigase.xmpp.jid.BareJID,tigase.pubsub.repository.stateless.UsersSubscription> changedSubscriptions)- Specified by:
nodeSubscriptionsChangedin interfaceStrategyIfc
-
notifyNodeConfigurationChanges
public void notifyNodeConfigurationChanges()
-
broadcastNotification
public void broadcastNotification(tigase.pubsub.utils.executors.Executor.Priority priority, tigase.xmpp.jid.BareJID serviceJID, java.lang.String nodeName, tigase.xml.Element message)- Specified by:
broadcastNotificationin interfaceStrategyIfc
-
requestSync
protected void requestSync(tigase.xmpp.jid.JID nodeJid)
- Overrides:
requestSyncin classAbstractStrategy
-
sendToNodes
public void sendToNodes(java.lang.String command, java.util.Queue<tigase.xml.Element> packets, tigase.xmpp.jid.JID... toNodes)
-
sendException
public boolean sendException(tigase.server.Packet packet, tigase.component.exceptions.ComponentException ex)- Specified by:
sendExceptionin interfaceStrategyIfc- Overrides:
sendExceptionin classAbstractStrategy
-
isOnlineLocally
public boolean isOnlineLocally(tigase.xmpp.jid.JID jid)
- Specified by:
isOnlineLocallyin interfaceStrategyIfc
-
wrapNodeConfig
public tigase.pubsub.AbstractNodeConfig wrapNodeConfig(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, tigase.pubsub.AbstractNodeConfig config)- Specified by:
wrapNodeConfigin interfaceStrategyIfc- Overrides:
wrapNodeConfigin classAbstractStrategy
-
packetProcessed
public void packetProcessed()
- Specified by:
packetProcessedin interfaceStrategyIfc- Overrides:
packetProcessedin classAbstractStrategy
-
shouldBroadcastNotificationLocallyFor
public boolean shouldBroadcastNotificationLocallyFor(tigase.xmpp.jid.JID jid)
Description copied from interface:StrategyIfcMethod checks if notifications should be sent on this node for passed JID- Specified by:
shouldBroadcastNotificationLocallyForin interfaceStrategyIfc- Returns:
-
shouldBroadcastNotificationLocallyForOption1
protected boolean shouldBroadcastNotificationLocallyForOption1(tigase.xmpp.jid.JID jid)
-
shouldBroadcastNotificationLocallyForOption2
protected boolean shouldBroadcastNotificationLocallyForOption2(tigase.xmpp.jid.JID jid)
-
userRemoved
public void userRemoved(tigase.xmpp.jid.BareJID serviceJid)
- Specified by:
userRemovedin interfaceStrategyIfc
-
handleLocally
protected boolean handleLocally(tigase.xmpp.jid.BareJID jid)
-
-