public class BoshConnectionManager extends ClientConnectionManager implements BoshSessionTaskHandler
| Modifier and Type | Class and Description |
|---|---|
protected static class |
BoshConnectionManager.BOSH_OPERATION_TYPE |
ConnectionManager.LIMIT_ACTION, ConnectionManager.WATCHDOG_PING_TYPE| Modifier and Type | Field and Description |
|---|---|
protected Map<UUID,BoshSession> |
sessions
Field description
|
routings, see_other_host_strategyconnectionDelay, 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_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, 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, SCHEDULER_THREADS_PROP_KEY, SECONDadmins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, 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_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, 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 |
|---|
BoshConnectionManager() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addOutPackets(Queue<Packet> out_results,
BoshSession bs)
Method adds packets to the output queue stamping it with the appropriate
BoshSession data |
boolean |
addOutStreamClosed(Packet packet,
BoshSession bs) |
boolean |
addOutStreamOpen(Packet packet,
BoshSession bs) |
void |
cancelSendQueueTask(BoshSendQueueTask tt) |
void |
cancelTask(BoshTask tt) |
protected tigase.xmpp.JID |
changeDataReceiver(Packet packet,
tigase.xmpp.JID newAddress,
String command_sessionId,
XMPPIOService<Object> serv)
Method description
|
protected BoshSession |
getBoshSession(tigase.xmpp.JID jid)
Method retrieves
BoshSession related to the particular user address |
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
|
String |
getDiscoCategoryType()
Method description
|
String |
getDiscoDescription()
Method description
|
tigase.xmpp.JID |
getJidForBoshSession(BoshSession bs)
Returns full jid of passed BoshSession instance
|
protected long |
getMaxInactiveTime()
Method
getMaxInactiveTime returns max keep-alive time for
inactive connection. |
tigase.xmpp.BareJID |
getSeeOtherHostForJID(tigase.xmpp.BareJID fromJID,
SeeOtherHostIfc.Phase ph) |
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected BoshIOService |
getXMPPIOServiceInstance()
Method description
|
void |
initBindings(Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts
loaded by the server
|
protected ReceiverTimeoutHandler |
newStartedHandler()
Method description
|
protected Map<String,String> |
preBindSession(Map<String,String> attr) |
protected void |
processCommand(Packet packet)
Method description
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
Queue<Packet> |
processSocketData(XMPPIOService<Object> srv)
Method description
|
BoshSendQueueTask |
scheduleSendQueueTask(BoshSession bs,
long delay) |
BoshTask |
scheduleTask(BoshSession bs,
long delay) |
void |
serviceStarted(XMPPIOService<Object> service)
Method description
|
boolean |
serviceStopped(XMPPIOService<Object> xmppService) |
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for the object.
|
protected static void |
setupSidlogger(Level lvl) |
protected void |
setupWatchdogThread() |
protected boolean |
writePacketToSocket(Packet packet) |
void |
writeRawData(BoshIOService ios,
String data) |
void |
xmppStreamClosed(XMPPIOService<Object> serv) |
String |
xmppStreamOpened(XMPPIOService<Object> serv,
Map<String,String> attribs) |
getMaxQueueSize, getSeeOtherHostInstance, hashCodeForPacket, isAllowed, isTlsWantClientAuthEnabled, newStoppedHandler, prepareSeeOtherHost, prepareStreamClose, prepareStreamError, prepareStreamError, prepareStreamOpen, preprocessStreamFeatures, processUndeliveredPacket, reconnectionFailed, start, stop, tlsHandshakeCompletedaddWaitingTask, checkHighThroughputProperty, checkTrafficLimits, countIOServices, doForAllServices, everyMinute, getDefTrafficThrottling, getParamsForPort, getServiceId, getServiceId, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, isHighThroughput, packetsReady, processingInThreads, processingOutThreads, release, setName, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawDataaddOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everySecond, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, removeRegexRouting, schedulerThreads, setMaxQueueSize, setParentaddComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntityclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetDefHostName, processUndeliveredPacketgetDefHostNamegetComponentId, getComponentInfo, getName, isInitializationCompleteprotected final Map<UUID,BoshSession> sessions
public boolean addOutStreamClosed(Packet packet, BoshSession bs)
addOutStreamClosed in interface BoshSessionTaskHandlerpublic boolean addOutStreamOpen(Packet packet, BoshSession bs)
addOutStreamOpen in interface BoshSessionTaskHandlerpublic void cancelSendQueueTask(BoshSendQueueTask tt)
cancelSendQueueTask in interface BoshSessionTaskHandlerpublic void cancelTask(BoshTask tt)
cancelTask in interface BoshSessionTaskHandlerpublic 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 ClientConnectionManagerpacket - is an instance of the Packet class passed for
processing.protected static void setupSidlogger(Level lvl)
protected void setupWatchdogThread()
setupWatchdogThread in class ConnectionManager<XMPPIOService<Object>>public Queue<Packet> processSocketData(XMPPIOService<Object> srv)
ConnectionManagerprocessSocketData in class ClientConnectionManagerQueue<Packet>public BoshSendQueueTask scheduleSendQueueTask(BoshSession bs, long delay)
scheduleSendQueueTask in interface BoshSessionTaskHandlerpublic BoshTask scheduleTask(BoshSession bs, long delay)
scheduleTask in interface BoshSessionTaskHandlerpublic void serviceStarted(XMPPIOService<Object> service)
ConnectionManagerserviceStarted in class ClientConnectionManagerpublic boolean serviceStopped(XMPPIOService<Object> xmppService)
serviceStopped in interface IOServiceListener<XMPPIOService<Object>>serviceStopped in class ClientConnectionManagerpublic void writeRawData(BoshIOService ios, String data)
writeRawData in interface BoshSessionTaskHandlerpublic void xmppStreamClosed(XMPPIOService<Object> serv)
xmppStreamClosed in interface XMPPIOServiceListener<XMPPIOService<Object>>xmppStreamClosed in class ClientConnectionManagerpublic String xmppStreamOpened(XMPPIOService<Object> serv, Map<String,String> attribs)
xmppStreamOpened in interface XMPPIOServiceListener<XMPPIOService<Object>>xmppStreamOpened in class ClientConnectionManagerpublic 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 ClientConnectionManagerparams - 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 ClientConnectionManagerStringpublic String getDiscoDescription()
BasicComponentgetDiscoDescription in class ClientConnectionManagerStringpublic tigase.xmpp.JID getJidForBoshSession(BoshSession bs)
getJidForBoshSession in interface BoshSessionTaskHandlerbs - BoshSession for which JID should be retrievedBoshSessionpublic tigase.xmpp.BareJID getSeeOtherHostForJID(tigase.xmpp.BareJID fromJID,
SeeOtherHostIfc.Phase ph)
getSeeOtherHostForJID in interface BoshSessionTaskHandlerpublic 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 StatisticsContainergetStatistics in class ConnectionManager<XMPPIOService<Object>>list - is a StatistcsList
where all statistics are stored.public void setProperties(Map<String,Object> props) throws ConfigurationException
ConfigurablesetProperties in interface ConfigurablesetProperties in class ClientConnectionManagerprops - Map with the configurationConfigurationException - - if setting configuration will
fail which will make it unable
to workprotected void addOutPackets(Queue<Packet> out_results, BoshSession bs)
BoshSession dataout_results - collection of Packet objects to be added to queuebs - related BoshSessionprotected tigase.xmpp.JID changeDataReceiver(Packet packet, tigase.xmpp.JID newAddress, String command_sessionId, XMPPIOService<Object> serv)
ClientConnectionManagerchangeDataReceiver in class ClientConnectionManagerJIDprotected ReceiverTimeoutHandler newStartedHandler()
ClientConnectionManagernewStartedHandler in class ClientConnectionManagerReceiverTimeoutHandlerprotected void processCommand(Packet packet)
ClientConnectionManagerprocessCommand in class ClientConnectionManagerprotected boolean writePacketToSocket(Packet packet)
writePacketToSocket in class ConnectionManager<XMPPIOService<Object>>booleanprotected BoshSession getBoshSession(tigase.xmpp.JID jid)
BoshSession related to the particular user addressjid - address for which BoshSession should be returnedBoshSessionprotected int[] getDefPlainPorts()
ConnectionManagergetDefPlainPorts in class ClientConnectionManagerint[]protected int[] getDefSSLPorts()
ConnectionManagergetDefSSLPorts in class ClientConnectionManagerint[]protected long getMaxInactiveTime()
getMaxInactiveTime returns max keep-alive time for
inactive connection. For Bosh it does not make sense to keep the idle
connection longer than 10 minutes.getMaxInactiveTime in class ClientConnectionManagerlong valuepublic void initBindings(Bindings binds)
BasicComponentinitBindings in class ConnectionManager<XMPPIOService<Object>>binds - A mapping of key/value pairs, all of whose keys are Strings.protected BoshIOService getXMPPIOServiceInstance()
ConnectionManagergetXMPPIOServiceInstance in class ClientConnectionManagerIOCopyright © 2015 "Tigase, Inc.". All rights reserved.