-#include <QtDebug>
-
-extern BuiltinCmd builtins[];
-
-recvHandlerType Message::defaultRecvHandler;
-sendHandlerType Message::defaultSendHandler;
-QHash<QString, CmdType> 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;
-}