iox::roudi🔗
Classes🔗
Name | |
---|---|
struct | iox::roudi::DefaultRouDiMemory |
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. |
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. |
struct | iox::roudi::MemPoolIntrospectionInfo the topic for the mempool introspection that a user can subscribe to |
struct | iox::roudi::PortData container for common port data which is related to the subscriber port as well as the publisher port |
struct | iox::roudi::PortIntrospectionFieldTopic the topic for the port introspection that a user can subscribe to |
class | iox::roudi::PortPool |
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. |
struct | iox::roudi::ProcessIntrospectionData |
struct | iox::roudi::ProcessIntrospectionFieldTopic the topic for the process introspection that a user can subscribe to |
struct | iox::roudi::PublisherPortData container for publisher port introspection data. |
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 |
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 { MEMORY_BLOCKS_EXHAUSTED, NO_MEMORY_BLOCKS_PRESENT, MEMORY_ALREADY_CREATED, MEMORY_CREATION_FAILED, MEMORY_ALIGNMENT_EXCEEDS_PAGE_SIZE, MEMORY_ALLOCATION_FAILED, MEMORY_MAPPING_FAILED, MEMORY_NOT_AVAILABLE, MEMORY_DESTRUCTION_FAILED, MEMORY_DEALLOCATION_FAILED, MEMORY_UNMAPPING_FAILED, SIGACTION_CALL_FAILED} |
enum | RouDiMemoryManagerError { MEMORY_PROVIDER_EXHAUSTED, NO_MEMORY_PROVIDER_PRESENT, MEMORY_CREATION_FAILED, MEMORY_DESTRUCTION_FAILED} |
enum uint8_t | PortPoolError { UNIQUE_PUBLISHER_PORT_ALREADY_EXISTS, INTERNAL_SERVICE_DESCRIPTION_IS_FORBIDDEN, PUBLISHER_PORT_LIST_FULL, SUBSCRIBER_PORT_LIST_FULL, INTERFACE_PORT_LIST_FULL, CLIENT_PORT_LIST_FULL, UNIQUE_SERVER_PORT_ALREADY_EXISTS, SERVER_PORT_LIST_FULL, NODE_DATA_LIST_FULL, CONDITION_VARIABLE_LIST_FULL, EVENT_VARIABLE_LIST_FULL} |
enum | RouDiConfigFileParseError { 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 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) |
iox::log::LogStream & | operator<<(iox::log::LogStream & logstream, const RouDiMemoryManagerError & error) |
Attributes🔗
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 |
---|---|---|
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 | |
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 |
---|---|---|
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 |
---|---|---|
UNIQUE_PUBLISHER_PORT_ALREADY_EXISTS | ||
INTERNAL_SERVICE_DESCRIPTION_IS_FORBIDDEN | ||
PUBLISHER_PORT_LIST_FULL | ||
SUBSCRIBER_PORT_LIST_FULL | ||
INTERFACE_PORT_LIST_FULL | ||
CLIENT_PORT_LIST_FULL | ||
UNIQUE_SERVER_PORT_ALREADY_EXISTS | ||
SERVER_PORT_LIST_FULL | ||
NODE_DATA_LIST_FULL | ||
CONDITION_VARIABLE_LIST_FULL | ||
EVENT_VARIABLE_LIST_FULL |
enum RouDiConfigFileParseError🔗
Enumerator | Value | Description |
---|---|---|
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 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 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 memory segment for the iceoryx management data
variable DEFAULT_UNIQUE_ROUDI_ID🔗
constexpr uint16_t DEFAULT_UNIQUE_ROUDI_ID {0U};
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 = {"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 18 December 2023 at 13:11:43 CET