Template Struct AbstractBlockManager

Inheritance Relationships

Base Types

Derived Types

Struct Documentation

template<typename T>
struct AbstractBlockManager : public CE::Memory::BlockManagement<T>, public CE::Memory::BlockManagerInterface<T>

Implements block lookup, merging, and culling over CE::Memory::BlockManagement<T>’s shared sets.

Derived managers decide how blocks are acquired and returned.

Subclassed by CE::Memory::Objects::Pool< T >, CE::Memory::Objects::PoolState< T >

Public Types

using clock = typename ::CE::Memory::BlockManagement<T>::clock
using tpoint = typename ::CE::Memory::BlockManagement<T>::tpoint

Public Functions

AbstractBlockManager() = default
~AbstractBlockManager() override = default
inline virtual void cull(std::chrono::minutes age) override
inline virtual void release_culled() override

Protected Functions

template<typename Tuple>
inline ::CE::Memory::OptionalBlock<T> search_right(::CE::Memory::Block<T> block, Tuple &tuple)
template<typename Tuple>
inline ::CE::Memory::OptionalBlock<T> search_left(::CE::Memory::Block<T> block, Tuple &tuple)
template<typename Tuple>
inline ::CE::Memory::OptionalBlock<T> contiguous_right(::CE::Memory::Block<T> block, Tuple &tuple)
template<typename Tuple>
inline ::CE::Memory::OptionalBlock<T> contiguous_left(::CE::Memory::Block<T> block, Tuple &tuple)
template<typename Tuple>
inline ::CE::Memory::OptionalBlock<T> adjacent_right(::CE::Memory::Block<T> block, Tuple &tuple)
template<typename Tuple>
inline ::CE::Memory::OptionalBlock<T> adjacent_left(::CE::Memory::Block<T> block, Tuple &tuple)
inline virtual void record_new(::CE::Memory::Block<T> block) override
inline virtual void mark_stale(::CE::Memory::Block<T> block) override
inline virtual ::CE::Memory::OptionalBlock<T> merge_into_pool(::CE::Memory::Block<T> block) override
inline virtual ::CE::Memory::OptionalBlock<T> find_section(T *ptr) override
inline virtual ::CE::Memory::OptionalBlock<T> find_owner(T *ptr) override
inline virtual ::CE::Memory::OptionalBlock<T> fill_request(std::size_t N, std::align_val_t minimum_alignment = std::align_val_t{0}) override

Protected Static Functions

template<typename Tuple>
static inline std::shared_mutex &get_mutex(Tuple &tuple)
template<typename ...Tuples>
static inline void read_lock(Tuples&... tuples)
template<typename ...Tuples>
static inline void read_unlock(Tuples&... tuples)
template<typename ...Tuples>
static inline void emplace(::CE::Memory::Block<T> b, Tuples&... tuples)
template<typename ...Tuples>
static inline void erase(::CE::Memory::Block<T> b, Tuples&... tuples)
template<typename ...Tuples>
static inline bool contains(::CE::Memory::Block<T> b, Tuples&... tuples)