32class IceOryxRouDiMemoryManager :
public RouDiMemoryInterface
35 IceOryxRouDiMemoryManager(
const RouDiConfig_t& roudiConfig)
noexcept;
39 IceOryxRouDiMemoryManager(IceOryxRouDiMemoryManager&&) = delete;
40 IceOryxRouDiMemoryManager& operator=(IceOryxRouDiMemoryManager&&) = delete;
42 IceOryxRouDiMemoryManager(const IceOryxRouDiMemoryManager&) = delete;
43 IceOryxRouDiMemoryManager& operator=(const IceOryxRouDiMemoryManager&) = delete;
55 cxx::optional<
PortPool*> portPool() noexcept override;
56 cxx::optional<mepoo::MemoryManager*> introspectionMemoryManager() const noexcept override;
57 cxx::optional<mepoo::SegmentManager<>*> segmentManager() const noexcept override;
62 posix::FileLock fileLock =
63 std::move(posix::FileLock::create(ROUDI_LOCK_NAME)
64 .or_else([](auto& error) {
65 if (error == posix::FileLockError::LOCKED_BY_OTHER_PROCESS)
67 LogFatal() <<
"Could not acquire lock, is RouDi still running?";
68 errorHandler(Error::kICEORYX_ROUDI_MEMORY_MANAGER__ROUDI_STILL_RUNNING,
70 iox::ErrorLevel::FATAL);
74 LogFatal() <<
"Error occurred while acquiring file lock named " << ROUDI_LOCK_NAME;
75 errorHandler(Error::kICEORYX_ROUDI_MEMORY_MANAGER__COULD_NOT_ACQUIRE_FILE_LOCK,
77 iox::ErrorLevel::FATAL);
82 PortPoolMemoryBlock m_portPoolBlock;
83 cxx::optional<PortPool> m_portPool;