/***************************************************************************
- * 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
public:
- enum RequestType {
+ enum RequestType
+ {
Sync = 1,
RpcCall,
InitRequest,
HeartBeatReply
};
- LegacyPeer(QTcpSocket *socket, QObject *parent = 0);
- ~LegacyPeer() {}
+ LegacyPeer(AuthHandler* authHandler, QTcpSocket* socket, Compressor::CompressionLevel level, QObject* parent = nullptr);
+
+ 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::SyncMessage &msg);
- void dispatch(const Protocol::RpcCall &msg);
- void dispatch(const Protocol::InitRequest &msg);
- void dispatch(const Protocol::InitData &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::HeartBeat &msg);
- void dispatch(const Protocol::HeartBeatReply &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;
- // FIXME: this is only used for the auth phase and should be replaced by something more generic
- void writeSocketData(const QVariant &item);
+ void dispatch(const Protocol::HeartBeat& msg) override;
+ void dispatch(const Protocol::HeartBeatReply& msg) override;
-private slots:
- void socketDataAvailable();
+signals:
+ void protocolError(const QString& errorString);
private:
- bool readSocketData(QVariant &item);
- void handlePackedFunc(const QVariant &packedFunc);
- void dispatchPackedFunc(const QVariantList &packedFunc);
+ using RemotePeer::writeMessage;
+ void writeMessage(const QVariant& item);
+ void processMessage(const QByteArray& msg) override;
+
+ void handleHandshakeMessage(const QVariant& msg);
+ void handlePackedFunc(const QVariant& packedFunc);
+ void dispatchPackedFunc(const QVariantList& packedFunc);
+
+ void toLegacyIrcUsersAndChannels(QVariantMap& initData);
+ void fromLegacyIrcUsersAndChannels(QVariantMap& initData);
- QDataStream _stream;
- qint32 _blockSize;
bool _useCompression;
};