Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
ApiDataLoggerCommunicationProtocol.hpp
Go to the documentation of this file.
1#ifndef APIDATALOGGERPROTOCOL_HPP
2#define APIDATALOGGERPROTOCOL_HPP
3
8
9#include <memory>
10#include <unordered_map>
11
13{
14
21
24{
25public:
28 const std::shared_ptr<iv::comms::ICommunicationDriver> &driver,
29 const std::shared_ptr<iv::model::comms::NetworkData> &networkData,
30 const std::weak_ptr<iv::channels::AbstractChannel> &heartbeatChannel,
31 const std::weak_ptr<iv::diamar::AppFailuresLoggerManager> &appFailuresLoggerManager, bool sendToCloud);
33
34 void registerValue(const std::shared_ptr<iv::comms::api::ILoggerMessage> &message) override;
35 bool sendValues() override;
36
37 iv::comms::api::ApiResponse getValues(const IApiQueryParamsBuilder &queryParams) const override;
38
40
41 bool sendUnitFile(const std::string &unitFileContent) const;
42
43private:
44 [[nodiscard]] bool isOnline() override
45 {
46 return m_driver->isOnline();
47 }
48
49 bool shouldSendValue(const std::string &channelId,
50 const iv::comms::api::dataLogger::DataLoggerMessage &channelValue) const;
51
53 mutable std::mutex m_httpRequestMutex;
54 std::map<iv::types::channelId, LoggerChannelInfo> m_lastSentChannelsValues;
55
56 std::map<iv::types::channelId, iv::comms::api::dataLogger::DataLoggerMessage> m_channelsValues;
57
58 struct ValuesApi
59 {
60 static constexpr std::string_view route {"/data"};
61
62 struct Fields
63 {
64 static constexpr std::string_view timestamp {"timestamp"};
65 static constexpr std::string_view value {"value"};
66 static constexpr std::string_view alarmPriority {"alarmPriority"};
67 static constexpr std::string_view alarmState {"alarmState"};
68 static constexpr std::string_view alarmType {"alarmType"};
69 static constexpr std::string_view cloud {"cloud"};
70 };
71 };
73 {
74 static constexpr std::string_view route {"/project/unit"};
75 struct Fields
76 {
77 static constexpr std::string_view project {"unit"};
78 };
79 };
80};
81
82}// namespace iv::comms::api::dataLogger
83
84#endif//APIDATALOGGERPROTOCOL_HPP
Definition ICommunicationProtocol.hpp:12
std::shared_ptr< iv::comms::ICommunicationDriver > m_driver
Definition ICommunicationProtocol.hpp:29
Definition IApiCommunicationProtocol.hpp:16
Definition IApiQueryParamsBuilder.hpp:13
Definition ApiDataLoggerCommunicationProtocol.hpp:24
void registerValue(const std::shared_ptr< iv::comms::api::ILoggerMessage > &message) override
Registers an API message without blocking the thread.
Definition ApiDataLoggerCommunicationProtocol.cpp:26
iv::comms::api::ApiResponse getValues(const IApiQueryParamsBuilder &queryParams) const override
Get values from the API.
Definition ApiDataLoggerCommunicationProtocol.cpp:151
bool sendValues() override
Send all registered messages to the API.
Definition ApiDataLoggerCommunicationProtocol.cpp:49
bool isOnline() override
Definition ApiDataLoggerCommunicationProtocol.hpp:44
std::mutex m_channelsValuesMutex
Definition ApiDataLoggerCommunicationProtocol.hpp:52
iv::comms::api::ApiDeleteResponse deleteValues(const IApiQueryParamsBuilder &queryParams) const override
Delete values from the API.
Definition ApiDataLoggerCommunicationProtocol.cpp:202
bool sendUnitFile(const std::string &unitFileContent) const
Definition ApiDataLoggerCommunicationProtocol.cpp:249
std::map< iv::types::channelId, iv::comms::api::dataLogger::DataLoggerMessage > m_channelsValues
Definition ApiDataLoggerCommunicationProtocol.hpp:56
std::mutex m_httpRequestMutex
Definition ApiDataLoggerCommunicationProtocol.hpp:53
std::map< iv::types::channelId, LoggerChannelInfo > m_lastSentChannelsValues
Definition ApiDataLoggerCommunicationProtocol.hpp:54
bool shouldSendValue(const std::string &channelId, const iv::comms::api::dataLogger::DataLoggerMessage &channelValue) const
Definition ApiDataLoggerCommunicationProtocol.cpp:269
Definition ApiDataLoggerCommunicationProtocol.cpp:9
uint64_t timestamp
Definition types.hpp:21
double channelValue
Definition types.hpp:67
std::string channelId
Definition types.hpp:66
Definition structs.hpp:69
Definition structs.hpp:63
static constexpr std::string_view project
Definition ApiDataLoggerCommunicationProtocol.hpp:77
Definition ApiDataLoggerCommunicationProtocol.hpp:73
static constexpr std::string_view route
Definition ApiDataLoggerCommunicationProtocol.hpp:74
static constexpr std::string_view cloud
Definition ApiDataLoggerCommunicationProtocol.hpp:69
static constexpr std::string_view alarmType
Definition ApiDataLoggerCommunicationProtocol.hpp:68
static constexpr std::string_view alarmState
Definition ApiDataLoggerCommunicationProtocol.hpp:67
static constexpr std::string_view value
Definition ApiDataLoggerCommunicationProtocol.hpp:65
static constexpr std::string_view alarmPriority
Definition ApiDataLoggerCommunicationProtocol.hpp:66
static constexpr std::string_view timestamp
Definition ApiDataLoggerCommunicationProtocol.hpp:64
Definition ApiDataLoggerCommunicationProtocol.hpp:59
static constexpr std::string_view route
Definition ApiDataLoggerCommunicationProtocol.hpp:60
Definition ApiDataLoggerCommunicationProtocol.hpp:16
iv::types::timestamp timestamp
Definition ApiDataLoggerCommunicationProtocol.hpp:19
iv::types::channelId channelId
Definition ApiDataLoggerCommunicationProtocol.hpp:17
iv::types::channelValue value
Definition ApiDataLoggerCommunicationProtocol.hpp:18