// // Created by Kirill Zhukov on 20.04.2025. // #ifndef SHAREDMEMORYMANAGER_H #define SHAREDMEMORYMANAGER_H #include #include #include // O_CREAT, O_RDWR #include // ftruncate, close #include // mmap, munmap, shm_open, shm_unlink #include #include namespace usub::core { class SharedMemoryManager { public: SharedMemoryManager(const std::string& name, size_t size, bool create_new = true); ~SharedMemoryManager(); [[nodiscard]] void* base_ptr() const noexcept; [[nodiscard]] size_t size() const noexcept; [[nodiscard]] const std::string& name() const noexcept; void destroy(); private: void create(); void open(); private: std::string shm_name; size_t shm_size; int shm_fd; void* shm_ptr; }; } // namespace usub::utils #endif //SHAREDMEMORYMANAGER_H