Properly use the lookup id

master
Michael Zanetti 2020-03-25 13:44:16 +01:00
parent 506039ab0c
commit 130a7202ae
2 changed files with 7 additions and 6 deletions

View File

@ -44,22 +44,23 @@ IntegrationPluginDynatrace::IntegrationPluginDynatrace()
void IntegrationPluginDynatrace::discoverThings(ThingDiscoveryInfo *info)
{
m_asyncDiscoveries.append(info);
// NOTE: QHostInfo::lookupHost will call in from another thread using the Funtor syntax!
// https://bugreports.qt.io/browse/QTBUG-83073
// Using the old school syntax...
QHostInfo::lookupHost("ufo.home", this, SLOT(resolveIds(const QHostInfo &)));
int id = QHostInfo::lookupHost("ufo.home", this, SLOT(resolveIds(const QHostInfo &)));
m_asyncDiscoveries.insert(id, info);
}
void IntegrationPluginDynatrace::resolveIds(const QHostInfo &host)
{
if (m_asyncDiscoveries.isEmpty()) {
int id = host.lookupId();
if (!m_asyncDiscoveries.contains(id)) {
qCWarning(dcDynatrace()) << "Discvery result came in but request has vanished...";
return;
}
ThingDiscoveryInfo *info = m_asyncDiscoveries.takeFirst();
ThingDiscoveryInfo *info = m_asyncDiscoveries.take(id);
if (host.error() != QHostInfo::NoError) {
qCDebug(dcDynatrace()) << "Lookup failed:" << host.errorString();
info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("An error happened discovering the UFO in the network."));

View File

@ -65,7 +65,7 @@ private:
QHash<ThingId, Ufo *> m_ufoConnections;
QHash<QUuid, ThingActionInfo *> m_asyncActions;
QHash<QString, ThingSetupInfo *> m_asyncSetup;
QList<ThingDiscoveryInfo *> m_asyncDiscoveries;
QHash<int, ThingDiscoveryInfo *> m_asyncDiscoveries;
void getId(const QHostAddress &address);
};