Package tigase.server

# Class ConnectionManager<IO extends XMPPIOService<?>>

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

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

Direct Known Subclasses:
  `ClientConnectionManager`, `ClusterConnectionManager`, `ComponentConnectionManager`, `ComponentProtocol`, `S2SConnectionManager`

public abstract class ConnectionManager<IO extends XMPPIOService<?>> extends AbstractMessageReceiver implements XMPPIOServiceListener<IO>, RegistrarBean
Describe class ConnectionManager here.
Created: Sun Jan 22 22:52:58 2006

Author:
  Artur Hefczyc

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `ConnectionManager.LIMIT_ACTION`
  `static class`
  `ConnectionManager.PortConfigBean`
  `static class`
  `ConnectionManager.PortsConfigBean`
  `static class`
  `ConnectionManager.SecPortConfigBean`
  `protected class`
  `ConnectionManager.Watchdog`
  Class looks in all established connections and checks whether any of them is dead by performing either whitspace or XMPP ping.
  `static enum`
  `ConnectionManager.WATCHDOG_PING_TYPE`
  Holds possible types of ping to be used in watchdog service for detection of broken connections

  ## 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
  `protected long`
  `connectionDelay`
  `protected boolean`
  `delayPortListening`
  `protected int`
  `elements_number_limit`
  Protection from the system overload and DOS attack.
  `static final 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 final String`
  `HT_TRAFFIC_THROTTLING_PROP_KEY`
  `static final String`
  `HT_TRAFFIC_THROTTLING_PROP_VAL`
  `protected Kernel`
  `kernel`
  `static final long`
  `LAST_MINUTE_BIN_LIMIT_PROP_VAL`
  `static final long`
  `LAST_MINUTE_PACKETS_LIMIT_PROP_VAL`
  `static final String`
  `MAX_INACTIVITY_TIME`
  `static final String`
  `MAX_RECONNECTS_PROP_KEY`
  `protected int`
  `net_buffer`
  `static final String`
  `NET_BUFFER_HT_PROP_KEY`
  `static final int`
  `NET_BUFFER_HT_PROP_VAL`
  `static final int`
  `NET_BUFFER_LIMIT_HT_PROP_VAL`
  `static final int`
  `NET_BUFFER_LIMIT_ST_PROP_VAL`
  `static final String`
  `NET_BUFFER_ST_PROP_KEY`
  `static final int`
  `NET_BUFFER_ST_PROP_VAL`
  `protected static final Element`
  `pingElement`
  `static final String`
  `PORT_CLASS_PROP_KEY`
  `static final String`
  `PORT_IFC_PROP_KEY`
  `String[]`
  `PORT_IFC_PROP_VAL`
  `static final String`
  `PORT_KEY`
  `static final boolean`
  `PORT_LISTENING_DELAY_DEF`
  `static final String`
  `PORT_LISTENING_DELAY_KEY`
  `static final String`
  `PORT_LOCAL_HOST_PROP_KEY`
  `static final String`
  `PORT_NEW_CONNECTIONS_THROTTLING_KEY`
  `static final String`
  `PORT_REMOTE_HOST_PROP_KEY`
  `static final String`
  `PORT_REMOTE_HOST_PROP_VAL`
  `static final String`
  `PORT_SOCKET_PROP_KEY`
  `static final String`
  `PORT_TYPE_PROP_KEY`
  `static final String`
  `PORTS_PROP_KEY`
  `protected XMPPIOProcessor[]`
  `processors`
  `static final String`
  `PROP_KEY`
  `protected int`
  `serviceConnectedTimeout`
  `static final int`
  `SOCKET_BUFFER_HT_PROP_VAL`
  `static final int`
  `SOCKET_BUFFER_ST_PROP_VAL`
  `static final String`
  `ST_TRAFFIC_THROTTLING_PROP_KEY`
  `static final String`
  `ST_TRAFFIC_THROTTLING_PROP_VAL`
  `static final long`
  `TOTAL_BIN_LIMIT_PROP_VAL`
  `static final long`
  `TOTAL_PACKETS_LIMIT_PROP_VAL`
  `static final String`
  `TRAFFIC_THROTTLING_PROP_KEY`
  `protected String`
  `trafficThrottling`
  `static final String`
  `WATCHDOG_DELAY`
  `static final String`
  `WATCHDOG_PING_TYPE_KEY`
  `static final String`
  `WATCHDOG_TIMEOUT`
  `protected long`
  `watchdogDelay`
  `protected ConnectionManager.WATCHDOG_PING_TYPE`
  `watchdogPingType`
  `protected long`
  `watchdogTimeout`
  `static final String`
  `WHITE_CHAR_ACK_PROP_KEY`
  `static final boolean`
  `WHITE_CHAR_ACK_PROP_VAL`
  `static final String`
  `XMPP_ACK_PROP_KEY`
  `static final boolean`
  `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
  Modifier
  Constructor
  Description
  ``
  `ConnectionManager()`
  `protected`
  `ConnectionManager(int socketBufferSize)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `addWaitingTask(Map<String,Object> conn)`
  `void`
  `beanConfigurationChanged(Collection<String> changedFields)`
  Method called when configuration was applied to bean.
  `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)`
  `boolean`
  `checkTrafficLimits(IO serv)`
  `protected void`
  `connectWaitingTasks()`
  `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).
  `protected boolean`
  `enableServiceConnectedTimeout(IO service)`
  `void`
  `everyMinute()`
  Utility method executed precisely every minute.
  `protected int[]`
  `getDefPlainPorts()`
  `HashSet<Integer>`
  `getDefPorts()`
  `protected int[]`
  `getDefSSLPorts()`
  `protected String`
  `getDefTrafficThrottling()`
  `String`
  `getFlashCrossDomainPolicy()`
  `protected abstract long`
  `getMaxInactiveTime()`
  `int`
  `getNet_buffer_limit()`
  `protected Map<String,Object>`
  `getParamsForPort(int port)`
  `ConnectionManager.PortsConfigBean`
  `getPortsConfigBean()`
  `protected String`
  `getServiceId(Packet packet)`
  `protected String`
  `getServiceId(JID jid)`
  `void`
  `getStatistics(StatisticsList list)`
  Method returns component statistics.
  `String`
  `getTrafficThrottling()`
  `protected String`
  `getUniqueId(IO serv)`
  `IO`
  `getXMPPIOService(String serviceId)`
  `protected IO`
  `getXMPPIOService(Packet p)`
  `protected abstract IO`
  `getXMPPIOServiceInstance()`
  `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 is called by `MessageRouter` when all the startup components of the server have been loaded and configured through setProperties(...) call.
  `protected boolean`
  `isHighThroughput()`
  `protected ConnectionManager<IO>.Watchdog`
  `newWatchdog()`
  `void`
  `packetsReady(IO serv)`
  `int`
  `processingInThreads()`
  Concurrency control method.
  `int`
  `processingOutThreads()`
  Concurrency control method.
  `void`
  `processPacket(Packet packet)`
  This is the main `Packet` processing method.
  `abstract Queue<Packet>`
  `processSocketData(IO serv)`
  `abstract boolean`
  `processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)`
  Processes undelivered packets
  `abstract void`
  `reconnectionFailed(Map<String,Object> port_props)`
  `void`
  `register(Kernel kernel)`
  Method called when bean is being registered allowing developer to programatically register other beans.
  `void`
  `release()`
  Method called when component is being stopped and unloaded.
  `protected void`
  `releaseListener(ConnectionOpenListener toStop)`
  `protected void`
  `serviceConnected(IO service)`
  `void`
  `serviceStarted(IO service)`
  `boolean`
  `serviceStopped(IO service)`
  `void`
  `setFlashCrossDomainPolicyFile(String file)`
  `void`
  `setName(String name)`
  Method used to assign component name (localpart of the component)
  `void`
  `setNet_buffer_limit(int value)`
  `void`
  `setProcessors(XMPPIOProcessor[] processors)`
  `void`
  `setTrafficThrottling(String trafficThrottling)`
  `protected void`
  `setupWatchdogThread()`
  `void`
  `setWatchdogPingType(ConnectionManager.WATCHDOG_PING_TYPE watchdogPingType)`
  `protected void`
  `socketAccepted(IO serv, SocketType type)`
  `void`
  `start()`
  `protected ConnectionManager<IO>.tigase.server.ConnectionManager.ConnectionListenerImpl`
  `startService(Map<String,Object> port_props)`
  `void`
  `stop()`
  `void`
  `unregister(Kernel kernel)`
  Method called while bean is being unregistered.
  `void`
  `updateConnectionDetails(Map<String,Object> port_props)`
  `void`
  `writePacketsToSocket(IO serv, Queue<Packet> packets)`
  `boolean`
  `writePacketToSocket(IO ios, Packet p)`
  `protected boolean`
  `writePacketToSocket(Packet p)`
  `protected boolean`
  `writePacketToSocket(Packet p, String serviceId)`
  `protected void`
  `writeRawData(IO ios, String data)`
  `String`
  `xmppStreamError(IO serv, List<Element> err_el)`

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

  `addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processOutPacket, processPacket, removeRegexRouting, schedulerThreads, 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, getDiscoCategoryType, getDiscoDescription, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, 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.net.IOServiceListener

  `tlsHandshakeCompleted`

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

  `getDefHostName`

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

  `getComponentId, getComponentInfo, getName, isInitializationComplete`

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

  `getName`

  ### Methods inherited from interface tigase.xmpp.XMPPIOServiceListener

  `xmppStreamClosed, xmppStreamOpened`

- ## Field Details

  - ### HT_TRAFFIC_THROTTLING_PROP_KEY

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

  - ### HT_TRAFFIC_THROTTLING_PROP_VAL

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

  - ### NET_BUFFER_HT_PROP_KEY

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

  - ### NET_BUFFER_ST_PROP_KEY

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

  - ### PORT_LOCAL_HOST_PROP_KEY

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

  - ### ST_TRAFFIC_THROTTLING_PROP_KEY

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

  - ### ST_TRAFFIC_THROTTLING_PROP_VAL

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

  - ### TRAFFIC_THROTTLING_PROP_KEY

    public static final String TRAFFIC_THROTTLING_PROP_KEY
    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

  - ### LAST_MINUTE_BIN_LIMIT_PROP_VAL

    public static final long LAST_MINUTE_BIN_LIMIT_PROP_VAL
    See Also:
      - Constant Field Values

  - ### LAST_MINUTE_PACKETS_LIMIT_PROP_VAL

    public static final long LAST_MINUTE_PACKETS_LIMIT_PROP_VAL
    See Also:
      - Constant Field Values

  - ### MAX_INACTIVITY_TIME

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

  - ### MAX_RECONNECTS_PROP_KEY

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

  - ### NET_BUFFER_HT_PROP_VAL

    public static final int NET_BUFFER_HT_PROP_VAL
    See Also:
      - Constant Field Values

  - ### NET_BUFFER_ST_PROP_VAL

    public static final int NET_BUFFER_ST_PROP_VAL
    See Also:
      - Constant Field Values

  - ### NET_BUFFER_LIMIT_HT_PROP_VAL

    public static final int NET_BUFFER_LIMIT_HT_PROP_VAL
    See Also:
      - Constant Field Values

  - ### NET_BUFFER_LIMIT_ST_PROP_VAL

    public static final int NET_BUFFER_LIMIT_ST_PROP_VAL
    See Also:
      - Constant Field Values

  - ### PORT_CLASS_PROP_KEY

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

  - ### PORT_IFC_PROP_KEY

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

  - ### PORT_LISTENING_DELAY_KEY

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

  - ### PORT_LISTENING_DELAY_DEF

    public static final boolean PORT_LISTENING_DELAY_DEF
    See Also:
      - Constant Field Values

  - ### PORT_KEY

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

  - ### PORT_NEW_CONNECTIONS_THROTTLING_KEY

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

  - ### PORT_REMOTE_HOST_PROP_KEY

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

  - ### PORT_REMOTE_HOST_PROP_VAL

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

  - ### PORT_SOCKET_PROP_KEY

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

  - ### PORT_TYPE_PROP_KEY

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

  - ### PROP_KEY

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

  - ### SOCKET_BUFFER_ST_PROP_VAL

    public static final int SOCKET_BUFFER_ST_PROP_VAL
    See Also:
      - Constant Field Values

  - ### SOCKET_BUFFER_HT_PROP_VAL

    public static final int SOCKET_BUFFER_HT_PROP_VAL
    See Also:
      - Constant Field Values

  - ### TOTAL_BIN_LIMIT_PROP_VAL

    public static final long TOTAL_BIN_LIMIT_PROP_VAL
    See Also:
      - Constant Field Values

  - ### TOTAL_PACKETS_LIMIT_PROP_VAL

    public static final long TOTAL_PACKETS_LIMIT_PROP_VAL
    See Also:
      - Constant Field Values

  - ### WHITE_CHAR_ACK_PROP_KEY

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

  - ### XMPP_ACK_PROP_KEY

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

  - ### XMPP_ACK_PROP_VAL

    public static final boolean XMPP_ACK_PROP_VAL
    See Also:
      - Constant Field Values

  - ### WHITE_CHAR_ACK_PROP_VAL

    public static final boolean WHITE_CHAR_ACK_PROP_VAL
    See Also:
      - Constant Field Values

  - ### PORTS_PROP_KEY

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

  - ### WATCHDOG_DELAY

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

  - ### WATCHDOG_TIMEOUT

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

  - ### WATCHDOG_PING_TYPE_KEY

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

  - ### pingElement

    protected static final Element pingElement

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

    @ConfigField(desc="Interfaces to listen on", alias="ifc") public String[] PORT_IFC_PROP_VAL

  - ### connectionDelay

    @ConfigField(desc="Delay before connection is established") protected long connectionDelay

  - ### delayPortListening

    protected boolean delayPortListening

  - ### elements_number_limit

    @ConfigField(desc="Limit of elements for single XMPP stanza", alias="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.

  - ### kernel

    protected Kernel kernel

  - ### net_buffer

    @ConfigField(desc="Default size of a network buffer", alias="net-buffer") protected int net_buffer

  - ### processors

    @Inject(nullAllowed=true) protected XMPPIOProcessor[] processors

  - ### trafficThrottling

    @ConfigField(desc="Traffic throttling") protected String trafficThrottling

  - ### watchdogDelay

    @ConfigField(desc="Watchdog delay", alias="watchdog-delay") protected long watchdogDelay

  - ### watchdogPingType

    @ConfigField(desc="Watchdog ping type", alias="watchdog-ping-type") protected ConnectionManager.WATCHDOG_PING_TYPE watchdogPingType

  - ### watchdogTimeout

    @ConfigField(desc="Watchdog timeout", alias="watchdog-timeout") protected long watchdogTimeout

  - ### serviceConnectedTimeout

    @ConfigField(desc="Service connection timeout", alias="service-connected-timeout") protected int serviceConnectedTimeout

- ## Constructor Details

  - ### ConnectionManager

    public ConnectionManager()

  - ### ConnectionManager

    protected ConnectionManager(int socketBufferSize)

- ## Method Details

  - ### enableServiceConnectedTimeout

    protected boolean enableServiceConnectedTimeout(IO service)

  - ### beanConfigurationChanged

    public void beanConfigurationChanged(Collection<String> changedFields)
    Description copied from interface: `ConfigurationChangedAware`
    Method called when configuration was applied to bean.
    Specified by:
      `beanConfigurationChanged` in interface `ConfigurationChangedAware`
    Overrides:
      `beanConfigurationChanged` in class `AbstractMessageReceiver`
    Parameters:
      `changedFields` - collection of field names which were changed

  - ### checkTrafficLimits

    public boolean checkTrafficLimits(IO serv)

  - ### 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 interface: `ServerComponent`
    Method is called by `MessageRouter` when all the startup components of the server have been loaded and configured through setProperties(...) call. At this point the whole server should be loaded and functional, except initializations taking place in this routine.
    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`
    Concurrency control method. Returns preferable number of threads set for this component.
    Overrides:
      `processingInThreads` in class `AbstractMessageReceiver`
    Returns:
      preferable number of threads set for this component.

  - ### processingOutThreads

    public int processingOutThreads()
    Description copied from class: `AbstractMessageReceiver`
    Concurrency control method. Returns preferable number of threads set for this component.
    Overrides:
      `processingOutThreads` in class `AbstractMessageReceiver`
    Returns:
      preferable number of threads set for this component.

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

  - ### processUndeliveredPacket

    public abstract boolean processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)
    Processes undelivered packets
    Parameters:
      `stamp` - - timestamp when packet was received to be written to XMPPIOService

  - ### reconnectionFailed

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

  - ### getDefPorts

    public HashSet<Integer> getDefPorts()

  - ### register

    public void register(Kernel kernel)
    Description copied from interface: `RegistrarBean`
    Method called when bean is being registered allowing developer to programatically register other beans.
    Specified by:
      `register` in interface `RegistrarBean`
    Parameters:
      `kernel` - - instance from local scope

  - ### unregister

    public void unregister(Kernel kernel)
    Description copied from interface: `RegistrarBean`
    Method called while bean is being unregistered.
    Specified by:
      `unregister` in interface `RegistrarBean`
    Parameters:
      `kernel` - - instance from local scope

  - ### release

    public void release()
    Description copied from interface: `ServerComponent`
    Method called when component is being stopped and unloaded.
    Specified by:
      `release` in interface `ServerComponent`
    Overrides:
      `release` in class `AbstractMessageReceiver`

  - ### serviceConnected

    protected void serviceConnected(IO service)

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

  - ### serviceStopped

    public boolean serviceStopped(IO service)
    Specified by:
      `serviceStopped` in interface `IOServiceListener<IO extends XMPPIOService<?>>`

  - ### start

    public void start()
    Specified by:
      `start` in interface `MessageReceiver`
    Overrides:
      `start` in class `AbstractMessageReceiver`

  - ### stop

    public void stop()
    Overrides:
      `stop` in class `AbstractMessageReceiver`

  - ### updateConnectionDetails

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

  - ### writePacketsToSocket

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

  - ### writePacketToSocket

    public boolean writePacketToSocket(IO ios, Packet p)

  - ### xmppStreamError

    public String xmppStreamError(IO serv, List<Element> err_el)
    Specified by:
      `xmppStreamError` in interface `XMPPIOServiceListener<IO extends XMPPIOService<?>>`

  - ### getPortsConfigBean

    public ConnectionManager.PortsConfigBean getPortsConfigBean()

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

  - ### getXMPPIOService

    public IO getXMPPIOService(String serviceId)

  - ### setName

    public void setName(String name)
    Description copied from interface: `ServerComponent`
    Method used to assign component name (localpart of the component)
    Specified by:
      `setName` in interface `ServerComponent`
    Overrides:
      `setName` in class `AbstractMessageReceiver`
    Parameters:
      `name` - to be assigned

  - ### getFlashCrossDomainPolicy

    public String getFlashCrossDomainPolicy()

  - ### setFlashCrossDomainPolicyFile

    public void setFlashCrossDomainPolicyFile(String file)

  - ### getNet_buffer_limit

    public int getNet_buffer_limit()

  - ### setNet_buffer_limit

    public void setNet_buffer_limit(int value)

  - ### setProcessors

    public void setProcessors(XMPPIOProcessor[] processors)

  - ### getTrafficThrottling

    public String getTrafficThrottling()

  - ### setTrafficThrottling

    public void setTrafficThrottling(String trafficThrottling)

  - ### connectWaitingTasks

    protected void connectWaitingTasks()

  - ### setupWatchdogThread

    protected void setupWatchdogThread()

  - ### setWatchdogPingType

    public void setWatchdogPingType(ConnectionManager.WATCHDOG_PING_TYPE watchdogPingType)

  - ### newWatchdog

    protected ConnectionManager<IO>.Watchdog newWatchdog()

  - ### addWaitingTask

    protected void addWaitingTask(Map<String,Object> 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)

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

  - ### writePacketToSocket

    protected boolean writePacketToSocket(Packet p, String serviceId)

  - ### writeRawData

    protected void writeRawData(IO ios, String data)

  - ### getDefPlainPorts

    protected int[] getDefPlainPorts()

  - ### getDefSSLPorts

    protected int[] getDefSSLPorts()

  - ### getDefTrafficThrottling

    protected String getDefTrafficThrottling()

  - ### getMaxInactiveTime

    protected abstract long getMaxInactiveTime()

  - ### getParamsForPort

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

  - ### getServiceId

    protected String getServiceId(Packet packet)

  - ### getServiceId

    protected String getServiceId(JID jid)

  - ### getUniqueId

    protected String getUniqueId(IO serv)

  - ### getXMPPIOService

    protected IO getXMPPIOService(Packet p)

  - ### getXMPPIOServiceInstance

    protected abstract IO getXMPPIOServiceInstance()

  - ### isHighThroughput

    protected boolean isHighThroughput()

  - ### socketAccepted

    protected void socketAccepted(IO serv, SocketType type)

  - ### releaseListener

    protected void releaseListener(ConnectionOpenListener toStop)

  - ### startService

    protected ConnectionManager<IO>.tigase.server.ConnectionManager.ConnectionListenerImpl startService(Map<String,Object> port_props)