Revert "Cache transaction validation successes"
This reverts commit 17b11428c1.
This commit is contained in:
60
src/mruset.h
60
src/mruset.h
@@ -9,10 +9,6 @@
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
|
||||
#include <boost/multi_index_container.hpp>
|
||||
#include <boost/multi_index/ordered_index.hpp>
|
||||
#include <boost/multi_index/sequenced_index.hpp>
|
||||
|
||||
/** STL-like set container that only keeps the most recent N elements. */
|
||||
template <typename T>
|
||||
class mruset
|
||||
@@ -66,60 +62,4 @@ public:
|
||||
size_type max_size() const { return nMaxSize; }
|
||||
};
|
||||
|
||||
/** STL-like map container that only keeps the most recent N elements. */
|
||||
template <typename K, typename V>
|
||||
class mrumap
|
||||
{
|
||||
private:
|
||||
struct key_extractor {
|
||||
typedef K result_type;
|
||||
const result_type& operator()(const std::pair<K, V>& e) const { return e.first; }
|
||||
result_type& operator()(std::pair<K, V>* e) const { return e->first; }
|
||||
};
|
||||
|
||||
typedef boost::multi_index_container<
|
||||
std::pair<K, V>,
|
||||
boost::multi_index::indexed_by<
|
||||
boost::multi_index::sequenced<>,
|
||||
boost::multi_index::ordered_unique<key_extractor>
|
||||
>
|
||||
> map_type;
|
||||
|
||||
public:
|
||||
typedef K key_type;
|
||||
typedef std::pair<K, V> value_type;
|
||||
typedef typename map_type::iterator iterator;
|
||||
typedef typename map_type::const_iterator const_iterator;
|
||||
typedef typename map_type::size_type size_type;
|
||||
|
||||
protected:
|
||||
map_type m_;
|
||||
size_type max_size_;
|
||||
|
||||
public:
|
||||
mrumap(size_type max_size_in = 1) { clear(max_size_in); }
|
||||
iterator begin() { return m_.begin(); }
|
||||
iterator end() { return m_.end(); }
|
||||
const_iterator begin() const { return m_.begin(); }
|
||||
const_iterator end() const { return m_.end(); }
|
||||
size_type size() const { return m_.size(); }
|
||||
bool empty() const { return m_.empty(); }
|
||||
iterator find(const key_type& key) { return m_.template project<0>(boost::get<1>(m_).find(key)); }
|
||||
const_iterator find(const key_type& key) const { return m_.template project<0>(boost::get<1>(m_).find(key)); }
|
||||
size_type count(const key_type& key) const { return boost::get<1>(m_).count(key); }
|
||||
void clear(size_type max_size_in) { m_.clear(); max_size_ = max_size_in; }
|
||||
std::pair<iterator, bool> insert(const K& key, const V& value)
|
||||
{
|
||||
std::pair<K, V> elem(key, value);
|
||||
std::pair<iterator, bool> p = m_.push_front(elem);
|
||||
if (p.second && m_.size() > max_size_) {
|
||||
m_.pop_back();
|
||||
}
|
||||
return p;
|
||||
}
|
||||
void erase(iterator it) { m_.erase(it); }
|
||||
void erase(const key_type& k) { boost::get<1>(m_).erase(k); }
|
||||
size_type max_size() const { return max_size_; }
|
||||
};
|
||||
|
||||
#endif // BITCOIN_MRUSET_H
|
||||
|
||||
Reference in New Issue
Block a user