public class SessionManager extends AbstractMessageReceiver implements Configurable, SessionManagerHandler, OnlineJidsReporter
| Modifier and Type | Class and Description |
|---|---|
protected class |
SessionManager.WriterQueue<E extends Packet> |
| Modifier and Type | Field and Description |
|---|---|
protected static String |
ADMIN_COMMAND_NODE
Field description
|
protected ConcurrentHashMap<tigase.xmpp.JID,XMPPResourceConnection> |
connectionsByFrom
A Map with connectionID as a key and an object with all the user connection
data as a value
|
protected Queue<Packet> |
packetWriterQueue
Field description
|
protected ConcurrentHashMap<tigase.xmpp.BareJID,XMPPSession> |
sessionsByNodeId
A Map with bare user JID as a key and a user session object as a value.
|
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, 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_ACKCOMMIT_HANDLER_KEYCMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS| Constructor and Description |
|---|
SessionManager() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
addOutPacket(Packet packet) |
protected void |
addOutPackets(Packet packet,
XMPPResourceConnection conn,
Queue<Packet> results) |
XMPPImplIfc |
addPlugin(String plug_id,
String conc) |
protected boolean |
addTrusted(tigase.xmpp.JID jid) |
protected void |
closeConnection(XMPPResourceConnection connection,
tigase.xmpp.JID connectionId,
String userId,
boolean closeOnly) |
protected void |
closeSession(XMPPResourceConnection conn,
boolean closeOnly) |
boolean |
containsJid(tigase.xmpp.BareJID jid)
The method checks whether the given JID is known to the installation,
either user connected to local machine or any of the cluster nodes.
|
boolean |
containsJidLocally(tigase.xmpp.BareJID jid)
The method checks whether the given JID is known to local cluster node
as connected user.
|
boolean |
containsJidLocally(tigase.xmpp.JID jid)
The method checks whether the given JID is known to local cluster node
as connected user.
|
protected XMPPResourceConnection |
createUserSession(tigase.xmpp.JID conn_id,
String domain) |
protected boolean |
delTrusted(tigase.xmpp.JID jid) |
void |
everyMinute()
Utility method executed precisely every minute.
|
protected boolean |
fastAddOutPacket(Packet packet) |
tigase.xmpp.JID[] |
getConnectionIdsForJid(tigase.xmpp.BareJID jid)
Retrieve all connection IDs (CIDs) for the given user.
|
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. |
String |
getDiscoCategoryType()
Method description
|
String |
getDiscoDescription()
Method description
|
List<tigase.xml.Element> |
getDiscoFeatures(tigase.xmpp.JID from)
Returns features for top level disco info
|
tigase.xml.Element |
getDiscoInfo(String node,
tigase.xmpp.JID jid,
tigase.xmpp.JID from)
Returns service discovery info for the component.
|
protected Integer |
getMaxQueueSize(int def)
Method description
|
XMPPResourceConnection |
getResourceConnection(tigase.xmpp.JID jid) |
protected XMPPSession |
getSession(tigase.xmpp.BareJID jid) |
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected XMPPResourceConnection |
getXMPPResourceConnection(tigase.xmpp.JID connId) |
protected XMPPResourceConnection |
getXMPPResourceConnection(Packet p) |
void |
handleDomainChange(String domain,
XMPPResourceConnection conn) |
void |
handleLocalPacket(Packet packet,
XMPPResourceConnection conn) |
void |
handleLogin(tigase.xmpp.BareJID userId,
XMPPResourceConnection conn) |
void |
handleLogout(tigase.xmpp.BareJID userId,
XMPPResourceConnection conn) |
void |
handlePresenceSet(XMPPResourceConnection conn) |
void |
handleResourceBind(XMPPResourceConnection conn) |
boolean |
handlesLocalDomains()
Indicates whether the component accepts packets to all local domains.
|
boolean |
hasCompleteJidsInfo()
Method checks whether the clustering strategy has a complete JIDs info.
|
void |
initBindings(Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts
loaded by the server
|
protected boolean |
isBrokenPacket(Packet p) |
boolean |
isLocalDomain(String domain,
boolean includeComponents) |
protected boolean |
isTrusted(tigase.xmpp.JID jid) |
protected boolean |
isTrusted(String jid) |
protected XMPPResourceConnection |
loginUserSession(tigase.xmpp.JID conn_id,
String domain,
tigase.xmpp.BareJID user_id,
String resource,
String xmpp_sessionId,
boolean tmpSession) |
protected boolean |
processAdminsOrDomains(Packet packet) |
protected boolean |
processCommand(Packet pc) |
int |
processingInThreads()
Concurrency control method.
|
int |
processingOutThreads()
Concurrency control method.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
protected void |
processPacket(Packet packet,
XMPPResourceConnection conn) |
protected void |
processPresenceUpdate(XMPPSession session,
tigase.xml.Element packet) |
protected void |
registerNewSession(tigase.xmpp.BareJID userId,
XMPPResourceConnection conn) |
void |
removePlugin(String plug_id) |
protected void |
sendToAdmins(Packet packet) |
void |
setName(String name)
Method description
|
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for the object.
|
boolean |
skipPrivacy() |
void |
stop()
Method description
|
addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everySecond, getRegexRoutings, hashCodeForPacket, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, release, removeRegexRouting, schedulerThreads, setMaxQueueSize, setParent, startaddComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoFeatures, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntityclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, releasegetComponentIdgetDefHostNameprotected static final String ADMIN_COMMAND_NODE
protected ConcurrentHashMap<tigase.xmpp.BareJID,XMPPSession> sessionsByNodeId
protected ConcurrentHashMap<tigase.xmpp.JID,XMPPResourceConnection> connectionsByFrom
public boolean addOutPacket(Packet packet)
addOutPacket in class AbstractMessageReceiverpublic XMPPImplIfc addPlugin(String plug_id, String conc) throws ClassNotFoundException, InstantiationException, IllegalAccessException
public boolean containsJid(tigase.xmpp.BareJID jid)
OnlineJidsReportercontainsJid in interface OnlineJidsReporterjid - a user's JID for whom we query information.public boolean containsJidLocally(tigase.xmpp.BareJID jid)
OnlineJidsReportercontainsJidLocally in interface OnlineJidsReporterjid - a user's JID for whom we query informationpublic boolean containsJidLocally(tigase.xmpp.JID jid)
OnlineJidsReportercontainsJidLocally in interface OnlineJidsReporterjid - a user's JID for whom we query informationpublic void handleLocalPacket(Packet packet, XMPPResourceConnection conn)
public void handleLogin(tigase.xmpp.BareJID userId,
XMPPResourceConnection conn)
handleLogin in interface SessionManagerHandlerpublic void handleLogout(tigase.xmpp.BareJID userId,
XMPPResourceConnection conn)
handleLogout in interface SessionManagerHandlerpublic void handlePresenceSet(XMPPResourceConnection conn)
handlePresenceSet in interface SessionManagerHandlerpublic void handleResourceBind(XMPPResourceConnection conn)
handleResourceBind in interface SessionManagerHandlerpublic boolean handlesLocalDomains()
VHostListenerhandlesLocalDomains in interface VHostListenerhandlesLocalDomains in class BasicComponentpublic void initBindings(Bindings binds)
BasicComponentinitBindings in class BasicComponentbinds - A mapping of key/value pairs, all of whose keys are Strings.public int processingInThreads()
AbstractMessageReceiverprocessingInThreads in class AbstractMessageReceiverpublic int processingOutThreads()
AbstractMessageReceiverprocessingOutThreads in class AbstractMessageReceiverpublic 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 AbstractMessageReceiverpacket - is an instance of the Packet class passed for
processing.public void removePlugin(String plug_id)
public boolean skipPrivacy()
public void stop()
AbstractMessageReceiverstop in class AbstractMessageReceiverpublic tigase.xmpp.JID[] getConnectionIdsForJid(tigase.xmpp.BareJID jid)
OnlineJidsReportergetConnectionIdsForJid in interface OnlineJidsReporterjid - id of the user for which we want to retrieve the list.JID containing all Connection IDs (CIDs) for
the given user.public 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 AbstractMessageReceiverparams - 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 BasicComponentStringpublic String getDiscoDescription()
BasicComponentgetDiscoDescription in class BasicComponentStringpublic List<tigase.xml.Element> getDiscoFeatures(tigase.xmpp.JID from)
XMPPServicegetDiscoFeatures in interface XMPPServicegetDiscoFeatures in class BasicComponentfrom - a request sender address. Some service disco elements are meant
to be available only to system administrarors. The component is responsible to
check whether the sender is the component administrator and return results
appropriate.public tigase.xml.Element getDiscoInfo(String node, tigase.xmpp.JID jid, tigase.xmpp.JID from)
XMPPServicegetDiscoInfo in interface XMPPServicegetDiscoInfo in class BasicComponentnode - is service discovery node for which the request is made. Is
normally null for the component top level request.jid - is the jid to which the request has been made.from - is the request sender address. Some service discovery information
is only meant for administrators.public XMPPResourceConnection getResourceConnection(tigase.xmpp.JID jid)
public 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 AbstractMessageReceiverlist - is a StatistcsList
where all statistics are stored.public boolean hasCompleteJidsInfo()
OnlineJidsReporterhasCompleteJidsInfo in interface OnlineJidsReporterpublic boolean isLocalDomain(String domain, boolean includeComponents)
isLocalDomain in interface SessionManagerHandlerpublic void setName(String name)
ServerComponentsetName in interface ServerComponentsetName in class AbstractMessageReceiverpublic void setProperties(Map<String,Object> props) throws ConfigurationException
ConfigurablesetProperties in interface ConfigurablesetProperties in class AbstractMessageReceiverprops - Map with the configurationConfigurationException - - if setting configuration will
fail which will make it unable
to workprotected void addOutPackets(Packet packet, XMPPResourceConnection conn, Queue<Packet> results)
protected boolean addTrusted(tigase.xmpp.JID jid)
protected void closeConnection(XMPPResourceConnection connection, tigase.xmpp.JID connectionId, String userId, boolean closeOnly)
protected void closeSession(XMPPResourceConnection conn, boolean closeOnly)
protected XMPPResourceConnection createUserSession(tigase.xmpp.JID conn_id, String domain) throws tigase.util.TigaseStringprepException
tigase.util.TigaseStringprepExceptionprotected boolean delTrusted(tigase.xmpp.JID jid)
protected boolean fastAddOutPacket(Packet packet)
protected XMPPResourceConnection loginUserSession(tigase.xmpp.JID conn_id, String domain, tigase.xmpp.BareJID user_id, String resource, String xmpp_sessionId, boolean tmpSession)
protected boolean processAdminsOrDomains(Packet packet)
protected boolean processCommand(Packet pc)
protected void processPacket(Packet packet, XMPPResourceConnection conn)
protected void processPresenceUpdate(XMPPSession session, tigase.xml.Element packet)
protected void registerNewSession(tigase.xmpp.BareJID userId,
XMPPResourceConnection conn)
protected void sendToAdmins(Packet packet)
protected Integer getMaxQueueSize(int def)
AbstractMessageReceivergetMaxQueueSize in class AbstractMessageReceiverIntegerprotected XMPPSession getSession(tigase.xmpp.BareJID jid)
protected XMPPResourceConnection getXMPPResourceConnection(tigase.xmpp.JID connId)
protected XMPPResourceConnection getXMPPResourceConnection(Packet p)
protected boolean isBrokenPacket(Packet p)
protected boolean isTrusted(tigase.xmpp.JID jid)
protected boolean isTrusted(String jid)
public void everyMinute()
AbstractMessageReceivereveryMinute in class AbstractMessageReceiverpublic void handleDomainChange(String domain, XMPPResourceConnection conn)
handleDomainChange in interface SessionManagerHandlerCopyright © 2015 "Tigase, Inc.". All rights reserved.