diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2018-10-04 13:17:58 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2018-10-07 17:29:36 +0000 |
commit | 1ebe812b587246af7c825b055be055d56e6b5d77 (patch) | |
tree | de81ee28e3c080d546bde9179fca63b19e6f9c57 /metrics/src/vespa | |
parent | 16c8199bfee0e9e27acef98700fd516451787ceb (diff) |
use repo for tags also
Diffstat (limited to 'metrics/src/vespa')
-rw-r--r-- | metrics/src/vespa/metrics/jsonwriter.cpp | 4 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/metric.cpp | 14 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/metric.h | 8 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/repo.cpp | 4 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/repo.h | 4 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/xmlwriter.cpp | 4 |
6 files changed, 21 insertions, 17 deletions
diff --git a/metrics/src/vespa/metrics/jsonwriter.cpp b/metrics/src/vespa/metrics/jsonwriter.cpp index 6ea585f0635..d890d725c8a 100644 --- a/metrics/src/vespa/metrics/jsonwriter.cpp +++ b/metrics/src/vespa/metrics/jsonwriter.cpp @@ -70,8 +70,8 @@ void JsonWriter::writeDimensions(const DimensionSet& dimensions) { for (const auto& dimension : dimensions) { - if (!dimension.key.empty() && !dimension.value.empty()) { - _stream << dimension.key << dimension.value; + if (!dimension.key().empty() && !dimension.value().empty()) { + _stream << dimension.key() << dimension.value(); } } } diff --git a/metrics/src/vespa/metrics/metric.cpp b/metrics/src/vespa/metrics/metric.cpp index 355957d11da..784492de7d2 100644 --- a/metrics/src/vespa/metrics/metric.cpp +++ b/metrics/src/vespa/metrics/metric.cpp @@ -52,8 +52,8 @@ namespace { vespalib::Regexp Metric::_namePattern(namePattern); Tag::Tag(vespalib::stringref k, vespalib::stringref v) - : key(k), - value(v) + : _key(Repo::tagKeyId(k)), + _value(Repo::tagValueId(v)) { } Tag::Tag(const Tag &) = default; @@ -111,7 +111,7 @@ Metric::~Metric() { } bool Metric::tagsSpecifyAtLeastOneDimension(const Tags& tags) const { - auto hasNonEmptyTagValue = [](const Tag& t) { return !t.value.empty(); }; + auto hasNonEmptyTagValue = [](const Tag& t) { return !t.value().empty(); }; return std::any_of(tags.begin(), tags.end(), hasNonEmptyTagValue); } @@ -131,7 +131,7 @@ void Metric::sortTagsInDeterministicOrder() { std::sort(_tags.begin(), _tags.end(), [](const Tag& a, const Tag& b) { - return a.key < b.key; + return a.key() < b.key(); }); } @@ -143,13 +143,13 @@ Metric::createMangledNameWithDimensions() const const size_t sz = _tags.size(); for (size_t i = 0; i < sz; ++i) { const Tag& dimension(_tags[i]); - if (dimension.value.empty()) { + if (dimension.value().empty()) { continue; } if (i != 0) { s << ','; } - s << dimension.key << ':' << dimension.value; + s << dimension.key() << ':' << dimension.value(); } s << '}'; return s.str(); @@ -213,7 +213,7 @@ bool Metric::hasTag(const String& tag) const { return std::find_if(_tags.begin(), _tags.end(), [&](const Tag& t) { - return t.key == tag; + return t.key() == tag; }) != _tags.end(); } diff --git a/metrics/src/vespa/metrics/metric.h b/metrics/src/vespa/metrics/metric.h index c1adc15c28d..3ea6e7a4854 100644 --- a/metrics/src/vespa/metrics/metric.h +++ b/metrics/src/vespa/metrics/metric.h @@ -84,8 +84,8 @@ struct MetricVisitor { */ struct Tag { - vespalib::string key; - vespalib::string value; + const vespalib::string& key() const { return Repo::tagKey(_key); } + const vespalib::string& value() const { return Repo::tagValue(_value); } Tag(vespalib::stringref k, vespalib::stringref v); Tag(const Tag &); @@ -93,6 +93,10 @@ struct Tag Tag(Tag &&) = default; Tag & operator = (Tag &&) = default; ~Tag(); + +private: + TagKeyId _key; + TagValueId _value; }; class Metric : public vespalib::Printable diff --git a/metrics/src/vespa/metrics/repo.cpp b/metrics/src/vespa/metrics/repo.cpp index 0ea964b19b7..a43eec8babe 100644 --- a/metrics/src/vespa/metrics/repo.cpp +++ b/metrics/src/vespa/metrics/repo.cpp @@ -29,14 +29,14 @@ Repo::descriptionId(const vespalib::string &name) } TagKeyId -Repo::tagKey(const vespalib::string &name) +Repo::tagKeyId(const vespalib::string &name) { size_t id = tagKeys.resolve(name); return TagKeyId(id); } TagValueId -Repo::tagValue(const vespalib::string &value) +Repo::tagValueId(const vespalib::string &value) { size_t id = tagValues.resolve(value); return TagValueId(id); diff --git a/metrics/src/vespa/metrics/repo.h b/metrics/src/vespa/metrics/repo.h index ddfeaf3f1b6..3e59b4550d9 100644 --- a/metrics/src/vespa/metrics/repo.h +++ b/metrics/src/vespa/metrics/repo.h @@ -19,8 +19,8 @@ using TagValueId = vespalib::metrics::Handle<TagValueIdTag>; struct Repo { static MetricNameId metricId(const vespalib::string &name); static DescriptionId descriptionId(const vespalib::string &name); - static TagKeyId tagKey(const vespalib::string &name); - static TagValueId tagValue(const vespalib::string &value); + static TagKeyId tagKeyId(const vespalib::string &name); + static TagValueId tagValueId(const vespalib::string &value); static const vespalib::string& metricName(MetricNameId id); static const vespalib::string& description(DescriptionId id); diff --git a/metrics/src/vespa/metrics/xmlwriter.cpp b/metrics/src/vespa/metrics/xmlwriter.cpp index 197ffdd1e3d..90b25621cf8 100644 --- a/metrics/src/vespa/metrics/xmlwriter.cpp +++ b/metrics/src/vespa/metrics/xmlwriter.cpp @@ -98,9 +98,9 @@ XmlWriter::printCommonXmlParts(const Metric& metric) const if (_verbosity >= 3 && tags.size() > 0) { std::ostringstream ost; // XXX print tag values as well - ost << tags[0].key; + ost << tags[0].key(); for (uint32_t i=1; i<tags.size(); ++i) { - ost << "," << tags[i].key; + ost << "," << tags[i].key(); } _xos << XmlAttribute("tags", ost.str()); } |