X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=network%2Fmessages.cpp;h=912c36239d79f6ca67aa4a327627fe83fe189468;hp=e0fc29b348d88460aad306089e23b54d8c00088f;hb=09494f0681def3c6cf585eda25b8bb236560ddac;hpb=8b192b08f3df4ce0e7cc4a08564645c76efa688d diff --git a/network/messages.cpp b/network/messages.cpp index e0fc29b3..912c3623 100644 --- a/network/messages.cpp +++ b/network/messages.cpp @@ -23,6 +23,8 @@ extern BuiltinCmd builtins[]; +recvHandlerType Message::defaultRecvHandler; +sendHandlerType Message::defaultSendHandler; QHash Message::cmdTypes; Message::Message(QString _cmd, QStringList args) { @@ -30,25 +32,36 @@ Message::Message(QString _cmd, QStringList args) { params = args; } -void Message::init() { +void Message::init(recvHandlerType _r, sendHandlerType _s) { + defaultRecvHandler = _r; + defaultSendHandler = _s; + // Register builtin commands for(int i = 0; ; i++) { - if(!builtins[i].handler) break; + if(builtins[i].cmd.isEmpty()) break; CmdType c; c.cmd = builtins[i].cmd.toLower(); c.cmdDescr = builtins[i].cmdDescr; c.args = builtins[i].args; c.argsDescr = builtins[i].argsDescr; - c.handler = builtins[i].handler; + c.recvHandler = ( builtins[i].recvHandler ? builtins[i].recvHandler : defaultRecvHandler); + c.sendHandler = ( builtins[i].sendHandler ? builtins[i].sendHandler : defaultSendHandler); cmdTypes.insert(c.cmd, c); } } -cmdhandler Message::getCmdHandler() { +recvHandlerType Message::getRecvHandler() { + CmdType c = cmdTypes[cmd]; + if(c.recvHandler) return c.recvHandler; + qDebug() << "No recvHandler defined for " << cmd << "!"; + return 0; +} + +sendHandlerType Message::getSendHandler() { CmdType c = cmdTypes[cmd]; - if(c.handler) return c.handler; - qDebug() << "No handler defined for " << cmd << "!"; + if(c.sendHandler) return c.sendHandler; + qDebug() << "No sendHandler defined for " << cmd << "!"; return 0; } @@ -66,6 +79,3 @@ void Message::parseParams(QString str) { } */ -void Message::test1(QStringList foo) { qDebug() << "Test 1! " << cmd; }; - -void Message::test2(QStringList bar) { qDebug() << "Test 2!"; };