74 has(
const Name& name, Interest::Nonce nonce)
const;
80 add(
const Name& name, Interest::Nonce nonce);
99 using Entry = uint64_t;
102 makeEntry(
const Name& name, Interest::Nonce nonce);
134 const time::nanoseconds m_lifetime;
138 using Container = boost::multi_index_container<
140 boost::multi_index::indexed_by<
141 boost::multi_index::sequenced<boost::multi_index::tag<Queue>>,
142 boost::multi_index::hashed_non_unique<boost::multi_index::tag<Hashtable>,
143 boost::multi_index::identity<Entry>>
148 Container::index<Queue>::type& m_queue = m_index.get<Queue>();
149 Container::index<Hashtable>::type& m_ht = m_index.get<Hashtable>();
164 static constexpr size_t INITIAL_CAPACITY = 1 << 14;
170 static constexpr size_t MIN_CAPACITY = 1 << 10;
176 static constexpr size_t MAX_CAPACITY = 1 << 24;
186 static constexpr Entry MARK = 0;
189 static constexpr size_t EXPECTED_MARK_COUNT = 5;
196 std::multiset<size_t> m_actualMarkCounts;
198 const time::nanoseconds m_markInterval;
199 ndn::scheduler::ScopedEventId m_markEvent;
203 static constexpr double CAPACITY_UP = 1.2;
204 static constexpr double CAPACITY_DOWN = 0.9;
205 const time::nanoseconds m_adjustCapacityInterval;
206 ndn::scheduler::ScopedEventId m_adjustCapacityEvent;
209 static constexpr size_t EVICT_LIMIT = 64;