X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=network%2Fserver.h;h=5e619588df85df2fcaa73d3576364c04fa06958e;hp=fcea80bb354ee9df23a8bca0e5c43491cd82cbcf;hb=04e21ce26ebabdde9586ca9d2a3168431e448df5;hpb=09494f0681def3c6cf585eda25b8bb236560ddac diff --git a/network/server.h b/network/server.h index fcea80bb..5e619588 100644 --- a/network/server.h +++ b/network/server.h @@ -22,13 +22,16 @@ #define _SERVER_H_ #include +#include #include -#include "messages.h" +#include "quassel.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... @@ -45,18 +48,21 @@ class Server : public QThread { 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 recvLine(const QString&); + void recvRawServerMsg(QString); + void recvLine(QString); // temp, should send a message to the GUI private slots: void socketHasData(); @@ -65,40 +71,34 @@ class Server : public QThread { void socketDisconnected(); void socketStateChanged(QAbstractSocket::SocketState); - private: - QTcpSocket *socket; - QTextStream stream; + /* Message Handlers */ + /* handleXxxxFromServer(QString prefix, QStringList params); */ + void handleNoticeFromServer(QString, QStringList); + void handlePingFromServer(QString, QStringList); - static void handleServerMsg(Message *); - static void handleUserMsg(Message *); - -}; + void defaultHandlerForServer(QString cmd, QString prefix, QStringList params); -/* -class TcpConnection : public QThread { - Q_OBJECT + private: + QTcpSocket socket; + QTextStream stream; + 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); } - public: - void run(); - QAbstractSocket::SocketState state() const; + class ParseError : public Exception { + public: + ParseError(QString cmd, QString prefix, QStringList params); + }; - public slots: - void connectToHost(const QString &host, quint16 port = DEFAULT_PORT); - void disconnectFromHost(); - void sendLine(const QString &); + class UnknownCmdError : public Exception { + public: + UnknownCmdError(QString cmd, QString prefix, QStringList params); + }; +}; - signals: - void recvLine(QString); - void error(QAbstractSocket::SocketError); - void connected(); - void disconnected(); - void stateChanged(QAbstractSocket::SocketState); +class Buffer {}; - private: - QTcpSocket socket; - QTextStream stream; -}; -*/ #endif