Changeset - de4e6f57c5d9
[Not reviewed]
0 6 0
HanzZ - 14 years ago 2011-07-10 15:32:01
hanzz.k@gmail.com
Basic gateway mode with RIE
6 files changed with 39 insertions and 22 deletions:
0 comments (0 inline, 0 general)
spectrum/src/main.cpp
Show inline comments
 
@@ -70,7 +70,8 @@ int main(int argc, char **argv)
 
 
	UserManager userManager(&transport, &userRegistry, storageBackend);
 
	if (storageBackend) {
 
		UserRegistration userRegistration(&transport, &userManager, storageBackend);
 
		UserRegistration *userRegistration = new UserRegistration(&transport, &userManager, storageBackend);
 
		userRegistration->start();
 
// 		logger.setUserRegistration(&userRegistration);
 
	}
 
// 	logger.setUserManager(&userManager);
src/rostermanager.cpp
Show inline comments
 
@@ -59,6 +59,9 @@ RosterManager::~RosterManager() {
 

	
 
	for (std::map<std::string, Buddy *>::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) {
 
		Buddy *buddy = (*it).second;
 
		if (!buddy) {
 
			continue;
 
		}
 
		delete buddy;
 
	}
 
	if (m_rosterStorage)
 
@@ -141,7 +144,10 @@ Buddy *RosterManager::getBuddy(const std::string &name) {
 
void RosterManager::sendRIE() {
 
	m_RIETimer->stop();
 

	
 
	LOG4CXX_INFO(logger, "Sending RIE stanza to " << m_user->getJID().toString());
 
	Swift::Presence::ref highest = m_component->getPresenceOracle()->getHighestPriorityPresence(m_user->getJID().toBare());
 

	
 
	LOG4CXX_INFO(logger, "Sending RIE stanza to " << highest->getFrom().toString());
 

	
 
	Swift::RosterItemExchangePayload::ref payload = Swift::RosterItemExchangePayload::ref(new Swift::RosterItemExchangePayload());
 
	for (std::map<std::string, Buddy *>::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) {
 
		Buddy *buddy = (*it).second;
 
@@ -154,7 +160,7 @@ void RosterManager::sendRIE() {
 
		payload->addItem(item);
 
	}
 

	
 
	boost::shared_ptr<Swift::GenericRequest<Swift::RosterItemExchangePayload> > request(new Swift::GenericRequest<Swift::RosterItemExchangePayload>(Swift::IQ::Set, m_user->getJID(), payload, m_component->getIQRouter()));
 
	boost::shared_ptr<Swift::GenericRequest<Swift::RosterItemExchangePayload> > request(new Swift::GenericRequest<Swift::RosterItemExchangePayload>(Swift::IQ::Set, highest->getFrom(), payload, m_component->getIQRouter()));
 
	request->send();
 
}
 

	
 
@@ -211,6 +217,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
 
	}
 
	else {
 
		Swift::Presence::ref response = Swift::Presence::create();
 
		Swift::Presence::ref presence;
 
		response->setTo(presence->getFrom());
 
		response->setFrom(presence->getTo());
 

	
 
@@ -220,6 +227,11 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
 
				// buddy is already there, so nothing to do, just answer
 
				case Swift::Presence::Subscribe:
 
					response->setType(Swift::Presence::Subscribed);
 
					presence = buddy->generatePresenceStanza(255);
 
					if (presence) {
 
						presence->setTo(presence->getFrom());
 
						m_component->getStanzaChannel()->sendPresence(presence);
 
					}
 
					break;
 
				// remove buddy
 
				case Swift::Presence::Unsubscribe:
 
@@ -228,11 +240,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
 
					break;
 
				// just send response
 
				case Swift::Presence::Unsubscribed:
 
					response->setType(Swift::Presence::Unsubscribe);
 
					break;
 
				// just send response
 
				case Swift::Presence::Subscribed:
 
					response->setType(Swift::Presence::Subscribe);
 
// 					response->setType(Swift::Presence::Unsubscribe);
 
					break;
 
				default:
 
					return;
 
@@ -263,9 +271,6 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
 
					response->setType(Swift::Presence::Unsubscribe);
 
					break;
 
				// just send response
 
				case Swift::Presence::Subscribed:
 
					response->setType(Swift::Presence::Subscribe);
 
					break;
 
				default:
 
					return;
 
			}
 
@@ -312,6 +317,9 @@ Swift::RosterPayload::ref RosterManager::generateRosterPayload() {
 

	
 
	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::RosterItemPayload item;
 
		item.setJID(buddy->getJID().toBare());
 
		item.setName(buddy->getAlias());
 
@@ -325,6 +333,9 @@ Swift::RosterPayload::ref RosterManager::generateRosterPayload() {
 
void RosterManager::sendCurrentPresences(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);
src/sqlite3backend.cpp
Show inline comments
 
@@ -272,7 +272,7 @@ long SQLite3Backend::addBuddy(long userId, const BuddyInfo &buddyInfo) {
 
void SQLite3Backend::updateBuddy(long userId, const BuddyInfo &buddyInfo) {
 
// 	UPDATE " + m_prefix + "buddies SET groups=?, nickname=?, flags=?, subscription=? WHERE user_id=? AND uin=?
 
	BEGIN(m_updateBuddy);
 
	BIND_STR(m_updateBuddy, buddyInfo.groups[0]); // TODO: serialize groups
 
	BIND_STR(m_updateBuddy, buddyInfo.groups.size() == 0 ? "" : buddyInfo.groups[0]); // TODO: serialize groups
 
	BIND_STR(m_updateBuddy, buddyInfo.alias);
 
	BIND_INT(m_updateBuddy, buddyInfo.flags);
 
	BIND_STR(m_updateBuddy, buddyInfo.subscription);
src/user.cpp
Show inline comments
 
@@ -115,11 +115,12 @@ void User::handlePresence(Swift::Presence::ref presence) {
 

	
 
	Swift::Presence::ref highest = m_presenceOracle->getHighestPriorityPresence(m_jid.toBare());
 
	if (highest) {
 
		highest->setTo(presence->getFrom().toBare());
 
		highest->setFrom(m_component->getJID());
 
		m_component->getStanzaChannel()->sendPresence(highest);
 
		LOG4CXX_INFO(logger, m_jid.toString() << ": Changing legacy network presence to " << highest->getType());
 
		onPresenceChanged(highest);
 
		Swift::Presence::ref response = Swift::Presence::create(highest);
 
		response->setTo(presence->getFrom().toBare());
 
		response->setFrom(m_component->getJID());
 
		m_component->getStanzaChannel()->sendPresence(response);
 
		LOG4CXX_INFO(logger, m_jid.toString() << ": Changing legacy network presence to " << response->getType());
 
		onPresenceChanged(response);
 
	}
 
	else {
 
		Swift::Presence::ref response = Swift::Presence::create();
src/usermanager.cpp
Show inline comments
 
@@ -229,11 +229,11 @@ void UserManager::handleSubscription(Swift::Presence::ref presence) {
 
		response->setType(Swift::Presence::Subscribed);
 
		m_component->getStanzaChannel()->sendPresence(response);
 

	
 
		response = Swift::Presence::create();
 
		response->setFrom(presence->getTo());
 
		response->setTo(presence->getFrom());
 
		response->setType(Swift::Presence::Subscribe);
 
		m_component->getStanzaChannel()->sendPresence(response);
 
// 		response = Swift::Presence::create();
 
// 		response->setFrom(presence->getTo());
 
// 		response->setTo(presence->getFrom());
 
// 		response->setType(Swift::Presence::Subscribe);
 
// 		m_component->getStanzaChannel()->sendPresence(response);
 
		return;
 
	}
 

	
src/userregistration.cpp
Show inline comments
 
@@ -25,11 +25,15 @@
 
#include "transport/user.h"
 
#include "Swiften/Elements/ErrorPayload.h"
 
#include <boost/shared_ptr.hpp>
 
#include "log4cxx/logger.h"
 

	
 
using namespace Swift;
 
using namespace log4cxx;
 

	
 
namespace Transport {
 

	
 
static LoggerPtr logger = Logger::getLogger("UserRegistration");
 

	
 
UserRegistration::UserRegistration(Component *component, UserManager *userManager, StorageBackend *storageBackend) : Swift::Responder<Swift::InBandRegistrationPayload>(component->m_iqRouter) {
 
	m_component = component;
 
	m_config = m_component->m_config;
0 comments (0 inline, 0 general)