RTC Toolkit 4.0.2
Loading...
Searching...
No Matches
dds.hpp
Go to the documentation of this file.
1
12#ifndef RTCTK_COMPONENTFRAMEWORK_DATAPATH_DDS_HPP
13#define RTCTK_COMPONENTFRAMEWORK_DATAPATH_DDS_HPP
14
15#include <string>
16#include <vector>
17
18#include <log4cplus/logger.h>
20
22
33class Dds {
34protected:
35 DomainParticipantFactory *m_factory;
36 DomainParticipant *m_participant;
37
38 std::string m_qos_profile;
39
40 DomainId_t m_domain_id = 0;
41
42 std::vector<std::string> m_interface_white_list;
43
44 std::string m_participant_name;
45
46 // list of DDS topics
47 std::vector<Topic *> m_topics;
48 log4cplus::Logger &m_logger;
49
50public:
61 explicit Dds(const std::string &qos_file,
62 const std::string &qos_profile = DEFAULT_QOS_PROFILE,
63 DomainId_t domain_id = DEFAULT_DOMAIN_ID,
64 const std::string &participant_name = "");
65 virtual ~Dds() noexcept;
66
67 Dds(Dds &&rhs) = delete;
68 Dds &operator=(Dds &&rhs) = delete;
69
74 void SetQosProfile(const std::string &qos_profile) {
75 m_qos_profile = qos_profile;
76 }
77
88 void SetInterfaceWhiteList(const std::vector<std::string> &iwl);
89
97 void SetParticipantName(const std::string &name) {
98 m_participant_name = name;
99 }
100
105 void CreateParticipant();
106
111 void DestroyParticipant();
112
120 Topic *CreateTopic(const std::string &topic_name);
121
128 void DestroyTopic(Topic *topic, bool to_be_removed = true);
129
135 void CreateManyTopics(std::vector<std::string> &topic_names);
136
141 void DestroyAllTopics();
142
146 void DumpDDSstatistics();
147
148 size_t GetNumberOfTopics() const noexcept;
149
150 const std::string GetTopicName(size_t index) const noexcept;
151
156 inline static const std::string TELEM_DP_QOS_FILE = "telemDataPathDdsQos.xml";
157
162 inline static const std::string DEFAULT_QOS_PROFILE = "RtcTk_Default_Profile";
163
168 inline static const DomainId_t DEFAULT_DOMAIN_ID = 0;
169};
170
171} // namespace rtctk::componentFramework
172
173#endif // RTCTK_COMPONENTFRAMEWORK_DATAPATH_DDS_HPP
Common functionallty needed to create DDS entities like participant and topic that can be later used ...
Definition: dds.hpp:33
void CreateManyTopics(std::vector< std::string > &topic_names)
Creates many DDS topics.
Definition: dds.cpp:314
static const DomainId_t DEFAULT_DOMAIN_ID
default Domain Id for different DDS
Definition: dds.hpp:168
std::string m_participant_name
Definition: dds.hpp:44
void DestroyParticipant()
Destroys DDS participant created in CreateParticipant.
Definition: dds.cpp:226
void SetParticipantName(const std::string &name)
Sets the name of the DDS Participant.
Definition: dds.hpp:97
std::vector< std::string > m_interface_white_list
Definition: dds.hpp:42
void DestroyTopic(Topic *topic, bool to_be_removed=true)
Destroys DDS topic.
Definition: dds.cpp:297
DomainParticipant * m_participant
Definition: dds.hpp:36
static const std::string DEFAULT_QOS_PROFILE
default profile name for different DDS QoSs
Definition: dds.hpp:162
const std::string GetTopicName(size_t index) const noexcept
Definition: dds.cpp:346
std::vector< Topic * > m_topics
Definition: dds.hpp:47
size_t GetNumberOfTopics() const noexcept
Definition: dds.cpp:341
Topic * CreateTopic(const std::string &topic_name)
Creates DDS topic.
Definition: dds.cpp:243
void CreateParticipant()
Creates DDS participant.
Definition: dds.cpp:125
static const std::string TELEM_DP_QOS_FILE
default file name for different DDS QoSs
Definition: dds.hpp:156
virtual ~Dds() noexcept
Definition: dds.cpp:104
void DestroyAllTopics()
Destroys all DDS topics from internal map.
Definition: dds.cpp:326
std::string m_qos_profile
Definition: dds.hpp:38
log4cplus::Logger & m_logger
Definition: dds.hpp:48
DomainParticipantFactory * m_factory
Definition: dds.hpp:35
void DumpDDSstatistics()
Dumps / logs varios DDS statistic like NACks, ACKs, ... for each DDS writer.
Definition: dds.cpp:355
void SetQosProfile(const std::string &qos_profile)
Set FastDDS QoS profile after creation.
Definition: dds.hpp:74
void SetInterfaceWhiteList(const std::vector< std::string > &iwl)
Sets the interfaces that can be used for DDS sample traffic.
Definition: dds.cpp:113
DomainId_t m_domain_id
Definition: dds.hpp:40
Declares some common DDS functionality.
Definition: commandReplier.cpp:22