File indexing completed on 2024-04-28 04:58:00
0001 /* 0002 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0003 SPDX-FileCopyrightText: 2019 Harald Sitter <sitter@kde.org> 0004 */ 0005 0006 #ifndef DNSSDDISCOVERER_H 0007 #define DNSSDDISCOVERER_H 0008 0009 #include <QObject> 0010 0011 #include <KDNSSD/RemoteService> 0012 #include <KDNSSD/ServiceBrowser> 0013 0014 #include "discovery.h" 0015 0016 class DNSSDDiscovery : public Discovery 0017 { 0018 public: 0019 DNSSDDiscovery(KDNSSD::RemoteService::Ptr service); 0020 QString udsName() const override; 0021 KIO::UDSEntry toEntry() const override; 0022 0023 private: 0024 KDNSSD::RemoteService::Ptr m_service; 0025 }; 0026 0027 class DNSSDDiscoverer : public QObject, public Discoverer 0028 { 0029 Q_OBJECT 0030 public: 0031 DNSSDDiscoverer(); 0032 0033 void start() override; 0034 bool isFinished() const override; 0035 0036 Q_SIGNALS: 0037 void newDiscovery(Discovery::Ptr discovery) override; 0038 void finished() override; 0039 0040 private: 0041 void stop() override; 0042 void maybeFinish(); 0043 0044 KDNSSD::ServiceBrowser m_browser{QStringLiteral("_smb._tcp")}; 0045 QList<KDNSSD::RemoteService::Ptr> m_services; 0046 int m_resolvedCount = 0; 0047 bool m_disconnected = false; 0048 }; 0049 0050 #endif // DNSSDDISCOVERER_H