我使用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上的信号......
对此的任何帮助将不胜感激。