1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-27 00:32:07 +01:00

Added ability to sign off with a custom presence packet (SMACK-195).

git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@7081 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Matt Tucker 2007-02-13 02:23:28 +00:00 committed by matt
parent 5f9456db0d
commit 322292cad9
2 changed files with 20 additions and 4 deletions

View file

@ -213,7 +213,7 @@ class PacketReader {
void notifyConnectionError(Exception e) {
done = true;
// Closes the connection temporary. A reconnection is possible
connection.shutdown();
connection.shutdown(new Presence(Presence.Type.unavailable));
// Print the stack trace to help catch the problem
e.printStackTrace();
// Notify connection listeners of the error.

View file

@ -556,10 +556,12 @@ public class XMPPConnection {
* dealing with an unexpected disconnection. Unlike {@link #disconnect()} the connection's
* packet reader, packet writer, and {@link Roster} will not be removed; thus
* connection's state is kept.
*
* @param unavailablePresence the presence packet to send during shutdown.
*/
protected void shutdown() {
protected void shutdown(Presence unavailablePresence) {
// Set presence to offline.
packetWriter.sendPacket(new Presence(Presence.Type.unavailable));
packetWriter.sendPacket(unavailablePresence);
packetReader.shutdown();
packetWriter.shutdown();
// Wait 150 ms for processes to clean-up, then shutdown.
@ -602,7 +604,21 @@ public class XMPPConnection {
* again.
*/
public void disconnect() {
this.shutdown();
disconnect(new Presence(Presence.Type.unavailable));
}
/**
* Closes the connection. A custom unavailable presence is sent to the server, followed
* by closing the stream. The XMPPConnection can still be used for connecting to the server
* again. A custom unavilable presence is useful for communicating offline presence
* information such as "On vacation". Typically, just the status text of the presence
* packet is set with online information, but most XMPP servers will deliver the full
* presence packet with whatever data is set.
*
* @param unavailablePresence the presence packet to send during shutdown.
*/
public void disconnect(Presence unavailablePresence) {
this.shutdown(unavailablePresence);
this.roster = null;