]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Constify response stats and histogram methods
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 15 Apr 2021 09:34:10 +0000 (11:34 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 15 Apr 2021 09:34:10 +0000 (11:34 +0200)
pdns/histogram.hh
pdns/responsestats.cc
pdns/responsestats.hh

index d41d6a9adec60c35b78c7e06ad9f869c21579b82..ef14f9f8fd06f32b74d1af8106231a1b1ab87a43 100644 (file)
@@ -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<uint64_t> d_count{0};
+  const std::string d_name;
+  const uint64_t d_boundary{0};
+  mutable std::atomic<uint64_t> d_count{0};
 };
 
 template <class B>
@@ -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
index bd5e34ca91b744880ce00a163479daf7253d098d..824ee60d661ecf644474246409b2c1aa4716e2fc 100644 (file)
@@ -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<uint16_t, uint64_t> ResponseStats::getQTypeResponseCounts()
+map<uint16_t, uint64_t> ResponseStats::getQTypeResponseCounts() const
 {
   map<uint16_t, uint64_t> 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<uint16_t, uint64_t> ResponseStats::getQTypeResponseCounts()
   return ret;
 }
 
-map<uint16_t, uint64_t> ResponseStats::getSizeResponseCounts()
+map<uint16_t, uint64_t> ResponseStats::getSizeResponseCounts() const
 {
   map<uint16_t, uint64_t> ret;
   for (const auto& sizecounter : d_sizecounters.getRawData()) {
@@ -73,12 +73,12 @@ map<uint16_t, uint64_t> ResponseStats::getSizeResponseCounts()
   return ret;
 }
 
-map<uint8_t, uint64_t> ResponseStats::getRCodeResponseCounts()
+map<uint8_t, uint64_t> ResponseStats::getRCodeResponseCounts() const
 {
   map<uint8_t, uint64_t> 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<uint8_t, uint64_t> ResponseStats::getRCodeResponseCounts()
   return ret;
 }
 
-string ResponseStats::getQTypeReport()
+string ResponseStats::getQTypeReport() const
 {
   auto qtypenums = getQTypeResponseCounts();
   ostringstream os;
index 259a545c94a3cb041bf5a7200e93cad8bebf2511..e9ace3528480953d6ef5cfbfcb67a1490b5dcd25 100644 (file)
@@ -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<uint16_t, uint64_t> getQTypeResponseCounts();
-  map<uint16_t, uint64_t> getSizeResponseCounts();
-  map<uint8_t, uint64_t> getRCodeResponseCounts();
-  string getQTypeReport();
+  map<uint16_t, uint64_t> getQTypeResponseCounts() const;
+  map<uint16_t, uint64_t> getSizeResponseCounts() const;
+  map<uint8_t, uint64_t> getRCodeResponseCounts() const;
+  string getQTypeReport() const;
 
 private:
   std::array<std::atomic<uint64_t>, 65535> d_qtypecounters;