Package tigase.server.bosh

## Class BoshConnectionManager

- java.lang.Object
- - tigase.server.BasicComponent
  - - tigase.server.AbstractMessageReceiver
    - - tigase.server.ConnectionManager<XMPPIOService<java.lang.Object>>
      - - tigase.server.xmppclient.ClientConnectionManager
        - - tigase.server.bosh.BoshConnectionManager

- All Implemented Interfaces:
    `ClusteredComponentIfc`, `Configurable`, `XMPPService`, `ConfigurationChangedAware`, `Initializable`, `RegistrarBean`, `IOServiceListener<XMPPIOService<java.lang.Object>>`, `BoshIOService.ConfigProvider`, `BoshSessionTaskHandler`, `MessageReceiver`, `PacketWriterWithTimeout`, `ServerComponent`, `StatisticsContainer`, `StatisticsContainerIfc`, `VHostListener`, `XMPPIOServiceListener<XMPPIOService<java.lang.Object>>`
  Direct Known Subclasses:
    `BoshConnectionClustered`

      @Bean(name="bosh",
            parent=Kernel.class,
            active=true)
      @ConfigType({DefaultMode,ConnectionManagersMode})
      @ClusterModeRequired(active=false)
      public class BoshConnectionManager
      extends ClientConnectionManager
      implements BoshSessionTaskHandler, BoshIOService.ConfigProvider

  Describe class BoshConnectionManager here.
  Created: Sat Jun 2 12:24:29 2007
  Author:
    Artur Hefczyc

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected static class` | `BoshConnectionManager.BOSH_OPERATION_TYPE` |

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

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

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

      `BasicComponent.ServerInfoVHostItemExtension`

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

      `PacketWriterWithTimeout.Handler`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `BOSH_CLOSE_CONNECTION_PROP_KEY` |
    `static java.lang.String` | `BOSH_EXTRA_HEADERS_FILE_PROP_KEY` |
    `static java.lang.String` | `BOSH_EXTRA_HEADERS_FILE_PROP_VAL` |
    `static java.lang.String` | `CLIENT_ACCESS_POLICY_FILE_PROP_KEY` |
    `static java.lang.String` | `CLIENT_ACCESS_POLICY_FILE_PROP_VAL` |
    `protected java.util.Map<java.util.UUID,​BoshSession>` | `sessions` |

    - ### Fields inherited from class tigase.server.xmppclient.ClientConnectionManager

      `eventBus, FORCE_REDIRECT_TO_KEY, routings, see_other_host_strategy`

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

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

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

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

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

      `admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager`

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

      `ADMINS_PROP_KEY, AMP_CLASS_NAME, AMP_CLUST_CLASS_NAME, AUTH_DOMAIN_POOL_CLASS, AUTH_REPO_DOMAINS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_POOL_CLASS, AUTH_REPO_URL_PROP_KEY, BOSH_CLUST_COMP_CLASS_NAME, BOSH_COMP_CLASS_NAME, C2S_CLUST_COMP_CLASS_NAME, C2S_COMP_CLASS_NAME, CL_COMP_CLASS_NAME, CLUSTER_CONECT, CLUSTER_CONTR_CLASS_NAME, CLUSTER_LISTEN, CLUSTER_MODE, CLUSTER_NODES, CLUSTER_NODES_PROP_KEY, COMP_PROT_CLASS_NAME, COMPONENT_ID_PROP_KEY, DEF_AMP_NAME, DEF_BOSH_NAME, DEF_C2S_NAME, DEF_CL_COMP_NAME, DEF_CLUST_CONTR_NAME, DEF_COMP_PROT_NAME, DEF_EVENTBUS_NAME, DEF_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_STATS_NAME, DEF_VHOST_MAN_NAME, DEF_WS2S_NAME, DERBY_REPO_CLASS_PROP_VAL, DERBY_REPO_URL_PROP_VAL, DRUPAL_REPO_URL_PROP_VAL, DRUPALWP_REPO_CLASS_PROP_VAL, DUMMY_REPO_CLASS_PROP_VAL, EVENTBUS_CLASS_NAME, EXT_COMP_CLASS_NAME, GEN_ADMINS, GEN_AUTH_DB, GEN_AUTH_DB_URI, GEN_COMP_CLASS, GEN_COMP_NAME, GEN_CONF, GEN_CONFIG, GEN_CONFIG_ALL, GEN_CONFIG_COMP, GEN_CONFIG_CS, GEN_CONFIG_DEF, GEN_CONFIG_SM, GEN_DEBUG, GEN_DEBUG_PACKAGES, GEN_EXT_COMP, GEN_MAX_QUEUE_SIZE, GEN_SCRIPT_DIR, GEN_SM_PLUGINS, GEN_SREC_ADMINS, GEN_SREC_DB, GEN_SREC_DB_URI, GEN_TEST, GEN_TRUSTED, GEN_USER_DB, GEN_USER_DB_URI, GEN_USER_DB_URI_PROP_KEY, GEN_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, MONITOR_CLASS_NAME, MONITOR_CLUST_CLASS_NAME, MONITORING, MYSQL_REPO_CLASS_PROP_VAL, MYSQL_REPO_URL_PROP_VAL, PGSQL_REPO_CLASS_PROP_VAL, PGSQL_REPO_URL_PROP_VAL, ROUTER_COMP_CLASS_NAME, S2S_CLUST_COMP_CLASS_NAME, S2S_COMP_CLASS_NAME, SHARED_AUTH_REPO_PARAMS_PROP_KEY, SHARED_AUTH_REPO_PROP_KEY, SHARED_USER_REPO_PARAMS_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUST_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, STANZA_WHITE_CHAR_ACK, STANZA_XMPP_ACK, STATS_CLASS_NAME, STRINGPREP_PROCESSOR, TIGASE_AUTH_REPO_CLASS_PROP_VAL, TIGASE_AUTH_REPO_URL_PROP_VAL, TIGASE_CUSTOM_AUTH_REPO_CLASS_PROP_VAL, TRUSTED_PROP_KEY, USER_DOMAIN_POOL_CLASS, USER_REPO_DOMAINS_PROP_KEY, USER_REPO_PARAMS_NODE, USER_REPO_POOL_CLASS, USER_REPO_POOL_SIZE, USER_REPO_POOL_SIZE_PROP_KEY, USER_REPO_URL_PROP_KEY, VHOST_MAN_CLASS_NAME, VHOST_MAN_CLUST_CLASS_NAME, WS2S_CLASS_NAME, WS2S_CLUST_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACK`

    - ### Fields inherited from interface tigase.disco.XMPPService

      `CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `addOutPackets​(java.util.Queue<Packet> out_results, BoshSession bs)` | Method adds packets to the output queue stamping it with the appropriate `BoshSession` data
    `boolean` | `addOutStreamClosed​(Packet packet, BoshSession bs, boolean withTimeout)` |
    `boolean` | `addOutStreamOpen​(Packet packet, BoshSession bs)` |
    `void` | `cancelSendQueueTask​(BoshSendQueueTask tt)` |
    `void` | `cancelTask​(BoshTask tt)` |
    `protected JID` | `changeDataReceiver​(Packet packet, JID newAddress, java.lang.String command_sessionId, XMPPIOService<java.lang.Object> serv)` |
    `protected boolean` | `enableServiceConnectedTimeout​(XMPPIOService<java.lang.Object> service)` |
    `protected BoshSession` | `getBoshSession​(JID jid)` | Method retrieves `BoshSession` related to the particular user address
    `java.lang.String` | `getClientAccessPolicy()` |
    `protected int[]` | `getDefPlainPorts()` |
    `protected int[]` | `getDefSSLPorts()` |
    `java.lang.String` | `getDiscoCategoryType()` | Method returns component category type used for service discovery responses.
    `java.lang.String` | `getDiscoDescription()` | Method returns description used for service discovery responses.
    `java.lang.String` | `getExtraHeaders()` |
    `JID` | `getJidForBoshSession​(BoshSession bs)` | Returns full jid of passed BoshSession instance
    `protected long` | `getMaxInactiveTime()` | Method `getMaxInactiveTime` returns max keep-alive time for inactive connection.
    `Element` | `getSeeOtherHostError​(Packet packet, BareJID destination)` |
    `BareJID` | `getSeeOtherHostForJID​(Packet packet, BareJID fromJID, SeeOtherHostIfc.Phase ph)` |
    `void` | `getStatistics​(StatisticsList list)` | Method returns component statistics.
    `protected BoshIOService` | `getXMPPIOServiceInstance()` |
    `void` | `initBindings​(javax.script.Bindings binds)` | Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
    `void` | `initialize()` | Method will be called, when bean will be created, configured and ready to use.
    `boolean` | `isCloseConnections()` |
    `protected ReceiverTimeoutHandler` | `newStartedHandler()` |
    `protected java.util.Map<java.lang.String,​java.lang.String>` | `preBindSession​(java.util.Map<java.lang.String,​java.lang.String> attr)` |
    `protected void` | `processCommand​(Packet packet)` |
    `void` | `processPacket​(Packet packet)` | This is the main `Packet` processing method.
    `java.util.Queue<Packet>` | `processSocketData​(XMPPIOService<java.lang.Object> srv)` |
    `BoshSendQueueTask` | `scheduleSendQueueTask​(BoshSession bs, long delay)` |
    `BoshTask` | `scheduleTask​(BoshSession bs, long delay)` |
    `void` | `serviceStarted​(XMPPIOService<java.lang.Object> service)` |
    `boolean` | `serviceStopped​(XMPPIOService<java.lang.Object> xmppService)` |
    `void` | `setClientAccessPolicyFile​(java.lang.String clientAccessPolicyFile)` |
    `void` | `setExtraHeadersFile​(java.lang.String extraHeadersFile)` |
    `void` | `setSidLoggerLevel​(java.lang.String loggerLevel)` |
    `protected static void` | `setupSidlogger​(java.util.logging.Level lvl)` |
    `protected void` | `setupWatchdogThread()` |
    `protected boolean` | `writePacketToSocket​(Packet packet)` |
    `void` | `writeRawData​(BoshIOService ios, java.lang.String data)` |
    `void` | `xmppStreamClosed​(XMPPIOService<java.lang.Object> serv)` |
    `java.lang.String[]` | `xmppStreamOpened​(XMPPIOService<java.lang.Object> serv, java.util.Map<java.lang.String,​java.lang.String> attribs)` |

    - ### Methods inherited from class tigase.server.xmppclient.ClientConnectionManager

      `getClientTrustManagerFactory, getMaxQueueSize, getSeeOtherHostInstance, hashCodeForPacket, isAllowed, newStoppedHandler, nodeShutdown, prepareSeeOtherHost, prepareStreamClose, prepareStreamError, prepareStreamError, prepareStreamOpen, preprocessStreamFeatures, processUndeliveredPacket, reconnectionFailed, schedulerThreads, setRegistrationThrottling, setSee_other_host_strategy, socketAccepted, start, stop, tlsHandshakeCompleted, xmppStreamError`

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

      `addWaitingTask, beanConfigurationChanged, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefPorts, getDefTrafficThrottling, getFlashCrossDomainPolicy, getNet_buffer_limit, getParamsForPort, getPortsConfigBean, getServiceId, getServiceId, getTrafficThrottling, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, isHighThroughput, newWatchdog, packetsReady, processingInThreads, processingOutThreads, register, release, releaseListener, serviceConnected, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, startService, unregister, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData`

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

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

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

      `addComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, reloadScripts, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface tigase.server.bosh.BoshSessionTaskHandler

      `getDefHostName, processUndeliveredPacket`

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

- - ### Field Detail

    - #### BOSH_CLOSE_CONNECTION_PROP_KEY

          public static final java.lang.String BOSH_CLOSE_CONNECTION_PROP_KEY

      See Also:
        Constant Field Values

    - #### BOSH_EXTRA_HEADERS_FILE_PROP_KEY

          public static final java.lang.String BOSH_EXTRA_HEADERS_FILE_PROP_KEY

      See Also:
        Constant Field Values

    - #### BOSH_EXTRA_HEADERS_FILE_PROP_VAL

          public static final java.lang.String BOSH_EXTRA_HEADERS_FILE_PROP_VAL

      See Also:
        Constant Field Values

    - #### CLIENT_ACCESS_POLICY_FILE_PROP_KEY

          public static final java.lang.String CLIENT_ACCESS_POLICY_FILE_PROP_KEY

      See Also:
        Constant Field Values

    - #### CLIENT_ACCESS_POLICY_FILE_PROP_VAL

          public static final java.lang.String CLIENT_ACCESS_POLICY_FILE_PROP_VAL

      See Also:
        Constant Field Values

    - #### sessions

          protected final java.util.Map<java.util.UUID,​BoshSession> sessions

  - ### Constructor Detail

    - #### BoshConnectionManager

          public BoshConnectionManager()

  - ### Method Detail

    - #### setupSidlogger

          protected static void setupSidlogger​(java.util.logging.Level lvl)

    - #### addOutStreamClosed

          public boolean addOutStreamClosed​(Packet packet,
                                            BoshSession bs,
                                            boolean withTimeout)

      Specified by:
        `addOutStreamClosed` in interface `BoshSessionTaskHandler`

    - #### addOutStreamOpen

          public boolean addOutStreamOpen​(Packet packet,
                                          BoshSession bs)

      Specified by:
        `addOutStreamOpen` in interface `BoshSessionTaskHandler`

    - #### cancelSendQueueTask

          public void cancelSendQueueTask​(BoshSendQueueTask tt)

      Specified by:
        `cancelSendQueueTask` in interface `BoshSessionTaskHandler`

    - #### cancelTask

          public void cancelTask​(BoshTask tt)

      Specified by:
        `cancelTask` in interface `BoshSessionTaskHandler`

    - #### enableServiceConnectedTimeout

          protected boolean enableServiceConnectedTimeout​(XMPPIOService<java.lang.Object> service)

      Overrides:
        `enableServiceConnectedTimeout` in class `ConnectionManager<XMPPIOService<java.lang.Object>>`

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

    - #### processSocketData

          public java.util.Queue<Packet> processSocketData​(XMPPIOService<java.lang.Object> srv)

      Overrides:
        `processSocketData` in class `ClientConnectionManager`

    - #### scheduleSendQueueTask

          public BoshSendQueueTask scheduleSendQueueTask​(BoshSession bs,
                                                         long delay)

      Specified by:
        `scheduleSendQueueTask` in interface `BoshSessionTaskHandler`

    - #### scheduleTask

          public BoshTask scheduleTask​(BoshSession bs,
                                       long delay)

      Specified by:
        `scheduleTask` in interface `BoshSessionTaskHandler`

    - #### serviceStarted

          public void serviceStarted​(XMPPIOService<java.lang.Object> service)

      Overrides:
        `serviceStarted` in class `ClientConnectionManager`

    - #### serviceStopped

          public boolean serviceStopped​(XMPPIOService<java.lang.Object> xmppService)

      Specified by:
        `serviceStopped` in interface `IOServiceListener<XMPPIOService<java.lang.Object>>`
      Overrides:
        `serviceStopped` in class `ClientConnectionManager`

    - #### writeRawData

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

      Specified by:
        `writeRawData` in interface `BoshSessionTaskHandler`

    - #### xmppStreamClosed

          public void xmppStreamClosed​(XMPPIOService<java.lang.Object> serv)

      Specified by:
        `xmppStreamClosed` in interface `XMPPIOServiceListener<XMPPIOService<java.lang.Object>>`
      Overrides:
        `xmppStreamClosed` in class `ClientConnectionManager`

    - #### xmppStreamOpened

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

      Specified by:
        `xmppStreamOpened` in interface `XMPPIOServiceListener<XMPPIOService<java.lang.Object>>`
      Overrides:
        `xmppStreamOpened` in class `ClientConnectionManager`

    - #### getDiscoCategoryType

          public java.lang.String getDiscoCategoryType()

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

    - #### getDiscoDescription

          public java.lang.String getDiscoDescription()

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

    - #### getJidForBoshSession

          public JID getJidForBoshSession​(BoshSession bs)

      Returns full jid of passed BoshSession instance
      Specified by:
        `getJidForBoshSession` in interface `BoshSessionTaskHandler`
      Parameters:
        `bs` - `BoshSession` for which JID should be retrieved
      Returns:
        JID address related to particular `BoshSession`

    - #### getSeeOtherHostError

          public Element getSeeOtherHostError​(Packet packet,
                                              BareJID destination)

      Specified by:
        `getSeeOtherHostError` in interface `BoshSessionTaskHandler`

    - #### getSeeOtherHostForJID

          public BareJID getSeeOtherHostForJID​(Packet packet,
                                               BareJID fromJID,
                                               SeeOtherHostIfc.Phase ph)

      Specified by:
        `getSeeOtherHostForJID` in interface `BoshSessionTaskHandler`

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

    - #### setSidLoggerLevel

          public void setSidLoggerLevel​(java.lang.String loggerLevel)

    - #### initBindings

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

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

    - #### initialize

          public void initialize()

      Description copied from interface: `Initializable`
      Method will be called, when bean will be created, configured and ready to use.
      Specified by:
        `initialize` in interface `Initializable`
      Overrides:
        `initialize` in class `BasicComponent`

    - #### isCloseConnections

          public boolean isCloseConnections()

      Specified by:
        `isCloseConnections` in interface `BoshIOService.ConfigProvider`

    - #### getClientAccessPolicy

          public java.lang.String getClientAccessPolicy()

      Specified by:
        `getClientAccessPolicy` in interface `BoshIOService.ConfigProvider`

    - #### setClientAccessPolicyFile

          public void setClientAccessPolicyFile​(java.lang.String clientAccessPolicyFile)

    - #### getExtraHeaders

          public java.lang.String getExtraHeaders()

      Specified by:
        `getExtraHeaders` in interface `BoshIOService.ConfigProvider`

    - #### setExtraHeadersFile

          public void setExtraHeadersFile​(java.lang.String extraHeadersFile)

    - #### setupWatchdogThread

          protected void setupWatchdogThread()

      Overrides:
        `setupWatchdogThread` in class `ConnectionManager<XMPPIOService<java.lang.Object>>`

    - #### preBindSession

          protected java.util.Map<java.lang.String,​java.lang.String> preBindSession​(java.util.Map<java.lang.String,​java.lang.String> attr)

    - #### addOutPackets

          protected void addOutPackets​(java.util.Queue<Packet> out_results,
                                       BoshSession bs)

      Method adds packets to the output queue stamping it with the appropriate `BoshSession` data
      Parameters:
        `out_results` - collection of `Packet` objects to be added to queue
        `bs` - related `BoshSession`

    - #### changeDataReceiver

          protected JID changeDataReceiver​(Packet packet,
                                           JID newAddress,
                                           java.lang.String command_sessionId,
                                           XMPPIOService<java.lang.Object> serv)

      Overrides:
        `changeDataReceiver` in class `ClientConnectionManager`

    - #### newStartedHandler

          protected ReceiverTimeoutHandler newStartedHandler()

      Overrides:
        `newStartedHandler` in class `ClientConnectionManager`

    - #### processCommand

          protected void processCommand​(Packet packet)

      Overrides:
        `processCommand` in class `ClientConnectionManager`

    - #### writePacketToSocket

          protected boolean writePacketToSocket​(Packet packet)

      Overrides:
        `writePacketToSocket` in class `ConnectionManager<XMPPIOService<java.lang.Object>>`

    - #### getBoshSession

          protected BoshSession getBoshSession​(JID jid)

      Method retrieves `BoshSession` related to the particular user address
      Parameters:
        `jid` - address for which `BoshSession` should be returned
      Returns:
        a value of `BoshSession`

    - #### getDefPlainPorts

          protected int[] getDefPlainPorts()

      Overrides:
        `getDefPlainPorts` in class `ClientConnectionManager`

    - #### getDefSSLPorts

          protected int[] getDefSSLPorts()

      Overrides:
        `getDefSSLPorts` in class `ClientConnectionManager`

    - #### getMaxInactiveTime

          protected long getMaxInactiveTime()

      Method `getMaxInactiveTime` returns max keep-alive time for inactive connection. For Bosh it does not make sense to keep the idle connection longer than 10 minutes.
      Overrides:
        `getMaxInactiveTime` in class `ClientConnectionManager`
      Returns:
        a `long` value

    - #### getXMPPIOServiceInstance

          protected BoshIOService getXMPPIOServiceInstance()

      Overrides:
        `getXMPPIOServiceInstance` in class `ClientConnectionManager`