src: Yearly copyright bump
[quassel.git] / src / common / protocols / legacy / legacypeer.h
index a3aa178..896d445 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2013 by the Quassel Project                        *
+ *   Copyright (C) 2005-2019 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #ifndef LEGACYPEER_H
 #define LEGACYPEER_H
 
-#include <QDataStream>
-
 #include "../../remotepeer.h"
 
-class QDataStream;
-
 class LegacyPeer : public RemotePeer
 {
     Q_OBJECT
@@ -41,11 +37,24 @@ public:
         HeartBeatReply
     };
 
-    LegacyPeer(QTcpSocket *socket, QObject *parent = 0);
-    ~LegacyPeer() {}
+    LegacyPeer(AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent = 0);
+
+    Protocol::Type protocol() const { return Protocol::LegacyProtocol; }
+    QString protocolName() const { return "the legacy protocol"; }
 
     void setSignalProxy(SignalProxy *proxy);
 
+    void dispatch(const Protocol::RegisterClient &msg);
+    void dispatch(const Protocol::ClientDenied &msg);
+    void dispatch(const Protocol::ClientRegistered &msg);
+    void dispatch(const Protocol::SetupData &msg);
+    void dispatch(const Protocol::SetupFailed &msg);
+    void dispatch(const Protocol::SetupDone &msg);
+    void dispatch(const Protocol::Login &msg);
+    void dispatch(const Protocol::LoginFailed &msg);
+    void dispatch(const Protocol::LoginSuccess &msg);
+    void dispatch(const Protocol::SessionState &msg);
+
     void dispatch(const Protocol::SyncMessage &msg);
     void dispatch(const Protocol::RpcCall &msg);
     void dispatch(const Protocol::InitRequest &msg);
@@ -54,19 +63,24 @@ public:
     void dispatch(const Protocol::HeartBeat &msg);
     void dispatch(const Protocol::HeartBeatReply &msg);
 
-    // FIXME: this is only used for the auth phase and should be replaced by something more generic
-    void writeSocketData(const QVariant &item);
+signals:
+    void protocolError(const QString &errorString);
 
-private slots:
-    void socketDataAvailable();
+    // only used in compat mode
+    void protocolVersionMismatch(int actual, int expected);
 
 private:
-    bool readSocketData(QVariant &item);
+    using RemotePeer::writeMessage;
+    void writeMessage(const QVariant &item);
+    void processMessage(const QByteArray &msg);
+
+    void handleHandshakeMessage(const QVariant &msg);
     void handlePackedFunc(const QVariant &packedFunc);
     void dispatchPackedFunc(const QVariantList &packedFunc);
 
-    QDataStream _stream;
-    qint32 _blockSize;
+    void toLegacyIrcUsersAndChannels(QVariantMap &initData);
+    void fromLegacyIrcUsersAndChannels(QVariantMap &initData);
+
     bool _useCompression;
 };