X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsyncableobject.h;h=201c002c6b1fcbe947d9199efb82598b15e5fb32;hp=fbcdbbcdfe0447299d88e13497563970b924b66e;hb=e89cfe68c0b4d117ce79d0d38fcc085de77a3083;hpb=f824db0e31b54969e0b7fa0b5405b1e9173d482c diff --git a/src/common/syncableobject.h b/src/common/syncableobject.h index fbcdbbcd..201c002c 100644 --- a/src/common/syncableobject.h +++ b/src/common/syncableobject.h @@ -26,6 +26,8 @@ #include #include +#include "signalproxy.h" + class SyncableObject : public QObject { Q_OBJECT @@ -34,6 +36,8 @@ public: SyncableObject(const QString &objectName, QObject *parent = 0); SyncableObject(const SyncableObject &other, QObject *parent = 0); + void synchronize(SignalProxy *proxy); + //! Stores the object's state into a QVariantMap. /** The default implementation takes dynamic properties as well as getters that have * names starting with "init" and stores them in a QVariantMap. Override this method in @@ -65,6 +69,8 @@ public slots: virtual void update(const QVariantMap &properties); protected: + void sync_call__(SignalProxy::ProxyMode modeType, const char *funcname, ...); + void renameObject(const QString &newName); SyncableObject &operator=(const SyncableObject &other); @@ -81,6 +87,12 @@ private: bool _initialized; bool _allowClientUpdates; + QList _signalProxies; }; +#define so_sync(...) sync_call__(SignalProxy::Server, __func__, __VA_ARGS__); +#define so_request(...) sync_call__(SignalProxy::Client, __func__, __VA_ARGS__); +#define so_arg_cast(x) const_cast(reinterpret_cast(&x)) + + #endif