Package tigase.server.xmppserver

## Class S2SConnectionManager

- java.lang.Object
- - tigase.server.BasicComponent
  - - tigase.server.AbstractMessageReceiver
    - - tigase.server.ConnectionManager<S2SIOService>
      - - tigase.server.xmppserver.S2SConnectionManager

- All Implemented Interfaces:
    `ClusteredComponentIfc`, `Configurable`, `XMPPService`, `ConfigurationChangedAware`, `Initializable`, `RegistrarBean`, `IOServiceListener<S2SIOService>`, `MessageReceiver`, `PacketWriterWithTimeout`, `ServerComponent`, `S2SConnectionHandlerIfc<S2SIOService>`, `StatisticsContainer`, `StatisticsContainerIfc`, `VHostListener`, `XMPPIOServiceListener<S2SIOService>`

      @Bean(name="s2s",
            parent=Kernel.class,
            active=true)
      @ConfigType({DefaultMode,ConnectionManagersMode})
      public class S2SConnectionManager
      extends ConnectionManager<S2SIOService>
      implements S2SConnectionHandlerIfc<S2SIOService>

  Created: Jun 14, 2010 11:59:38 AM
  Author:
    Artur Hefczyc

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `S2SConnectionManager.DomainServerNameMapper` |

    - ### Nested classes/interfaces inherited from class tigase.server.ConnectionManager

      `ConnectionManager.LIMIT_ACTION, ConnectionManager.PortConfigBean, ConnectionManager.PortsConfigBean, ConnectionManager.SecPortConfigBean, ConnectionManager.Watchdog, ConnectionManager.WATCHDOG_PING_TYPE`

    - ### Nested classes/interfaces inherited from class tigase.server.BasicComponent

      `BasicComponent.ServerInfoVHostItemExtension`

    - ### Nested classes/interfaces inherited from interface tigase.server.PacketWriterWithTimeout

      `PacketWriterWithTimeout.Handler`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `CID_CONNECTIONS_BIND` |
    `static java.lang.String` | `CID_CONNECTIONS_TASKS_THREADS_KEY` |
    `static int` | `CID_CONNECTIONS_TASKS_THREADS_VAL` |
    `protected java.util.Map<CID,​CIDConnections>` | `cidConnections` | Outgoing and incoming connections for a given domains pair (localdomain, remotedomain)
    `protected static java.lang.String` | `DB_RESULT_EL_NAME` |
    `protected static java.lang.String` | `DB_VERIFY_EL_NAME` |
    `static java.lang.String` | `MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY` |
    `static java.lang.String` | `MAX_INCOMING_CONNECTIONS_PROP_KEY` |
    `static int` | `MAX_INCOMING_CONNECTIONS_PROP_VAL` |
    `static java.lang.String` | `MAX_OUT_PER_IP_CONNECTIONS_PROP_KEY` |
    `static int` | `MAX_OUT_PER_IP_CONNECTIONS_PROP_VAL` |
    `static java.lang.String` | `MAX_OUT_TOTAL_CONNECTIONS_PROP_KEY` |
    `static int` | `MAX_OUT_TOTAL_CONNECTIONS_PROP_VAL` |
    `static java.lang.String` | `MAX_PACKET_WAITING_TIME_PROP_KEY` |
    `static long` | `MAX_PACKET_WAITING_TIME_PROP_VAL` |
    `static java.lang.String` | `S2S_CONNECTION_SELECTOR_PROP_KEY` |
    `static java.lang.String` | `S2S_CONNECTION_SELECTOR_PROP_VAL` |
    `static java.lang.String` | `S2S_DOMAIN_MAPPING_PROP_KEY` |
    `static java.lang.String` | `S2S_DOMAIN_MAPPING_PROP_VAL` |
    `static java.lang.String` | `S2S_HT_TRAFFIC_THROTTLING_PROP_VAL` |
    `static java.lang.String` | `XMLNS_SERVER_VAL` |

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

      `connectionDelay, delayPortListening, elements_number_limit, ELEMENTS_NUMBER_LIMIT_PROP_KEY, ELEMENTS_NUMBER_LIMIT_PROP_VAL, HT_TRAFFIC_THROTTLING_PROP_KEY, HT_TRAFFIC_THROTTLING_PROP_VAL, kernel, LAST_MINUTE_BIN_LIMIT_PROP_VAL, LAST_MINUTE_PACKETS_LIMIT_PROP_VAL, MAX_INACTIVITY_TIME, MAX_RECONNECTS_PROP_KEY, net_buffer, NET_BUFFER_HT_PROP_KEY, NET_BUFFER_HT_PROP_VAL, NET_BUFFER_LIMIT_HT_PROP_VAL, NET_BUFFER_LIMIT_ST_PROP_VAL, NET_BUFFER_ST_PROP_KEY, NET_BUFFER_ST_PROP_VAL, pingElement, PORT_CLASS_PROP_KEY, PORT_IFC_PROP_KEY, PORT_IFC_PROP_VAL, PORT_KEY, PORT_LISTENING_DELAY_DEF, PORT_LISTENING_DELAY_KEY, PORT_LOCAL_HOST_PROP_KEY, PORT_NEW_CONNECTIONS_THROTTLING_KEY, PORT_REMOTE_HOST_PROP_KEY, PORT_REMOTE_HOST_PROP_VAL, PORT_SOCKET_PROP_KEY, PORT_TYPE_PROP_KEY, PORTS_PROP_KEY, PROP_KEY, serviceConnectedTimeout, ST_TRAFFIC_THROTTLING_PROP_KEY, ST_TRAFFIC_THROTTLING_PROP_VAL, TOTAL_BIN_LIMIT_PROP_VAL, TOTAL_PACKETS_LIMIT_PROP_VAL, TRAFFIC_THROTTLING_PROP_KEY, trafficThrottling, WATCHDOG_DELAY, WATCHDOG_PING_TYPE_KEY, WATCHDOG_TIMEOUT, watchdogDelay, watchdogPingType, watchdogTimeout, WHITE_CHAR_ACK_PROP_KEY, WHITE_CHAR_ACK_PROP_VAL, XMPP_ACK_PROP_KEY, XMPP_ACK_PROP_VAL`

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

      `HOUR, INCOMING_FILTERS_PROP_KEY, INCOMING_FILTERS_PROP_VAL, MAX_QUEUE_SIZE_PROP_KEY, MAX_QUEUE_SIZE_PROP_VAL, maxInQueueSize, maxOutQueueSize, maxQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, PACKET_DELIVERY_RETRY_COUNT_PROP_KEY, SCHEDULER_THREADS_PROP_KEY, SECOND`

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

      `admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, 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_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, 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.disco.XMPPService

      `CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `S2SConnectionManager()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `addOutPacket​(Packet packet)` |
    `void` | `addTimerTask​(TimerTask task, long delay, java.util.concurrent.TimeUnit unit)` | Method queues and executes timer tasks using ScheduledExecutorService which allows using more than one thread for executing tasks.
    `protected CIDConnections` | `createNewCIDConnections​(CID cid)` |
    `CIDConnections` | `getCIDConnections​(CID cid, boolean createNew)` |
    `CIDConnections.CIDConnectionsOpenerService` | `getConnectionOpenerService()` |
    `protected int[]` | `getDefPlainPorts()` |
    `protected java.lang.String` | `getDefTrafficThrottling()` | Method from ConnectionManager is overriden as it uses local value S2S_HT_TRAFFIC_THROTTLING_PROP_VAL
    `java.lang.String` | `getDiscoCategoryType()` | Method returns component category type used for service discovery responses.
    `java.lang.String` | `getDiscoDescription()` | Method returns description used for service discovery responses.
    `protected long` | `getMaxInactiveTime()` |
    `java.lang.String` | `getSecretForDomain​(java.lang.String domain)` | Returns secret used for particular domain
    `java.lang.String` | `getServerNameForDomain​(java.lang.String domain)` |
    `void` | `getStatistics​(StatisticsList list)` | Method returns component statistics.
    `java.util.List<Element>` | `getStreamFeatures​(S2SIOService serv)` | Returns stream features available for particular S2S connection.
    `protected S2SIOService` | `getXMPPIOServiceInstance()` |
    `boolean` | `handlesNonLocalDomains()` | Indicates whether the component can handle all packets to non-local domains.
    `int` | `hashCodeForPacket​(Packet packet)` | This method decides how incoming packets are distributed among processing threads.
    `void` | `initBindings​(javax.script.Bindings binds)` | Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
    `void` | `initNewConnection​(java.util.Map<java.lang.String,​java.lang.Object> port_props)` |
    `protected boolean` | `isHighThroughput()` |
    `boolean` | `isTlsNeedClientAuthEnabled()` |
    `boolean` | `isTlsRequired​(java.lang.String domain)` | Checks if TLS is required for particular domain
    `boolean` | `isTlsWantClientAuthEnabled()` |
    `void` | `processPacket​(Packet packet)` | This is the main `Packet` processing method.
    `java.util.Queue<Packet>` | `processSocketData​(S2SIOService serv)` |
    `boolean` | `processUndeliveredPacket​(Packet packet, java.lang.Long stamp, java.lang.String errorMessage)` | Processes undelivered packets
    `void` | `reconnectionFailed​(java.util.Map<java.lang.String,​java.lang.Object> port_props)` |
    `int` | `schedulerThreads()` | Method returns default number of threads used by SchedulerExecutorService
    `boolean` | `sendVerifyResult​(java.lang.String elem_name, CID connCid, CID keyCid, java.lang.Boolean valid, java.lang.String key_sessionId, java.lang.String serv_sessionId, java.lang.String cdata, boolean handshakingOnly)` |
    `boolean` | `sendVerifyResult​(java.lang.String elem_name, CID connCid, CID keyCid, java.lang.Boolean valid, java.lang.String key_sessionId, java.lang.String serv_sessionId, java.lang.String cdata, boolean handshakingOnly, Element errorElem)` |
    `void` | `serviceConnected​(S2SIOService service)` |
    `void` | `serviceStarted​(S2SIOService serv)` |
    `boolean` | `serviceStopped​(S2SIOService serv)` |
    `void` | `setProcessors​(java.util.List<S2SProcessor> processors)` |
    `void` | `tlsHandshakeCompleted​(S2SIOService serv)` |
    `void` | `writeRawData​(S2SIOService ios, java.lang.String data)` |
    `void` | `xmppStreamClosed​(S2SIOService serv)` |
    `java.lang.String[]` | `xmppStreamOpened​(S2SIOService serv, java.util.Map<java.lang.String,​java.lang.String> attribs)` |

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

      `addWaitingTask, beanConfigurationChanged, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, enableServiceConnectedTimeout, everyMinute, getDefPorts, getDefSSLPorts, getFlashCrossDomainPolicy, getNet_buffer_limit, getParamsForPort, getPortsConfigBean, getServiceId, getServiceId, getTrafficThrottling, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, newWatchdog, packetsReady, processingInThreads, processingOutThreads, register, release, releaseListener, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, setupWatchdogThread, socketAccepted, start, startService, stop, unregister, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writePacketToSocket, xmppStreamError`

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

      `addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processOutPacket, processPacket, removeRegexRouting, setCompId, setIncoming_filters, setOutgoing_filters, setParent, setSchedulerThreads_size, updateFiltersName`

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

      `addComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, getVHostItem, handlesLocalDomains, handlesNameSubdomains, initialize, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, reloadScripts, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setProperties, setScriptsBaseDir, 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.MessageReceiver

      `getDefHostName`

    - ### Methods inherited from interface tigase.server.xmppserver.S2SConnectionHandlerIfc

      `getDefHostName, writePacketsToSocket, writePacketToSocket`

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

      `getComponentId, getComponentInfo, getName, isInitializationComplete`

    - ### Methods inherited from interface tigase.stats.StatisticsContainerIfc

      `getName`

- - ### Field Detail

    - #### CID_CONNECTIONS_BIND

          public static final java.lang.String CID_CONNECTIONS_BIND

      See Also:
        Constant Field Values

    - #### CID_CONNECTIONS_TASKS_THREADS_KEY

          public static final java.lang.String CID_CONNECTIONS_TASKS_THREADS_KEY

      See Also:
        Constant Field Values

    - #### MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY

          public static final java.lang.String MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY

      See Also:
        Constant Field Values

    - #### MAX_INCOMING_CONNECTIONS_PROP_KEY

          public static final java.lang.String MAX_INCOMING_CONNECTIONS_PROP_KEY

      See Also:
        Constant Field Values

    - #### MAX_INCOMING_CONNECTIONS_PROP_VAL

          public static final int MAX_INCOMING_CONNECTIONS_PROP_VAL

      See Also:
        Constant Field Values

    - #### MAX_OUT_PER_IP_CONNECTIONS_PROP_KEY

          public static final java.lang.String MAX_OUT_PER_IP_CONNECTIONS_PROP_KEY

      See Also:
        Constant Field Values

    - #### MAX_OUT_PER_IP_CONNECTIONS_PROP_VAL

          public static final int MAX_OUT_PER_IP_CONNECTIONS_PROP_VAL

      See Also:
        Constant Field Values

    - #### MAX_OUT_TOTAL_CONNECTIONS_PROP_KEY

          public static final java.lang.String MAX_OUT_TOTAL_CONNECTIONS_PROP_KEY

      See Also:
        Constant Field Values

    - #### MAX_OUT_TOTAL_CONNECTIONS_PROP_VAL

          public static final int MAX_OUT_TOTAL_CONNECTIONS_PROP_VAL

      See Also:
        Constant Field Values

    - #### MAX_PACKET_WAITING_TIME_PROP_KEY

          public static final java.lang.String MAX_PACKET_WAITING_TIME_PROP_KEY

      See Also:
        Constant Field Values

    - #### S2S_CONNECTION_SELECTOR_PROP_KEY

          public static final java.lang.String S2S_CONNECTION_SELECTOR_PROP_KEY

      See Also:
        Constant Field Values

    - #### S2S_CONNECTION_SELECTOR_PROP_VAL

          public static final java.lang.String S2S_CONNECTION_SELECTOR_PROP_VAL

      See Also:
        Constant Field Values

    - #### S2S_DOMAIN_MAPPING_PROP_KEY

          public static final java.lang.String S2S_DOMAIN_MAPPING_PROP_KEY

      See Also:
        Constant Field Values

    - #### S2S_DOMAIN_MAPPING_PROP_VAL

          public static final java.lang.String S2S_DOMAIN_MAPPING_PROP_VAL

      See Also:
        Constant Field Values

    - #### S2S_HT_TRAFFIC_THROTTLING_PROP_VAL

          public static final java.lang.String S2S_HT_TRAFFIC_THROTTLING_PROP_VAL

      See Also:
        Constant Field Values

    - #### MAX_PACKET_WAITING_TIME_PROP_VAL

          public static final long MAX_PACKET_WAITING_TIME_PROP_VAL

      See Also:
        Constant Field Values

    - #### CID_CONNECTIONS_TASKS_THREADS_VAL

          public static final int CID_CONNECTIONS_TASKS_THREADS_VAL

    - #### XMLNS_SERVER_VAL

          public static final java.lang.String XMLNS_SERVER_VAL

      See Also:
        Constant Field Values

    - #### DB_RESULT_EL_NAME

          protected static final java.lang.String DB_RESULT_EL_NAME

      See Also:
        Constant Field Values

    - #### DB_VERIFY_EL_NAME

          protected static final java.lang.String DB_VERIFY_EL_NAME

      See Also:
        Constant Field Values

    - #### cidConnections

          protected java.util.Map<CID,​CIDConnections> cidConnections

      Outgoing and incoming connections for a given domains pair (localdomain, remotedomain)

  - ### Constructor Detail

    - #### S2SConnectionManager

          public S2SConnectionManager()

  - ### Method Detail

    - #### addOutPacket

          public boolean addOutPacket​(Packet packet)

      Specified by:
        `addOutPacket` in interface `S2SConnectionHandlerIfc<S2SIOService>`
      Overrides:
        `addOutPacket` in class `AbstractMessageReceiver`

    - #### addTimerTask

          public void addTimerTask​(TimerTask task,
                                   long delay,
                                   java.util.concurrent.TimeUnit unit)

      Description copied from class: `AbstractMessageReceiver`
      Method queues and executes timer tasks using ScheduledExecutorService which allows using more than one thread for executing tasks.
      Specified by:
        `addTimerTask` in interface `S2SConnectionHandlerIfc<S2SIOService>`
      Overrides:
        `addTimerTask` in class `AbstractMessageReceiver`

    - #### handlesNonLocalDomains

          public boolean handlesNonLocalDomains()

      Description copied from interface: `VHostListener`
      Indicates whether the component can handle all packets to non-local domains. S2s connection manager component is the best example of the component which handles all requests sent to non-local domains.
      Specified by:
        `handlesNonLocalDomains` in interface `VHostListener`
      Overrides:
        `handlesNonLocalDomains` in class `BasicComponent`
      Returns:
        'true' if the component accepts packets to non-local domains 'false' otherwise.

    - #### hashCodeForPacket

          public int hashCodeForPacket​(Packet packet)

      Description copied from class: `AbstractMessageReceiver`
      This method decides how incoming packets are distributed among processing threads. Different components needs different distribution to efficient use all threads and avoid packets re-ordering.
      If there are N processing threads, packets are distributed among threads using following code:

           int threadNo = Math.abs(hashCodeForPacket(packet) % N);

      For a PubSub component, for example, a better packets distribution would be based on the PubSub channel name, for SM a better distribution is based on the destination address, etc....
      Overrides:
        `hashCodeForPacket` in class `ConnectionManager<S2SIOService>`
      Parameters:
        `packet` - is a `Packet` which needs to be processed by some thread.
      Returns:
        a hash code generated for the input thread.

    - #### initBindings

          public void initBindings​(javax.script.Bindings binds)

      Description copied from class: `BasicComponent`
      Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
      Overrides:
        `initBindings` in class `ConnectionManager<S2SIOService>`
      Parameters:
        `binds` - A mapping of key/value pairs, all of whose keys are Strings.

    - #### initNewConnection

          public void initNewConnection​(java.util.Map<java.lang.String,​java.lang.Object> port_props)

      Specified by:
        `initNewConnection` in interface `S2SConnectionHandlerIfc<S2SIOService>`

    - #### processPacket

          public void processPacket​(Packet packet)

      Description copied from class: `AbstractMessageReceiver`
      This is the main `Packet` processing method. It is called concurrently from many threads so implementing it in thread save manner is essential. The method is called for each packet addressed to the component.
      Please note, the `Packet` instance may be processed by different parts of the server, different components or plugins at the same time. Therefore this is very important to tread the `Packet` instance as unmodifiable object.
      Processing in this method is asynchronous, therefore there is no result value. If there are some 'result' packets generated during processing, they should be passed back using `addOutPacket(Packet)` method.
      Overrides:
        `processPacket` in class `ConnectionManager<S2SIOService>`
      Parameters:
        `packet` - is an instance of the `Packet` class passed for processing.

    - #### processSocketData

          public java.util.Queue<Packet> processSocketData​(S2SIOService serv)

      Specified by:
        `processSocketData` in class `ConnectionManager<S2SIOService>`

    - #### processUndeliveredPacket

          public boolean processUndeliveredPacket​(Packet packet,
                                                  java.lang.Long stamp,
                                                  java.lang.String errorMessage)

      Description copied from class: `ConnectionManager`
      Processes undelivered packets
      Specified by:
        `processUndeliveredPacket` in class `ConnectionManager<S2SIOService>`
        `stamp` - - timestamp when packet was received to be written to XMPPIOService

    - #### reconnectionFailed

          public void reconnectionFailed​(java.util.Map<java.lang.String,​java.lang.Object> port_props)

      Specified by:
        `reconnectionFailed` in class `ConnectionManager<S2SIOService>`

    - #### schedulerThreads

          public int schedulerThreads()

      Description copied from class: `AbstractMessageReceiver`
      Method returns default number of threads used by SchedulerExecutorService
      Overrides:
        `schedulerThreads` in class `AbstractMessageReceiver`
      Returns:
        a value of `int`

    - #### sendVerifyResult

          public boolean sendVerifyResult​(java.lang.String elem_name,
                                          CID connCid,
                                          CID keyCid,
                                          java.lang.Boolean valid,
                                          java.lang.String key_sessionId,
                                          java.lang.String serv_sessionId,
                                          java.lang.String cdata,
                                          boolean handshakingOnly)

      Specified by:
        `sendVerifyResult` in interface `S2SConnectionHandlerIfc<S2SIOService>`

    - #### sendVerifyResult

          public boolean sendVerifyResult​(java.lang.String elem_name,
                                          CID connCid,
                                          CID keyCid,
                                          java.lang.Boolean valid,
                                          java.lang.String key_sessionId,
                                          java.lang.String serv_sessionId,
                                          java.lang.String cdata,
                                          boolean handshakingOnly,
                                          Element errorElem)

      Specified by:
        `sendVerifyResult` in interface `S2SConnectionHandlerIfc<S2SIOService>`

    - #### serviceConnected

          public void serviceConnected​(S2SIOService service)

      Specified by:
        `serviceConnected` in interface `S2SConnectionHandlerIfc<S2SIOService>`
      Overrides:
        `serviceConnected` in class `ConnectionManager<S2SIOService>`

    - #### serviceStarted

          public void serviceStarted​(S2SIOService serv)

      Overrides:
        `serviceStarted` in class `ConnectionManager<S2SIOService>`

    - #### serviceStopped

          public boolean serviceStopped​(S2SIOService serv)

      Specified by:
        `serviceStopped` in interface `IOServiceListener<S2SIOService>`
      Overrides:
        `serviceStopped` in class `ConnectionManager<S2SIOService>`

    - #### tlsHandshakeCompleted

          public void tlsHandshakeCompleted​(S2SIOService serv)

      Specified by:
        `tlsHandshakeCompleted` in interface `IOServiceListener<S2SIOService>`

    - #### writeRawData

          public void writeRawData​(S2SIOService ios,
                                   java.lang.String data)

      Specified by:
        `writeRawData` in interface `S2SConnectionHandlerIfc<S2SIOService>`
      Overrides:
        `writeRawData` in class `ConnectionManager<S2SIOService>`

    - #### xmppStreamClosed

          public void xmppStreamClosed​(S2SIOService serv)

      Specified by:
        `xmppStreamClosed` in interface `XMPPIOServiceListener<S2SIOService>`

    - #### xmppStreamOpened

          public java.lang.String[] xmppStreamOpened​(S2SIOService serv,
                                                     java.util.Map<java.lang.String,​java.lang.String> attribs)

      Specified by:
        `xmppStreamOpened` in interface `XMPPIOServiceListener<S2SIOService>`

    - #### getCIDConnections

          public CIDConnections getCIDConnections​(CID cid,
                                                  boolean createNew)
                                           throws NotLocalhostException,
                                                  LocalhostException

      Specified by:
        `getCIDConnections` in interface `S2SConnectionHandlerIfc<S2SIOService>`
      Throws:
        `NotLocalhostException`
        `LocalhostException`

    - #### getConnectionOpenerService

          public CIDConnections.CIDConnectionsOpenerService getConnectionOpenerService()

      Specified by:
        `getConnectionOpenerService` in interface `S2SConnectionHandlerIfc<S2SIOService>`

    - #### getDiscoCategoryType

          public java.lang.String getDiscoCategoryType()

      Description copied from class: `BasicComponent`
      Method returns component category type used for service discovery responses.
      Overrides:
        `getDiscoCategoryType` in class `BasicComponent`
      Returns:
        category type of a component

    - #### getDiscoDescription

          public java.lang.String getDiscoDescription()

      Description copied from class: `BasicComponent`
      Method returns description used for service discovery responses.
      Overrides:
        `getDiscoDescription` in class `BasicComponent`
      Returns:
        description of a component

    - #### getSecretForDomain

          public java.lang.String getSecretForDomain​(java.lang.String domain)
                                              throws NotLocalhostException

      Returns secret used for particular domain
      Secret is used in generation of dialback key
      Specified by:
        `getSecretForDomain` in interface `S2SConnectionHandlerIfc<S2SIOService>`
      Parameters:
        `domain` - for which secret should be returned
      Returns:
        for particular domain
      Throws:
        `NotLocalhostException` - if the domain is not local

    - #### getServerNameForDomain

          public java.lang.String getServerNameForDomain​(java.lang.String domain)

      Specified by:
        `getServerNameForDomain` in interface `S2SConnectionHandlerIfc<S2SIOService>`

    - #### getStatistics

          public void getStatistics​(StatisticsList list)

      Description copied from class: `AbstractMessageReceiver`
      Method returns component statistics. Please note, the method can be called every second by the server monitoring system therefore no extensive or lengthy calculations are allowed. If there are some statistics requiring lengthy operations like database access they must have `Level.FINEST` assigned and must be put inside the level guard to prevent generating them by the system monitor. The system monitor does not collect `FINEST` statistics.
      Level guard code looks like the example below:

           if (list.checkLevel(Level.FINEST)) {
             // Some CPU intensive calculations or lengthy operations
             list.add(getName(), "Statistic description", stat_value, Level.FINEST);
           }

      This way you make sure your extensive operation is not executed every second by the monitoring system and does not affect the server performance.
      Specified by:
        `getStatistics` in interface `StatisticsContainerIfc`
      Overrides:
        `getStatistics` in class `ConnectionManager<S2SIOService>`
      Parameters:
        `list` - is a `StatistcsList` where all statistics are stored.

    - #### getStreamFeatures

          public java.util.List<Element> getStreamFeatures​(S2SIOService serv)

      Description copied from interface: `S2SConnectionHandlerIfc`
      Returns stream features available for particular S2S connection.
      Specified by:
        `getStreamFeatures` in interface `S2SConnectionHandlerIfc<S2SIOService>`
      Parameters:
        `serv` - `S2SIOService` for which stream features should be retrieved
      Returns:
        list of stream features

    - #### isTlsRequired

          public boolean isTlsRequired​(java.lang.String domain)

      Description copied from interface: `S2SConnectionHandlerIfc`
      Checks if TLS is required for particular domain
      Specified by:
        `isTlsRequired` in interface `S2SConnectionHandlerIfc<S2SIOService>`
      Parameters:
        `domain` - for which secret should be returned
      Returns:
        boolean indicating whether TLS is required

    - #### isTlsWantClientAuthEnabled

          public boolean isTlsWantClientAuthEnabled()

      Specified by:
        `isTlsWantClientAuthEnabled` in interface `S2SConnectionHandlerIfc<S2SIOService>`

    - #### isTlsNeedClientAuthEnabled

          public boolean isTlsNeedClientAuthEnabled()

      Specified by:
        `isTlsNeedClientAuthEnabled` in interface `S2SConnectionHandlerIfc<S2SIOService>`

    - #### setProcessors

          public void setProcessors​(java.util.List<S2SProcessor> processors)

    - #### getDefPlainPorts

          protected int[] getDefPlainPorts()

      Overrides:
        `getDefPlainPorts` in class `ConnectionManager<S2SIOService>`

    - #### getDefTrafficThrottling

          protected java.lang.String getDefTrafficThrottling()

      Method from ConnectionManager is overriden as it uses local value S2S_HT_TRAFFIC_THROTTLING_PROP_VAL
      Overrides:
        `getDefTrafficThrottling` in class `ConnectionManager<S2SIOService>`

    - #### getMaxInactiveTime

          protected long getMaxInactiveTime()

      Specified by:
        `getMaxInactiveTime` in class `ConnectionManager<S2SIOService>`

    - #### getXMPPIOServiceInstance

          protected S2SIOService getXMPPIOServiceInstance()

      Specified by:
        `getXMPPIOServiceInstance` in class `ConnectionManager<S2SIOService>`

    - #### isHighThroughput

          protected boolean isHighThroughput()

      Overrides:
        `isHighThroughput` in class `ConnectionManager<S2SIOService>`

    - #### createNewCIDConnections

          protected CIDConnections createNewCIDConnections​(CID cid)
                                                    throws NotLocalhostException,
                                                           LocalhostException

      Throws:
        `NotLocalhostException`
        `LocalhostException`