Package tigase.cluster
Class ClusterConnectionManager
- java.lang.Object
-
- tigase.server.BasicComponent
-
- tigase.server.AbstractMessageReceiver
-
- tigase.server.ConnectionManager<XMPPIOService<java.lang.Object>>
-
- tigase.cluster.ClusterConnectionManager
-
- All Implemented Interfaces:
ClusterConnectionHandler,ClusteredComponentIfc,Configurable,RepositoryChangeListenerIfc<ClusterRepoItem>,XMPPService,ConfigurationChangedAware,Initializable,RegistrarBean,IOServiceListener<XMPPIOService<java.lang.Object>>,MessageReceiver,PacketWriterWithTimeout,ServerComponent,StatisticsContainer,StatisticsContainerIfc,VHostListener,XMPPIOServiceListener<XMPPIOService<java.lang.Object>>
@Bean(name="cl-comp", parent=Kernel.class, active=true) @ConfigType({DefaultMode,SessionManagerMode,ConnectionManagersMode,ComponentMode}) @ClusterModeRequired(active=true) public class ClusterConnectionManager extends ConnectionManager<XMPPIOService<java.lang.Object>> implements ClusteredComponentIfc, RepositoryChangeListenerIfc<ClusterRepoItem>, ClusterConnectionHandler
Class ClusterConnectionManager
Created: Tue Nov 22 07:07:11 2005- Author:
- Artur Hefczyc
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classClusterConnectionManager.ClusterInitializedEventstatic classClusterConnectionManager.DefClConRepositoryBeanstatic classClusterConnectionManager.REPO_ITEM_UPDATE_TYPEprotected classClusterConnectionManager.Watchdog-
Nested classes/interfaces inherited from class tigase.server.ConnectionManager
ConnectionManager.LIMIT_ACTION, ConnectionManager.PortConfigBean, ConnectionManager.PortsConfigBean, ConnectionManager.SecPortConfigBean, 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 static java.lang.StringCLUSTER_CONNECTIONS_PER_NODE_PROP_KEYstatic intCLUSTER_CONNECTIONS_PER_NODE_VALstatic java.lang.StringCLUSTER_CONTR_ID_PROP_KEYstatic java.lang.StringCOMPRESS_STREAM_PROP_KEYstatic booleanCOMPRESS_STREAM_PROP_VALstatic java.lang.StringCONNECT_ALL_PARstatic java.lang.StringCONNECT_ALL_PROP_KEYstatic booleanCONNECT_ALL_PROP_VALstatic intELEMENTS_NUMBER_LIMIT_CLUSTER_PROP_VALDefault value for the system property for configuration protection from system overload and DOS attack.static java.lang.StringEVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_KEYstatic booleanEVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_VALUEstatic java.lang.StringIDENTITY_TYPE_KEYstatic java.lang.StringIDENTITY_TYPE_VALstatic java.lang.StringNON_CLUSTER_TRAFFIC_ALLOWED_PROP_KEYstatic booleanNON_CLUSTER_TRAFFIC_ALLOWED_PROP_VALstatic java.lang.StringPORT_ROUTING_TABLE_PROP_KEYstatic java.lang.StringRETURN_SERVICE_DISCO_KEYstatic booleanRETURN_SERVICE_DISCO_VALstatic java.lang.StringSECRET_PROP_KEYstatic java.lang.StringXMLNS-
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, 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 ClusterConnectionManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleanenableServiceConnectedTimeout(XMPPIOService<java.lang.Object> service)voideveryHour()Utility method executed precisely every hour.protected int[]getDefPlainPorts()protected java.lang.StringgetDefTrafficThrottling()java.lang.StringgetDiscoCategoryType()Method returns component category type used for service discovery responses.java.lang.StringgetDiscoDescription()Method returns description used for service discovery responses.protected longgetMaxInactiveTime()protected java.lang.IntegergetMaxQueueSize(int def)protected java.util.Map<java.lang.String,java.lang.Object>getParamsForPort(int port)voidgetStatistics(StatisticsList list)Method returns component statistics.protected XMPPIOService<java.lang.Object>getXMPPIOServiceInstance()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 serverprotected booleanisHighThroughput()voiditemAdded(ClusterRepoItem repoItem)voiditemRemoved(ClusterRepoItem item)voiditemUpdated(ClusterRepoItem item)voidnodeConnected(java.lang.String node)Method is called on cluster node connection event.voidnodeDisconnected(java.lang.String node)Method is called on cluster node disconnection event.intprocessingInThreads()Concurrency control method.intprocessingOutThreads()Concurrency control method.voidprocessOutPacket(Packet packet)By default this method just copies the given packet between queue.voidprocessPacket(Packet packet)This is the mainPacketprocessing method.java.util.Queue<Packet>processSocketData(XMPPIOService<java.lang.Object> serv)booleanprocessUndeliveredPacket(Packet packet, java.lang.Long stamp, java.lang.String errorMessage)Processes undelivered packetsvoidreconnectionFailed(java.util.Map<java.lang.String,java.lang.Object> port_props)intschedulerThreads()Method returns default number of threads used by SchedulerExecutorServiceprotected voidserviceConnected(XMPPIOService<java.lang.Object> serv)voidserviceStarted(XMPPIOService<java.lang.Object> serv)booleanserviceStopped(XMPPIOService<java.lang.Object> service)voidsetClusterController(ClusterControllerIfc cl_controller)Set's the configures the cluster controller object for cluster communication and API.voidsetRepo(ComponentRepository<ClusterRepoItem> repo)voidstart()voidstop()voidtlsHandshakeCompleted(XMPPIOService<java.lang.Object> service)voidupdateConnectionDetails(java.util.Map<java.lang.String,java.lang.Object> port_props)protected booleanwritePacketToSocket(Packet p)voidxmppStreamClosed(XMPPIOService<java.lang.Object> serv)java.lang.String[]xmppStreamOpened(XMPPIOService<java.lang.Object> service, java.util.Map<java.lang.String,java.lang.String> attribs)-
Methods inherited from class tigase.server.ConnectionManager
addWaitingTask, beanConfigurationChanged, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefPorts, getDefSSLPorts, getFlashCrossDomainPolicy, getNet_buffer_limit, getPortsConfigBean, getServiceId, getServiceId, getTrafficThrottling, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, newWatchdog, packetsReady, register, release, releaseListener, setFlashCrossDomainPolicyFile, setName, setNet_buffer_limit, setProcessors, setTrafficThrottling, setupWatchdogThread, socketAccepted, startService, unregister, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData, xmppStreamError
-
Methods inherited from class tigase.server.AbstractMessageReceiver
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everySecond, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, 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, onNodeConnected, onNodeDisconnected, processScriptCommand, reloadScripts, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, 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, initializationCompleted, isInitializationComplete, processPacket, release, setName
-
Methods inherited from interface tigase.stats.StatisticsContainerIfc
getName
-
-
-
-
Field Detail
-
CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY
public static final java.lang.String CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY
- See Also:
- Constant Field Values
-
CLUSTER_CONNECTIONS_PER_NODE_VAL
public static final int CLUSTER_CONNECTIONS_PER_NODE_VAL
- See Also:
- Constant Field Values
-
CLUSTER_CONTR_ID_PROP_KEY
public static final java.lang.String CLUSTER_CONTR_ID_PROP_KEY
- See Also:
- Constant Field Values
-
COMPRESS_STREAM_PROP_KEY
public static final java.lang.String COMPRESS_STREAM_PROP_KEY
- See Also:
- Constant Field Values
-
CONNECT_ALL_PAR
public static final java.lang.String CONNECT_ALL_PAR
- See Also:
- Constant Field Values
-
CONNECT_ALL_PROP_KEY
public static final java.lang.String CONNECT_ALL_PROP_KEY
- See Also:
- Constant Field Values
-
NON_CLUSTER_TRAFFIC_ALLOWED_PROP_KEY
public static final java.lang.String NON_CLUSTER_TRAFFIC_ALLOWED_PROP_KEY
- See Also:
- Constant Field Values
-
NON_CLUSTER_TRAFFIC_ALLOWED_PROP_VAL
public static final boolean NON_CLUSTER_TRAFFIC_ALLOWED_PROP_VAL
- See Also:
- Constant Field Values
-
IDENTITY_TYPE_KEY
public static final java.lang.String IDENTITY_TYPE_KEY
- See Also:
- Constant Field Values
-
IDENTITY_TYPE_VAL
public static final java.lang.String IDENTITY_TYPE_VAL
- See Also:
- Constant Field Values
-
PORT_ROUTING_TABLE_PROP_KEY
public static final java.lang.String PORT_ROUTING_TABLE_PROP_KEY
- See Also:
- Constant Field Values
-
RETURN_SERVICE_DISCO_KEY
public static final java.lang.String RETURN_SERVICE_DISCO_KEY
- See Also:
- Constant Field Values
-
SECRET_PROP_KEY
public static final java.lang.String SECRET_PROP_KEY
- See Also:
- Constant Field Values
-
XMLNS
public static final java.lang.String XMLNS
- See Also:
- Constant Field Values
-
RETURN_SERVICE_DISCO_VAL
public static final boolean RETURN_SERVICE_DISCO_VAL
- See Also:
- Constant Field Values
-
CONNECT_ALL_PROP_VAL
public static final boolean CONNECT_ALL_PROP_VAL
- See Also:
- Constant Field Values
-
COMPRESS_STREAM_PROP_VAL
public static final boolean COMPRESS_STREAM_PROP_VAL
- See Also:
- Constant Field Values
-
EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_KEY
public static final java.lang.String EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_KEY
- See Also:
- Constant Field Values
-
EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_VALUE
public static final boolean EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_VALUE
- See Also:
- Constant Field Values
-
ELEMENTS_NUMBER_LIMIT_CLUSTER_PROP_VAL
public static int ELEMENTS_NUMBER_LIMIT_CLUSTER_PROP_VAL
Default value for the system property for configuration protection from system overload and DOS attack.
-
-
Method Detail
-
enableServiceConnectedTimeout
protected boolean enableServiceConnectedTimeout(XMPPIOService<java.lang.Object> service)
- Overrides:
enableServiceConnectedTimeoutin classConnectionManager<XMPPIOService<java.lang.Object>>
-
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....- Specified by:
hashCodeForPacketin interfaceClusterConnectionHandler- Overrides:
hashCodeForPacketin classConnectionManager<XMPPIOService<java.lang.Object>>- 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 classConnectionManager<XMPPIOService<java.lang.Object>>- Parameters:
binds- A mapping of key/value pairs, all of whose keys are Strings.
-
itemAdded
public void itemAdded(ClusterRepoItem repoItem)
- Specified by:
itemAddedin interfaceRepositoryChangeListenerIfc<ClusterRepoItem>
-
itemRemoved
public void itemRemoved(ClusterRepoItem item)
- Specified by:
itemRemovedin interfaceRepositoryChangeListenerIfc<ClusterRepoItem>
-
itemUpdated
public void itemUpdated(ClusterRepoItem item)
- Specified by:
itemUpdatedin interfaceRepositoryChangeListenerIfc<ClusterRepoItem>
-
nodeConnected
public void nodeConnected(java.lang.String node)
Description copied from interface:ClusteredComponentIfcMethod is called on cluster node connection event. This is a notification to the component that a new cluster node has connected.- Specified by:
nodeConnectedin interfaceClusteredComponentIfc- Overrides:
nodeConnectedin classBasicComponent- Parameters:
node- is a hostname of a cluster node generating the event.
-
everyHour
public void everyHour()
Description copied from class:AbstractMessageReceiverUtility method executed precisely every hour. 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 hour. The overriding method must call the the super method first and only then run own code.- Overrides:
everyHourin classAbstractMessageReceiver
-
nodeDisconnected
public void nodeDisconnected(java.lang.String node)
Description copied from interface:ClusteredComponentIfcMethod is called on cluster node disconnection event. This is a notification to the component that there was network connection lost to one of the cluster nodes.- Specified by:
nodeDisconnectedin interfaceClusteredComponentIfc- Overrides:
nodeDisconnectedin classBasicComponent- Parameters:
node- is a hostname of a cluster node generating the event.
-
processingInThreads
public int processingInThreads()
Description copied from class:AbstractMessageReceiverConcurrency control method. Returns preferable number of threads set for this component.- Overrides:
processingInThreadsin classConnectionManager<XMPPIOService<java.lang.Object>>- 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 classConnectionManager<XMPPIOService<java.lang.Object>>- Returns:
- preferable number of threads set for this component.
-
processOutPacket
public void processOutPacket(Packet packet)
Description copied from class:AbstractMessageReceiverBy default this method just copies the given packet between queue. This method operates on packets which have been already processed somehow by the component so usually the default action is the best one, however some components in rare cases may choose to process packets differently. In most cases this method should not be overridden.- Overrides:
processOutPacketin classAbstractMessageReceiver- Parameters:
packet- is an output packet which normally has to go to other component for further processing.
-
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.- Overrides:
processPacketin classConnectionManager<XMPPIOService<java.lang.Object>>- Parameters:
packet- is an instance of thePacketclass passed for processing.
-
processSocketData
public java.util.Queue<Packet> processSocketData(XMPPIOService<java.lang.Object> serv)
- Specified by:
processSocketDatain classConnectionManager<XMPPIOService<java.lang.Object>>
-
processUndeliveredPacket
public boolean processUndeliveredPacket(Packet packet, java.lang.Long stamp, java.lang.String errorMessage)
Description copied from class:ConnectionManagerProcesses undelivered packets- Specified by:
processUndeliveredPacketin classConnectionManager<XMPPIOService<java.lang.Object>>stamp- - timestamp when packet was received to be written to XMPPIOService
-
reconnectionFailed
public void reconnectionFailed(java.util.Map<java.lang.String,java.lang.Object> port_props)
- Specified by:
reconnectionFailedin classConnectionManager<XMPPIOService<java.lang.Object>>
-
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
-
serviceStarted
public void serviceStarted(XMPPIOService<java.lang.Object> serv)
- Overrides:
serviceStartedin classConnectionManager<XMPPIOService<java.lang.Object>>
-
serviceStopped
public boolean serviceStopped(XMPPIOService<java.lang.Object> service)
- Specified by:
serviceStoppedin interfaceIOServiceListener<XMPPIOService<java.lang.Object>>- Overrides:
serviceStoppedin classConnectionManager<XMPPIOService<java.lang.Object>>
-
setRepo
public void setRepo(ComponentRepository<ClusterRepoItem> repo)
-
tlsHandshakeCompleted
public void tlsHandshakeCompleted(XMPPIOService<java.lang.Object> service)
- Specified by:
tlsHandshakeCompletedin interfaceIOServiceListener<XMPPIOService<java.lang.Object>>
-
updateConnectionDetails
public void updateConnectionDetails(java.util.Map<java.lang.String,java.lang.Object> port_props)
- Overrides:
updateConnectionDetailsin classConnectionManager<XMPPIOService<java.lang.Object>>
-
xmppStreamClosed
public void xmppStreamClosed(XMPPIOService<java.lang.Object> serv)
- Specified by:
xmppStreamClosedin interfaceXMPPIOServiceListener<XMPPIOService<java.lang.Object>>
-
xmppStreamOpened
public java.lang.String[] xmppStreamOpened(XMPPIOService<java.lang.Object> service, java.util.Map<java.lang.String,java.lang.String> attribs)
- Specified by:
xmppStreamOpenedin interfaceXMPPIOServiceListener<XMPPIOService<java.lang.Object>>
-
getDiscoCategoryType
public java.lang.String 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
public java.lang.String getDiscoDescription()
Description copied from class:BasicComponentMethod returns description used for service discovery responses.- Overrides:
getDiscoDescriptionin classBasicComponent- Returns:
- description of a component
-
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 classConnectionManager<XMPPIOService<java.lang.Object>>- Parameters:
list- is aStatistcsListwhere all statistics are stored.
-
setClusterController
public void setClusterController(ClusterControllerIfc cl_controller)
Description copied from interface:ClusteredComponentIfcSet's the configures the cluster controller object for cluster communication and API.- Specified by:
setClusterControllerin interfaceClusteredComponentIfc- Overrides:
setClusterControllerin classBasicComponent- Parameters:
cl_controller- cluster controller object used for cluster communication
-
start
public void start()
- Specified by:
startin interfaceMessageReceiver- Overrides:
startin classConnectionManager<XMPPIOService<java.lang.Object>>
-
stop
public void stop()
- Overrides:
stopin classConnectionManager<XMPPIOService<java.lang.Object>>
-
serviceConnected
protected void serviceConnected(XMPPIOService<java.lang.Object> serv)
- Overrides:
serviceConnectedin classConnectionManager<XMPPIOService<java.lang.Object>>
-
writePacketToSocket
protected boolean writePacketToSocket(Packet p)
- Overrides:
writePacketToSocketin classConnectionManager<XMPPIOService<java.lang.Object>>
-
getDefPlainPorts
protected int[] getDefPlainPorts()
- Overrides:
getDefPlainPortsin classConnectionManager<XMPPIOService<java.lang.Object>>
-
getDefTrafficThrottling
protected java.lang.String getDefTrafficThrottling()
- Overrides:
getDefTrafficThrottlingin classConnectionManager<XMPPIOService<java.lang.Object>>
-
getMaxInactiveTime
protected long getMaxInactiveTime()
- Specified by:
getMaxInactiveTimein classConnectionManager<XMPPIOService<java.lang.Object>>
-
getMaxQueueSize
protected java.lang.Integer getMaxQueueSize(int def)
- Overrides:
getMaxQueueSizein classAbstractMessageReceiver
-
getParamsForPort
protected java.util.Map<java.lang.String,java.lang.Object> getParamsForPort(int port)
- Overrides:
getParamsForPortin classConnectionManager<XMPPIOService<java.lang.Object>>
-
getXMPPIOServiceInstance
protected XMPPIOService<java.lang.Object> getXMPPIOServiceInstance()
- Specified by:
getXMPPIOServiceInstancein classConnectionManager<XMPPIOService<java.lang.Object>>
-
isHighThroughput
protected boolean isHighThroughput()
- Overrides:
isHighThroughputin classConnectionManager<XMPPIOService<java.lang.Object>>
-
-