Aktualizr
C++ SOTA Client
aktualizr_helpers.cc
1 #include <set>
2 
3 #include "aktualizr_helpers.h"
4 
5 void targets_autoclean_cb(Aktualizr &aktualizr, const std::shared_ptr<event::BaseEvent> &event) {
6  if (!event->isTypeOf<event::AllInstallsComplete>()) {
7  return;
8  }
9 
10  std::vector<Uptane::Target> installed_targets = aktualizr.GetStoredTargets();
11  std::vector<bool> to_remove(installed_targets.size(), true);
12 
13  Aktualizr::InstallationLog log = aktualizr.GetInstallationLog();
14 
15  // keep the last two installed targets for each ECU
16  for (const Aktualizr::InstallationLogEntry &entry : log) {
17  auto start = entry.installs.size() >= 2 ? entry.installs.end() - 2 : entry.installs.begin();
18  for (auto it = start; it != entry.installs.end(); it++) {
19  auto fit = std::find_if(installed_targets.begin(), installed_targets.end(),
20  [&it](const Uptane::Target &t2) { return it->filename() == t2.filename(); });
21 
22  if (fit == installed_targets.end()) {
23  continue;
24  }
25 
26  size_t rem_idx = static_cast<size_t>(fit - installed_targets.begin());
27  to_remove[rem_idx] = false;
28  }
29  }
30 
31  for (size_t k = 0; k < installed_targets.size(); k++) {
32  if (to_remove[k]) {
33  aktualizr.DeleteStoredTarget(installed_targets[k]);
34  }
35  }
36 }
Aktualizr::DeleteStoredTarget
void DeleteStoredTarget(const Uptane::Target &target)
Delete a stored target from storage.
Definition: aktualizr.cc:221
event::AllInstallsComplete
All ECU installation attempts for an update have completed.
Definition: events.h:148
Aktualizr
This class provides the main APIs necessary for launching and controlling libaktualizr.
Definition: aktualizr.h:24
Aktualizr::GetStoredTargets
std::vector< Uptane::Target > GetStoredTargets()
Get list of targets currently in storage.
Definition: aktualizr.cc:219
Aktualizr::InstallationLogEntry
Definition: aktualizr.h:147
Aktualizr::GetInstallationLog
InstallationLog GetInstallationLog()
Get log of installations.
Definition: aktualizr.cc:197
Uptane::Target
Definition: types.h:379
event
Aktualizr status events.
Definition: events.h:15