RTC Toolkit 6.0.0-pre2
Loading...
Searching...
No Matches
ddsPub.hpp
Go to the documentation of this file.
1
12#ifndef RTCTK_COMPONENTFRAMEWORK_DATAPATH_DDSPUB_HPP
13#define RTCTK_COMPONENTFRAMEWORK_DATAPATH_DDSPUB_HPP
14
15#include <list>
16#include <memory>
18
20
21using namespace std::chrono_literals;
22
29 std::string topic_name;
30 std::shared_ptr<DataWriterListener> listener;
31
32 DdsWriterParams(const std::string& tn, std::shared_ptr<DataWriterListener> l)
33 : topic_name(tn), listener(std::move(l)) {
34 }
35
36 explicit DdsWriterParams(const std::string& tn) : topic_name(tn) {
37 }
38};
39
47class DdsPub : public Dds {
48 // cppcheck-suppress-begin unusedStructMember
49
50 Publisher* m_publisher = nullptr;
51 std::vector<DataWriter*> m_data_writers;
52 std::vector<std::shared_ptr<DataWriterListener>> m_listeners;
53
54 // cppcheck-suppress-end unusedStructMember
55
56public:
68 explicit DdsPub(const std::string& qos_file,
69 const std::string& qos_profile = DEFAULT_QOS_PROFILE,
70 DomainId_t domain_id = DEFAULT_DOMAIN_ID,
71 const std::string& participant_name = "");
72 ~DdsPub() override;
73
78 void CreatePublisher();
79
83 void DestroyPublisher();
84
92 DataWriter*
93 CreateDataWriter(Topic* topic, std::shared_ptr<DataWriterListener> listener = nullptr);
94
104 void DestroyDataWriter(DataWriter* dw,
105 bool to_be_removed = true,
106 std::chrono::milliseconds wait_acks_timeout = 5000ms);
107
112 void CreateDataWriters();
113
122 void DestroyAllDataWriters(std::chrono::milliseconds wait_acks_timeout = 5000ms);
123
129 void CreateManyDataWriters(const std::vector<DdsWriterParams>& topics_listeners);
130
136 void CreateManyDataWriters(const std::vector<std::string>& topic_names);
137
141 // Not using virtual methods on purpose because DumpDDSstatistics is called in the destructor.
142 // cppcheck-suppress duplInheritedMember
143 void DumpDDSstatistics();
144
148 std::vector<DataWriter*>& GetDataWriters() {
149 return m_data_writers;
150 }
151
158 void WaitForAcks(DataWriter* dw, std::chrono::milliseconds wait_acks_timeout = 5000ms);
159};
160
161} // namespace rtctk::componentFramework
162
163#endif // RTCTK_COMPONENTFRAMEWORK_DATAPATH_DDSPUB_HPP
void DumpDDSstatistics()
Dumps / logs varios DDS statistic like NACks, ACKs, ... for each DDS writer.
Definition ddsPub.cpp:245
void DestroyDataWriter(DataWriter *dw, bool to_be_removed=true, std::chrono::milliseconds wait_acks_timeout=5000ms)
Destroys DDS data writer, and also its listener.
Definition ddsPub.cpp:146
void CreateDataWriters()
Creates DDS Data Writer for all DDS topics.
Definition ddsPub.cpp:230
void WaitForAcks(DataWriter *dw, std::chrono::milliseconds wait_acks_timeout=5000ms)
Wait for ACKs for the given DDS Data Writer.
Definition ddsPub.cpp:250
void CreatePublisher()
Creates DDS publisher.
Definition ddsPub.cpp:44
void CreateManyDataWriters(const std::vector< DdsWriterParams > &topics_listeners)
create DDS topics and DDS writers for the given list (vector) of topic names and rtctk::componentFram...
Definition ddsPub.cpp:190
void DestroyPublisher()
Destroys DDS publisher.
Definition ddsPub.cpp:77
DdsPub(const std::string &qos_file, const std::string &qos_profile=DEFAULT_QOS_PROFILE, DomainId_t domain_id=DEFAULT_DOMAIN_ID, const std::string &participant_name="")
DDS Publsiher class that takes care for handling all DDS entities to publish samples.
Definition ddsPub.cpp:26
~DdsPub() override
Definition ddsPub.cpp:35
DataWriter * CreateDataWriter(Topic *topic, std::shared_ptr< DataWriterListener > listener=nullptr)
Creates DDS writer for particular topic for topic of type: rtctk::AgnosticTopic.
Definition ddsPub.cpp:94
std::vector< DataWriter * > & GetDataWriters()
returns vector of all DDS Data writers
Definition ddsPub.hpp:148
void DestroyAllDataWriters(std::chrono::milliseconds wait_acks_timeout=5000ms)
Destroys DDS Data Writer for all DDS topics.
Definition ddsPub.cpp:219
static const DomainId_t DEFAULT_DOMAIN_ID
default Domain Id for different DDS
Definition dds.hpp:174
static const std::string DEFAULT_QOS_PROFILE
default profile name for different DDS QoSs
Definition dds.hpp:168
Dds(const std::string &qos_file, const std::string &qos_profile=DEFAULT_QOS_PROFILE, DomainId_t domain_id=DEFAULT_DOMAIN_ID, const std::string &participant_name="")
Constructor for Base class for both DDS Publisher and DDS Subscriber.
Definition dds.cpp:25
Declares common DDS class.
Definition commandReplier.cpp:22
Definition ddsSub.hpp:156
DdsWriterParams(const std::string &tn, std::shared_ptr< DataWriterListener > l)
Definition ddsPub.hpp:32
std::string topic_name
Definition ddsPub.hpp:29
std::shared_ptr< DataWriterListener > listener
Definition ddsPub.hpp:30
DdsWriterParams(const std::string &tn)
Definition ddsPub.hpp:36