36 lines
937 B
C++
36 lines
937 B
C++
#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; |