/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef PROTOCOL_H_
-#define PROTOCOL_H_
+#pragma once
#include <QByteArray>
#include <QDateTime>
#include <QVariantList>
+#include "quassel.h"
+
namespace Protocol {
const quint32 magic = 0x42b33f00;
struct RegisterClient : public HandshakeMessage
{
- inline RegisterClient(const QString &clientVersion, const QString &buildDate, bool sslSupported = false, int32_t features = 0)
- : clientVersion(clientVersion)
- , buildDate(buildDate)
- , sslSupported(sslSupported)
- , clientFeatures(features) {}
+ inline RegisterClient(Quassel::Features clientFeatures, const QString &clientVersion, const QString &buildDate, bool sslSupported = false)
+ : features(std::move(clientFeatures))
+ , clientVersion(clientVersion)
+ , buildDate(buildDate)
+ , sslSupported(sslSupported)
+ {}
+ Quassel::Features features;
QString clientVersion;
QString buildDate;
// this is only used by the LegacyProtocol in compat mode
bool sslSupported;
- int32_t clientFeatures;
};
struct ClientRegistered : public HandshakeMessage
{
- inline ClientRegistered(quint32 coreFeatures, bool coreConfigured, const QVariantList &backendInfo, bool sslSupported, const QVariantList &authenticatorInfo)
- : coreFeatures(coreFeatures)
- , coreConfigured(coreConfigured)
- , backendInfo(backendInfo)
- , authenticatorInfo(authenticatorInfo)
- , sslSupported(sslSupported)
+ inline ClientRegistered(Quassel::Features coreFeatures, bool coreConfigured, const QVariantList &backendInfo, const QVariantList &authenticatorInfo, bool sslSupported)
+ : features(std::move(coreFeatures))
+ , coreConfigured(coreConfigured)
+ , backendInfo(backendInfo)
+ , authenticatorInfo(authenticatorInfo)
+ , sslSupported(sslSupported)
{}
- quint32 coreFeatures;
+ Quassel::Features features;
bool coreConfigured;
+ QVariantList backendInfo; // TODO: abstract this better
// The authenticatorInfo should be optional!
- QVariantList backendInfo; // TODO: abstract this better
QVariantList authenticatorInfo;
// this is only used by the LegacyProtocol in compat mode
struct SyncMessage : public SignalProxyMessage
{
- inline SyncMessage(const QByteArray &className, const QString &objectName, const QByteArray &slotName, const QVariantList ¶ms)
- : className(className), objectName(objectName), slotName(slotName), params(params) {}
+ SyncMessage() = default;
+ SyncMessage(const QByteArray &className, const QString &objectName, const QByteArray &slotName, const QVariantList ¶ms)
+ : className(className), objectName(objectName), slotName(slotName), params(params) {}
QByteArray className;
QString objectName;
struct RpcCall : public SignalProxyMessage
{
- inline RpcCall(const QByteArray &slotName, const QVariantList ¶ms)
- : slotName(slotName), params(params) {}
+ RpcCall() = default;
+ RpcCall(const QByteArray &slotName, const QVariantList ¶ms)
+ : slotName(slotName), params(params) {}
QByteArray slotName;
QVariantList params;
struct InitRequest : public SignalProxyMessage
{
- inline InitRequest(const QByteArray &className, const QString &objectName)
- : className(className), objectName(objectName) {}
+ InitRequest() = default;
+ InitRequest(const QByteArray &className, const QString &objectName)
+ : className(className), objectName(objectName) {}
QByteArray className;
QString objectName;
struct InitData : public SignalProxyMessage
{
- inline InitData(const QByteArray &className, const QString &objectName, const QVariantMap &initData)
- : className(className), objectName(objectName), initData(initData) {}
+ InitData() = default;
+ InitData(const QByteArray &className, const QString &objectName, const QVariantMap &initData)
+ : className(className), objectName(objectName), initData(initData) {}
QByteArray className;
QString objectName;
};
-#endif
+// Required for InternalPeer
+Q_DECLARE_METATYPE(Protocol::SyncMessage)
+Q_DECLARE_METATYPE(Protocol::RpcCall)
+Q_DECLARE_METATYPE(Protocol::InitRequest)
+Q_DECLARE_METATYPE(Protocol::InitData)