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 StrategyIfc
ClusteredNodeStrategy - 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
FieldsModifier and TypeFieldDescriptionstatic final String[]protected final ThreadLocal<ArrayDeque<tigase.xml.Element>>Fields inherited from class tigase.pubsub.cluster.AbstractStrategy
cl_controller, config, eventBus, localNodeJid, NODE_ATTR, nodeConfigureElemNames, PUBSUB_PATH, pubSubComponent -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidbroadcastNotification(tigase.pubsub.utils.executors.Executor.Priority priority, tigase.xmpp.jid.BareJID serviceJID, String nodeName, tigase.xml.Element message) booleanfilterOutPacket(tigase.server.Packet packet) List<tigase.xmpp.jid.JID>getNodesForPacket(tigase.server.Packet packet) protected booleanhandleLocally(tigase.xmpp.jid.BareJID jid) booleanisLocalNode(tigase.xmpp.jid.BareJID serviceJid, String node) booleanisOnlineLocally(tigase.xmpp.jid.JID jid) voidnodeAddedToCollection(tigase.xmpp.jid.BareJID serviceJid, String nodeName, String collection) voidnodeAddedToRootCollection(tigase.xmpp.jid.BareJID serviceJid, String nodeName) voidnodeAffiliationsChanged(tigase.xmpp.jid.BareJID serviceJid, String nodeName, Map<tigase.xmpp.jid.BareJID, tigase.pubsub.repository.stateless.UsersAffiliation> changedAffiliations) voidnodeConfigurationChanged(tigase.xmpp.jid.BareJID serviceJid, String nodeName, tigase.pubsub.AbstractNodeConfig config) voidnodeDisconnected(tigase.xmpp.jid.JID jid) voidnodeRemovedFromCollection(tigase.xmpp.jid.BareJID serviceJid, String nodeName, String collection) voidnodeRemovedFromRootCollection(tigase.xmpp.jid.BareJID serviceJid, String nodeName) voidnodeSubscriptionsChanged(tigase.xmpp.jid.BareJID serviceJid, String nodeName, Map<tigase.xmpp.jid.BareJID, tigase.pubsub.repository.stateless.UsersSubscription> changedSubscriptions) voidvoidvoidpresenceCapsChanged(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.JID jid, 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(String command, 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, 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, setPubSubComponentMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface tigase.pubsub.cluster.StrategyIfc
getLocalNodeJid, getNodesConnected, getNodesConnectedWithLocal, newNodeSubscriptions, nodeConnected, setClusterController, setConfig, setPubSubComponent
-
Field Details
-
FORWARD_ELEMENTS
-
nodesModifications
-
-
Constructor Details
-
ClusteredNodeStrategy
public ClusteredNodeStrategy()
-
-
Method Details
-
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 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
- Specified by:
isLocalNodein interfaceStrategyIfc
-
presenceCapsChanged
public void presenceCapsChanged(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.JID jid, 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, String nodeName, String collection) - Specified by:
nodeAddedToCollectionin interfaceStrategyIfc
-
nodeAddedToRootCollection
- Specified by:
nodeAddedToRootCollectionin interfaceStrategyIfc
-
nodeRemovedFromCollection
public void nodeRemovedFromCollection(tigase.xmpp.jid.BareJID serviceJid, String nodeName, String collection) - Specified by:
nodeRemovedFromCollectionin interfaceStrategyIfc
-
nodeRemovedFromRootCollection
- Specified by:
nodeRemovedFromRootCollectionin interfaceStrategyIfc
-
nodeConfigurationChanged
public void nodeConfigurationChanged(tigase.xmpp.jid.BareJID serviceJid, String nodeName, tigase.pubsub.AbstractNodeConfig config) - Specified by:
nodeConfigurationChangedin interfaceStrategyIfc
-
nodeAffiliationsChanged
public void nodeAffiliationsChanged(tigase.xmpp.jid.BareJID serviceJid, String nodeName, Map<tigase.xmpp.jid.BareJID, tigase.pubsub.repository.stateless.UsersAffiliation> changedAffiliations) - Specified by:
nodeAffiliationsChangedin interfaceStrategyIfc
-
nodeSubscriptionsChanged
public void nodeSubscriptionsChanged(tigase.xmpp.jid.BareJID serviceJid, String nodeName, 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, String nodeName, tigase.xml.Element message) - Specified by:
broadcastNotificationin interfaceStrategyIfc
-
requestSync
protected void requestSync(tigase.xmpp.jid.JID nodeJid) - Overrides:
requestSyncin classAbstractStrategy
-
sendToNodes
-
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, 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)
-