Changeset - bb1a8e4c36e2
[Not reviewed]
0 6 0
HanzZ - 14 years ago 2011-06-13 23:31:06
hanzz.k@gmail.com
Spectrum can work without database now :)
6 files changed with 28 insertions and 8 deletions:
0 comments (0 inline, 0 general)
include/transport/usermanager.h
Show inline comments
 
@@ -41,7 +41,7 @@ class UserManager {
 
		/// Creates new UserManager.
 
		/// \param component Component which's presence will be handled
 
		/// \param storageBackend Storage backend used to fetch UserInfos
 
		UserManager(Component *component, StorageBackend *storageBackend);
 
		UserManager(Component *component, StorageBackend *storageBackend = NULL);
 

	
 
		/// Destroys UserManager.
 
		~UserManager();
spectrum/src/main.cpp
Show inline comments
 
@@ -55,15 +55,21 @@ int main(int argc, char **argv)
 
	Component transport(&eventLoop, &config, NULL);
 
	Logger logger(&transport);
 
 
	SQLite3Backend sql(&config);
 
	logger.setStorageBackend(&sql);
 
	if (!sql.connect()) {
 
	StorageBackend *storageBackend = NULL;
 
 
	if (CONFIG_STRING(&config, "database.type") == "sqlite3") {
 
		storageBackend = new SQLite3Backend(&config);
 
		logger.setStorageBackend(storageBackend);
 
		if (!storageBackend->connect()) {
 
			std::cerr << "Can't connect to database.\n";
 
		}
 
	}
 
 
	UserManager userManager(&transport, &sql);
 
	UserRegistration userRegistration(&transport, &userManager, &sql);
 
	UserManager userManager(&transport, storageBackend);
 
	if (storageBackend) {
 
		UserRegistration userRegistration(&transport, &userManager, storageBackend);
 
		logger.setUserRegistration(&userRegistration);
 
	}
 
	logger.setUserManager(&userManager);
 
 
	NetworkPluginServer plugin(&transport, &config, &userManager);
spectrum/src/sample.cfg
Show inline comments
 
@@ -14,5 +14,6 @@ protocol=prpl-jabber
 
#protocol=prpl-icq
 

	
 
[database]
 
type = sqlite3 # or "none" without database backend
 
database = test.sql
 
prefix=icq
src/config.cpp
Show inline comments
 
@@ -48,6 +48,7 @@ bool Config::load(const std::string &configfile, boost::program_options::options
 
		("registration.username_field", value<std::string>()->default_value(""), "Label for username field")
 
		("registration.username_mask", value<std::string>()->default_value(""), "Username mask")
 
		("registration.encoding", value<std::string>()->default_value("en"), "Default encoding in registration form")
 
		("database.type", value<std::string>()->default_value("none"), "Database type.")
 
		("database.database", value<std::string>()->default_value(""), "Database used to store data")
 
		("database.prefix", value<std::string>()->default_value(""), "Prefix of tables in database")
 
	;
src/rostermanager.cpp
Show inline comments
 
@@ -161,7 +161,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
 
}
 

	
 
void RosterManager::setStorageBackend(StorageBackend *storageBackend) {
 
	if (m_rosterStorage) {
 
	if (m_rosterStorage || !storageBackend) {
 
		return;
 
	}
 
	m_rosterStorage = new RosterStorage(m_user, storageBackend);
src/usermanager.cpp
Show inline comments
 
@@ -33,9 +33,12 @@ UserManager::UserManager(Component *component, StorageBackend *storageBackend) {
 
	m_onlineBuddies = 0;
 
	m_component = component;
 
	m_storageBackend = storageBackend;
 
	m_storageResponder = NULL;
 

	
 
	if (m_storageBackend) {
 
		m_storageResponder = new StorageResponder(component->getIQRouter(), m_storageBackend, this);
 
		m_storageResponder->start();
 
	}
 

	
 
	component->onUserPresenceReceived.connect(bind(&UserManager::handlePresence, this, _1));
 
	m_component->getStanzaChannel()->onMessageReceived.connect(bind(&UserManager::handleMessageReceived, this, _1));
 
@@ -44,9 +47,11 @@ UserManager::UserManager(Component *component, StorageBackend *storageBackend) {
 
}
 

	
 
UserManager::~UserManager(){
 
	if (m_storageResponder) {
 
		m_storageResponder->stop();
 
		delete m_storageResponder;
 
	}
 
}
 

	
 
void UserManager::addUser(User *user) {
 
	m_users[user->getJID().toBare().toString()] = user;
 
@@ -93,15 +98,17 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
 
			m_component->getStanzaChannel()->sendPresence(response);
 

	
 
			UserInfo res;
 
			if (m_storageBackend) {
 
				bool registered = m_storageBackend->getUser(userkey, res);
 
				if (registered) {
 
					m_storageBackend->setUserOnline(res.id, false);
 
				}
 
			}
 
			return;
 
		}
 

	
 
		UserInfo res;
 
		bool registered = m_storageBackend->getUser(userkey, res);
 
		bool registered = m_storageBackend ? m_storageBackend->getUser(userkey, res) : false;
 

	
 
		if (m_component->inServerMode()) {
 
			if (!registered) {
 
@@ -111,9 +118,14 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
 
				if (res.uin.find_last_of("%") != std::string::npos) {
 
					res.uin.replace(res.uin.find_last_of("%"), 1, "@");
 
				}
 
				if (m_storageBackend) {
 
					m_storageBackend->setUser(res);
 
					registered = m_storageBackend->getUser(userkey, res);
 
				}
 
				else {
 
					registered = true;
 
				}
 
			}
 
			res.password = m_component->getUserRegistryPassword(userkey);
 
		}
 

	
0 comments (0 inline, 0 general)