public class StanzaReceiver extends AbstractMessageReceiver implements Configurable, XMPPService, StanzaReceiverIfc
StanzaSender class and offers just an
opposite functionality. It can receive XMPP packets to do something with
them. And what to do it depends on the destination address. Destination
address points to certain receiver task and this is up to task to decide what
to do with the stanza. Task address is just a usual Jabber ID:
task-short-name@srec.tigase.org.
Like public chat rooms in MUC tasks can be preconfigured in
the StanzaReceiver configuration or can be created on demand
using ad-hoc commands and service-discovery. User
can subscribe to some tasks and can add them to the roster just like a normal
contacts. This allows to use the functionality from all existing clients
without implementing any special protocols or extensions.
Possible tasks are:
ad-hoc
commands should present available tasks types which can be created. User can
select a task to create. There may be some restrictions on tasks creation
like certain types can be created only by server administrator or some tasks
types can be created only once on single server and so on.subscribe presence is sent to these users and they
can accept the subscription or not.chat, headline or normal.all, subscribed,
owner, list| Modifier and Type | Field and Description |
|---|---|
static String |
MY_DOMAIN_NAME_PROP_KEY
Field description
|
static String |
MY_DOMAIN_NAME_PROP_VAL
Field description
|
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, SECONDALL_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_ACKCMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS| Constructor and Description |
|---|
StanzaReceiver()
Constructs ...
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
addOutPacket(Packet packet) |
protected void |
addTaskInstance(ReceiverTaskIfc task)
Describe
addTaskInstance method here. |
protected void |
addTaskInstance(String task_type,
String task_name,
Map<String,Object> task_params) |
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. |
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.
|
List<tigase.xml.Element> |
getDiscoItems(String node,
tigase.xmpp.JID jid,
tigase.xmpp.JID from)
Returns service discovery items for the component.
|
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
ReceiverTaskIfc |
getTask(String jidOrName)
Method description
|
protected Map<String,ReceiverTaskIfc> |
getTaskInstances() |
protected Map<String,TaskType> |
getTaskTypes() |
boolean |
isAdmin(tigase.xmpp.JID jid)
Method description
|
protected boolean |
isAllowedCreate(tigase.xmpp.JID jid,
String task_type) |
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
protected void |
removeTaskInstance(ReceiverTaskIfc task) |
protected void |
removeTaskSubscribers(ReceiverTaskIfc task,
tigase.xmpp.JID... subscr) |
protected void |
saveTaskToRepository(ReceiverTaskIfc task) |
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for the object.
|
addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everyMinute, everySecond, getMaxQueueSize, getRegexRoutings, hashCodeForPacket, isInRegexRoutings, newPacketId, processingInThreads, processingOutThreads, processingThreads, processOutPacket, processPacket, release, removeRegexRouting, schedulerThreads, setMaxQueueSize, setName, setParent, start, stopaddComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initBindings, initializationCompleted, 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, release, setNamegetDefHostName, getNamegetDefHostNamepublic static final String MY_DOMAIN_NAME_PROP_KEY
public static final String MY_DOMAIN_NAME_PROP_VAL
public boolean addOutPacket(Packet packet)
addOutPacket in interface StanzaReceiverIfcaddOutPacket in class AbstractMessageReceiverpublic 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 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 List<tigase.xml.Element> getDiscoItems(String node, tigase.xmpp.JID jid, tigase.xmpp.JID from)
XMPPServicegetDiscoItems in interface XMPPServicegetDiscoItems in class BasicComponentnode - 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.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 ReceiverTaskIfc getTask(String jidOrName)
jidOrName - public boolean isAdmin(tigase.xmpp.JID jid)
BasicComponentisAdmin in class BasicComponentbooleanpublic 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 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 addTaskInstance(String task_type, String task_name, Map<String,Object> task_params) throws tigase.util.TigaseStringprepException
tigase.util.TigaseStringprepExceptionprotected void addTaskInstance(ReceiverTaskIfc task)
addTaskInstance method here.task - a ReceiverTaskIfc valueprotected Map<String,ReceiverTaskIfc> getTaskInstances()
protected boolean isAllowedCreate(tigase.xmpp.JID jid,
String task_type)
protected void removeTaskInstance(ReceiverTaskIfc task)
protected void removeTaskSubscribers(ReceiverTaskIfc task, tigase.xmpp.JID... subscr)
protected void saveTaskToRepository(ReceiverTaskIfc task) throws TigaseDBException
TigaseDBExceptionCopyright © 2016 "Tigase, Inc.". All rights reserved.