Changeset - 3c0e38368c23
[Not reviewed]
0 2 0
HanzZ - 14 years ago 2011-07-12 22:02:02
hanzz.k@gmail.com
Send unavailable presences for available buddies when disconnecting the user
2 files changed with 20 insertions and 0 deletions:
0 comments (0 inline, 0 general)
include/transport/rostermanager.h
Show inline comments
 
@@ -86,6 +86,8 @@ class RosterManager {
 

	
 
		void sendCurrentPresences(const Swift::JID &to);
 

	
 
		void sendUnavailablePresences(const Swift::JID &to);
 

	
 
	private:
 
		void setBuddyCallback(Buddy *buddy);
 

	
src/rostermanager.cpp
Show inline comments
 
@@ -57,6 +57,8 @@ RosterManager::~RosterManager() {
 
		m_rosterStorage->storeBuddies();
 
	}
 

	
 
	sendUnavailablePresences(m_user->getJID().toBare());
 

	
 
	for (std::map<std::string, Buddy *>::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) {
 
		Buddy *buddy = (*it).second;
 
		if (!buddy) {
 
@@ -64,6 +66,7 @@ RosterManager::~RosterManager() {
 
		}
 
		delete buddy;
 
	}
 

	
 
	if (m_rosterStorage)
 
		delete m_rosterStorage;
 
}
 
@@ -347,4 +350,19 @@ void RosterManager::sendCurrentPresences(const Swift::JID &to) {
 
	}
 
}
 

	
 
void RosterManager::sendUnavailablePresences(const Swift::JID &to) {
 
	for (std::map<std::string, Buddy *>::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) {
 
		Buddy *buddy = (*it).second;
 
		if (!buddy) {
 
			continue;
 
		}
 
		Swift::Presence::ref presence = buddy->generatePresenceStanza(255);
 
		if (presence) {
 
			presence->setTo(to);
 
			presence->setType(Swift::Presence::Unavailable);
 
			m_component->getStanzaChannel()->sendPresence(presence);
 
		}
 
	}
 
}
 

	
 
}
0 comments (0 inline, 0 general)