// SPDX-License-Identifier: GPL-3.0-or-later // Copyright (C) 2025 - 2026, Patrick Schurig / ETM PowerSync #pragma once #include class SpotMarketManager; /*! * \file spotmarketbuild.h * \brief Le fournisseur spot selon le BUILD — un seul point de construction. * * \par Pourquoi un point unique * Le plugin (\c EnergyPluginNymea::init()) et l'expérience de simulation construisent chacun * leur \c SpotMarketManager. Si chacun décidait de son côté d'instancier ou non un * \c QNetworkAccessManager, le test vérifierait la copie de la simulation, jamais celle qui * part dans le paquet. Les deux passent donc par ici. * * \par Ce que l'option change * Sans \c CONFIG+=etm_spotmarket (le build livré) : aucun \c QNetworkAccessManager, aucun * fournisseur enregistré — le gestionnaire existe, mais \c setEnabled(true) est refusé faute * de fournisseur, donc \c planSpotMarketCharging() rend la main à sa première ligne. * Invariant 10 : le moteur ne contacte personne. */ namespace SpotMarketBuild { //! \return Vrai si le fournisseur aWATTar est compilé dans ce build (\c ETM_SPOTMARKET). constexpr bool inclus() { #ifdef ETM_SPOTMARKET return true; #else return false; #endif } /*! * \brief Construit le gestionnaire spot de ce build. * \param parent Parent Qt du gestionnaire — et du \c QNetworkAccessManager quand il existe. * \return Le gestionnaire. Sans l'option, il est construit avec un gestionnaire réseau * **nul** : aucun objet réseau n'est créé, et aucun fournisseur ne peut s'en servir. */ SpotMarketManager *creer(QObject *parent); }