tigase.server

## Class ConnectionManager<IO extends XMPPIOService<?>>

- java.lang.Object
- - tigase.server.BasicComponent
  - - tigase.server.AbstractMessageReceiver
    - - tigase.server.ConnectionManager<IO>

- Type Parameters:
    `IO` -
  All Implemented Interfaces:
    Configurable, XMPPService, IOServiceListener<IO>, MessageReceiver, ServerComponent, StatisticsContainer, VHostListener, XMPPIOServiceListener<IO>
  Direct Known Subclasses:
    ClientConnectionManager, ClusterConnectionManager, ComponentConnectionManager, ComponentProtocol, S2SConnectionManager, ServerConnectionManager

      public abstract class ConnectionManager<IO extends XMPPIOService<?>>
      extends AbstractMessageReceiver
      implements XMPPIOServiceListener<IO>

  Describe class ConnectionManager here. Created: Sun Jan 22 22:52:58 2006
  Version:
    $Rev$
  Author:
    Artur Hefczyc

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ConnectionManager.LIMIT_ACTION` Describe class `LIMIT_ACTION` here.
    `static class` | `ConnectionManager.WATCHDOG_PING_TYPE` Holds possible types of ping to be used in watchdog service for detection of broken connections

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected long` | `connectionDelay` Field description
    `protected int` | `elements_number_limit` Protection from the system overload and DOS attack.
    `static String` | `ELEMENTS_NUMBER_LIMIT_PROP_KEY` Key name of the system property for configuration protection from system overload and DOS attack.
    `static int` | `ELEMENTS_NUMBER_LIMIT_PROP_VAL` Default value for the system property for configuration protection from system overload and DOS attack.
    `static String` | `HT_TRAFFIC_THROTTLING_PROP_KEY` Field description
    `static String` | `HT_TRAFFIC_THROTTLING_PROP_VAL` Field description
    `protected static long` | `LAST_MINUTE_BIN_LIMIT_PROP_VAL` Field description
    `protected static long` | `LAST_MINUTE_PACKETS_LIMIT_PROP_VAL` Field description
    `protected static String` | `MAX_INACTIVITY_TIME` Field description
    `protected static String` | `MAX_RECONNECTS_PROP_KEY` Field description
    `protected int` | `net_buffer` Field description
    `static String` | `NET_BUFFER_HT_PROP_KEY` Field description.
    `protected static int` | `NET_BUFFER_HT_PROP_VAL` Field description
    `protected static int` | `NET_BUFFER_LIMIT_HT_PROP_VAL` Field description
    `protected static String` | `NET_BUFFER_LIMIT_PROP_KEY` Field description
    `protected static int` | `NET_BUFFER_LIMIT_ST_PROP_VAL` Field description
    `protected static String` | `NET_BUFFER_PROP_KEY` Field description
    `static String` | `NET_BUFFER_ST_PROP_KEY` Field description.
    `protected static int` | `NET_BUFFER_ST_PROP_VAL` Field description
    `protected static String` | `PORT_CLASS_PROP_KEY` Field description
    `protected static String` | `PORT_IFC_PROP_KEY` Field description
    `String[]` | `PORT_IFC_PROP_VAL` Field description.
    `protected static String` | `PORT_KEY` Field description
    `static String` | `PORT_LOCAL_HOST_PROP_KEY` Field description.
    `protected static String` | `PORT_REMOTE_HOST_PROP_KEY` Field description
    `protected static String` | `PORT_REMOTE_HOST_PROP_VAL` Field description
    `protected static String` | `PORT_SOCKET_PROP_KEY` Field description
    `protected static String` | `PORT_TYPE_PROP_KEY` Field description
    `protected static String` | `PORTS_PROP_KEY` Field description
    `protected static String` | `PROP_KEY` Field description
    `static String` | `ST_TRAFFIC_THROTTLING_PROP_KEY` Field description
    `static String` | `ST_TRAFFIC_THROTTLING_PROP_VAL` Field description
    `protected static String` | `TLS_PROP_KEY` Field description
    `protected static String` | `TLS_REQUIRED_PROP_KEY` Field description
    `protected static boolean` | `TLS_REQUIRED_PROP_VAL` Field description
    `protected static String` | `TLS_USE_PROP_KEY` Field description
    `protected static boolean` | `TLS_USE_PROP_VAL` Field description
    `protected static long` | `TOTAL_BIN_LIMIT_PROP_VAL` Field description
    `protected static long` | `TOTAL_PACKETS_LIMIT_PROP_VAL` Field description
    `static String` | `TRAFFIC_THROTTLING_PROP_KEY` Field description
    `protected static String` | `WATCHDOG_DELAY`
    `protected static String` | `WATCHDOG_PING_TYPE_KEY`
    `protected static String` | `WATCHDOG_TIMEOUT`
    `protected long` | `watchdogDelay`
    `protected ConnectionManager.WATCHDOG_PING_TYPE` | `watchdogPingType`
    `protected long` | `watchdogTimeout`
    `protected static String` | `WHITE_CHAR_ACK_PROP_KEY` Field description
    `protected static boolean` | `WHITE_CHAR_ACK_PROP_VAL` Field description
    `protected static String` | `XMPP_ACK_PROP_KEY` Field description
    `protected static boolean` | `XMPP_ACK_PROP_VAL` Field description

    - ### 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, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, 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, vHostManager`

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

      `ADMINS_PROP_KEY, AMP_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_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, 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
    `ConnectionManager()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addWaitingTask(Map<String,Object> conn)` Method description
    `protected <T> void` | `checkHighThroughputProperty(String ht_def_key, T ht_dev_val, String st_def_key, T st_def_val, String prop_key, Class<T> prop_val_class, Map<String,Object> params, Map<String,Object> props)` Method description
    `boolean` | `checkTrafficLimits(IO serv)` Method description
    `protected int` | `countIOServices()` Returns number of active network connections (IOServices).
    `protected void` | `doForAllServices(ServiceChecker<IO> checker)` Perform a given action defined by ServiceChecker for all active IOService objects (active network connections).
    `void` | `everyMinute()` Utility method executed precisely every minute.
    `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 int[]` | `getDefSSLPorts()` Method description
    `protected String` | `getDefTrafficThrottling()` Method description
    `protected abstract long` | `getMaxInactiveTime()` Method description
    `protected Map<String,Object>` | `getParamsForPort(int port)` Method description
    `protected String` | `getServiceId(tigase.xmpp.JID jid)` Method description
    `protected String` | `getServiceId(Packet packet)` Method description
    `void` | `getStatistics(StatisticsList list)` Method returns component statistics.
    `protected String` | `getUniqueId(IO serv)` Method description
    `protected IO` | `getXMPPIOService(Packet p)` Method description
    `IO` | `getXMPPIOService(String serviceId)` Method description
    `protected abstract IO` | `getXMPPIOServiceInstance()` Method description
    `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` | `initializationCompleted()` Method description
    `protected boolean` | `isHighThroughput()` Method description
    `protected boolean` | `isTlsWantClientAuthEnabled()` Method description
    `void` | `packetsReady(IO serv)`
    `int` | `processingInThreads()` Method description
    `int` | `processingOutThreads()` Method description
    `void` | `processPacket(Packet packet)` This is the main `Packet` processing method.
    `abstract Queue<Packet>` | `processSocketData(IO serv)` Method description
    `abstract void` | `reconnectionFailed(Map<String,Object> port_props)` Method description
    `void` | `release()` Method description
    `void` | `serviceStarted(IO service)` Method description
    `boolean` | `serviceStopped(IO service)`
    `void` | `setName(String name)` Method description
    `void` | `setProperties(Map<String,Object> props)` Sets all configuration properties for object.
    `void` | `stop()` Method description
    `void` | `updateConnectionDetails(Map<String,Object> port_props)` Method description
    `void` | `writePacketsToSocket(IO serv, Queue<Packet> packets)` Method description
    `boolean` | `writePacketToSocket(IO ios, Packet p)` Method description
    `protected boolean` | `writePacketToSocket(Packet p)`
    `protected boolean` | `writePacketToSocket(Packet p, String serviceId)` Method description
    `protected void` | `writeRawData(IO ios, String data)` Method description

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

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

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

      `addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, 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.xmpp.XMPPIOServiceListener

      `xmppStreamClosed, xmppStreamOpened`

    - ### Methods inherited from interface tigase.net.IOServiceListener

      `tlsHandshakeCompleted`

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

      `getDefHostName`

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

      `getComponentId, getComponentInfo, getName, isInitializationComplete`

- - ### Field Detail

    - #### HT_TRAFFIC_THROTTLING_PROP_KEY

          public static final String HT_TRAFFIC_THROTTLING_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### HT_TRAFFIC_THROTTLING_PROP_VAL

          public static final String HT_TRAFFIC_THROTTLING_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### NET_BUFFER_HT_PROP_KEY

          public static final String NET_BUFFER_HT_PROP_KEY

      Field description.
      See Also:
        Constant Field Values

    - #### NET_BUFFER_ST_PROP_KEY

          public static final String NET_BUFFER_ST_PROP_KEY

      Field description.
      See Also:
        Constant Field Values

    - #### PORT_LOCAL_HOST_PROP_KEY

          public static final String PORT_LOCAL_HOST_PROP_KEY

      Field description.
      See Also:
        Constant Field Values

    - #### ST_TRAFFIC_THROTTLING_PROP_KEY

          public static final String ST_TRAFFIC_THROTTLING_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### ST_TRAFFIC_THROTTLING_PROP_VAL

          public static final String ST_TRAFFIC_THROTTLING_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### TRAFFIC_THROTTLING_PROP_KEY

          public static final String TRAFFIC_THROTTLING_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### LAST_MINUTE_BIN_LIMIT_PROP_VAL

          protected static final long LAST_MINUTE_BIN_LIMIT_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### LAST_MINUTE_PACKETS_LIMIT_PROP_VAL

          protected static final long LAST_MINUTE_PACKETS_LIMIT_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### MAX_INACTIVITY_TIME

          protected static final String MAX_INACTIVITY_TIME

      Field description
      See Also:
        Constant Field Values

    - #### MAX_RECONNECTS_PROP_KEY

          protected static final String MAX_RECONNECTS_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### NET_BUFFER_HT_PROP_VAL

          protected static final int NET_BUFFER_HT_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### NET_BUFFER_PROP_KEY

          protected static final String NET_BUFFER_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### NET_BUFFER_ST_PROP_VAL

          protected static final int NET_BUFFER_ST_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### NET_BUFFER_LIMIT_HT_PROP_VAL

          protected static final int NET_BUFFER_LIMIT_HT_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### NET_BUFFER_LIMIT_PROP_KEY

          protected static final String NET_BUFFER_LIMIT_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### NET_BUFFER_LIMIT_ST_PROP_VAL

          protected static final int NET_BUFFER_LIMIT_ST_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### ELEMENTS_NUMBER_LIMIT_PROP_KEY

          public static final String ELEMENTS_NUMBER_LIMIT_PROP_KEY

      Key name of the system property for configuration protection from system overload and DOS attack.
      See Also:
        Constant Field Values

    - #### ELEMENTS_NUMBER_LIMIT_PROP_VAL

          public static int ELEMENTS_NUMBER_LIMIT_PROP_VAL

      Default value for the system property for configuration protection from system overload and DOS attack.

    - #### PORT_CLASS_PROP_KEY

          protected static final String PORT_CLASS_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### PORT_IFC_PROP_KEY

          protected static final String PORT_IFC_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### PORT_KEY

          protected static final String PORT_KEY

      Field description
      See Also:
        Constant Field Values

    - #### PORT_REMOTE_HOST_PROP_KEY

          protected static final String PORT_REMOTE_HOST_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### PORT_REMOTE_HOST_PROP_VAL

          protected static final String PORT_REMOTE_HOST_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### PORT_SOCKET_PROP_KEY

          protected static final String PORT_SOCKET_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### PORT_TYPE_PROP_KEY

          protected static final String PORT_TYPE_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### PROP_KEY

          protected static final String PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### TOTAL_BIN_LIMIT_PROP_VAL

          protected static final long TOTAL_BIN_LIMIT_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### TOTAL_PACKETS_LIMIT_PROP_VAL

          protected static final long TOTAL_PACKETS_LIMIT_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### WHITE_CHAR_ACK_PROP_KEY

          protected static final String WHITE_CHAR_ACK_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### XMPP_ACK_PROP_KEY

          protected static final String XMPP_ACK_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### XMPP_ACK_PROP_VAL

          protected static final boolean XMPP_ACK_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### WHITE_CHAR_ACK_PROP_VAL

          protected static final boolean WHITE_CHAR_ACK_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### PORTS_PROP_KEY

          protected static final String PORTS_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### TLS_USE_PROP_VAL

          protected static final boolean TLS_USE_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### TLS_PROP_KEY

          protected static final String TLS_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### TLS_USE_PROP_KEY

          protected static final String TLS_USE_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### TLS_REQUIRED_PROP_VAL

          protected static final boolean TLS_REQUIRED_PROP_VAL

      Field description
      See Also:
        Constant Field Values

    - #### TLS_REQUIRED_PROP_KEY

          protected static final String TLS_REQUIRED_PROP_KEY

      Field description
      See Also:
        Constant Field Values

    - #### WATCHDOG_DELAY

          protected static final String WATCHDOG_DELAY

      See Also:
        Constant Field Values

    - #### WATCHDOG_TIMEOUT

          protected static final String WATCHDOG_TIMEOUT

      See Also:
        Constant Field Values

    - #### WATCHDOG_PING_TYPE_KEY

          protected static final String WATCHDOG_PING_TYPE_KEY

      See Also:
        Constant Field Values

    - #### PORT_IFC_PROP_VAL

          public String[] PORT_IFC_PROP_VAL

      Field description.

    - #### watchdogDelay

          protected long watchdogDelay

    - #### watchdogTimeout

          protected long watchdogTimeout

    - #### elements_number_limit

          protected int elements_number_limit

      Protection from the system overload and DOS attack. We want to limit number of elements created within a single XMPP stanza.

    - #### net_buffer

          protected int net_buffer

      Field description

    - #### connectionDelay

          protected long connectionDelay

      Field description

    - #### watchdogPingType

          protected ConnectionManager.WATCHDOG_PING_TYPE watchdogPingType

  - ### Constructor Detail

    - #### ConnectionManager

          public ConnectionManager()

  - ### Method Detail

    - #### checkTrafficLimits

          public boolean checkTrafficLimits(IO serv)

      Method description
      Parameters:
        `serv` -
      Returns:
        a value of `boolean`

    - #### everyMinute

          public void everyMinute()

      Description copied from class: `AbstractMessageReceiver`
      Utility method executed precisely every minute. A component can overwrite the method to put own code to be executed at the regular intervals of time.

      Note, no extensive calculations should happen in this method nor long lasting operations. It is essential that the method processing does not exceed 1 minute. The overriding method must call the the super method first and only then run own code.
      Overrides:
        `everyMinute` in class `AbstractMessageReceiver`

    - #### 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 `AbstractMessageReceiver`
      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 `BasicComponent`
      Parameters:
        `binds` - A mapping of key/value pairs, all of whose keys are Strings.

    - #### initializationCompleted

          public void initializationCompleted()

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

    - #### packetsReady

          public void packetsReady(IO serv)
                            throws IOException

      Specified by:
        `packetsReady` in interface `IOServiceListener<IO extends XMPPIOService<?>>`
      Throws:
        `IOException`

    - #### processingInThreads

          public int processingInThreads()

      Description copied from class: `AbstractMessageReceiver`
      Method description
      Overrides:
        `processingInThreads` in class `AbstractMessageReceiver`
      Returns:
        a value of `int`

    - #### processingOutThreads

          public int processingOutThreads()

      Description copied from class: `AbstractMessageReceiver`
      Method description
      Overrides:
        `processingOutThreads` in class `AbstractMessageReceiver`
      Returns:
        a value of `int`

    - #### 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.
      Specified by:
        `processPacket` in class `AbstractMessageReceiver`
      Parameters:
        `packet` - is an instance of the `Packet` class passed for processing.

    - #### processSocketData

          public abstract Queue<Packet> processSocketData(IO serv)

      Method description
      Parameters:
        `serv` -
      Returns:
        a value of `Queue`

    - #### reconnectionFailed

          public abstract void reconnectionFailed(Map<String,Object> port_props)

      Method description
      Parameters:
        `port_props` -

    - #### release

          public void release()

      Description copied from class: `AbstractMessageReceiver`
      Method description
      Specified by:
        `release` in interface `ServerComponent`
      Overrides:
        `release` in class `AbstractMessageReceiver`

    - #### serviceStarted

          @TODO(note="Do something if service with the same unique ID is already started, possibly kill the old one...")
          public void serviceStarted(IO service)

      Method description
      Parameters:
        `service` -

    - #### serviceStopped

          public boolean serviceStopped(IO service)

      Specified by:
        `serviceStopped` in interface `IOServiceListener<IO extends XMPPIOService<?>>`

    - #### stop

          public void stop()

      Description copied from class: `AbstractMessageReceiver`
      Method description
      Overrides:
        `stop` in class `AbstractMessageReceiver`

    - #### updateConnectionDetails

          public void updateConnectionDetails(Map<String,Object> port_props)

      Method description
      Parameters:
        `port_props` -

    - #### writePacketsToSocket

          public void writePacketsToSocket(IO serv,
                                  Queue<Packet> packets)

      Method description
      Parameters:
        `serv` -
        `packets` -

    - #### writePacketToSocket

          public boolean writePacketToSocket(IO ios,
                                    Packet p)

      Method description
      Parameters:
        `ios` -
        `p` -
      Returns:
        a value of `boolean`

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

    - #### 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 `StatisticsContainer`
      Overrides:
        `getStatistics` in class `AbstractMessageReceiver`
      Parameters:
        `list` - is a `StatistcsList` where all statistics are stored.

    - #### getXMPPIOService

          public IO getXMPPIOService(String serviceId)

      Method description
      Parameters:
        `serviceId` -
      Returns:
        a value of `IO`

    - #### setName

          public void setName(String name)

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

    - #### setProperties

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

      Description copied from class: `AbstractMessageReceiver`
      Sets all configuration properties for object.
      Specified by:
        `setProperties` in interface `Configurable`
      Overrides:
        `setProperties` in class `AbstractMessageReceiver`

    - #### addWaitingTask

          protected void addWaitingTask(Map<String,Object> conn)

      Method description
      Parameters:
        `conn` -

    - #### checkHighThroughputProperty

          protected <T> void checkHighThroughputProperty(String ht_def_key,
                                             T ht_dev_val,
                                             String st_def_key,
                                             T st_def_val,
                                             String prop_key,
                                             Class<T> prop_val_class,
                                             Map<String,Object> params,
                                             Map<String,Object> props)

      Method description
      Type Parameters:
        `T` -
      Parameters:
        `ht_def_key` -
        `ht_dev_val` -
        `st_def_key` -
        `st_def_val` -
        `prop_key` -
        `prop_val_class` -
        `params` -
        `props` -

    - #### countIOServices

          protected int countIOServices()

      Returns number of active network connections (IOServices).
      Returns:
        number of active network connections (IOServices).

    - #### doForAllServices

          protected void doForAllServices(ServiceChecker<IO> checker)

      Perform a given action defined by ServiceChecker for all active IOService objects (active network connections).
      Parameters:
        `checker` - is a `ServiceChecker` instance defining an action to perform for all IOService objects.

    - #### writePacketToSocket

          protected boolean writePacketToSocket(Packet p)

      Parameters:
        `p` -
      Returns:
        a value of `boolean`

    - #### writePacketToSocket

          protected boolean writePacketToSocket(Packet p,
                                    String serviceId)

      Method description
      Parameters:
        `p` -
        `serviceId` -
      Returns:
        a value of `boolean`

    - #### writeRawData

          protected void writeRawData(IO ios,
                          String data)

      Method description
      Parameters:
        `ios` -
        `data` -

    - #### getDefPlainPorts

          protected int[] getDefPlainPorts()

      Method description
      Returns:
        a value of `int[]`

    - #### getDefSSLPorts

          protected int[] getDefSSLPorts()

      Method description
      Returns:
        a value of `int[]`

    - #### getDefTrafficThrottling

          protected String getDefTrafficThrottling()

      Method description
      Returns:
        a value of `String`

    - #### getMaxInactiveTime

          protected abstract long getMaxInactiveTime()

      Method description
      Returns:
        a value of `long`

    - #### getParamsForPort

          protected Map<String,Object> getParamsForPort(int port)

      Method description
      Parameters:
        `port` -
      Returns:
        a value of `Map`

    - #### getServiceId

          protected String getServiceId(Packet packet)

      Method description
      Parameters:
        `packet` -
      Returns:
        a value of `String`

    - #### getServiceId

          protected String getServiceId(tigase.xmpp.JID jid)

      Method description
      Parameters:
        `jid` -
      Returns:
        a value of `String`

    - #### getUniqueId

          protected String getUniqueId(IO serv)

      Method description
      Parameters:
        `serv` -
      Returns:
        a value of `String`

    - #### getXMPPIOService

          protected IO getXMPPIOService(Packet p)

      Method description
      Parameters:
        `p` -
      Returns:
        a value of `IO`

    - #### getXMPPIOServiceInstance

          protected abstract IO getXMPPIOServiceInstance()

      Method description
      Returns:
        a value of `IO`

    - #### isHighThroughput

          protected boolean isHighThroughput()

      Method description
      Returns:
        a value of `boolean`

    - #### isTlsWantClientAuthEnabled

          protected boolean isTlsWantClientAuthEnabled()

      Method description
      Returns:
        a value of `boolean`

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