RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
ddsWaitSetIf.hpp
Go to the documentation of this file.
1
11#ifndef RTCTK_TELSUB_DDSWAITSETIF_HPP
12#define RTCTK_TELSUB_DDSWAITSETIF_HPP
13#include <optional>
14#include <rtctk/config.hpp>
15
16#include <chrono>
17#include <cstdint>
18#include <string>
19#include <variant>
20#include <vector>
21
24
25namespace rtctk::telSub {
26
27using namespace rtctk::componentFramework;
28
35 // cppcheck-suppress unusedStructMember
36 std::string multicast_address;
37};
38
49struct DdsParams {
53
54 // settings for each topic
55 std::map<std::string, DdsTopicOptions> m_topics = {};
56
57 // size is the number of network interfaces that we want, not the same as size of
58 // m_topics/m_multicast_addresses
59 std::vector<std::string> m_interface_white_list = {};
60
61 std::string m_component_name = "";
62};
63
67enum class InternalError : uint8_t { LUT_ENTRY_NOT_FOUND };
68
73 std::string topic;
74 std::variant<eprosima::fastdds::dds::ReturnCode_t, InternalError> code;
75 std::string Message() const;
76 bool operator==(const DdsWaitSetError& b) const {
77 return topic == b.topic and code == b.code;
78 };
79 friend void PrintTo(const DdsWaitSetError& error, std::ostream* os) {
80 *os << error.Message();
81 }
82};
83
91public:
92 DdsWaitSetIf() noexcept = default;
93 virtual ~DdsWaitSetIf() noexcept = default;
94
102 virtual AgnosticDataSamples& GetSamples() noexcept = 0;
103
138 virtual std::optional<DdsWaitSetError> Take(std::chrono::nanoseconds timeout) noexcept = 0;
139
149 virtual size_t GetNumberOfTopics() const noexcept = 0;
150
151 virtual void CheckDdsConnections() = 0;
152};
153
154} // namespace rtctk::telSub
155
156#endif // RTCTK_TELSUB_DDSWAITSETIF_HPP
Declares AgnosticDataSamples.
static const DomainId_t DEFAULT_DOMAIN_ID
default Domain Id for different DDS
Definition dds.hpp:173
static const std::string DEFAULT_QOS_PROFILE
default profile name for different DDS QoSs
Definition dds.hpp:167
static const std::string TELEM_DP_QOS_FILE
default file name for different DDS QoSs
Definition dds.hpp:161
Container of DDS samples and associated sample information.
Definition agnosticDataSamples.hpp:75
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:23
InternalError
For internal errors.
Definition ddsWaitSetIf.hpp:67
@ LUT_ENTRY_NOT_FOUND
Definition ddsWaitSetIf.hpp:67
Definition ddsSub.hpp:155
Parameter set to be passed to classes deriving from DdsWaitSetIf.
Definition ddsWaitSetIf.hpp:49
std::map< std::string, DdsTopicOptions > m_topics
Definition ddsWaitSetIf.hpp:55
int32_t m_domain_id
Definition ddsWaitSetIf.hpp:50
std::string m_qos_profile
Definition ddsWaitSetIf.hpp:52
std::string m_component_name
Definition ddsWaitSetIf.hpp:61
std::string m_qos_file
Definition ddsWaitSetIf.hpp:51
std::vector< std::string > m_interface_white_list
Definition ddsWaitSetIf.hpp:59
Options for a single topic.
Definition ddsWaitSetIf.hpp:34
std::string multicast_address
Definition ddsWaitSetIf.hpp:36
Error reporting struct, contains the return code and topic where the error occurred.
Definition ddsWaitSetIf.hpp:72
std::variant< eprosima::fastdds::dds::ReturnCode_t, InternalError > code
Definition ddsWaitSetIf.hpp:74
bool operator==(const DdsWaitSetError &b) const
Definition ddsWaitSetIf.hpp:76
std::string topic
Definition ddsWaitSetIf.hpp:73
friend void PrintTo(const DdsWaitSetError &error, std::ostream *os)
Definition ddsWaitSetIf.hpp:79
std::string Message() const
Definition ddsWaitSet.cpp:81