Class ClientPortRouDi

Inheritance Relationships

Base Type

Class Documentation

class ClientPortRouDi : public iox::popo::BasePort

The ClientPortRouDi provides the API for accessing a client port from the RouDi middleware daemon side. The client port is divided in the three parts ClientPortData, ClientPortRouDi and ClientPortUser. The ClientPortRouDi provides service discovery functionality that is based on CaPro messages. With this API the dynamic connections between clients and servers ports can be established.

Note

This class is not thread-safe and must be guarded by a mutex if used in a multithreaded context.

Public Types

using MemberType_t = ClientPortData

Public Functions

explicit ClientPortRouDi(MemberType_t &clientPortData) noexcept

Creates a ClientPortRouDi from ClientPortData which are shared with ClientPortUser.

Parameters:

clientPortData[in] to be are accessed by the ClientPortRouDi interface

ClientPortRouDi(const ClientPortRouDi &other) = delete
ClientPortRouDi &operator=(const ClientPortRouDi&) = delete
ClientPortRouDi(ClientPortRouDi &&rhs) noexcept = default
ClientPortRouDi &operator=(ClientPortRouDi &&rhs) noexcept = default
~ClientPortRouDi() = default
QueueFullPolicy getResponseQueueFullPolicy() const noexcept

Access to the configured responseQueueFullPolicy.

Returns:

the configured responseQueueFullPolicy

ConsumerTooSlowPolicy getServerTooSlowPolicy() const noexcept

Access to the configured serverTooSlowPolicy.

Returns:

the configured serverTooSlowPolicy

cxx::optional<capro::CaproMessage> tryGetCaProMessage() noexcept

get an optional CaPro message that requests changes to the desired connection state of the client

Returns:

CaPro message with desired connection state, empty optional if no state change

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

dispatch a CaPro message to the client for processing

Parameters:

caProMessage[in] to process

Returns:

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

void releaseAllChunks() noexcept

cleanup the client and release all the chunks it currently holds

Attention

Contract is that user process is no more running when cleanup is called