tigase.cluster

## Class ClusterController

- java.lang.Object
- - tigase.server.BasicComponent
  - - tigase.server.AbstractComponentRegistrator<ClusteredComponentIfc>
    - - tigase.cluster.ClusterController

- All Implemented Interfaces:
    ClusterControllerIfc, ClusteredComponentIfc, Configurable, XMPPService, ComponentRegistrator, ServerComponent, VHostListener

      public class ClusterController
      extends AbstractComponentRegistrator<ClusteredComponentIfc>
      implements Configurable, ClusterControllerIfc

  Describe class ClusterController here. Created: Mon Jun 9 20:03:28 2008
  Version:
    $Rev$
  Author:
    Artur Hefczyc

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `MY_DOMAIN_NAME_PROP_KEY` Field description
    `static String` | `MY_DOMAIN_NAME_PROP_VAL` Field description

    - ### Fields inherited from class tigase.server.AbstractComponentRegistrator

      `components`

    - ### Fields inherited from class tigase.server.BasicComponent

      `admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager`

    - ### Fields inherited from interface tigase.conf.Configurable

      `ADMINS_PROP_KEY, AMP_CLASS_NAME, AMP_CLUST_CLASS_NAME, AUTH_DOMAIN_POOL_CLASS, AUTH_REPO_DOMAINS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_POOL_CLASS, AUTH_REPO_URL_PROP_KEY, BOSH_CLUST_COMP_CLASS_NAME, BOSH_COMP_CLASS_NAME, C2S_CLUST_COMP_CLASS_NAME, C2S_COMP_CLASS_NAME, CL_COMP_CLASS_NAME, CLUSTER_CONECT, CLUSTER_CONTR_CLASS_NAME, CLUSTER_LISTEN, CLUSTER_MODE, CLUSTER_NODES, CLUSTER_NODES_PROP_KEY, COMP_PROT_CLASS_NAME, COMPONENT_ID_PROP_KEY, DEF_AMP_NAME, DEF_BOSH_NAME, DEF_C2S_NAME, DEF_CL_COMP_NAME, DEF_CLUST_CONTR_NAME, DEF_COMP_PROT_NAME, DEF_EVENTBUS_NAME, DEF_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_SRECV_NAME, DEF_SSEND_NAME, DEF_STATS_NAME, DEF_VHOST_MAN_NAME, DEF_WS2S_NAME, DERBY_REPO_CLASS_PROP_VAL, DERBY_REPO_URL_PROP_VAL, DRUPAL_REPO_URL_PROP_VAL, DRUPALWP_REPO_CLASS_PROP_VAL, DUMMY_REPO_CLASS_PROP_VAL, EVENTBUS_CLASS_NAME, EXT_COMP_CLASS_NAME, GEN_ADMINS, GEN_AUTH_DB, GEN_AUTH_DB_URI, GEN_COMP_CLASS, GEN_COMP_NAME, GEN_CONF, GEN_CONFIG, GEN_CONFIG_ALL, GEN_CONFIG_COMP, GEN_CONFIG_CS, GEN_CONFIG_DEF, GEN_CONFIG_SM, GEN_DEBUG, GEN_DEBUG_PACKAGES, GEN_EXT_COMP, GEN_MAX_QUEUE_SIZE, GEN_SCRIPT_DIR, GEN_SM_PLUGINS, GEN_SREC_ADMINS, GEN_SREC_DB, GEN_SREC_DB_URI, GEN_TEST, GEN_TRUSTED, GEN_USER_DB, GEN_USER_DB_URI, GEN_USER_DB_URI_PROP_KEY, GEN_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, MONITOR_CLASS_NAME, MONITOR_CLUST_CLASS_NAME, MONITORING, MYSQL_REPO_CLASS_PROP_VAL, MYSQL_REPO_URL_PROP_VAL, PGSQL_REPO_CLASS_PROP_VAL, PGSQL_REPO_URL_PROP_VAL, ROUTER_COMP_CLASS_NAME, S2S_CLUST_COMP_CLASS_NAME, S2S_COMP_CLASS_NAME, SHARED_AUTH_REPO_PARAMS_PROP_KEY, SHARED_AUTH_REPO_PROP_KEY, SHARED_USER_REPO_PARAMS_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUST_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, SRECV_COMP_CLASS_NAME, SSEND_COMP_CLASS_NAME, STANZA_WHITE_CHAR_ACK, STANZA_XMPP_ACK, STATS_CLASS_NAME, STRINGPREP_PROCESSOR, TIGASE_AUTH_REPO_CLASS_PROP_VAL, TIGASE_AUTH_REPO_URL_PROP_VAL, TIGASE_CUSTOM_AUTH_REPO_CLASS_PROP_VAL, TRUSTED_PROP_KEY, USER_DOMAIN_POOL_CLASS, USER_REPO_DOMAINS_PROP_KEY, USER_REPO_PARAMS_NODE, USER_REPO_POOL_CLASS, USER_REPO_POOL_SIZE, USER_REPO_POOL_SIZE_PROP_KEY, USER_REPO_URL_PROP_KEY, VHOST_MAN_CLASS_NAME, VHOST_MAN_CLUST_CLASS_NAME, WS2S_CLASS_NAME, WS2S_CLUST_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACK`

    - ### Fields inherited from interface tigase.cluster.api.ClusterControllerIfc

      `DELIVER_CLUSTER_PACKET_CMD`

    - ### Fields inherited from interface tigase.disco.XMPPService

      `CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ClusterController()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `componentAdded(ClusteredComponentIfc component)` Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internal `components` collection.
    `void` | `componentRemoved(ClusteredComponentIfc component)` Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internal `components` collection.
    `Map<String,Object>` | `getDefaults(Map<String,Object> params)` Returns default configuration settings for the component as a `Map` with keys as configuration property IDs and values as the configuration property values.
    `String` | `getDiscoCategoryType()` Method description
    `String` | `getDiscoDescription()` Method description
    `void` | `handleClusterPacket(Element packet)` Method description
    `boolean` | `isCorrectType(ServerComponent component)` Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class.
    `void` | `nodeConnected(String node)` Method is called on cluster node connection event.
    `void` | `nodeDisconnected(String node)` Method is called on cluster node disconnection event.
    `void` | `processPacket(Packet packet, Queue<Packet> results)` `processPacket` is a blocking processing method implemented by all components.
    `void` | `removeCommandListener(CommandListener listener)` Method description
    `void` | `sendToNodes(String command, Element packet, JID fromNode, Set<JID> visitedNodes, JID... toNodes)` Method which sends command to desired nodes
    `void` | `sendToNodes(String command, JID fromNode, JID... toNodes)` Method which sends command to desired nodes
    `void` | `sendToNodes(String command, Map<String,String> data, Element packet, JID fromNode, Set<JID> visitedNodes, JID... toNodes)` Method which sends command to desired nodes
    `void` | `sendToNodes(String command, Map<String,String> data, JID fromNode, JID... toNodes)` Method which sends command to desired nodes
    `void` | `sendToNodes(String command, Map<String,String> data, JID fromNode, Set<JID> visitedNodes, JID... toNodes)` Method which sends command to desired nodes
    `void` | `sendToNodes(String command, Map<String,String> data, Queue<Element> packets, JID fromNode, Set<JID> visitedNodes, JID... toNodes)` Method which sends command to desired nodes
    `void` | `sendToNodes(String command, Queue<Element> packets, JID fromNode, Set<JID> visitedNodes, JID... toNodes)` Method which sends command to desired nodes
    `void` | `setCommandListener(CommandListener listener)` Method description
    `void` | `setName(String name)` Method description
    `void` | `setProperties(Map<String,Object> properties)` Sets all configuration properties for the object.

    - ### Methods inherited from class tigase.server.AbstractComponentRegistrator

      `addComponent, deleteComponent, getComponent, newPacketId, release`

    - ### Methods inherited from class tigase.server.BasicComponent

      `addComponentDomain, canCallCommand, checkCommandAcl, everyHour, everyMinute, everySecond, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getStatistics, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initBindings, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setClusterController, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface tigase.server.ServerComponent

      `getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, release`

- - ### Field Detail

    - #### MY_DOMAIN_NAME_PROP_KEY

          public static final String MY_DOMAIN_NAME_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### MY_DOMAIN_NAME_PROP_VAL

          public static final String MY_DOMAIN_NAME_PROP_VAL

      Field description
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ClusterController

          public ClusterController()

  - ### Method Detail

    - #### componentAdded

          public void componentAdded(ClusteredComponentIfc component)

      Description copied from class: `AbstractComponentRegistrator`
      Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internal `components` collection.
      Specified by:
        `componentAdded` in class `AbstractComponentRegistrator<ClusteredComponentIfc>`
      Parameters:
        `component` - is a reference to the component just added to the collection.

    - #### componentRemoved

          public void componentRemoved(ClusteredComponentIfc component)

      Description copied from class: `AbstractComponentRegistrator`
      Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internal `components` collection.
      Specified by:
        `componentRemoved` in class `AbstractComponentRegistrator<ClusteredComponentIfc>`
      Parameters:
        `component` - is a reference to the component removed from the collection.

    - #### handleClusterPacket

          public void handleClusterPacket(Element packet)

      Description copied from interface: `ClusterControllerIfc`
      Method description
      Specified by:
        `handleClusterPacket` in interface `ClusterControllerIfc`
      Parameters:
        `packet` - which should be handled

    - #### nodeConnected

          public void nodeConnected(String node)

      Description copied from interface: `ClusteredComponentIfc`
      Method is called on cluster node connection event. This is a notification to the component that a new cluster node has connected.
      Specified by:
        `nodeConnected` in interface `ClusterControllerIfc`
      Specified by:
        `nodeConnected` in interface `ClusteredComponentIfc`
      Overrides:
        `nodeConnected` in class `BasicComponent`
      Parameters:
        `node` - is a hostname of a cluster node generating the event.

    - #### nodeDisconnected

          public void nodeDisconnected(String node)

      Description copied from interface: `ClusteredComponentIfc`
      Method is called on cluster node disconnection event. This is a notification to the component that there was network connection lost to one of the cluster nodes.
      Specified by:
        `nodeDisconnected` in interface `ClusterControllerIfc`
      Specified by:
        `nodeDisconnected` in interface `ClusteredComponentIfc`
      Overrides:
        `nodeDisconnected` in class `BasicComponent`
      Parameters:
        `node` - is a hostname of a cluster node generating the event.

    - #### processPacket

          public void processPacket(Packet packet,
                                    Queue<Packet> results)

      Description copied from interface: `ServerComponent`
      `processPacket` is a blocking processing method implemented by all components. This method processes packet and returns results instantly without waiting for any resources.
      Specified by:
        `processPacket` in interface `ServerComponent`
      Overrides:
        `processPacket` in class `BasicComponent`
      Parameters:
        `packet` - a `Packet` value

    - #### removeCommandListener

          public void removeCommandListener(CommandListener listener)

      Description copied from interface: `ClusterControllerIfc`
      Method description
      Specified by:
        `removeCommandListener` in interface `ClusterControllerIfc`
      Parameters:
        `listener` - CommandListener object

    - #### sendToNodes

          public void sendToNodes(String command,
                                  Map<String,String> data,
                                  Queue<Element> packets,
                                  JID fromNode,
                                  Set<JID> visitedNodes,
                                  JID... toNodes)

      Description copied from interface: `ClusterControllerIfc`
      Method which sends command to desired nodes
      Specified by:
        `sendToNodes` in interface `ClusterControllerIfc`
      Parameters:
        `command` - ID string of the command
        `data` - additional data to be included in the packet
        `packets` - collection of elements to be send to desired nodes
        `fromNode` - address of the source node
        `visitedNodes` - list of all already visited nodes
        `toNodes` - list of nodes to which packet should be sent

    - #### sendToNodes

          public void sendToNodes(String command,
                                  Queue<Element> packets,
                                  JID fromNode,
                                  Set<JID> visitedNodes,
                                  JID... toNodes)

      Description copied from interface: `ClusterControllerIfc`
      Method which sends command to desired nodes
      Specified by:
        `sendToNodes` in interface `ClusterControllerIfc`
      Parameters:
        `command` - ID string of the command
        `packets` - collection of elements to be send to desired nodes
        `fromNode` - address of the source node
        `visitedNodes` - list of all already visited nodes
        `toNodes` - list of nodes to which packet should be sent

    - #### sendToNodes

          public void sendToNodes(String command,
                                  Map<String,String> data,
                                  JID fromNode,
                                  Set<JID> visitedNodes,
                                  JID... toNodes)

      Description copied from interface: `ClusterControllerIfc`
      Method which sends command to desired nodes
      Specified by:
        `sendToNodes` in interface `ClusterControllerIfc`
      Parameters:
        `command` - ID string of the command
        `data` - additional data to be included in the packet
        `fromNode` - address of the source node
        `visitedNodes` - list of all already visited nodes
        `toNodes` - list of nodes to which packet should be sent

    - #### sendToNodes

          public void sendToNodes(String command,
                                  Map<String,String> data,
                                  JID fromNode,
                                  JID... toNodes)

      Description copied from interface: `ClusterControllerIfc`
      Method which sends command to desired nodes
      Specified by:
        `sendToNodes` in interface `ClusterControllerIfc`
      Parameters:
        `command` - ID string of the command
        `data` - additional data to be included in the packet
        `fromNode` - address of the source node
        `toNodes` - list of nodes to which packet should be sent

    - #### sendToNodes

          public void sendToNodes(String command,
                                  JID fromNode,
                                  JID... toNodes)

      Description copied from interface: `ClusterControllerIfc`
      Method which sends command to desired nodes
      Specified by:
        `sendToNodes` in interface `ClusterControllerIfc`
      Parameters:
        `command` - ID string of the command
        `fromNode` - address of the source node
        `toNodes` - list of nodes to which packet should be sent

    - #### sendToNodes

          public void sendToNodes(String command,
                                  Element packet,
                                  JID fromNode,
                                  Set<JID> visitedNodes,
                                  JID... toNodes)

      Description copied from interface: `ClusterControllerIfc`
      Method which sends command to desired nodes
      Specified by:
        `sendToNodes` in interface `ClusterControllerIfc`
      Parameters:
        `command` - ID string of the command
        `packet` - collection of elements to be send to desired nodes
        `fromNode` - address of the source node
        `visitedNodes` - list of all already visited nodes
        `toNodes` - list of nodes to which packet should be sent

    - #### sendToNodes

          public void sendToNodes(String command,
                                  Map<String,String> data,
                                  Element packet,
                                  JID fromNode,
                                  Set<JID> visitedNodes,
                                  JID... toNodes)

      Description copied from interface: `ClusterControllerIfc`
      Method which sends command to desired nodes
      Specified by:
        `sendToNodes` in interface `ClusterControllerIfc`
      Parameters:
        `command` - ID string of the command
        `data` - additional data to be included in the packet
        `packet` - element to be send to desired nodes
        `fromNode` - address of the source node
        `visitedNodes` - list of all already visited nodes
        `toNodes` - list of nodes to which packet should be sent

    - #### getDefaults

          public Map<String,Object> getDefaults(Map<String,Object> params)

      Description copied from interface: `Configurable`
      Returns default configuration settings for the component as a `Map` with keys as configuration property IDs and values as the configuration property values. All the default parameters returned from this method are later passed to the `setProperties(...)` method. Some of them may have changed value if they have been overwritten in the server configuration. The configuration property value can be of any of the basic types: `int`, `long`, `boolean`, `String`.
      Specified by:
        `getDefaults` in interface `Configurable`
      Overrides:
        `getDefaults` in class `BasicComponent`
      Parameters:
        `params` - is a `Map` with some initial properties set for the starting up server. These parameters can be used as a hints to generate component's default configuration.
      Returns:
        a `Map` with the component default configuration.

    - #### getDiscoCategoryType

          public String getDiscoCategoryType()

      Description copied from class: `BasicComponent`
      Method description
      Overrides:
        `getDiscoCategoryType` in class `BasicComponent`
      Returns:
        a value of `String`

    - #### getDiscoDescription

          public String getDiscoDescription()

      Description copied from class: `BasicComponent`
      Method description
      Overrides:
        `getDiscoDescription` in class `BasicComponent`
      Returns:
        a value of `String`

    - #### isCorrectType

          public boolean isCorrectType(ServerComponent component)

      Description copied from class: `AbstractComponentRegistrator`
      Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class. Result of the method determines whether the component can be added to the internal `components` collection.
      Specified by:
        `isCorrectType` in class `AbstractComponentRegistrator<ClusteredComponentIfc>`
      Parameters:
        `component` - is a reference to the component being checked.
      Returns:
        a `boolean` value of `true` if the component is of a correct type and `false` otherwise.

    - #### setCommandListener

          public void setCommandListener(CommandListener listener)

      Description copied from interface: `ClusterControllerIfc`
      Method description
      Specified by:
        `setCommandListener` in interface `ClusterControllerIfc`
      Parameters:
        `listener` - CommandListener object

    - #### setName

          public void setName(String name)

      Description copied from interface: `ServerComponent`
      Method description
      Specified by:
        `setName` in interface `ServerComponent`
      Overrides:
        `setName` in class `BasicComponent`

    - #### setProperties

          public void setProperties(Map<String,Object> properties)
                             throws ConfigurationException

      Description copied from interface: `Configurable`
      Sets all configuration properties for the object.
      Specified by:
        `setProperties` in interface `Configurable`
      Overrides:
        `setProperties` in class `BasicComponent`
      Parameters:
        `properties` - `Map` with the configuration
      Throws:
        `ConfigurationException` - - if setting configuration will fail which will make it unable to work

Copyright © 2022 "Tigase, Inc.". All rights reserved.