VOM: stats fixes
[vpp.git] / extras / vom / vom / stat_client.cpp
index b348c6c..6406e21 100644 (file)
 
 namespace VOM {
 
-stat_client::stat_data_t::stat_data_t()
-  : m_name("")
-  , m_type(STAT_DIR_TYPE_ILLEGAL)
-{
-}
-
-stat_client::stat_data_t::stat_data_t(stat_segment_data_t* stat_seg_data)
-  : m_name(stat_seg_data->name)
-  , m_type(stat_seg_data->type)
+stat_client::stat_data_t::stat_data_t(const stat_segment_data_t& stat_seg_data)
+  : m_name(stat_seg_data.name)
+  , m_type(stat_seg_data.type)
 {
   switch (m_type) {
     case STAT_DIR_TYPE_SCALAR_INDEX:
-      m_scalar_value = stat_seg_data->scalar_value;
+      m_scalar_value = stat_seg_data.scalar_value;
       break;
     case STAT_DIR_TYPE_COUNTER_VECTOR_SIMPLE:
-      m_simple_counter_vec = stat_seg_data->simple_counter_vec;
+      m_simple_counter_vec = stat_seg_data.simple_counter_vec;
       break;
     case STAT_DIR_TYPE_COUNTER_VECTOR_COMBINED:
-      m_combined_counter_vec =
-        reinterpret_cast<counter_t**>(stat_seg_data->combined_counter_vec);
+      m_combined_counter_vec = stat_seg_data.combined_counter_vec;
       break;
     case STAT_DIR_TYPE_ERROR_INDEX:
-      m_error_Value = stat_seg_data->error_value;
+      m_error_value = stat_seg_data.error_value;
       break;
     case STAT_DIR_TYPE_ILLEGAL:
       break;
@@ -59,22 +52,25 @@ stat_client::stat_data_t::type() const
 }
 
 double
-stat_client::stat_data_t::get_stat_segment_scalar_data()
+stat_client::stat_data_t::get_stat_segment_scalar_data() const
 {
   return m_scalar_value;
 }
+
 uint64_t
-stat_client::stat_data_t::get_stat_segment_error_data()
+stat_client::stat_data_t::get_stat_segment_error_data() const
 {
-  return m_error_Value;
+  return m_error_value;
 }
+
 uint64_t**
-stat_client::stat_data_t::get_stat_segment_simple_counter_data()
+stat_client::stat_data_t::get_stat_segment_simple_counter_data() const
 {
   return m_simple_counter_vec;
 }
-counter_t**
-stat_client::stat_data_t::get_stat_segment_combined_counter_data()
+
+vlib_counter_t**
+stat_client::stat_data_t::get_stat_segment_combined_counter_data() const
 {
   return m_combined_counter_vec;
 }
@@ -83,6 +79,9 @@ stat_client::stat_client(std::string& socket_name)
   : m_socket_name(socket_name)
   , m_patterns()
   , m_stat_connect(0)
+  , m_counter_vec()
+  , m_stat_seg_data(nullptr)
+  , m_stat_data()
 {
   m_patterns.push_back("/if");
 }
@@ -91,6 +90,9 @@ stat_client::stat_client(std::vector<std::string>& pattern)
   : m_socket_name("/run/vpp/stats.sock")
   , m_patterns(pattern)
   , m_stat_connect(0)
+  , m_counter_vec()
+  , m_stat_seg_data(nullptr)
+  , m_stat_data()
 {
 }
 
@@ -99,6 +101,9 @@ stat_client::stat_client(std::string socket_name,
   : m_socket_name(socket_name)
   , m_patterns(patterns)
   , m_stat_connect(0)
+  , m_counter_vec()
+  , m_stat_seg_data(nullptr)
+  , m_stat_data()
 {
 }
 
@@ -106,6 +111,9 @@ stat_client::stat_client()
   : m_socket_name("/run/vpp/stats.sock")
   , m_patterns()
   , m_stat_connect(0)
+  , m_counter_vec()
+  , m_stat_seg_data(nullptr)
+  , m_stat_data()
 {
   m_patterns.push_back("/if");
 }
@@ -127,8 +135,10 @@ stat_client::stat_client(const stat_client& o)
 int
 stat_client::connect()
 {
-  if (stat_segment_connect(m_socket_name.c_str()) == 0)
+  if (stat_segment_connect(m_socket_name.c_str()) == 0) {
     m_stat_connect = 1;
+    ls();
+  }
   return m_stat_connect;
 }
 
@@ -165,19 +175,17 @@ stat_client::ls()
 const stat_client::stat_data_vec_t&
 stat_client::dump()
 {
-  stat_segment_data_t* ssd;
   stat_segment_data_free(m_stat_seg_data);
   if (m_stat_data.size()) {
     m_stat_data.clear();
   }
-  ssd = stat_segment_dump(m_counter_vec);
-  if (!ssd) {
+  m_stat_seg_data = stat_segment_dump(m_counter_vec);
+  if (!m_stat_seg_data) {
     ls();
     return m_stat_data;
   }
-  m_stat_seg_data = ssd;
-  for (int i = 0; i < stat_segment_vec_len(ssd); i++) {
-    stat_data_t sd(&ssd[i]);
+  for (int i = 0; i < stat_segment_vec_len(m_stat_seg_data); i++) {
+    stat_data_t sd(m_stat_seg_data[i]);
     m_stat_data.push_back(sd);
   }
   return m_stat_data;
@@ -186,19 +194,17 @@ stat_client::dump()
 const stat_client::stat_data_vec_t&
 stat_client::dump_entry(uint32_t index)
 {
-  stat_segment_data_t* ssd;
   stat_segment_data_free(m_stat_seg_data);
   if (m_stat_data.size()) {
     m_stat_data.clear();
   }
-  ssd = stat_segment_dump_entry(index);
-  if (!ssd) {
+  m_stat_seg_data = stat_segment_dump_entry(index);
+  if (!m_stat_seg_data) {
     ls();
     return m_stat_data;
   }
-  m_stat_seg_data = ssd;
-  for (int i = 0; i < stat_segment_vec_len(ssd); i++) {
-    stat_data_t sd(&ssd[i]);
+  for (int i = 0; i < stat_segment_vec_len(m_stat_seg_data); i++) {
+    stat_data_t sd(m_stat_seg_data[i]);
     m_stat_data.push_back(sd);
   }
   return m_stat_data;