/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2016 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
namespace Protocol {
+const quint32 magic = 0x42b33f00;
+
enum Type {
- LegacyProtocol = 1
+ InternalProtocol = 0x00,
+ LegacyProtocol = 0x01,
+ DataStreamProtocol = 0x02
+};
+
+
+enum Feature {
+ Encryption = 0x01,
+ Compression = 0x02
};
+
enum Handler {
SignalProxy,
AuthHandler
};
-/*** Handshake, handled by AuthHandler ***/
+/*** Handshake, handled by AuthHandler ***/
struct HandshakeMessage {
inline Handler handler() const { return AuthHandler; }
struct RegisterClient : public HandshakeMessage
{
- inline RegisterClient(const QString &clientVersion, bool sslSupported = false)
+ inline RegisterClient(const QString &clientVersion, const QString &buildDate, bool sslSupported = false)
: clientVersion(clientVersion)
+ , buildDate(buildDate)
, sslSupported(sslSupported) {}
QString clientVersion;
+ QString buildDate;
// this is only used by the LegacyProtocol in compat mode
bool sslSupported;
struct ClientRegistered : public HandshakeMessage
{
- inline ClientRegistered(quint32 coreFeatures, bool coreConfigured, const QVariantList &backendInfo, bool sslSupported, const QDateTime &coreStartTime)
+ inline ClientRegistered(quint32 coreFeatures, bool coreConfigured, const QVariantList &backendInfo, bool sslSupported)
: coreFeatures(coreFeatures)
, coreConfigured(coreConfigured)
, backendInfo(backendInfo)
, sslSupported(sslSupported)
- , coreStartTime(coreStartTime)
{}
quint32 coreFeatures;
// this is only used by the LegacyProtocol in compat mode
bool sslSupported;
- QDateTime coreStartTime;
};
// TODO: more generic format
struct SessionState : public HandshakeMessage
{
+ inline SessionState() {} // needed for QMetaType (for the mono client)
inline SessionState(const QVariantList &identities, const QVariantList &bufferInfos, const QVariantList &networkIds)
: identities(identities), bufferInfos(bufferInfos), networkIds(networkIds) {}
QVariantList networkIds;
};
-
/*** handled by SignalProxy ***/
struct SignalProxyMessage