public class S2SConnectionManager extends ConnectionManager<S2SIOService> implements S2SConnectionHandlerIfc<S2SIOService>
Modifier and Type | Class and Description |
---|---|
protected static class |
S2SConnectionManager.DomainServerNameMapper |
ConnectionManager.LIMIT_ACTION, ConnectionManager.Watchdog, ConnectionManager.WATCHDOG_PING_TYPE
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, 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, 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_VAL
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 |
---|
S2SConnectionManager() |
Modifier and Type | Method and Description |
---|---|
boolean |
addOutPacket(Packet packet) |
void |
addTimerTask(TimerTask task,
long delay,
TimeUnit unit)
Method queues and executes timer tasks using ScheduledExecutorService
which allows using more than one thread for executing tasks.
|
void |
addTimerTask(TimerTask task,
long delay,
TimeUnit unit)
Deprecated.
|
protected CIDConnections |
createNewCIDConnections(CID cid) |
CIDConnections |
getCIDConnections(CID cid,
boolean createNew) |
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 from ConnectionManager is overriden as it uses local value S2S_HT_TRAFFIC_THROTTLING_PROP_VAL
|
String |
getDiscoCategoryType()
Method description
|
String |
getDiscoDescription()
Method description
|
protected long |
getMaxInactiveTime()
Method description
|
String |
getSecretForDomain(String domain)
Returns secret used for particular domain
|
String |
getServerNameForDomain(String domain) |
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
List<Element> |
getStreamFeatures(S2SIOService serv)
Method description
|
protected S2SIOService |
getXMPPIOServiceInstance()
Method description
|
boolean |
handlesNonLocalDomains()
Indicates whether the component can handle all packets to
non-local domains.
|
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 |
initNewConnection(Map<String,Object> port_props) |
protected boolean |
isHighThroughput()
Method description
|
boolean |
isTlsNeedClientAuthEnabled() |
boolean |
isTlsRequired(String domain)
Checks if TLS is required for particular domain
|
boolean |
isTlsWantClientAuthEnabled() |
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
Queue<Packet> |
processSocketData(S2SIOService 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
|
boolean |
sendVerifyResult(String elem_name,
CID connCid,
CID keyCid,
Boolean valid,
String key_sessionId,
String serv_sessionId,
String cdata,
boolean handshakingOnly) |
boolean |
sendVerifyResult(String elem_name,
CID connCid,
CID keyCid,
Boolean valid,
String key_sessionId,
String serv_sessionId,
String cdata,
boolean handshakingOnly,
Element errorElem) |
void |
serviceStarted(S2SIOService serv) |
boolean |
serviceStopped(S2SIOService serv) |
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for the object.
|
void |
tlsHandshakeCompleted(S2SIOService serv) |
void |
writeRawData(S2SIOService ios,
String data) |
void |
xmppStreamClosed(S2SIOService serv) |
String[] |
xmppStreamOpened(S2SIOService serv,
Map<String,String> attribs) |
addWaitingTask, checkHighThroughputProperty, checkTrafficLimits, connectWaitingTasks, countIOServices, doForAllServices, everyMinute, getDefSSLPorts, getParamsForPort, getServiceId, getServiceId, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, newWatchdog, packetsReady, processingInThreads, processingOutThreads, release, setName, setupWatchdogThread, socketAccepted, stop, updateConnectionDetails, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writePacketToSocket, xmppStreamError
addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, removeRegexRouting, setMaxQueueSize, setParent, start
addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, 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
getDefHostName, writePacketsToSocket, writePacketToSocket
getName
getDefHostName
getComponentId, getComponentInfo, getName, isInitializationComplete
public static final String CID_CONNECTIONS_BIND
public static final String CID_CONNECTIONS_TASKS_THREADS_KEY
public static final String MAX_CONNECTION_INACTIVITY_TIME_PROP_KEY
public static final String MAX_INCOMING_CONNECTIONS_PROP_KEY
public static final int MAX_INCOMING_CONNECTIONS_PROP_VAL
public static final String MAX_OUT_PER_IP_CONNECTIONS_PROP_KEY
public static final int MAX_OUT_PER_IP_CONNECTIONS_PROP_VAL
public static final String MAX_OUT_TOTAL_CONNECTIONS_PROP_KEY
public static final int MAX_OUT_TOTAL_CONNECTIONS_PROP_VAL
public static final String MAX_PACKET_WAITING_TIME_PROP_KEY
public static final String S2S_CONNECTION_SELECTOR_PROP_KEY
public static final String S2S_CONNECTION_SELECTOR_PROP_VAL
public static final String S2S_DOMAIN_MAPPING_PROP_KEY
public static final String S2S_DOMAIN_MAPPING_PROP_VAL
public static final String S2S_HT_TRAFFIC_THROTTLING_PROP_VAL
protected static final String DB_RESULT_EL_NAME
protected static final String DB_VERIFY_EL_NAME
public static final long MAX_PACKET_WAITING_TIME_PROP_VAL
public static final long MAX_CONNECTION_INACTIVITY_TIME_PROP_VAL
public static final int CID_CONNECTIONS_TASKS_THREADS_VAL
protected Map<CID,CIDConnections> cidConnections
public boolean addOutPacket(Packet packet)
addOutPacket
in interface S2SConnectionHandlerIfc<S2SIOService>
addOutPacket
in class AbstractMessageReceiver
public void addTimerTask(TimerTask task, long delay, TimeUnit unit)
AbstractMessageReceiver
addTimerTask
in interface S2SConnectionHandlerIfc<S2SIOService>
addTimerTask
in class AbstractMessageReceiver
@Deprecated public void addTimerTask(TimerTask task, long delay, TimeUnit unit)
AbstractMessageReceiver
addTimerTask
in class AbstractMessageReceiver
public boolean handlesNonLocalDomains()
VHostListener
handlesNonLocalDomains
in interface VHostListener
handlesNonLocalDomains
in class BasicComponent
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 ConnectionManager<S2SIOService>
packet
- is a Packet
which needs to be processed by some
thread.public void initBindings(Bindings binds)
BasicComponent
initBindings
in class ConnectionManager<S2SIOService>
binds
- A mapping of key/value pairs, all of whose keys are Strings.public void initNewConnection(Map<String,Object> port_props)
initNewConnection
in interface S2SConnectionHandlerIfc<S2SIOService>
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 ConnectionManager<S2SIOService>
packet
- is an instance of the Packet
class passed for
processing.public Queue<Packet> processSocketData(S2SIOService serv)
processSocketData
in class ConnectionManager<S2SIOService>
public boolean processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)
ConnectionManager
processUndeliveredPacket
in class ConnectionManager<S2SIOService>
stamp
- - timestamp when packet was received to be written to XMPPIOServicepublic void reconnectionFailed(Map<String,Object> port_props)
reconnectionFailed
in class ConnectionManager<S2SIOService>
public int schedulerThreads()
AbstractMessageReceiver
schedulerThreads
in class AbstractMessageReceiver
int
public boolean sendVerifyResult(String elem_name, CID connCid, CID keyCid, Boolean valid, String key_sessionId, String serv_sessionId, String cdata, boolean handshakingOnly)
sendVerifyResult
in interface S2SConnectionHandlerIfc<S2SIOService>
public boolean sendVerifyResult(String elem_name, CID connCid, CID keyCid, Boolean valid, String key_sessionId, String serv_sessionId, String cdata, boolean handshakingOnly, Element errorElem)
sendVerifyResult
in interface S2SConnectionHandlerIfc<S2SIOService>
public void serviceStarted(S2SIOService serv)
serviceStarted
in class ConnectionManager<S2SIOService>
public boolean serviceStopped(S2SIOService serv)
serviceStopped
in interface IOServiceListener<S2SIOService>
serviceStopped
in class ConnectionManager<S2SIOService>
public void tlsHandshakeCompleted(S2SIOService serv)
tlsHandshakeCompleted
in interface IOServiceListener<S2SIOService>
public void writeRawData(S2SIOService ios, String data)
writeRawData
in interface S2SConnectionHandlerIfc<S2SIOService>
writeRawData
in class ConnectionManager<S2SIOService>
public void xmppStreamClosed(S2SIOService serv)
xmppStreamClosed
in interface XMPPIOServiceListener<S2SIOService>
public String[] xmppStreamOpened(S2SIOService serv, Map<String,String> attribs)
xmppStreamOpened
in interface XMPPIOServiceListener<S2SIOService>
public CIDConnections getCIDConnections(CID cid, boolean createNew) throws NotLocalhostException, LocalhostException
getCIDConnections
in interface S2SConnectionHandlerIfc<S2SIOService>
NotLocalhostException
LocalhostException
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 ConnectionManager<S2SIOService>
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()
BasicComponent
getDiscoCategoryType
in class BasicComponent
String
public String getDiscoDescription()
BasicComponent
getDiscoDescription
in class BasicComponent
String
public String getSecretForDomain(String domain) throws NotLocalhostException
getSecretForDomain
in interface S2SConnectionHandlerIfc<S2SIOService>
domain
- for which secret should be returnedNotLocalhostException
- if the domain is not localpublic String getServerNameForDomain(String domain)
getServerNameForDomain
in interface S2SConnectionHandlerIfc<S2SIOService>
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 ConnectionManager<S2SIOService>
list
- is a StatistcsList
where all statistics are stored.public List<Element> getStreamFeatures(S2SIOService serv)
S2SConnectionHandlerIfc
getStreamFeatures
in interface S2SConnectionHandlerIfc<S2SIOService>
serv
- S2SIOService
for which stream features should be retrievedpublic boolean isTlsRequired(String domain)
S2SConnectionHandlerIfc
isTlsRequired
in interface S2SConnectionHandlerIfc<S2SIOService>
domain
- for which secret should be returnedpublic boolean isTlsWantClientAuthEnabled()
isTlsWantClientAuthEnabled
in interface S2SConnectionHandlerIfc<S2SIOService>
public boolean isTlsNeedClientAuthEnabled()
isTlsNeedClientAuthEnabled
in interface S2SConnectionHandlerIfc<S2SIOService>
public void setProperties(Map<String,Object> props) throws ConfigurationException
Configurable
setProperties
in interface Configurable
setProperties
in class ConnectionManager<S2SIOService>
props
- Map
with the configurationConfigurationException
- - if setting configuration will
fail which will make it unable
to workprotected int[] getDefPlainPorts()
ConnectionManager
getDefPlainPorts
in class ConnectionManager<S2SIOService>
int[]
protected String getDefTrafficThrottling()
getDefTrafficThrottling
in class ConnectionManager<S2SIOService>
protected long getMaxInactiveTime()
ConnectionManager
getMaxInactiveTime
in class ConnectionManager<S2SIOService>
long
protected S2SIOService getXMPPIOServiceInstance()
ConnectionManager
getXMPPIOServiceInstance
in class ConnectionManager<S2SIOService>
IO
protected boolean isHighThroughput()
ConnectionManager
isHighThroughput
in class ConnectionManager<S2SIOService>
boolean
protected CIDConnections createNewCIDConnections(CID cid) throws NotLocalhostException, LocalhostException
Copyright © 2018 "Tigase, Inc.". All rights reserved.