osrm-backend/include/engine/datafacade/shared_memory_allocator.hpp

43 lines
1.1 KiB
C++
Raw Normal View History

#ifndef OSRM_ENGINE_DATAFACADE_SHARED_MEMORY_ALLOCATOR_HPP_
#define OSRM_ENGINE_DATAFACADE_SHARED_MEMORY_ALLOCATOR_HPP_
#include "engine/datafacade/contiguous_block_allocator.hpp"
2018-04-04 19:05:34 -04:00
#include "storage/shared_data_index.hpp"
#include "storage/shared_memory.hpp"
#include <memory>
namespace osrm
{
namespace engine
{
namespace datafacade
{
/**
2018-02-05 06:40:18 -05:00
* This allocator uses an IPC shared memory block as the data location.
* Many SharedMemoryDataFacade objects can be created that point to the same shared
* memory block.
*/
class SharedMemoryAllocator : public ContiguousBlockAllocator
{
public:
2018-04-05 20:50:12 -04:00
explicit SharedMemoryAllocator(
const std::vector<storage::SharedRegionRegister::ShmKey> &shm_keys);
~SharedMemoryAllocator() override final;
// interface to give access to the datafacades
2018-04-04 19:05:34 -04:00
const storage::SharedDataIndex &GetIndex() override final;
private:
2018-04-04 19:05:34 -04:00
storage::SharedDataIndex index;
std::vector<std::unique_ptr<storage::SharedMemory>> memory_regions;
};
} // namespace datafacade
} // namespace engine
} // namespace osrm
#endif // OSRM_ENGINE_DATAFACADE_SHARED_MEMORY_ALLOCATOR_HPP_