We have a working message parser now, and a framework for handler functions!
[quassel.git] / network / server.h
index fcea80b..5eecb31 100644 (file)
@@ -24,7 +24,8 @@
 #include <QtCore>
 #include <QtNetwork>
 
-#include "messages.h"
+#include "quassel.h"
+#include "message.h"
 
 #define DEFAULT_PORT 6667
 
@@ -56,7 +57,8 @@ class Server : public QThread {
   signals:
     //void outputLine(const QString & /*, Buffer *target = 0 */);
 
-    void recvLine(const QString&);
+    void recvRawServerMsg(QString);
+    void recvLine(QString); // temp, should send a message to the GUI
 
   private slots:
     void socketHasData();
@@ -69,11 +71,24 @@ class Server : public QThread {
     QTcpSocket *socket;
     QTextStream stream;
 
-    static void handleServerMsg(Message *);
-    static void handleUserMsg(Message *);
+    void handleServerMsg(Message *);
+    QString handleUserMsg(Message *);
+    static inline void dispatchServerMsg(Message *msg) { msg->getServer()->handleServerMsg(msg); }
+    static inline void dispatchUserMsg(Message *msg)   { msg->getServer()->handleUserMsg(msg); }
 
+    class ParseError : public Exception {
+      public:
+        ParseError(Message *msg);
+    };
+
+    class UnknownCmdError : public Exception {
+      public:
+        UnknownCmdError(Message *msg);
+    };
 };
 
+class Buffer {};
+
 /*
 class TcpConnection : public QThread {
   Q_OBJECT