X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=network%2Fmessage.cpp;h=37398225118edbcc3c9cead1d6bf6c3dc266d34d;hp=b2e6f880f09fe4088e5e49dddae7c18206a7a870;hb=1c7d9f13b744cd517c0769f453fd8dc3106cd94c;hpb=855fa19ba139d5dbdbf26bb660251ff8fe620e12 diff --git a/network/message.cpp b/network/message.cpp index b2e6f880..37398225 100644 --- a/network/message.cpp +++ b/network/message.cpp @@ -18,99 +18,18 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -/* OBSOLETE CODE! */ - #include "message.h" -#include - -extern BuiltinCmd builtins[]; - -recvHandlerType Message::defaultRecvHandler; -sendHandlerType Message::defaultSendHandler; -QHash Message::cmdTypes; - -Message::Message(Server *srv, Buffer *buf, QString _cmd, QString _prefix, QStringList _params) - : server(srv), buffer(buf), cmd(_cmd), prefix(_prefix), params(_params) { - - // Check if it's a registered cmd (or a numeric reply with a custom entry) - if(cmdTypes.contains(cmd)) { - CmdType c = cmdTypes[cmd]; - recvHandler = ( c.recvHandler ? c.recvHandler : defaultRecvHandler); - sendHandler = ( c.sendHandler ? c.sendHandler : defaultSendHandler); - cmdCode = - c.cmdCode; // named commands have a _negative_ code! - } else { - int t = cmd.toInt(); - if(t) { - cmdCode = t; - recvHandler = defaultRecvHandler; - sendHandler = defaultSendHandler; - } else { - // Unknown cmd! - qWarning() << "Unknown command: " << cmd; - cmdCode = 0; - } - } -} - -void Message::init(recvHandlerType _r, sendHandlerType _s) { - defaultRecvHandler = _r; - defaultSendHandler = _s; - - // Register builtin commands - for(int i = 0; ; i++) { - if(builtins[i].cmd.isEmpty()) break; - CmdType c; - c.cmdCode = builtins[i].cmdCode; - c.cmd = builtins[i].cmd.toUpper(); - c.cmdDescr = builtins[i].cmdDescr; - c.args = builtins[i].args; - c.argsDescr = builtins[i].argsDescr; - c.recvHandler = ( builtins[i].recvHandler ? builtins[i].recvHandler : defaultRecvHandler); - c.sendHandler = ( builtins[i].sendHandler ? builtins[i].sendHandler : defaultSendHandler); - cmdTypes.insert(c.cmd, c); - } - -} - -recvHandlerType Message::getRecvHandler() { - CmdType c = cmdTypes[cmd]; - if(c.recvHandler) return c.recvHandler; - qDebug() << "No recvHandler defined for " << cmd << "!"; - return 0; -} +#include -sendHandlerType Message::getSendHandler() { - CmdType c = cmdTypes[cmd]; - if(c.sendHandler) return c.sendHandler; - qDebug() << "No sendHandler defined for " << cmd << "!"; - return 0; +QDataStream &operator<<(QDataStream &out, const Message &msg) { + out << (quint8)msg.type << (quint8)msg.flags << msg.sender << msg.msg; + return out; } -/** This parses a raw string as sent by the server and constructs a message object which is then returned. - */ -Message * Message::createFromServerString(Server *srv, QString msg) { - if(msg.isEmpty()) { - qWarning() << "Received empty message from server!"; - return 0; - } - QString prefix; - QString cmd; - QStringList params; - if(msg[0] == ':') { - msg.remove(0,1); - prefix = msg.section(' ', 0, 0); - msg = msg.section(' ', 1); - } - cmd = msg.section(' ', 0, 0).toUpper(); - msg = msg.section(' ', 1); - QString left = msg.section(':', 0, 0); - QString trailing = msg.section(':', 1); - if(!left.isEmpty()) { - params << left.split(' ', QString::SkipEmptyParts); - } - if(!trailing.isEmpty()) { - params << trailing; - } - return new Message(srv, 0, cmd, prefix, params); - //qDebug() << "prefix: " << prefix << " cmd: " << cmd << " params: " << params; +QDataStream &operator>>(QDataStream &in, Message &msg) { + quint8 t, f; + in >> t >> f >> msg.sender >> msg.msg; + msg.type = (Message::Type)t; + msg.flags = (Message::Flags)f; + return in; }