RTC Toolkit 6.0.0-pre2
Loading...
Searching...
No Matches
ddsWaitSetIf.hpp
Go to the documentation of this file.
1
12#ifndef RTCTK_TELSUB_DDSWAITSETIF_HPP
13#define RTCTK_TELSUB_DDSWAITSETIF_HPP
14#include <optional>
15#include <rtctk/config.hpp>
16
17#include <chrono>
18#include <cstdint>
19#include <string>
20#include <variant>
21#include <vector>
22
25
26namespace rtctk::telSub {
27
28using namespace rtctk::componentFramework;
29
36 // cppcheck-suppress unusedStructMember
37 std::string multicast_address;
38};
39
50struct DdsParams {
54
55 // settings for each topic
56 std::map<std::string, DdsTopicOptions> m_topics = {};
57
58 // size is the number of network interfaces that we want, not the same as size of
59 // m_topics/m_multicast_addresses
60 std::vector<std::string> m_interface_white_list = {};
61
62 std::string m_component_name = "";
63};
64
68enum class InternalError : uint8_t { LUT_ENTRY_NOT_FOUND };
69
74 std::string topic;
75 std::variant<eprosima::fastdds::dds::ReturnCode_t, InternalError> code;
76 std::string Message() const;
77 bool operator==(const DdsWaitSetError& b) const {
78 return topic == b.topic and code == b.code;
79 };
80 friend void PrintTo(const DdsWaitSetError& error, std::ostream* os) {
81 *os << error.Message();
82 }
83};
84
92public:
93 DdsWaitSetIf() noexcept = default;
94 virtual ~DdsWaitSetIf() noexcept = default;
95
103 virtual AgnosticDataSamples& GetSamples() noexcept = 0;
104
139 virtual std::optional<DdsWaitSetError>
140 Take(std::chrono::nanoseconds timeout) noexcept = 0;
141
151 virtual size_t GetNumberOfTopics() const noexcept = 0;
152
153 virtual void CheckDdsConnections() = 0;
154};
155
156} // namespace rtctk::telSub
157
158#endif // RTCTK_TELSUB_DDSWAITSETIF_HPP
Declares AgnosticDataSamples.
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
static const std::string TELEM_DP_QOS_FILE
default file name for different DDS QoSs
Definition dds.hpp:162
Container of DDS samples and associated sample information.
Definition agnosticDataSamples.hpp:77
virtual size_t GetNumberOfTopics() const noexcept=0
Returns the number of configured topics.
virtual std::optional< DdsWaitSetError > Take(std::chrono::nanoseconds timeout) noexcept=0
Takes new samples from DDS readers and updates data structure accessable from GetSamples()
DdsWaitSetIf() noexcept=default
virtual AgnosticDataSamples & GetSamples() noexcept=0
Returns reference to data structure holding taken data samples.
virtual void CheckDdsConnections()=0
Project-wide configuration header.
Declares some common DDS functionality.
Definition main.cpp:24
InternalError
For internal errors.
Definition ddsWaitSetIf.hpp:68
@ LUT_ENTRY_NOT_FOUND
Definition ddsWaitSetIf.hpp:68
Definition ddsSub.hpp:156
Parameter set to be passed to classes deriving from DdsWaitSetIf.
Definition ddsWaitSetIf.hpp:50
std::map< std::string, DdsTopicOptions > m_topics
Definition ddsWaitSetIf.hpp:56
int32_t m_domain_id
Definition ddsWaitSetIf.hpp:51
std::string m_qos_profile
Definition ddsWaitSetIf.hpp:53
std::string m_component_name
Definition ddsWaitSetIf.hpp:62
std::string m_qos_file
Definition ddsWaitSetIf.hpp:52
std::vector< std::string > m_interface_white_list
Definition ddsWaitSetIf.hpp:60
Options for a single topic.
Definition ddsWaitSetIf.hpp:35
std::string multicast_address
Definition ddsWaitSetIf.hpp:37
Error reporting struct, contains the return code and topic where the error occurred.
Definition ddsWaitSetIf.hpp:73
std::variant< eprosima::fastdds::dds::ReturnCode_t, InternalError > code
Definition ddsWaitSetIf.hpp:75
bool operator==(const DdsWaitSetError &b) const
Definition ddsWaitSetIf.hpp:77
std::string topic
Definition ddsWaitSetIf.hpp:74
friend void PrintTo(const DdsWaitSetError &error, std::ostream *os)
Definition ddsWaitSetIf.hpp:80
std::string Message() const
Definition ddsWaitSet.cpp:82