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, IOServiceListener<S2SIOService>, MessageReceiver, ServerComponent, S2SConnectionHandlerIfc<S2SIOService>, StatisticsContainer, StatisticsContainerIfc, VHostListener, XMPPIOServiceListener<S2SIOService>

      public class S2SConnectionManager
      extends ConnectionManager<S2SIOService>
      implements S2SConnectionHandlerIfc<S2SIOService>

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

- - ### Nested Class Summary

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

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

      `ConnectionManager.LIMIT_ACTION, ConnectionManager.Watchdog, ConnectionManager.WATCHDOG_PING_TYPE`

  - ### Field Summary

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

    - ### 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, 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_PROP_KEY, NET_BUFFER_LIMIT_ST_PROP_VAL, NET_BUFFER_PROP_KEY, 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_REMOTE_HOST_PROP_KEY, PORT_REMOTE_HOST_PROP_VAL, PORT_SOCKET_PROP_KEY, PORT_TYPE_PROP_KEY, PORTS_PROP_KEY, PROP_KEY, ST_TRAFFIC_THROTTLING_PROP_KEY, ST_TRAFFIC_THROTTLING_PROP_VAL, TLS_PROP_KEY, TLS_REQUIRED_PROP_KEY, TLS_REQUIRED_PROP_VAL, TLS_USE_PROP_KEY, TLS_USE_PROP_VAL, TOTAL_BIN_LIMIT_PROP_VAL, TOTAL_PACKETS_LIMIT_PROP_VAL, TRAFFIC_THROTTLING_PROP_KEY, 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, 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.disco.XMPPService

      `CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `S2SConnectionManager()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and 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.
    `void` | `addTimerTask(TimerTask task, long delay, TimeUnit unit)` Deprecated.
    `protected CIDConnections` | `createNewCIDConnections(CID cid)`
    `CIDConnections` | `getCIDConnections(CID cid, boolean createNew)`
    `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.
    `protected int[]` | `getDefPlainPorts()` Method description
    `protected String` | `getDefTrafficThrottling()` Method from ConnectionManager is overriden as it uses local value S2S_HT_TRAFFIC_THROTTLING_PROP_VAL
    `String` | `getDiscoCategoryType()` Method description
    `String` | `getDiscoDescription()` Method description
    `protected long` | `getMaxInactiveTime()` Method description
    `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)` Method description
    `protected S2SIOService` | `getXMPPIOServiceInstance()` Method description
    `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()` Method description
    `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` | `serviceStarted(S2SIOService serv)`
    `boolean` | `serviceStopped(S2SIOService serv)`
    `void` | `setProperties(Map<String,Object> props)` Sets all configuration properties for the object.
    `void` | `tlsHandshakeCompleted(S2SIOService serv)`
    `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, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefSSLPorts, getParamsForPort, getServiceId, getServiceId, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, newWatchdog, packetsReady, processingInThreads, processingOutThreads, release, setName, setupWatchdogThread, socketAccepted, stop, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writePacketToSocket, xmppStreamError`

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

      `addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, removeRegexRouting, setMaxQueueSize, setParent, start`

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

      `addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, 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.xmppserver.S2SConnectionHandlerIfc

      `getDefHostName, writePacketsToSocket, writePacketToSocket`

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

      `getName`

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

      `getDefHostName`

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

      `getComponentId, getComponentInfo, getName, isInitializationComplete`

- - ### Field Detail

    - #### CID_CONNECTIONS_BIND

          public static final String CID_CONNECTIONS_BIND

      Field description
      See Also:
        Constant Field Values

    - #### CID_CONNECTIONS_TASKS_THREADS_KEY

          public static final String CID_CONNECTIONS_TASKS_THREADS_KEY

      Field description
      See Also:
        Constant Field Values

    - #### MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY

          public static final String MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### MAX_INCOMING_CONNECTIONS_PROP_KEY

          public static final String MAX_INCOMING_CONNECTIONS_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### MAX_INCOMING_CONNECTIONS_PROP_VAL

          public static final int MAX_INCOMING_CONNECTIONS_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### MAX_OUT_PER_IP_CONNECTIONS_PROP_KEY

          public static final String MAX_OUT_PER_IP_CONNECTIONS_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### MAX_OUT_PER_IP_CONNECTIONS_PROP_VAL

          public static final int MAX_OUT_PER_IP_CONNECTIONS_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### MAX_OUT_TOTAL_CONNECTIONS_PROP_KEY

          public static final String MAX_OUT_TOTAL_CONNECTIONS_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### MAX_OUT_TOTAL_CONNECTIONS_PROP_VAL

          public static final int MAX_OUT_TOTAL_CONNECTIONS_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### MAX_PACKET_WAITING_TIME_PROP_KEY

          public static final String MAX_PACKET_WAITING_TIME_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### S2S_CONNECTION_SELECTOR_PROP_KEY

          public static final String S2S_CONNECTION_SELECTOR_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### S2S_CONNECTION_SELECTOR_PROP_VAL

          public static final String S2S_CONNECTION_SELECTOR_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### S2S_DOMAIN_MAPPING_PROP_KEY

          public static final String S2S_DOMAIN_MAPPING_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### S2S_DOMAIN_MAPPING_PROP_VAL

          public static final String S2S_DOMAIN_MAPPING_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### S2S_HT_TRAFFIC_THROTTLING_PROP_VAL

          public static final String S2S_HT_TRAFFIC_THROTTLING_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### DB_RESULT_EL_NAME

          protected static final String DB_RESULT_EL_NAME

      Field description
      See Also:
        Constant Field Values

    - #### DB_VERIFY_EL_NAME

          protected static final String DB_VERIFY_EL_NAME

      Field description
      See Also:
        Constant Field Values

    - #### MAX_PACKET_WAITING_TIME_PROP_VAL

          public static final long MAX_PACKET_WAITING_TIME_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### MAX_CONNECTION_INACTIVITY_TIME_PROP_VAL

          public static final long MAX_CONNECTION_INACTIVITY_TIME_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### CID_CONNECTIONS_TASKS_THREADS_VAL

          public static final int CID_CONNECTIONS_TASKS_THREADS_VAL

      Field description

    - #### cidConnections

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

    - #### addTimerTask

          @Deprecated
          public void addTimerTask(TimerTask task,
                                               long delay,
                                               TimeUnit unit)

      Deprecated.
      Description copied from class: `AbstractMessageReceiver`
      Method queues and executes all timer tasks on Timer SINGLE thread.
      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>`

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

    - #### getDefaults

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

      Description copied from class: `AbstractMessageReceiver`
      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 `ConnectionManager<S2SIOService>`
      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`

    - #### 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`
      Method description
      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>`

    - #### setProperties

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

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

    - #### getDefPlainPorts

          protected int[] getDefPlainPorts()

      Description copied from class: `ConnectionManager`
      Method description
      Overrides:
        `getDefPlainPorts` in class `ConnectionManager<S2SIOService>`
      Returns:
        a value of `int[]`

    - #### 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>`
      Returns:

    - #### getMaxInactiveTime

          protected long getMaxInactiveTime()

      Description copied from class: `ConnectionManager`
      Method description
      Specified by:
        `getMaxInactiveTime` in class `ConnectionManager<S2SIOService>`
      Returns:
        a value of `long`

    - #### getXMPPIOServiceInstance

          protected S2SIOService getXMPPIOServiceInstance()

      Description copied from class: `ConnectionManager`
      Method description
      Specified by:
        `getXMPPIOServiceInstance` in class `ConnectionManager<S2SIOService>`
      Returns:
        a value of `IO`

    - #### isHighThroughput

          protected boolean isHighThroughput()

      Description copied from class: `ConnectionManager`
      Method description
      Overrides:
        `isHighThroughput` in class `ConnectionManager<S2SIOService>`
      Returns:
        a value of `boolean`

    - #### createNewCIDConnections

          protected CIDConnections createNewCIDConnections(CID cid)
                                                    throws NotLocalhostException,
                                                           LocalhostException

      Throws:
        `NotLocalhostException`
        `LocalhostException`

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