Package tigase.server.xmppsession
Class SessionManager
- java.lang.Object
-
- tigase.server.BasicComponent
-
- tigase.server.AbstractMessageReceiver
-
- tigase.server.xmppsession.SessionManager
-
- All Implemented Interfaces:
ClusteredComponentIfc
,Configurable
,XMPPService
,ConfigurationChangedAware
,Initializable
,RegistrarBean
,MessageReceiver
,PacketWriterWithTimeout
,ServerComponent
,SessionManagerHandler
,StatisticsContainer
,StatisticsContainerIfc
,OnlineJidsReporter
,VHostListener
- Direct Known Subclasses:
SessionManagerClustered
@Bean(name="sess-man", parent=Kernel.class, active=true, exportable=true) @ConfigType({DefaultMode,SessionManagerMode}) @ClusterModeRequired(active=false) public class SessionManager extends AbstractMessageReceiver implements Configurable, SessionManagerHandler, OnlineJidsReporter, RegistrarBean
Class SessionManager
Created: Tue Nov 22 07:07:11 2005- Author:
- Artur Hefczyc
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SessionManager.DefaultHandlerProc
static interface
SessionManager.MessageArchive
static interface
SessionManager.ProcessorResultWriter
static class
SessionManager.SessionCloseProc
static class
SessionManager.SessionOpenProc
static class
SessionManager.SMPacketWriter
-
Nested classes/interfaces inherited from class tigase.server.BasicComponent
BasicComponent.ServerInfoVHostItemExtension
-
Nested classes/interfaces inherited from interface tigase.server.PacketWriterWithTimeout
PacketWriterWithTimeout.Handler
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
ADMIN_COMMAND_NODE
protected java.util.concurrent.ConcurrentHashMap<JID,XMPPResourceConnection>
connectionsByFrom
A Map with connectionID as a key and an object with all the user connection data as a valueprotected SessionManager.MessageArchive
messageArchive
protected java.util.concurrent.ConcurrentHashMap<BareJID,XMPPSession>
sessionsByNodeId
A Map with bare user JID as a key and a user session object as a value.-
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, maxQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, PACKET_DELIVERY_RETRY_COUNT_PROP_KEY, SCHEDULER_THREADS_PROP_KEY, SECOND
-
Fields inherited from class tigase.server.BasicComponent
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager
-
Fields inherited from interface tigase.conf.Configurable
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
-
Fields inherited from interface tigase.server.xmppsession.SessionManagerHandler
COMMIT_HANDLER_KEY
-
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
-
-
Constructor Summary
Constructors Constructor Description SessionManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
addOutPacket(Packet packet)
protected void
addOutPackets(Packet packet, XMPPResourceConnection conn, java.util.Queue<Packet> results)
XMPPImplIfc
addPlugin(XMPPImplIfc proc)
protected boolean
addTrusted(JID jid)
protected void
checkSingleUserConnectionsLimit(XMPPResourceConnection conn)
protected void
closeConnection(XMPPResourceConnection connection, JID connectionId, java.lang.String userId, boolean closeOnly)
protected void
closeSession(XMPPResourceConnection conn, boolean closeOnly)
boolean
containsJid(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(BareJID jid)
The method checks whether the given JID is known to local cluster node as connected user.boolean
containsJidLocally(JID jid)
The method checks whether the given JID is known to local cluster node as connected user.protected XMPPResourceConnection
createUserSession(JID conn_id, java.lang.String domain)
protected boolean
delTrusted(JID jid)
void
everyMinute()
Utility method executed precisely every minute.void
everySecond()
Utility method executed precisely every second.protected boolean
fastAddOutPacket(Packet packet)
JID[]
getConnectionIdsForJid(BareJID jid)
Retrieve all connection IDs (CIDs) for the given user.java.lang.String
getDiscoCategoryType()
Method returns component category type used for service discovery responses.java.lang.String
getDiscoDescription()
Method returns description used for service discovery responses.java.util.List<Element>
getDiscoFeatures(JID from)
Method returns list of features provided by this component for provided JID.Element
getDiscoInfo(java.lang.String node, JID jid, JID from)
Returns service discovery info for the component.java.util.List<Element>
getDiscoItems(java.lang.String node, JID jid, JID from)
Returns service discovery items for the component.protected java.lang.Integer
getMaxQueueSize(int def)
int
getOpenUsersConnectionsAmount()
java.util.Map<java.lang.String,XMPPPacketFilterIfc>
getOutFilters()
java.util.Map<java.lang.String,XMPPPostprocessorIfc>
getPostProcessors()
java.util.Map<java.lang.String,XMPPPreprocessorIfc>
getPreProcessors()
java.util.Map<java.lang.String,XMPPProcessorIfc>
getProcessors()
XMPPResourceConnection
getResourceConnection(JID jid)
protected XMPPSession
getSession(BareJID jid)
java.lang.Integer
getSingleUserConnectionsLimit()
void
getStatistics(StatisticsList list)
Method returns component statistics.protected XMPPResourceConnection
getXMPPResourceConnection(Packet p)
protected XMPPResourceConnection
getXMPPResourceConnection(JID connId)
void
handleDomainChange(java.lang.String domain, XMPPResourceConnection conn)
void
handleLocalPacket(Packet packet, XMPPResourceConnection conn)
void
handleLogin(BareJID userId, XMPPResourceConnection conn)
void
handleLogout(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.int
hashCodeForPacket(Packet packet)
This method decides how incoming packets are distributed among processing threads.void
initBindings(javax.script.Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts loaded by the servervoid
initialize()
Method will be called, when bean will be created, configured and ready to use.protected boolean
isBrokenPacket(Packet p)
boolean
isLocalDomain(java.lang.String domain, boolean includeComponents)
protected XMPPResourceConnection
loginUserSession(JID conn_id, java.lang.String domain, BareJID user_id, java.lang.String resource, java.lang.String xmpp_sessionId, boolean tmpSession)
protected void
nodeShutdown(ShutdownEvent event)
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 mainPacket
processing method.protected void
processPacket(Packet packet, XMPPResourceConnection conn)
protected void
processPresenceUpdate(XMPPSession session, Element packet)
void
register(Kernel kernel)
Method called when bean is being registered allowing developer to programatically register other beans.protected void
registerNewSession(BareJID userId, XMPPResourceConnection conn)
void
removePlugin(java.lang.String plug_id)
void
removePlugin(XMPPImplIfc proc)
int
schedulerThreads()
Method returns default number of threads used by SchedulerExecutorServiceprotected void
sendToAdmins(Packet packet)
void
setAllPlugins(java.util.concurrent.ConcurrentSkipListSet<XMPPImplIfc> allPlugins)
void
setName(java.lang.String name)
Method used to assign component name (localpart of the component)void
setSchedulerThreads_size(int size)
void
setSmThreadsPool(java.lang.String val)
boolean
skipPrivacy()
void
start()
void
stop()
void
unregister(Kernel kernel)
Method called while bean is being unregistered.protected void
xmppStreamMoved(XMPPResourceConnection conn, JID oldConnId, JID newConnId)
-
Methods inherited from class tigase.server.AbstractMessageReceiver
addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, beanConfigurationChanged, clearRegexRoutings, everyHour, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processOutPacket, processPacket, release, removeRegexRouting, setCompId, setIncoming_filters, setOutgoing_filters, setParent, updateFiltersName
-
Methods inherited from class tigase.server.BasicComponent
addComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, getVHostItem, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, reloadScripts, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity
-
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
getDefaults, setProperties
-
Methods inherited from interface tigase.server.MessageReceiver
getDefHostName
-
Methods inherited from interface tigase.server.ServerComponent
getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release
-
Methods inherited from interface tigase.server.xmppsession.SessionManagerHandler
getComponentId
-
Methods inherited from interface tigase.stats.StatisticsContainerIfc
getName
-
-
-
-
Field Detail
-
ADMIN_COMMAND_NODE
protected static final java.lang.String ADMIN_COMMAND_NODE
- See Also:
- Constant Field Values
-
connectionsByFrom
protected java.util.concurrent.ConcurrentHashMap<JID,XMPPResourceConnection> connectionsByFrom
A Map with connectionID as a key and an object with all the user connection data as a value
-
sessionsByNodeId
protected java.util.concurrent.ConcurrentHashMap<BareJID,XMPPSession> sessionsByNodeId
A Map with bare user JID as a key and a user session object as a value.
-
messageArchive
@Inject(nullAllowed=true) protected SessionManager.MessageArchive messageArchive
-
-
Method Detail
-
addOutPacket
public boolean addOutPacket(Packet packet)
- Overrides:
addOutPacket
in classAbstractMessageReceiver
-
addPlugin
public XMPPImplIfc addPlugin(XMPPImplIfc proc) throws java.lang.ClassNotFoundException, java.lang.InstantiationException, java.lang.IllegalAccessException, TigaseDBException
- Throws:
java.lang.ClassNotFoundException
java.lang.InstantiationException
java.lang.IllegalAccessException
TigaseDBException
-
containsJid
public boolean containsJid(BareJID jid)
Description copied from interface:OnlineJidsReporter
The method checks whether the given JID is known to the installation, either user connected to local machine or any of the cluster nodes. False result does not mean the user is not connected. It means the method does not know anything about the JID. Some clustering strategies may not cache online users information.- Specified by:
containsJid
in interfaceOnlineJidsReporter
- Parameters:
jid
- a user's JID for whom we query information.- Returns:
- true if the user is known as online to the installation, false if the method does not know.
-
containsJidLocally
public boolean containsJidLocally(BareJID jid)
Description copied from interface:OnlineJidsReporter
The method checks whether the given JID is known to local cluster node as connected user. False result means that given JID is not connected to local cluster node but it may be connected to other cluster node. Result of this method should be independent of used clustering strategy.- Specified by:
containsJidLocally
in interfaceOnlineJidsReporter
- Parameters:
jid
- a user's JID for whom we query information- Returns:
- true if user is known as connected to local cluster node, false if it is not connected to local node
-
containsJidLocally
public boolean containsJidLocally(JID jid)
Description copied from interface:OnlineJidsReporter
The method checks whether the given JID is known to local cluster node as connected user. False result means that given JID is not connected to local cluster node but it may be connected to other cluster node. Result of this method should be independent of used clustering strategy.- Specified by:
containsJidLocally
in interfaceOnlineJidsReporter
- Parameters:
jid
- a user's JID for whom we query information- Returns:
- true if user is known as connected to local cluster node, false if it is not connected to local node
-
handleLocalPacket
public void handleLocalPacket(Packet packet, XMPPResourceConnection conn)
-
handleLogin
public void handleLogin(BareJID userId, XMPPResourceConnection conn)
- Specified by:
handleLogin
in interfaceSessionManagerHandler
-
handleLogout
public void handleLogout(BareJID userId, XMPPResourceConnection conn)
- Specified by:
handleLogout
in interfaceSessionManagerHandler
-
handlePresenceSet
public void handlePresenceSet(XMPPResourceConnection conn)
- Specified by:
handlePresenceSet
in interfaceSessionManagerHandler
-
handleResourceBind
public void handleResourceBind(XMPPResourceConnection conn)
- Specified by:
handleResourceBind
in interfaceSessionManagerHandler
-
checkSingleUserConnectionsLimit
protected void checkSingleUserConnectionsLimit(XMPPResourceConnection conn)
-
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 interfaceVHostListener
- Overrides:
handlesLocalDomains
in classBasicComponent
- Returns:
- 'true' if the component accepts packets to local domains 'false' otherwise.
-
hashCodeForPacket
public int hashCodeForPacket(Packet packet)
Description copied from class:AbstractMessageReceiver
This method decides how incoming packets are distributed among processing threads. Different components needs different distribution to efficient use all threads and avoid packets re-ordering.
If there are N processing threads, packets are distributed among threads using following code:
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....- Overrides:
hashCodeForPacket
in classAbstractMessageReceiver
- Parameters:
packet
- is aPacket
which needs to be processed by some thread.- Returns:
- a hash code generated for the input thread.
-
initBindings
public void initBindings(javax.script.Bindings binds)
Description copied from class:BasicComponent
Initialize a mapping of key/value pairs which can be used in scripts loaded by the server- Overrides:
initBindings
in classBasicComponent
- Parameters:
binds
- A mapping of key/value pairs, all of whose keys are Strings.
-
processingInThreads
public int processingInThreads()
Description copied from class:AbstractMessageReceiver
Concurrency control method. Returns preferable number of threads set for this component.- Overrides:
processingInThreads
in classAbstractMessageReceiver
- Returns:
- preferable number of threads set for this component.
-
processingOutThreads
public int processingOutThreads()
Description copied from class:AbstractMessageReceiver
Concurrency control method. Returns preferable number of threads set for this component.- Overrides:
processingOutThreads
in classAbstractMessageReceiver
- Returns:
- preferable number of threads set for this component.
-
processPacket
public void processPacket(Packet packet)
Description copied from class:AbstractMessageReceiver
This is the mainPacket
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.
Please note, thePacket
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 thePacket
instance as unmodifiable object.
Processing in this method is asynchronous, therefore there is no result value. If there are some 'result' packets generated during processing, they should be passed back usingaddOutPacket(Packet)
method.- Specified by:
processPacket
in classAbstractMessageReceiver
- Parameters:
packet
- is an instance of thePacket
class passed for processing.
-
removePlugin
public void removePlugin(XMPPImplIfc proc)
-
removePlugin
public void removePlugin(java.lang.String plug_id)
-
skipPrivacy
public boolean skipPrivacy()
-
start
public void start()
- Specified by:
start
in interfaceMessageReceiver
- Overrides:
start
in classAbstractMessageReceiver
-
stop
public void stop()
- Overrides:
stop
in classAbstractMessageReceiver
-
getConnectionIdsForJid
public JID[] getConnectionIdsForJid(BareJID jid)
Description copied from interface:OnlineJidsReporter
Retrieve all connection IDs (CIDs) for the given user.- Specified by:
getConnectionIdsForJid
in interfaceOnlineJidsReporter
- Parameters:
jid
- id of the user for which we want to retrieve the list.- Returns:
- an array of
JID
containing all Connection IDs (CIDs) for the given user.
-
getDiscoCategoryType
public java.lang.String getDiscoCategoryType()
Description copied from class:BasicComponent
Method returns component category type used for service discovery responses.- Overrides:
getDiscoCategoryType
in classBasicComponent
- Returns:
- category type of a component
-
getDiscoDescription
public java.lang.String getDiscoDescription()
Description copied from class:BasicComponent
Method returns description used for service discovery responses.- Overrides:
getDiscoDescription
in classBasicComponent
- Returns:
- description of a component
-
getDiscoFeatures
public java.util.List<Element> getDiscoFeatures(JID from)
Description copied from class:BasicComponent
Method returns list of features provided by this component for provided JID.- Specified by:
getDiscoFeatures
in interfaceXMPPService
- Overrides:
getDiscoFeatures
in classBasicComponent
- Parameters:
from
- 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.- Returns:
- list of features
-
getDiscoInfo
public Element getDiscoInfo(java.lang.String node, JID jid, JID from)
Description copied from interface:XMPPService
Returns service discovery info for the component. If the jid is null then this is info for the top level request. SM may return disco info on the top level. Other components should not.- Specified by:
getDiscoInfo
in interfaceXMPPService
- Overrides:
getDiscoInfo
in classBasicComponent
- Parameters:
node
- 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.- Returns:
- returns an XML Element with service discovery data.
-
getDiscoItems
public java.util.List<Element> getDiscoItems(java.lang.String node, JID jid, JID from)
Description copied from interface:XMPPService
Returns service discovery items for the component. If the JID is null then this is request for the top level request. SM may return disco items on the top level, other components should just return it's top level service discovery item for null node.- Specified by:
getDiscoItems
in interfaceXMPPService
- Overrides:
getDiscoItems
in classBasicComponent
- Parameters:
node
- is a service discovery node for which the request has been made.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.- Returns:
- a list of service discovery items for this component or the component itself disco item for the top level request.
-
getResourceConnection
public XMPPResourceConnection getResourceConnection(JID jid)
-
getOpenUsersConnectionsAmount
public int getOpenUsersConnectionsAmount()
-
getSingleUserConnectionsLimit
public java.lang.Integer getSingleUserConnectionsLimit()
-
getStatistics
public void getStatistics(StatisticsList list)
Description copied from class:AbstractMessageReceiver
Method returns component statistics. Please note, the method can be called every second by the server monitoring system therefore no extensive or lengthy calculations are allowed. If there are some statistics requiring lengthy operations like database access they must haveLevel.FINEST
assigned and must be put inside the level guard to prevent generating them by the system monitor. The system monitor does not collectFINEST
statistics.
Level guard code looks like the example below:
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.- Specified by:
getStatistics
in interfaceStatisticsContainerIfc
- Overrides:
getStatistics
in classAbstractMessageReceiver
- Parameters:
list
- is aStatistcsList
where all statistics are stored.
-
hasCompleteJidsInfo
public boolean hasCompleteJidsInfo()
Description copied from interface:OnlineJidsReporter
Method checks whether the clustering strategy has a complete JIDs info. That is whether the strategy knows about all users connected to all nodes. Some strategies may choose not to share this information among nodes, hence the methods returns false. Other may synchronize this information and can provide it to further optimize cluster traffic.- Specified by:
hasCompleteJidsInfo
in interfaceOnlineJidsReporter
- Returns:
- a true boolean value if the strategy has a complete information about all users connected to all cluster nodes.
-
isLocalDomain
public boolean isLocalDomain(java.lang.String domain, boolean includeComponents)
- Specified by:
isLocalDomain
in interfaceSessionManagerHandler
-
setName
public void setName(java.lang.String name)
Description copied from interface:ServerComponent
Method used to assign component name (localpart of the component)- Specified by:
setName
in interfaceServerComponent
- Overrides:
setName
in classAbstractMessageReceiver
- Parameters:
name
- to be assigned
-
setAllPlugins
public void setAllPlugins(java.util.concurrent.ConcurrentSkipListSet<XMPPImplIfc> allPlugins)
-
setSmThreadsPool
public void setSmThreadsPool(java.lang.String val)
-
initialize
public void initialize()
Description copied from interface:Initializable
Method will be called, when bean will be created, configured and ready to use.- Specified by:
initialize
in interfaceInitializable
- Overrides:
initialize
in classBasicComponent
-
setSchedulerThreads_size
public void setSchedulerThreads_size(int size)
- Overrides:
setSchedulerThreads_size
in classAbstractMessageReceiver
-
schedulerThreads
public int schedulerThreads()
Description copied from class:AbstractMessageReceiver
Method returns default number of threads used by SchedulerExecutorService- Overrides:
schedulerThreads
in classAbstractMessageReceiver
- Returns:
- a value of
int
-
register
public void register(Kernel kernel)
Description copied from interface:RegistrarBean
Method called when bean is being registered allowing developer to programatically register other beans.- Specified by:
register
in interfaceRegistrarBean
- Parameters:
kernel
- - instance from local scope
-
unregister
public void unregister(Kernel kernel)
Description copied from interface:RegistrarBean
Method called while bean is being unregistered.- Specified by:
unregister
in interfaceRegistrarBean
- Parameters:
kernel
- - instance from local scope
-
getProcessors
public java.util.Map<java.lang.String,XMPPProcessorIfc> getProcessors()
-
getPreProcessors
public java.util.Map<java.lang.String,XMPPPreprocessorIfc> getPreProcessors()
-
getPostProcessors
public java.util.Map<java.lang.String,XMPPPostprocessorIfc> getPostProcessors()
-
getOutFilters
public java.util.Map<java.lang.String,XMPPPacketFilterIfc> getOutFilters()
-
everySecond
public void everySecond()
Description copied from class:AbstractMessageReceiver
Utility method executed precisely every second. A component can overwrite the method to put own code to be executed at the regular intervals of time.
Note, no extensive calculations should happen in this method nor long lasting operations. It is essential that the method processing does not exceed 1 second. The overriding method must call the the super method first and only then run own code.- Overrides:
everySecond
in classAbstractMessageReceiver
-
everyMinute
public void everyMinute()
Description copied from class:AbstractMessageReceiver
Utility method executed precisely every minute. A component can overwrite the method to put own code to be executed at the regular intervals of time.
Note, no extensive calculations should happen in this method nor long lasting operations. It is essential that the method processing does not exceed 1 minute. The overriding method must call the the super method first and only then run own code.- Overrides:
everyMinute
in classAbstractMessageReceiver
-
handleDomainChange
public void handleDomainChange(java.lang.String domain, XMPPResourceConnection conn)
- Specified by:
handleDomainChange
in interfaceSessionManagerHandler
-
addOutPackets
protected void addOutPackets(Packet packet, XMPPResourceConnection conn, java.util.Queue<Packet> results)
-
addTrusted
protected boolean addTrusted(JID jid)
-
closeConnection
protected void closeConnection(XMPPResourceConnection connection, JID connectionId, java.lang.String userId, boolean closeOnly)
-
closeSession
protected void closeSession(XMPPResourceConnection conn, boolean closeOnly)
-
createUserSession
protected XMPPResourceConnection createUserSession(JID conn_id, java.lang.String domain) throws TigaseStringprepException
- Throws:
TigaseStringprepException
-
delTrusted
protected boolean delTrusted(JID jid)
-
fastAddOutPacket
protected boolean fastAddOutPacket(Packet packet)
-
loginUserSession
protected XMPPResourceConnection loginUserSession(JID conn_id, java.lang.String domain, BareJID user_id, java.lang.String resource, java.lang.String xmpp_sessionId, boolean tmpSession)
-
processAdminsOrDomains
protected boolean processAdminsOrDomains(Packet packet)
-
processCommand
protected boolean processCommand(Packet pc)
-
processPacket
protected void processPacket(Packet packet, XMPPResourceConnection conn)
-
processPresenceUpdate
protected void processPresenceUpdate(XMPPSession session, Element packet)
-
registerNewSession
protected void registerNewSession(BareJID userId, XMPPResourceConnection conn)
-
sendToAdmins
protected void sendToAdmins(Packet packet)
-
nodeShutdown
@HandleEvent protected void nodeShutdown(ShutdownEvent event)
-
xmppStreamMoved
protected void xmppStreamMoved(XMPPResourceConnection conn, JID oldConnId, JID newConnId)
-
getMaxQueueSize
protected java.lang.Integer getMaxQueueSize(int def)
- Overrides:
getMaxQueueSize
in classAbstractMessageReceiver
-
getSession
protected XMPPSession getSession(BareJID jid)
-
getXMPPResourceConnection
protected XMPPResourceConnection getXMPPResourceConnection(JID connId)
-
getXMPPResourceConnection
protected XMPPResourceConnection getXMPPResourceConnection(Packet p)
-
isBrokenPacket
protected boolean isBrokenPacket(Packet p)
-
-