1 #ifndef PACKAGEMANAGERFACTORY_H_
2 #define PACKAGEMANAGERFACTORY_H_
4 #include "config/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_