Skip to content

iox::roudi🔗

More...

Classes🔗

Name
struct iox::roudi::DefaultRouDiMemory
class iox::roudi::FixedPositionContainer
workaround container until we have a fixed list with the needed functionality
class iox::roudi::FixedSizeContainer
class iox::roudi::GenericMemoryBlock
The GenericMemoryBlock is an implementation of a MemoryBlock for a common use case.
class iox::roudi::IceOryxRouDiApp
struct iox::roudi::IceOryxRouDiComponents
class iox::roudi::IceOryxRouDiMemoryManager
class iox::roudi::MemoryBlock
The MemoryBlock is a container for general purpose memory. It is used to request some memory from a MemoryProvider, which can be POSIX SHM, the stack or something completely different. To be able to use the container, some functions need to be implemented. For most use cases the GenericMemoryBlock can be used, which is a templated class and implements the most common case.
class iox::roudi::MemoryProvider
This class creates memory which is requested by the MemoryBlocks. Once the memory is available, this is announced to the blocks, so that they can consume the memory for their needs. When the Memory is release, the blocks will also called to handle this appropriately, e.g. calling the destructor of the underlying type. This class is an interface with some default behavior and needs an implementation for real memory supply, e.g. a PosixShmMemoryProvider.
class iox::roudi::MemPoolCollectionMemoryBlock
The MemPoolCollectionMemoryBlock is an implementation of a MemoryBlock for a MemPool MemoryManager.
struct iox::roudi::MemPoolInfo
struct for the storage of mempool usage information. This data container is used by the introstpection::MemPoolInfoContainer array to store information on all available memmpools.
class iox::roudi::MemPoolIntrospection
This class handles the mempool intropection for RouDi. It is recommended to use the MemPoolIntrospectionType alias which sets the intended template parameters required for the actual introspection. The class sends snapshots of the mempool usage to the introspection client if subscribed.
struct iox::roudi::MemPoolIntrospectionInfo
the topic for the mempool introspection that a user can subscribe to
class iox::roudi::MemPoolSegmentManagerMemoryBlock
struct iox::roudi::PortData
container for common port data which is related to the subscriber port as well as the publisher port
class iox::roudi::PortIntrospection
This class handles the port introspection for RouDi. It is recommended to use the PortIntrospectionType alias which sets the intended template parameter required for the actual introspection. The class manages a thread that periodically updates a field with port introspection data to which clients may subscribe.
struct iox::roudi::PortIntrospectionFieldTopic
the topic for the port introspection that a user can subscribe to
class iox::roudi::PortManager
class iox::roudi::PortPool
struct iox::roudi::PortPoolData
class iox::roudi::PortPoolMemoryBlock
struct iox::roudi::PortThroughputData
struct iox::roudi::PortThroughputIntrospectionFieldTopic
the topic for the port throughput that a user can subscribe to
class iox::roudi::PosixShmMemoryProvider
Creates the shared memory based on a provided configuration.
class iox::roudi::Process
class iox::roudi::ProcessIntrospection
This class handles the process intropection for RouDi. It is recommended to use the ProcessIntrospectionType alias which sets the intended template parameter. The class tracks the adding and removal of processes and sends it to the introspection client if subscribed.
struct iox::roudi::ProcessIntrospectionData
struct iox::roudi::ProcessIntrospectionFieldTopic
the topic for the process introspection that a user can subscribe to
class iox::roudi::ProcessManager
class iox::roudi::ProcessManagerInterface
struct iox::roudi::PublisherPortData
container for publisher port introspection data.
class iox::roudi::RouDi
class iox::roudi::RouDiApp
base class for RouDi daemons
class iox::roudi::RouDiConfigFileProvider
Base class for a config file provider.
class iox::roudi::RouDiMemoryInterface
class iox::roudi::RouDiMemoryManager
class iox::roudi::ServiceRegistry
struct iox::roudi::SubscriberPortChangingData
struct iox::roudi::SubscriberPortChangingIntrospectionFieldTopic

Types🔗

Name
enum MonitoringMode { ON, OFF }
Controls process alive monitoring. Upon timeout, a monitored process is removed and its resources are made available. The process can then start and register itself again. Contrarily, unmonitored processes can be restarted but registration will fail. Once Runlevel Management is extended, it will detect absent processes. Those processes can register again. ON - all processes are monitored OFF - no process is monitored.
enum MemoryProviderError
enum RouDiMemoryManagerError
enum uint8_t PortPoolError
enum RouDiConfigFileParseError { INVALID_STATE, NO_GENERAL_SECTION, INVALID_CONFIG_FILE_VERSION, NO_SEGMENTS, MAX_NUMBER_OF_SEGMENTS_EXCEEDED, SEGMENT_WITHOUT_MEMPOOL, MAX_NUMBER_OF_MEMPOOLS_PER_SEGMENT_EXCEEDED, MEMPOOL_WITHOUT_CHUNK_SIZE, MEMPOOL_WITHOUT_CHUNK_COUNT, EXCEPTION_IN_PARSER }
This are the errors which can occur when a config file is parsed NO_GENERAL_SECTION - the section for general config was not found INVALID_CONFIG_FILE_VERSION - an invalid config file version was detected NO_SEGMENTS - at least one segment needs to be defined MAX_NUMBER_OF_SEGMENTS_EXCEEDED - max number of segments exceeded SEGMENT_WITHOUT_MEMPOOL - a segment must have at least one mempool MAX_NUMBER_OF_MEMPOOLS_PER_SEGMENT_EXCEEDED - the max number of mempools per segment is exceeded MEMPOOL_WITHOUT_CHUNK_SIZE - chunk size not specified for the mempool MEMPOOL_WITHOUT_CHUNK_COUNT - chunk count not specified for the mempool.
using cxx::string< 1024 > ConfigFilePathString_t
using MemPoolIntrospection< mepoo::MemoryManager, mepoo::SegmentManager<>, PublisherPortUserType > MemPoolIntrospectionType
typedef for the templated mempool introspection class that is used by RouDi for the actual mempool introspection functionality.
using PortIntrospection< PublisherPortUserType, SubscriberPortUserType > PortIntrospectionType
typedef for the templated port introspection class that is used by RouDi for the actual port introspection functionality.
using ProcessIntrospection< PublisherPortUserType > ProcessIntrospectionType
typedef for the templated process introspection class that is used by RouDi for the actual process introspection functionality.
using cxx::vector< MemPoolInfo, MAX_NUMBER_OF_MEMPOOLS > MemPoolInfoContainer
container for MemPoolInfo structs of all available mempools.
using cxx::vector< MemPoolIntrospectionInfo, MAX_SHM_SEGMENTS+1 > MemPoolIntrospectionInfoContainer
container for MemPoolInfo structs of all available mempools.
using PortData SubscriberPortData

Functions🔗

Name
iox::log::LogStream & operator<<(iox::log::LogStream & logstream, const MonitoringMode & mode)
capro::Interfaces StringToCaProInterface(const capro::IdString_t & str)
iox::log::LogStream & operator<<(iox::log::LogStream & logstream, const RouDiMemoryManagerError & error)

Attributes🔗

Name
constexpr const char ROUDI_LOCK_NAME
constexpr const char IPC_CHANNEL_ROUDI_NAME
constexpr const char SHM_NAME
shared memmory segment for the iceoryx managment data
constexpr units::Duration PROCESS_DEFAULT_KILL_DELAY
constexpr units::Duration PROCESS_TERMINATED_CHECK_INTERVAL
constexpr units::Duration DISCOVERY_INTERVAL
constexpr const char INTROSPECTION_SERVICE_ID
constexpr const char INTROSPECTION_APP_NAME
constexpr const char INTROSPECTION_NODE_NAME
const capro::ServiceDescription IntrospectionMempoolService
constexpr int MAX_GROUP_NAME_LENGTH
const capro::ServiceDescription IntrospectionPortService
publisher/subscriber port information consisting of a process name,a capro service description string and a node name
const capro::ServiceDescription IntrospectionPortThroughputService
const capro::ServiceDescription IntrospectionSubscriberPortChangingDataService
const capro::ServiceDescription IntrospectionProcessService
constexpr const char * ROUDI_CONFIG_FILE_PARSE_ERROR_STRINGS

Detailed Description🔗

Todo: Move everything in this namespace to iceoryx_roudi_types.hpp once we move RouDi to a separate CMake target

Types Documentation🔗

enum MonitoringMode🔗

Enumerator Value Description
ON
OFF

Controls process alive monitoring. Upon timeout, a monitored process is removed and its resources are made available. The process can then start and register itself again. Contrarily, unmonitored processes can be restarted but registration will fail. Once Runlevel Management is extended, it will detect absent processes. Those processes can register again. ON - all processes are monitored OFF - no process is monitored.

enum MemoryProviderError🔗

Enumerator Value Description
INVALID_STATE
MEMORY_BLOCKS_EXHAUSTED attempt to add more memory blocks than the capacity allows
NO_MEMORY_BLOCKS_PRESENT an action was performed which requires memory blocks
MEMORY_ALREADY_CREATED attempt to create memory although it already was created
MEMORY_CREATION_FAILED generic error if memory creation failed
PAGE_SIZE_CHECK_ERROR an error occurred while getting the page size
MEMORY_ALIGNMENT_EXCEEDS_PAGE_SIZE attempt to create memory with an alignment bigger than the page size
MEMORY_ALLOCATION_FAILED memory creation failed at allocating memory
MEMORY_MAPPING_FAILED memory creation failed at mapping memory
MEMORY_NOT_AVAILABLE an action was performed which requires memory
MEMORY_DESTRUCTION_FAILED generic error if memory destruction failed
MEMORY_DEALLOCATION_FAILED memory destruction failed at deallocating memory
MEMORY_UNMAPPING_FAILED memory destruction failed at unmapping memory
SIGACTION_CALL_FAILED Setup or teardown of SIGBUS failed.

enum RouDiMemoryManagerError🔗

Enumerator Value Description
INVALID_STATE
MEMORY_PROVIDER_EXHAUSTED attempt to add more memory provider than the capacity allows
NO_MEMORY_PROVIDER_PRESENT an action was performed which requires memory provider
MEMORY_CREATION_FAILED generic error if memory creation failed
MEMORY_DESTRUCTION_FAILED generic error if memory destruction failed

enum PortPoolError🔗

Enumerator Value Description
INVALID_STATE
UNIQUE_PUBLISHER_PORT_ALREADY_EXISTS
PUBLISHER_PORT_LIST_FULL
SUBSCRIBER_PORT_LIST_FULL
INTERFACE_PORT_LIST_FULL
APPLICATION_PORT_LIST_FULL
NODE_DATA_LIST_FULL
CONDITION_VARIABLE_LIST_FULL
EVENT_VARIABLE_LIST_FULL

enum RouDiConfigFileParseError🔗

Enumerator Value Description
INVALID_STATE
NO_GENERAL_SECTION
INVALID_CONFIG_FILE_VERSION
NO_SEGMENTS
MAX_NUMBER_OF_SEGMENTS_EXCEEDED
SEGMENT_WITHOUT_MEMPOOL
MAX_NUMBER_OF_MEMPOOLS_PER_SEGMENT_EXCEEDED
MEMPOOL_WITHOUT_CHUNK_SIZE
MEMPOOL_WITHOUT_CHUNK_COUNT
EXCEPTION_IN_PARSER

This are the errors which can occur when a config file is parsed NO_GENERAL_SECTION - the section for general config was not found INVALID_CONFIG_FILE_VERSION - an invalid config file version was detected NO_SEGMENTS - at least one segment needs to be defined MAX_NUMBER_OF_SEGMENTS_EXCEEDED - max number of segments exceeded SEGMENT_WITHOUT_MEMPOOL - a segment must have at least one mempool MAX_NUMBER_OF_MEMPOOLS_PER_SEGMENT_EXCEEDED - the max number of mempools per segment is exceeded MEMPOOL_WITHOUT_CHUNK_SIZE - chunk size not specified for the mempool MEMPOOL_WITHOUT_CHUNK_COUNT - chunk count not specified for the mempool.

using ConfigFilePathString_t🔗

using iox::roudi::ConfigFilePathString_t = typedef cxx::string<1024>;

using MemPoolIntrospectionType🔗

using iox::roudi::MemPoolIntrospectionType = typedef MemPoolIntrospection<mepoo::MemoryManager, mepoo::SegmentManager<>, PublisherPortUserType>;

typedef for the templated mempool introspection class that is used by RouDi for the actual mempool introspection functionality.

using PortIntrospectionType🔗

using iox::roudi::PortIntrospectionType = typedef PortIntrospection<PublisherPortUserType, SubscriberPortUserType>;

typedef for the templated port introspection class that is used by RouDi for the actual port introspection functionality.

using ProcessIntrospectionType🔗

using iox::roudi::ProcessIntrospectionType = typedef ProcessIntrospection<PublisherPortUserType>;

typedef for the templated process introspection class that is used by RouDi for the actual process introspection functionality.

using MemPoolInfoContainer🔗

using iox::roudi::MemPoolInfoContainer = typedef cxx::vector<MemPoolInfo, MAX_NUMBER_OF_MEMPOOLS>;

container for MemPoolInfo structs of all available mempools.

using MemPoolIntrospectionInfoContainer🔗

using iox::roudi::MemPoolIntrospectionInfoContainer = typedef cxx::vector<MemPoolIntrospectionInfo, MAX_SHM_SEGMENTS + 1>;

container for MemPoolInfo structs of all available mempools.

using SubscriberPortData🔗

using iox::roudi::SubscriberPortData = typedef PortData;

Functions Documentation🔗

function operator<<🔗

inline iox::log::LogStream & operator<<(
    iox::log::LogStream & logstream,
    const MonitoringMode & mode
)

function StringToCaProInterface🔗

capro::Interfaces StringToCaProInterface(
    const capro::IdString_t & str
)

function operator<<🔗

iox::log::LogStream & operator<<(
    iox::log::LogStream & logstream,
    const RouDiMemoryManagerError & error
)

Attributes Documentation🔗

variable ROUDI_LOCK_NAME🔗

constexpr const char ROUDI_LOCK_NAME = "iox-unique-roudi";

variable IPC_CHANNEL_ROUDI_NAME🔗

constexpr const char IPC_CHANNEL_ROUDI_NAME = "roudi";

variable SHM_NAME🔗

constexpr const char SHM_NAME = "/iceoryx_mgmt";

shared memmory segment for the iceoryx managment data

variable PROCESS_DEFAULT_KILL_DELAY🔗

constexpr units::Duration PROCESS_DEFAULT_KILL_DELAY = 45_s;

variable PROCESS_TERMINATED_CHECK_INTERVAL🔗

constexpr units::Duration PROCESS_TERMINATED_CHECK_INTERVAL = 250_ms;

variable DISCOVERY_INTERVAL🔗

constexpr units::Duration DISCOVERY_INTERVAL = 100_ms;

variable INTROSPECTION_SERVICE_ID🔗

constexpr const char INTROSPECTION_SERVICE_ID = "Introspection";

variable INTROSPECTION_APP_NAME🔗

constexpr const char INTROSPECTION_APP_NAME = "introspection";

variable INTROSPECTION_NODE_NAME🔗

constexpr const char INTROSPECTION_NODE_NAME = "introspection";

variable IntrospectionMempoolService🔗

const capro::ServiceDescription IntrospectionMempoolService;

variable MAX_GROUP_NAME_LENGTH🔗

constexpr int MAX_GROUP_NAME_LENGTH = 32;

variable IntrospectionPortService🔗

const capro::ServiceDescription IntrospectionPortService;

publisher/subscriber port information consisting of a process name,a capro service description string and a node name

variable IntrospectionPortThroughputService🔗

const capro::ServiceDescription IntrospectionPortThroughputService;

variable IntrospectionSubscriberPortChangingDataService🔗

const capro::ServiceDescription IntrospectionSubscriberPortChangingDataService;

variable IntrospectionProcessService🔗

const capro::ServiceDescription IntrospectionProcessService;

variable ROUDI_CONFIG_FILE_PARSE_ERROR_STRINGS🔗

constexpr const char * ROUDI_CONFIG_FILE_PARSE_ERROR_STRINGS = {"INVALID_STATE",
                                                                 "NO_GENERAL_SECTION",
                                                                 "INVALID_CONFIG_FILE_VERSION",
                                                                 "NO_SEGMENTS",
                                                                 "MAX_NUMBER_OF_SEGMENTS_EXCEEDED",
                                                                 "SEGMENT_WITHOUT_MEMPOOL",
                                                                 "MAX_NUMBER_OF_MEMPOOLS_PER_SEGMENT_EXCEEDED",
                                                                 "MEMPOOL_WITHOUT_CHUNK_SIZE",
                                                                 "MEMPOOL_WITHOUT_CHUNK_COUNT",
                                                                 "EXCEPTION_IN_PARSER"};

Updated on 17 June 2021 at 11:15:27 CEST