projects
/
quassel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8b192b0
)
Prepare some changes in the file layout.
author
Manuel Nickschas
<sputnick@quassel-irc.org>
Mon, 16 Oct 2006 16:43:52 +0000
(16:43 +0000)
committer
Manuel Nickschas
<sputnick@quassel-irc.org>
Mon, 16 Oct 2006 16:43:52 +0000
(16:43 +0000)
network/builtin_cmds.cpp
patch
|
blob
|
history
network/messages.cpp
patch
|
blob
|
history
network/messages.h
patch
|
blob
|
history
network/server.cpp
patch
|
blob
|
history
network/server.h
patch
|
blob
|
history
diff --git
a/network/builtin_cmds.cpp
b/network/builtin_cmds.cpp
index
3bffb1f
..
c7c3a9d
100644
(file)
--- a/
network/builtin_cmds.cpp
+++ b/
network/builtin_cmds.cpp
@@
-22,19
+22,25
@@
#include "messages.h"
#include "messages.h"
+/** This macro marks strings as translateable for Qt's linguist tools */
#define _(str) QT_TR_NOOP(str)
#define _(str) QT_TR_NOOP(str)
+
/** Defines the message codes according to RFCs 1495/281x.
* Named commands have a negative enum value.
*/
/** Defines the message codes according to RFCs 1495/281x.
* Named commands have a negative enum value.
*/
+/** \NOTE: Function handlers _must_ be global functions or static methods! */
+
+/** Set handler addresses to 0 to use the default (server) handler. */
+
BuiltinCmd builtins[] = {
{ _("admin"), _("Get information about the administrator of a server."),
_("[server]"), _("server: Server"),
BuiltinCmd builtins[] = {
{ _("admin"), _("Get information about the administrator of a server."),
_("[server]"), _("server: Server"),
-
&Message::test1
},
+
0, 0
},
- { 0, 0, 0, 0, 0 }
+ { 0, 0, 0, 0, 0
, 0
}
};
};
diff --git
a/network/messages.cpp
b/network/messages.cpp
index
e0fc29b
..
912c362
100644
(file)
--- a/
network/messages.cpp
+++ b/
network/messages.cpp
@@
-23,6
+23,8
@@
extern BuiltinCmd builtins[];
extern BuiltinCmd builtins[];
+recvHandlerType Message::defaultRecvHandler;
+sendHandlerType Message::defaultSendHandler;
QHash<QString, CmdType> Message::cmdTypes;
Message::Message(QString _cmd, QStringList args) {
QHash<QString, CmdType> Message::cmdTypes;
Message::Message(QString _cmd, QStringList args) {
@@
-30,25
+32,36
@@
Message::Message(QString _cmd, QStringList args) {
params = 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++) {
// 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;
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);
}
}
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];
CmdType c = cmdTypes[cmd];
- if(c.
handler) return c.h
andler;
- qDebug() << "No
h
andler defined for " << cmd << "!";
+ if(c.
sendHandler) return c.sendH
andler;
+ qDebug() << "No
sendH
andler defined for " << cmd << "!";
return 0;
}
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!"; };
diff --git
a/network/messages.h
b/network/messages.h
index
0ac7cff
..
c1a48ee
100644
(file)
--- a/
network/messages.h
+++ b/
network/messages.h
@@
-25,9
+25,12
@@
#include <QString>
#include <QStringList>
#include <QString>
#include <QStringList>
+class Server;
+class Buffer;
class Message;
class Message;
-typedef void (Message::* cmdhandler)(QStringList);
+typedef void (*sendHandlerType)(Message *); // handler for commands sent by the user
+typedef void (*recvHandlerType)(Message *); // handler for incoming messages
/**
* This contains information that depends (solely) on the message type, such as the handler function and help texts.
/**
* This contains information that depends (solely) on the message type, such as the handler function and help texts.
@@
-38,7
+41,8
@@
struct CmdType {
QString cmdDescr;
QString args;
QString argsDescr;
QString cmdDescr;
QString args;
QString argsDescr;
- cmdhandler handler;
+ recvHandlerType recvHandler;
+ sendHandlerType sendHandler;
};
};
@@
-56,16
+60,17
@@
class Message {
virtual ~Message() {};
virtual ~Message() {};
- static void init();
+ static void init(
recvHandlerType defaultRevcHandler, sendHandlerType defaultSendHandler
);
//static registerCmd();
//static unregisterCmd();
//static registerCmd();
//static unregisterCmd();
- cmdhandler getCmdHandler();
-
- void test1(QStringList);
- void test2(QStringList);
+ recvHandlerType getRecvHandler();
+ sendHandlerType getSendHandler();
protected:
protected:
+ static recvHandlerType defaultRecvHandler;
+ static sendHandlerType defaultSendHandler;
+
static QHash<QString, CmdType> cmdTypes;
};
static QHash<QString, CmdType> cmdTypes;
};
@@
-79,7
+84,8
@@
struct BuiltinCmd {
QString cmdDescr;
QString args;
QString argsDescr;
QString cmdDescr;
QString args;
QString argsDescr;
- cmdhandler handler;
+ recvHandlerType recvHandler;
+ sendHandlerType sendHandler;
};
#endif
};
#endif
diff --git
a/network/server.cpp
b/network/server.cpp
index
d493e67
..
ae8cd57
100644
(file)
--- a/
network/server.cpp
+++ b/
network/server.cpp
@@
-29,6
+29,10
@@
Server::~Server() {
delete socket;
}
delete socket;
}
+void Server::init() {
+ Message::init(&handleServerMsg, &handleUserMsg);
+}
+
void Server::run() {
connect(socket, SIGNAL(connected()), this, SLOT(socketConnected()));
connect(socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
void Server::run() {
connect(socket, SIGNAL(connected()), this, SLOT(socketConnected()));
connect(socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
@@
-88,4
+92,13
@@
void Server::socketStateChanged(QAbstractSocket::SocketState state) {
qDebug() << "Socket state changed: " << state;
}
qDebug() << "Socket state changed: " << state;
}
+void Server::handleServerMsg(Message *msg) {
+
+
+}
+
+void Server::handleUserMsg(Message *msg) {
+
+
+}
diff --git
a/network/server.h
b/network/server.h
index
ce79fc8
..
fcea80b
100644
(file)
--- a/
network/server.h
+++ b/
network/server.h
@@
-24,6
+24,8
@@
#include <QtCore>
#include <QtNetwork>
#include <QtCore>
#include <QtNetwork>
+#include "messages.h"
+
#define DEFAULT_PORT 6667
/**
#define DEFAULT_PORT 6667
/**
@@
-38,6
+40,7
@@
class Server : public QThread {
public:
Server();
~Server();
public:
Server();
~Server();
+ static void init();
void run();
void run();
@@
-66,6
+69,9
@@
class Server : public QThread {
QTcpSocket *socket;
QTextStream stream;
QTcpSocket *socket;
QTextStream stream;
+ static void handleServerMsg(Message *);
+ static void handleUserMsg(Message *);
+
};
/*
};
/*