iox::popo::ServerPortUser🔗
The ServerPortUser provides the API for accessing a server port from the user side. The server port is divided in the three parts ServerPortData, ServerPortRouDi and ServerPortUser. The ServerPortUser uses the functionality of a ChunkSender and ChunReceiver for receiving requests and sending responses. Additionally it provides the offer / stopOffer API which controls whether the server is discoverable for client ports.
#include <server_port_user.hpp>
Inherits from iox::popo::BasePort
Public Types🔗
Name | |
---|---|
using ServerPortData | MemberType_t |
Public Functions🔗
Name | |
---|---|
ServerPortUser(cxx::not_null< MemberType_t *const > serverPortDataPtr) | |
ServerPortUser(const ServerPortUser & other) | |
ServerPortUser & | operator=(const ServerPortUser & ) |
ServerPortUser(ServerPortUser && rhs) =default | |
ServerPortUser & | operator=(ServerPortUser && rhs) =default |
~ServerPortUser() =default | |
cxx::expected< cxx::optional< const RequestHeader * >, ChunkReceiveResult > | getRequest() Tries to get the next request from the queue. If there is a new one, the ChunkHeader of the oldest request in the queue is returned (FiFo queue) |
void | releaseRequest(const RequestHeader *const requestHeader) Release a request that was obtained with getRequest. |
bool | hasNewRequests() const check if there are requests in the queue |
bool | hasLostRequestsSinceLastCall() check if there was a queue overflow since the last call of hasLostRequestsSinceLastCall |
cxx::expected< ResponseHeader *, AllocationError > | allocateResponse(const uint32_t userPayloadSize) Allocate a response, the ownerhip of the SharedChunk remains in the ServerPortUser for being able to cleanup if the user process disappears. |
void | freeResponse(ResponseHeader *const responseHeader) Free an allocated response without sending it. |
void | sendResponse(ResponseHeader *const responseHeader) Send an allocated request chunk to the server port. |
void | offer() offer this server port in the system |
void | stopOffer() stop offering this server port, all clients will be disconnected from this server |
bool | isOffered() const Checks whether the server port is currently offered. |
bool | hasClients() const Checks whether there are currently clients connected to this server. |
void | setConditionVariable(ConditionVariableData & conditionVariableData, const uint64_t notificationIndex) set a condition variable (via its pointer) to the client |
void | unsetConditionVariable() unset a condition variable from the client |
bool | isConditionVariableSet() const check if there's a condition variable set |
Additional inherited members🔗
Public Functions inherited from iox::popo::BasePort
Name | |
---|---|
BasePort(MemberType_t *const basePortDataPtr) | |
BasePort(const BasePort & other) | |
BasePort(BasePort && ) | |
virtual | ~BasePort() =default |
operator bool() const a port can be constructed from a nullptr, additionally it also can be moved and in these cases the member methods would work on a nullptr. to circumvent this problem |
|
capro::ServiceDescription | getCaProServiceDescription() const Reads Type of actual CaPro Port (publisher/subscriber...) |
RuntimeName_t | getRuntimeName() const Gets name of the application's runtime for the active port. |
UniquePortId | getUniqueID() const Gets Id of the active port. |
NodeName_t | getNodeName() const returns node name for the active port |
void | destroy() Indicate that this port can be destroyed. |
bool | toBeDestroyed() const Checks whether port can be destroyed. |
Public Types Documentation🔗
using MemberType_t🔗
using iox::popo::ServerPortUser::MemberType_t = ServerPortData;
Public Functions Documentation🔗
function ServerPortUser🔗
explicit ServerPortUser(
cxx::not_null< MemberType_t *const > serverPortDataPtr
)
function ServerPortUser🔗
ServerPortUser(
const ServerPortUser & other
)
function operator=🔗
ServerPortUser & operator=(
const ServerPortUser &
)
function ServerPortUser🔗
ServerPortUser(
ServerPortUser && rhs
) =default
function operator=🔗
ServerPortUser & operator=(
ServerPortUser && rhs
) =default
function ~ServerPortUser🔗
~ServerPortUser() =default
function getRequest🔗
cxx::expected< cxx::optional< const RequestHeader * >, ChunkReceiveResult > getRequest()
Tries to get the next request from the queue. If there is a new one, the ChunkHeader of the oldest request in the queue is returned (FiFo queue)
Return: optional that has a new chunk header or no value if there are no new requests in the underlying queue, ChunkReceiveResult on error
function releaseRequest🔗
void releaseRequest(
const RequestHeader *const requestHeader
)
Release a request that was obtained with getRequest.
Parameters:
- chunkHeaderpointer to the ChunkHeader to release
function hasNewRequests🔗
bool hasNewRequests() const
check if there are requests in the queue
Return: if there are requests in the queue return true, otherwise false
function hasLostRequestsSinceLastCall🔗
bool hasLostRequestsSinceLastCall()
check if there was a queue overflow since the last call of hasLostRequestsSinceLastCall
Return: true if the underlying queue overflowed since last call of this method, otherwise false
function allocateResponse🔗
cxx::expected< ResponseHeader *, AllocationError > allocateResponse(
const uint32_t userPayloadSize
)
Allocate a response, the ownerhip of the SharedChunk remains in the ServerPortUser for being able to cleanup if the user process disappears.
Parameters:
- userPayloadSizesize of the user user-paylaod without additional headers
Return: on success pointer to a ChunkHeader which can be used to access the chunk-header, user-header and user-payload fields, error if not
function freeResponse🔗
void freeResponse(
ResponseHeader *const responseHeader
)
Free an allocated response without sending it.
Parameters:
- chunkHeaderpointer to the ChunkHeader to free
function sendResponse🔗
void sendResponse(
ResponseHeader *const responseHeader
)
Send an allocated request chunk to the server port.
Parameters:
- chunkHeaderpointer to the ChunkHeader to send
function offer🔗
void offer()
offer this server port in the system
function stopOffer🔗
void stopOffer()
stop offering this server port, all clients will be disconnected from this server
function isOffered🔗
bool isOffered() const
Checks whether the server port is currently offered.
Return: true if currently offered otherwise false
function hasClients🔗
bool hasClients() const
Checks whether there are currently clients connected to this server.
Return: true if there are clients otherwise false
function setConditionVariable🔗
void setConditionVariable(
ConditionVariableData & conditionVariableData,
const uint64_t notificationIndex
)
set a condition variable (via its pointer) to the client
Return: true if attachment worked, otherwise false
function unsetConditionVariable🔗
void unsetConditionVariable()
unset a condition variable from the client
function isConditionVariableSet🔗
bool isConditionVariableSet() const
check if there's a condition variable set
Return: true if a condition variable attached, otherwise false
Updated on 31 May 2022 at 15:29:16 CEST