Warning

This section contains snippets that were automatically translated from C++ to Python and may contain errors.

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)
    SimpleSwitch srcSwitch # create SimpleSwitch
    # Create node that hosts registry:
    regNode = QRemoteObjectRegistryHost(QUrl("local:registry"))
    # Create node that will host source and connect to registry:
    QRemoteObjectHost srcNode(QUrl("local:replica"),
                              QUrl("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("local:registry"))

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