13#ifndef IOX2_PORTFACTORY_SUBSCRIBER_HPP
14#define IOX2_PORTFACTORY_SUBSCRIBER_HPP
30template <ServiceType S,
typename Payload,
typename UserHeader>
34#ifdef DOXYGEN_MACRO_FIX
42#ifdef DOXYGEN_MACRO_FIX
51#ifdef DOXYGEN_MACRO_FIX
76 template <ServiceType,
typename,
typename>
81 iox2_port_factory_subscriber_builder_h m_handle =
nullptr;
85template <ServiceType S,
typename Payload,
typename UserHeader>
87 iox2_port_factory_subscriber_builder_h handle)
88 : m_handle { handle } {
91template <ServiceType S,
typename Payload,
typename UserHeader>
94 m_degradation_handler.emplace(handler);
95 return std::move(*
this);
98template <ServiceType S,
typename Payload,
typename UserHeader>
102 if (m_buffer_size.has_value()) {
103 iox2_port_factory_subscriber_builder_set_buffer_size(&m_handle, m_buffer_size.value());
106 if (m_history_request.has_value()) {
107 iox2_port_factory_subscriber_builder_set_history_request(&m_handle, m_history_request.value());
110 if (m_degradation_handler.has_value()) {
111 iox2_port_factory_subscriber_builder_set_degradation_handler(
115 if (m_name.has_value()) {
116 const auto* name_ptr = m_name.value().as_view().native_ptr();
117 iox2_port_factory_subscriber_builder_set_name(&m_handle, name_ptr);
120 iox2_subscriber_h sub_handle {};
121 auto result = iox2_port_factory_subscriber_builder_create(m_handle,
nullptr, &sub_handle);
123 if (result == IOX2_OK) {
127 return bb::err(bb::into<SubscriberCreateError>(result));
#define IOX2_BUILDER_OPTIONAL(type, name)
auto buffer_size(const uint64_t value) -> decltype(auto)
Defines the required buffer size of the [Subscriber]. Smallest possible value is 1.
~PortFactorySubscriber()=default
auto operator=(const PortFactorySubscriber &) -> PortFactorySubscriber &=delete
auto operator=(PortFactorySubscriber &&) -> PortFactorySubscriber &=default
PortFactorySubscriber(PortFactorySubscriber &&)=default
auto set_degradation_handler(DegradationHandler *handler) &&-> PortFactorySubscriber &&
PortFactorySubscriber(const PortFactorySubscriber &)=delete
auto history_request(const uint64_t value) -> decltype(auto)
auto name(const PortName value) -> decltype(auto)
auto create() &&-> bb::Expected< Subscriber< S, Payload, UserHeader >, SubscriberCreateError >
Creates a new [Subscriber] or returns a [SubscriberCreateError] on failure.
Represent the name for a [Port].
The receiving endpoint of a publish-subscribe communication.
constexpr auto err(const E &error) -> Unexpected< E >
iox2::bb::variation::Optional< T > Optional
iox2::bb::variation::Expected< T, E > Expected
auto degradation_handler_delegate(iox2_degradation_cause_e degradation_cause, iox2_degradation_info_h_ref info_handle, iox2_callback_context callback_cxt) -> iox2_degradation_action_e