From 3014cc2e1c8cd77b87280c8e379386fe6e473c48 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 27 Mar 2012 13:40:33 +0200 Subject: [PATCH] TO_UTF8/FROM_UTF8 --- backends/libcommuni/ircnetworkplugin.cpp | 21 ++++--- backends/libcommuni/session.cpp | 61 ++++++++++--------- .../libcommuni/singleircnetworkplugin.cpp | 23 ++++--- 3 files changed, 57 insertions(+), 48 deletions(-) diff --git a/backends/libcommuni/ircnetworkplugin.cpp b/backends/libcommuni/ircnetworkplugin.cpp index 6dacca20..74bdec24 100644 --- a/backends/libcommuni/ircnetworkplugin.cpp +++ b/backends/libcommuni/ircnetworkplugin.cpp @@ -2,10 +2,13 @@ #include #include +#define FROM_UTF8(WHAT) QString::fromUtf8((WHAT).c_str(), (WHAT).size()) +#define TO_UTF8(WHAT) std::string((WHAT).toUtf8().data(), (WHAT).toUtf8().size()) + IRCNetworkPlugin::IRCNetworkPlugin(Config *config, Swift::QtEventLoop *loop, const std::string &host, int port) { this->config = config; m_socket = new QTcpSocket(); - m_socket->connectToHost(QString::fromUtf8(host), port); + m_socket->connectToHost(FROM_UTF8(host), port); connect(m_socket, SIGNAL(readyRead()), this, SLOT(readData())); } @@ -28,8 +31,8 @@ void IRCNetworkPlugin::handleLoginRequest(const std::string &user, const std::st if (CONFIG_BOOL(config, "service.server_mode")) { MyIrcSession *session = new MyIrcSession(user, this); std::string h = user.substr(0, user.find("@")); - session->setNickName(QString::fromUtf8(h.substr(0, h.find("%")))); - session->setHost(QString::fromUtf8(h.substr(h.find("%") + 1))); + session->setNickName(FROM_UTF8(h.substr(0, h.find("%")))); + session->setHost(FROM_UTF8(h.substr(h.find("%") + 1))); session->setPort(6667); session->open(); std::cout << "CONNECTING IRC NETWORK " << h.substr(h.find("%") + 1) << "\n"; @@ -72,7 +75,7 @@ void IRCNetworkPlugin::handleMessageSendRequest(const std::string &user, const s } } std::cout << "MESSAGE " << u << " " << r << "\n"; - m_sessions[u]->sendCommand(IrcCommand::createMessage(QString::fromUtf8(r), QString::fromUtf8(message))); + m_sessions[u]->sendCommand(IrcCommand::createMessage(FROM_UTF8(r), FROM_UTF8(message))); std::cout << "SENT\n"; } @@ -89,8 +92,8 @@ void IRCNetworkPlugin::handleJoinRoomRequest(const std::string &user, const std: if (room.find("@") != std::string::npos) { // suffix is %irc.freenode.net to let MyIrcSession return #room%irc.freenode.net MyIrcSession *session = new MyIrcSession(user, this, room.substr(room.find("@"))); - session->setNickName(QString::fromUtf8(nickname)); - session->setHost(QString::fromUtf8(room.substr(room.find("@") + 1))); + session->setNickName(FROM_UTF8(nickname)); + session->setHost(FROM_UTF8(room.substr(room.find("@") + 1))); session->setPort(6667); session->open(); std::cout << "CONNECTING IRC NETWORK " << room.substr(room.find("@") + 1) << "\n"; @@ -103,10 +106,10 @@ void IRCNetworkPlugin::handleJoinRoomRequest(const std::string &user, const std: } std::cout << "JOINING " << r << "\n"; m_sessions[u]->addAutoJoinChannel(r); - m_sessions[u]->sendCommand(IrcCommand::createJoin(QString::fromUtf8(r), QString::fromUtf8(password))); + m_sessions[u]->sendCommand(IrcCommand::createJoin(FROM_UTF8(r), FROM_UTF8(password))); m_sessions[u]->rooms += 1; // update nickname, because we have nickname per session, no nickname per room. - handleRoomNicknameChanged(user, r, m_sessions[u]->nickName().toUtf8()); + handleRoomNicknameChanged(user, r, TO_UTF8(m_sessions[u]->nickName())); } void IRCNetworkPlugin::handleLeaveRoomRequest(const std::string &user, const std::string &room) { @@ -120,7 +123,7 @@ void IRCNetworkPlugin::handleLeaveRoomRequest(const std::string &user, const std if (m_sessions[u] == NULL) return; - m_sessions[u]->sendCommand(IrcCommand::createPart(QString::fromUtf8(r))); + m_sessions[u]->sendCommand(IrcCommand::createPart(FROM_UTF8(r))); m_sessions[u]->removeAutoJoinChannel(r); m_sessions[u]->rooms -= 1; diff --git a/backends/libcommuni/session.cpp b/backends/libcommuni/session.cpp index 495bb25c..08bdd726 100644 --- a/backends/libcommuni/session.cpp +++ b/backends/libcommuni/session.cpp @@ -15,6 +15,9 @@ #include #include +#define FROM_UTF8(WHAT) QString::fromUtf8((WHAT).c_str(), (WHAT).size()) +#define TO_UTF8(WHAT) std::string((WHAT).toUtf8().data(), (WHAT).toUtf8().size()) + #include "transport/logging.h" DEFINE_LOGGER(logger, "IRCSession"); @@ -38,13 +41,13 @@ void MyIrcSession::on_connected() { } for(std::list::const_iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { - sendCommand(IrcCommand::createJoin(QString::fromUtf8(*it))); + sendCommand(IrcCommand::createJoin(FROM_UTF8(*it))); } if (getIdentify().find(" ") != std::string::npos) { std::string to = getIdentify().substr(0, getIdentify().find(" ")); std::string what = getIdentify().substr(getIdentify().find(" ") + 1); - sendCommand(IrcCommand::createMessage(QString::fromUtf8(to), QString::fromUtf8(what))); + sendCommand(IrcCommand::createMessage(FROM_UTF8(to), FROM_UTF8(what))); } } @@ -67,30 +70,30 @@ bool MyIrcSession::correctNickname(std::string &nickname) { void MyIrcSession::on_joined(IrcMessage *message) { IrcJoinMessage *m = (IrcJoinMessage *) message; bool flags = 0; - std::string nickname = m->sender().name().toUtf8(); + std::string nickname = TO_UTF8(m->sender().name()); flags = correctNickname(nickname); - np->handleParticipantChanged(user, nickname, m->channel().toUtf8() + suffix, (int) flags, pbnetwork::STATUS_ONLINE); - LOG4CXX_INFO(logger, user << ": Joined " << m->parameters()[0].toUtf8()); + np->handleParticipantChanged(user, nickname, TO_UTF8(m->channel()), (int) flags, pbnetwork::STATUS_ONLINE); + LOG4CXX_INFO(logger, user << ": Joined " << TO_UTF8(m->parameters()[0])); } void MyIrcSession::on_parted(IrcMessage *message) { IrcPartMessage *m = (IrcPartMessage *) message; bool flags = 0; - std::string nickname = m->sender().name().toUtf8(); + std::string nickname = TO_UTF8(m->sender().name()); flags = correctNickname(nickname); - LOG4CXX_INFO(logger, user << ": " << nickname << " parted " << m->channel().toUtf8() + suffix); - np->handleParticipantChanged(user, nickname, m->channel().toUtf8() + suffix,(int) flags, pbnetwork::STATUS_NONE, m->reason().toUtf8()); + LOG4CXX_INFO(logger, user << ": " << nickname << " parted " << TO_UTF8(m->channel()) + suffix); + np->handleParticipantChanged(user, nickname, TO_UTF8(m->channel()) + suffix,(int) flags, pbnetwork::STATUS_NONE, TO_UTF8(m->reason())); } void MyIrcSession::on_quit(IrcMessage *message) { IrcQuitMessage *m = (IrcQuitMessage *) message; for(std::list::const_iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { bool flags = 0; - std::string nickname = m->sender().name().toUtf8(); + std::string nickname = TO_UTF8(m->sender().name()); flags = correctNickname(nickname); LOG4CXX_INFO(logger, user << ": " << nickname << " quit " << (*it) + suffix); - np->handleParticipantChanged(user, nickname, (*it) + suffix,(int) flags, pbnetwork::STATUS_NONE, m->reason().toUtf8()); + np->handleParticipantChanged(user, nickname, (*it) + suffix,(int) flags, pbnetwork::STATUS_NONE, TO_UTF8(m->reason())); } } @@ -98,10 +101,10 @@ void MyIrcSession::on_nickChanged(IrcMessage *message) { IrcNickMessage *m = (IrcNickMessage *) message; for(std::list::const_iterator it = m_autoJoin.begin(); it != m_autoJoin.end(); it++) { - std::string nickname = m->sender().name().toUtf8(); + std::string nickname = TO_UTF8(m->sender().name()); bool flags = m_modes[(*it) + nickname]; - LOG4CXX_INFO(logger, user << ": " << nickname << " changed nickname to " << m->nick().toUtf8()); - np->handleParticipantChanged(user, nickname, (*it) + suffix,(int) flags, pbnetwork::STATUS_ONLINE, "", m->nick().toUtf8()); + LOG4CXX_INFO(logger, user << ": " << nickname << " changed nickname to " << TO_UTF8(m->nick())); + np->handleParticipantChanged(user, nickname, (*it) + suffix,(int) flags, pbnetwork::STATUS_ONLINE, "", TO_UTF8(m->nick())); } } @@ -109,8 +112,8 @@ void MyIrcSession::on_modeChanged(IrcMessage *message) { IrcModeMessage *m = (IrcModeMessage *) message; // mode changed: "#testik" "HanzZ" "+o" "hanzz_k" - std::string nickname = m->argument().toUtf8(); - std::string mode = m->mode().toUtf8(); + std::string nickname = TO_UTF8(m->argument()); + std::string mode = TO_UTF8(m->mode()); if (nickname.empty()) return; LOG4CXX_INFO(logger, user << ": " << nickname << " changed mode to " << mode); @@ -130,29 +133,29 @@ void MyIrcSession::on_topicChanged(IrcMessage *message) { IrcTopicMessage *m = (IrcTopicMessage *) message; bool flags = 0; - std::string nickname = m->sender().name().toUtf8(); + std::string nickname = TO_UTF8(m->sender().name()); flags = correctNickname(nickname); - LOG4CXX_INFO(logger, user << ": " << nickname << " topic changed to " << m->topic().toUtf8()); - np->handleSubject(user, m->channel().toUtf8() + suffix, m->topic().toUtf8(), nickname); + LOG4CXX_INFO(logger, user << ": " << nickname << " topic changed to " << TO_UTF8(m->topic())); + np->handleSubject(user, TO_UTF8(m->channel()) + suffix, TO_UTF8(m->topic()), nickname); } void MyIrcSession::on_messageReceived(IrcMessage *message) { IrcPrivateMessage *m = (IrcPrivateMessage *) message; - std::string target = m->target().toUtf8(); + std::string target = TO_UTF8(m->target()); LOG4CXX_INFO(logger, user << ": Message from " << target); if (target.find("#") == 0) { bool flags = 0; - std::string nickname = m->sender().name().toUtf8(); + std::string nickname = TO_UTF8(m->sender().name()); flags = correctNickname(nickname); - np->handleMessage(user, target + suffix, m->message().toUtf8(), nickname); + np->handleMessage(user, target + suffix, TO_UTF8(m->message()), nickname); } else { bool flags = 0; - std::string nickname = m->sender().name().toUtf8(); + std::string nickname = TO_UTF8(m->sender().name()); flags = correctNickname(nickname); - np->handleMessage(user, nickname, m->message().toUtf8()); + np->handleMessage(user, nickname, TO_UTF8(m->message())); } } @@ -163,10 +166,10 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { IrcNumericMessage *m = (IrcNumericMessage *) message; switch (m->code()) { case 332: - m_topicData = m->parameters().value(2).toUtf8(); + m_topicData = TO_UTF8(m->parameters().value(2)); break; case 333: - np->handleSubject(user, m->parameters().value(1).toUtf8() + suffix, m_topicData, m->parameters().value(2).toUtf8()); + np->handleSubject(user, TO_UTF8(m->parameters().value(1)) + suffix, m_topicData, TO_UTF8(m->parameters().value(2))); break; case 353: channel = m->parameters().value(2); @@ -174,10 +177,10 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { for (int i = 0; i < members.size(); i++) { bool flags = 0; - std::string nickname = members.at(i).toUtf8(); + std::string nickname = TO_UTF8(members.at(i)); flags = correctNickname(nickname); - m_modes[channel.toUtf8() + nickname] = flags; - np->handleParticipantChanged(user, nickname, channel.toUtf8() + suffix,(int) flags, pbnetwork::STATUS_ONLINE); + m_modes[TO_UTF8(channel) + nickname] = flags; + np->handleParticipantChanged(user, nickname, TO_UTF8(channel) + suffix,(int) flags, pbnetwork::STATUS_ONLINE); } break; case 432: @@ -193,7 +196,7 @@ void MyIrcSession::on_numericMessageReceived(IrcMessage *message) { } void MyIrcSession::onMessageReceived(IrcMessage *message) { - LOG4CXX_INFO(logger, user << ": " << message->toString().toUtf8()); + LOG4CXX_INFO(logger, user << ": " << TO_UTF8(message->toString())); switch (message->type()) { case IrcMessage::Join: on_joined(message); diff --git a/backends/libcommuni/singleircnetworkplugin.cpp b/backends/libcommuni/singleircnetworkplugin.cpp index c36d851a..cce79c7b 100644 --- a/backends/libcommuni/singleircnetworkplugin.cpp +++ b/backends/libcommuni/singleircnetworkplugin.cpp @@ -3,13 +3,16 @@ #include #include +#define FROM_UTF8(WHAT) QString::fromUtf8((WHAT).c_str(), (WHAT).size()) +#define TO_UTF8(WHAT) std::string((WHAT).toUtf8().data(), (WHAT).toUtf8().size()) + DEFINE_LOGGER(logger, "SingleIRCNetworkPlugin"); SingleIRCNetworkPlugin::SingleIRCNetworkPlugin(Config *config, Swift::QtEventLoop *loop, const std::string &host, int port) { this->config = config; m_server = config->getUnregistered().find("service.irc_server")->second; m_socket = new QTcpSocket(); - m_socket->connectToHost(QString::fromUtf8(host), port); + m_socket->connectToHost(FROM_UTF8(host), port); connect(m_socket, SIGNAL(readyRead()), this, SLOT(readData())); if (config->getUnregistered().find("service.irc_identify") != config->getUnregistered().end()) { @@ -44,10 +47,10 @@ void SingleIRCNetworkPlugin::handleLoginRequest(const std::string &user, const s LOG4CXX_INFO(logger, user << ": Connecting " << m_server << " as " << legacyName); MyIrcSession *session = new MyIrcSession(user, this); - session->setUserName(QString::fromUtf8(legacyName)); - session->setNickName(QString::fromUtf8(legacyName)); - session->setRealName(QString::fromUtf8(legacyName)); - session->setHost(QString::fromUtf8(m_server)); + session->setUserName(FROM_UTF8(legacyName)); + session->setNickName(FROM_UTF8(legacyName)); + session->setRealName(FROM_UTF8(legacyName)); + session->setHost(FROM_UTF8(m_server)); session->setPort(6667); if (!password.empty()) { @@ -90,10 +93,10 @@ void SingleIRCNetworkPlugin::handleMessageSendRequest(const std::string &user, c } LOG4CXX_INFO(logger, user << ": Forwarding message to " << r); - m_sessions[user]->sendCommand(IrcCommand::createMessage(QString::fromUtf8(r), QString::fromUtf8(message))); + m_sessions[user]->sendCommand(IrcCommand::createMessage(FROM_UTF8(r), FROM_UTF8(message))); if (r.find("#") == 0) { - handleMessage(user, legacyName, message, m_sessions[user]->nickName().toUtf8()); + handleMessage(user, legacyName, message, TO_UTF8(m_sessions[user]->nickName())); } } @@ -105,11 +108,11 @@ void SingleIRCNetworkPlugin::handleJoinRoomRequest(const std::string &user, cons LOG4CXX_INFO(logger, user << ": Joining " << room); m_sessions[user]->addAutoJoinChannel(room); - m_sessions[user]->sendCommand(IrcCommand::createJoin(QString::fromUtf8(room), QString::fromUtf8(password))); + m_sessions[user]->sendCommand(IrcCommand::createJoin(FROM_UTF8(room), FROM_UTF8(password))); m_sessions[user]->rooms += 1; // update nickname, because we have nickname per session, no nickname per room. - handleRoomNicknameChanged(user, room, m_sessions[user]->userName().toUtf8()); + handleRoomNicknameChanged(user, room, TO_UTF8(m_sessions[user]->userName())); } void SingleIRCNetworkPlugin::handleLeaveRoomRequest(const std::string &user, const std::string &room) { @@ -122,7 +125,7 @@ void SingleIRCNetworkPlugin::handleLeaveRoomRequest(const std::string &user, con } LOG4CXX_INFO(logger, user << ": Leaving " << room); - m_sessions[u]->sendCommand(IrcCommand::createPart(QString::fromUtf8(r))); + m_sessions[u]->sendCommand(IrcCommand::createPart(FROM_UTF8(r))); m_sessions[u]->removeAutoJoinChannel(r); m_sessions[u]->rooms -= 1; }