Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
reportqueue.h
1 #ifndef REPORTQUEUE_H_
2 #define REPORTQUEUE_H_
3 
4 #include <condition_variable>
5 #include <memory>
6 #include <mutex>
7 #include <queue>
8 #include <thread>
9 
10 #include <json/json.h>
11 
12 #include "http/httpclient.h"
13 #include "libaktualizr/config.h"
14 #include "logging/logging.h"
15 #include "storage/invstorage.h"
16 #include "uptane/tuf.h"
17 
18 class ReportEvent {
19  public:
20  std::string id;
21  std::string type;
22  int version;
23  Json::Value custom;
24  TimeStamp timestamp;
25 
26  Json::Value toJson() const;
27 
28  protected:
29  ReportEvent(std::string event_type, int event_version)
30  : id(Utils::randomUuid()), type(std::move(event_type)), version(event_version), timestamp(TimeStamp::Now()) {}
31 
32  void setEcu(const Uptane::EcuSerial& ecu);
33  void setCorrelationId(const std::string& correlation_id);
34 };
35 
37  public:
38  CampaignAcceptedReport(const std::string& campaign_id);
39 };
40 
42  public:
43  CampaignDeclinedReport(const std::string& campaign_id);
44 };
45 
47  public:
48  CampaignPostponedReport(const std::string& campaign_id);
49 };
50 
52  public:
53  DevicePausedReport(const std::string& correlation_id);
54 };
55 
57  public:
58  DeviceResumedReport(const std::string& correlation_id);
59 };
60 
62  public:
63  EcuDownloadStartedReport(const Uptane::EcuSerial& ecu, const std::string& correlation_id);
64 };
65 
67  public:
68  EcuDownloadCompletedReport(const Uptane::EcuSerial& ecu, const std::string& correlation_id, bool success);
69 };
70 
72  public:
73  EcuInstallationStartedReport(const Uptane::EcuSerial& ecu, const std::string& correlation_id);
74 };
75 
77  public:
78  EcuInstallationAppliedReport(const Uptane::EcuSerial& ecu, const std::string& correlation_id);
79 };
80 
82  public:
83  EcuInstallationCompletedReport(const Uptane::EcuSerial& ecu, const std::string& correlation_id, bool success);
84 };
85 
86 class ReportQueue {
87  public:
88  ReportQueue(const Config& config_in, std::shared_ptr<HttpInterface> http_client,
89  std::shared_ptr<INvStorage> storage_in);
90  ~ReportQueue();
91  void run();
92  void enqueue(std::unique_ptr<ReportEvent> event);
93 
94  private:
95  void flushQueue();
96 
97  const Config& config;
98  std::shared_ptr<HttpInterface> http;
99  std::thread thread_;
100  std::condition_variable cv_;
101  std::mutex m_;
102  std::queue<std::unique_ptr<ReportEvent>> report_queue_;
103  bool shutdown_{false};
104  std::shared_ptr<INvStorage> storage;
105 };
106 
107 #endif // REPORTQUEUE_H_
ReportEvent
Definition: reportqueue.h:18
CampaignPostponedReport
Definition: reportqueue.h:46
CampaignAcceptedReport
Definition: reportqueue.h:36
EcuDownloadCompletedReport
Definition: reportqueue.h:66
Config
Configuration object for an aktualizr instance running on a Primary ECU.
Definition: config.h:208
TimeStamp
Definition: types.h:188
EcuInstallationAppliedReport
Definition: reportqueue.h:76
Uptane::EcuSerial
Definition: types.h:346
EcuDownloadStartedReport
Definition: reportqueue.h:61
CampaignDeclinedReport
Definition: reportqueue.h:41
EcuInstallationCompletedReport
Definition: reportqueue.h:81
DeviceResumedReport
Definition: reportqueue.h:56
ReportQueue
Definition: reportqueue.h:86
DevicePausedReport
Definition: reportqueue.h:51
event
Aktualizr status events.
Definition: events.h:15
EcuInstallationStartedReport
Definition: reportqueue.h:71