Vanetza
Loading...
Searching...
No Matches
vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR > Class Template Reference

#include <soft_state_map.hpp>

Inheritance diagram for vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >:

Classes

class  ExpiryWithKey
struct  ValueWithHandle

Public Types

using key_type = KEY
using mapped_type = VALUE
using value_type = std::pair<const key_type&, mapped_type&>
using creator_type = CTOR
using map_range = boost::transformed_range<data_transform, const boost::filtered_range<data_filter, data_range>>

Public Member Functions

template<typename T = CTOR>
 SoftStateMap (const Runtime &rt, typename std::enable_if< std::is_default_constructible< T >::value >::type *=nullptr)
 SoftStateMap (const Runtime &rt, creator_type &&ctor)
void set_lifetime (Clock::duration lifetime)
mapped_type & get_value (const key_type &key)
mapped_type * get_value_ptr (const key_type &key)
const mapped_type * get_value_ptr (const key_type &key) const
bool has_value (const key_type &key) const
mapped_type & refresh (const key_type &key)
void drop_expired ()
map_range map ()
const map_range map () const

Private Types

using heap_type = boost::heap::binomial_heap<ExpiryWithKey, boost::heap::compare<std::greater<ExpiryWithKey>>>
using map_type = std::unordered_map<key_type, ValueWithHandle>
using data_range = boost::iterator_range<typename map_type::iterator>
using data_filter = std::function<bool(const typename map_type::value_type&)>
using data_transform = std::function<value_type(typename map_type::value_type&)>

Private Member Functions

ValueWithHandleget_data (const key_type &key)
ValueWithHandleget_data_ptr (const key_type &key)
const ValueWithHandleget_data_ptr (const key_type &key) const
bool is_expired (const ExpiryWithKey &expiry) const
void refresh (typename heap_type::handle_type &handle)

Private Attributes

const Runtimem_runtime
Clock::duration m_lifetime
creator_type m_creator
heap_type m_heap
map_type m_map

Detailed Description

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
class vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >

SoftStateMap is a map data structure with expiring entries

Template Parameters
KEYkey type
VALUEmapped type
CTORoptional creator of values

Definition at line 33 of file soft_state_map.hpp.

Member Typedef Documentation

◆ creator_type

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::creator_type = CTOR

Definition at line 39 of file soft_state_map.hpp.

◆ data_filter

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::data_filter = std::function<bool(const typename map_type::value_type&)>
private

Definition at line 69 of file soft_state_map.hpp.

◆ data_range

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::data_range = boost::iterator_range<typename map_type::iterator>
private

Definition at line 68 of file soft_state_map.hpp.

◆ data_transform

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::data_transform = std::function<value_type(typename map_type::value_type&)>
private

Definition at line 70 of file soft_state_map.hpp.

◆ heap_type

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::heap_type = boost::heap::binomial_heap<ExpiryWithKey, boost::heap::compare<std::greater<ExpiryWithKey>>>
private

Definition at line 54 of file soft_state_map.hpp.

◆ key_type

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::key_type = KEY

Definition at line 36 of file soft_state_map.hpp.

◆ map_range

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::map_range = boost::transformed_range<data_transform, const boost::filtered_range<data_filter, data_range>>

Definition at line 174 of file soft_state_map.hpp.

◆ map_type

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::map_type = std::unordered_map<key_type, ValueWithHandle>
private

Definition at line 66 of file soft_state_map.hpp.

◆ mapped_type

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::mapped_type = VALUE

Definition at line 37 of file soft_state_map.hpp.

◆ value_type

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
using vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::value_type = std::pair<const key_type&, mapped_type&>

Definition at line 38 of file soft_state_map.hpp.

Constructor & Destructor Documentation

◆ SoftStateMap() [1/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
template<typename T = CTOR>
vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::SoftStateMap ( const Runtime & rt,
typename std::enable_if< std::is_default_constructible< T >::value >::type * = nullptr )
inline

Construct SoftStateMap

Parameters
rtruntime object
Note
This constructor is only available if CTOR is default constructible

Definition at line 79 of file soft_state_map.hpp.

◆ SoftStateMap() [2/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::SoftStateMap ( const Runtime & rt,
creator_type && ctor )
inline

Construct SoftStateMap

Parameters
rtruntime object
ctorvalue creator

Definition at line 89 of file soft_state_map.hpp.

Member Function Documentation

◆ drop_expired()

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
void vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::drop_expired ( )
inline

Drop all entries with expired lifetime. Expired but still stored entries are only hided at retrieval until calling this method.

Definition at line 166 of file soft_state_map.hpp.

◆ get_data()

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
ValueWithHandle & vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::get_data ( const key_type & key)
inlineprivate

Definition at line 198 of file soft_state_map.hpp.

◆ get_data_ptr() [1/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
ValueWithHandle * vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::get_data_ptr ( const key_type & key)
inlineprivate

Definition at line 213 of file soft_state_map.hpp.

◆ get_data_ptr() [2/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
const ValueWithHandle * vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::get_data_ptr ( const key_type & key) const
inlineprivate

Definition at line 219 of file soft_state_map.hpp.

◆ get_value()

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
mapped_type & vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::get_value ( const key_type & key)
inline

Get value mapped to key

Parameters
key
Returns
existing value entry or just created entry

Definition at line 108 of file soft_state_map.hpp.

◆ get_value_ptr() [1/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
mapped_type * vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::get_value_ptr ( const key_type & key)
inline

Get non-expired value pointer mapped to key

Parameters
key
Returns
pointer to value or nullptr if not existing

Definition at line 118 of file soft_state_map.hpp.

◆ get_value_ptr() [2/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
const mapped_type * vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::get_value_ptr ( const key_type & key) const
inline

Get non-expired value pointer mapped to key

Parameters
key
Returns
pointer to value or nullptr if not existing

Definition at line 129 of file soft_state_map.hpp.

◆ has_value()

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
bool vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::has_value ( const key_type & key) const
inline

Check if non-expired value for given key exists

Parameters
key
Returns
true if entry exists

Definition at line 140 of file soft_state_map.hpp.

◆ is_expired()

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
bool vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::is_expired ( const ExpiryWithKey & expiry) const
inlineprivate

Definition at line 225 of file soft_state_map.hpp.

◆ map() [1/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
map_range vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::map ( )
inline

Create a range of all non-expired entries mimicking STL's map interface

Definition at line 179 of file soft_state_map.hpp.

◆ map() [2/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
const map_range vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::map ( ) const
inline

Definition at line 192 of file soft_state_map.hpp.

◆ refresh() [1/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
mapped_type & vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::refresh ( const key_type & key)
inline

Refresh lifetime of entry associated with given key

Parameters
key
Returns
associated value (might have been created)

Definition at line 150 of file soft_state_map.hpp.

◆ refresh() [2/2]

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
void vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::refresh ( typename heap_type::handle_type & handle)
inlineprivate

Definition at line 230 of file soft_state_map.hpp.

◆ set_lifetime()

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
void vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::set_lifetime ( Clock::duration lifetime)
inline

Set lifetime duration used for new and refreshed entries

Parameters
lifetimeentry lieftime

Definition at line 98 of file soft_state_map.hpp.

Member Data Documentation

◆ m_creator

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
creator_type vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::m_creator
private

Definition at line 239 of file soft_state_map.hpp.

◆ m_heap

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
heap_type vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::m_heap
private

Definition at line 240 of file soft_state_map.hpp.

◆ m_lifetime

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
Clock::duration vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::m_lifetime
private

Definition at line 238 of file soft_state_map.hpp.

◆ m_map

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
map_type vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::m_map
private

Definition at line 241 of file soft_state_map.hpp.

◆ m_runtime

template<typename KEY, typename VALUE, typename CTOR = SoftStateDefaultCreator<VALUE>>
const Runtime& vanetza::geonet::SoftStateMap< KEY, VALUE, CTOR >::m_runtime
private

Definition at line 237 of file soft_state_map.hpp.


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