RosterManager::~RosterManager() { m_setBuddyTimer->stop(); m_RIETimer->stop(); if (m_rosterStorage) { m_rosterStorage->storeBuddies(); } sendUnavailablePresences(m_user->getJID().toBare()); if (m_remoteRosterRequest) { m_remoteRosterRequest->onResponse.disconnect_all_slots(); m_component->getIQRouter()->removeHandler(m_remoteRosterRequest); } for (std::map<std::string, Buddy *, std::less<std::string>, boost::pool_allocator< std::pair<std::string, Buddy *> > >::iterator it = m_buddies.begin(); it != m_buddies.end(); it++) { Buddy *buddy = (*it).second; if (!buddy) { continue; } delete buddy; } if (m_requests.size() != 0) { LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Removing " << m_requests.size() << " unresponded IQs"); BOOST_FOREACH(Swift::SetRosterRequest::ref request, m_requests) { request->onResponse.disconnect_all_slots(); m_component->getIQRouter()->removeHandler(request); }
RosterManager::~RosterManager() { if (m_rosterStorage) { m_rosterStorage->storeBuddies(); } sendUnavailablePresences(m_user->getJID().toBare()); for (std::map<std::string, Buddy *, std::less<std::string>, boost::pool_allocator< std::pair<std::string, Buddy *> > >::iterator it = m_buddies.begin(); it != m_buddies.end(); it++) { Buddy *buddy = (*it).second; if (!buddy) { continue; } delete buddy; } boost::singleton_pool<boost::pool_allocator_tag, sizeof(unsigned int)>::release_memory(); if (m_rosterStorage) delete m_rosterStorage; }