#define _SERVER_H_
#include <QtCore>
+#include <QTimer>
#include <QtNetwork>
-#include "message.h"
+#include "global.h"
#define DEFAULT_PORT 6667
-/**
+/*! \file */
+
+/*! \class Server
* This is a server object, managing a single connection to an IRC server, handling the associated channels and so on.
* We have this run in its own thread mainly to not block other server objects or the core if something goes wrong,
* e.g. if some scripts starts running wild...
void run();
// serverState state();
+ bool isConnected() { return socket.state() == QAbstractSocket::ConnectedState; }
public slots:
// void setServerOptions();
void connectToIrc(const QString &host, quint16 port = DEFAULT_PORT);
void disconnectFromIrc();
- void putRawLine(const QString &input /*, Buffer *source = 0 */);
+ void putRawLine(QString input);
+ void putCmd(QString cmd, QStringList params, QString prefix = 0);
signals:
//void outputLine(const QString & /*, Buffer *target = 0 */);
void socketDisconnected();
void socketStateChanged(QAbstractSocket::SocketState);
+ /* Message Handlers */
+ /* handleXxxxFromServer(QString prefix, QStringList params); */
+ void handleNoticeFromServer(QString, QStringList);
+ void handlePingFromServer(QString, QStringList);
+
+ void defaultHandlerForServer(QString cmd, QString prefix, QStringList params);
+
private:
- QTcpSocket *socket;
+ QTcpSocket socket;
QTextStream stream;
- void handleServerMsg(Message *);
- void handleUserMsg(Message *);
- static inline void dispatchServerMsg(Message *msg) { msg->getServer()->handleServerMsg(msg); }
- static inline void dispatchUserMsg(Message *msg) { msg->getServer()->handleUserMsg(msg); }
+ void handleServerMsg(QString rawMsg);
+ void handleUserMsg(QString usrMsg);
+ //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(QString cmd, QString prefix, QStringList params);
+ };
+ class UnknownCmdError : public Exception {
+ public:
+ UnknownCmdError(QString cmd, QString prefix, QStringList params);
+ };
};
class Buffer {};
-/*
-class TcpConnection : public QThread {
- Q_OBJECT
-
-
- public:
- void run();
- QAbstractSocket::SocketState state() const;
-
- public slots:
- void connectToHost(const QString &host, quint16 port = DEFAULT_PORT);
- void disconnectFromHost();
- void sendLine(const QString &);
-
- signals:
- void recvLine(QString);
- void error(QAbstractSocket::SocketError);
- void connected();
- void disconnected();
- void stateChanged(QAbstractSocket::SocketState);
-
- private:
- QTcpSocket socket;
- QTextStream stream;
-};
-*/
#endif