#ifndef DISCOVERY_H #define DISCOVERY_H #include #include #include #include #include "host.h" class Discovery : public QObject { Q_OBJECT public: explicit Discovery(QObject *parent = nullptr); void discoverHosts(int timeout); void abort(); bool isRunning() const; signals: void finished(QList hosts); private: QStringList getDefaultTargets(); void finishDiscovery(); private slots: void discoveryFinished(int exitCode, QProcess::ExitStatus exitStatus); void hostLookupDone(const QHostInfo &info); void arpLookupDone(int exitCode, QProcess::ExitStatus exitStatus); void onTimeout(); private: QList m_discoveryProcesses; QTimer m_timeoutTimer; QHash m_pendingArpLookups; QHash m_pendingNameLookups; QList m_scanResults; }; #endif // DISCOVERY_H