summaryrefslogtreecommitdiffstats
path: root/src/remoteobjects/qremoteobjectnode_p.h
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-04-30 11:27:26 +0200
committerLiang Qi <liang.qi@qt.io>2018-04-30 11:27:26 +0200
commit0c22abe50063801b74d326430894d98f36d28b61 (patch)
treeb937c6c2c8fe472e48ba42176fad83589f1a34c6 /src/remoteobjects/qremoteobjectnode_p.h
parent4b9cc97edd48b0508bf00afc7ec767249dd9b8fa (diff)
parent7fe4bc5c19f519b3adf7209a37e3d8e5cc1e214d (diff)
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts: src/remoteobjects/qremoteobjectnode.cpp Change-Id: I91e662166909a52817e2e14d2b379c46b3756d89
Diffstat (limited to 'src/remoteobjects/qremoteobjectnode_p.h')
-rw-r--r--src/remoteobjects/qremoteobjectnode_p.h32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/remoteobjects/qremoteobjectnode_p.h b/src/remoteobjects/qremoteobjectnode_p.h
index 617075b..efcf936 100644
--- a/src/remoteobjects/qremoteobjectnode_p.h
+++ b/src/remoteobjects/qremoteobjectnode_p.h
@@ -89,11 +89,40 @@ public:
QRemoteObjectMetaObjectManager() {}
~QRemoteObjectMetaObjectManager();
- QMetaObject *metaObjectForType(const QString &type);
+ const QMetaObject *metaObjectForType(const QString &type);
QMetaObject *addDynamicType(QDataStream &in);
+ void addFromReplica(QConnectedReplicaImplementation *rep);
private:
QHash<QString, QMetaObject*> dynamicTypes;
+ QHash<QString, const QMetaObject*> staticTypes;
+};
+
+struct ProxyReplicaInfo;
+class ProxyInfo : public QObject
+{
+ Q_OBJECT
+public:
+ ProxyInfo(QRemoteObjectNode *node, QRemoteObjectHostBase *parent, QRemoteObjectHostBase::RemoteObjectNameFilter filter);
+ ~ProxyInfo() override;
+ enum class ProxyDirection { Forward, Reverse };
+
+ bool setReverseProxy(QRemoteObjectHostBase::RemoteObjectNameFilter filter);
+ void proxyObject(const QRemoteObjectSourceLocation &entry, ProxyDirection direction = ProxyDirection::Forward);
+ void unproxyObject(const QRemoteObjectSourceLocation &entry);
+
+ QRemoteObjectNode *proxyNode;
+ QRemoteObjectHostBase *parentNode;
+ QRemoteObjectHostBase::RemoteObjectNameFilter proxyFilter;
+ QRemoteObjectHostBase::RemoteObjectNameFilter reverseFilter;
+ QHash<QString, ProxyReplicaInfo*> proxiedReplicas;
+};
+
+struct ProxyReplicaInfo
+{
+ QRemoteObjectDynamicReplica* replica;
+ ProxyInfo::ProxyDirection direction;
+ ~ProxyReplicaInfo() { delete replica; }
};
class QRemoteObjectNodePrivate : public QObjectPrivate
@@ -168,6 +197,7 @@ public:
public:
QRemoteObjectSourceIo *remoteObjectIo;
+ ProxyInfo *proxyInfo = nullptr;
Q_DECLARE_PUBLIC(QRemoteObjectHostBase);
};