pstore2
Public Types | Public Member Functions | List of all members
pstore::region::region_builder< File, MemoryMapper > Struct Template Reference

A class which is responsible for creating the memory-mapped regions used by the data store. More...

#include <region.hpp>

Public Types

using container_type = std::vector< pstore::region::memory_mapper_ptr >
 

Public Member Functions

 region_builder (std::shared_ptr< File > file, std::uint64_t full_size, std::uint64_t minimum_size) noexcept
 
 region_builder (region_builder const &)=delete
 
 region_builder (region_builder &&) noexcept=delete
 
region_builderoperator= (region_builder const &)=delete
 
region_builderoperator= (region_builder &&)=delete
 
auto operator() (std::uint64_t bytes_to_map) -> container_type
 
void append (gsl::not_null< container_type *> regions, std::uint64_t offset, std::uint64_t bytes_to_map)
 Creates one of more additional memory-mapped regions covering the file starting at the position given by 'offset' and extending for 'bytes_to_map' bytes. More...
 

Detailed Description

template<typename File, typename MemoryMapper>
struct pstore::region::region_builder< File, MemoryMapper >

A class which is responsible for creating the memory-mapped regions used by the data store.

It is intended to decouple the creation of these object from the File and MemoryMapper classes.

It tries to create regions which are as large as possible (in multiple of the "minimum" size, but no larger than "full" size to avoid requesting too much contiguous address space.

Constructor & Destructor Documentation

◆ region_builder()

template<typename File , typename MemoryMapper >
pstore::region::region_builder< File, MemoryMapper >::region_builder ( std::shared_ptr< File >  file,
std::uint64_t  full_size,
std::uint64_t  minimum_size 
)
noexcept
Parameters
fileThe file containing the data to be memory-mapped.
full_sizeThe number of bytes in a "full size" memory-mapped region.
minimum_sizeThe number of bytes in a "minimum size" memory-mapped region.

Member Function Documentation

◆ append()

template<typename File , typename MemoryMapper >
void pstore::region::region_builder< File, MemoryMapper >::append ( gsl::not_null< container_type *>  regions,
std::uint64_t  offset,
std::uint64_t  bytes_to_map 
)

Creates one of more additional memory-mapped regions covering the file starting at the position given by 'offset' and extending for 'bytes_to_map' bytes.

Parameters
regionsAn existing collection of memory-mapped regions that will be extended to contain the regions create to map the given file range.
offsetThe first byte of the file to be mapped by additional memory-mapped regions.
bytes_to_mapThe number of bytes in the file to be mapped by additional memory-mapped regions.

◆ operator()()

template<typename File , typename MemoryMapper >
auto pstore::region::region_builder< File, MemoryMapper >::operator() ( std::uint64_t  bytes_to_map) -> container_type
Parameters
bytes_to_mapThe number of bytes to be mapped.
Returns
A collection of memory-mapped regions.

The documentation for this struct was generated from the following file: