make use of "use random server to connect"-setting and cycle through available server...
[quassel.git] / src / core / basichandler.h
index 6ae8d2e..757af6e 100644 (file)
@@ -24,6 +24,7 @@
 #include <QObject>
 #include <QString>
 #include <QStringList>
+#include <QHash>
 #include <QGenericArgument>
 
 #include "message.h"
@@ -37,25 +38,48 @@ class BasicHandler : public QObject {
 public:
   BasicHandler(NetworkConnection *parent = 0);
 
-  QStringList providesHandlers() const;
+  QStringList providesHandlers();
+
+  QString serverDecode(const QByteArray &string);
+  QStringList serverDecode(const QList<QByteArray> &stringlist);
+  QString channelDecode(const QString &bufferName, const QByteArray &string);
+  QStringList channelDecode(const QString &bufferName, const QList<QByteArray> &stringlist);
+  QString userDecode(const QString &userNick, const QByteArray &string);
+  QStringList userDecode(const QString &userNick, const QList<QByteArray> &stringlist);
+
+  QByteArray serverEncode(const QString &string);
+  QList<QByteArray> serverEncode(const QStringList &stringlist);
+  QByteArray channelEncode(const QString &bufferName, const QString &string);
+  QList<QByteArray> channelEncode(const QString &bufferName, const QStringList &stringlist);
+  QByteArray userEncode(const QString &userNick, const QString &string);
+  QList<QByteArray> userEncode(const QString &userNick, const QStringList &stringlist);
 
 signals:
-  void displayMsg(Message::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None);
-  void putCmd(QString cmd, QStringList params, QString prefix = 0);
-  void putRawLine(QString msg);
-  
-protected:
-  virtual void handle(const QString &member, const QGenericArgument &val0 = QGenericArgument(0),
-                     const QGenericArgument &val1 = QGenericArgument(), const QGenericArgument &val2 = QGenericArgument(),
-                     const QGenericArgument &val3 = QGenericArgument(), const QGenericArgument &val4 = QGenericArgument(),
-                     const QGenericArgument &val5 = QGenericArgument(), const QGenericArgument &val6 = QGenericArgument(),
-                     const QGenericArgument &val7 = QGenericArgument(), const QGenericArgument &val8 = QGenericArgument());
-           
-  NetworkConnection *server;
-  
+  void displayMsg(Message::Type, BufferInfo::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None);
+  void putCmd(const QString &cmd, const QVariantList &params, const QByteArray &prefix);
+  void putRawLine(const QByteArray &msg);
 
 protected:
-  Network *network() const;
+  void displayMsg(Message::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None);
+  void putCmd(const QString &cmd, const QByteArray &param, const QByteArray &prefix = QByteArray());
+  void putCmd(const QString &cmd, const QList<QByteArray> &params, const QByteArray &prefix = QByteArray());
+
+  virtual void handle(const QString &member, QGenericArgument val0 = QGenericArgument(0),
+                      QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(),
+                      QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(),
+                      QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(),
+                      QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument());
+
+
+  Network * network() const;
+  NetworkConnection * networkConnection() const;
+  BufferInfo::Type typeByTarget(const QString &target) const;
 
+private:
+  const QHash<QString, int> &handlerHash();
+  QHash<QString, int> _handlerHash;
+  int defaultHandler;
+  NetworkConnection *_networkConnection;
+  bool initDone;
 };
 #endif