X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fprotocol.h;h=89ef40731840fb2535fdabf09a9dd8b026eff7ef;hp=af98b8b74f393363c21010df7b60cca3fb3ae5e5;hb=02bebb4c8f1c45397c55f1660176bfa0c303e703;hpb=76db8cdfbeffaaba359c8e80cf2146da9e9e7f8a diff --git a/src/common/protocol.h b/src/common/protocol.h index af98b8b7..89ef4073 100644 --- a/src/common/protocol.h +++ b/src/common/protocol.h @@ -27,99 +27,195 @@ namespace Protocol { -/*** handled by SignalProxy ***/ +enum Type { + LegacyProtocol = 1 +}; + +enum Handler { + SignalProxy, + AuthHandler +}; + +/*** Handshake, handled by AuthHandler ***/ + + +struct HandshakeMessage { + inline Handler handler() const { return AuthHandler; } +}; + -class SyncMessage +struct RegisterClient : public HandshakeMessage { -public: - inline SyncMessage(const QByteArray &className, const QString &objectName, const QByteArray &slotName, const QVariantList ¶ms) - : _className(className), _objectName(objectName), _slotName(slotName), _params(params) {} + inline RegisterClient(const QString &clientVersion, bool sslSupported = false) + : clientVersion(clientVersion) + , sslSupported(sslSupported) {} + + QString clientVersion; + + // this is only used by the LegacyProtocol in compat mode + bool sslSupported; +}; - inline QByteArray className() const { return _className; } - inline QString objectName() const { return _objectName; } - inline QByteArray slotName() const { return _slotName; } - inline QVariantList params() const { return _params; } +struct ClientDenied : public HandshakeMessage +{ + inline ClientDenied(const QString &errorString) + : errorString(errorString) {} -private: - QByteArray _className; - QString _objectName; - QByteArray _slotName; - QVariantList _params; + QString errorString; }; -class RpcCall +struct ClientRegistered : public HandshakeMessage { -public: - inline RpcCall(const QByteArray &slotName, const QVariantList ¶ms) - : _slotName(slotName), _params(params) {} + inline ClientRegistered(quint32 coreFeatures, bool coreConfigured, const QVariantList &backendInfo, bool sslSupported, const QDateTime &coreStartTime) + : coreFeatures(coreFeatures) + , coreConfigured(coreConfigured) + , backendInfo(backendInfo) + , sslSupported(sslSupported) + , coreStartTime(coreStartTime) + {} + + quint32 coreFeatures; + bool coreConfigured; + QVariantList backendInfo; // TODO: abstract this better + + // this is only used by the LegacyProtocol in compat mode + bool sslSupported; + QDateTime coreStartTime; +}; - inline QByteArray slotName() const { return _slotName; } - inline QVariantList params() const { return _params; } -private: - QByteArray _slotName; - QVariantList _params; +struct SetupData : public HandshakeMessage +{ + inline SetupData(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData) + : adminUser(adminUser), adminPassword(adminPassword), backend(backend), setupData(setupData) {} + + QString adminUser; + QString adminPassword; + QString backend; + QVariantMap setupData; }; -class InitRequest +struct SetupFailed : public HandshakeMessage { -public: - inline InitRequest(const QByteArray &className, const QString &objectName) - : _className(className), _objectName(objectName) {} + inline SetupFailed(const QString &errorString) + : errorString(errorString) {} + + QString errorString; +}; - inline QByteArray className() const { return _className; } - inline QString objectName() const { return _objectName; } -private: - QByteArray _className; - QString _objectName; +struct SetupDone : public HandshakeMessage +{ + inline SetupDone() {} }; -class InitData +struct Login : public HandshakeMessage { -public: - inline InitData(const QByteArray &className, const QString &objectName, const QVariantMap &initData) - : _className(className), _objectName(objectName), _initData(initData) {} + inline Login(const QString &user, const QString &password) + : user(user), password(password) {} + + QString user; + QString password; +}; - inline QByteArray className() const { return _className; } - inline QString objectName() const { return _objectName; } - inline QVariantMap initData() const { return _initData; } +struct LoginFailed : public HandshakeMessage +{ + inline LoginFailed(const QString &errorString) + : errorString(errorString) {} -private: - QByteArray _className; - QString _objectName; - QVariantMap _initData; + QString errorString; }; -/*** handled by RemoteConnection ***/ +struct LoginSuccess : public HandshakeMessage +{ + inline LoginSuccess() {} +}; -class HeartBeat + +// TODO: more generic format +struct SessionState : public HandshakeMessage { -public: - inline HeartBeat(const QDateTime ×tamp) : _timestamp(timestamp) {} + inline SessionState(const QVariantList &identities, const QVariantList &bufferInfos, const QVariantList &networkIds) + : identities(identities), bufferInfos(bufferInfos), networkIds(networkIds) {} + + QVariantList identities; + QVariantList bufferInfos; + QVariantList networkIds; +}; - inline QDateTime timestamp() const { return _timestamp; } -private: - QDateTime _timestamp; +/*** handled by SignalProxy ***/ + +struct SignalProxyMessage +{ + inline Handler handler() const { return 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) {} + + QByteArray className; + QString objectName; + QByteArray slotName; + QVariantList params; +}; + + +struct RpcCall : public SignalProxyMessage +{ + inline 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) {} + + 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) {} + + QByteArray className; + QString objectName; + QVariantMap initData; }; -class HeartBeatReply +/*** handled by RemoteConnection ***/ + +struct HeartBeat { -public: - inline HeartBeatReply(const QDateTime ×tamp) : _timestamp(timestamp) {} + inline HeartBeat(const QDateTime ×tamp) : timestamp(timestamp) {} - inline QDateTime timestamp() const { return _timestamp; } + QDateTime timestamp; +}; + + +struct HeartBeatReply +{ + inline HeartBeatReply(const QDateTime ×tamp) : timestamp(timestamp) {} -private: - QDateTime _timestamp; + QDateTime timestamp; };