[Interest] QRemoteObjectDynamicReplica: How get a slot return value?

Daesdemon daesdemon at free.fr
Fri Aug 9 21:44:47 CEST 2019

Hi Brett,

Many thanks for the Test file link. That is really an interesting source 
of information. I looked in examples but not in tests.

My lone problem was I didn't know the optional 
Q_RETURN_ARG(QRemoteObjectPendingCall, call) required when wanted return 
value, and i didn't find information about a return value in the 
metamethod (RO seems to remove the ReturnValueType)

At my knowledge, this information is missing in documentation.

I have now everything working in C++ but how is exposed this 
QRemoteObjectPendingCall in QML ? with a PendingReply ?

Is there an example of that also (calling a slot with pending value on a 
dynamic replica from qml) ?



Le 08/08/2019 à 21:37, Stottlemyer, Brett (B.S.) a écrit :
> Hi,
> The constructor is private because you aren’t intended to create the 
> dynamic replica directly, you must get it from a node. The object 
> won’t be valid until it receives an initial state from a source in 
> another node, so the nodes must be connected together.
> See: 
> https://code.woboq.org/qt5/qtremoteobjects/src/remoteobjects/qremoteobjectnode.h.html#_ZN17QRemoteObjectNode14acquireDynamicERK7QString
> Once the node is initialized, you can use Qt’s introspection methods 
> to understand the properties, signals and slots available.
> A usage example can be found in the tests, here:
> https://code.woboq.org/qt5/qtremoteobjects/tests/auto/integration/tst_integration.cpp.html#_ZN15tst_Integration22slotTestDynamicReplicaEv
> Using dynamica replicas is available, but is generally much more 
> difficult than using repc.  So repc is certainly recommended for most 
> use-cases.
> Regards,
> Brett
> *From:*Interest <interest-bounces at qt-project.org> *On Behalf Of *Daesdemon
> *Sent:* Thursday, August 8, 2019 3:03 PM
> *To:* interest at qt-project.org
> *Subject:* [Interest] QRemoteObjectDynamicReplica: How get a slot 
> return value?
> Hi Qt people,
> I have been advised to post this kind of question on the maillist 
> instead of forum. If it is the wrong place, please, forgive me.
> After digging in REPC generated code and RO sources, i found there is 
> some "kind of magic" in the REPC code:
>     - The call of returning value slot in REPC generated object use 
> the protected |sendWithReply| function of QRemoteObjectReplica (async 
> call, returning a kind of future object: |QRemoteObjectPendingReply<T> 
> with T of the ReturnType of the slot)|
> The problem is that the QRemoteObjectDynamicReplica have no public 
> constructor, so no way to use this function even by derivation.
> The slot signature in the dynamic replica metaobject also has no 
> functor parameter to get the return value async. In fact the signature 
> even loose the ReturnValue Type.
> So how could  we get a slot return value from a dynamic Replica ?
> If there is no way (without re-coding a large part) to do this, I find 
> this lack of feature really troublesome in my case, where the main 
> spec is to have no use of REPC.
> A subsidiary question could be : Why is the 
> |QRemoteObjectDynamicReplica(QRemoteObjectNode *node, const QString 
> &name)| constructor private ?
> If public, it would allow to overload acquireDynamic in 
> QRemoteObjectNode and extend QRemoteObjectDynamicReplica by 
> derivation, for, in this case, expose internally the sendAndReply 
> function.
> However the lack of the return value type would still be a problem.
> I understand principle of encapsulation but i am in dead-end there.
> If someone had a clue, i'll take it gratefully.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20190809/e7e71993/attachment.html>

More information about the Interest mailing list