RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
ddsWaitSet.hpp
Go to the documentation of this file.
1
11#ifndef RTCKT_TELSUB_DDSWAITSET_HPP
12#define RTCKT_TELSUB_DDSWAITSET_HPP
13
14#include <cstdint>
15#include <list>
16#include <map>
17#include <memory>
18#include <optional>
19#include <set>
20#include <variant>
21
24
25namespace rtctk::telSub {
26
33class DdsWaitSet final : public DdsWaitSetIf, SeqLoanerIf {
34public:
35 using Alloc = std::pmr::polymorphic_allocator<std::byte>;
36
60 explicit DdsWaitSet(const DdsParams& params, const Alloc& alloc = {});
61
70 ~DdsWaitSet() noexcept override;
71
72 // Do not allow copying or moving of this object.
73 DdsWaitSet(const DdsWaitSet& rhs) = delete;
74 DdsWaitSet& operator=(const DdsWaitSet& rhs) = delete;
75 DdsWaitSet(DdsWaitSet&& rhs) = delete;
76 DdsWaitSet& operator=(DdsWaitSet&& rhs) = delete;
77
78 AgnosticDataSamples& GetSamples() noexcept override;
79 std::optional<DdsWaitSetError> Take(std::chrono::nanoseconds timeout) noexcept override;
80
81 size_t GetNumberOfTopics() const noexcept override;
82
83 void CheckDdsConnections() override;
84
86 std::error_code ReturnLoan(const std::string& topic,
87 DdsSampleSeq& samples,
88 DdsInfoSeq& infos) noexcept override;
89
90private:
106 void Initialise(const DdsParams& params);
107
119 void Finalise();
120
121 // cppcheck-suppress-begin unusedStructMember
122
123 log4cplus::Logger& m_logger;
124
125 std::unique_ptr<rtctk::componentFramework::DdsSub> m_dds_sub;
126
127 std::map<std::string, rtctk::componentFramework::DataReader*> m_readers;
128 std::map<Condition*, std::string> m_reader_context_lut;
129 std::unique_ptr<WaitSet> m_waitset;
130 AgnosticDataSamples m_samples;
131
132 // cppcheck-suppress-end unusedStructMember
133};
134
135} // namespace rtctk::telSub
136
137#endif // RTCKT_TELSUB_DDSWAITSET_HPP
All functionality needed to create DDS entities for DDS data subscribing is concentrated in this clas...
Definition ddsSub.hpp:51
Container of DDS samples and associated sample information.
Definition agnosticDataSamples.hpp:75
DdsWaitSetIf() noexcept=default
DdsWaitSet(const DdsParams &params, const Alloc &alloc={})
Constructs a DDS subscriber from given configuration parameters.
Definition ddsWaitSet.cpp:99
std::error_code ReturnLoan(const std::string &topic, DdsSampleSeq &samples, DdsInfoSeq &infos) noexcept override
Returns loaned sample sequence.
Definition ddsWaitSet.cpp:257
void CheckDdsConnections() override
Definition ddsWaitSet.cpp:273
std::pmr::polymorphic_allocator< std::byte > Alloc
Definition ddsWaitSet.hpp:35
std::optional< DdsWaitSetError > Take(std::chrono::nanoseconds timeout) noexcept override
Takes new samples from DDS readers and updates data structure accessable from GetSamples()
Definition ddsWaitSet.cpp:213
~DdsWaitSet() noexcept override
Destroys the DDS subscriber and releases all DDS resources.
Definition ddsWaitSet.cpp:112
size_t GetNumberOfTopics() const noexcept override
Returns the number of configured topics.
Definition ddsWaitSet.cpp:269
AgnosticDataSamples & GetSamples() noexcept override
Returns reference to data structure holding taken data samples.
Definition ddsWaitSet.cpp:124
Loaner interface.
Definition agnosticDataSamples.hpp:39
DDS Subscriber.
Declares DdsWaitSetIf.
Definition commandReplier.cpp:21
Definition main.cpp:23
rtctk::componentFramework::AgnosticTopicSeq DdsSampleSeq
Definition agnosticDataSamples.hpp:29
rtctk::componentFramework::SampleInfoSeq DdsInfoSeq
Definition agnosticDataSamples.hpp:31
Definition commandReplier.cpp:21
Definition ddsSub.hpp:155
Parameter set to be passed to classes deriving from DdsWaitSetIf.
Definition ddsWaitSetIf.hpp:49
Error reporting struct, contains the return code and topic where the error occurred.
Definition ddsWaitSetIf.hpp:72