Module: check_mk
Branch: master
Commit: 64f5197e84cd71f34f9f59b0f2aef47beb117407
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=64f5197e84cd71…
Author: Sven Panne <sp(a)mathias-kettner.de>
Date: Wed Oct 25 09:21:36 2017 +0200
Made MetricsColumn a ListColumn.
This unifies things and enables the use of our filtering machinery on this
column type (which was previously not possible).
Change-Id: I5130c9d68f760c5f0211dbf452becd6b45884909
---
livestatus/src/DoubleColumn.h | 2 +-
livestatus/src/ListColumn.h | 2 +-
livestatus/src/MetricsColumn.cc | 14 +++++++++++---
livestatus/src/MetricsColumn.h | 13 ++++++++-----
4 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/livestatus/src/DoubleColumn.h b/livestatus/src/DoubleColumn.h
index 4a2b560..8ba6017 100644
--- a/livestatus/src/DoubleColumn.h
+++ b/livestatus/src/DoubleColumn.h
@@ -43,7 +43,7 @@ public:
int offset)
: Column(name, description, indirect_offset, extra_offset,
extra_extra_offset, offset) {}
- virtual double getValue(Row data) const = 0;
+ virtual double getValue(Row row) const = 0;
void output(Row row, RowRenderer &r,
const contact *auth_user) const override;
ColumnType type() const override { return ColumnType::double_; }
diff --git a/livestatus/src/ListColumn.h b/livestatus/src/ListColumn.h
index c4cb893..1537ab1 100644
--- a/livestatus/src/ListColumn.h
+++ b/livestatus/src/ListColumn.h
@@ -51,7 +51,7 @@ public:
// TODO(sp) What we actually want here is a stream of strings, not a
// concrete container.
virtual std::vector<std::string> getValue(
- Row data, const contact *auth_user) const = 0;
+ Row row, const contact *auth_user) const = 0;
};
#endif // ListColumn_h
diff --git a/livestatus/src/MetricsColumn.cc b/livestatus/src/MetricsColumn.cc
index 380fecf..2a13b5b 100644
--- a/livestatus/src/MetricsColumn.cc
+++ b/livestatus/src/MetricsColumn.cc
@@ -26,8 +26,16 @@
#include "Renderer.h"
#include "Row.h"
-void MetricsColumn::output(Row /* row */, RowRenderer &r,
- const contact * /* auth_user */) const {
- (void)_mc;
+void MetricsColumn::output(Row row, RowRenderer &r,
+ const contact *auth_user) const {
ListRenderer l(r);
+ for (const auto &metric : getValue(row, auth_user)) {
+ l.output(metric);
+ }
+}
+
+std::vector<std::string> MetricsColumn::getValue(
+ Row /*row*/, const contact * /*auth_user*/) const {
+ (void)_mc;
+ return {};
}
diff --git a/livestatus/src/MetricsColumn.h b/livestatus/src/MetricsColumn.h
index e775e3c..c30bf4c 100644
--- a/livestatus/src/MetricsColumn.h
+++ b/livestatus/src/MetricsColumn.h
@@ -27,25 +27,28 @@
#include "config.h" // IWYU pragma: keep
#include <string>
-#include "Column.h"
+#include <vector>
+#include "ListColumn.h"
#include "contact_fwd.h"
class MonitoringCore;
class Row;
class RowRenderer;
-class MetricsColumn : public Column {
+class MetricsColumn : public ListColumn {
public:
MetricsColumn(const std::string &name, const std::string &description,
int indirect_offset, int extra_offset, int extra_extra_offset,
int offset, MonitoringCore *mc)
- : Column(name, description, indirect_offset, extra_offset,
- extra_extra_offset, offset)
+ : ListColumn(name, description, indirect_offset, extra_offset,
+ extra_extra_offset, offset)
, _mc(mc) {}
- ColumnType type() const override { return ColumnType::list; }
void output(Row row, RowRenderer &r,
const contact *auth_user) const override;
+ std::vector<std::string> getValue(Row row,
+ const contact *auth_user) const override;
+
private:
MonitoringCore *const _mc;
};