TO_UTF8/FROM_UTF8
This commit is contained in:
parent
dd9a404392
commit
3014cc2e1c
3 changed files with 57 additions and 48 deletions
|
@ -2,10 +2,13 @@
|
|||
#include <IrcCommand>
|
||||
#include <IrcMessage>
|
||||
|
||||
#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;
|
||||
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
#include <IrcCommand>
|
||||
#include <IrcMessage>
|
||||
|
||||
#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<std::string>::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<std::string>::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<std::string>::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);
|
||||
|
|
|
@ -3,13 +3,16 @@
|
|||
#include <IrcCommand>
|
||||
#include <IrcMessage>
|
||||
|
||||
#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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue