28
28
namespace Protocol {
30
const quint32 magic = 0x42b33f00;
33
LegacyProtocol = 0x01,
34
DataStreamProtocol = 0x02
50
/*** Handshake, handled by AuthHandler ***/
52
struct HandshakeMessage {
53
inline Handler handler() const { return AuthHandler; }
57
struct RegisterClient : public HandshakeMessage
59
inline RegisterClient(const QString &clientVersion, bool sslSupported = false)
60
: clientVersion(clientVersion)
61
, sslSupported(sslSupported) {}
63
QString clientVersion;
65
// this is only used by the LegacyProtocol in compat mode
70
struct ClientDenied : public HandshakeMessage
72
inline ClientDenied(const QString &errorString)
73
: errorString(errorString) {}
79
struct ClientRegistered : public HandshakeMessage
81
inline ClientRegistered(quint32 coreFeatures, bool coreConfigured, const QVariantList &backendInfo, bool sslSupported, const QDateTime &coreStartTime)
82
: coreFeatures(coreFeatures)
83
, coreConfigured(coreConfigured)
84
, backendInfo(backendInfo)
85
, sslSupported(sslSupported)
86
, coreStartTime(coreStartTime)
91
QVariantList backendInfo; // TODO: abstract this better
93
// this is only used by the LegacyProtocol in compat mode
95
QDateTime coreStartTime;
99
struct SetupData : public HandshakeMessage
101
inline SetupData(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData)
102
: adminUser(adminUser), adminPassword(adminPassword), backend(backend), setupData(setupData) {}
105
QString adminPassword;
107
QVariantMap setupData;
111
struct SetupFailed : public HandshakeMessage
113
inline SetupFailed(const QString &errorString)
114
: errorString(errorString) {}
120
struct SetupDone : public HandshakeMessage
122
inline SetupDone() {}
126
struct Login : public HandshakeMessage
128
inline Login(const QString &user, const QString &password)
129
: user(user), password(password) {}
136
struct LoginFailed : public HandshakeMessage
138
inline LoginFailed(const QString &errorString)
139
: errorString(errorString) {}
145
struct LoginSuccess : public HandshakeMessage
147
inline LoginSuccess() {}
151
// TODO: more generic format
152
struct SessionState : public HandshakeMessage
154
inline SessionState() {} // needed for QMetaType (for the mono client)
155
inline SessionState(const QVariantList &identities, const QVariantList &bufferInfos, const QVariantList &networkIds)
156
: identities(identities), bufferInfos(bufferInfos), networkIds(networkIds) {}
158
QVariantList identities;
159
QVariantList bufferInfos;
160
QVariantList networkIds;
35
163
/*** handled by SignalProxy ***/
165
struct SignalProxyMessage
167
inline Handler handler() const { return SignalProxy; }
171
struct SyncMessage : public SignalProxyMessage
40
173
inline SyncMessage(const QByteArray &className, const QString &objectName, const QByteArray &slotName, const QVariantList ¶ms)
41
: _className(className), _objectName(objectName), _slotName(slotName), _params(params) {}
43
inline Handler handler() const { return SignalProxy; }
45
inline QByteArray className() const { return _className; }
46
inline QString objectName() const { return _objectName; }
47
inline QByteArray slotName() const { return _slotName; }
49
inline QVariantList params() const { return _params; }
52
QByteArray _className;
174
: className(className), objectName(objectName), slotName(slotName), params(params) {}
176
QByteArray className;
183
struct RpcCall : public SignalProxyMessage
62
185
inline RpcCall(const QByteArray &slotName, const QVariantList ¶ms)
63
: _slotName(slotName), _params(params) {}
65
inline Handler handler() const { return SignalProxy; }
67
inline QByteArray slotName() const { return _slotName; }
68
inline QVariantList params() const { return _params; }
186
: slotName(slotName), params(params) {}
193
struct InitRequest : public SignalProxyMessage
79
195
inline InitRequest(const QByteArray &className, const QString &objectName)
80
: _className(className), _objectName(objectName) {}
82
inline Handler handler() const { return SignalProxy; }
84
inline QByteArray className() const { return _className; }
85
inline QString objectName() const { return _objectName; }
88
QByteArray _className;
196
: className(className), objectName(objectName) {}
198
QByteArray className;
203
struct InitData : public SignalProxyMessage
96
205
inline InitData(const QByteArray &className, const QString &objectName, const QVariantMap &initData)
97
: _className(className), _objectName(objectName), _initData(initData) {}
99
inline Handler handler() const { return SignalProxy; }
101
inline QByteArray className() const { return _className; }
102
inline QString objectName() const { return _objectName; }
104
inline QVariantMap initData() const { return _initData; }
107
QByteArray _className;
109
QVariantMap _initData;
206
: className(className), objectName(objectName), initData(initData) {}
208
QByteArray className;
210
QVariantMap initData;
113
214
/*** handled by RemoteConnection ***/
118
inline HeartBeat(const QDateTime ×tamp) : _timestamp(timestamp) {}
120
inline QDateTime timestamp() const { return _timestamp; }
123
QDateTime _timestamp;
218
inline HeartBeat(const QDateTime ×tamp) : timestamp(timestamp) {}
224
struct HeartBeatReply
130
inline HeartBeatReply(const QDateTime ×tamp) : _timestamp(timestamp) {}
132
inline QDateTime timestamp() const { return _timestamp; }
135
QDateTime _timestamp;
226
inline HeartBeatReply(const QDateTime ×tamp) : timestamp(timestamp) {}