Go to the documentation of this file.
8 #ifndef RTCKT_TELSUB_DDSSUBSCRIBER_HPP
9 #define RTCKT_TELSUB_DDSSUBSCRIBER_HPP
17 #include <ndds/ndds_cpp.h>
18 #include <ndds/ndds_namespace_cpp.h>
36 std::vector<std::vector<const rtctk::AgnosticTopic*>>& samples,
37 std::chrono::nanoseconds timeout
38 )
const noexcept
override;
41 const std::vector<const rtctk::AgnosticTopic*>& samples
42 )
const noexcept
override;
56 struct ReaderContext {
57 ReaderContext() : m_topic_name(
""), m_reader(
nullptr), m_topic(
nullptr) {};
62 std::string m_topic_name;
67 rtctk::AgnosticTopicDataReader* m_reader;
75 struct SampleMetaData {
79 rtctk::AgnosticTopicSeq m_data_seq;
84 DDS_SampleInfoSeq m_info_seq;
89 rtctk::AgnosticTopicDataReader* m_reader;
95 std::set<const rtctk::AgnosticTopic*> m_unreleased;
98 DDSDomainParticipantFactory* m_factory;
99 DDSDomainParticipant* m_participant;
100 DDSSubscriber* m_subscriber;
101 std::unique_ptr<DdsReaderListener> m_listener;
102 std::vector<ReaderContext> m_readers;
103 std::map<DDSCondition*, std::vector<ReaderContext>::iterator> m_reader_context_lut;
104 std::unique_ptr<DDSWaitSet> m_waitset;
105 mutable std::list<SampleMetaData> m_sample_metadata;
106 mutable std::map<const rtctk::AgnosticTopic*, std::list<SampleMetaData>::iterator> m_sample_lut;
110 #endif // RTCKT_TELSUB_DDSSUBSCRIBER_HPP
Implements DDS communication using RTI DDS.
Definition: ddsSubscriber.hpp:26
DdsSubscriber(const DdsParams ¶ms)
Constructs a DDS subscriber from given configuration parameters.
Definition: ddsSubscriber.cpp:39
std::error_code TakeSamples(std::vector< std::vector< const rtctk::AgnosticTopic * >> &samples, std::chrono::nanoseconds timeout) const noexcept override
Retrieves the buffers for the next data samples received from DDS.
Definition: ddsSubscriber.cpp:346
Base class abstracting DDS communication code.
Definition: ddsSubscriberIf.hpp:39
const std::string & GetTopicName(size_t index) const noexcept override
Returns a string containing the name of a configured topic.
Definition: ddsSubscriber.cpp:455
DdsSubscriber(DdsSubscriber &&rhs)=default
DdsSubscriber & operator=(DdsSubscriber &&rhs)=default
std::error_code ReturnSamples(const std::vector< const rtctk::AgnosticTopic * > &samples) const noexcept override
Releases buffers for previously retrieved data samples.
Definition: ddsSubscriber.cpp:419
Definition: businessLogic.cpp:35
Parameter set to be passed to classes deriving from DdsSubscriberIf.
Definition: ddsSubscriberIf.hpp:27
Definition: mudpiProcessingError.hpp:109
Declares DdsSubscriberIf.
size_t GetNumberOfTopics() const noexcept override
Returns the number of configured topics.
Definition: ddsSubscriber.cpp:451
virtual ~DdsSubscriber() noexcept
Destroys the DDS subscriber and releases all RTI DDS resources.
Definition: ddsSubscriber.cpp:63