#include <QMetaObject>
-Server::Server() {
+Server::Server(QString net) : network(net) {
}
}
-void Server::init() {
- //Message::init(&dispatchServerMsg, &dispatchUserMsg);
-}
-
void Server::run() {
connect(&socket, SIGNAL(connected()), this, SLOT(socketConnected()));
connect(&socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
exec();
}
-void Server::connectToIrc( const QString & host, quint16 port ) {
- qDebug() << "Connecting...";
+void Server::connectToIrc(QString net) {
+ if(net != network) return; // not me!
+ QList<QVariant> servers = global->getData("Networks").toMap()[net].toMap()["Servers"].toList();
+ qDebug() << "Connecting to"<< servers[0].toMap();
+ QString host = servers[0].toMap()["Address"].toString();
+ quint16 port = servers[0].toMap()["Port"].toUInt();
+ sendStatusMsg(QString("Connecting to %1:%2...").arg(host).arg(port));
socket.connectToHost(host, port);
}
-void Server::disconnectFromIrc( ) {
+void Server::disconnectFromIrc(QString net) {
+ if(net != network) return; // not me!
socket.disconnectFromHost();
}
void Server::socketHasData() {
while(socket.canReadLine()) {
QString s = socket.readLine().trimmed();
- qDebug() << "Read: " << s;
+ //qDebug() << "Read: " << s;
emit recvRawServerMsg(s);
//Message *msg = Message::createFromServerString(this, s);
handleServerMsg(s);
qDebug() << "Socket state changed: " << state;
}
+void Server::userInput(QString net, QString buf, QString msg) {
+ putRawLine(msg);
+}
+
void Server::putRawLine(QString s) {
qDebug() << "SentRaw: " << s;
s += "\r\n";
defaultHandlerForServer(cmd, prefix, params);
}
} catch(Exception e) {
- emit recvLine(e.msg());
+ emit sendStatusMsg(e.msg());
}
}
void Server::defaultHandlerForServer(QString cmd, QString prefix, QStringList params) {
uint num = cmd.toUInt();
if(num) {
- recvLine(cmd + " " + params.join(" "));
+ emit sendMessage("", cmd + " " + params.join(" "));
} else {
- recvLine(QString("Unknown: ") + cmd + " " + params.join(" "));
+ emit sendMessage("", QString("Unknown: ") + cmd + " " + params.join(" "));
}
}
}
-/*
-void Server::handleServerMsg(Message *msg) {
- int cmdCode = msg->getCmdCode();
- QString prefix = msg->getPrefix();
- QStringList params = msg->getParams();
- if(cmdCode < 0) {
- switch(-cmdCode) {
- case CMD_PING:
- // PING <server1> [<server2>]
- if(params.size() < 1 || params.size() > 2) throw ParseError(msg);
- putCmd("PONG", params);
- break;
-
- default:
- throw Exception(QString("No handler installed for command: ") + msg->getCmd() + " " + msg->getParams().join(" "));
- }
- } else if(msg->getCmdCode() > 0) {
- switch(msg->getCmdCode()) {
-
- default:
- //
- throw Exception(msg->getCmd() + " " + msg->getParams().join(" "));
- }
-
- } else {
- throw UnknownCmdError(msg);
- }
-}
-*/
-
void Server::handleNoticeFromServer(QString prefix, QStringList params) {
- recvLine(params.join(" "));
+ sendMessage("", params.join(" "));
}