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:
parent
5f9456db0d
commit
322292cad9
2 changed files with 20 additions and 4 deletions
|
@ -213,7 +213,7 @@ class PacketReader {
|
||||||
void notifyConnectionError(Exception e) {
|
void notifyConnectionError(Exception e) {
|
||||||
done = true;
|
done = true;
|
||||||
// Closes the connection temporary. A reconnection is possible
|
// 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
|
// Print the stack trace to help catch the problem
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
// Notify connection listeners of the error.
|
// Notify connection listeners of the error.
|
||||||
|
|
|
@ -556,10 +556,12 @@ public class XMPPConnection {
|
||||||
* dealing with an unexpected disconnection. Unlike {@link #disconnect()} the connection's
|
* dealing with an unexpected disconnection. Unlike {@link #disconnect()} the connection's
|
||||||
* packet reader, packet writer, and {@link Roster} will not be removed; thus
|
* packet reader, packet writer, and {@link Roster} will not be removed; thus
|
||||||
* connection's state is kept.
|
* 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.
|
// Set presence to offline.
|
||||||
packetWriter.sendPacket(new Presence(Presence.Type.unavailable));
|
packetWriter.sendPacket(unavailablePresence);
|
||||||
packetReader.shutdown();
|
packetReader.shutdown();
|
||||||
packetWriter.shutdown();
|
packetWriter.shutdown();
|
||||||
// Wait 150 ms for processes to clean-up, then shutdown.
|
// Wait 150 ms for processes to clean-up, then shutdown.
|
||||||
|
@ -602,7 +604,21 @@ public class XMPPConnection {
|
||||||
* again.
|
* again.
|
||||||
*/
|
*/
|
||||||
public void disconnect() {
|
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;
|
this.roster = null;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue