1 #ifndef PACKAGEMANAGERFACTORY_H_
2 #define PACKAGEMANAGERFACTORY_H_
4 #include "libaktualizr/config.h"
5 #include "libaktualizr/packagemanagerinterface.h"
9 using PackageManagerBuilder =
11 const std::shared_ptr<INvStorage>&,
const std::shared_ptr<HttpInterface>&)>;
15 static bool registerPackageManager(
const char* name, PackageManagerBuilder builder);
16 static std::shared_ptr<PackageManagerInterface> makePackageManager(
const PackageConfig& pconfig,
18 const std::shared_ptr<INvStorage>& storage,
19 const std::shared_ptr<HttpInterface>& http);
25 #define AUTO_REGISTER_PACKAGE_MANAGER(name, clsname) \
26 class clsname##_PkgMRegister_ { \
28 clsname##_PkgMRegister_() { \
29 PackageManagerFactory::registerPackageManager( \
30 name, [](const PackageConfig& pconfig, const BootloaderConfig& bconfig, \
31 const std::shared_ptr<INvStorage>& storage, const std::shared_ptr<HttpInterface>& http) { \
32 return new clsname(pconfig, bconfig, storage, http); \
36 static clsname##_PkgMRegister_ clsname##_register_
38 #endif // PACKAGEMANAGERFACTORY_H_