当连接/断开副本时,QtRemoteObject在主机中接收信号

时间:2018-06-04 15:10:33

标签: c++ qt remoteobject

我使用Qt的QtRemoteObject模块在​​多台设备上运行流程。当前的体系结构是有一台主机(称之为ManagerNode),它创建了Source对象,然后还有许多其他远程计算机在局域网上运行(称之为处理器节点)。随着许多处理器节点的启动,我成功地将它们连接到ManagerNode。一旦通过信号/插槽进行连接通信非常简单。

我的问题是:在ManagerNode上,我希望在每个处理器节点连接以及时,当处理器节点断开时(即由于互联网中断/),我会锁定某种信号计算机崩溃)。

以下是我的代码的一些片段:

主机/ main.cpp中

#include <QCoreApplication>
#include "simpleswitch.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QRemoteObjectRegistryHost regHost(QUrl("tcp://10.81.2.42"));

    QRemoteObjectHost host;
    host.setHostUrl(QUrl("tcp://10.81.2.42:1"));
    host.setRegistryUrl(QUrl("tcp://10.81.2.42"));

    SimpleSwitch simpleSwitch;
    host.enableRemoting(&simpleSwitch);

    return a.exec();
}

副本/ main.cpp中

#include <QCoreApplication>
#include "client.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QRemoteObjectNode node(QUrl("tcp://10.81.2.42"));

    while (!node.waitForRegistry(1000));
    qDebug() << "Registry is Setup";

    QSharedPointer<SimpleSwitchReplica> ptr;
    ptr.reset(node.acquire<SimpleSwitchReplica>());
    Client rswitch(ptr);

    return a.exec();
}

我在SimpleSwitchReplica类中找到了StateChanged的信号,只要与ManagerNode有连接/断开连接,这就有效。但是这个信号是在ProcessorNode上发出的,而我想要ManagerNode上的信号......

对此的任何帮助将不胜感激。

0 个答案:

没有答案