#ifndef OSRM_ENGINE_DATAFACADE_MMAP_MEMORY_ALLOCATOR_HPP_ #define OSRM_ENGINE_DATAFACADE_MMAP_MEMORY_ALLOCATOR_HPP_ #include "engine/datafacade/contiguous_block_allocator.hpp" #include "storage/storage_config.hpp" #include "util/vector_view.hpp" #include #include namespace osrm { namespace engine { namespace datafacade { /** * This allocator uses file backed mmap memory block as the data location. */ class MMapMemoryAllocator : public ContiguousBlockAllocator { public: explicit MMapMemoryAllocator(const storage::StorageConfig &config, const boost::filesystem::path &memory_file); ~MMapMemoryAllocator() override final; // interface to give access to the datafacades const storage::SharedDataIndex &GetIndex() override final; private: storage::SharedDataIndex index; util::vector_view mapped_memory; boost::iostreams::mapped_file mapped_memory_file; }; } // namespace datafacade } // namespace engine } // namespace osrm #endif // OSRM_ENGINE_DATAFACADE_SHARED_MEMORY_ALLOCATOR_HPP_