RTC Toolkit 4.0.2
Loading...
Searching...
No Matches
ddsWaitSet.hpp
Go to the documentation of this file.
1
12#ifndef RTCKT_TELSUB_DDSWAITSET_HPP
13#define RTCKT_TELSUB_DDSWAITSET_HPP
14
15#include <list>
16#include <map>
17#include <memory>
18#include <set>
19
22
23namespace rtctk::telSub {
24
31class DdsWaitSet final : public DdsWaitSetIf, SeqLoanerIf {
32public:
33 using Alloc = std::pmr::polymorphic_allocator<std::byte>;
34
58 explicit DdsWaitSet(const DdsParams& params, Alloc const& alloc = {});
59
68 virtual ~DdsWaitSet() noexcept;
69
70 DdsWaitSet(DdsWaitSet&& rhs) = delete;
71 DdsWaitSet& operator=(DdsWaitSet&& rhs) = delete;
72
73 AgnosticDataSamples& GetSamples() noexcept override;
74 std::error_code Take(std::chrono::nanoseconds timeout) noexcept override;
75
76 size_t GetNumberOfTopics() const noexcept override;
77 std::string GetTopicName(size_t index) const noexcept override;
78
80 std::error_code
81 ReturnLoan(std::uint8_t idx, DdsSampleSeq& samples, DdsInfoSeq& infos) noexcept override;
82
83private:
84 // Do not allow copying of this object.
85 DdsWaitSet(const DdsWaitSet& rhs) = delete;
86 DdsWaitSet& operator=(const DdsWaitSet& rhs) = delete;
87
103 void Initialise(const DdsParams& params);
104
116 void Finalise();
117
118 log4cplus::Logger& m_logger;
119
120 std::unique_ptr<rtctk::componentFramework::DdsSub> m_dds_sub;
121
122 std::vector<rtctk::componentFramework::DataReader*>* m_readers;
123 std::map<Condition*, uint32_t> m_reader_context_lut;
124 std::unique_ptr<WaitSet> m_waitset;
125 AgnosticDataSamples m_samples;
126};
127
128} // namespace rtctk::telSub
129
130#endif // RTCKT_TELSUB_DDSWAITSET_HPP
All functionality needed to create DDS entities for DDS data subscribing is concentrated in this clas...
Definition: ddsSub.hpp:48
Container of DDS samples and associated sample information.
Definition: agnosticDataSamples.hpp:74
Base class abstracting DDS communication code.
Definition: ddsWaitSetIf.hpp:62
Implements DDS communication using FastDDS.
Definition: ddsWaitSet.hpp:31
std::pmr::polymorphic_allocator< std::byte > Alloc
Definition: ddsWaitSet.hpp:33
virtual ~DdsWaitSet() noexcept
Destroys the DDS subscriber and releases all DDS resources.
Definition: ddsWaitSet.cpp:47
std::error_code ReturnLoan(std::uint8_t idx, DdsSampleSeq &samples, DdsInfoSeq &infos) noexcept override
Returns loaned sample sequence.
Definition: ddsWaitSet.cpp:204
size_t GetNumberOfTopics() const noexcept override
Returns the number of configured topics.
Definition: ddsWaitSet.cpp:215
std::error_code Take(std::chrono::nanoseconds timeout) noexcept override
Takes new samples from DDS readers and updates data structure accessable from GetSamples()
Definition: ddsWaitSet.cpp:157
std::string GetTopicName(size_t index) const noexcept override
Returns a string containing the name of a configured topic.
Definition: ddsWaitSet.cpp:219
AgnosticDataSamples & GetSamples() noexcept override
Returns reference to data structure holding taken data samples.
Definition: ddsWaitSet.cpp:59
Loaner interface.
Definition: agnosticDataSamples.hpp:38
DDS Subscriber.
Declares DdsWaitSetIf.
Definition: main.cpp:18
rtctk::componentFramework::SampleInfoSeq DdsInfoSeq
Definition: agnosticDataSamples.hpp:30
rtctk::componentFramework::AgnosticTopicSeq DdsSampleSeq
Definition: agnosticDataSamples.hpp:28
Definition: commandReplier.cpp:22
Parameter set to be passed to classes deriving from DdsWaitSetIf.
Definition: ddsWaitSetIf.hpp:40