eis/TestProject/SHM/segment.hpp

36 lines
937 B
C++
Raw Permalink Normal View History

#pragma once
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/managed_mapped_file.hpp>
#include <boost/interprocess/managed_shared_memory.hpp>
#include <functional>
#include <string>
#include <utility>
typedef boost::interprocess::managed_mapped_file mapped_file_t;
typedef boost::interprocess::managed_shared_memory shared_memory_t;
template <typename segment>
class Segment {
public:
typedef segment segment_t;
typedef typename segment_t::segment_manager segment_manager_t;
public:
Segment(const char* name, size_t size)
: m_name(name),
m_size(size),
m_segment(boost::interprocess::open_or_create, m_name.c_str(), m_size) {
}
segment_t& operator()() { return m_segment; }
/*
...
*/
private:
std::string m_name;
size_t m_size;
segment_t m_segment;
};
typedef Segment<mapped_file_t> MapedFile;
typedef Segment<shared_memory_t> SharedMemory;