RTC Toolkit 5.0.0
Loading...
Searching...
No Matches
eventHandling.hpp
Go to the documentation of this file.
1
13#ifndef RTCTK_RTRSERVER_EVENTHANDLING_HPP
14#define RTCTK_RTRSERVER_EVENTHANDLING_HPP
15
16#include <atomic>
17#include <chrono>
18#include <condition_variable>
19#include <cstdint>
20#include <mutex>
21#include <nlohmann/json.hpp>
22#include <optional>
23#include <queue>
24#include <set>
25#include <string>
26#include <thread>
27
28using Event = nlohmann::json;
29
30Event MakeWriteEvent(const std::set<std::string>& datapoints,
31 uint64_t sequence_id,
32 uint64_t timestamp);
33Event MakeCreateEvent(const std::string& datapoint);
34Event MakeDeleteEvent(const std::string& datapoint);
35
37public:
38 void Post(const Event& data);
39 std::optional<Event> Pend(std::chrono::milliseconds timeout);
40
41private:
42 // cppcheck-suppress-begin unusedStructMember
43
44 std::mutex m_mutex;
45 std::condition_variable m_cv;
46 std::queue<Event> m_queue;
47
48 // cppcheck-suppress-end unusedStructMember
49};
50
52public:
53 EventPublisher(const std::string& topic, EventQueue& queue);
55
56private:
57 void Work();
58
59 // cppcheck-suppress-begin unusedStructMember
60
61 std::string m_topic_name;
62 EventQueue& m_queue;
63 std::atomic<bool> m_stop;
64 std::thread m_thread;
65
66 // cppcheck-suppress-end unusedStructMember
67};
68
69#endif // RTCTK_RTRSERVER_EVENTHANDLING_HPP
Definition eventHandling.hpp:51
~EventPublisher()
Definition eventHandling.cpp:73
EventPublisher(const std::string &topic, EventQueue &queue)
Definition eventHandling.cpp:68
Definition eventHandling.hpp:36
std::optional< Event > Pend(std::chrono::milliseconds timeout)
Definition eventHandling.cpp:57
void Post(const Event &data)
Definition eventHandling.cpp:49
nlohmann::json Event
Definition eventHandling.hpp:28
Event MakeDeleteEvent(const std::string &datapoint)
Definition eventHandling.cpp:42
Event MakeWriteEvent(const std::set< std::string > &datapoints, uint64_t sequence_id, uint64_t timestamp)
Definition eventHandling.cpp:24
Event MakeCreateEvent(const std::string &datapoint)
Definition eventHandling.cpp:35