Example 3: Connections to Remote Nodes using a Registry

Describes how the Qt Remote Objects registry establishes connections between nodes. .. _qtro-example3: This example illustrates the use of a Registry to build the node topology. For simple networks, we use a QUrl to create a direct connection between two nodes. For complex networks, we use a registry, where you use a different QUrl to point both the host and replica nodes to the registry. For only two nodes, the benefits of using a registry are minimal. But, as the network grows, using a registry means that all nodes only need to connect to the registry via a single QUrl . In comparison, with direct connections, nodes would have to maintain a list of QUrls for every single node that they link to.

Set up the Source

The simpleswitch.h and simpleswitch.cpp sources from Example can be used without modification. The difference is in the way a host node is created and connected to the registry:

main.cpp

from PySide6.QtCore import QCoreApplication
from simpleswitch import *
if __name__ == "__main__":

    a = QCoreApplication(argc, argv)
    srcSwitch = SimpleSwitch()
    regNode = QRemoteObjectRegistryHost(QUrl(QStringLiteral("local:registry")))
    srcNode = QRemoteObjectHost(QUrl(QStringLiteral("local:switch")), QUrl(QStringLiteral("local:registry")))
    #Note, you can add srcSwitch directly to regNode if desired.
    #We use two Nodes here, as the regNode could easily be in a third process.
    srcNode.enableRemoting(srcSwitch) # enable remoting of source object
    return a.exec()

Set up the Replica

The requestor object used for this example is the dynamic replica client discussed in Example 2 .

The only modification is in main.cpp: a Registry node is created to acquire a Replica :

repNode = QRemoteObjectNode(QUrl(QStringLiteral("local:registry")))

When run together with the source-side example, the output is identical to Example 1 .