Class 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 Detail

      • FORWARD_ELEMENTS

        public static final java.lang.String[] FORWARD_ELEMENTS
      • nodesModifications

        protected final java.lang.ThreadLocal<java.util.ArrayDeque<tigase.xml.Element>> nodesModifications
    • Constructor Detail

      • ClusteredNodeStrategy

        public ClusteredNodeStrategy()
    • Method Detail

      • filterOutPacket

        public boolean filterOutPacket​(tigase.server.Packet packet)
        Specified by:
        filterOutPacket in interface StrategyIfc
      • getNodesForPacket

        public java.util.List<tigase.xmpp.jid.JID> getNodesForPacket​(tigase.server.Packet packet)
                                                              throws tigase.pubsub.exceptions.PubSubException
        Specified by:
        getNodesForPacket in interface StrategyIfc
        Throws:
        tigase.pubsub.exceptions.PubSubException
      • isLocalNode

        public boolean isLocalNode​(tigase.xmpp.jid.BareJID serviceJid,
                                   java.lang.String node)
        Specified by:
        isLocalNode in interface StrategyIfc
      • presenceCapsChanged

        public void presenceCapsChanged​(tigase.xmpp.jid.BareJID serviceJid,
                                        tigase.xmpp.jid.JID jid,
                                        java.lang.String caps)
        Specified by:
        presenceCapsChanged in interface StrategyIfc
      • presenceCapsRemoved

        public void presenceCapsRemoved​(tigase.xmpp.jid.BareJID serviceJid,
                                        tigase.xmpp.jid.JID jid)
        Specified by:
        presenceCapsRemoved in interface StrategyIfc
      • nodeAddedToCollection

        public void nodeAddedToCollection​(tigase.xmpp.jid.BareJID serviceJid,
                                          java.lang.String nodeName,
                                          java.lang.String collection)
        Specified by:
        nodeAddedToCollection in interface StrategyIfc
      • nodeAddedToRootCollection

        public void nodeAddedToRootCollection​(tigase.xmpp.jid.BareJID serviceJid,
                                              java.lang.String nodeName)
        Specified by:
        nodeAddedToRootCollection in interface StrategyIfc
      • nodeRemovedFromCollection

        public void nodeRemovedFromCollection​(tigase.xmpp.jid.BareJID serviceJid,
                                              java.lang.String nodeName,
                                              java.lang.String collection)
        Specified by:
        nodeRemovedFromCollection in interface StrategyIfc
      • nodeRemovedFromRootCollection

        public void nodeRemovedFromRootCollection​(tigase.xmpp.jid.BareJID serviceJid,
                                                  java.lang.String nodeName)
        Specified by:
        nodeRemovedFromRootCollection in interface StrategyIfc
      • nodeConfigurationChanged

        public void nodeConfigurationChanged​(tigase.xmpp.jid.BareJID serviceJid,
                                             java.lang.String nodeName,
                                             tigase.pubsub.AbstractNodeConfig config)
        Specified by:
        nodeConfigurationChanged in interface StrategyIfc
      • 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:
        nodeAffiliationsChanged in interface StrategyIfc
      • 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:
        nodeSubscriptionsChanged in interface StrategyIfc
      • 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:
        broadcastNotification in interface StrategyIfc
      • sendToNodes

        public void sendToNodes​(java.lang.String command,
                                java.util.Queue<tigase.xml.Element> packets,
                                tigase.xmpp.jid.JID... toNodes)
      • isOnlineLocally

        public boolean isOnlineLocally​(tigase.xmpp.jid.JID jid)
        Specified by:
        isOnlineLocally in interface StrategyIfc
      • wrapNodeConfig

        public tigase.pubsub.AbstractNodeConfig wrapNodeConfig​(tigase.xmpp.jid.BareJID serviceJid,
                                                               java.lang.String nodeName,
                                                               tigase.pubsub.AbstractNodeConfig config)
        Specified by:
        wrapNodeConfig in interface StrategyIfc
        Overrides:
        wrapNodeConfig in class AbstractStrategy
      • shouldBroadcastNotificationLocallyFor

        public boolean shouldBroadcastNotificationLocallyFor​(tigase.xmpp.jid.JID jid)
        Description copied from interface: StrategyIfc
        Method checks if notifications should be sent on this node for passed JID
        Specified by:
        shouldBroadcastNotificationLocallyFor in interface StrategyIfc
        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:
        userRemoved in interface StrategyIfc
      • handleLocally

        protected boolean handleLocally​(tigase.xmpp.jid.BareJID jid)