Aktualizr
C++ SOTA Client
secondaryfactory.h
1 #ifndef UPTANE_SECONDARYFACTORY_H_
2 #define UPTANE_SECONDARYFACTORY_H_
3 
4 #include "logging/logging.h"
5 #include "uptane/ipuptanesecondary.h"
6 #include "uptane/legacysecondary.h"
7 #include "uptane/opcuasecondary.h"
8 #include "uptane/secondaryconfig.h"
9 #include "uptane/secondaryinterface.h"
10 #include "uptane/virtualsecondary.h"
11 #include "utilities/events.h"
12 
13 namespace Uptane {
14 
16  public:
17  static std::shared_ptr<SecondaryInterface> makeSecondary(const SecondaryConfig& sconfig) {
18  switch (sconfig.secondary_type) {
19  case SecondaryType::kVirtual:
20  return std::make_shared<VirtualSecondary>(sconfig);
21  break;
22  case SecondaryType::kLegacy:
23  return std::make_shared<LegacySecondary>(sconfig);
24  break;
25  case SecondaryType::kIpUptane:
26  return std::make_shared<IpUptaneSecondary>(sconfig);
27  case SecondaryType::kOpcuaUptane:
28 #ifdef OPCUA_SECONDARY_ENABLED
29  return std::make_shared<OpcuaSecondary>(sconfig);
30 #else
31  LOG_ERROR << "Built with no OPC-UA secondary support";
32  return std::shared_ptr<SecondaryInterface>(); // NULL-equivalent
33 #endif
34  default:
35  LOG_ERROR << "Unrecognized secondary type: " << static_cast<int>(sconfig.secondary_type);
36  return std::shared_ptr<SecondaryInterface>(); // NULL-equivalent
37  }
38  }
39 };
40 } // namespace Uptane
41 
42 #endif // UPTANE_SECONDARYFACTORY_H_
Base data types that are used in The Update Framework (TUF), part of UPTANE.