QtRemoteObject получает сигнал в хосте, когда реплики подключены / отключены - PullRequest
0 голосов
/ 04 июня 2018

Я использую модуль Qt 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();
}

Replica / 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 ...

Любая помощь по этому вопросу будет принята с благодарностью.

...