Changeset - 5b89dae8ca9a
[Not reviewed]
0 5 0
HanzZ - 14 years ago 2011-11-11 11:40:10
hanzz.k@gmail.com
Forward messages to proper resources
5 files changed with 23 insertions and 5 deletions:
0 comments (0 inline, 0 general)
include/transport/conversation.h
Show inline comments
 
@@ -74,6 +74,10 @@ class Conversation {
 
			m_nickname = nickname;
 
		}
 

	
 
		void setJID(const Swift::JID &jid) {
 
			m_jid = jid;
 
		}
 

	
 
		/// Sends message to Legacy network.
 

	
 
		/// \param message Message.
 
@@ -112,6 +116,7 @@ class Conversation {
 
		std::string m_nickname;
 
		std::string m_room;
 
		bool m_muc;
 
		Swift::JID m_jid;
 
};
 

	
 
}
include/transport/conversationmanager.h
Show inline comments
 
@@ -73,6 +73,8 @@ class ConversationManager {
 
		/// \param conv Conversation.
 
		void removeConversation(Conversation *conv);
 

	
 
		void resetResources();
 

	
 
	private:
 
		void handleMessageReceived(Swift::Message::ref message);
 

	
src/conversation.cpp
Show inline comments
 
@@ -37,6 +37,7 @@ Conversation::Conversation(ConversationManager *conversationManager, const std::
 
	m_legacyName = legacyName;
 
	m_conversationManager->addConversation(this);
 
	m_muc = isMUC;
 
	m_jid = m_conversationManager->getUser()->getJID().toBare();
 
}
 

	
 
Conversation::~Conversation() {
 
@@ -54,9 +55,9 @@ void Conversation::handleMessage(boost::shared_ptr<Swift::Message> &message, con
 
	else {
 
		message->setType(Swift::Message::Chat);
 
	}
 

	
 
	if (message->getType() != Swift::Message::Groupchat) {
 
		
 
		message->setTo(m_conversationManager->getUser()->getJID().toBare());
 
		message->setTo(m_jid);
 
		// normal message
 
		if (nickname.empty()) {
 
			Buddy *buddy = m_conversationManager->getUser()->getRosterManager()->getBuddy(m_legacyName);
 
@@ -83,7 +84,7 @@ void Conversation::handleMessage(boost::shared_ptr<Swift::Message> &message, con
 
		if (legacyName.find_last_of("@") != std::string::npos) {
 
			legacyName.replace(legacyName.find_last_of("@"), 1, "%"); // OK
 
		}
 
		message->setTo(m_conversationManager->getUser()->getJID().toString());
 
		message->setTo(m_jid);
 
		message->setFrom(Swift::JID(legacyName, m_conversationManager->getComponent()->getJID().toBare(), nickname));
 
		m_conversationManager->getComponent()->getStanzaChannel()->sendMessage(message);
 
	}
 
@@ -99,7 +100,7 @@ void Conversation::handleParticipantChanged(const std::string &nick, int flag, i
 
		}
 
	}
 
	presence->setFrom(Swift::JID(legacyName, m_conversationManager->getComponent()->getJID().toBare(), nickname));
 
	presence->setTo(m_conversationManager->getUser()->getJID().toString());
 
	presence->setTo(m_jid);
 
	presence->setType(Swift::Presence::Available);
 

	
 
	if (!statusMessage.empty())
src/conversationmanager.cpp
Show inline comments
 
@@ -62,6 +62,12 @@ void ConversationManager::removeConversation(Conversation *conv) {
 
	m_convs.erase(conv->getLegacyName());
 
}
 

	
 
void ConversationManager::resetResources() {
 
	for (std::map<std::string, Conversation *>::const_iterator it = m_convs.begin(); it != m_convs.end(); it++) {
 
		(*it).second->setJID(m_user->getJID().toBare());
 
	}
 
}
 

	
 
void ConversationManager::handleMessageReceived(Swift::Message::ref message) {
 
// 	std::string name = message->getTo().getUnescapedNode();
 
// 	if (name.find_last_of("%") != std::string::npos) { // OK when commented
 
@@ -87,7 +93,9 @@ void ConversationManager::handleMessageReceived(Swift::Message::ref message) {
 
		}
 
	}
 

	
 
	// update resource and send the message
 
	m_convs[name]->setJID(message->getFrom());
 
	m_convs[name]->sendMessage(message);
 
}
 

	
 
}
 
\ No newline at end of file
 
}
src/user.cpp
Show inline comments
 
@@ -174,6 +174,8 @@ void User::setConnected(bool connected) {
 
void User::handlePresence(Swift::Presence::ref presence) {
 
	int currentResourcesCount = m_presenceOracle->getAllPresence(m_jid).size();
 

	
 
	m_conversationManager->resetResources();
 

	
 
	if (!m_connected) {
 
		// we are not connected to legacy network, so we should do it when disco#info arrive :)
 
		if (m_readyForConnect == false) {
0 comments (0 inline, 0 general)