tigase.cluster
Class ClusterConnectionManager

java.lang.Object
  extended by tigase.server.BasicComponent
      extended by tigase.server.AbstractMessageReceiver
          extended by tigase.server.ConnectionManager<XMPPIOService<Object>>
              extended by tigase.cluster.ClusterConnectionManager
All Implemented Interfaces:
ClusteredComponentIfc, Configurable, XMPPService, IOServiceListener<XMPPIOService<Object>>, MessageReceiver, ServerComponent, StatisticsContainer, VHostListener, XMPPIOServiceListener<XMPPIOService<Object>>

public class ClusterConnectionManager
extends ConnectionManager<XMPPIOService<Object>>
implements ClusteredComponentIfc

Class ClusterConnectionManager Created: Tue Nov 22 07:07:11 2005

Version:
$Rev: 2996 $
Author:
Artur Hefczyc

Field Summary
static String CLUSTER_CONNECTIONS_PER_NODE_PAR
          Field description
static String CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY
          Field description
static int CLUSTER_CONNECTIONS_PER_NODE_VAL
          Field description
static String CLUSTER_CONTR_ID_PROP_KEY
          Field description
static String COMPRESS_STREAM_PROP_KEY
          Field description
static boolean COMPRESS_STREAM_PROP_VAL
          Field description
static String CONNECT_ALL_PAR
          Field description
static String CONNECT_ALL_PROP_KEY
          Field description
static boolean CONNECT_ALL_PROP_VAL
          Field description
static String IDENTITY_TYPE_KEY
          Field description
static String IDENTITY_TYPE_VAL
          Field description
 String[] PORT_IFC_PROP_VAL
          Field description
static String PORT_LOCAL_HOST_PROP_KEY
          Field description
static String PORT_ROUTING_TABLE_PROP_KEY
          Field description
 int[] PORTS
          Field description
static String RETURN_SERVICE_DISCO_KEY
          Field description
static boolean RETURN_SERVICE_DISCO_VAL
          Field description
static String SECRET_PROP_KEY
          Field description
 String SECRET_PROP_VAL
          Field description
static String XMLNS
          Field description
 
Fields inherited from class tigase.server.ConnectionManager
connectionDelay, MAX_RECONNECTS_PROP_KEY, net_buffer, NET_BUFFER_HT_PROP_KEY, NET_BUFFER_HT_PROP_VAL, NET_BUFFER_PROP_KEY, NET_BUFFER_ST_PROP_KEY, NET_BUFFER_ST_PROP_VAL, PORT_CLASS_PROP_KEY, PORT_IFC_PROP_KEY, PORT_KEY, PORT_REMOTE_HOST_PROP_KEY, PORT_REMOTE_HOST_PROP_VAL, PORT_SOCKET_PROP_KEY, PORT_TYPE_PROP_KEY, PORTS_PROP_KEY, PROP_KEY, TLS_PROP_KEY, TLS_REQUIRED_PROP_KEY, TLS_REQUIRED_PROP_VAL, TLS_USE_PROP_KEY, TLS_USE_PROP_VAL
 
Fields inherited from class tigase.server.AbstractMessageReceiver
HOUR, INCOMING_FILTERS_PROP_KEY, INCOMING_FILTERS_PROP_VAL, MAX_QUEUE_SIZE_PROP_KEY, MAX_QUEUE_SIZE_PROP_VAL, maxInQueueSize, maxOutQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, SECOND
 
Fields inherited from class tigase.server.BasicComponent
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, vHostManager
 
Fields inherited from interface tigase.conf.Configurable
ADMINS_PROP_KEY, AMP_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, 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, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACK
 
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
 
Constructor Summary
ClusterConnectionManager()
           
 
Method Summary
 Map<String,Object> getDefaults(Map<String,Object> params)
          Method description
protected  int[] getDefPlainPorts()
           
 String getDiscoCategoryType()
          Method description
 String getDiscoDescription()
          Method description
protected  long getMaxInactiveTime()
          Method getMaxInactiveTime returns max keep-alive time for inactive connection.
protected  Integer getMaxQueueSize(int def)
           
protected  Map<String,Object> getParamsForPort(int port)
           
 void getStatistics(StatisticsList list)
          Method description
protected  XMPPIOService<Object> getXMPPIOServiceInstance()
           
 int hashCodeForPacket(Packet packet)
          This method can be overwritten in extending classes to get a different packets distribution to different threads.
 void initBindings(Bindings binds)
          Method description
protected  boolean isHighThroughput()
           
 void nodeConnected(String node)
          Method description
 void nodeDisconnected(String node)
          Method description
 int processingInThreads()
          Method description
 int processingOutThreads()
           
 void processOutPacket(Packet packet)
          By default this method just copies the given packet between queue.
 void processPacket(Packet packet)
          Method description
 Queue<Packet> processSocketData(XMPPIOService<Object> serv)
          Method description
 void reconnectionFailed(Map<String,Object> port_props)
          Method description
protected  void serviceConnected(XMPPIOService<Object> serv)
           
 void serviceStarted(XMPPIOService<Object> serv)
          Method description
 boolean serviceStopped(XMPPIOService<Object> service)
          Method description
 void setClusterController(ClusterControllerIfc cl_controller)
          Method description
 void setProperties(Map<String,Object> props)
          Method description
 void tlsHandshakeCompleted(XMPPIOService<Object> service)
          Method description
protected  boolean writePacketToSocket(Packet p)
           
 void xmppStreamClosed(XMPPIOService<Object> serv)
          Method description
 String xmppStreamOpened(XMPPIOService<Object> service, Map<String,String> attribs)
          Method description
 
Methods inherited from class tigase.server.ConnectionManager
addWaitingTask, countIOServices, doForAllServices, everyMinute, getDefSSLPorts, getServiceId, getServiceId, getUniqueId, getXMPPIOService, getXMPPIOService, initializationCompleted, packetsReady, release, setName, writePacketsToSocket, writePacketToSocket, writePacketToSocket, writeRawData
 
Methods inherited from class tigase.server.AbstractMessageReceiver
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everySecond, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processPacket, removeRegexRouting, setMaxQueueSize, setParent, start, stop
 
Methods inherited from class tigase.server.BasicComponent
addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getDefHostName, getDiscoCategory, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getScriptItems, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, isAdmin, isLocalDomain, isLocalDomainOrComponent, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface tigase.server.ServerComponent
getComponentId, getName, initializationCompleted, processPacket, release, setName
 
Methods inherited from interface tigase.server.MessageReceiver
getDefHostName
 

Field Detail

SECRET_PROP_KEY

public static final String SECRET_PROP_KEY
Field description

See Also:
Constant Field Values

PORT_LOCAL_HOST_PROP_KEY

public static final String PORT_LOCAL_HOST_PROP_KEY
Field description

See Also:
Constant Field Values

PORT_ROUTING_TABLE_PROP_KEY

public static final String PORT_ROUTING_TABLE_PROP_KEY
Field description

See Also:
Constant Field Values

RETURN_SERVICE_DISCO_KEY

public static final String RETURN_SERVICE_DISCO_KEY
Field description

See Also:
Constant Field Values

RETURN_SERVICE_DISCO_VAL

public static final boolean RETURN_SERVICE_DISCO_VAL
Field description

See Also:
Constant Field Values

IDENTITY_TYPE_KEY

public static final String IDENTITY_TYPE_KEY
Field description

See Also:
Constant Field Values

IDENTITY_TYPE_VAL

public static final String IDENTITY_TYPE_VAL
Field description

See Also:
Constant Field Values

CONNECT_ALL_PAR

public static final String CONNECT_ALL_PAR
Field description

See Also:
Constant Field Values

CLUSTER_CONNECTIONS_PER_NODE_PAR

public static final String CLUSTER_CONNECTIONS_PER_NODE_PAR
Field description

See Also:
Constant Field Values

CLUSTER_CONNECTIONS_PER_NODE_VAL

public static final int CLUSTER_CONNECTIONS_PER_NODE_VAL
Field description

See Also:
Constant Field Values

CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY

public static final String CLUSTER_CONNECTIONS_PER_NODE_PROP_KEY
Field description

See Also:
Constant Field Values

CONNECT_ALL_PROP_KEY

public static final String CONNECT_ALL_PROP_KEY
Field description

See Also:
Constant Field Values

CLUSTER_CONTR_ID_PROP_KEY

public static final String CLUSTER_CONTR_ID_PROP_KEY
Field description

See Also:
Constant Field Values

CONNECT_ALL_PROP_VAL

public static final boolean CONNECT_ALL_PROP_VAL
Field description

See Also:
Constant Field Values

COMPRESS_STREAM_PROP_KEY

public static final String COMPRESS_STREAM_PROP_KEY
Field description

See Also:
Constant Field Values

COMPRESS_STREAM_PROP_VAL

public static final boolean COMPRESS_STREAM_PROP_VAL
Field description

See Also:
Constant Field Values

XMLNS

public static final String XMLNS
Field description

See Also:
Constant Field Values

PORTS

public int[] PORTS
Field description


PORT_IFC_PROP_VAL

public String[] PORT_IFC_PROP_VAL
Field description


SECRET_PROP_VAL

public String SECRET_PROP_VAL
Field description

Constructor Detail

ClusterConnectionManager

public ClusterConnectionManager()
Method Detail

getDefaults

public Map<String,Object> getDefaults(Map<String,Object> params)
Method description

Specified by:
getDefaults in interface Configurable
Overrides:
getDefaults in class ConnectionManager<XMPPIOService<Object>>
Parameters:
params -
Returns:

getDiscoCategoryType

public String getDiscoCategoryType()
Method description

Overrides:
getDiscoCategoryType in class BasicComponent
Returns:

getDiscoDescription

public String getDiscoDescription()
Method description

Overrides:
getDiscoDescription in class BasicComponent
Returns:

getStatistics

public void getStatistics(StatisticsList list)
Method description

Specified by:
getStatistics in interface StatisticsContainer
Overrides:
getStatistics in class ConnectionManager<XMPPIOService<Object>>
Parameters:
list -

hashCodeForPacket

public int hashCodeForPacket(Packet packet)
This method can be overwritten in extending classes to get a different packets distribution to different threads. For PubSub, probably better packets distribution to different threads would be based on the sender address rather then destination address.

Overrides:
hashCodeForPacket in class ConnectionManager<XMPPIOService<Object>>
Parameters:
packet -
Returns:

initBindings

public void initBindings(Bindings binds)
Method description

Overrides:
initBindings in class ConnectionManager<XMPPIOService<Object>>
Parameters:
binds -

nodeConnected

public void nodeConnected(String node)
Method description

Specified by:
nodeConnected in interface ClusteredComponentIfc
Parameters:
node -

nodeDisconnected

public void nodeDisconnected(String node)
Method description

Specified by:
nodeDisconnected in interface ClusteredComponentIfc
Parameters:
node -

processPacket

public void processPacket(Packet packet)
Method description

Overrides:
processPacket in class ConnectionManager<XMPPIOService<Object>>
Parameters:
packet -

processSocketData

public Queue<Packet> processSocketData(XMPPIOService<Object> serv)
Method description

Specified by:
processSocketData in class ConnectionManager<XMPPIOService<Object>>
Parameters:
serv -
Returns:

processOutPacket

public void processOutPacket(Packet packet)
Description copied from class: AbstractMessageReceiver
By default this method just copies the given packet between queue. This method operates on packets which have been already processed somehow by the component so usually the default action is the best one, however some components in rare cases may choose to process packets differently. In most cases this method should not be overridden.

Overrides:
processOutPacket in class AbstractMessageReceiver
Parameters:
packet - is an output packet which normally has to go to other component for further processing.

processingInThreads

public int processingInThreads()
Description copied from class: ConnectionManager
Method description

Overrides:
processingInThreads in class ConnectionManager<XMPPIOService<Object>>
Returns:

processingOutThreads

public int processingOutThreads()
Overrides:
processingOutThreads in class ConnectionManager<XMPPIOService<Object>>

reconnectionFailed

public void reconnectionFailed(Map<String,Object> port_props)
Method description

Specified by:
reconnectionFailed in class ConnectionManager<XMPPIOService<Object>>
Parameters:
port_props -

serviceStarted

public void serviceStarted(XMPPIOService<Object> serv)
Method description

Overrides:
serviceStarted in class ConnectionManager<XMPPIOService<Object>>
Parameters:
serv -

serviceStopped

public boolean serviceStopped(XMPPIOService<Object> service)
Method description

Specified by:
serviceStopped in interface IOServiceListener<XMPPIOService<Object>>
Overrides:
serviceStopped in class ConnectionManager<XMPPIOService<Object>>
Parameters:
service -
Returns:

setClusterController

public void setClusterController(ClusterControllerIfc cl_controller)
Method description

Specified by:
setClusterController in interface ClusteredComponentIfc
Parameters:
cl_controller -

setProperties

public void setProperties(Map<String,Object> props)
Method description

Specified by:
setProperties in interface Configurable
Overrides:
setProperties in class ConnectionManager<XMPPIOService<Object>>
Parameters:
props -

tlsHandshakeCompleted

public void tlsHandshakeCompleted(XMPPIOService<Object> service)
Method description

Specified by:
tlsHandshakeCompleted in interface IOServiceListener<XMPPIOService<Object>>
Parameters:
service -

xmppStreamClosed

public void xmppStreamClosed(XMPPIOService<Object> serv)
Method description

Specified by:
xmppStreamClosed in interface XMPPIOServiceListener<XMPPIOService<Object>>
Parameters:
serv -

xmppStreamOpened

public String xmppStreamOpened(XMPPIOService<Object> service,
                               Map<String,String> attribs)
Method description

Specified by:
xmppStreamOpened in interface XMPPIOServiceListener<XMPPIOService<Object>>
Parameters:
service -
attribs -
Returns:

getDefPlainPorts

protected int[] getDefPlainPorts()
Overrides:
getDefPlainPorts in class ConnectionManager<XMPPIOService<Object>>

getMaxInactiveTime

protected long getMaxInactiveTime()
Method getMaxInactiveTime returns max keep-alive time for inactive connection. we shoulnd not really close external component connection at all, so let's say something like: 1000 days...

Specified by:
getMaxInactiveTime in class ConnectionManager<XMPPIOService<Object>>
Returns:
a long value

getMaxQueueSize

protected Integer getMaxQueueSize(int def)
Overrides:
getMaxQueueSize in class AbstractMessageReceiver

getParamsForPort

protected Map<String,Object> getParamsForPort(int port)
Overrides:
getParamsForPort in class ConnectionManager<XMPPIOService<Object>>

getXMPPIOServiceInstance

protected XMPPIOService<Object> getXMPPIOServiceInstance()
Specified by:
getXMPPIOServiceInstance in class ConnectionManager<XMPPIOService<Object>>

isHighThroughput

protected boolean isHighThroughput()
Overrides:
isHighThroughput in class ConnectionManager<XMPPIOService<Object>>

serviceConnected

protected void serviceConnected(XMPPIOService<Object> serv)

writePacketToSocket

protected boolean writePacketToSocket(Packet p)
Overrides:
writePacketToSocket in class ConnectionManager<XMPPIOService<Object>>
Returns:


Copyright © 2012 Tigase. All Rights Reserved.