X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=network%2Fserver.h;h=c5a3daa5c09c32c8a43b61f5b017539c5a17324c;hp=5eecb31bff89b9f728c6a542af784be05d2e181f;hb=057883f768f86257c9dbefeb5ef12403b207b773;hpb=84516825d33a1b448a894eaf2e804cabb032f5f1 diff --git a/network/server.h b/network/server.h index 5eecb31b..c5a3daa5 100644 --- a/network/server.h +++ b/network/server.h @@ -22,16 +22,19 @@ #define _SERVER_H_ #include +#include #include -#include "quassel.h" +#include "global.h" +#include "buffer.h" #include "message.h" #define DEFAULT_PORT 6667 -/** + +/*! * 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, + * We have this running 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... */ @@ -39,81 +42,97 @@ class Server : public QThread { Q_OBJECT public: - Server(); + Server(QString network); ~Server(); - static void init(); - - void run(); // serverState state(); + bool isConnected() { return socket.state() == QAbstractSocket::ConnectedState; } + QString getNetwork() { return network; } public slots: // void setServerOptions(); - void connectToIrc(const QString &host, quint16 port = DEFAULT_PORT); - void disconnectFromIrc(); + void connectToIrc(QString net); + void disconnectFromIrc(QString net); + void userInput(QString net, QString buffer, QString msg); - 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 exitThread(); + signals: void recvRawServerMsg(QString); - void recvLine(QString); // temp, should send a message to the GUI + void displayStatusMsg(QString); + void displayMsg(QString buffer, Message msg); + void disconnected(); + + void nickAdded(QString network, QString nick, VarMap props); + void nickRemoved(QString network, QString nick); + void nickUpdated(QString network, QString nick, VarMap props); + void modeSet(QString network, QString target, QString mode); + void topicSet(QString network, QString buffer, QString topic); + void setNicks(QString network, QString buffer, QStringList nicks); + void ownNickSet(QString network, QString newNick); + private slots: + void run(); void socketHasData(); void socketError(QAbstractSocket::SocketError); void socketConnected(); void socketDisconnected(); void socketStateChanged(QAbstractSocket::SocketState); - private: - QTcpSocket *socket; - QTextStream stream; + /* Message Handlers */ - 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); } + /* handleUser(QString, Buffer *) */ + void handleUserJoin(QString, Buffer *); + void handleUserQuote(QString, Buffer *); + void handleUserSay(QString, Buffer *); - class ParseError : public Exception { - public: - ParseError(Message *msg); - }; - class UnknownCmdError : public Exception { - public: - UnknownCmdError(Message *msg); - }; -}; + /* handleServer(QString, QStringList); */ + void handleServerJoin(QString, QStringList); + void handleServerNotice(QString, QStringList); + void handleServerPing(QString, QStringList); + void handleServerPrivmsg(QString, QStringList); -class Buffer {}; + void handleServer001(QString, QStringList); // RPL_WELCOME + void handleServer331(QString, QStringList); // RPL_NOTOPIC + void handleServer332(QString, QStringList); // RPL_TOPIC + void handleServer333(QString, QStringList); // Topic set by... + void handleServer353(QString, QStringList); // RPL_NAMREPLY -/* -class TcpConnection : public QThread { - Q_OBJECT + void defaultServerHandler(QString cmd, QString prefix, QStringList params); + void defaultUserHandler(QString cmd, QString msg, Buffer *buf); + private: + QString network; + QTcpSocket socket; + QHash buffers; - public: - void run(); - QAbstractSocket::SocketState state() const; + QString currentNick; + QString currentServer; + VarMap networkSettings; + VarMap identity; + VarMap nicks; // stores all known nicks for the server - public slots: - void connectToHost(const QString &host, quint16 port = DEFAULT_PORT); - void disconnectFromHost(); - void sendLine(const QString &); + void handleServerMsg(QString rawMsg); + void handleUserMsg(QString buffer, QString usrMsg); - signals: - void recvLine(QString); - void error(QAbstractSocket::SocketError); - void connected(); - void disconnected(); - void stateChanged(QAbstractSocket::SocketState); + QString nickFromMask(QString mask); + QString userFromMask(QString mask); + QString hostFromMask(QString mask); - private: - QTcpSocket socket; - QTextStream stream; + class ParseError : public Exception { + public: + ParseError(QString cmd, QString prefix, QStringList params); + }; + + class UnknownCmdError : public Exception { + public: + UnknownCmdError(QString cmd, QString prefix, QStringList params); + }; }; -*/ #endif