public abstract class ConnectionManager<IO extends XMPPIOService<?>> extends AbstractMessageReceiver implements XMPPIOServiceListener<IO>, RegistrarBean
Modifier and Type | Class and Description |
---|---|
static class |
ConnectionManager.LIMIT_ACTION |
static class |
ConnectionManager.PortConfigBean |
static class |
ConnectionManager.PortsConfigBean |
static class |
ConnectionManager.SecPortConfigBean |
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
|
BasicComponent.ServerInfoVHostItemExtension
PacketWriterWithTimeout.Handler
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, scriptEngineManager, 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_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
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) |
void |
beanConfigurationChanged(Collection<String> changedFields)
Method called when configuration was applied to bean.
|
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) |
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).
|
protected boolean |
enableServiceConnectedTimeout(IO service) |
void |
everyMinute()
Utility method executed precisely every minute.
|
protected int[] |
getDefPlainPorts() |
HashSet<Integer> |
getDefPorts() |
protected int[] |
getDefSSLPorts() |
protected String |
getDefTrafficThrottling() |
String |
getFlashCrossDomainPolicy() |
protected abstract long |
getMaxInactiveTime() |
int |
getNet_buffer_limit() |
protected Map<String,Object> |
getParamsForPort(int port) |
protected String |
getServiceId(JID jid) |
protected String |
getServiceId(Packet packet) |
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
String |
getTrafficThrottling() |
protected String |
getUniqueId(IO serv) |
protected IO |
getXMPPIOService(Packet p) |
IO |
getXMPPIOService(String serviceId) |
protected abstract IO |
getXMPPIOServiceInstance() |
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() |
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 |
register(Kernel kernel)
Method called when bean is being registered allowing developer to programatically register other beans.
|
void |
release()
Method called when component is being stopped and unloaded.
|
protected void |
releaseListener(ConnectionOpenListener toStop) |
protected void |
serviceConnected(IO service) |
void |
serviceStarted(IO service) |
boolean |
serviceStopped(IO service) |
void |
setFlashCrossDomainPolicyFile(String file) |
void |
setName(String name)
Method used to assign component name (localpart of the component)
|
void |
setNet_buffer_limit(int value) |
void |
setProcessors(XMPPIOProcessor[] processors) |
void |
setTrafficThrottling(String trafficThrottling) |
protected void |
setupWatchdogThread() |
protected void |
socketAccepted(IO serv,
SocketType type) |
void |
start() |
protected tigase.server.ConnectionManager.ConnectionListenerImpl |
startService(Map<String,Object> port_props) |
void |
stop() |
void |
unregister(Kernel kernel)
Method called while bean is being unregistered.
|
void |
updateConnectionDetails(Map<String,Object> port_props) |
void |
writePacketsToSocket(IO serv,
Queue<Packet> packets) |
boolean |
writePacketToSocket(IO ios,
Packet p) |
protected boolean |
writePacketToSocket(Packet p) |
protected boolean |
writePacketToSocket(Packet p,
String serviceId) |
protected void |
writeRawData(IO ios,
String data) |
String |
xmppStreamError(IO serv,
List<Element> err_el) |
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, setIncomingFilters, setOutogingFilters, setParent, setSchedulerThreads_size
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, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setProperties, setScriptsBaseDir, 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
public static final String ELEMENTS_NUMBER_LIMIT_PROP_KEY
public static final long LAST_MINUTE_BIN_LIMIT_PROP_VAL
public static final long LAST_MINUTE_PACKETS_LIMIT_PROP_VAL
public static final String MAX_INACTIVITY_TIME
public static final String MAX_RECONNECTS_PROP_KEY
public static final int NET_BUFFER_HT_PROP_VAL
public static final String NET_BUFFER_PROP_KEY
public static final int NET_BUFFER_ST_PROP_VAL
public static final int NET_BUFFER_LIMIT_HT_PROP_VAL
public static final String NET_BUFFER_LIMIT_PROP_KEY
public static final int NET_BUFFER_LIMIT_ST_PROP_VAL
public static final String PORT_CLASS_PROP_KEY
public static final String PORT_IFC_PROP_KEY
public static final String PORT_LISTENING_DELAY_KEY
public static final boolean PORT_LISTENING_DELAY_DEF
public static final String PORT_KEY
public static final String PORT_NEW_CONNECTIONS_THROTTLING_KEY
public static final String PORT_REMOTE_HOST_PROP_KEY
public static final String PORT_REMOTE_HOST_PROP_VAL
public static final String PORT_SOCKET_PROP_KEY
public static final String PORT_TYPE_PROP_KEY
public static final String PROP_KEY
public static final long TOTAL_BIN_LIMIT_PROP_VAL
public static final long TOTAL_PACKETS_LIMIT_PROP_VAL
public static final String WHITE_CHAR_ACK_PROP_KEY
public static final String XMPP_ACK_PROP_KEY
public static final boolean XMPP_ACK_PROP_VAL
public static final boolean WHITE_CHAR_ACK_PROP_VAL
public static final String PORTS_PROP_KEY
public static final String WATCHDOG_DELAY
public static final String WATCHDOG_TIMEOUT
public static final String WATCHDOG_PING_TYPE_KEY
protected static final Element pingElement
public static int ELEMENTS_NUMBER_LIMIT_PROP_VAL
@ConfigField(desc="Interfaces to listen on", alias="ifc") public String[] PORT_IFC_PROP_VAL
@ConfigField(desc="Delay before connection is established") protected long connectionDelay
protected boolean delayPortListening
@ConfigField(desc="Limit of elements for single XMPP stanza", alias="elements-number-limit") protected int elements_number_limit
protected Kernel kernel
@ConfigField(desc="Default size of a network buffer", alias="net-buffer") protected int net_buffer
@Inject(nullAllowed=true) protected XMPPIOProcessor[] processors
@ConfigField(desc="Traffic throttling") protected String trafficThrottling
@ConfigField(desc="Watchdog delay", alias="watchdog-delay") protected long watchdogDelay
@ConfigField(desc="Watchdog ping type", alias="watchdog-ping-type") protected ConnectionManager.WATCHDOG_PING_TYPE watchdogPingType
@ConfigField(desc="Watchdog timeout", alias="watchdog-timeout") protected long watchdogTimeout
@ConfigField(desc="Service connection timeout", alias="service-connected-timeout") protected int serviceConnectedTimeout
protected boolean enableServiceConnectedTimeout(IO service)
public void beanConfigurationChanged(Collection<String> changedFields)
ConfigurationChangedAware
beanConfigurationChanged
in interface ConfigurationChangedAware
beanConfigurationChanged
in class AbstractMessageReceiver
changedFields
- collection of field names which were changedpublic 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);
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
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)
stamp
- - timestamp when packet was received to be written to XMPPIOServicepublic void register(Kernel kernel)
RegistrarBean
register
in interface RegistrarBean
kernel
- - instance from local scopepublic void unregister(Kernel kernel)
RegistrarBean
unregister
in interface RegistrarBean
kernel
- - instance from local scopepublic void release()
ServerComponent
release
in interface ServerComponent
release
in class AbstractMessageReceiver
protected void serviceConnected(IO service)
@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 start()
start
in interface MessageReceiver
start
in class AbstractMessageReceiver
public void stop()
stop
in class AbstractMessageReceiver
public String xmppStreamError(IO serv, List<Element> err_el)
xmppStreamError
in interface XMPPIOServiceListener<IO extends XMPPIOService<?>>
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 void setName(String name)
ServerComponent
setName
in interface ServerComponent
setName
in class AbstractMessageReceiver
name
- to be assignedpublic String getFlashCrossDomainPolicy()
public void setFlashCrossDomainPolicyFile(String file)
public int getNet_buffer_limit()
public void setNet_buffer_limit(int value)
public void setProcessors(XMPPIOProcessor[] processors)
public String getTrafficThrottling()
public void setTrafficThrottling(String trafficThrottling)
protected void connectWaitingTasks()
protected void setupWatchdogThread()
protected ConnectionManager.Watchdog newWatchdog()
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)
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)
protected int[] getDefPlainPorts()
protected int[] getDefSSLPorts()
protected String getDefTrafficThrottling()
protected abstract long getMaxInactiveTime()
protected abstract IO getXMPPIOServiceInstance()
protected boolean isHighThroughput()
protected void socketAccepted(IO serv, SocketType type)
protected void releaseListener(ConnectionOpenListener toStop)
Copyright © 2004–2021 "Tigase, Inc.". All rights reserved.