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 final String`
  `CID_CONNECTIONS_BIND`
  `static final String`
  `CID_CONNECTIONS_TASKS_THREADS_KEY`
  `static final int`
  `CID_CONNECTIONS_TASKS_THREADS_VAL`
  `static final String`
  `CID_KEY`
  `protected Map<CID,CIDConnections>`
  `cidConnections`
  Outgoing and incoming connections for a given domains pair (localdomain, remotedomain)
  `protected static final String`
  `DB_RESULT_EL_NAME`
  `protected static final String`
  `DB_VERIFY_EL_NAME`
  `static final String`
  `MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY`
  `static final String`
  `MAX_INCOMING_CONNECTIONS_PROP_KEY`
  `static final int`
  `MAX_INCOMING_CONNECTIONS_PROP_VAL`
  `static final String`
  `MAX_OUT_PER_IP_CONNECTIONS_PROP_KEY`
  `static final int`
  `MAX_OUT_PER_IP_CONNECTIONS_PROP_VAL`
  `static final String`
  `MAX_OUT_TOTAL_CONNECTIONS_PROP_KEY`
  `static final int`
  `MAX_OUT_TOTAL_CONNECTIONS_PROP_VAL`
  `static final String`
  `MAX_PACKET_WAITING_TIME_PROP_KEY`
  `static final long`
  `MAX_PACKET_WAITING_TIME_PROP_VAL`
  `static final String`
  `S2S_CONNECTION_SELECTOR_PROP_KEY`
  `static final String`
  `S2S_CONNECTION_SELECTOR_PROP_VAL`
  `static final String`
  `S2S_DOMAIN_MAPPING_PROP_KEY`
  `static final String`
  `S2S_DOMAIN_MAPPING_PROP_VAL`
  `static final String`
  `S2S_HT_TRAFFIC_THROTTLING_PROP_VAL`
  `static final 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, SOCKET_BUFFER_HT_PROP_VAL, SOCKET_BUFFER_ST_PROP_VAL, 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

  Modifier and Type
  Method
  Description
  `boolean`
  `addOutPacket(Packet packet)`
  `void`
  `addTimerTask(TimerTask task, long delay, 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 String`
  `getDefTrafficThrottling()`
  Method from ConnectionManager is overriden as it uses local value S2S_HT_TRAFFIC_THROTTLING_PROP_VAL
  `String`
  `getDiscoCategoryType()`
  Method returns component category type used for service discovery responses.
  `String`
  `getDiscoDescription()`
  Method returns description used for service discovery responses.
  `protected long`
  `getMaxInactiveTime()`
  `String`
  `getSecretForDomain(String domain)`
  Returns secret used for particular domain
  `String`
  `getServerNameForDomain(String domain)`
  `void`
  `getStatistics(StatisticsList list)`
  Method returns component statistics.
  `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(Bindings binds)`
  Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
  `void`
  `initNewConnection(Map<String,Object> port_props)`
  `protected boolean`
  `isHighThroughput()`
  `boolean`
  `isTlsNeedClientAuthEnabled()`
  `boolean`
  `isTlsRequired(String domain)`
  Checks if TLS is required for particular domain
  `boolean`
  `isTlsWantClientAuthEnabled()`
  `void`
  `processPacket(Packet packet)`
  This is the main `Packet` processing method.
  `Queue<Packet>`
  `processSocketData(S2SIOService serv)`
  `boolean`
  `processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)`
  Processes undelivered packets
  `void`
  `reconnectionFailed(Map<String,Object> port_props)`
  `int`
  `schedulerThreads()`
  Method returns default number of threads used by SchedulerExecutorService
  `boolean`
  `sendVerifyResult(String elem_name, CID connCid, CID keyCid, Boolean valid, String key_sessionId, String serv_sessionId, String cdata, boolean handshakingOnly)`
  `boolean`
  `sendVerifyResult(String elem_name, CID connCid, CID keyCid, Boolean valid, String key_sessionId, String serv_sessionId, String cdata, boolean handshakingOnly, Element errorElem)`
  `void`
  `serviceConnected(S2SIOService service)`
  `void`
  `serviceStarted(S2SIOService serv)`
  `boolean`
  `serviceStopped(S2SIOService serv)`
  `void`
  `setProcessors(List<S2SProcessor> processors)`
  `void`
  `tlsHandshakeCompleted(S2SIOService serv)`
  `void`
  `validateCIDConnection(CID cid)`
  `void`
  `writeRawData(S2SIOService ios, String data)`
  `void`
  `xmppStreamClosed(S2SIOService serv)`
  `String[]`
  `xmppStreamOpened(S2SIOService serv, Map<String,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, redeliverWaitingPackets, register, release, releaseListener, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, setupWatchdogThread, setWatchdogPingType, shouldRedeliverWaitingPackets, 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 Details

  - ### CID_CONNECTIONS_BIND

    public static final String CID_CONNECTIONS_BIND
    See Also:
      - Constant Field Values

  - ### CID_KEY

    public static final String CID_KEY
    See Also:
      - Constant Field Values

  - ### CID_CONNECTIONS_TASKS_THREADS_KEY

    public static final String CID_CONNECTIONS_TASKS_THREADS_KEY
    See Also:
      - Constant Field Values

  - ### MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY

    public static final String MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY
    See Also:
      - Constant Field Values

  - ### MAX_INCOMING_CONNECTIONS_PROP_KEY

    public static final 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 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 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 String MAX_PACKET_WAITING_TIME_PROP_KEY
    See Also:
      - Constant Field Values

  - ### S2S_CONNECTION_SELECTOR_PROP_KEY

    public static final String S2S_CONNECTION_SELECTOR_PROP_KEY
    See Also:
      - Constant Field Values

  - ### S2S_CONNECTION_SELECTOR_PROP_VAL

    public static final String S2S_CONNECTION_SELECTOR_PROP_VAL
    See Also:
      - Constant Field Values

  - ### S2S_DOMAIN_MAPPING_PROP_KEY

    public static final String S2S_DOMAIN_MAPPING_PROP_KEY
    See Also:
      - Constant Field Values

  - ### S2S_DOMAIN_MAPPING_PROP_VAL

    public static final String S2S_DOMAIN_MAPPING_PROP_VAL
    See Also:
      - Constant Field Values

  - ### S2S_HT_TRAFFIC_THROTTLING_PROP_VAL

    public static final 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 String XMLNS_SERVER_VAL
    See Also:
      - Constant Field Values

  - ### DB_RESULT_EL_NAME

    protected static final String DB_RESULT_EL_NAME
    See Also:
      - Constant Field Values

  - ### DB_VERIFY_EL_NAME

    protected static final String DB_VERIFY_EL_NAME
    See Also:
      - Constant Field Values

  - ### cidConnections

    protected Map<CID,CIDConnections> cidConnections
    Outgoing and incoming connections for a given domains pair (localdomain, remotedomain)

- ## Constructor Details

  - ### S2SConnectionManager

    public S2SConnectionManager()

- ## Method Details

  - ### 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, 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(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(Map<String,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 Queue<Packet> processSocketData(S2SIOService serv)
    Specified by:
      `processSocketData` in class `ConnectionManager<S2SIOService>`

  - ### processUndeliveredPacket

    public boolean processUndeliveredPacket(Packet packet, Long stamp, 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(Map<String,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(String elem_name, CID connCid, CID keyCid, Boolean valid, String key_sessionId, String serv_sessionId, String cdata, boolean handshakingOnly)
    Specified by:
      `sendVerifyResult` in interface `S2SConnectionHandlerIfc<S2SIOService>`

  - ### sendVerifyResult

    public boolean sendVerifyResult(String elem_name, CID connCid, CID keyCid, Boolean valid, String key_sessionId, String serv_sessionId, 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, 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 String[] xmppStreamOpened(S2SIOService serv, Map<String,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`

  - ### validateCIDConnection

    public void validateCIDConnection(CID cid) throws NotLocalhostException, LocalhostException
    Specified by:
      `validateCIDConnection` in interface `S2SConnectionHandlerIfc<S2SIOService>`
    Throws:
      `NotLocalhostException`
      `LocalhostException`

  - ### getConnectionOpenerService

    public CIDConnections.CIDConnectionsOpenerService getConnectionOpenerService()
    Specified by:
      `getConnectionOpenerService` in interface `S2SConnectionHandlerIfc<S2SIOService>`

  - ### getDiscoCategoryType

    public 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 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 String getSecretForDomain(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 String getServerNameForDomain(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 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(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(List<S2SProcessor> processors)

  - ### getDefPlainPorts

    protected int[] getDefPlainPorts()
    Overrides:
      `getDefPlainPorts` in class `ConnectionManager<S2SIOService>`

  - ### getDefTrafficThrottling

    protected 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`