/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2022 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
public:
- enum RequestType {
+ enum RequestType
+ {
Sync = 1,
RpcCall,
InitRequest,
HeartBeatReply
};
- LegacyPeer(AuthHandler *authHandler, QTcpSocket *socket, QObject *parent = 0);
+ LegacyPeer(AuthHandler* authHandler, QTcpSocket* socket, Compressor::CompressionLevel level, QObject* parent = nullptr);
- Protocol::Type protocol() const { return Protocol::LegacyProtocol; }
+ Protocol::Type protocol() const override { return Protocol::LegacyProtocol; }
+ QString protocolName() const override { return "the legacy protocol"; }
- void setSignalProxy(SignalProxy *proxy);
+ void setSignalProxy(SignalProxy* proxy) override;
- 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::RegisterClient& msg) override;
+ void dispatch(const Protocol::ClientDenied& msg) override;
+ void dispatch(const Protocol::ClientRegistered& msg) override;
+ void dispatch(const Protocol::SetupData& msg) override;
+ void dispatch(const Protocol::SetupFailed& msg) override;
+ void dispatch(const Protocol::SetupDone& msg) override;
+ void dispatch(const Protocol::Login& msg) override;
+ void dispatch(const Protocol::LoginFailed& msg) override;
+ void dispatch(const Protocol::LoginSuccess& msg) override;
+ void dispatch(const Protocol::SessionState& msg) override;
- void dispatch(const Protocol::SyncMessage &msg);
- void dispatch(const Protocol::RpcCall &msg);
- void dispatch(const Protocol::InitRequest &msg);
- void dispatch(const Protocol::InitData &msg);
+ void dispatch(const Protocol::SyncMessage& msg) override;
+ void dispatch(const Protocol::RpcCall& msg) override;
+ void dispatch(const Protocol::InitRequest& msg) override;
+ void dispatch(const Protocol::InitData& msg) override;
- void dispatch(const Protocol::HeartBeat &msg);
- void dispatch(const Protocol::HeartBeatReply &msg);
+ void dispatch(const Protocol::HeartBeat& msg) override;
+ void dispatch(const Protocol::HeartBeatReply& msg) override;
signals:
- void protocolError(const QString &errorString);
+ void protocolError(const QString& errorString);
- // only used in compat mode
- void protocolVersionMismatch(int actual, int expected);
+private:
+ using RemotePeer::writeMessage;
+ void writeMessage(const QVariant& item);
+ void processMessage(const QByteArray& msg) override;
-protected slots:
- void onSocketDataAvailable();
+ void handleHandshakeMessage(const QVariant& msg);
+ void handlePackedFunc(const QVariant& packedFunc);
+ void dispatchPackedFunc(const QVariantList& packedFunc);
+
+ void toLegacyIrcUsersAndChannels(QVariantMap& initData);
+ void fromLegacyIrcUsersAndChannels(QVariantMap& initData);
-private:
- bool readSocketData(QVariant &item);
- void writeSocketData(const QVariant &item);
- void handleHandshakeMessage(const QVariant &msg);
- void handlePackedFunc(const QVariant &packedFunc);
- void dispatchPackedFunc(const QVariantList &packedFunc);
-
- QDataStream _stream;
- quint32 _blockSize;
bool _useCompression;
};