/***************************************************************************
- * 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 *
#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:
void handlePrivmsg(const QString &prefix, const QList<QByteArray> ¶ms);
void handleQuit(const QString &prefix, const QList<QByteArray> ¶ms);
void handleTopic(const QString &prefix, const QList<QByteArray> ¶ms);
-
+ void handleCap(const QString &prefix, const QList<QByteArray> ¶ms); // CAP framework
+ void handleAuthenticate(); // SASL auth - no params
void handle001(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_WELCOME
void handle005(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_ISUPPORT
void handle221(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_UMODEIS
void handle369(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_ENDOFWHOWAS
void handle432(const QString &prefix, const QList<QByteArray> ¶ms); // ERR_ERRONEUSNICKNAME
void handle433(const QString &prefix, const QList<QByteArray> ¶ms); // ERR_NICKNAMEINUSE
+ void handle437(const QString &prefix, const QList<QByteArray> ¶ms); // ERR_UNAVAILRESOURCE
void defaultHandler(QString cmd, const QString &prefix, const QList<QByteArray> ¶ms);
/** 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 QString &quitMessage);
+ 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
*/
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<QByteArray> ¶ms, int minParams);
// key: quit message
// value: the corresponding netsplit object
QHash<QString, Netsplit*> _netsplits;
-};
+#ifdef HAVE_QCA2
+ QByteArray decrypt(const QString &target, const QByteArray &message, bool isTopic = false);
+#endif
+};
#endif