24 #include <unordered_map> 27 #include <boost/container/flat_map.hpp> 28 #include <boost/intrusive/list.hpp> 29 #include <boost/operators.hpp> 30 #include <glog/logging.h> 37 namespace symbolizer {
72 class Path :
private boost::totally_ordered<Path> {
83 DCHECK_LE(s.
size(), kMaxSize);
102 static constexpr
size_t kMaxSize = PATH_MAX - 1;
109 boost::container::flat_map<Path, int>
map_;
110 std::vector<std::shared_ptr<ElfFile>>
slots_;
127 typedef boost::intrusive::list_member_hook<>
LruLink;
135 static std::shared_ptr<ElfFile> filePtr(
const std::shared_ptr<Entry>& e);
138 std::unordered_map<StringPiece, std::shared_ptr<Entry>,
Hash>
files_;
142 boost::intrusive::member_hook<Entry, LruLink, &Entry::lruLink>,
143 boost::intrusive::constant_time_size<false>>
void assign(StringPiece s)
virtual std::shared_ptr< ElfFile > getFile(StringPiece path)=0
boost::intrusive::list_member_hook LruLink
constexpr size_type size() const
std::unordered_map< StringPiece, std::shared_ptr< Entry >, Hash > files_
—— Concurrent Priority Queue Implementation ——
constexpr bool empty() const
boost::container::flat_map< Path, int > map_
bool operator==(const Path &other) const
constexpr Iter data() const
size_t countLoadedElfFiles()
Encoder::MutableCompressedList list
const char * data() const
boost::intrusive::list< Entry, boost::intrusive::member_hook< Entry, LruLink,&Entry::lruLink >, boost::intrusive::constant_time_size< false > > LruList
std::vector< std::shared_ptr< ElfFile > > slots_
bool operator<(const Path &other) const