Changeset - 88865c1234e3
[Not reviewed]
0 7 0
HanzZ - 14 years ago 2011-03-20 23:04:20
hanzz.k@gmail.com
RosterManager
7 files changed with 45 insertions and 4 deletions:
0 comments (0 inline, 0 general)
include/transport/abstractbuddy.h
Show inline comments
 
@@ -31,7 +31,9 @@ typedef enum { 	SPECTRUM_BUDDY_NO_FLAG = 0,
 
				SPECTRUM_BUDDY_IGNORE = 4
 
			} SpectrumBuddyFlag;
 

	
 
using namespace Transport;
 
namespace Transport {
 

	
 
class RosterManager;
 

	
 
// Wrapper for PurpleBuddy.
 
class AbstractBuddy {
 
@@ -69,6 +71,9 @@ class AbstractBuddy {
 
		// Returns flags.
 
		int getFlags();
 

	
 
		void setRosterManager(RosterManager *rosterManager) { m_rosterManager = rosterManager; }
 
		RosterManager *getRosterManager() { return m_rosterManager; }
 

	
 
		// Returns buddy's name (so for example UIN for ICQ, JID for XMPP...).
 
		virtual std::string getName() = 0;
 

	
 
@@ -95,4 +100,7 @@ class AbstractBuddy {
 
		std::string m_subscription;
 
		Swift::Presence::ref m_lastPresence;
 
		int m_flags;
 
		RosterManager *m_rosterManager;
 
};
 

	
 
}
include/transport/logger.h
Show inline comments
 
@@ -32,6 +32,8 @@ class UserManager;
 
class Component;
 
class StorageBackend;
 
class UserRegistration;
 
class RosterManager;
 
class AbstractBuddy;
 

	
 
/// Basic logging class which logs various data into std::out (standard output).
 
class Logger
 
@@ -56,6 +58,10 @@ class Logger
 
		/// \param userManager userManager class
 
		void setUserManager(UserManager *userManager);
 

	
 
		/// Starts logging data related to RosterManager class.
 
		/// \param rosterManager rosterManager class
 
		void setRosterManager(RosterManager *rosterManager);
 

	
 
	private:
 
		// Component
 
		void handleConnected();
 
@@ -74,6 +80,10 @@ class Logger
 
		// UserManager
 
		void handleUserCreated(User *user);
 
		void handleUserDestroyed(User *user);
 

	
 
		// RosterManager
 
		void handleBuddyAdded(AbstractBuddy *buddy);
 
		void handleBuddyRemoved(AbstractBuddy *buddy);
 
};
 

	
 
}
include/transport/user.h
Show inline comments
 
@@ -29,6 +29,7 @@
 
namespace Transport {
 

	
 
class Component;
 
class RosterManager;
 
struct UserInfo;
 

	
 
/// Represents online XMPP user.
 
@@ -52,6 +53,8 @@ class User {
 
		/// \return UserInfo struct
 
		UserInfo &getUserInfo() { return m_userInfo; }
 

	
 
		RosterManager *getRosterManager() { return m_rosterManager; }
 

	
 
		void setData(void *data) { m_data = data; }
 
		void *getData() { return m_data; }
 

	
 
@@ -70,6 +73,7 @@ class User {
 

	
 
		Swift::JID m_jid;
 
		Component *m_component;
 
		RosterManager *m_rosterManager;
 
		Swift::EntityCapsManager *m_entityCapsManager;
 
		Swift::PresenceOracle *m_presenceOracle;
 
		UserInfo m_userInfo;
spectrum/src/main.cpp
Show inline comments
 
@@ -10,6 +10,7 @@
 
#include "transport/userregistration.h"
 
#include "transport/user.h"
 
#include "transport/storagebackend.h"
 
#include "transport/rostermanager.h"
 
#include "spectrumeventloop.h"
 
#include "spectrumbuddy.h"
 
#include "geventloop.h"
 
@@ -65,7 +66,8 @@ static void buddyListNewNode(PurpleBlistNode *node) {
 
		buddy->node.ui_data = (void *) new SpectrumBuddy(-1, buddy);
 
		SpectrumBuddy *s_buddy = (SpectrumBuddy *) buddy->node.ui_data;
 
		s_buddy->setFlags(SPECTRUM_BUDDY_JID_ESCAPING);
 
		// TODO: add buddy to RosterManager
 

	
 
		user->getRosterManager()->addBuddy(s_buddy);
 
	}
 
}
 

	
 
@@ -81,7 +83,7 @@ static void NodeRemoved(PurpleBlistNode *node, void *data) {
 
		s_buddy->removeBuddy(buddy);
 
		buddy->node.ui_data = NULL;
 
		if (s_buddy->getBuddiesCount() == 0) {
 
			// TODO: remove buddy from RosterManager
 
			user->getRosterManager()->removeBuddy(s_buddy);
 
			delete s_buddy;
 
		}
 
	}
src/abstractbuddy.cpp
Show inline comments
 
@@ -20,6 +20,8 @@
 

	
 
#include "transport/abstractbuddy.h"
 

	
 
namespace Transport {
 

	
 
AbstractBuddy::AbstractBuddy(long id) : m_id(id), m_online(false), m_subscription("ask"), m_flags(0) {
 
}
 

	
 
@@ -107,3 +109,5 @@ Swift::Presence::ref AbstractBuddy::generatePresenceStanza(int features, bool on
 

	
 
	return presence;
 
}
 

	
 
}
src/logger.cpp
Show inline comments
 
@@ -24,6 +24,8 @@
 
#include "transport/transport.h"
 
#include "transport/storagebackend.h"
 
#include "transport/userregistration.h"
 
#include "transport/abstractbuddy.h"
 
#include "transport/rostermanager.h"
 
#include <boost/bind.hpp>
 

	
 
using namespace boost;
 
@@ -104,4 +106,12 @@ void Logger::handleUserDestroyed(User *user) {
 
	std::cout << "[USERMANAGER] User \"" << user->getJID().toBare().toString() << "\" (UIN: \"" << user->getUserInfo().uin << "\") disconnected and User class is going to be destroyed\n";
 
}
 

	
 
void Logger::handleBuddyAdded(AbstractBuddy *buddy) {
 
	std::cout << "[ROSTERMANAGER] \"" << buddy->getRosterManager()->getUser()->getJID().toBare().toString() << "\": Buddy \"" << buddy->getSafeName() << "\" (ALIAS: \"" << buddy->getAlias() << "\") has been bound with this user's roster.\n";
 
}
 

	
 
void Logger::handleBuddyRemoved(AbstractBuddy *buddy) {
 
	std::cout << "[ROSTERMANAGER] \"" << buddy->getRosterManager()->getUser()->getJID().toBare().toString() << "\": Buddy \"" << buddy->getSafeName() << "\" (ALIAS: \"" << buddy->getAlias() << "\") has been unbound with this user's roster.\n";
 
}
 

	
 
}
src/user.cpp
Show inline comments
 
@@ -21,6 +21,7 @@
 
#include "transport/user.h"
 
#include "transport/transport.h"
 
#include "transport/storagebackend.h"
 
#include "transport/rostermanager.h"
 
#include "Swiften/Swiften.h"
 

	
 
namespace Transport {
 
@@ -37,10 +38,12 @@ User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component) {
 

	
 
	m_reconnectTimer = m_component->getFactories()->getTimerFactory()->createTimer(10000);
 
	m_reconnectTimer->onTick.connect(boost::bind(&User::onConnectingTimeout, this)); 
 

	
 
	m_rosterManager = new RosterManager(this, m_component);
 
}
 

	
 
User::~User(){
 

	
 
	delete m_rosterManager;
 
}
 

	
 
const Swift::JID &User::getJID() {
0 comments (0 inline, 0 general)