Class SubscriberPortMultiProducer

Inheritance Relationships

Base Type

Class Documentation

class SubscriberPortMultiProducer : public iox::popo::SubscriberPortRouDi

The SubscriberPortMultiProducer is the implementation of the SubscriberPortRouDi for a setup where subscribers can have multiple matching publishers. I.e. a n:m pub/sub deployment. The handling of CaPro messages is different for 1:m and n:m deployment.

Public Types

using MemberType_t = SubscriberPortData

Public Functions

explicit SubscriberPortMultiProducer(cxx::not_null<MemberType_t*const> publisherPortDataPtr) noexcept
SubscriberPortMultiProducer(const SubscriberPortMultiProducer &other) = delete
SubscriberPortMultiProducer &operator=(const SubscriberPortMultiProducer&) = delete
SubscriberPortMultiProducer(SubscriberPortMultiProducer &&rhs) noexcept = default
SubscriberPortMultiProducer &operator=(SubscriberPortMultiProducer &&rhs) noexcept = default
~SubscriberPortMultiProducer() = default
virtual cxx::optional<capro::CaproMessage> tryGetCaProMessage() noexcept override

get an optional CaPro message that changes the subscription state of the subscriber

Returns:

CaPro message with new subscription requet, empty optional if no state change

virtual cxx::optional<capro::CaproMessage> dispatchCaProMessageAndGetPossibleResponse(const capro::CaproMessage &caProMessage) noexcept override

dispatch a CaPro message to the subscriber for processing

Parameters:

caProMessage[in] to process

Returns:

CaPro message with an immediate response the provided CaPro message, empty optional if no response