public class ClusterConnectionManager extends ConnectionManager<XMPPIOService<Object>> implements ClusteredComponentIfc, RepositoryChangeListenerIfc<ClusterRepoItem>, ClusterConnectionHandler
| Modifier and Type | Class and Description |
|---|---|
static class |
ClusterConnectionManager.REPO_ITEM_UPDATE_TYPE |
protected class |
ClusterConnectionManager.Watchdog |
ConnectionManager.LIMIT_ACTION, ConnectionManager.WATCHDOG_PING_TYPEconnectionDelay, delayPortListening, elements_number_limit, ELEMENTS_NUMBER_LIMIT_PROP_KEY, ELEMENTS_NUMBER_LIMIT_PROP_VAL, HT_TRAFFIC_THROTTLING_PROP_KEY, HT_TRAFFIC_THROTTLING_PROP_VAL, 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_PROP_KEY, NET_BUFFER_LIMIT_ST_PROP_VAL, NET_BUFFER_PROP_KEY, 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_REMOTE_HOST_PROP_KEY, PORT_REMOTE_HOST_PROP_VAL, PORT_SOCKET_PROP_KEY, PORT_TYPE_PROP_KEY, PORTS_PROP_KEY, processors, PROP_KEY, ST_TRAFFIC_THROTTLING_PROP_KEY, ST_TRAFFIC_THROTTLING_PROP_VAL, TLS_PROP_KEY, TLS_REQUIRED_PROP_KEY, TLS_REQUIRED_PROP_VAL, TLS_USE_PROP_KEY, TLS_USE_PROP_VAL, TOTAL_BIN_LIMIT_PROP_VAL, TOTAL_PACKETS_LIMIT_PROP_VAL, TRAFFIC_THROTTLING_PROP_KEY, 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_VALHOUR, 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, SECONDadmins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManagerADMINS_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_SRECV_NAME, DEF_SSEND_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, SRECV_COMP_CLASS_NAME, SSEND_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_ACKCMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS| Constructor and Description |
|---|
ClusterConnectionManager() |
| Modifier and Type | Method and Description |
|---|---|
void |
everyHour()
Utility method executed precisely every hour.
|
Map<String,Object> |
getDefaults(Map<String,Object> params)
Returns default configuration settings for the component as a
Map with keys as configuration property IDs and values as the
configuration property values. |
protected int[] |
getDefPlainPorts()
Method description
|
protected String |
getDefTrafficThrottling()
Method description
|
String |
getDiscoCategoryType()
Method description
|
String |
getDiscoDescription()
Method description
|
protected long |
getMaxInactiveTime()
Method description
|
protected Integer |
getMaxQueueSize(int def)
Method description
|
protected Map<String,Object> |
getParamsForPort(int port)
Method description
|
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected XMPPIOService<Object> |
getXMPPIOServiceInstance()
Method description
|
int |
hashCodeForPacket(Packet packet)
This method decides how incoming packets are distributed among processing
threads.
|
void |
initBindings(Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts
loaded by the server
|
protected boolean |
isHighThroughput()
Method description
|
void |
itemAdded(ClusterRepoItem repoItem) |
void |
itemRemoved(ClusterRepoItem item) |
void |
itemUpdated(ClusterRepoItem item) |
void |
nodeConnected(String node)
Method is called on cluster node connection event.
|
void |
nodeDisconnected(String node)
Method is called on cluster node disconnection event.
|
int |
processingInThreads()
Concurrency control method.
|
int |
processingOutThreads()
Concurrency control method.
|
void |
processOutPacket(Packet packet)
By default this method just copies the given packet between queue.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
Queue<Packet> |
processSocketData(XMPPIOService<Object> serv) |
boolean |
processUndeliveredPacket(Packet packet,
Long stamp,
String errorMessage)
Processes undelivered packets
|
void |
reconnectionFailed(Map<String,Object> port_props) |
int |
schedulerThreads()
Method returns default number of threads used by SchedulerExecutorService
|
protected void |
serviceConnected(XMPPIOService<Object> serv)
Method description
|
void |
serviceStarted(XMPPIOService<Object> serv) |
boolean |
serviceStopped(XMPPIOService<Object> service) |
void |
setClusterController(ClusterControllerIfc cl_controller)
Set's the configures the cluster controller object for cluster
communication and API.
|
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for the object.
|
void |
start() |
void |
stop()
Method description
|
void |
tlsHandshakeCompleted(XMPPIOService<Object> service) |
void |
updateConnectionDetails(Map<String,Object> port_props) |
protected boolean |
writePacketToSocket(Packet p) |
void |
xmppStreamClosed(XMPPIOService<Object> serv) |
String[] |
xmppStreamOpened(XMPPIOService<Object> service,
Map<String,String> attribs) |
addWaitingTask, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefSSLPorts, getServiceId, getServiceId, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, newWatchdog, packetsReady, release, setName, setupWatchdogThread, socketAccepted, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData, xmppStreamErroraddOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everySecond, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processPacket, removeRegexRouting, setMaxQueueSize, setParentaddComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntityclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release, setNamegetNamegetDefHostNamepublic static final String CLCON_REPO_CLASS_PROP_KEY
public static final String CLCON_REPO_CLASS_PROP_VAL
public static final String CLCON_REPO_CLASS_PROPERTY
public static final String CLUSTER_CONNECTIONS_PER_NODE_PAR
public static final String CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY
public static final int CLUSTER_CONNECTIONS_PER_NODE_VAL
public static final String CLUSTER_CONNECTIONS_SELECTOR_KEY
public static final String DEF_CLUSTER_CONNECTIONS_SELECTOR_VAL
public static final String CLUSTER_CONTR_ID_PROP_KEY
public static final String CLUSTER_INITIATED_EVENT
public static final String COMPRESS_STREAM_PROP_KEY
public static final String CONNECT_ALL_PAR
public static final String CONNECT_ALL_PROP_KEY
public static final String NON_CLUSTER_TRAFFIC_ALLOWED_PROP_KEY
public static final boolean NON_CLUSTER_TRAFFIC_ALLOWED_PROP_VAL
public static int ELEMENTS_NUMBER_LIMIT_CLUSTER_PROP_VAL
public static final String IDENTITY_TYPE_KEY
public static final String IDENTITY_TYPE_VAL
public static final String PORT_ROUTING_TABLE_PROP_KEY
public static final String RETURN_SERVICE_DISCO_KEY
public static final String SECRET_PROP_KEY
public static final String XMLNS
public static final boolean RETURN_SERVICE_DISCO_VAL
public static final boolean CONNECT_ALL_PROP_VAL
public static final boolean COMPRESS_STREAM_PROP_VAL
public static final String REPO_ITEM_EVENT_NAME
public static final String EVENTBUS_REPO_ITEM_EVENT_XMLNS
public static final String EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_KEY
public static final boolean EVENTBUS_REPOSITORY_NOTIFICATIONS_ENABLED_VALUE
public int hashCodeForPacket(Packet packet)
AbstractMessageReceiverint 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....
hashCodeForPacket in interface ClusterConnectionHandlerhashCodeForPacket in class ConnectionManager<XMPPIOService<Object>>packet - is a Packet which needs to be processed by some
thread.public void initBindings(Bindings binds)
BasicComponentinitBindings in class ConnectionManager<XMPPIOService<Object>>binds - A mapping of key/value pairs, all of whose keys are Strings.public void itemAdded(ClusterRepoItem repoItem)
itemAdded in interface RepositoryChangeListenerIfc<ClusterRepoItem>public void itemRemoved(ClusterRepoItem item)
itemRemoved in interface RepositoryChangeListenerIfc<ClusterRepoItem>public void itemUpdated(ClusterRepoItem item)
itemUpdated in interface RepositoryChangeListenerIfc<ClusterRepoItem>public void nodeConnected(String node)
ClusteredComponentIfcnodeConnected in interface ClusteredComponentIfcnodeConnected in class BasicComponentnode - is a hostname of a cluster node generating the event.public void everyHour()
AbstractMessageReceivereveryHour in class AbstractMessageReceiverpublic void nodeDisconnected(String node)
ClusteredComponentIfcnodeDisconnected in interface ClusteredComponentIfcnodeDisconnected in class BasicComponentnode - is a hostname of a cluster node generating the event.public int processingInThreads()
AbstractMessageReceiverprocessingInThreads in class ConnectionManager<XMPPIOService<Object>>public int processingOutThreads()
AbstractMessageReceiverprocessingOutThreads in class ConnectionManager<XMPPIOService<Object>>public void processOutPacket(Packet packet)
AbstractMessageReceiverprocessOutPacket in class AbstractMessageReceiverpacket - is an output packet which normally has to go to other component
for further processing.public void processPacket(Packet packet)
AbstractMessageReceiverPacket 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.
Packet instance may be processed by different
parts of the server, different components or plugins at the same time.
Therefore this is very important to tread the Packet instance
as unmodifiable object.
addOutPacket(Packet) method.processPacket in class ConnectionManager<XMPPIOService<Object>>packet - is an instance of the Packet class passed for
processing.public Queue<Packet> processSocketData(XMPPIOService<Object> serv)
processSocketData in class ConnectionManager<XMPPIOService<Object>>public boolean processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)
ConnectionManagerprocessUndeliveredPacket in class ConnectionManager<XMPPIOService<Object>>stamp - - timestamp when packet was received to be written to XMPPIOServicepublic void reconnectionFailed(Map<String,Object> port_props)
reconnectionFailed in class ConnectionManager<XMPPIOService<Object>>public int schedulerThreads()
AbstractMessageReceiverschedulerThreads in class AbstractMessageReceiverintpublic void serviceStarted(XMPPIOService<Object> serv)
serviceStarted in class ConnectionManager<XMPPIOService<Object>>public boolean serviceStopped(XMPPIOService<Object> service)
serviceStopped in interface IOServiceListener<XMPPIOService<Object>>serviceStopped in class ConnectionManager<XMPPIOService<Object>>public void tlsHandshakeCompleted(XMPPIOService<Object> service)
tlsHandshakeCompleted in interface IOServiceListener<XMPPIOService<Object>>public void updateConnectionDetails(Map<String,Object> port_props)
updateConnectionDetails in class ConnectionManager<XMPPIOService<Object>>public void xmppStreamClosed(XMPPIOService<Object> serv)
xmppStreamClosed in interface XMPPIOServiceListener<XMPPIOService<Object>>public String[] xmppStreamOpened(XMPPIOService<Object> service, Map<String,String> attribs)
xmppStreamOpened in interface XMPPIOServiceListener<XMPPIOService<Object>>public Map<String,Object> getDefaults(Map<String,Object> params)
AbstractMessageReceiverMap with keys as configuration property IDs and values as the
configuration property values. All the default parameters returned from
this method are later passed to the setProperties(...) method.
Some of them may have changed value if they have been overwritten in the
server configuration. The configuration property value can be of any of the
basic types: int, long, boolean,
String.getDefaults in interface ConfigurablegetDefaults in class ConnectionManager<XMPPIOService<Object>>params - is a Map with some initial properties set for the
starting up server. These parameters can be used as a hints to
generate component's default configuration.Map with the component default configuration.public String getDiscoCategoryType()
BasicComponentgetDiscoCategoryType in class BasicComponentStringpublic String getDiscoDescription()
BasicComponentgetDiscoDescription in class BasicComponentStringpublic void getStatistics(StatisticsList list)
AbstractMessageReceiverLevel.FINEST assigned and must be put inside the level guard
to prevent generating them by the system monitor. The system monitor does
not collect FINEST statistics.
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.getStatistics in interface StatisticsContainerIfcgetStatistics in class ConnectionManager<XMPPIOService<Object>>list - is a StatistcsList
where all statistics are stored.public void setClusterController(ClusterControllerIfc cl_controller)
ClusteredComponentIfcsetClusterController in interface ClusteredComponentIfcsetClusterController in class BasicComponentcl_controller - cluster controller object used for cluster
communicationpublic void setProperties(Map<String,Object> props) throws ConfigurationException
ConfigurablesetProperties in interface ConfigurablesetProperties in class ConnectionManager<XMPPIOService<Object>>props - Map with the configurationConfigurationException - - if setting configuration will
fail which will make it unable
to workpublic void start()
start in interface MessageReceiverstart in class AbstractMessageReceiverpublic void stop()
AbstractMessageReceiverstop in class ConnectionManager<XMPPIOService<Object>>protected void serviceConnected(XMPPIOService<Object> serv)
serv - protected boolean writePacketToSocket(Packet p)
writePacketToSocket in class ConnectionManager<XMPPIOService<Object>>booleanprotected int[] getDefPlainPorts()
ConnectionManagergetDefPlainPorts in class ConnectionManager<XMPPIOService<Object>>int[]protected String getDefTrafficThrottling()
ConnectionManagergetDefTrafficThrottling in class ConnectionManager<XMPPIOService<Object>>Stringprotected long getMaxInactiveTime()
ConnectionManagergetMaxInactiveTime in class ConnectionManager<XMPPIOService<Object>>longprotected Integer getMaxQueueSize(int def)
AbstractMessageReceivergetMaxQueueSize in class AbstractMessageReceiverIntegerprotected Map<String,Object> getParamsForPort(int port)
ConnectionManagergetParamsForPort in class ConnectionManager<XMPPIOService<Object>>Map<String,Object>protected XMPPIOService<Object> getXMPPIOServiceInstance()
ConnectionManagergetXMPPIOServiceInstance in class ConnectionManager<XMPPIOService<Object>>IOprotected boolean isHighThroughput()
ConnectionManagerisHighThroughput in class ConnectionManager<XMPPIOService<Object>>booleanCopyright © 2018 "Tigase, Inc.". All rights reserved.