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
Modifier and TypeFieldDescriptionprotected EventBus
protected static final String
protected RoutingsContainer.RoutingComputer
protected SeeOtherHostIfc
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
-
Method Summary
Modifier and TypeMethodDescriptionprotected JID
changeDataReceiver
(Packet packet, JID newAddress, String command_sessionId, XMPPIOService<Object> serv) protected int[]
protected int[]
Method returns component category type used for service discovery responses.Method returns description used for service discovery responses.protected long
Let's assume user should send something at least once every 24 hours....protected Integer
getMaxQueueSize
(int def) getSeeOtherHostInstance
(String see_other_host_class) Method retrieves object of particular class implementingSeeOtherHostIfc
protected XMPPIOService<Object>
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
protected ReceiverTimeoutHandler
protected void
nodeShutdown
(ShutdownEvent event) protected String[]
prepareSeeOtherHost
(XMPPIOService<Object> serv, String hostname, BareJID see_other_host) protected String
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 mainPacket
processing method.processSocketData
(XMPPIOService<Object> serv) boolean
processUndeliveredPacket
(Packet packet, Long stamp, String errorMessage) Processes undelivered packetsvoid
reconnectionFailed
(Map<String, Object> port_props) int
Method returns default number of threads used by SchedulerExecutorServicevoid
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
void
xmppStreamClosed
(XMPPIOService<Object> serv) 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
- See Also:
-
eventBus
-
routings
-
see_other_host_strategy
-
-
Constructor Details
-
ClientConnectionManager
public ClientConnectionManager()
-
-
Method Details
-
hashCodeForPacket
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 classConnectionManager<XMPPIOService<Object>>
- Parameters:
packet
- is aPacket
which needs to be processed by some thread.- Returns:
- a hash code generated for the input thread.
-
processPacket
Description copied from class:AbstractMessageReceiver
This is the mainPacket
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, thePacket
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 thePacket
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 usingaddOutPacket(Packet)
method.- Overrides:
processPacket
in classConnectionManager<XMPPIOService<Object>>
- Parameters:
packet
- is an instance of thePacket
class passed for processing.
-
processSocketData
- Specified by:
processSocketData
in classConnectionManager<XMPPIOService<Object>>
-
processUndeliveredPacket
Description copied from class:ConnectionManager
Processes undelivered packets- Specified by:
processUndeliveredPacket
in classConnectionManager<XMPPIOService<Object>>
stamp
- - timestamp when packet was received to be written to XMPPIOService
-
reconnectionFailed
- Specified by:
reconnectionFailed
in classConnectionManager<XMPPIOService<Object>>
-
serviceStarted
- Overrides:
serviceStarted
in classConnectionManager<XMPPIOService<Object>>
-
serviceStopped
- Specified by:
serviceStopped
in interfaceIOServiceListener<XMPPIOService<Object>>
- Overrides:
serviceStopped
in classConnectionManager<XMPPIOService<Object>>
-
setRegistrationThrottling
-
start
public void start()- Specified by:
start
in interfaceMessageReceiver
- Overrides:
start
in classConnectionManager<XMPPIOService<Object>>
-
stop
public void stop()- Overrides:
stop
in classConnectionManager<XMPPIOService<Object>>
-
tlsHandshakeCompleted
-
xmppStreamClosed
-
xmppStreamOpened
-
xmppStreamError
- Specified by:
xmppStreamError
in interfaceXMPPIOServiceListener<XMPPIOService<Object>>
- Overrides:
xmppStreamError
in classConnectionManager<XMPPIOService<Object>>
-
getDiscoCategoryType
Description copied from class:BasicComponent
Method returns component category type used for service discovery responses.- Overrides:
getDiscoCategoryType
in classBasicComponent
- Returns:
- category type of a component
-
getDiscoDescription
Description copied from class:BasicComponent
Method returns description used for service discovery responses.- Overrides:
getDiscoDescription
in classBasicComponent
- Returns:
- description of a component
-
getSeeOtherHostInstance
Method retrieves object of particular class implementingSeeOtherHostIfc
- Parameters:
see_other_host_class
- class ofSeeOtherHostIfc
implementation- Returns:
- a value of
SeeOtherHostIfc
-
setSee_other_host_strategy
-
schedulerThreads
public int schedulerThreads()Description copied from class:AbstractMessageReceiver
Method returns default number of threads used by SchedulerExecutorService- Overrides:
schedulerThreads
in classAbstractMessageReceiver
- Returns:
- a value of
int
-
getClientTrustManagerFactory
-
changeDataReceiver
-
isAllowed
-
newStartedHandler
-
newStoppedHandler
-
nodeShutdown
-
processCommand
-
getDefPlainPorts
protected int[] getDefPlainPorts()- Overrides:
getDefPlainPorts
in classConnectionManager<XMPPIOService<Object>>
-
getDefSSLPorts
protected int[] getDefSSLPorts()- Overrides:
getDefSSLPorts
in classConnectionManager<XMPPIOService<Object>>
-
getMaxInactiveTime
protected long getMaxInactiveTime()
Let's assume user should send something at least once every 24 hours....- Specified by:
getMaxInactiveTime
in classConnectionManager<XMPPIOService<Object>>
-
getMaxQueueSize
- Overrides:
getMaxQueueSize
in classAbstractMessageReceiver
-
getXMPPIOServiceInstance
- Specified by:
getXMPPIOServiceInstance
in classConnectionManager<XMPPIOService<Object>>
-
prepareStreamClose
-
prepareStreamOpen
-
prepareStreamError
-
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
-
socketAccepted
- Overrides:
socketAccepted
in classConnectionManager<XMPPIOService<Object>>
-