tigase.server.xmppsession
Class SessionManager

java.lang.Object
  extended by tigase.server.AbstractMessageReceiver
      extended by tigase.server.xmppsession.SessionManager
All Implemented Interfaces:
Configurable, XMPPService, MessageReceiver, ServerComponent, SessionManagerHandler, StatisticsContainer, OnlineJidsReporter, VHostListener
Direct Known Subclasses:
SessionManagerClustered

public class SessionManager
extends AbstractMessageReceiver
implements Configurable, XMPPService, SessionManagerHandler, OnlineJidsReporter

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

Version:
$Rev: 1851 $
Author:
Artur Hefczyc, Peter Sandström - multi-threadin support for pluggins processors.

Field Summary
protected static java.lang.String ADMIN_COMMAND_NODE
           
protected  java.util.concurrent.ConcurrentHashMap<java.lang.String,XMPPResourceConnection> connectionsByFrom
          A Map with connectionID as a key and an object with all the user connection data as a value
protected static java.lang.String SESSION_PACKETS
           
 
Fields inherited from class tigase.server.AbstractMessageReceiver
HOUR, MAX_QUEUE_SIZE_PROP_KEY, MAX_QUEUE_SIZE_PROP_VAL, maxQueueSize, MINUTE, SECOND, vHostManager
 
Fields inherited from interface tigase.conf.Configurable
ADMINS_PROP_KEY, AUTH_REPO_CLASS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_URL_PROP_KEY, 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, COMPONENT_ID_PROP_KEY, DEF_BOSH_NAME, DEF_C2S_NAME, DEF_CL_COMP_NAME, DEF_CLUST_CONTR_NAME, DEF_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, 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_CLASS_PROP_VAL, DRUPAL_REPO_URL_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_SM_PLUGINS, GEN_SREC_ADMINS, GEN_SREC_DB, GEN_SREC_DB_URI, GEN_TEST, GEN_TRUSTED, GEN_USER_DB, GEN_USER_DB_URI, GEN_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, MONITORING, MYSQL_REPO_CLASS_PROP_VAL, MYSQL_REPO_URL_PROP_VAL, NULL_ROUTING, 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_POOL_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUS_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, SRECV_COMP_CLASS_NAME, SSEND_COMP_CLASS_NAME, STATS_CLASS_NAME, TIGASE_AUTH_REPO_CLASS_PROP_VAL, TIGASE_AUTH_REPO_URL_PROP_VAL, TIGASE_CUSTOM_AUTH_REPO_CLASS_PROP_VAL, TRUSTED_PROP_KEY, USER_REPO_CLASS_PROP_KEY, USER_REPO_PARAMS_NODE, 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
 
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
 
Fields inherited from interface tigase.server.xmppsession.SessionManagerHandler
COMMIT_HANDLER_KEY
 
Constructor Summary
SessionManager()
           
 
Method Summary
protected  boolean addOutPacket(Packet packet)
           
protected  void addOutPackets(Packet packet, XMPPResourceConnection conn, java.util.Queue<Packet> results)
           
protected  boolean addTrusted(java.lang.String jid)
           
protected  void closeConnection(java.lang.String connectionId, boolean closeOnly)
           
protected  void closeSession(XMPPResourceConnection conn, boolean closeOnly)
           
 boolean containsJid(java.lang.String jid)
           
protected  XMPPResourceConnection createUserSession(java.lang.String conn_id, java.lang.String domain)
           
protected  boolean delTrusted(java.lang.String jid)
           
protected  boolean fastAddOutPacket(Packet packet)
           
 java.lang.String[] getConnectionIdsForJid(java.lang.String jid)
           
 java.util.Map<java.lang.String,java.lang.Object> getDefaults(java.util.Map<java.lang.String,java.lang.Object> params)
          Returns defualt configuration settings for this object.
 java.util.List<tigase.xml.Element> getDiscoFeatures()
          Returns features for top level disco info
 tigase.xml.Element getDiscoInfo(java.lang.String node, java.lang.String jid)
           
 java.util.List<tigase.xml.Element> getDiscoItems(java.lang.String node, java.lang.String jid)
           
protected  java.lang.Integer getMaxQueueSize(int def)
           
protected  XMPPResourceConnection getResourceConnection(java.lang.String jid)
           
protected  XMPPSession getSession(java.lang.String jid)
           
 void getStatistics(StatisticsList list)
           
protected  XMPPResourceConnection getXMPPResourceConnection(Packet p)
           
protected  XMPPResourceConnection getXMPPResourceConnection(java.lang.String connId)
           
 void handleLogin(java.lang.String userName, XMPPResourceConnection conn)
           
 void handleLogout(java.lang.String userName, XMPPResourceConnection conn)
           
 void handlePresenceSet(XMPPResourceConnection conn)
           
 void handleResourceBind(XMPPResourceConnection conn)
           
 boolean handlesLocalDomains()
          Indicates whether the component accepts packets to all local domains.
 boolean hasCompleteJidsInfo()
           
protected  boolean isBrokenPacket(Packet p)
           
 boolean isLocalDomain(java.lang.String domain, boolean includeComponents)
           
protected  boolean isTrusted(java.lang.String jid)
           
protected  XMPPResourceConnection loginUserSession(java.lang.String conn_id, java.lang.String domain, java.lang.String user_id, java.lang.String resource, ConnectionStatus conn_st, java.lang.String xmpp_sessionId)
           
protected  boolean processAdminsOrDomains(Packet packet)
           
protected  boolean processCommand(Packet pc)
           
 int processingThreads()
           
 void processPacket(Packet packet)
           
protected  void processPacket(Packet packet, XMPPResourceConnection conn)
           
protected  void registerNewSession(java.lang.String userId, XMPPResourceConnection conn)
           
protected  void sendAllOnHold(XMPPResourceConnection conn)
           
protected  void sendToAdmins(Packet packet)
           
 void setName(java.lang.String name)
           
 void setProperties(java.util.Map<java.lang.String,java.lang.Object> props)
          Sets all configuration properties for object.
 boolean skipPrivacy()
           
 
Methods inherited from class tigase.server.AbstractMessageReceiver
addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, clearRegexRoutings, everyHour, everyMinute, everySecond, getComponentId, getDefHostName, getName, getRegexRoutings, getVHostItem, handlesNameSubdomains, handlesNonLocalDomains, hashCodeForPacket, initializationCompleted, isInRegexRoutings, isLocalDomain, isLocalDomainOrComponent, newPacketId, processPacket, release, removeRegexRouting, setMaxQueueSize, setParent, setVHostManager, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface tigase.conf.Configurable
getName
 
Methods inherited from interface tigase.server.ServerComponent
getComponentId, initializationCompleted, processPacket, release
 

Field Detail

SESSION_PACKETS

protected static final java.lang.String SESSION_PACKETS
See Also:
Constant Field Values

ADMIN_COMMAND_NODE

protected static final java.lang.String ADMIN_COMMAND_NODE
See Also:
Constant Field Values

connectionsByFrom

protected java.util.concurrent.ConcurrentHashMap<java.lang.String,XMPPResourceConnection> connectionsByFrom
A Map with connectionID as a key and an object with all the user connection data as a value

Constructor Detail

SessionManager

public SessionManager()
Method Detail

setName

public void setName(java.lang.String name)
Specified by:
setName in interface ServerComponent
Overrides:
setName in class AbstractMessageReceiver

getXMPPResourceConnection

protected XMPPResourceConnection getXMPPResourceConnection(java.lang.String connId)

getXMPPResourceConnection

protected XMPPResourceConnection getXMPPResourceConnection(Packet p)

isBrokenPacket

protected boolean isBrokenPacket(Packet p)

processPacket

public void processPacket(Packet packet)
Specified by:
processPacket in class AbstractMessageReceiver

processPacket

protected void processPacket(Packet packet,
                             XMPPResourceConnection conn)

processingThreads

public int processingThreads()
Overrides:
processingThreads in class AbstractMessageReceiver

isTrusted

protected boolean isTrusted(java.lang.String jid)

addTrusted

protected boolean addTrusted(java.lang.String jid)

delTrusted

protected boolean delTrusted(java.lang.String jid)

processAdminsOrDomains

protected boolean processAdminsOrDomains(Packet packet)

sendToAdmins

protected void sendToAdmins(Packet packet)

getSession

protected XMPPSession getSession(java.lang.String jid)

getResourceConnection

protected XMPPResourceConnection getResourceConnection(java.lang.String jid)

getMaxQueueSize

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

processCommand

protected boolean processCommand(Packet pc)

sendAllOnHold

protected void sendAllOnHold(XMPPResourceConnection conn)

closeConnection

protected void closeConnection(java.lang.String connectionId,
                               boolean closeOnly)

closeSession

protected void closeSession(XMPPResourceConnection conn,
                            boolean closeOnly)

addOutPacket

protected boolean addOutPacket(Packet packet)
Overrides:
addOutPacket in class AbstractMessageReceiver

fastAddOutPacket

protected boolean fastAddOutPacket(Packet packet)

addOutPackets

protected void addOutPackets(Packet packet,
                             XMPPResourceConnection conn,
                             java.util.Queue<Packet> results)

getDefaults

public java.util.Map<java.lang.String,java.lang.Object> getDefaults(java.util.Map<java.lang.String,java.lang.Object> params)
Description copied from class: AbstractMessageReceiver
Returns defualt configuration settings for this object.

Specified by:
getDefaults in interface Configurable
Overrides:
getDefaults in class AbstractMessageReceiver
Returns:

setProperties

public void setProperties(java.util.Map<java.lang.String,java.lang.Object> props)
Description copied from class: AbstractMessageReceiver
Sets all configuration properties for object.

Specified by:
setProperties in interface Configurable
Overrides:
setProperties in class AbstractMessageReceiver

handlesLocalDomains

public boolean handlesLocalDomains()
Description copied from interface: VHostListener
Indicates whether the component accepts packets to all local domains. The best example would be SM component which usually handles all requests sent to any local domain.

Specified by:
handlesLocalDomains in interface VHostListener
Overrides:
handlesLocalDomains in class AbstractMessageReceiver
Returns:
'true' if the component accepts packets to local domains 'false' otherwise.

createUserSession

protected XMPPResourceConnection createUserSession(java.lang.String conn_id,
                                                   java.lang.String domain)

loginUserSession

protected XMPPResourceConnection loginUserSession(java.lang.String conn_id,
                                                  java.lang.String domain,
                                                  java.lang.String user_id,
                                                  java.lang.String resource,
                                                  ConnectionStatus conn_st,
                                                  java.lang.String xmpp_sessionId)

registerNewSession

protected void registerNewSession(java.lang.String userId,
                                  XMPPResourceConnection conn)

handleLogin

public void handleLogin(java.lang.String userName,
                        XMPPResourceConnection conn)
Specified by:
handleLogin in interface SessionManagerHandler

handleResourceBind

public void handleResourceBind(XMPPResourceConnection conn)
Specified by:
handleResourceBind in interface SessionManagerHandler

handlePresenceSet

public void handlePresenceSet(XMPPResourceConnection conn)
Specified by:
handlePresenceSet in interface SessionManagerHandler

handleLogout

public void handleLogout(java.lang.String userName,
                         XMPPResourceConnection conn)
Specified by:
handleLogout in interface SessionManagerHandler

getDiscoInfo

public tigase.xml.Element getDiscoInfo(java.lang.String node,
                                       java.lang.String jid)
Specified by:
getDiscoInfo in interface XMPPService

getDiscoFeatures

public java.util.List<tigase.xml.Element> getDiscoFeatures()
Description copied from interface: XMPPService
Returns features for top level disco info

Specified by:
getDiscoFeatures in interface XMPPService
Returns:

getDiscoItems

public java.util.List<tigase.xml.Element> getDiscoItems(java.lang.String node,
                                                        java.lang.String jid)
Specified by:
getDiscoItems in interface XMPPService

getStatistics

public void getStatistics(StatisticsList list)
Specified by:
getStatistics in interface StatisticsContainer
Overrides:
getStatistics in class AbstractMessageReceiver

isLocalDomain

public boolean isLocalDomain(java.lang.String domain,
                             boolean includeComponents)
Specified by:
isLocalDomain in interface SessionManagerHandler

hasCompleteJidsInfo

public boolean hasCompleteJidsInfo()
Specified by:
hasCompleteJidsInfo in interface OnlineJidsReporter

containsJid

public boolean containsJid(java.lang.String jid)
Specified by:
containsJid in interface OnlineJidsReporter

skipPrivacy

public boolean skipPrivacy()

getConnectionIdsForJid

public java.lang.String[] getConnectionIdsForJid(java.lang.String jid)
Specified by:
getConnectionIdsForJid in interface OnlineJidsReporter


Copyright © 2009 Tigase. All Rights Reserved.