}
string DLShowHandler(const vector<string>&parts, Utility::pid_t ppid) {
- std::set<string> blacklist;
- blacklist.insert("special-memory-usage");
try {
extern StatBag S;
string ret("Wrong number of parameters");
if (parts.size() == 2) {
if (parts[1] == "*")
- ret = S.directory(blacklist);
+ ret = S.directory();
else
ret = S.getValueStr(parts[1]);
}
}
declareStats();
+ S.blacklist("special-memory-usage");
+
DLOG(g_log<<Logger::Warning<<"Verbose logging in effect"<<endl);
showProductVersion();
}
}
-string StatBag::directory(const std::set<string>& skip)
+string StatBag::directory()
{
string dir;
ostringstream o;
for(const auto& i: d_stats) {
- if (skip.find(i.first) != skip.end())
+ if (d_blacklist.find(i.first) != d_blacklist.end())
continue;
o<<i.first<<"="<<*(i.second)<<",";
}
for(const funcstats_t::value_type& val : d_funcstats) {
- if (skip.find(val.first) != skip.end())
+ if (d_blacklist.find(val.first) != d_blacklist.end())
continue;
o << val.first<<"="<<val.second(val.first)<<",";
}
vector<string> ret;
for(const auto& i: d_stats) {
- ret.push_back(i.first);
+ if (d_blacklist.find(i.first) != d_blacklist.end())
+ continue;
+ ret.push_back(i.first);
}
for(const funcstats_t::value_type& val : d_funcstats) {
+ if (d_blacklist.find(val.first) != d_blacklist.end())
+ continue;
ret.push_back(val.first);
}
return d_rings.count(name) || d_comborings.count(name) || d_dnsnameqtyperings.count(name);
}
+void StatBag::blacklist(const string& str) {
+ d_blacklist.insert(str);
+}
+
template class StatRing<std::string, CIStringCompare>;
template class StatRing<SComboAddress>;
template class StatRing<std::tuple<DNSName, QType> >;
typedef map<string, func_t> funcstats_t;
funcstats_t d_funcstats;
bool d_doRings;
+ std::set<string> d_blacklist;
public:
StatBag(); //!< Naked constructor. You need to declare keys before this class becomes useful
void resizeRing(const string &name, unsigned int newsize);
unsigned int getRingSize(const string &name);
- string directory(const std::set<string>& skip); //!< Returns a list of all data stored
+ string directory(); //!< Returns a list of all data stored
vector<string> getEntries(); //!< returns a vector with datums (items)
string getDescrip(const string &item); //!< Returns the description of this datum/item
void exists(const string &key); //!< call this function to throw an exception in case a key does not exist
AtomicCounter *getPointer(const string &key); //!< get a direct pointer to the value behind a key. Use this for high performance increments
string getValueStr(const string &key); //!< read a value behind a key, and return it as a string
string getValueStrZero(const string &key); //!< read a value behind a key, and return it as a string, and zero afterwards
+ void blacklist(const string &str);
};
inline void StatBag::deposit(const string &key, int value)