LibQuicR
Loading...
Searching...
No Matches
quicr::Cache< K, T > Class Template Reference

#include <cache.h>

Public Member Functions

 Cache (size_t duration, size_t interval, std::shared_ptr< TickService > tick_service)
 Cache ()=delete
 Cache (const Cache &)=default
 Cache (Cache &&) noexcept=default
Cacheoperator= (const Cache &)=default
Cacheoperator= (Cache &&) noexcept=default
size_t Size () const noexcept
bool Empty () const noexcept
void Insert (const K &key, const T &value, size_t ttl)
void Insert (const K &key, T &&value, size_t ttl)
bool Contains (const K &key) noexcept
bool Contains (const K &start_key, const K &end_key)
ValueType Get (const K &key) noexcept
std::vector< ValueType > Get (const K &start_key, const K &end_key)
ValueType First () noexcept
ValueType Last () noexcept
void Clear () noexcept

Protected Member Functions

void Advance ()
template<typename Value>
void InternalInsert (const K &key, Value value, size_t ttl)

Protected Attributes

const size_t duration_
 The duration in ticks of the entire queue.
const size_t interval_
 The interval at which buckets are cleared in ticks.
const size_t total_buckets_
 The total amount of buckets. Value is calculated by duration / interval.
IndexType bucket_index_ { 0 }
 The index in time of the current bucket.
TickType current_ticks_ { 0 }
 Last calculated tick value.
std::vector< BucketType > buckets_
 The memory storage for all keys to be managed.
CacheType cache_
 The cache of elements being stored.
std::shared_ptr< TickService > tick_service_
 Tick service for calculating new tick and jumps in time.

Constructor & Destructor Documentation

◆ Cache() [1/4]

template<typename K, typename T>
quicr::Cache< K, T >::Cache ( size_t duration,
size_t interval,
std::shared_ptr< TickService > tick_service )
inline

◆ Cache() [2/4]

template<typename K, typename T>
quicr::Cache< K, T >::Cache ( )
delete

◆ Cache() [3/4]

template<typename K, typename T>
quicr::Cache< K, T >::Cache ( const Cache< K, T > & )
default

◆ Cache() [4/4]

template<typename K, typename T>
quicr::Cache< K, T >::Cache ( Cache< K, T > && )
defaultnoexcept

Member Function Documentation

◆ Advance()

template<typename K, typename T>
void quicr::Cache< K, T >::Advance ( )
inlineprotected

◆ Clear()

template<typename K, typename T>
void quicr::Cache< K, T >::Clear ( )
inlinenoexcept

◆ Contains() [1/2]

template<typename K, typename T>
bool quicr::Cache< K, T >::Contains ( const K & key)
inlinenoexcept

◆ Contains() [2/2]

template<typename K, typename T>
bool quicr::Cache< K, T >::Contains ( const K & start_key,
const K & end_key )
inline

◆ Empty()

template<typename K, typename T>
bool quicr::Cache< K, T >::Empty ( ) const
inlinenoexcept

◆ First()

template<typename K, typename T>
ValueType quicr::Cache< K, T >::First ( )
inlinenoexcept

◆ Get() [1/2]

template<typename K, typename T>
ValueType quicr::Cache< K, T >::Get ( const K & key)
inlinenoexcept

◆ Get() [2/2]

template<typename K, typename T>
std::vector< ValueType > quicr::Cache< K, T >::Get ( const K & start_key,
const K & end_key )
inline

◆ Insert() [1/2]

template<typename K, typename T>
void quicr::Cache< K, T >::Insert ( const K & key,
const T & value,
size_t ttl )
inline

◆ Insert() [2/2]

template<typename K, typename T>
void quicr::Cache< K, T >::Insert ( const K & key,
T && value,
size_t ttl )
inline

◆ InternalInsert()

template<typename K, typename T>
template<typename Value>
void quicr::Cache< K, T >::InternalInsert ( const K & key,
Value value,
size_t ttl )
inlineprotected

◆ Last()

template<typename K, typename T>
ValueType quicr::Cache< K, T >::Last ( )
inlinenoexcept

◆ operator=() [1/2]

template<typename K, typename T>
Cache & quicr::Cache< K, T >::operator= ( Cache< K, T > && )
defaultnoexcept

◆ operator=() [2/2]

template<typename K, typename T>
Cache & quicr::Cache< K, T >::operator= ( const Cache< K, T > & )
default

◆ Size()

template<typename K, typename T>
size_t quicr::Cache< K, T >::Size ( ) const
inlinenoexcept

Member Data Documentation

◆ bucket_index_

template<typename K, typename T>
IndexType quicr::Cache< K, T >::bucket_index_ { 0 }
protected

The index in time of the current bucket.

◆ buckets_

template<typename K, typename T>
std::vector<BucketType> quicr::Cache< K, T >::buckets_
protected

The memory storage for all keys to be managed.

◆ cache_

template<typename K, typename T>
CacheType quicr::Cache< K, T >::cache_
protected

The cache of elements being stored.

◆ current_ticks_

template<typename K, typename T>
TickType quicr::Cache< K, T >::current_ticks_ { 0 }
protected

Last calculated tick value.

◆ duration_

template<typename K, typename T>
const size_t quicr::Cache< K, T >::duration_
protected

The duration in ticks of the entire queue.

◆ interval_

template<typename K, typename T>
const size_t quicr::Cache< K, T >::interval_
protected

The interval at which buckets are cleared in ticks.

◆ tick_service_

template<typename K, typename T>
std::shared_ptr<TickService> quicr::Cache< K, T >::tick_service_
protected

Tick service for calculating new tick and jumps in time.

◆ total_buckets_

template<typename K, typename T>
const size_t quicr::Cache< K, T >::total_buckets_
protected

The total amount of buckets. Value is calculated by duration / interval.


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