Aktualizr
C++ SOTA Client
fetcher.h
1 #ifndef UPTANE_FETCHER_H_
2 #define UPTANE_FETCHER_H_
3 
4 #include "http/httpinterface.h"
5 #include "libaktualizr/config.h"
6 #include "storage/invstorage.h"
7 
8 namespace Uptane {
9 
10 constexpr int64_t kMaxRootSize = 64 * 1024;
11 constexpr int64_t kMaxDirectorTargetsSize = 64 * 1024;
12 constexpr int64_t kMaxTimestampSize = 64 * 1024;
13 constexpr int64_t kMaxSnapshotSize = 64 * 1024;
14 constexpr int64_t kMaxImageTargetsSize = 8 * 1024 * 1024;
15 
17  public:
18  IMetadataFetcher(const IMetadataFetcher&) = delete;
19  IMetadataFetcher& operator=(const IMetadataFetcher&) = delete;
20  virtual ~IMetadataFetcher() = default;
21 
22  public:
23  virtual void fetchRole(std::string* result, int64_t maxsize, RepositoryType repo, const Uptane::Role& role,
24  Version version) const = 0;
25  virtual void fetchLatestRole(std::string* result, int64_t maxsize, RepositoryType repo,
26  const Uptane::Role& role) const = 0;
27 
28  protected:
29  IMetadataFetcher() = default;
31 };
32 
33 class Fetcher : public IMetadataFetcher {
34  public:
35  Fetcher(const Config& config_in, std::shared_ptr<HttpInterface> http_in)
36  : Fetcher(config_in.uptane.repo_server, config_in.uptane.director_server, std::move(http_in)) {}
37  Fetcher(std::string repo_server_in, std::string director_server_in, std::shared_ptr<HttpInterface> http_in)
38  : http(std::move(http_in)),
39  repo_server(std::move(repo_server_in)),
40  director_server(std::move(director_server_in)) {}
41  void fetchRole(std::string* result, int64_t maxsize, RepositoryType repo, const Uptane::Role& role,
42  Version version) const override;
43  void fetchLatestRole(std::string* result, int64_t maxsize, RepositoryType repo,
44  const Uptane::Role& role) const override {
45  fetchRole(result, maxsize, repo, role, Version());
46  }
47 
48  std::string getRepoServer() const { return repo_server; }
49 
50  private:
51  std::shared_ptr<HttpInterface> http;
52  std::string repo_server;
53  std::string director_server;
54 };
55 
56 } // namespace Uptane
57 
58 #endif
Uptane::Fetcher
Definition: fetcher.h:33
Uptane::Version
Metadata version numbers.
Definition: tuf.h:120
Config
Configuration object for an aktualizr instance running on a Primary ECU.
Definition: config.h:208
Uptane::IMetadataFetcher
Definition: fetcher.h:16
Uptane::RepositoryType
Definition: tuf.h:21
result
Results of libaktualizr API calls.
Definition: results.h:12
Uptane::Role
TUF Roles.
Definition: tuf.h:61
Uptane
Base data types that are used in The Update Framework (TUF), part of Uptane.
Definition: packagemanagerinterface.h:18