Package tigase.server
Class ConnectionManager<IO extends XMPPIOService<?>>
- java.lang.Object
-
- tigase.server.BasicComponent
-
- tigase.server.AbstractMessageReceiver
-
- tigase.server.ConnectionManager<IO>
-
- All Implemented Interfaces:
ClusteredComponentIfc,Configurable,XMPPService,ConfigurationChangedAware,Initializable,RegistrarBean,IOServiceListener<IO>,MessageReceiver,PacketWriterWithTimeout,ServerComponent,StatisticsContainer,StatisticsContainerIfc,VHostListener,XMPPIOServiceListener<IO>
- Direct Known Subclasses:
ClientConnectionManager,ClusterConnectionManager,ComponentConnectionManager,ComponentProtocol,S2SConnectionManager
public abstract class ConnectionManager<IO extends XMPPIOService<?>> extends AbstractMessageReceiver implements XMPPIOServiceListener<IO>, RegistrarBean
Describe class ConnectionManager here.
Created: Sun Jan 22 22:52:58 2006- Author:
- Artur Hefczyc
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classConnectionManager.LIMIT_ACTIONstatic classConnectionManager.PortConfigBeanstatic classConnectionManager.PortsConfigBeanstatic classConnectionManager.SecPortConfigBeanprotected classConnectionManager.WatchdogClass looks in all established connections and checks whether any of them is dead by performing either whitspace or XMPP ping.static classConnectionManager.WATCHDOG_PING_TYPEHolds possible types of ping to be used in watchdog service for detection of broken connections-
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 longconnectionDelayprotected booleandelayPortListeningprotected intelements_number_limitProtection from the system overload and DOS attack.static java.lang.StringELEMENTS_NUMBER_LIMIT_PROP_KEYKey name of the system property for configuration protection from system overload and DOS attack.static intELEMENTS_NUMBER_LIMIT_PROP_VALDefault value for the system property for configuration protection from system overload and DOS attack.static java.lang.StringHT_TRAFFIC_THROTTLING_PROP_KEYstatic java.lang.StringHT_TRAFFIC_THROTTLING_PROP_VALprotected Kernelkernelstatic longLAST_MINUTE_BIN_LIMIT_PROP_VALstatic longLAST_MINUTE_PACKETS_LIMIT_PROP_VALstatic java.lang.StringMAX_INACTIVITY_TIMEstatic java.lang.StringMAX_RECONNECTS_PROP_KEYprotected intnet_bufferstatic java.lang.StringNET_BUFFER_HT_PROP_KEYstatic intNET_BUFFER_HT_PROP_VALstatic intNET_BUFFER_LIMIT_HT_PROP_VALstatic intNET_BUFFER_LIMIT_ST_PROP_VALstatic java.lang.StringNET_BUFFER_ST_PROP_KEYstatic intNET_BUFFER_ST_PROP_VALprotected static ElementpingElementstatic java.lang.StringPORT_CLASS_PROP_KEYstatic java.lang.StringPORT_IFC_PROP_KEYjava.lang.String[]PORT_IFC_PROP_VALstatic java.lang.StringPORT_KEYstatic booleanPORT_LISTENING_DELAY_DEFstatic java.lang.StringPORT_LISTENING_DELAY_KEYstatic java.lang.StringPORT_LOCAL_HOST_PROP_KEYstatic java.lang.StringPORT_NEW_CONNECTIONS_THROTTLING_KEYstatic java.lang.StringPORT_REMOTE_HOST_PROP_KEYstatic java.lang.StringPORT_REMOTE_HOST_PROP_VALstatic java.lang.StringPORT_SOCKET_PROP_KEYstatic java.lang.StringPORT_TYPE_PROP_KEYstatic java.lang.StringPORTS_PROP_KEYprotected XMPPIOProcessor[]processorsstatic java.lang.StringPROP_KEYprotected intserviceConnectedTimeoutstatic java.lang.StringST_TRAFFIC_THROTTLING_PROP_KEYstatic java.lang.StringST_TRAFFIC_THROTTLING_PROP_VALstatic longTOTAL_BIN_LIMIT_PROP_VALstatic longTOTAL_PACKETS_LIMIT_PROP_VALstatic java.lang.StringTRAFFIC_THROTTLING_PROP_KEYprotected java.lang.StringtrafficThrottlingstatic java.lang.StringWATCHDOG_DELAYstatic java.lang.StringWATCHDOG_PING_TYPE_KEYstatic java.lang.StringWATCHDOG_TIMEOUTprotected longwatchdogDelayprotected ConnectionManager.WATCHDOG_PING_TYPEwatchdogPingTypeprotected longwatchdogTimeoutstatic java.lang.StringWHITE_CHAR_ACK_PROP_KEYstatic booleanWHITE_CHAR_ACK_PROP_VALstatic java.lang.StringXMPP_ACK_PROP_KEYstatic booleanXMPP_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 ConnectionManager()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidaddWaitingTask(java.util.Map<java.lang.String,java.lang.Object> conn)voidbeanConfigurationChanged(java.util.Collection<java.lang.String> changedFields)Method called when configuration was applied to bean.protected <T> voidcheckHighThroughputProperty(java.lang.String ht_def_key, T ht_dev_val, java.lang.String st_def_key, T st_def_val, java.lang.String prop_key, java.lang.Class<T> prop_val_class, java.util.Map<java.lang.String,java.lang.Object> params, java.util.Map<java.lang.String,java.lang.Object> props)booleancheckTrafficLimits(IO serv)protected voidconnectWaitingTasks()protected intcountIOServices()Returns number of active network connections (IOServices).protected voiddoForAllServices(ServiceChecker<IO> checker)Perform a given action defined by ServiceChecker for all active IOService objects (active network connections).protected booleanenableServiceConnectedTimeout(IO service)voideveryMinute()Utility method executed precisely every minute.protected int[]getDefPlainPorts()java.util.HashSet<java.lang.Integer>getDefPorts()protected int[]getDefSSLPorts()protected java.lang.StringgetDefTrafficThrottling()java.lang.StringgetFlashCrossDomainPolicy()protected abstract longgetMaxInactiveTime()intgetNet_buffer_limit()protected java.util.Map<java.lang.String,java.lang.Object>getParamsForPort(int port)ConnectionManager.PortsConfigBeangetPortsConfigBean()protected java.lang.StringgetServiceId(Packet packet)protected java.lang.StringgetServiceId(JID jid)voidgetStatistics(StatisticsList list)Method returns component statistics.java.lang.StringgetTrafficThrottling()protected java.lang.StringgetUniqueId(IO serv)IOgetXMPPIOService(java.lang.String serviceId)protected IOgetXMPPIOService(Packet p)protected abstract IOgetXMPPIOServiceInstance()inthashCodeForPacket(Packet packet)This method decides how incoming packets are distributed among processing threads.voidinitBindings(javax.script.Bindings binds)Initialize a mapping of key/value pairs which can be used in scripts loaded by the servervoidinitializationCompleted()Method is called byMessageRouterwhen all the startup components of the server have been loaded and configured through setProperties(...) call.protected booleanisHighThroughput()protected ConnectionManager.WatchdognewWatchdog()voidpacketsReady(IO serv)intprocessingInThreads()Concurrency control method.intprocessingOutThreads()Concurrency control method.voidprocessPacket(Packet packet)This is the mainPacketprocessing method.abstract java.util.Queue<Packet>processSocketData(IO serv)abstract booleanprocessUndeliveredPacket(Packet packet, java.lang.Long stamp, java.lang.String errorMessage)Processes undelivered packetsabstract voidreconnectionFailed(java.util.Map<java.lang.String,java.lang.Object> port_props)voidregister(Kernel kernel)Method called when bean is being registered allowing developer to programatically register other beans.voidrelease()Method called when component is being stopped and unloaded.protected voidreleaseListener(ConnectionOpenListener toStop)protected voidserviceConnected(IO service)voidserviceStarted(IO service)booleanserviceStopped(IO service)voidsetFlashCrossDomainPolicyFile(java.lang.String file)voidsetName(java.lang.String name)Method used to assign component name (localpart of the component)voidsetNet_buffer_limit(int value)voidsetProcessors(XMPPIOProcessor[] processors)voidsetTrafficThrottling(java.lang.String trafficThrottling)protected voidsetupWatchdogThread()protected voidsocketAccepted(IO serv, SocketType type)voidstart()protected tigase.server.ConnectionManager.ConnectionListenerImplstartService(java.util.Map<java.lang.String,java.lang.Object> port_props)voidstop()voidunregister(Kernel kernel)Method called while bean is being unregistered.voidupdateConnectionDetails(java.util.Map<java.lang.String,java.lang.Object> port_props)voidwritePacketsToSocket(IO serv, java.util.Queue<Packet> packets)booleanwritePacketToSocket(IO ios, Packet p)protected booleanwritePacketToSocket(Packet p)protected booleanwritePacketToSocket(Packet p, java.lang.String serviceId)protected voidwriteRawData(IO ios, java.lang.String data)java.lang.StringxmppStreamError(IO serv, java.util.List<Element> err_el)-
Methods inherited from class tigase.server.AbstractMessageReceiver
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processOutPacket, processPacket, removeRegexRouting, schedulerThreads, 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, getDiscoCategoryType, getDiscoDescription, 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.net.IOServiceListener
tlsHandshakeCompleted
-
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
-
Methods inherited from interface tigase.xmpp.XMPPIOServiceListener
xmppStreamClosed, xmppStreamOpened
-
-
-
-
Field Detail
-
HT_TRAFFIC_THROTTLING_PROP_KEY
public static final java.lang.String HT_TRAFFIC_THROTTLING_PROP_KEY
- See Also:
- Constant Field Values
-
HT_TRAFFIC_THROTTLING_PROP_VAL
public static final java.lang.String HT_TRAFFIC_THROTTLING_PROP_VAL
- See Also:
- Constant Field Values
-
NET_BUFFER_HT_PROP_KEY
public static final java.lang.String NET_BUFFER_HT_PROP_KEY
- See Also:
- Constant Field Values
-
NET_BUFFER_ST_PROP_KEY
public static final java.lang.String NET_BUFFER_ST_PROP_KEY
- See Also:
- Constant Field Values
-
PORT_LOCAL_HOST_PROP_KEY
public static final java.lang.String PORT_LOCAL_HOST_PROP_KEY
- See Also:
- Constant Field Values
-
ST_TRAFFIC_THROTTLING_PROP_KEY
public static final java.lang.String ST_TRAFFIC_THROTTLING_PROP_KEY
- See Also:
- Constant Field Values
-
ST_TRAFFIC_THROTTLING_PROP_VAL
public static final java.lang.String ST_TRAFFIC_THROTTLING_PROP_VAL
- See Also:
- Constant Field Values
-
TRAFFIC_THROTTLING_PROP_KEY
public static final java.lang.String TRAFFIC_THROTTLING_PROP_KEY
- See Also:
- Constant Field Values
-
ELEMENTS_NUMBER_LIMIT_PROP_KEY
public static final java.lang.String ELEMENTS_NUMBER_LIMIT_PROP_KEY
Key name of the system property for configuration protection from system overload and DOS attack.- See Also:
- Constant Field Values
-
LAST_MINUTE_BIN_LIMIT_PROP_VAL
public static final long LAST_MINUTE_BIN_LIMIT_PROP_VAL
- See Also:
- Constant Field Values
-
LAST_MINUTE_PACKETS_LIMIT_PROP_VAL
public static final long LAST_MINUTE_PACKETS_LIMIT_PROP_VAL
- See Also:
- Constant Field Values
-
MAX_INACTIVITY_TIME
public static final java.lang.String MAX_INACTIVITY_TIME
- See Also:
- Constant Field Values
-
MAX_RECONNECTS_PROP_KEY
public static final java.lang.String MAX_RECONNECTS_PROP_KEY
- See Also:
- Constant Field Values
-
NET_BUFFER_HT_PROP_VAL
public static final int NET_BUFFER_HT_PROP_VAL
- See Also:
- Constant Field Values
-
NET_BUFFER_ST_PROP_VAL
public static final int NET_BUFFER_ST_PROP_VAL
- See Also:
- Constant Field Values
-
NET_BUFFER_LIMIT_HT_PROP_VAL
public static final int NET_BUFFER_LIMIT_HT_PROP_VAL
- See Also:
- Constant Field Values
-
NET_BUFFER_LIMIT_ST_PROP_VAL
public static final int NET_BUFFER_LIMIT_ST_PROP_VAL
- See Also:
- Constant Field Values
-
PORT_CLASS_PROP_KEY
public static final java.lang.String PORT_CLASS_PROP_KEY
- See Also:
- Constant Field Values
-
PORT_IFC_PROP_KEY
public static final java.lang.String PORT_IFC_PROP_KEY
- See Also:
- Constant Field Values
-
PORT_LISTENING_DELAY_KEY
public static final java.lang.String PORT_LISTENING_DELAY_KEY
- See Also:
- Constant Field Values
-
PORT_LISTENING_DELAY_DEF
public static final boolean PORT_LISTENING_DELAY_DEF
- See Also:
- Constant Field Values
-
PORT_KEY
public static final java.lang.String PORT_KEY
- See Also:
- Constant Field Values
-
PORT_NEW_CONNECTIONS_THROTTLING_KEY
public static final java.lang.String PORT_NEW_CONNECTIONS_THROTTLING_KEY
- See Also:
- Constant Field Values
-
PORT_REMOTE_HOST_PROP_KEY
public static final java.lang.String PORT_REMOTE_HOST_PROP_KEY
- See Also:
- Constant Field Values
-
PORT_REMOTE_HOST_PROP_VAL
public static final java.lang.String PORT_REMOTE_HOST_PROP_VAL
- See Also:
- Constant Field Values
-
PORT_SOCKET_PROP_KEY
public static final java.lang.String PORT_SOCKET_PROP_KEY
- See Also:
- Constant Field Values
-
PORT_TYPE_PROP_KEY
public static final java.lang.String PORT_TYPE_PROP_KEY
- See Also:
- Constant Field Values
-
PROP_KEY
public static final java.lang.String PROP_KEY
- See Also:
- Constant Field Values
-
TOTAL_BIN_LIMIT_PROP_VAL
public static final long TOTAL_BIN_LIMIT_PROP_VAL
- See Also:
- Constant Field Values
-
TOTAL_PACKETS_LIMIT_PROP_VAL
public static final long TOTAL_PACKETS_LIMIT_PROP_VAL
- See Also:
- Constant Field Values
-
WHITE_CHAR_ACK_PROP_KEY
public static final java.lang.String WHITE_CHAR_ACK_PROP_KEY
- See Also:
- Constant Field Values
-
XMPP_ACK_PROP_KEY
public static final java.lang.String XMPP_ACK_PROP_KEY
- See Also:
- Constant Field Values
-
XMPP_ACK_PROP_VAL
public static final boolean XMPP_ACK_PROP_VAL
- See Also:
- Constant Field Values
-
WHITE_CHAR_ACK_PROP_VAL
public static final boolean WHITE_CHAR_ACK_PROP_VAL
- See Also:
- Constant Field Values
-
PORTS_PROP_KEY
public static final java.lang.String PORTS_PROP_KEY
- See Also:
- Constant Field Values
-
WATCHDOG_DELAY
public static final java.lang.String WATCHDOG_DELAY
- See Also:
- Constant Field Values
-
WATCHDOG_TIMEOUT
public static final java.lang.String WATCHDOG_TIMEOUT
- See Also:
- Constant Field Values
-
WATCHDOG_PING_TYPE_KEY
public static final java.lang.String WATCHDOG_PING_TYPE_KEY
- See Also:
- Constant Field Values
-
pingElement
protected static final Element pingElement
-
ELEMENTS_NUMBER_LIMIT_PROP_VAL
public static int ELEMENTS_NUMBER_LIMIT_PROP_VAL
Default value for the system property for configuration protection from system overload and DOS attack.
-
PORT_IFC_PROP_VAL
@ConfigField(desc="Interfaces to listen on", alias="ifc") public java.lang.String[] PORT_IFC_PROP_VAL
-
connectionDelay
@ConfigField(desc="Delay before connection is established") protected long connectionDelay
-
delayPortListening
protected boolean delayPortListening
-
elements_number_limit
@ConfigField(desc="Limit of elements for single XMPP stanza", alias="elements-number-limit") protected int elements_number_limit
Protection from the system overload and DOS attack. We want to limit number of elements created within a single XMPP stanza.
-
kernel
protected Kernel kernel
-
net_buffer
@ConfigField(desc="Default size of a network buffer", alias="net-buffer") protected int net_buffer
-
processors
@Inject(nullAllowed=true) protected XMPPIOProcessor[] processors
-
trafficThrottling
@ConfigField(desc="Traffic throttling") protected java.lang.String trafficThrottling
-
watchdogDelay
@ConfigField(desc="Watchdog delay", alias="watchdog-delay") protected long watchdogDelay
-
watchdogPingType
@ConfigField(desc="Watchdog ping type", alias="watchdog-ping-type") protected ConnectionManager.WATCHDOG_PING_TYPE watchdogPingType
-
watchdogTimeout
@ConfigField(desc="Watchdog timeout", alias="watchdog-timeout") protected long watchdogTimeout
-
serviceConnectedTimeout
@ConfigField(desc="Service connection timeout", alias="service-connected-timeout") protected int serviceConnectedTimeout
-
-
Method Detail
-
enableServiceConnectedTimeout
protected boolean enableServiceConnectedTimeout(IO service)
-
beanConfigurationChanged
public void beanConfigurationChanged(java.util.Collection<java.lang.String> changedFields)
Description copied from interface:ConfigurationChangedAwareMethod called when configuration was applied to bean.- Specified by:
beanConfigurationChangedin interfaceConfigurationChangedAware- Overrides:
beanConfigurationChangedin classAbstractMessageReceiver- Parameters:
changedFields- collection of field names which were changed
-
checkTrafficLimits
public boolean checkTrafficLimits(IO serv)
-
everyMinute
public void everyMinute()
Description copied from class:AbstractMessageReceiverUtility method executed precisely every minute. A component can overwrite the method to put own code to be executed at the regular intervals of time.
Note, no extensive calculations should happen in this method nor long lasting operations. It is essential that the method processing does not exceed 1 minute. The overriding method must call the the super method first and only then run own code.- Overrides:
everyMinutein classAbstractMessageReceiver
-
hashCodeForPacket
public int hashCodeForPacket(Packet packet)
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 classAbstractMessageReceiver- Parameters:
packet- is aPacketwhich needs to be processed by some thread.- Returns:
- a hash code generated for the input thread.
-
initBindings
public void initBindings(javax.script.Bindings binds)
Description copied from class:BasicComponentInitialize a mapping of key/value pairs which can be used in scripts loaded by the server- Overrides:
initBindingsin classBasicComponent- Parameters:
binds- A mapping of key/value pairs, all of whose keys are Strings.
-
initializationCompleted
public void initializationCompleted()
Description copied from interface:ServerComponentMethod is called byMessageRouterwhen all the startup components of the server have been loaded and configured through setProperties(...) call. At this point the whole server should be loaded and functional, except initializations taking place in this routine.- Specified by:
initializationCompletedin interfaceServerComponent- Overrides:
initializationCompletedin classBasicComponent
-
packetsReady
public void packetsReady(IO serv) throws java.io.IOException
- Specified by:
packetsReadyin interfaceIOServiceListener<IO extends XMPPIOService<?>>- Throws:
java.io.IOException
-
processingInThreads
public int processingInThreads()
Description copied from class:AbstractMessageReceiverConcurrency control method. Returns preferable number of threads set for this component.- Overrides:
processingInThreadsin classAbstractMessageReceiver- Returns:
- preferable number of threads set for this component.
-
processingOutThreads
public int processingOutThreads()
Description copied from class:AbstractMessageReceiverConcurrency control method. Returns preferable number of threads set for this component.- Overrides:
processingOutThreadsin classAbstractMessageReceiver- Returns:
- preferable number of threads set for this component.
-
processPacket
public void processPacket(Packet packet)
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.- Specified by:
processPacketin classAbstractMessageReceiver- Parameters:
packet- is an instance of thePacketclass passed for processing.
-
processUndeliveredPacket
public abstract boolean processUndeliveredPacket(Packet packet, java.lang.Long stamp, java.lang.String errorMessage)
Processes undelivered packets- Parameters:
stamp- - timestamp when packet was received to be written to XMPPIOService
-
reconnectionFailed
public abstract void reconnectionFailed(java.util.Map<java.lang.String,java.lang.Object> port_props)
-
getDefPorts
public java.util.HashSet<java.lang.Integer> getDefPorts()
-
register
public void register(Kernel kernel)
Description copied from interface:RegistrarBeanMethod called when bean is being registered allowing developer to programatically register other beans.- Specified by:
registerin interfaceRegistrarBean- Parameters:
kernel- - instance from local scope
-
unregister
public void unregister(Kernel kernel)
Description copied from interface:RegistrarBeanMethod called while bean is being unregistered.- Specified by:
unregisterin interfaceRegistrarBean- Parameters:
kernel- - instance from local scope
-
release
public void release()
Description copied from interface:ServerComponentMethod called when component is being stopped and unloaded.- Specified by:
releasein interfaceServerComponent- Overrides:
releasein classAbstractMessageReceiver
-
serviceConnected
protected void serviceConnected(IO service)
-
serviceStarted
@TODO(note="Do something if service with the same unique ID is already started, possibly kill the old one...") public void serviceStarted(IO service)
-
serviceStopped
public boolean serviceStopped(IO service)
- Specified by:
serviceStoppedin interfaceIOServiceListener<IO extends XMPPIOService<?>>
-
start
public void start()
- Specified by:
startin interfaceMessageReceiver- Overrides:
startin classAbstractMessageReceiver
-
stop
public void stop()
- Overrides:
stopin classAbstractMessageReceiver
-
updateConnectionDetails
public void updateConnectionDetails(java.util.Map<java.lang.String,java.lang.Object> port_props)
-
xmppStreamError
public java.lang.String xmppStreamError(IO serv, java.util.List<Element> err_el)
- Specified by:
xmppStreamErrorin interfaceXMPPIOServiceListener<IO extends XMPPIOService<?>>
-
getPortsConfigBean
public ConnectionManager.PortsConfigBean getPortsConfigBean()
-
getStatistics
public void getStatistics(StatisticsList list)
Description copied from class:AbstractMessageReceiverMethod 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 haveLevel.FINESTassigned and must be put inside the level guard to prevent generating them by the system monitor. The system monitor does not collectFINESTstatistics.
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:
getStatisticsin interfaceStatisticsContainerIfc- Overrides:
getStatisticsin classAbstractMessageReceiver- Parameters:
list- is aStatistcsListwhere all statistics are stored.
-
getXMPPIOService
public IO getXMPPIOService(java.lang.String serviceId)
-
setName
public void setName(java.lang.String name)
Description copied from interface:ServerComponentMethod used to assign component name (localpart of the component)- Specified by:
setNamein interfaceServerComponent- Overrides:
setNamein classAbstractMessageReceiver- Parameters:
name- to be assigned
-
getFlashCrossDomainPolicy
public java.lang.String getFlashCrossDomainPolicy()
-
setFlashCrossDomainPolicyFile
public void setFlashCrossDomainPolicyFile(java.lang.String file)
-
getNet_buffer_limit
public int getNet_buffer_limit()
-
setNet_buffer_limit
public void setNet_buffer_limit(int value)
-
setProcessors
public void setProcessors(XMPPIOProcessor[] processors)
-
getTrafficThrottling
public java.lang.String getTrafficThrottling()
-
setTrafficThrottling
public void setTrafficThrottling(java.lang.String trafficThrottling)
-
connectWaitingTasks
protected void connectWaitingTasks()
-
setupWatchdogThread
protected void setupWatchdogThread()
-
newWatchdog
protected ConnectionManager.Watchdog newWatchdog()
-
addWaitingTask
protected void addWaitingTask(java.util.Map<java.lang.String,java.lang.Object> conn)
-
checkHighThroughputProperty
protected <T> void checkHighThroughputProperty(java.lang.String ht_def_key, T ht_dev_val, java.lang.String st_def_key, T st_def_val, java.lang.String prop_key, java.lang.Class<T> prop_val_class, java.util.Map<java.lang.String,java.lang.Object> params, java.util.Map<java.lang.String,java.lang.Object> props)
-
countIOServices
protected int countIOServices()
Returns number of active network connections (IOServices).- Returns:
- number of active network connections (IOServices).
-
doForAllServices
protected void doForAllServices(ServiceChecker<IO> checker)
Perform a given action defined by ServiceChecker for all active IOService objects (active network connections).- Parameters:
checker- is aServiceCheckerinstance defining an action to perform for all IOService objects.
-
writePacketToSocket
protected boolean writePacketToSocket(Packet p)
-
writePacketToSocket
protected boolean writePacketToSocket(Packet p, java.lang.String serviceId)
-
writeRawData
protected void writeRawData(IO ios, java.lang.String data)
-
getDefPlainPorts
protected int[] getDefPlainPorts()
-
getDefSSLPorts
protected int[] getDefSSLPorts()
-
getDefTrafficThrottling
protected java.lang.String getDefTrafficThrottling()
-
getMaxInactiveTime
protected abstract long getMaxInactiveTime()
-
getParamsForPort
protected java.util.Map<java.lang.String,java.lang.Object> getParamsForPort(int port)
-
getServiceId
protected java.lang.String getServiceId(Packet packet)
-
getServiceId
protected java.lang.String getServiceId(JID jid)
-
getUniqueId
protected java.lang.String getUniqueId(IO serv)
-
getXMPPIOServiceInstance
protected abstract IO getXMPPIOServiceInstance()
-
isHighThroughput
protected boolean isHighThroughput()
-
socketAccepted
protected void socketAccepted(IO serv, SocketType type)
-
releaseListener
protected void releaseListener(ConnectionOpenListener toStop)
-
startService
protected tigase.server.ConnectionManager.ConnectionListenerImpl startService(java.util.Map<java.lang.String,java.lang.Object> port_props)
-
-