We have a working message parser now, and a framework for handler functions!
[quassel.git] / network / server.h
index ce79fc8..5eecb31 100644 (file)
@@ -24,6 +24,9 @@
 #include <QtCore>
 #include <QtNetwork>
 
+#include "quassel.h"
+#include "message.h"
+
 #define DEFAULT_PORT 6667
 
 /**
@@ -38,6 +41,7 @@ class Server : public QThread {
   public:
     Server();
     ~Server();
+    static void init();
 
     void run();
 
@@ -53,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();
@@ -66,8 +71,24 @@ class Server : public QThread {
     QTcpSocket *socket;
     QTextStream stream;
 
+    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