public abstract class AbstractXMPPConnection extends java.lang.Object implements XMPPConnection
Modifier and Type | Class and Description |
---|---|
protected static class |
AbstractXMPPConnection.InterceptorWrapper
A wrapper class to associate a stanza(/packet) filter with an interceptor.
|
protected static class |
AbstractXMPPConnection.ListenerWrapper
A wrapper class to associate a stanza(/packet) filter with a listener.
|
XMPPConnection.FromMode
Modifier and Type | Field and Description |
---|---|
protected boolean |
authenticated
Flag that indicates if the user is currently authenticated with the server.
|
protected XMPPInputOutputStream |
compressionHandler |
protected ConnectionConfiguration |
config
Holds the initial configuration used while creating the connection.
|
protected boolean |
connected |
protected int |
connectionCounterValue
A number to uniquely identify connections that are created.
|
protected java.util.Set<ConnectionListener> |
connectionListeners
A collection of ConnectionListeners which listen for connection closing
and reconnection events.
|
protected java.util.concurrent.locks.Lock |
connectionLock |
protected SmackDebugger |
debugger
The SmackDebugger allows to log and debug XML traffic.
|
protected java.lang.String |
host
The used host to establish the connection to
|
protected java.util.List<HostAddress> |
hostAddresses |
protected SynchronizationPoint<java.lang.Exception> |
lastFeaturesReceived
Set to success if the last features stanza from the server has been parsed.
|
protected int |
port
The used port to establish the connection to
|
protected java.io.Reader |
reader
The Reader which is used for the debugger.
|
protected SASLAuthentication |
saslAuthentication
The SASLAuthentication manager that is responsible for authenticating with the server.
|
protected SynchronizationPoint<XMPPException> |
saslFeatureReceived
Set to success if the SASL feature has been received.
|
protected java.util.Map<java.lang.String,ExtensionElement> |
streamFeatures |
protected java.lang.String |
streamId
The stream ID, see RFC 6120 ยง 4.7.3
|
protected SynchronizationPoint<SmackException> |
tlsHandled |
protected EntityFullJid |
user
The full JID of the authenticated user, as returned by the resource binding response of the server.
|
protected boolean |
wasAuthenticated
Flag that indicates if the user was authenticated with the server when the connection
to the server was closed (abruptly or not).
|
protected java.io.Writer |
writer
The Writer which is used for the debugger.
|
Modifier | Constructor and Description |
---|---|
protected |
AbstractXMPPConnection(ConnectionConfiguration configuration)
Create a new XMPPConnection to an XMPP server.
|
Modifier and Type | Method and Description |
---|---|
void |
addAsyncStanzaListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers an asynchronous stanza(/packet) listener with this connection.
|
void |
addConnectionListener(ConnectionListener connectionListener)
Adds a connection listener to this connection that will be notified when
the connection closes or fails.
|
void |
addOneTimeSyncCallback(StanzaListener callback,
StanzaFilter packetFilter)
Add a callback that is called exactly once and synchronously with the incoming stanza that matches the given
stanza(/packet) filter.
|
void |
addPacketInterceptor(StanzaListener packetInterceptor,
StanzaFilter packetFilter)
Registers a stanza(/packet) interceptor with this connection.
|
void |
addPacketListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Deprecated.
|
void |
addPacketSendingListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers a stanza(/packet) listener with this connection.
|
protected void |
addStreamFeature(ExtensionElement feature) |
void |
addSyncStanzaListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers a synchronous stanza(/packet) listener with this connection.
|
protected void |
afterFeaturesReceived() |
protected void |
afterSuccessfulLogin(boolean resumed) |
protected void |
asyncGo(java.lang.Runnable runnable) |
protected void |
bindResourceAndEstablishSession(Resourcepart resource) |
protected void |
callConnectionAuthenticatedListener(boolean resumed) |
protected void |
callConnectionClosedOnErrorListener(java.lang.Exception e) |
protected void |
callConnectionConnectedListener() |
AbstractXMPPConnection |
connect()
Establishes a connection to the XMPP server.
|
protected abstract void |
connectInternal()
Abstract method that concrete subclasses of XMPPConnection need to implement to perform their
way of XMPP connection establishment.
|
StanzaCollector |
createStanzaCollector(StanzaCollector.Configuration configuration)
Create a new stanza(/packet) collector with the given stanza(/packet) collector configuration.
|
StanzaCollector |
createStanzaCollector(StanzaFilter packetFilter)
Creates a new stanza(/packet) collector for this connection.
|
StanzaCollector |
createStanzaCollectorAndSend(IQ packet)
Creates a new stanza(/packet) collector collecting packets that are replies to
packet . |
StanzaCollector |
createStanzaCollectorAndSend(StanzaFilter packetFilter,
Stanza packet)
Creates a new stanza(/packet) collector for this connection.
|
void |
disconnect()
Closes the connection by setting presence to unavailable then closing the connection to
the XMPP server.
|
void |
disconnect(Presence unavailablePresence)
Closes the connection.
|
protected void |
finalize() |
protected void |
firePacketSendingListeners(Stanza packet)
Process all stanza(/packet) listeners for sending packets.
|
ConnectionConfiguration |
getConfiguration()
Get the connection configuration used by this connection.
|
int |
getConnectionCounter()
Get the connection counter of this XMPPConnection instance.
|
protected java.util.concurrent.locks.Lock |
getConnectionLock() |
<F extends ExtensionElement> |
getFeature(java.lang.String element,
java.lang.String namespace)
Get the feature stanza(/packet) extensions for a given stream feature of the
server, or
null if the server doesn't support that feature. |
XMPPConnection.FromMode |
getFromMode()
Get the currently active FromMode.
|
java.lang.String |
getHost()
Returns the host name of the server where the XMPP server is running.
|
long |
getLastStanzaReceived()
Returns the timestamp in milliseconds when the last stanza was received.
|
long |
getPacketReplyTimeout()
Returns the current value of the reply timeout in milliseconds for request for this
XMPPConnection instance.
|
ParsingExceptionCallback |
getParsingExceptionCallback()
Get the current active parsing exception callback.
|
int |
getPort()
Returns the port number of the XMPP server for this connection.
|
long |
getReplyTimeout()
Returns the current value of the reply timeout in milliseconds for request for this
XMPPConnection instance.
|
protected SASLAuthentication |
getSASLAuthentication()
Returns the SASLAuthentication manager that is responsible for authenticating with
the server.
|
DomainBareJid |
getServiceName()
Returns the name of the service provided by the XMPP server for this connection.
|
java.lang.String |
getStreamId()
Returns the stream ID for this connection, which is the value set by the server
when opening an XMPP stream.
|
java.lang.String |
getUsedSaslMechansism()
Get the name of the SASL mechanism that was used to authenticate this connection.
|
EntityFullJid |
getUser()
Returns the full XMPP address of the user that is logged in to the connection or
null if not logged in yet.
|
DomainBareJid |
getXMPPServiceDomain()
Returns the XMPP Domain of the service provided by the XMPP server and used for this connection.
|
boolean |
hasFeature(java.lang.String element,
java.lang.String namespace)
Return true if the server supports the given stream feature.
|
protected void |
initDebugger()
Initialize the
debugger . |
protected void |
invokeStanzaCollectorsAndNotifyRecvListeners(Stanza packet)
Invoke
StanzaCollector.processStanza(Stanza) for every
StanzaCollector with the given packet. |
boolean |
isAnonymous()
Returns true if currently authenticated anonymously.
|
boolean |
isAuthenticated()
Returns true if currently authenticated by successfully calling the login method.
|
boolean |
isConnected()
Returns true if currently connected to the XMPP server.
|
abstract boolean |
isSecureConnection()
Returns true if the connection to the server has successfully negotiated encryption.
|
abstract boolean |
isUsingCompression()
Returns true if network traffic is being compressed.
|
void |
login()
Logs in to the server using the strongest SASL mechanism supported by
the server.
|
void |
login(java.lang.CharSequence username,
java.lang.String password)
Same as
login(CharSequence, String, Resourcepart) , but takes the resource from the connection
configuration. |
void |
login(java.lang.CharSequence username,
java.lang.String password,
Resourcepart resource)
Login with the given username (authorization identity).
|
protected abstract void |
loginInternal(java.lang.String username,
java.lang.String password,
Resourcepart resource) |
protected void |
notifyReconnection()
Deprecated.
|
protected void |
parseAndProcessStanza(org.xmlpull.v1.XmlPullParser parser) |
protected void |
parseFeatures(org.xmlpull.v1.XmlPullParser parser) |
protected java.util.List<HostAddress> |
populateHostAddresses()
Populates
hostAddresses with the resolved addresses or with the configured host address. |
protected void |
processStanza(Stanza stanza)
Processes a stanza(/packet) after it's been fully parsed by looping through the installed
stanza(/packet) collectors and listeners and letting them examine the stanza(/packet) to see if
they are a match with the filter.
|
IQRequestHandler |
registerIQRequestHandler(IQRequestHandler iqRequestHandler)
Register an IQ request handler with this connection.
|
boolean |
removeAsyncStanzaListener(StanzaListener packetListener)
Removes an asynchronous stanza(/packet) listener for received packets from this connection.
|
void |
removeConnectionListener(ConnectionListener connectionListener)
Removes a connection listener from this connection.
|
void |
removePacketInterceptor(StanzaListener packetInterceptor)
Removes a stanza(/packet) interceptor.
|
boolean |
removePacketListener(StanzaListener packetListener)
Deprecated.
|
void |
removePacketSendingListener(StanzaListener packetListener)
Removes a stanza(/packet) listener for sending packets from this connection.
|
void |
removeStanzaCollector(StanzaCollector collector)
Remove a stanza(/packet) collector of this connection.
|
boolean |
removeSyncStanzaListener(StanzaListener packetListener)
Removes a stanza(/packet) listener for received packets from this connection.
|
protected java.util.concurrent.ScheduledFuture<?> |
schedule(java.lang.Runnable runnable,
long delay,
java.util.concurrent.TimeUnit unit) |
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback,
ExceptionCallback exceptionCallback)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback,
ExceptionCallback exceptionCallback,
long timeout)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
abstract void |
sendNonza(Nonza element)
Send a Nonza.
|
void |
sendPacket(Stanza packet)
Deprecated.
|
void |
sendStanza(Stanza stanza)
Sends the specified stanza to the server.
|
protected abstract void |
sendStanzaInternal(Stanza packet) |
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback,
ExceptionCallback exceptionCallback)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback,
ExceptionCallback exceptionCallback,
long timeout)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
setFromMode(XMPPConnection.FromMode fromMode)
Set the FromMode for this connection instance.
|
void |
setPacketReplyTimeout(long timeout)
Set the stanza(/packet) reply timeout in milliseconds.
|
void |
setParsingExceptionCallback(ParsingExceptionCallback callback)
Install a parsing exception callback, which will be invoked once an exception is encountered while parsing a
stanza.
|
void |
setReplyTimeout(long timeout)
Set the stanza(/packet) reply timeout in milliseconds.
|
void |
setReplyToUnknownIq(boolean replyToUnknownIq)
Deprecated.
use
AbstractXMPPConnection#setUnknownIqRequestReplyMode(UnknownIqRequestReplyMode) instead. |
static void |
setReplyToUnknownIqDefault(boolean replyToUnkownIqDefault)
|
void |
setUnknownIqRequestReplyMode(SmackConfiguration.UnknownIqRequestReplyMode unknownIqRequestReplyMode)
Set how Smack behaves when an unknown IQ request has been received.
|
protected void |
setWasAuthenticated()
Sets whether the connection has already logged in the server.
|
protected abstract void |
shutdown()
Shuts the current connection down.
|
protected void |
throwAlreadyConnectedExceptionIfAppropriate() |
protected void |
throwAlreadyLoggedInExceptionIfAppropriate() |
protected void |
throwNotConnectedExceptionIfAppropriate() |
protected void |
throwNotConnectedExceptionIfAppropriate(java.lang.String optionalHint) |
java.lang.String |
toString() |
IQRequestHandler |
unregisterIQRequestHandler(IQRequestHandler iqRequestHandler)
Convenience method for
XMPPConnection.unregisterIQRequestHandler(String, String, org.jivesoftware.smack.packet.IQ.Type) . |
IQRequestHandler |
unregisterIQRequestHandler(java.lang.String element,
java.lang.String namespace,
IQ.Type type)
Unregister an IQ request handler with this connection.
|
protected final java.util.Set<ConnectionListener> connectionListeners
protected final java.util.concurrent.locks.Lock connectionLock
protected final java.util.Map<java.lang.String,ExtensionElement> streamFeatures
protected EntityFullJid user
It is important that we don't infer the user from the login() arguments and the configurations service name, as, for example, when SASL External is used, the username is not given to login but taken from the 'external' certificate.
protected boolean connected
protected java.lang.String streamId
protected SmackDebugger debugger
protected java.io.Reader reader
protected java.io.Writer writer
protected final SynchronizationPoint<SmackException> tlsHandled
protected final SynchronizationPoint<java.lang.Exception> lastFeaturesReceived
protected final SynchronizationPoint<XMPPException> saslFeatureReceived
protected final SASLAuthentication saslAuthentication
protected final int connectionCounterValue
protected final ConnectionConfiguration config
protected XMPPInputOutputStream compressionHandler
protected java.lang.String host
protected int port
protected boolean authenticated
protected boolean wasAuthenticated
protected java.util.List<HostAddress> hostAddresses
protected AbstractXMPPConnection(ConnectionConfiguration configuration)
configuration
- The configuration which is used to establish the connection.public ConnectionConfiguration getConfiguration()
public DomainBareJid getServiceName()
XMPPConnection
getServiceName
in interface XMPPConnection
XMPPConnection.getXMPPServiceDomain()
instead.public DomainBareJid getXMPPServiceDomain()
XMPPConnection
getXMPPServiceDomain
in interface XMPPConnection
public java.lang.String getHost()
XMPPConnection
getHost
in interface XMPPConnection
public int getPort()
XMPPConnection
getPort
in interface XMPPConnection
public abstract boolean isSecureConnection()
XMPPConnection
isSecureConnection
in interface XMPPConnection
protected abstract void sendStanzaInternal(Stanza packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
SmackException.NotConnectedException
java.lang.InterruptedException
public abstract void sendNonza(Nonza element) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
This method is not meant for end-user usage! It allows sending plain stream elements, which should not be done by a user manually. Doing so may result in a unstable or unusable connection. Certain Smack APIs use this method to send plain stream elements.
sendNonza
in interface XMPPConnection
element
- the Nonza to send.SmackException.NotConnectedException
java.lang.InterruptedException
public abstract boolean isUsingCompression()
XMPPConnection
isUsingCompression
in interface XMPPConnection
public AbstractXMPPConnection connect() throws SmackException, java.io.IOException, XMPPException, java.lang.InterruptedException
Listeners will be preserved from a previous connection.
connect()
with login()
.XMPPException
- if an error occurs on the XMPP protocol level.SmackException
- if an error occurs somewhere else besides XMPP protocol level.java.io.IOException
java.lang.InterruptedException
protected abstract void connectInternal() throws SmackException, java.io.IOException, XMPPException, java.lang.InterruptedException
SmackException
java.io.IOException
XMPPException
java.lang.InterruptedException
public void login() throws XMPPException, SmackException, java.io.IOException, java.lang.InterruptedException
SmackException.NoResponseException
will be thrown.
Before logging in (i.e. authenticate) to the server the connection must be connected
by calling connect()
.
It is possible to log in without sending an initial available presence by using
ConnectionConfiguration.Builder.setSendPresence(boolean)
.
Finally, if you want to not pass a password and instead use a more advanced mechanism
while using SASL then you may be interested in using
ConnectionConfiguration.Builder.setCallbackHandler(javax.security.auth.callback.CallbackHandler)
.
For more advanced login settings see ConnectionConfiguration
.
XMPPException
- if an error occurs on the XMPP protocol level.SmackException
- if an error occurs somewhere else besides XMPP protocol level.java.io.IOException
- if an I/O error occurs during login.java.lang.InterruptedException
public void login(java.lang.CharSequence username, java.lang.String password) throws XMPPException, SmackException, java.io.IOException, java.lang.InterruptedException
login(CharSequence, String, Resourcepart)
, but takes the resource from the connection
configuration.username
- password
- XMPPException
SmackException
java.io.IOException
java.lang.InterruptedException
login()
public void login(java.lang.CharSequence username, java.lang.String password, Resourcepart resource) throws XMPPException, SmackException, java.io.IOException, java.lang.InterruptedException
username
- password
- resource
- XMPPException
SmackException
java.io.IOException
java.lang.InterruptedException
login()
protected abstract void loginInternal(java.lang.String username, java.lang.String password, Resourcepart resource) throws XMPPException, SmackException, java.io.IOException, java.lang.InterruptedException
XMPPException
SmackException
java.io.IOException
java.lang.InterruptedException
public final boolean isConnected()
XMPPConnection
isConnected
in interface XMPPConnection
public final boolean isAuthenticated()
XMPPConnection
isAuthenticated
in interface XMPPConnection
public final EntityFullJid getUser()
XMPPConnection
getUser
in interface XMPPConnection
public java.lang.String getStreamId()
XMPPConnection
getStreamId
in interface XMPPConnection
protected void bindResourceAndEstablishSession(Resourcepart resource) throws XMPPException.XMPPErrorException, SmackException, java.lang.InterruptedException
XMPPException.XMPPErrorException
SmackException
java.lang.InterruptedException
protected void afterSuccessfulLogin(boolean resumed) throws SmackException.NotConnectedException, java.lang.InterruptedException
SmackException.NotConnectedException
java.lang.InterruptedException
public final boolean isAnonymous()
XMPPConnection
isAnonymous
in interface XMPPConnection
public final java.lang.String getUsedSaslMechansism()
null
if
this connection was not authenticated before.protected java.util.List<HostAddress> populateHostAddresses()
hostAddresses
with the resolved addresses or with the configured host address. If no host
address was configured and all lookups failed, for example with NX_DOMAIN, then hostAddresses
will be
populated with the empty list.protected java.util.concurrent.locks.Lock getConnectionLock()
protected void throwNotConnectedExceptionIfAppropriate() throws SmackException.NotConnectedException
protected void throwNotConnectedExceptionIfAppropriate(java.lang.String optionalHint) throws SmackException.NotConnectedException
protected void throwAlreadyConnectedExceptionIfAppropriate() throws SmackException.AlreadyConnectedException
protected void throwAlreadyLoggedInExceptionIfAppropriate() throws SmackException.AlreadyLoggedInException
@Deprecated public void sendPacket(Stanza packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
sendPacket
in interface XMPPConnection
packet
- the stanza(/packet) to send.SmackException.NotConnectedException
java.lang.InterruptedException
public void sendStanza(Stanza stanza) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
sendStanza
in interface XMPPConnection
stanza
- the stanza to send.SmackException.NotConnectedException
- if the connection is not connected.java.lang.InterruptedException
protected SASLAuthentication getSASLAuthentication()
public void disconnect()
public void disconnect(Presence unavailablePresence) throws SmackException.NotConnectedException
unavailablePresence
- the presence stanza(/packet) to send during shutdown.SmackException.NotConnectedException
protected abstract void shutdown()
public void addConnectionListener(ConnectionListener connectionListener)
XMPPConnection
addConnectionListener
in interface XMPPConnection
connectionListener
- a connection listener.public void removeConnectionListener(ConnectionListener connectionListener)
XMPPConnection
removeConnectionListener
in interface XMPPConnection
connectionListener
- a connection listener.public StanzaCollector createStanzaCollectorAndSend(IQ packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
packet
.
Does also send packet
. The stanza(/packet) filter for the collector is an
IQReplyFilter
, guaranteeing that stanza(/packet) id and JID in the 'from' address have
expected values.createStanzaCollectorAndSend
in interface XMPPConnection
packet
- the stanza(/packet) to filter responses fromSmackException.NotConnectedException
java.lang.InterruptedException
public StanzaCollector createStanzaCollectorAndSend(StanzaFilter packetFilter, Stanza packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
StanzaListener
when you need to wait for
a specific result.createStanzaCollectorAndSend
in interface XMPPConnection
packetFilter
- the stanza(/packet) filter to use.packet
- the packet to send right after the collector got createdSmackException.NotConnectedException
java.lang.InterruptedException
public StanzaCollector createStanzaCollector(StanzaFilter packetFilter)
XMPPConnection
StanzaListener
when you need to wait for a specific result.
Note: If you send a Stanza(/Packet) right after using this method, then
consider using
XMPPConnection.createStanzaCollectorAndSend(StanzaFilter, Stanza)
instead.
Otherwise make sure cancel the StanzaCollector in every case, e.g. even
if an exception is thrown, or otherwise you may leak the StanzaCollector.
createStanzaCollector
in interface XMPPConnection
packetFilter
- the stanza(/packet) filter to use.public StanzaCollector createStanzaCollector(StanzaCollector.Configuration configuration)
XMPPConnection
Please make sure to cancel the collector when it is no longer required. See also
XMPPConnection.createStanzaCollector(StanzaFilter)
.
createStanzaCollector
in interface XMPPConnection
configuration
- the stanza(/packet) collector configuration.public void removeStanzaCollector(StanzaCollector collector)
XMPPConnection
removeStanzaCollector
in interface XMPPConnection
collector
- a stanza(/packet) collectors which was created for this connection.@Deprecated public void addPacketListener(StanzaListener packetListener, StanzaFilter packetFilter)
XMPPConnection
This method has been deprecated. It is important to differentiate between using an asynchronous stanza(/packet) listener
(preferred where possible) and a synchronous stanza(/packet) lister. Refer
XMPPConnection.addAsyncStanzaListener(StanzaListener, StanzaFilter)
and
XMPPConnection.addSyncStanzaListener(StanzaListener, StanzaFilter)
for more information.
addPacketListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.@Deprecated public boolean removePacketListener(StanzaListener packetListener)
XMPPConnection
removePacketListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to remove.public void addSyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter)
XMPPConnection
Important: This stanza(/packet) listeners will be called in the same single thread that processes all
incoming stanzas. Only use this kind of stanza(/packet) filter if it does not perform any XMPP activity that waits for a
response. Consider using XMPPConnection.addAsyncStanzaListener(StanzaListener, StanzaFilter)
when possible, i.e. when
the invocation order doesn't have to be the same as the order of the arriving packets. If the order of the
arriving packets, consider using a StanzaCollector
when possible.
addSyncStanzaListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.XMPPConnection.addPacketInterceptor(StanzaListener, StanzaFilter)
public boolean removeSyncStanzaListener(StanzaListener packetListener)
XMPPConnection
removeSyncStanzaListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to remove.public void addAsyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter)
XMPPConnection
Unlike XMPPConnection.addAsyncStanzaListener(StanzaListener, StanzaFilter)
stanza(/packet) listeners added with this method will be
invoked asynchronously in their own thread. Use this method if the order of the stanza(/packet) listeners must not depend
on the order how the stanzas where received.
addAsyncStanzaListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.XMPPConnection.addPacketInterceptor(StanzaListener, StanzaFilter)
public boolean removeAsyncStanzaListener(StanzaListener packetListener)
XMPPConnection
removeAsyncStanzaListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to remove.public void addPacketSendingListener(StanzaListener packetListener, StanzaFilter packetFilter)
XMPPConnection
addPacketSendingListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to notify of sent packets.packetFilter
- the stanza(/packet) filter to use.public void removePacketSendingListener(StanzaListener packetListener)
XMPPConnection
removePacketSendingListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to remove.protected void firePacketSendingListeners(Stanza packet)
Compared to firePacketInterceptors(Stanza)
, the listeners will be invoked in a new thread.
packet
- the stanza(/packet) to process.public void addPacketInterceptor(StanzaListener packetInterceptor, StanzaFilter packetFilter)
XMPPConnection
NOTE: For a similar functionality on incoming packets, see XMPPConnection.addAsyncStanzaListener(StanzaListener, StanzaFilter)
.
addPacketInterceptor
in interface XMPPConnection
packetInterceptor
- the stanza(/packet) interceptor to notify of packets about to be sent.packetFilter
- the stanza(/packet) filter to use.public void removePacketInterceptor(StanzaListener packetInterceptor)
XMPPConnection
removePacketInterceptor
in interface XMPPConnection
packetInterceptor
- the stanza(/packet) interceptor to remove.protected void initDebugger()
debugger
. You can specify a customized SmackDebugger
by setup the system property smack.debuggerClass
to the implementation.java.lang.IllegalStateException
- if the reader or writer isn't yet initialized.java.lang.IllegalArgumentException
- if the SmackDebugger can't be loaded.public long getPacketReplyTimeout()
XMPPConnection
getPacketReplyTimeout
in interface XMPPConnection
public void setPacketReplyTimeout(long timeout)
XMPPConnection
SmackException.NoResponseException
if no reply to a request was received within the timeout period.setPacketReplyTimeout
in interface XMPPConnection
timeout
- the stanza(/packet) reply timeout in millisecondspublic long getReplyTimeout()
XMPPConnection
getReplyTimeout
in interface XMPPConnection
public void setReplyTimeout(long timeout)
XMPPConnection
SmackException.NoResponseException
if no reply to a request was received within the timeout period.setReplyTimeout
in interface XMPPConnection
timeout
- for a reply in milliseconds@Deprecated public static void setReplyToUnknownIqDefault(boolean replyToUnkownIqDefault)
SmackConfiguration.setUnknownIqRequestReplyMode(org.jivesoftware.smack.SmackConfiguration.UnknownIqRequestReplyMode)
instead.replyToUnkownIqDefault
- setReplyToUnknownIq(boolean)
public void setUnknownIqRequestReplyMode(SmackConfiguration.UnknownIqRequestReplyMode unknownIqRequestReplyMode)
unknownIqRequestReplyMode
- reply mode.@Deprecated public void setReplyToUnknownIq(boolean replyToUnknownIq)
AbstractXMPPConnection#setUnknownIqRequestReplyMode(UnknownIqRequestReplyMode)
instead.XMPPError.Condition.feature_not_implemented
when a request IQ without a
registered IQRequestHandler
is received.replyToUnknownIq
- whether Smack should reply to unknown IQs or not.protected void parseAndProcessStanza(org.xmlpull.v1.XmlPullParser parser) throws java.lang.Exception
java.lang.Exception
protected void processStanza(Stanza stanza) throws java.lang.InterruptedException
stanza
- the stanza to process.java.lang.InterruptedException
protected void invokeStanzaCollectorsAndNotifyRecvListeners(Stanza packet)
StanzaCollector.processStanza(Stanza)
for every
StanzaCollector with the given packet. Also notify the receive listeners with a matching stanza(/packet) filter about the packet.packet
- the stanza(/packet) to notify the StanzaCollectors and receive listeners about.protected void setWasAuthenticated()
wasAuthenticated
flag is never reset once it has ever been set.protected void callConnectionConnectedListener()
protected void callConnectionAuthenticatedListener(boolean resumed)
protected void callConnectionClosedOnErrorListener(java.lang.Exception e)
@Deprecated protected void notifyReconnection()
public int getConnectionCounter()
XMPPConnection
getConnectionCounter
in interface XMPPConnection
public void setFromMode(XMPPConnection.FromMode fromMode)
XMPPConnection
setFromMode
in interface XMPPConnection
public XMPPConnection.FromMode getFromMode()
XMPPConnection
getFromMode
in interface XMPPConnection
XMPPConnection.FromMode
protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
protected final void parseFeatures(org.xmlpull.v1.XmlPullParser parser) throws java.lang.Exception
java.lang.Exception
protected void afterFeaturesReceived() throws SmackException.SecurityRequiredException, SmackException.NotConnectedException, java.lang.InterruptedException
SmackException.SecurityRequiredException
SmackException.NotConnectedException
java.lang.InterruptedException
public <F extends ExtensionElement> F getFeature(java.lang.String element, java.lang.String namespace)
XMPPConnection
null
if the server doesn't support that feature.getFeature
in interface XMPPConnection
F
- ExtensionElement
type of the feature.null
public boolean hasFeature(java.lang.String element, java.lang.String namespace)
XMPPConnection
hasFeature
in interface XMPPConnection
protected void addStreamFeature(ExtensionElement feature)
public void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
replyFilter
.
If there is a response, then callback
will be invoked. The callback will be
invoked at most once and it will be not invoked after the connections default reply timeout
has been elapsed.
sendStanzaWithResponseCallback
in interface XMPPConnection
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)SmackException.NotConnectedException
java.lang.InterruptedException
public void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback, ExceptionCallback exceptionCallback) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
replyFilter
.
If there is a response, then callback
will be invoked. If there is no response
after the connections default reply timeout, then exceptionCallback
will be invoked
with a SmackException.NoResponseException
. The callback will be invoked at most once.
sendStanzaWithResponseCallback
in interface XMPPConnection
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)exceptionCallback
- the callback invoked if there is an exception (optional)SmackException.NotConnectedException
java.lang.InterruptedException
public void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback, ExceptionCallback exceptionCallback, long timeout) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
replyFilter
.
If there is a response, then callback
will be invoked. If there is no response
after timeout
milliseconds, then exceptionCallback
will be invoked
with a SmackException.NoResponseException
. The callback will be invoked at most once.
sendStanzaWithResponseCallback
in interface XMPPConnection
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)exceptionCallback
- the callback invoked if there is an exception (optional)timeout
- the timeout in milliseconds to wait for a responseSmackException.NotConnectedException
java.lang.InterruptedException
public void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
callback
if there is a result of
IQ.Type.result
with that result IQ. The callback will
not be invoked after the connections default reply timeout has been elapsed.sendIqWithResponseCallback
in interface XMPPConnection
iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)SmackException.NotConnectedException
java.lang.InterruptedException
public void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback, ExceptionCallback exceptionCallback) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
callback
if there is a result of
IQ.Type.result
with that result IQ. If there is an
error response exceptionCallback
will be invoked, if not null, with the received
error as XMPPException.XMPPErrorException
. If there is no response after the
connections default reply timeout, then exceptionCallback
will be invoked with a
SmackException.NoResponseException
.sendIqWithResponseCallback
in interface XMPPConnection
iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)exceptionCallback
- the callback invoked if there is an Exception optionalSmackException.NotConnectedException
java.lang.InterruptedException
public void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback, ExceptionCallback exceptionCallback, long timeout) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
callback
if there is a result of
IQ.Type.result
with that result IQ. If there is an
error response exceptionCallback
will be invoked, if not null, with the received
error as XMPPException.XMPPErrorException
. If there is no response after
timeout
, then exceptionCallback
will be invoked with a
SmackException.NoResponseException
.sendIqWithResponseCallback
in interface XMPPConnection
iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)exceptionCallback
- the callback invoked if there is an Exception optionaltimeout
- the timeout in milliseconds to wait for a responseSmackException.NotConnectedException
java.lang.InterruptedException
public void addOneTimeSyncCallback(StanzaListener callback, StanzaFilter packetFilter)
XMPPConnection
addOneTimeSyncCallback
in interface XMPPConnection
callback
- the callback invoked once the stanza(/packet) filter matches a stanza.packetFilter
- the filter to match stanzas or null to match all.public IQRequestHandler registerIQRequestHandler(IQRequestHandler iqRequestHandler)
XMPPConnection
IQ request handler process incoming IQ requests, i.e. incoming IQ stanzas of type 'get' or 'set', and return a result.
registerIQRequestHandler
in interface XMPPConnection
iqRequestHandler
- the IQ request handler to register.public final IQRequestHandler unregisterIQRequestHandler(IQRequestHandler iqRequestHandler)
XMPPConnection
XMPPConnection.unregisterIQRequestHandler(String, String, org.jivesoftware.smack.packet.IQ.Type)
.unregisterIQRequestHandler
in interface XMPPConnection
public IQRequestHandler unregisterIQRequestHandler(java.lang.String element, java.lang.String namespace, IQ.Type type)
XMPPConnection
unregisterIQRequestHandler
in interface XMPPConnection
element
- the IQ element the IQ request handler is responsible for.namespace
- the IQ namespace the IQ request handler is responsible for.type
- the IQ type the IQ request handler is responsible for.public long getLastStanzaReceived()
XMPPConnection
getLastStanzaReceived
in interface XMPPConnection
public void setParsingExceptionCallback(ParsingExceptionCallback callback)
callback
- the callback to installpublic ParsingExceptionCallback getParsingExceptionCallback()
public final java.lang.String toString()
toString
in class java.lang.Object
protected final void asyncGo(java.lang.Runnable runnable)
protected final java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable runnable, long delay, java.util.concurrent.TimeUnit unit)