#pragma once #ifdef WIN32 #include #include #endif #include namespace System { class SharedMemory { private: #ifdef WIN32 ::HANDLE shm_desc; #elif POSIX int shm_desc; #else #error "Undefine platform" #endif std::string shm_name; public: SharedMemory() noexcept; ~SharedMemory() noexcept; bool create(const std::string &memName, const size_t memSize); bool open(const std::string &memName); bool is_open() const noexcept; bool write(const void *data, const size_t size, const size_t offset = 0) const noexcept; bool read(void *dest, const size_t size, const size_t offset = 0) const noexcept; bool close() noexcept; bool destroy(); static bool destroy(const std::string &memName); }; };