X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fprotocol.h;h=2453a52051d45ea6f4ec6d3fbb09a766bb2d9b60;hp=d9d1049010d074b4cc19865d77b350de08061b23;hb=ee8b9f55860e340c1600188fddcfd557c7489f66;hpb=d6f3eedebc7f9619b04dffc5f48faa792950fdcd diff --git a/src/common/protocol.h b/src/common/protocol.h index d9d10490..2453a520 100644 --- a/src/common/protocol.h +++ b/src/common/protocol.h @@ -1,5 +1,5 @@ /*************************************************************************** - * 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 * @@ -18,13 +18,14 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef PROTOCOL_H_ -#define PROTOCOL_H_ +#pragma once #include #include #include +#include "quassel.h" + namespace Protocol { const quint32 magic = 0x42b33f00; @@ -42,7 +43,7 @@ enum Feature { }; -enum Handler { +enum class Handler { SignalProxy, AuthHandler }; @@ -51,17 +52,20 @@ enum Handler { /*** Handshake, handled by AuthHandler ***/ struct HandshakeMessage { - inline Handler handler() const { return AuthHandler; } + inline Handler handler() const { return Handler::AuthHandler; } }; struct RegisterClient : public HandshakeMessage { - inline RegisterClient(const QString &clientVersion, const QString &buildDate, bool sslSupported = false) - : clientVersion(clientVersion) - , buildDate(buildDate) - , sslSupported(sslSupported) {} + 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; @@ -81,20 +85,20 @@ struct ClientDenied : public HandshakeMessage struct ClientRegistered : public HandshakeMessage { - inline ClientRegistered(quint32 coreFeatures, bool coreConfigured, const QVariantList &backendInfo, bool sslSupported, const QVariantList &authBackendInfo) - : coreFeatures(coreFeatures) - , coreConfigured(coreConfigured) - , backendInfo(backendInfo) - , authBackendInfo(authBackendInfo) - , 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; - - // The authBackendInfo should be optional! QVariantList backendInfo; // TODO: abstract this better - QVariantList authBackendInfo; + + // The authenticatorInfo should be optional! + QVariantList authenticatorInfo; // this is only used by the LegacyProtocol in compat mode bool sslSupported; @@ -179,14 +183,15 @@ struct SessionState : public HandshakeMessage struct SignalProxyMessage { - inline Handler handler() const { return SignalProxy; } + inline Handler handler() const { return Handler::SignalProxy; } }; 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; @@ -197,8 +202,9 @@ struct SyncMessage : public SignalProxyMessage 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; @@ -207,8 +213,9 @@ struct RpcCall : public SignalProxyMessage 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; @@ -217,8 +224,9 @@ struct InitRequest : public SignalProxyMessage 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; @@ -246,4 +254,8 @@ struct HeartBeatReply }; -#endif +// Required for InternalPeer +Q_DECLARE_METATYPE(Protocol::SyncMessage) +Q_DECLARE_METATYPE(Protocol::RpcCall) +Q_DECLARE_METATYPE(Protocol::InitRequest) +Q_DECLARE_METATYPE(Protocol::InitData)