diff --git a/libnymea-core/hardwaremanagerimplementation.cpp b/libnymea-core/hardwaremanagerimplementation.cpp index 7d9061ce..b23be53e 100644 --- a/libnymea-core/hardwaremanagerimplementation.cpp +++ b/libnymea-core/hardwaremanagerimplementation.cpp @@ -25,7 +25,6 @@ #include "platform/platform.h" #include "platform/platformzeroconfcontroller.h" -#include "network/zeroconf/zeroconfservicebrowser.h" #include "hardwaremanagerimplementation.h" #include "hardware/plugintimermanagerimplementation.h" @@ -72,8 +71,8 @@ HardwareManagerImplementation::HardwareManagerImplementation(Platform *platform, if (m_upnpDiscovery->available()) setResourceEnabled(m_upnpDiscovery, true); - if (m_platform->zeroConfController()->zeroConfServiceBrowser()->available()) - setResourceEnabled(m_platform->zeroConfController()->zeroConfServiceBrowser(), true); + if (m_platform->zeroConfController()->available()) + setResourceEnabled(m_platform->zeroConfController(), true); if (m_bluetoothLowEnergyManager->available()) setResourceEnabled(m_bluetoothLowEnergyManager, true); @@ -105,9 +104,9 @@ UpnpDiscovery *HardwareManagerImplementation::upnpDiscovery() return m_upnpDiscovery; } -ZeroConfServiceBrowser *HardwareManagerImplementation::zeroConfServiceBrowser() +PlatformZeroConfController *HardwareManagerImplementation::zeroConfController() { - return m_platform->zeroConfController()->zeroConfServiceBrowser(); + return m_platform->zeroConfController(); } BluetoothLowEnergyManager *HardwareManagerImplementation::bluetoothLowEnergyManager() diff --git a/libnymea-core/hardwaremanagerimplementation.h b/libnymea-core/hardwaremanagerimplementation.h index b69df71b..5df983f4 100644 --- a/libnymea-core/hardwaremanagerimplementation.h +++ b/libnymea-core/hardwaremanagerimplementation.h @@ -34,7 +34,7 @@ class UpnpDiscovery; class PluginTimerManager; class NetworkAccessManager; class UpnpDeviceDescriptor; -class ZeroConfServiceBrowser; +class PlatformZeroConfController; class BluetoothLowEnergyManager; namespace nymeaserver { @@ -54,7 +54,7 @@ public: PluginTimerManager *pluginTimerManager() override; NetworkAccessManager *networkManager() override; UpnpDiscovery *upnpDiscovery() override; - ZeroConfServiceBrowser *zeroConfServiceBrowser() override; + PlatformZeroConfController *zeroConfController() override; BluetoothLowEnergyManager *bluetoothLowEnergyManager() override; MqttProvider *mqttProvider() override; diff --git a/libnymea-core/servermanager.cpp b/libnymea-core/servermanager.cpp index 1eddf1c5..ccc0970b 100644 --- a/libnymea-core/servermanager.cpp +++ b/libnymea-core/servermanager.cpp @@ -329,7 +329,7 @@ bool ServerManager::registerZeroConfService(const ServerConfiguration &configura txt.insert("name", NymeaCore::instance()->configuration()->serverName()); txt.insert("sslEnabled", configuration.sslEnabled ? "true" : "false"); QString name = "nymea-" + serverType + "-" + configuration.id; - if (!m_platform->zeroConfController()->zeroConfServicePublisher()->registerService(name, configuration.address, static_cast(configuration.port), serviceType, txt)) { + if (!m_platform->zeroConfController()->servicePublisher()->registerService(name, configuration.address, static_cast(configuration.port), serviceType, txt)) { qCWarning(dcServerManager()) << "Could not register ZeroConf service for" << configuration; return false; } @@ -338,7 +338,7 @@ bool ServerManager::registerZeroConfService(const ServerConfiguration &configura void ServerManager::unregisterZeroConfService(const QString &configId, const QString &serverType) { - m_platform->zeroConfController()->zeroConfServicePublisher()->unregisterService("nymea-" + serverType + "-" + configId); + m_platform->zeroConfController()->servicePublisher()->unregisterService("nymea-" + serverType + "-" + configId); } bool ServerManager::loadCertificate(const QString &certificateKeyFileName, const QString &certificateFileName) diff --git a/libnymea/hardwaremanager.h b/libnymea/hardwaremanager.h index 45f9893d..a88ab580 100644 --- a/libnymea/hardwaremanager.h +++ b/libnymea/hardwaremanager.h @@ -30,7 +30,7 @@ class UpnpDiscovery; class PluginTimerManager; class NetworkAccessManager; class UpnpDeviceDescriptor; -class ZeroConfServiceBrowser; +class PlatformZeroConfController; class BluetoothLowEnergyManager; class MqttProvider; class HardwareResource; @@ -47,7 +47,7 @@ public: virtual PluginTimerManager *pluginTimerManager() = 0; virtual NetworkAccessManager *networkManager() = 0; virtual UpnpDiscovery *upnpDiscovery() = 0; - virtual ZeroConfServiceBrowser *zeroConfServiceBrowser() = 0; + virtual PlatformZeroConfController *zeroConfController() = 0; virtual BluetoothLowEnergyManager *bluetoothLowEnergyManager() = 0; virtual MqttProvider *mqttProvider() = 0; diff --git a/libnymea/network/zeroconf/zeroconfservicebrowser.cpp b/libnymea/network/zeroconf/zeroconfservicebrowser.cpp index a09951a6..35cf67b3 100644 --- a/libnymea/network/zeroconf/zeroconfservicebrowser.cpp +++ b/libnymea/network/zeroconf/zeroconfservicebrowser.cpp @@ -102,25 +102,10 @@ #include "zeroconfservicebrowser.h" /*! Constructs a new \l{ZeroConfServiceBrowser} with the given \a parent. */ -ZeroConfServiceBrowser::ZeroConfServiceBrowser(QObject *parent) : - HardwareResource("ZeroConf service browser", parent) +ZeroConfServiceBrowser::ZeroConfServiceBrowser(const QString &serviceType, QObject *parent): + QObject(parent) { - -} - -bool ZeroConfServiceBrowser::available() const -{ - return false; -} - -bool ZeroConfServiceBrowser::enabled() const -{ - return false; -} - -void ZeroConfServiceBrowser::setEnabled(bool enabled) -{ - Q_UNUSED(enabled) + Q_UNUSED(serviceType) } QList ZeroConfServiceBrowser::serviceEntries() const diff --git a/libnymea/network/zeroconf/zeroconfservicebrowser.h b/libnymea/network/zeroconf/zeroconfservicebrowser.h index 7c764354..64abeeb3 100644 --- a/libnymea/network/zeroconf/zeroconfservicebrowser.h +++ b/libnymea/network/zeroconf/zeroconfservicebrowser.h @@ -26,22 +26,16 @@ #include #include "libnymea.h" -#include "hardwareresource.h" #include "zeroconfserviceentry.h" -class LIBNYMEA_EXPORT ZeroConfServiceBrowser : public HardwareResource +class LIBNYMEA_EXPORT ZeroConfServiceBrowser : public QObject { Q_OBJECT public: - explicit ZeroConfServiceBrowser(QObject *parent = nullptr); + explicit ZeroConfServiceBrowser(const QString &serviceType = QString(), QObject *parent = nullptr); virtual ~ZeroConfServiceBrowser() = default; - virtual bool available() const override; - virtual bool enabled() const override; - virtual void setEnabled(bool enabled) override; - - virtual QList serviceEntries() const; signals: diff --git a/libnymea/platform/platformzeroconfcontroller.cpp b/libnymea/platform/platformzeroconfcontroller.cpp index 3aada70f..2a68f883 100644 --- a/libnymea/platform/platformzeroconfcontroller.cpp +++ b/libnymea/platform/platformzeroconfcontroller.cpp @@ -26,18 +26,32 @@ #include "network/zeroconf/zeroconfservicepublisher.h" PlatformZeroConfController::PlatformZeroConfController(QObject *parent): - QObject(parent) + HardwareResource("ZeroConf", parent) { - m_zeroConfBrowserStub = new ZeroConfServiceBrowser(this); - m_zeroConfPublisherStub = new ZeroConfServicePublisher(this); + m_zeroConfPublisherDummy = new ZeroConfServicePublisher(this); } -ZeroConfServiceBrowser *PlatformZeroConfController::zeroConfServiceBrowser() const +ZeroConfServiceBrowser *PlatformZeroConfController::createServiceBrowser(const QString &serviceType) { - return m_zeroConfBrowserStub; + return new ZeroConfServiceBrowser(serviceType, this); } -ZeroConfServicePublisher *PlatformZeroConfController::zeroConfServicePublisher() const +ZeroConfServicePublisher *PlatformZeroConfController::servicePublisher() const { - return m_zeroConfPublisherStub; + return m_zeroConfPublisherDummy; +} + +bool PlatformZeroConfController::available() const +{ + return false; +} + +bool PlatformZeroConfController::enabled() const +{ + return false; +} + +void PlatformZeroConfController::setEnabled(bool enabled) +{ + Q_UNUSED(enabled) } diff --git a/libnymea/platform/platformzeroconfcontroller.h b/libnymea/platform/platformzeroconfcontroller.h index 937de16a..99733512 100644 --- a/libnymea/platform/platformzeroconfcontroller.h +++ b/libnymea/platform/platformzeroconfcontroller.h @@ -24,23 +24,28 @@ #define PLATFORMZEROCONFCONTROLLER_H #include +#include "hardwareresource.h" class ZeroConfServiceBrowser; class ZeroConfServicePublisher; -class PlatformZeroConfController: public QObject +class PlatformZeroConfController: public HardwareResource { Q_OBJECT public: explicit PlatformZeroConfController(QObject *parent = nullptr); virtual ~PlatformZeroConfController() = default; - virtual ZeroConfServiceBrowser *zeroConfServiceBrowser() const; - virtual ZeroConfServicePublisher *zeroConfServicePublisher() const; + virtual ZeroConfServiceBrowser *createServiceBrowser(const QString &serviceType = QString()); + virtual ZeroConfServicePublisher *servicePublisher() const; + + // HardwareResource + virtual bool available() const override; + virtual bool enabled() const override; + virtual void setEnabled(bool enabled) override; private: - ZeroConfServiceBrowser *m_zeroConfBrowserStub = nullptr; - ZeroConfServicePublisher *m_zeroConfPublisherStub = nullptr; + ZeroConfServicePublisher *m_zeroConfPublisherDummy = nullptr; }; Q_DECLARE_INTERFACE(PlatformZeroConfController, "io.nymea.PlatformZeroConfController")