IO - public abstract class ConnectionManager<IO extends XMPPIOService<?>> extends AbstractMessageReceiver implements XMPPIOServiceListener<IO>
| Modifier and Type | Class and Description |
|---|---|
static class |
ConnectionManager.LIMIT_ACTION
Describe class
LIMIT_ACTION here. |
protected class |
ConnectionManager.Watchdog
Class looks in all established connections and checks whether any of them
is dead by performing either whitspace or XMPP ping.
|
static class |
ConnectionManager.WATCHDOG_PING_TYPE
Holds possible types of ping to be used in watchdog service for detection
of broken connections
|
| Modifier and Type | Field and Description |
|---|---|
protected long |
connectionDelay
Field description
|
protected boolean |
delayPortListening |
protected int |
elements_number_limit
Protection from the system overload and DOS attack.
|
static String |
ELEMENTS_NUMBER_LIMIT_PROP_KEY
Key name of the system property for configuration protection
from system overload and DOS attack.
|
static int |
ELEMENTS_NUMBER_LIMIT_PROP_VAL
Default value for the system property for configuration protection
from system overload and DOS attack.
|
static String |
HT_TRAFFIC_THROTTLING_PROP_KEY
Field description
|
static String |
HT_TRAFFIC_THROTTLING_PROP_VAL
Field description
|
protected static long |
LAST_MINUTE_BIN_LIMIT_PROP_VAL
Field description
|
protected static long |
LAST_MINUTE_PACKETS_LIMIT_PROP_VAL
Field description
|
protected static String |
MAX_INACTIVITY_TIME
Field description
|
protected static String |
MAX_RECONNECTS_PROP_KEY
Field description
|
protected int |
net_buffer
Field description
|
static String |
NET_BUFFER_HT_PROP_KEY
Field description.
|
protected static int |
NET_BUFFER_HT_PROP_VAL
Field description
|
protected static int |
NET_BUFFER_LIMIT_HT_PROP_VAL
Field description
|
protected static String |
NET_BUFFER_LIMIT_PROP_KEY
Field description
|
protected static int |
NET_BUFFER_LIMIT_ST_PROP_VAL
Field description
|
protected static String |
NET_BUFFER_PROP_KEY
Field description
|
static String |
NET_BUFFER_ST_PROP_KEY
Field description.
|
protected static int |
NET_BUFFER_ST_PROP_VAL
Field description
|
protected static Element |
pingElement |
protected static String |
PORT_CLASS_PROP_KEY
Field description
|
protected static String |
PORT_IFC_PROP_KEY
Field description
|
String[] |
PORT_IFC_PROP_VAL
Field description.
|
protected static String |
PORT_KEY
Field description
|
protected static boolean |
PORT_LISTENING_DELAY_DEF |
protected static String |
PORT_LISTENING_DELAY_KEY |
static String |
PORT_LOCAL_HOST_PROP_KEY
Field description.
|
protected static String |
PORT_REMOTE_HOST_PROP_KEY
Field description
|
protected static String |
PORT_REMOTE_HOST_PROP_VAL
Field description
|
protected static String |
PORT_SOCKET_PROP_KEY
Field description
|
protected static String |
PORT_TYPE_PROP_KEY
Field description
|
protected static String |
PORTS_PROP_KEY
Field description
|
protected XMPPIOProcessor[] |
processors |
protected static String |
PROP_KEY
Field description
|
static String |
ST_TRAFFIC_THROTTLING_PROP_KEY
Field description
|
static String |
ST_TRAFFIC_THROTTLING_PROP_VAL
Field description
|
protected static String |
TLS_PROP_KEY
Field description
|
protected static String |
TLS_REQUIRED_PROP_KEY
Field description
|
protected static boolean |
TLS_REQUIRED_PROP_VAL
Field description
|
protected static String |
TLS_USE_PROP_KEY
Field description
|
protected static boolean |
TLS_USE_PROP_VAL
Field description
|
protected static long |
TOTAL_BIN_LIMIT_PROP_VAL
Field description
|
protected static long |
TOTAL_PACKETS_LIMIT_PROP_VAL
Field description
|
static String |
TRAFFIC_THROTTLING_PROP_KEY
Field description
|
protected static String |
WATCHDOG_DELAY |
protected static String |
WATCHDOG_PING_TYPE_KEY |
protected static String |
WATCHDOG_TIMEOUT |
protected long |
watchdogDelay |
protected ConnectionManager.WATCHDOG_PING_TYPE |
watchdogPingType |
protected long |
watchdogTimeout |
protected static String |
WHITE_CHAR_ACK_PROP_KEY
Field description
|
protected static boolean |
WHITE_CHAR_ACK_PROP_VAL
Field description
|
protected static String |
XMPP_ACK_PROP_KEY
Field description
|
protected static boolean |
XMPP_ACK_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, PACKET_DELIVERY_RETRY_COUNT_PROP_KEY, SCHEDULER_THREADS_PROP_KEY, SECONDadmins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, 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_EVENTBUS_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, 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, 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 |
|---|
ConnectionManager() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addWaitingTask(Map<String,Object> conn)
Method description
|
protected <T> void |
checkHighThroughputProperty(String ht_def_key,
T ht_dev_val,
String st_def_key,
T st_def_val,
String prop_key,
Class<T> prop_val_class,
Map<String,Object> params,
Map<String,Object> props)
Method description
|
boolean |
checkTrafficLimits(IO serv)
Method description
|
protected void |
connectWaitingTasks() |
protected int |
countIOServices()
Returns number of active network connections (IOServices).
|
protected void |
doForAllServices(ServiceChecker<IO> checker)
Perform a given action defined by ServiceChecker for all active IOService
objects (active network connections).
|
void |
everyMinute()
Utility method executed precisely every minute.
|
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. |
protected int[] |
getDefPlainPorts()
Method description
|
protected int[] |
getDefSSLPorts()
Method description
|
protected String |
getDefTrafficThrottling()
Method description
|
protected abstract long |
getMaxInactiveTime()
Method description
|
protected Map<String,Object> |
getParamsForPort(int port)
Method description
|
protected String |
getServiceId(JID jid)
Method description
|
protected String |
getServiceId(Packet packet)
Method description
|
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
protected String |
getUniqueId(IO serv)
Method description
|
protected IO |
getXMPPIOService(Packet p)
Method description
|
IO |
getXMPPIOService(String serviceId)
Method description
|
protected abstract IO |
getXMPPIOServiceInstance()
Method description
|
int |
hashCodeForPacket(Packet packet)
This method decides how incoming packets are distributed among processing
threads.
|
void |
initBindings(Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts
loaded by the server
|
void |
initializationCompleted()
Method is called by
MessageRouter when all the startup components of
the server have been loaded and configured through setProperties(...) call. |
protected boolean |
isHighThroughput()
Method description
|
protected ConnectionManager.Watchdog |
newWatchdog() |
void |
packetsReady(IO serv) |
int |
processingInThreads()
Concurrency control method.
|
int |
processingOutThreads()
Concurrency control method.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
abstract Queue<Packet> |
processSocketData(IO serv)
Method description
|
abstract boolean |
processUndeliveredPacket(Packet packet,
Long stamp,
String errorMessage)
Processes undelivered packets
|
abstract void |
reconnectionFailed(Map<String,Object> port_props)
Method description
|
void |
release()
Method description
|
void |
serviceStarted(IO service)
Method description
|
boolean |
serviceStopped(IO service) |
void |
setName(String name)
Method description
|
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for the object.
|
protected void |
setupWatchdogThread() |
protected void |
socketAccepted(IO serv,
SocketType type) |
void |
stop()
Method description
|
void |
updateConnectionDetails(Map<String,Object> port_props)
Method description
|
void |
writePacketsToSocket(IO serv,
Queue<Packet> packets)
Method description
|
boolean |
writePacketToSocket(IO ios,
Packet p)
Method description
|
protected boolean |
writePacketToSocket(Packet p) |
protected boolean |
writePacketToSocket(Packet p,
String serviceId)
Method description
|
protected void |
writeRawData(IO ios,
String data)
Method description
|
String |
xmppStreamError(IO serv,
List<Element> err_el) |
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, isInRegexRoutings, newPacketId, processingThreads, processOutPacket, processPacket, removeRegexRouting, schedulerThreads, setMaxQueueSize, setParent, startaddComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setClusterController, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntityclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitxmppStreamClosed, xmppStreamOpenedtlsHandshakeCompletedgetNamegetDefHostNamegetComponentId, getComponentInfo, getName, isInitializationCompletepublic static final String HT_TRAFFIC_THROTTLING_PROP_KEY
public static final String HT_TRAFFIC_THROTTLING_PROP_VAL
public static final String NET_BUFFER_HT_PROP_KEY
public static final String NET_BUFFER_ST_PROP_KEY
public static final String PORT_LOCAL_HOST_PROP_KEY
public static final String ST_TRAFFIC_THROTTLING_PROP_KEY
public static final String ST_TRAFFIC_THROTTLING_PROP_VAL
public static final String TRAFFIC_THROTTLING_PROP_KEY
protected static final long LAST_MINUTE_BIN_LIMIT_PROP_VAL
protected static final long LAST_MINUTE_PACKETS_LIMIT_PROP_VAL
protected static final String MAX_INACTIVITY_TIME
protected static final String MAX_RECONNECTS_PROP_KEY
protected static final int NET_BUFFER_HT_PROP_VAL
protected static final String NET_BUFFER_PROP_KEY
protected static final int NET_BUFFER_ST_PROP_VAL
protected static final int NET_BUFFER_LIMIT_HT_PROP_VAL
protected static final String NET_BUFFER_LIMIT_PROP_KEY
protected static final int NET_BUFFER_LIMIT_ST_PROP_VAL
public static final String ELEMENTS_NUMBER_LIMIT_PROP_KEY
public static int ELEMENTS_NUMBER_LIMIT_PROP_VAL
protected static final String PORT_CLASS_PROP_KEY
protected static final String PORT_IFC_PROP_KEY
protected static final String PORT_LISTENING_DELAY_KEY
protected static final boolean PORT_LISTENING_DELAY_DEF
protected static final String PORT_KEY
protected static final String PORT_REMOTE_HOST_PROP_KEY
protected static final String PORT_REMOTE_HOST_PROP_VAL
protected static final String PORT_SOCKET_PROP_KEY
protected static final String PORT_TYPE_PROP_KEY
protected static final String PROP_KEY
protected static final long TOTAL_BIN_LIMIT_PROP_VAL
protected static final long TOTAL_PACKETS_LIMIT_PROP_VAL
protected static final String WHITE_CHAR_ACK_PROP_KEY
protected static final String XMPP_ACK_PROP_KEY
protected static final boolean XMPP_ACK_PROP_VAL
protected static final boolean WHITE_CHAR_ACK_PROP_VAL
protected static final String PORTS_PROP_KEY
protected static final boolean TLS_USE_PROP_VAL
protected static final String TLS_PROP_KEY
protected static final String TLS_USE_PROP_KEY
protected static final boolean TLS_REQUIRED_PROP_VAL
protected static final String TLS_REQUIRED_PROP_KEY
protected static final String WATCHDOG_DELAY
protected static final String WATCHDOG_TIMEOUT
protected static final String WATCHDOG_PING_TYPE_KEY
protected static final Element pingElement
public String[] PORT_IFC_PROP_VAL
protected long watchdogDelay
protected long watchdogTimeout
protected int elements_number_limit
protected XMPPIOProcessor[] processors
protected int net_buffer
protected long connectionDelay
protected ConnectionManager.WATCHDOG_PING_TYPE watchdogPingType
protected boolean delayPortListening
public boolean checkTrafficLimits(IO serv)
serv - booleanpublic void everyMinute()
AbstractMessageReceivereveryMinute in class AbstractMessageReceiverpublic int hashCodeForPacket(Packet packet)
AbstractMessageReceiverint 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....
hashCodeForPacket in class AbstractMessageReceiverpacket - is a Packet which needs to be processed by some
thread.public void initBindings(Bindings binds)
BasicComponentinitBindings in class BasicComponentbinds - A mapping of key/value pairs, all of whose keys are Strings.public void initializationCompleted()
ServerComponentMessageRouter when all the startup components of
the server have been loaded and configured through setProperties(...) call.
At this point the whole server should be loaded and functional, except
initializations taking place in this routine.initializationCompleted in interface ServerComponentinitializationCompleted in class BasicComponentprotected void connectWaitingTasks()
public void packetsReady(IO serv) throws IOException
packetsReady in interface IOServiceListener<IO extends XMPPIOService<?>>IOExceptionpublic 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 abstract Queue<Packet> processSocketData(IO serv)
serv - Queue<Packet>public abstract boolean processUndeliveredPacket(Packet packet, Long stamp, String errorMessage)
packet - stamp - - timestamp when packet was received to be written to XMPPIOServiceerrorMessage - public abstract void reconnectionFailed(Map<String,Object> port_props)
port_props - public void release()
ServerComponentrelease in interface ServerComponentrelease in class AbstractMessageReceiver@TODO(note="Do something if service with the same unique ID is already started, possibly kill the old one...") public void serviceStarted(IO service)
service - public boolean serviceStopped(IO service)
serviceStopped in interface IOServiceListener<IO extends XMPPIOService<?>>public void stop()
AbstractMessageReceiverstop in class AbstractMessageReceiverpublic void updateConnectionDetails(Map<String,Object> port_props)
port_props - public void writePacketsToSocket(IO serv, Queue<Packet> packets)
serv - packets - public boolean writePacketToSocket(IO ios, Packet p)
ios - p - booleanpublic String xmppStreamError(IO serv, List<Element> err_el)
xmppStreamError in interface XMPPIOServiceListener<IO extends XMPPIOService<?>>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 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 StatisticsContainerIfcgetStatistics in class AbstractMessageReceiverlist - is a StatistcsList
where all statistics are stored.public IO getXMPPIOService(String serviceId)
serviceId - IOpublic void setName(String name)
ServerComponentsetName in interface ServerComponentsetName in class AbstractMessageReceiverprotected void setupWatchdogThread()
protected ConnectionManager.Watchdog newWatchdog()
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 addWaitingTask(Map<String,Object> conn)
conn - protected <T> void checkHighThroughputProperty(String ht_def_key, T ht_dev_val, String st_def_key, T st_def_val, String prop_key, Class<T> prop_val_class, Map<String,Object> params, Map<String,Object> props)
T - ht_def_key - ht_dev_val - st_def_key - st_def_val - prop_key - prop_val_class - params - props - protected int countIOServices()
protected void doForAllServices(ServiceChecker<IO> checker)
checker - is a ServiceChecker instance defining an action to
perform for all IOService objects.protected boolean writePacketToSocket(Packet p)
p - booleanprotected boolean writePacketToSocket(Packet p, String serviceId)
p - serviceId - booleanprotected void writeRawData(IO ios, String data)
ios - data - protected int[] getDefPlainPorts()
int[]protected int[] getDefSSLPorts()
int[]protected String getDefTrafficThrottling()
Stringprotected abstract long getMaxInactiveTime()
longprotected Map<String,Object> getParamsForPort(int port)
port - Map<String,Object>protected String getServiceId(Packet packet)
packet - Stringprotected String getServiceId(JID jid)
jid - Stringprotected String getUniqueId(IO serv)
serv - Stringprotected IO getXMPPIOService(Packet p)
p - IOprotected abstract IO getXMPPIOServiceInstance()
IOprotected boolean isHighThroughput()
booleanprotected void socketAccepted(IO serv, SocketType type)
Copyright © 2017 "Tigase, Inc.". All rights reserved.