This is an automated email from the ASF dual-hosted git repository.

cmcfarlen pushed a commit to branch NewAPIMetricsPOC
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/NewAPIMetricsPOC by this push:
     new f872b88d77 fix cmake and const pass
f872b88d77 is described below

commit f872b88d77373c21b297e7952c5785a640a95422
Author: Chris McFarlen <ch...@mcfarlen.us>
AuthorDate: Fri Jul 7 09:59:51 2023 -0500

    fix cmake and const pass
---
 include/api/Metrics.h   | 16 ++++++++--------
 src/api/CMakeLists.txt  |  2 +-
 src/api/Metrics.cc      |  4 ++--
 src/api/test_Metrics.cc |  2 +-
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/include/api/Metrics.h b/include/api/Metrics.h
index 35f573bc8b..e85f30033e 100644
--- a/include/api/Metrics.h
+++ b/include/api/Metrics.h
@@ -45,8 +45,8 @@ private:
 
 public:
   static constexpr uint16_t METRICS_MAX_BLOBS = 8192;
-  static constexpr uint16_t METRICS_MAX_SIZE  = 2048;      // For a total of 
16M metrics
-  static constexpr IdType NOT_FOUND           = INT32_MIN; // <16-bit,16-bit> 
= <blob-index,offset>
+  static constexpr uint16_t METRICS_MAX_SIZE  = 2048;                          
     // For a total of 16M metrics
+  static constexpr IdType NOT_FOUND           = 
std::numeric_limits<IdType>::min(); // <16-bit,16-bit> = <blob-index,offset>
 
 private:
   using NameAndId       = std::tuple<std::string, IdType>;
@@ -79,7 +79,7 @@ public:
   // ID in the containers is very small and sufficient to work with. But 
agreed, it's not
   // very C++-like (but compatible with old librecords ATS code!).
   IdType newMetric(const std::string_view name);
-  IdType lookup(const std::string_view name);
+  IdType lookup(const std::string_view name) const;
   AtomicType *lookup(IdType id) const;
 
   AtomicType &
@@ -89,7 +89,7 @@ public:
   }
 
   IdType
-  operator[](const std::string_view name)
+  operator[](const std::string_view name) const
   {
     return lookup(name);
   }
@@ -132,12 +132,12 @@ public:
   bool
   valid(IdType id) const
   {
-    std::tuple<uint16_t, uint16_t> idx = _splitID(id);
+    auto [blob, entry] = _splitID(id);
 
-    return (id >= 0 && std::get<0>(idx) <= _cur_blob && std::get<1>(idx) < 
METRICS_MAX_SIZE);
+    return (id >= 0 && blob <= _cur_blob && entry < METRICS_MAX_SIZE);
   }
 
-  void recordsDump(RecDumpEntryCb callback, void *edata);
+  void recordsDump(RecDumpEntryCb callback, void *edata) const;
 
 private:
   static constexpr std::tuple<uint16_t, uint16_t>
@@ -148,7 +148,7 @@ private:
 
   void _addBlob();
 
-  std::mutex _mutex;
+  mutable std::mutex _mutex;
   LookupTable _lookups;
   MetricBlobs _blobs;
   uint16_t _cur_blob = 0;
diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt
index 718d9eda5c..b0f0bbc5d2 100644
--- a/src/api/CMakeLists.txt
+++ b/src/api/CMakeLists.txt
@@ -15,7 +15,7 @@
 #
 #######################
 
-add_library(tsapi STATIC Metrics.cc)
+add_library(tsapi SHARED Metrics.cc)
 
 add_executable(test_Metrics
         test_Metrics.cc
diff --git a/src/api/Metrics.cc b/src/api/Metrics.cc
index 7135ba94f8..44bbb94657 100644
--- a/src/api/Metrics.cc
+++ b/src/api/Metrics.cc
@@ -75,7 +75,7 @@ Metrics::newMetric(std::string_view name)
 }
 
 Metrics::IdType
-Metrics::lookup(const std::string_view name)
+Metrics::lookup(const std::string_view name) const
 {
   std::lock_guard<std::mutex> lock(_mutex);
   auto it = _lookups.find(name);
@@ -106,7 +106,7 @@ Metrics::lookup(IdType id) const
 // way exposing iterators over the Metrics. That avoids this ugly dependency
 // between librecords and this code.
 void
-Metrics::recordsDump(RecDumpEntryCb callback, void *edata)
+Metrics::recordsDump(RecDumpEntryCb callback, void *edata) const
 {
   int16_t off_max = METRICS_MAX_SIZE;
 
diff --git a/src/api/test_Metrics.cc b/src/api/test_Metrics.cc
index 83f7d4df80..0c28f91fb3 100644
--- a/src/api/test_Metrics.cc
+++ b/src/api/test_Metrics.cc
@@ -32,7 +32,7 @@ TEST_CASE("Metrics", "[libtsapi][Metrics]")
 
   auto fooid = m.newMetric("foo");
 
-  REQUIRE(fooid == 0);
+  REQUIRE(fooid == 1);
 
   m.increment(fooid);
 

Reply via email to