1 #ifndef PACKAGEMANAGERFACTORY_H_ 2 #define PACKAGEMANAGERFACTORY_H_ 4 #include "libaktualizr/config.h" 5 #include "package_manager/packagemanagerinterface.h" 6 #include "storage/invstorage.h" 8 using PackageManagerBuilder =
10 const std::shared_ptr<INvStorage>&,
const std::shared_ptr<HttpInterface>&)>;
14 static bool registerPackageManager(
const char* name, PackageManagerBuilder builder);
15 static std::shared_ptr<PackageManagerInterface> makePackageManager(
const PackageConfig& pconfig,
17 const std::shared_ptr<INvStorage>& storage,
18 const std::shared_ptr<HttpInterface>& http);
24 #define AUTO_REGISTER_PACKAGE_MANAGER(name, clsname) \ 25 class clsname##_PkgMRegister_ { \ 27 clsname##_PkgMRegister_() { \ 28 PackageManagerFactory::registerPackageManager( \ 29 name, [](const PackageConfig& pconfig, const BootloaderConfig& bconfig, \ 30 const std::shared_ptr<INvStorage>& storage, const std::shared_ptr<HttpInterface>& http) { \ 31 return new clsname(pconfig, bconfig, storage, http); \ 35 static clsname##_PkgMRegister_ clsname##_register_ 37 #endif // PACKAGEMANAGERFACTORY_H_