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