Changeset - 6699a898fbec
[Not reviewed]
0 9 0
Jan Kaluza - 14 years ago 2011-05-18 15:19:56
hanzz.k@gmail.com
Working IRC room join + proper 110 status code sending
9 files changed with 49 insertions and 3 deletions:
0 comments (0 inline, 0 general)
backends/libircclient-qt/main.cpp
Show inline comments
 
@@ -52,6 +52,8 @@ class IRCNetworkPlugin : public NetworkPlugin {
 
				return;
 
			m_sessions[user]->addAutoJoinChannel(QString::fromStdString(room));
 
			m_sessions[user]->join(QString::fromStdString(room), QString::fromStdString(password));
 
			// update nickname, because we have nickname per session, no nickname per room.
 
			handleRoomChanged(user, room, m_sessions[user]->nick().toStdString());
 
		}
 

	
 
		std::map<std::string, MyIrcSession *> m_sessions;
docs/Doxyfile
Show inline comments
 
@@ -1445,7 +1445,7 @@ DOT_IMAGE_FORMAT       = png
 
# The tag DOT_PATH can be used to specify the path where the dot tool can be 
 
# found. If left blank, it is assumed the dot tool can be found in the path.
 

	
 
DOT_PATH               = "/usr/bin"
 
DOT_PATH               = ""
 

	
 
# The DOTFILE_DIRS tag can be used to specify one or more directories that 
 
# contain dot files that are included in the documentation (see the 
include/transport/networkplugin.h
Show inline comments
 
@@ -50,6 +50,8 @@ class NetworkPlugin {
 

	
 
		void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message);
 

	
 
		void handleRoomChanged(const std::string &user, const std::string &room, const std::string &nickname);
 

	
 
		virtual void handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password) = 0;
 
		virtual void handleLogoutRequest(const std::string &user, const std::string &legacyName) = 0;
 
		virtual void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message) = 0;
include/transport/networkpluginserver.h
Show inline comments
 
@@ -56,6 +56,7 @@ class NetworkPluginServer {
 
		void handleBuddyChangedPayload(const std::string &payload);
 
		void handleConvMessagePayload(const std::string &payload);
 
		void handleParticipantChangedPayload(const std::string &payload);
 
		void handleRoomChangedPayload(const std::string &payload);
 

	
 
		void handleUserCreated(User *user);
 
		void handleRoomJoined(User *user, const std::string &room, const std::string &nickname, const std::string &password);
spectrum/src/sample.cfg
Show inline comments
 
[service]
 
jid = icq.localhost
 
jid = localhost
 
password = secret
 
server = 127.0.0.1
 
port = 5222
src/conversation.cpp
Show inline comments
 
@@ -53,7 +53,11 @@ void Conversation::handleMessage(boost::shared_ptr<Swift::Message> &message) {
 
	}
 
}
 

	
 
void Conversation::handleParticipantChanged(const std::string &nickname, int flag) {
 
void Conversation::handleParticipantChanged(const std::string &nick, int flag) {
 
	std::string nickname = nick;
 
	if (nickname.find("@") == 0) {
 
		nickname = nickname.substr(1);
 
	}
 
	Swift::Presence::ref presence = Swift::Presence::create();
 
 	presence->setFrom(Swift::JID(m_legacyName, m_conversationManager->getComponent()->getJID().toBare(), nickname));
 
	presence->setTo(m_conversationManager->getUser()->getJID().toString());
src/networkplugin.cpp
Show inline comments
 
@@ -119,6 +119,21 @@ void NetworkPlugin::handleParticipantChanged(const std::string &user, const std:
 
	send(message);
 
}
 

	
 
void NetworkPlugin::handleRoomChanged(const std::string &user, const std::string &r, const std::string &nickname) {
 
	pbnetwork::Room room;
 
	room.set_username(user);
 
	room.set_nickname(nickname);
 
	room.set_room(r);
 
	room.set_password("");
 

	
 
	std::string message;
 
	room.SerializeToString(&message);
 

	
 
	WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_ROOM_NICKNAME_CHANGED);
 
 
 
	send(message);
 
}
 

	
 
void NetworkPlugin::handleConnected(bool error) {
 
	if (error) {
 
		std::cout << "Connecting error\n";
src/networkpluginserver.cpp
Show inline comments
 
@@ -225,6 +225,24 @@ void NetworkPluginServer::handleParticipantChangedPayload(const std::string &dat
 
	std::cout << payload.nickname() << "\n";
 
}
 

	
 
void NetworkPluginServer::handleRoomChangedPayload(const std::string &data) {
 
	pbnetwork::Room payload;
 
	if (payload.ParseFromString(data) == false) {
 
		return;
 
	}
 

	
 
	User *user = m_userManager->getUser(payload.username());
 
	if (!user)
 
		return;
 

	
 
	NetworkConversation *conv = (NetworkConversation *) user->getConversationManager()->getConversation(payload.room());
 
	if (!conv) {
 
		return;
 
	}
 

	
 
	conv->setNickname(payload.nickname());
 
}
 

	
 
void NetworkPluginServer::handleConvMessagePayload(const std::string &data) {
 
	pbnetwork::ConversationMessage payload;
 
// 	std::cout << "payload...\n";
 
@@ -292,6 +310,9 @@ void NetworkPluginServer::handleDataRead(boost::shared_ptr<Swift::Connection> c,
 
			case pbnetwork::WrapperMessage_Type_TYPE_PARTICIPANT_CHANGED:
 
				handleParticipantChangedPayload(wrapper.payload());
 
				break;
 
			case pbnetwork::WrapperMessage_Type_TYPE_ROOM_NICKNAME_CHANGED:
 
				handleRoomChangedPayload(wrapper.payload());
 
				break;
 
			default:
 
				return;
 
		}
src/pbnetwork.proto
Show inline comments
 
@@ -68,6 +68,7 @@ message WrapperMessage {
 
		TYPE_PART_ROOM				= 12;
 
		TYPE_PARTICIPANT_CHANGED	= 13;
 
		TYPE_PARTICIPANT_LEFT		= 14;
 
		TYPE_ROOM_NICKNAME_CHANGED	= 15;
 
	}
 
	required Type type = 1;
 
	optional bytes payload = 2;
0 comments (0 inline, 0 general)