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_TYPENested classes/interfaces inherited from class tigase.server.BasicComponent
BasicComponent.ServerInfoVHostItemExtensionNested classes/interfaces inherited from interface tigase.server.PacketWriterWithTimeout
PacketWriterWithTimeout.Handler -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected EventBusprotected static final Stringprotected RoutingsContainer.RoutingComputerprotected SeeOtherHostIfcFields 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_VALFields 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, SECONDFields inherited from class tigase.server.BasicComponent
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManagerFields 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_ACKFields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected JIDchangeDataReceiver(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 IntegergetMaxQueueSize(int def) getSeeOtherHostInstance(String see_other_host_class) Method retrieves object of particular class implementingSeeOtherHostIfcprotected XMPPIOService<Object> inthashCodeForPacket(Packet packet) This method decides how incoming packets are distributed among processing threads.protected booleanisAllowed(XMPPIOService<Object> serv, String hostname) protected ReceiverTimeoutHandlerprotected ReceiverTimeoutHandlerprotected voidnodeShutdown(ShutdownEvent event) protected String[]prepareSeeOtherHost(XMPPIOService<Object> serv, String hostname, BareJID see_other_host) protected Stringprotected StringprepareStreamError(XMPPIOService<Object> serv, List<Element> err_el) protected String[]prepareStreamError(XMPPIOService<Object> serv, StreamError streamError, String hostname) protected StringprepareStreamOpen(XMPPIOService<Object> serv, String id, String hostname) protected voidpreprocessStreamFeatures(XMPPIOService<Object> serv, Element elem_features) protected voidprocessCommand(Packet packet) voidprocessPacket(Packet packet) This is the mainPacketprocessing method.processSocketData(XMPPIOService<Object> serv) booleanprocessUndeliveredPacket(Packet packet, Long stamp, String errorMessage) Processes undelivered packetsvoidreconnectionFailed(Map<String, Object> port_props) intMethod returns default number of threads used by SchedulerExecutorServicevoidserviceStarted(XMPPIOService<Object> service) booleanserviceStopped(XMPPIOService<Object> service) voidsetRegistrationThrottling(RegistrationThrottling throttling) voidsetSee_other_host_strategy(SeeOtherHostIfc see_other_host_strategy) protected booleanshouldRedeliverWaitingPackets(XMPPIOService<Object> service) protected voidsocketAccepted(XMPPIOService serv, SocketType type) voidstart()voidstop()voidvoidxmppStreamClosed(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, redeliverWaitingPackets, register, release, releaseListener, serviceConnected, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, setupWatchdogThread, setWatchdogPingType, startService, unregister, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writePacketToSocket, writeRawDataMethods 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, updateFiltersNameMethods 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, updateServiceEntityMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface tigase.server.MessageReceiver
getDefHostNameMethods inherited from interface tigase.server.ServerComponent
getComponentId, getComponentInfo, getName, isInitializationCompleteMethods 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:AbstractMessageReceiverThis 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:
hashCodeForPacketin classConnectionManager<XMPPIOService<Object>>- Parameters:
packet- is aPacketwhich needs to be processed by some thread.- Returns:
- a hash code generated for the input thread.
-
processPacket
Description copied from class:AbstractMessageReceiverThis is the mainPacketprocessing 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, thePacketinstance may be processed by different parts of the server, different components or plugins at the same time. Therefore this is very important to tread thePacketinstance 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:
processPacketin classConnectionManager<XMPPIOService<Object>>- Parameters:
packet- is an instance of thePacketclass passed for processing.
-
processSocketData
- Specified by:
processSocketDatain classConnectionManager<XMPPIOService<Object>>
-
processUndeliveredPacket
Description copied from class:ConnectionManagerProcesses undelivered packets- Specified by:
processUndeliveredPacketin classConnectionManager<XMPPIOService<Object>>- Parameters:
stamp- - timestamp when packet was received to be written to XMPPIOService
-
reconnectionFailed
- Specified by:
reconnectionFailedin classConnectionManager<XMPPIOService<Object>>
-
serviceStarted
- Overrides:
serviceStartedin classConnectionManager<XMPPIOService<Object>>
-
serviceStopped
- Specified by:
serviceStoppedin interfaceIOServiceListener<XMPPIOService<Object>>- Overrides:
serviceStoppedin classConnectionManager<XMPPIOService<Object>>
-
setRegistrationThrottling
-
start
public void start()- Specified by:
startin interfaceMessageReceiver- Overrides:
startin classConnectionManager<XMPPIOService<Object>>
-
stop
public void stop()- Overrides:
stopin classConnectionManager<XMPPIOService<Object>>
-
tlsHandshakeCompleted
-
shouldRedeliverWaitingPackets
- Overrides:
shouldRedeliverWaitingPacketsin classConnectionManager<XMPPIOService<Object>>
-
xmppStreamClosed
-
xmppStreamOpened
-
xmppStreamError
- Specified by:
xmppStreamErrorin interfaceXMPPIOServiceListener<XMPPIOService<Object>>- Overrides:
xmppStreamErrorin classConnectionManager<XMPPIOService<Object>>
-
getDiscoCategoryType
Description copied from class:BasicComponentMethod returns component category type used for service discovery responses.- Overrides:
getDiscoCategoryTypein classBasicComponent- Returns:
- category type of a component
-
getDiscoDescription
Description copied from class:BasicComponentMethod returns description used for service discovery responses.- Overrides:
getDiscoDescriptionin classBasicComponent- Returns:
- description of a component
-
getSeeOtherHostInstance
Method retrieves object of particular class implementingSeeOtherHostIfc- Parameters:
see_other_host_class- class ofSeeOtherHostIfcimplementation- Returns:
- a value of
SeeOtherHostIfc
-
setSee_other_host_strategy
-
schedulerThreads
public int schedulerThreads()Description copied from class:AbstractMessageReceiverMethod returns default number of threads used by SchedulerExecutorService- Overrides:
schedulerThreadsin classAbstractMessageReceiver- Returns:
- a value of
int
-
getClientTrustManagerFactory
-
changeDataReceiver
-
isAllowed
-
newStartedHandler
-
newStoppedHandler
-
nodeShutdown
-
processCommand
-
getDefPlainPorts
protected int[] getDefPlainPorts()- Overrides:
getDefPlainPortsin classConnectionManager<XMPPIOService<Object>>
-
getDefSSLPorts
protected int[] getDefSSLPorts()- Overrides:
getDefSSLPortsin classConnectionManager<XMPPIOService<Object>>
-
getMaxInactiveTime
protected long getMaxInactiveTime()
Let's assume user should send something at least once every 24 hours....- Specified by:
getMaxInactiveTimein classConnectionManager<XMPPIOService<Object>>
-
getMaxQueueSize
- Overrides:
getMaxQueueSizein classAbstractMessageReceiver
-
getXMPPIOServiceInstance
- Specified by:
getXMPPIOServiceInstancein 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:
socketAcceptedin classConnectionManager<XMPPIOService<Object>>
-