13#ifndef IOX2_PORTFACTORY_SUBSCRIBER_HPP
14#define IOX2_PORTFACTORY_SUBSCRIBER_HPP
29template <ServiceType S,
typename Payload,
typename UserHeader>
33#ifdef DOXYGEN_MACRO_FIX
58 template <ServiceType,
typename,
typename>
63 iox2_port_factory_subscriber_builder_h m_handle =
nullptr;
67template <ServiceType S,
typename Payload,
typename UserHeader>
69 iox2_port_factory_subscriber_builder_h handle)
70 : m_handle { handle } {
73template <ServiceType S,
typename Payload,
typename UserHeader>
76 m_degradation_handler.emplace(handler);
77 return std::move(*
this);
80template <ServiceType S,
typename Payload,
typename UserHeader>
84 if (m_buffer_size.has_value()) {
85 iox2_port_factory_subscriber_builder_set_buffer_size(&m_handle, m_buffer_size.value());
88 if (m_degradation_handler.has_value()) {
89 iox2_port_factory_subscriber_builder_set_degradation_handler(
93 iox2_subscriber_h sub_handle {};
94 auto result = iox2_port_factory_subscriber_builder_create(m_handle,
nullptr, &sub_handle);
96 if (result == IOX2_OK) {
100 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 create() &&-> bb::Expected< Subscriber< S, Payload, UserHeader >, SubscriberCreateError >
Creates a new [Subscriber] or returns a [SubscriberCreateError] on failure.
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