X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fircserverhandler.h;h=652c808e6952ba600e8085292829de3dcd0d8dfc;hp=90db4b4550c84f24edd63385e22c0a0e097ade94;hb=326a0d0783c8ecffb6a7bae02fd74f66bd4242fa;hpb=4af42efb44f286b6d7fd18a05a74dd6d8cace394 diff --git a/src/core/ircserverhandler.h b/src/core/ircserverhandler.h index 90db4b45..652c808e 100644 --- a/src/core/ircserverhandler.h +++ b/src/core/ircserverhandler.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-10 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -21,9 +21,10 @@ #ifndef IRCSERVERHANDLER_H #define IRCSERVERHANDLER_H -#include "basichandler.h" +#include "corebasichandler.h" +#include "netsplit.h" -class IrcServerHandler : public BasicHandler { +class IrcServerHandler : public CoreBasicHandler { Q_OBJECT public: @@ -33,6 +34,7 @@ public: void handleServerMsg(QByteArray rawMsg); public slots: + void handleInvite(const QString &prefix, const QList ¶ms); void handleJoin(const QString &prefix, const QList ¶ms); void handleKick(const QString &prefix, const QList ¶ms); void handleMode(const QString &prefix, const QList ¶ms); @@ -44,7 +46,8 @@ public slots: void handlePrivmsg(const QString &prefix, const QList ¶ms); void handleQuit(const QString &prefix, const QList ¶ms); void handleTopic(const QString &prefix, const QList ¶ms); - + void handleCap(const QString &prefix, const QList ¶ms); // CAP framework + void handleAuthenticate(); // SASL auth - no params void handle001(const QString &prefix, const QList ¶ms); // RPL_WELCOME void handle005(const QString &prefix, const QList ¶ms); // RPL_ISUPPORT void handle221(const QString &prefix, const QList ¶ms); // RPL_UMODEIS @@ -78,9 +81,41 @@ public slots: void handle369(const QString &prefix, const QList ¶ms); // RPL_ENDOFWHOWAS void handle432(const QString &prefix, const QList ¶ms); // ERR_ERRONEUSNICKNAME void handle433(const QString &prefix, const QList ¶ms); // ERR_NICKNAMEINUSE + void handle437(const QString &prefix, const QList ¶ms); // ERR_UNAVAILRESOURCE void defaultHandler(QString cmd, const QString &prefix, const QList ¶ms); +private slots: + //! Joins after a netsplit + /** This slot handles a bulk-join after a netsplit is over + * \param channel The channel the users joined + * \param users The list of users that joind the channel + * \param modes The list of modes the users get set + * \param quitMessage The message we received when the netsplit occured + */ + void handleNetsplitJoin(const QString &channel, const QStringList &users, const QStringList &modes, const QString &quitMessage); + + //! Quits after a netsplit + /** This slot handles a bulk-quit after a netsplit occured + * \param channel The channel the users quitted + * \param users The list of users that got split + * \param quitMessage The message we received when the netsplit occured + */ + void handleNetsplitQuit(const QString &channel, const QStringList &users, const QString &quitMessage); + + //! Netsplit finished + /** This slot deletes the netsplit object that sent the finished() signal + */ + void handleNetsplitFinished(); + + void handleEarlyNetsplitJoin(const QString &channel, const QStringList &users, const QStringList &modes); + + //! Destroy any existing netsplits + /** This slot deletes all netsplit objects + * Used to get rid of existing netsplits on network reconnect + */ + void destroyNetsplits(); + private: void tryNextNick(const QString &errnick, bool erroneus = false); bool checkParamCount(const QString &methodName, const QList ¶ms, int minParams); @@ -90,7 +125,15 @@ private: bool _whois; QString _target; -}; + // structure to organize netsplits + // key: quit message + // value: the corresponding netsplit object + QHash _netsplits; + +#ifdef HAVE_QCA2 + QByteArray decrypt(const QString &target, const QByteArray &message, bool isTopic = false); +#endif +}; #endif