RTC Toolkit 5.0.0
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>
17
19
20using namespace std::chrono_literals;
21
28 std::string topic_name;
29 DataWriterListener* listener = nullptr;
30
31 DdsWriterParams(const std::string& tn, DataWriterListener* l) : topic_name(tn), listener(l) {
32 }
33
34 explicit DdsWriterParams(const std::string& tn) : topic_name(tn), listener(nullptr) {
35 }
36};
37
45class DdsPub : public Dds {
46 // cppcheck-suppress-begin unusedStructMember
47
48 Publisher* m_publisher;
49 std::vector<DataWriter*> m_data_writers;
50
51 // cppcheck-suppress-end unusedStructMember
52
53public:
65 explicit DdsPub(const std::string& qos_file,
66 const std::string& qos_profile = DEFAULT_QOS_PROFILE,
68 const std::string& participant_name = "");
69 ~DdsPub() override;
70
75 void CreatePublisher();
76
80 void DestroyPublisher();
81
89 DataWriter* CreateDataWriter(Topic* topic, DataWriterListener* listener = nullptr);
90
101 bool to_be_removed = true,
102 std::chrono::milliseconds wait_acks_timeout = 5000ms);
103
108 void CreateDataWriters();
109
118 void DestroyAllDataWriters(std::chrono::milliseconds wait_acks_timeout = 5000ms);
119
125 void CreateManyDataWriters(const std::vector<DdsWriterParams>&);
126
132 void CreateManyDataWriters(const std::vector<std::string>& topic_names);
133
137 // Not using virtual methods on purpose because DumpDDSstatistics is called in the destructor.
138 // cppcheck-suppress duplInheritedMember
139 void DumpDDSstatistics();
140
144 std::vector<DataWriter*>& GetDataWriters() {
145 return m_data_writers;
146 }
147
154 void WaitForAcks(DataWriter* dw, std::chrono::milliseconds wait_acks_timeout = 5000ms);
155};
156
157} // namespace rtctk::componentFramework
158
159#endif // RTCTK_COMPONENTFRAMEWORK_DATAPATH_DDSPUB_HPP
All functionallty needed to create DDS entities for DDS data publishing is concentrated in this class...
Definition ddsPub.hpp:45
void DumpDDSstatistics()
Dumps / logs varios DDS statistic like NACks, ACKs, ... for each DDS writer.
Definition ddsPub.cpp:242
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:147
void CreateDataWriters()
Creates DDS Data Writer for all DDS topics.
Definition ddsPub.cpp:227
void WaitForAcks(DataWriter *dw, std::chrono::milliseconds wait_acks_timeout=5000ms)
Wait for ACKs for the given DDS Data Writer.
Definition ddsPub.cpp:247
void CreatePublisher()
Creates DDS publisher.
Definition ddsPub.cpp:44
void DestroyPublisher()
Destroys DDS publisher.
Definition ddsPub.cpp:77
void CreateManyDataWriters(const std::vector< DdsWriterParams > &)
create DDS topics and DDS writers for the given list (vector) of topic names and rtctk::componentFram...
Definition ddsPub.cpp:187
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
std::vector< DataWriter * > & GetDataWriters()
returns vector of all DDS Data writers
Definition ddsPub.hpp:144
DataWriter * CreateDataWriter(Topic *topic, DataWriterListener *listener=nullptr)
Creates DDS writer for particular topic for topic of type: rtctk::AgnosticTopic.
Definition ddsPub.cpp:94
void DestroyAllDataWriters(std::chrono::milliseconds wait_acks_timeout=5000ms)
Destroys DDS Data Writer for all DDS topics.
Definition ddsPub.cpp:216
Common functionallty needed to create DDS entities like participant and topic that can be later used ...
Definition dds.hpp:33
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
Declares common DDS class.
Definition commandReplier.cpp:22
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23
Structure that keeps together topic name and DDS Data Writer listener.
Definition ddsPub.hpp:27
DataWriterListener * listener
Definition ddsPub.hpp:29
std::string topic_name
Definition ddsPub.hpp:28
DdsWriterParams(const std::string &tn)
Definition ddsPub.hpp:34
DdsWriterParams(const std::string &tn, DataWriterListener *l)
Definition ddsPub.hpp:31