80 #ifdef VLINK_SUPPORT_DDSR
85 #include <shared_mutex>
88 #include "../extension/qos.h"
89 #include "../impl/conf.h"
106 PropertiesMap qos_ext;
116 explicit DdsrConf(
const std::string& _topic, int32_t _domain = 0, int32_t _depth = 0,
const std::string& _qos =
"");
125 explicit DdsrConf(
const std::string& _topic, int32_t _domain,
const PropertiesMap& _qos_ext);
133 [[nodiscard]]
bool operator==(
const DdsrConf& conf)
const noexcept;
141 [[nodiscard]]
bool operator!=(
const DdsrConf& conf)
const noexcept;
148 [[nodiscard]]
TransportType get_transport_type()
const override;
161 static void register_qos(
const std::string& name,
const Qos& qos);
164 static void register_qos_internal(
const std::string& name,
const Qos& qos);
166 static const Qos& find_qos(
const std::string& name);
168 friend class DdsrFactory;
169 static std::map<std::string, Qos> qos_map_;
170 static std::shared_mutex mtx_;
171 static constexpr
const char* kRespSuffix{
"___resp"};
172 #ifndef VLINK_ENABLE_C_INTERFACE
183 inline DdsrConf::DdsrConf(
const std::string& _topic, int32_t _domain, int32_t _depth,
const std::string& _qos)
184 : topic(_topic), domain(_domain), depth(_depth), qos(_qos) {}
186 inline DdsrConf::DdsrConf(
const std::string& _topic, int32_t _domain,
const PropertiesMap& _qos_ext)
187 : topic(_topic), domain(_domain), qos_ext(_qos_ext) {}
190 return topic == conf.topic && domain == conf.domain && depth == conf.depth && qos == conf.qos &&
191 qos_ext == conf.qos_ext;
194 inline bool DdsrConf::operator!=(
const DdsrConf& conf)
const noexcept {
return !(*
this == conf); }
196 inline TransportType DdsrConf::get_transport_type()
const {
return TransportType::kDdsr; }
#define VLINK_CONF_IMPL(classname)
Convenience macro that emits the standard concrete conf boilerplate.
Definition: conf.h:251
#define VLINK_DECLARE_GLOBAL_PROPERTY()
Declares per-transport static configuration storage and access helpers.
Definition: conf.h:309
#define VLINK_ALLOW_IMPL_TYPE(type)
Records the bitmask of ImplType values supported by a conf.
Definition: conf.h:292
#define VLINK_EXPORT
Definition: macros.h:81
bool operator==(const Function< ReturnT(ArgsT...), SboSizeT > &cb, std::nullptr_t) noexcept
Equality with nullptr; true when cb has no stored target.
Definition: functional.h:1051
bool operator!=(const Function< ReturnT(ArgsT...), SboSizeT > &cb, std::nullptr_t) noexcept
Inequality with nullptr; true when cb stores a target.
Definition: functional.h:1061
TransportType
Enumeration of every transport backend recognised by VLink.
Definition: types.h:128
@ kGetter
Field getter (reads latest value).
Definition: types.h:117
@ kSubscriber
Event subscriber (receives broadcasts).
Definition: types.h:115
@ kClient
Method client (RPC caller).
Definition: types.h:113
@ kSetter
Field setter (writes latest value).
Definition: types.h:116
@ kPublisher
Event publisher (one-to-many broadcast).
Definition: types.h:114
@ kServer
Method server (RPC responder).
Definition: types.h:112