Я использую Qt’s QtRemoteObject
модуль для запуска процессов на многих устройствах. Текущая архитектура состоит в том, что есть хост-компьютер (назовите его ManagerNode), который создает объект-источник, затем есть много других удаленных компьютеров, которые работают в локальной сети (назовите их узлами процессора). При запуске многих процессорных узлов мне удалось подключить их к узлу ManagerNode. После подключения связь через сигналы / слоты была довольно тривиальной.
Мой вопрос: на ManagerNode я хотел бы зафиксировать какой-то сигнал, когда каждый из процессорных узлов подключен так же как когда процессорные узлы отключены (то есть из-за перебоев в Интернете / компьютерных сбоев).
Вот некоторые фрагменты моего кода:
Host / 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 …
Любая помощь по этому вопросу будет принята с благодарностью.
Задача ещё не решена.
Других решений пока нет …