iceoryx_posh 2.0.3
Classes | Typedefs | Enumerations | Functions | Variables
iox::roudi Namespace Reference

Classes

struct  DefaultRouDiMemory
 
class  GenericMemoryBlock
 The GenericMemoryBlock is an implementation of a MemoryBlock for a common use case. More...
 
class  IceOryxRouDiApp
 
struct  IceOryxRouDiComponents
 
class  IceOryxRouDiMemoryManager
 
class  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. More...
 
class  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. More...
 
struct  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. More...
 
struct  MemPoolIntrospectionInfo
 the topic for the mempool introspection that a user can subscribe to More...
 
struct  PortData
 container for common port data which is related to the subscriber port as well as the publisher port More...
 
struct  PortIntrospectionFieldTopic
 the topic for the port introspection that a user can subscribe to More...
 
class  PortPool
 
struct  PortThroughputData
 
struct  PortThroughputIntrospectionFieldTopic
 the topic for the port throughput that a user can subscribe to More...
 
class  PosixShmMemoryProvider
 Creates the shared memory based on a provided configuration. More...
 
struct  ProcessIntrospectionData
 
struct  ProcessIntrospectionFieldTopic
 the topic for the process introspection that a user can subscribe to More...
 
struct  PublisherPortData
 container for publisher port introspection data. More...
 
class  RouDiApp
 base class for RouDi daemons More...
 
class  RouDiConfigFileProvider
 Base class for a config file provider. More...
 
class  RouDiMemoryInterface
 
class  RouDiMemoryManager
 
struct  SubscriberPortChangingData
 
struct  SubscriberPortChangingIntrospectionFieldTopic
 

Typedefs

using ConfigFilePathString_t = cxx::string< 1024 >
 
using MemPoolInfoContainer = cxx::vector< MemPoolInfo, MAX_NUMBER_OF_MEMPOOLS >
 container for MemPoolInfo structs of all available mempools.
 
using MemPoolIntrospectionInfoContainer = cxx::vector< MemPoolIntrospectionInfo, MAX_SHM_SEGMENTS+1 >
 container for MemPoolInfo structs of all available mempools.
 
using SubscriberPortData = PortData
 

Enumerations

enum class  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 class  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 class  RouDiMemoryManagerError { MEMORY_PROVIDER_EXHAUSTED , NO_MEMORY_PROVIDER_PRESENT , MEMORY_CREATION_FAILED , MEMORY_DESTRUCTION_FAILED }
 
enum class  PortPoolError : uint8_t {
  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 class  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.
 

Functions

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

Variables

constexpr const char ROUDI_LOCK_NAME [] = "iox-unique-roudi"
 
constexpr const char IPC_CHANNEL_ROUDI_NAME [] = "roudi"
 
constexpr const char SHM_NAME [] = "iceoryx_mgmt"
 shared memory segment for the iceoryx management data
 
constexpr uint16_t DEFAULT_UNIQUE_ROUDI_ID {0U}
 
constexpr units::Duration PROCESS_DEFAULT_KILL_DELAY = 45_s
 
constexpr units::Duration PROCESS_TERMINATED_CHECK_INTERVAL = 250_ms
 
constexpr units::Duration DISCOVERY_INTERVAL = 100_ms
 
constexpr const char INTROSPECTION_SERVICE_ID [] = "Introspection"
 
constexpr const char INTROSPECTION_APP_NAME [] = "introspection"
 
constexpr const char INTROSPECTION_NODE_NAME [] = "introspection"
 
const capro::ServiceDescription IntrospectionMempoolService (INTROSPECTION_SERVICE_ID, "RouDi_ID", "MemPool")
 
constexpr int MAX_GROUP_NAME_LENGTH = 32
 
const capro::ServiceDescription IntrospectionPortService (INTROSPECTION_SERVICE_ID, "RouDi_ID", "Port")
 publisher/subscriber port information consisting of a process name,a capro service description string and a node name
 
const capro::ServiceDescription IntrospectionPortThroughputService (INTROSPECTION_SERVICE_ID, "RouDi_ID", "PortThroughput")
 
const capro::ServiceDescription IntrospectionSubscriberPortChangingDataService (INTROSPECTION_SERVICE_ID, "RouDi_ID", "SubscriberPortsData")
 
const capro::ServiceDescription IntrospectionProcessService (INTROSPECTION_SERVICE_ID, "RouDi_ID", "Process")
 
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

Enumeration Type Documentation

◆ MemoryProviderError

Enumerator
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.

◆ RouDiMemoryManagerError

Enumerator
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

Variable Documentation

◆ ROUDI_CONFIG_FILE_PARSE_ERROR_STRINGS

constexpr const char* iox::roudi::ROUDI_CONFIG_FILE_PARSE_ERROR_STRINGS[]
constexpr
Initial value:
= {"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"}