Package 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`, `PacketWriterWithTimeout`, `ServerComponent`, `StatisticsContainer`, `StatisticsContainerIfc`, `VHostListener`, `XMPPIOServiceListener<XMPPIOService<Object>>`

Direct Known Subclasses:
  `BoshConnectionManager`, `ClientConnectionClustered`, `WebSocketClientConnectionManager`

@Bean(name="c2s", parent=Kernel.class, active=true) @ConfigType({DefaultMode,ConnectionManagersMode}) @ClusterModeRequired(active=false) @ConfigAliases(@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

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`

  ## 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 EventBus`
  `eventBus`
  `protected static final 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_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, SOCKET_BUFFER_HT_PROP_VAL, SOCKET_BUFFER_ST_PROP_VAL, 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
  `ClientConnectionManager()`

- ## Method Summary

  Modifier and Type
  Method
  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, enableServiceConnectedTimeout, everyMinute, getDefPorts, getDefTrafficThrottling, getFlashCrossDomainPolicy, getNet_buffer_limit, getParamsForPort, getPortsConfigBean, getServiceId, getServiceId, getStatistics, getTrafficThrottling, getUniqueId, getXMPPIOService, getXMPPIOService, initBindings, initializationCompleted, isHighThroughput, newWatchdog, packetsReady, processingInThreads, processingOutThreads, register, release, releaseListener, serviceConnected, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, setupWatchdogThread, setWatchdogPingType, startService, unregister, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, 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, 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.server.MessageReceiver

  `getDefHostName`

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

  `getComponentId, getComponentInfo, getName, isInitializationComplete`

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

  `getName`

- ## Field Details

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

  - ### ClientConnectionManager

    public ClientConnectionManager()

- ## Method Details

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