IO
- public abstract class ConnectionManager<IO extends XMPPIOService<?>> extends AbstractMessageReceiver implements XMPPIOServiceListener<IO>
Modifier and Type | Class and Description |
---|---|
static class |
ConnectionManager.LIMIT_ACTION
Describe class
LIMIT_ACTION here. |
protected class |
ConnectionManager.Watchdog
Class looks in all established connections and checks whether any of them
is dead by performing either whitspace or XMPP ping.
|
static class |
ConnectionManager.WATCHDOG_PING_TYPE
Holds possible types of ping to be used in watchdog service for detection
of broken connections
|
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
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager
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_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_ACK
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
Constructor and Description |
---|
ConnectionManager() |
Modifier and Type | Method and Description |
---|---|
protected void |
addWaitingTask(Map<String,Object> conn) |
protected <T> void |
checkHighThroughputProperty(String ht_def_key,
T ht_dev_val,
String st_def_key,
T st_def_val,
String prop_key,
Class<T> prop_val_class,
Map<String,Object> params,
Map<String,Object> props)
Method description
|
boolean |
checkTrafficLimits(IO serv) |
protected void |
connectWaitingTasks() |
protected int |
countIOServices()
Returns number of active network connections (IOServices).
|
protected void |
doForAllServices(ServiceChecker<IO> checker)
Perform a given action defined by ServiceChecker for all active IOService
objects (active network connections).
|
void |
everyMinute()
Utility method executed precisely every minute.
|
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 int[] |
getDefSSLPorts()
Method description
|
protected String |
getDefTrafficThrottling()
Method description
|
protected abstract long |
getMaxInactiveTime()
Method description
|
protected Map<String,Object> |
getParamsForPort(int port)
Method description
|
protected String |
getServiceId(JID jid)
Method description
|
protected String |
getServiceId(Packet packet)
Method description
|
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected String |
getUniqueId(IO serv)
Method description
|
protected IO |
getXMPPIOService(Packet p)
Method description
|
IO |
getXMPPIOService(String serviceId)
Method description
|
protected abstract IO |
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
|
void |
initializationCompleted()
Method is called by
MessageRouter when all the startup components of
the server have been loaded and configured through setProperties(...) call. |
protected boolean |
isHighThroughput()
Method description
|
protected ConnectionManager.Watchdog |
newWatchdog() |
void |
packetsReady(IO serv) |
int |
processingInThreads()
Concurrency control method.
|
int |
processingOutThreads()
Concurrency control method.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
abstract Queue<Packet> |
processSocketData(IO serv) |
abstract boolean |
processUndeliveredPacket(Packet packet,
Long stamp,
String errorMessage)
Processes undelivered packets
|
abstract void |
reconnectionFailed(Map<String,Object> port_props) |
void |
release()
Method description
|
void |
serviceStarted(IO service) |
boolean |
serviceStopped(IO service) |
void |
setName(String name)
Method description
|
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for the object.
|
protected void |
setupWatchdogThread() |
protected void |
socketAccepted(IO serv,
SocketType type) |
void |
stop()
Method description
|
void |
updateConnectionDetails(Map<String,Object> port_props) |
void |
writePacketsToSocket(IO serv,
Queue<Packet> packets) |
boolean |
writePacketToSocket(IO ios,
Packet p)
Method description
|
protected boolean |
writePacketToSocket(Packet p) |
protected boolean |
writePacketToSocket(Packet p,
String serviceId)
Method description
|
protected void |
writeRawData(IO ios,
String data) |
String |
xmppStreamError(IO serv,
List<Element> err_el) |
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, removeRegexRouting, schedulerThreads, setMaxQueueSize, setParent, start
addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setClusterController, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
xmppStreamClosed, xmppStreamOpened
tlsHandshakeCompleted
getName
getDefHostName
getComponentId, getComponentInfo, getName, isInitializationComplete
public static final String HT_TRAFFIC_THROTTLING_PROP_KEY
public static final String HT_TRAFFIC_THROTTLING_PROP_VAL
public static final String NET_BUFFER_HT_PROP_KEY
public static final String NET_BUFFER_ST_PROP_KEY
public static final String PORT_LOCAL_HOST_PROP_KEY
public static final String ST_TRAFFIC_THROTTLING_PROP_KEY
public static final String ST_TRAFFIC_THROTTLING_PROP_VAL
public static final String TRAFFIC_THROTTLING_PROP_KEY
protected static final long LAST_MINUTE_BIN_LIMIT_PROP_VAL
protected static final long LAST_MINUTE_PACKETS_LIMIT_PROP_VAL
protected static final String MAX_INACTIVITY_TIME
protected static final String MAX_RECONNECTS_PROP_KEY
protected static final int NET_BUFFER_HT_PROP_VAL
protected static final String NET_BUFFER_PROP_KEY
protected static final int NET_BUFFER_ST_PROP_VAL
protected static final int NET_BUFFER_LIMIT_HT_PROP_VAL
protected static final String NET_BUFFER_LIMIT_PROP_KEY
protected static final int NET_BUFFER_LIMIT_ST_PROP_VAL
public static final String ELEMENTS_NUMBER_LIMIT_PROP_KEY
public static int ELEMENTS_NUMBER_LIMIT_PROP_VAL
protected static final String PORT_CLASS_PROP_KEY
protected static final String PORT_IFC_PROP_KEY
protected static final String PORT_LISTENING_DELAY_KEY
protected static final boolean PORT_LISTENING_DELAY_DEF
protected static final String PORT_KEY
protected static final String PORT_REMOTE_HOST_PROP_KEY
protected static final String PORT_REMOTE_HOST_PROP_VAL
protected static final String PORT_SOCKET_PROP_KEY
protected static final String PORT_TYPE_PROP_KEY
protected static final String PROP_KEY
protected static final long TOTAL_BIN_LIMIT_PROP_VAL
protected static final long TOTAL_PACKETS_LIMIT_PROP_VAL
protected static final String WHITE_CHAR_ACK_PROP_KEY
protected static final String XMPP_ACK_PROP_KEY
protected static final boolean XMPP_ACK_PROP_VAL
protected static final boolean WHITE_CHAR_ACK_PROP_VAL
protected static final String PORTS_PROP_KEY
protected static final boolean TLS_USE_PROP_VAL
protected static final String TLS_PROP_KEY
protected static final String TLS_USE_PROP_KEY
protected static final boolean TLS_REQUIRED_PROP_VAL
protected static final String TLS_REQUIRED_PROP_KEY
protected static final String WATCHDOG_DELAY
protected static final String WATCHDOG_TIMEOUT
protected static final String WATCHDOG_PING_TYPE_KEY
protected static final Element pingElement
public String[] PORT_IFC_PROP_VAL
protected long watchdogDelay
protected long watchdogTimeout
protected int elements_number_limit
protected XMPPIOProcessor[] processors
protected int net_buffer
protected long connectionDelay
protected ConnectionManager.WATCHDOG_PING_TYPE watchdogPingType
protected boolean delayPortListening
public boolean checkTrafficLimits(IO serv)
public void everyMinute()
AbstractMessageReceiver
everyMinute
in class AbstractMessageReceiver
public int hashCodeForPacket(Packet packet)
AbstractMessageReceiver
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....
hashCodeForPacket
in class AbstractMessageReceiver
packet
- is a Packet
which needs to be processed by some
thread.public void initBindings(Bindings binds)
BasicComponent
initBindings
in class BasicComponent
binds
- A mapping of key/value pairs, all of whose keys are Strings.public void initializationCompleted()
ServerComponent
MessageRouter
when 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.initializationCompleted
in interface ServerComponent
initializationCompleted
in class BasicComponent
protected void connectWaitingTasks()
public void packetsReady(IO serv) throws IOException
packetsReady
in interface IOServiceListener<IO extends XMPPIOService<?>>
IOException
public int processingInThreads()
AbstractMessageReceiver
processingInThreads
in class AbstractMessageReceiver
public int processingOutThreads()
AbstractMessageReceiver
processingOutThreads
in class AbstractMessageReceiver
public void processPacket(Packet packet)
AbstractMessageReceiver
Packet
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 AbstractMessageReceiver
packet
- is an instance of the Packet
class passed for
processing.public abstract boolean processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)
packet
- stamp
- - timestamp when packet was received to be written to XMPPIOServiceerrorMessage
- public void release()
ServerComponent
release
in interface ServerComponent
release
in class AbstractMessageReceiver
@TODO(note="Do something if service with the same unique ID is already started, possibly kill the old one...") public void serviceStarted(IO service)
public boolean serviceStopped(IO service)
serviceStopped
in interface IOServiceListener<IO extends XMPPIOService<?>>
public void stop()
AbstractMessageReceiver
stop
in class AbstractMessageReceiver
public boolean writePacketToSocket(IO ios, Packet p)
ios
- p
- boolean
public String xmppStreamError(IO serv, List<Element> err_el)
xmppStreamError
in interface XMPPIOServiceListener<IO extends XMPPIOService<?>>
public Map<String,Object> getDefaults(Map<String,Object> params)
AbstractMessageReceiver
Map
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 Configurable
getDefaults
in class AbstractMessageReceiver
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 void getStatistics(StatisticsList list)
AbstractMessageReceiver
Level.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 StatisticsContainerIfc
getStatistics
in class AbstractMessageReceiver
list
- is a StatistcsList
where all statistics are stored.public IO getXMPPIOService(String serviceId)
serviceId
- IO
public void setName(String name)
ServerComponent
setName
in interface ServerComponent
setName
in class AbstractMessageReceiver
protected void setupWatchdogThread()
protected ConnectionManager.Watchdog newWatchdog()
public void setProperties(Map<String,Object> props) throws ConfigurationException
Configurable
setProperties
in interface Configurable
setProperties
in class AbstractMessageReceiver
props
- Map
with the configurationConfigurationException
- - if setting configuration will
fail which will make it unable
to workprotected <T> void checkHighThroughputProperty(String ht_def_key, T ht_dev_val, String st_def_key, T st_def_val, String prop_key, Class<T> prop_val_class, Map<String,Object> params, Map<String,Object> props)
T
- ht_def_key
- ht_dev_val
- st_def_key
- st_def_val
- prop_key
- prop_val_class
- params
- props
- protected int countIOServices()
protected void doForAllServices(ServiceChecker<IO> checker)
checker
- is a ServiceChecker
instance defining an action to
perform for all IOService objects.protected boolean writePacketToSocket(Packet p)
p
- boolean
protected boolean writePacketToSocket(Packet p, String serviceId)
p
- serviceId
- boolean
protected int[] getDefPlainPorts()
int[]
protected int[] getDefSSLPorts()
int[]
protected String getDefTrafficThrottling()
String
protected abstract long getMaxInactiveTime()
long
protected Map<String,Object> getParamsForPort(int port)
port
- Map<String,Object>
protected String getServiceId(Packet packet)
packet
- String
protected String getServiceId(JID jid)
jid
- String
protected String getUniqueId(IO serv)
serv
- String
protected IO getXMPPIOService(Packet p)
p
- IO
protected abstract IO getXMPPIOServiceInstance()
IO
protected boolean isHighThroughput()
boolean
protected void socketAccepted(IO serv, SocketType type)
Copyright © 2018 "Tigase, Inc.". All rights reserved.