This article provides an overview of the Eclipse iceoryx architecture and explains the rationale for it.
The main packages which Eclipse iceoryx is composed of are depicted below.
The next sections briefly describe the components and their libraries one by one.
Components and libraries🔗
The different libraries and their namespaces are depicted below.
Handy Objects Optimized For Safety (hoofs) is a library and contains various building blocks like fixed size containers, concurrency classes and modern, next-gen C++ constructs from upcoming C++ standard releases.
For more information about the components, refer to its detailed description.
iceoryx_posh (POSIX SHared memory) contains everything related to shared memory inter-process communication.
This section describes the namespaces of the core library.
popo: The namespace posh ports contains the user-API classes which are used to transfer data.
capro: The namespace canonical protocol implements the canonical protocol pattern protocol, which is used by
iceoryx_poshto connect and discover
mepoo: The namespace memory pool contains all memory-related classes. For example the
version: The namespace version contains ABI compatibilities checks.
build: The namespace build contains certain maximium values which can be changed before compilation.
- The gateway library and its namespace
gwcontain generic abstractions to create a gateway. They are used by
- The library RouDi and its namespace
roudicontains classes which are used by the RouDi middleware daemon.
iceoryx C binding🔗
iceoryx_binding_c makes the inter-process communication features of
iceoryx_posh available in C.
iceoryx_dds provides a bi-directional DDS gateway using Eclipse Cyclone DDS.
The gateway can be used to send data over a network e.g. via Ethernet.
For more information, refer to the Readme.
The introspection client can be used for live debugging and provides information of the current system like memory usage and established connections.
For more information, refer to the icecrystal example.