From: Remi Gacogne Date: Thu, 15 Apr 2021 09:34:10 +0000 (+0200) Subject: Constify response stats and histogram methods X-Git-Tag: dnsdist-1.6.0~3^2^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dad777b68786849a55590a286a15c3f2729e1a3a;p=thirdparty%2Fpdns.git Constify response stats and histogram methods --- diff --git a/pdns/histogram.hh b/pdns/histogram.hh index d41d6a9ade..ef14f9f8fd 100644 --- a/pdns/histogram.hh +++ b/pdns/histogram.hh @@ -33,9 +33,9 @@ namespace pdns // By convention, we are using microsecond units struct Bucket { - std::string d_name; - uint64_t d_boundary{0}; - uint64_t d_count{0}; + const std::string d_name; + const uint64_t d_boundary{0}; + mutable uint64_t d_count{0}; }; struct AtomicBucket @@ -47,9 +47,9 @@ struct AtomicBucket AtomicBucket(const AtomicBucket& rhs) : d_name(rhs.d_name), d_boundary(rhs.d_boundary), d_count(rhs.d_count.load()) {} - std::string d_name; - uint64_t d_boundary{0}; - std::atomic d_count{0}; + const std::string d_name; + const uint64_t d_boundary{0}; + mutable std::atomic d_count{0}; }; template @@ -120,7 +120,7 @@ public: return b <= bu.d_boundary; } - inline void operator()(uint64_t d) + inline void operator()(uint64_t d) const { auto index = std::upper_bound(d_buckets.begin(), d_buckets.end(), d, lessOrEqual); // our index is always valid diff --git a/pdns/responsestats.cc b/pdns/responsestats.cc index bd5e34ca91..824ee60d66 100644 --- a/pdns/responsestats.cc +++ b/pdns/responsestats.cc @@ -39,22 +39,22 @@ ResponseStats g_rs; void ResponseStats::submitResponse(uint16_t qtype, uint16_t respsize, uint8_t rcode, bool udpOrTCP) { - d_rcodecounters[rcode]++; + d_rcodecounters.at(rcode)++; submitResponse(qtype, respsize, udpOrTCP); } void ResponseStats::submitResponse(uint16_t qtype, uint16_t respsize, bool udpOrTCP) { - d_qtypecounters[qtype]++; + d_qtypecounters.at(qtype)++; d_sizecounters(respsize); } -map ResponseStats::getQTypeResponseCounts() +map ResponseStats::getQTypeResponseCounts() const { map ret; uint64_t count; for (unsigned int i = 0; i < 65535; ++i) { - count = d_qtypecounters[i]; + count = d_qtypecounters.at(i); if (count) { ret[i] = count; } @@ -62,7 +62,7 @@ map ResponseStats::getQTypeResponseCounts() return ret; } -map ResponseStats::getSizeResponseCounts() +map ResponseStats::getSizeResponseCounts() const { map ret; for (const auto& sizecounter : d_sizecounters.getRawData()) { @@ -73,12 +73,12 @@ map ResponseStats::getSizeResponseCounts() return ret; } -map ResponseStats::getRCodeResponseCounts() +map ResponseStats::getRCodeResponseCounts() const { map ret; uint64_t count; for (unsigned int i = 0; i < 256; ++i) { - count = d_rcodecounters[i]; + count = d_rcodecounters.at(i); if (count) { ret[i] = count; } @@ -86,7 +86,7 @@ map ResponseStats::getRCodeResponseCounts() return ret; } -string ResponseStats::getQTypeReport() +string ResponseStats::getQTypeReport() const { auto qtypenums = getQTypeResponseCounts(); ostringstream os; diff --git a/pdns/responsestats.hh b/pdns/responsestats.hh index 259a545c94..e9ace35284 100644 --- a/pdns/responsestats.hh +++ b/pdns/responsestats.hh @@ -34,10 +34,10 @@ public: void submitResponse(DNSPacket& p, bool udpOrTCP, bool last = true); void submitResponse(uint16_t qtype, uint16_t respsize, bool udpOrTCP); void submitResponse(uint16_t qtype, uint16_t respsize, uint8_t rcode, bool udpOrTCP); - map getQTypeResponseCounts(); - map getSizeResponseCounts(); - map getRCodeResponseCounts(); - string getQTypeReport(); + map getQTypeResponseCounts() const; + map getSizeResponseCounts() const; + map getRCodeResponseCounts() const; + string getQTypeReport() const; private: std::array, 65535> d_qtypecounters;