tigase.server.xmppclient

## Class ClientConnectionManager

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

- All Implemented Interfaces:
    ClusteredComponentIfc, Configurable, XMPPService, ConfigurationChangedAware, Initializable, RegistrarBean, IOServiceListener<XMPPIOService<Object>>, MessageReceiver, ServerComponent, StatisticsContainer, StatisticsContainerIfc, VHostListener, XMPPIOServiceListener<XMPPIOService<Object>>
  Direct Known Subclasses:
    BoshConnectionManager, ClientConnectionClustered, WebSocketClientConnectionManager

      @Bean(name="c2s",
            parent=Kernel.class,
            active=true)
       @ConfigType(value={DefaultMode,ConnectionManagersMode})
       @ClusterModeRequired(active=false)
       @ConfigAliases(value=@ConfigAlias(field="delayPortListening",alias="client-port-delay-listening"))
      public class ClientConnectionManager
      extends ConnectionManager<XMPPIOService<Object>>

  Class ClientConnectionManager Created: Tue Nov 22 07:07:11 2005
  Version:
    $Rev$
  Author:
    Artur Hefczyc

- - ### Nested Class Summary

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

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

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected EventBus` | `eventBus`
    `protected static String` | `FORCE_REDIRECT_TO_KEY`
    `protected RoutingsContainer.RoutingComputer` | `routings`
    `protected SeeOtherHostIfc` | `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_PROP_KEY, NET_BUFFER_LIMIT_ST_PROP_VAL, NET_BUFFER_PROP_KEY, NET_BUFFER_ST_PROP_KEY, NET_BUFFER_ST_PROP_VAL, pingElement, PORT_CLASS_PROP_KEY, PORT_IFC_PROP_KEY, PORT_IFC_PROP_VAL, PORT_KEY, PORT_LISTENING_DELAY_DEF, PORT_LISTENING_DELAY_KEY, PORT_LOCAL_HOST_PROP_KEY, PORT_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, 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, 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 and Description
    `ClientConnectionManager()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected JID` | `changeDataReceiver(Packet packet, JID newAddress, String command_sessionId, XMPPIOService<Object> serv)`
    `ClientTrustManagerFactory` | `getClientTrustManagerFactory()`
    `protected int[]` | `getDefPlainPorts()`
    `protected int[]` | `getDefSSLPorts()`
    `String` | `getDiscoCategoryType()` Method returns component category type used for service discovery responses.
    `String` | `getDiscoDescription()` Method returns description used for service discovery responses.
    `protected long` | `getMaxInactiveTime()` Let's assume user should send something at least once every 24 hours....
    `protected Integer` | `getMaxQueueSize(int def)`
    `SeeOtherHostIfc` | `getSeeOtherHostInstance(String see_other_host_class)` Method retrieves object of particular class implementing `SeeOtherHostIfc`
    `protected XMPPIOService<Object>` | `getXMPPIOServiceInstance()`
    `int` | `hashCodeForPacket(Packet packet)` This method decides how incoming packets are distributed among processing threads.
    `protected boolean` | `isAllowed(XMPPIOService<Object> serv, String hostname)`
    `protected ReceiverTimeoutHandler` | `newStartedHandler()`
    `protected ReceiverTimeoutHandler` | `newStoppedHandler()`
    `protected void` | `nodeShutdown(ShutdownEvent event)`
    `protected String[]` | `prepareSeeOtherHost(XMPPIOService<Object> serv, String hostname, BareJID see_other_host)`
    `protected String` | `prepareStreamClose(XMPPIOService<Object> serv)`
    `protected String` | `prepareStreamError(XMPPIOService<Object> serv, List<Element> err_el)`
    `protected String[]` | `prepareStreamError(XMPPIOService<Object> serv, StreamError streamError, String hostname)`
    `protected String` | `prepareStreamOpen(XMPPIOService<Object> serv, String id, String hostname)`
    `protected void` | `preprocessStreamFeatures(XMPPIOService<Object> serv, Element elem_features)`
    `protected void` | `processCommand(Packet packet)`
    `void` | `processPacket(Packet packet)` This is the main `Packet` processing method.
    `Queue<Packet>` | `processSocketData(XMPPIOService<Object> serv)`
    `boolean` | `processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)` Processes undelivered packets
    `void` | `reconnectionFailed(Map<String,Object> port_props)`
    `int` | `schedulerThreads()` Method returns default number of threads used by SchedulerExecutorService
    `void` | `serviceStarted(XMPPIOService<Object> service)`
    `boolean` | `serviceStopped(XMPPIOService<Object> service)`
    `void` | `setRegistrationThrottling(RegistrationThrottling throttling)`
    `void` | `setSee_other_host_strategy(SeeOtherHostIfc see_other_host_strategy)`
    `protected void` | `socketAccepted(XMPPIOService serv, SocketType type)`
    `void` | `start()`
    `void` | `stop()`
    `void` | `tlsHandshakeCompleted(XMPPIOService<Object> serv)`
    `void` | `xmppStreamClosed(XMPPIOService<Object> serv)`
    `String` | `xmppStreamError(XMPPIOService<Object> serv, List<Element> err_el)`
    `String[]` | `xmppStreamOpened(XMPPIOService<Object> serv, Map<String,String> attribs)`

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

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

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

      `addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, removeRegexRouting, setIncomingFilters, setOutogingFilters, setParent, setSchedulerThreads_size`

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

      `addComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initialize, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, 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.stats.StatisticsContainerIfc

      `getName`

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

      `getDefHostName`

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

      `getComponentId, getComponentInfo, getName, isInitializationComplete`

- - ### Field Detail

    - #### FORCE_REDIRECT_TO_KEY

          protected static final String FORCE_REDIRECT_TO_KEY

      See Also:
        Constant Field Values

    - #### eventBus

          @Inject
          protected EventBus eventBus

    - #### routings

          @Inject
          protected RoutingsContainer.RoutingComputer routings

    - #### see_other_host_strategy

          @Inject(nullAllowed=true)
          protected SeeOtherHostIfc see_other_host_strategy

  - ### Constructor Detail

    - #### ClientConnectionManager

          public ClientConnectionManager()

  - ### Method Detail

    - #### hashCodeForPacket

          public int hashCodeForPacket(Packet packet)

      Description copied from class: `AbstractMessageReceiver`
      This method decides how incoming packets are distributed among processing threads. Different components needs different distribution to efficient use all threads and avoid packets re-ordering.
      If there are N processing threads, packets are distributed among threads using following code:

           int threadNo = Math.abs(hashCodeForPacket(packet) % N);

      For a PubSub component, for example, a better packets distribution would be based on the PubSub channel name, for SM a better distribution is based on the destination address, etc....
      Overrides:
        `hashCodeForPacket` in class `ConnectionManager<XMPPIOService<Object>>`
      Parameters:
        `packet` - is a `Packet` which needs to be processed by some thread.
      Returns:
        a hash code generated for the input thread.

    - #### processPacket

          public void processPacket(Packet packet)

      Description copied from class: `AbstractMessageReceiver`
      This is the main `Packet` processing method. It is called concurrently from many threads so implementing it in thread save manner is essential. The method is called for each packet addressed to the component.
      Please note, the `Packet` instance may be processed by different parts of the server, different components or plugins at the same time. Therefore this is very important to tread the `Packet` instance as unmodifiable object.
      Processing in this method is asynchronous, therefore there is no result value. If there are some 'result' packets generated during processing, they should be passed back using `addOutPacket(Packet)` method.
      Overrides:
        `processPacket` in class `ConnectionManager<XMPPIOService<Object>>`
      Parameters:
        `packet` - is an instance of the `Packet` class passed for processing.

    - #### processSocketData

          public Queue<Packet> processSocketData(XMPPIOService<Object> serv)

      Specified by:
        `processSocketData` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### processUndeliveredPacket

          public boolean processUndeliveredPacket(Packet packet,
                                                  Long stamp,
                                                  String errorMessage)

      Description copied from class: `ConnectionManager`
      Processes undelivered packets
      Specified by:
        `processUndeliveredPacket` in class `ConnectionManager<XMPPIOService<Object>>`
        `stamp` - - timestamp when packet was received to be written to XMPPIOService

    - #### reconnectionFailed

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

      Specified by:
        `reconnectionFailed` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### serviceStarted

          public void serviceStarted(XMPPIOService<Object> service)

      Overrides:
        `serviceStarted` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### serviceStopped

          public boolean serviceStopped(XMPPIOService<Object> service)

      Specified by:
        `serviceStopped` in interface `IOServiceListener<XMPPIOService<Object>>`
      Overrides:
        `serviceStopped` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### setRegistrationThrottling

          public void setRegistrationThrottling(RegistrationThrottling throttling)

    - #### start

          public void start()

      Specified by:
        `start` in interface `MessageReceiver`
      Overrides:
        `start` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### stop

          public void stop()

      Overrides:
        `stop` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### tlsHandshakeCompleted

          public void tlsHandshakeCompleted(XMPPIOService<Object> serv)

    - #### xmppStreamClosed

          public void xmppStreamClosed(XMPPIOService<Object> serv)

    - #### xmppStreamOpened

          public String[] xmppStreamOpened(XMPPIOService<Object> serv,
                                           Map<String,String> attribs)

    - #### xmppStreamError

          public String xmppStreamError(XMPPIOService<Object> serv,
                                        List<Element> err_el)

      Specified by:
        `xmppStreamError` in interface `XMPPIOServiceListener<XMPPIOService<Object>>`
      Overrides:
        `xmppStreamError` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### getDiscoCategoryType

          public String getDiscoCategoryType()

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

    - #### getDiscoDescription

          public String getDiscoDescription()

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

    - #### getSeeOtherHostInstance

          public SeeOtherHostIfc getSeeOtherHostInstance(String see_other_host_class)

      Method retrieves object of particular class implementing `SeeOtherHostIfc`
      Parameters:
        `see_other_host_class` - class of `SeeOtherHostIfc` implementation
      Returns:
        a value of `SeeOtherHostIfc`

    - #### setSee_other_host_strategy

          public void setSee_other_host_strategy(SeeOtherHostIfc see_other_host_strategy)

    - #### schedulerThreads

          public int schedulerThreads()

      Description copied from class: `AbstractMessageReceiver`
      Method returns default number of threads used by SchedulerExecutorService
      Overrides:
        `schedulerThreads` in class `AbstractMessageReceiver`
      Returns:
        a value of `int`

    - #### getClientTrustManagerFactory

          public ClientTrustManagerFactory getClientTrustManagerFactory()

    - #### changeDataReceiver

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

    - #### isAllowed

          protected boolean isAllowed(XMPPIOService<Object> serv,
                                      String hostname)

    - #### newStartedHandler

          protected ReceiverTimeoutHandler newStartedHandler()

    - #### newStoppedHandler

          protected ReceiverTimeoutHandler newStoppedHandler()

    - #### nodeShutdown

          @HandleEvent
          protected void nodeShutdown(ShutdownEvent event)

    - #### processCommand

          protected void processCommand(Packet packet)

    - #### getDefPlainPorts

          protected int[] getDefPlainPorts()

      Overrides:
        `getDefPlainPorts` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### getDefSSLPorts

          protected int[] getDefSSLPorts()

      Overrides:
        `getDefSSLPorts` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### getMaxInactiveTime

          protected long getMaxInactiveTime()

      Let's assume user should send something at least once every 24 hours....
      Specified by:
        `getMaxInactiveTime` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### getMaxQueueSize

          protected Integer getMaxQueueSize(int def)

      Overrides:
        `getMaxQueueSize` in class `AbstractMessageReceiver`

    - #### getXMPPIOServiceInstance

          protected XMPPIOService<Object> getXMPPIOServiceInstance()

      Specified by:
        `getXMPPIOServiceInstance` in class `ConnectionManager<XMPPIOService<Object>>`

    - #### prepareStreamClose

          protected String prepareStreamClose(XMPPIOService<Object> serv)

    - #### prepareStreamOpen

          protected String prepareStreamOpen(XMPPIOService<Object> serv,
                                             String id,
                                             String hostname)

    - #### prepareStreamError

          protected String prepareStreamError(XMPPIOService<Object> serv,
                                              List<Element> err_el)

    - #### prepareStreamError

          protected String[] prepareStreamError(XMPPIOService<Object> serv,
                                                StreamError streamError,
                                                String hostname)

    - #### prepareSeeOtherHost

          protected String[] prepareSeeOtherHost(XMPPIOService<Object> serv,
                                                 String hostname,
                                                 BareJID see_other_host)

    - #### preprocessStreamFeatures

          protected void preprocessStreamFeatures(XMPPIOService<Object> serv,
                                                  Element elem_features)

    - #### socketAccepted

          protected void socketAccepted(XMPPIOService serv,
                                        SocketType type)

      Overrides:
        `socketAccepted` in class `ConnectionManager<XMPPIOService<Object>>`

Copyright © 2004–2019 "Tigase, Inc.". All rights reserved.