@startuml title Eclipse iceoryx Component Overview skinparam BackgroundColor transparent skinparam componentStyle uml2 skinparam component { backgroundColor<> yellow } skinparam package { backgroundColor green } skinparam frame { backgroundColor chocolate } ' PlantUML package: CMake package ' PlantUML frame: CMake library ' @todo #539 ' RouDi split, separate files and namespaces for static/dynamic discovery ' Implement exported libraries (add_library in iceoryx_posh/CMakeLists.txt) ' RouDiEnvironment shall not be in roudi namespace, but in testing header Eclipse iceoryx component overview ' HOOFS: Helpful Objects Optimised For Safety ' Library containing modern C++ STL constructs package iceoryx_hoofs { frame "hoofs library" { component concurrent <> component cxx <> { component newtype <> component set <> component algorithm <> } component DesignPattern <> component errors <> component log <> { component ffbb <> } component units <> { component duration_literals <> } component posix <> ' Building blocks which only meet quality level 5 ' Can be analysed with tools/analyse_blacklisted_namespaces_in_binary.sh ' component aux <> } } ' POSH: POSIX SHared memory ' Publish/subscribe IPC communication infrastructure based on shared memory package iceoryx_posh { frame "core library" { component popo <> component capro <> component mepoo <> component version <> component build <> } frame "runtime library" { component runtime <> } frame "gateway library" { component gw <> } frame "config library" { component config <> } component errors <> frame "RouDi library" { component roudi <> } } ' DDS: Data Distribution Service ' package iceoryx_dds { component dds <> component gw <> as gateway_dds } ' C-Binding package iceoryx_binding_c { component cpp2c <> component c2cpp <> } ' Introspection package iceoryx_introspection { component client <> { component introspection <> } } iceoryx_posh ..> iceoryx_hoofs : use iceoryx_dds ..> iceoryx_posh : use iceoryx_binding_c ..> iceoryx_posh : use introspection ..> iceoryx_posh : use @enduml