/***************************************************************************
- * 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 DATASTREAMPEER_H
#define DATASTREAMPEER_H
-#include <QDataStream>
-
#include "../../remotepeer.h"
class QDataStream;
Q_OBJECT
public:
- enum RequestType {
+ enum RequestType
+ {
Sync = 1,
RpcCall,
InitRequest,
HeartBeatReply
};
- DataStreamPeer(AuthHandler *authHandler, QTcpSocket *socket, quint16 features, QObject *parent = 0);
+ DataStreamPeer(AuthHandler* authHandler, QTcpSocket* socket, quint16 features, Compressor::CompressionLevel level, QObject* parent = nullptr);
- Protocol::Type protocol() const { return Protocol::DataStreamProtocol; }
+ Protocol::Type protocol() const override { return Protocol::DataStreamProtocol; }
+ QString protocolName() const override { return "the DataStream protocol"; }
static quint16 supportedFeatures();
static bool acceptsFeatures(quint16 peerFeatures);
- quint16 enabledFeatures() const;
-
- 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);
- void dispatch(const Protocol::InitData &msg);
-
- void dispatch(const Protocol::HeartBeat &msg);
- void dispatch(const Protocol::HeartBeatReply &msg);
+ quint16 enabledFeatures() const override;
+
+ 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) 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) override;
+ void dispatch(const Protocol::HeartBeatReply& msg) override;
signals:
- void protocolError(const QString &errorString);
-
-protected slots:
- void onSocketDataAvailable();
+ void protocolError(const QString& errorString);
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;
+ using RemotePeer::writeMessage;
+ void writeMessage(const QVariantMap& handshakeMsg);
+ void writeMessage(const QVariantList& sigProxyMsg);
+ void processMessage(const QByteArray& msg) override;
+
+ void handleHandshakeMessage(const QVariantList& mapData);
+ void handlePackedFunc(const QVariantList& packedFunc);
+ void dispatchPackedFunc(const QVariantList& packedFunc);
};
#endif