summaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-10-04 10:37:59 +0000
committerArne Juul <arnej@yahoo-inc.com>2018-10-07 17:29:27 +0000
commita6b1087226906c77fe992e9ae9d3a4ddad3648eb (patch)
treed35067ce858209ed0b7c9f0b93edd5b07d5357ad /metrics
parentdedf5f2f6cf5c4ee2b6b9e214bc445d4c4639869 (diff)
add static name repo here too
Diffstat (limited to 'metrics')
-rw-r--r--metrics/src/vespa/metrics/CMakeLists.txt4
-rw-r--r--metrics/src/vespa/metrics/repo.cpp71
-rw-r--r--metrics/src/vespa/metrics/repo.h32
3 files changed, 106 insertions, 1 deletions
diff --git a/metrics/src/vespa/metrics/CMakeLists.txt b/metrics/src/vespa/metrics/CMakeLists.txt
index 6eae8cd75e4..69088528a61 100644
--- a/metrics/src/vespa/metrics/CMakeLists.txt
+++ b/metrics/src/vespa/metrics/CMakeLists.txt
@@ -5,8 +5,8 @@ vespa_add_library(metrics
countmetricvalues.cpp
jsonwriter.cpp
loadmetric.cpp
- metric.cpp
memoryconsumption.cpp
+ metric.cpp
metricmanager.cpp
metricset.cpp
metricsnapshot.cpp
@@ -14,12 +14,14 @@ vespa_add_library(metrics
metricvalueset.cpp
namehash.cpp
printutils.cpp
+ repo.cpp
state_api_adapter.cpp
summetric.cpp
textwriter.cpp
valuemetric.cpp
valuemetricvalues.cpp
xmlwriter.cpp
+
INSTALL lib64
DEPENDS
)
diff --git a/metrics/src/vespa/metrics/repo.cpp b/metrics/src/vespa/metrics/repo.cpp
new file mode 100644
index 00000000000..0ea964b19b7
--- /dev/null
+++ b/metrics/src/vespa/metrics/repo.cpp
@@ -0,0 +1,71 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "repo.h"
+#include <vespa/vespalib/metrics/name_collection.h>
+
+using vespalib::metrics::NameCollection;
+
+namespace metrics {
+
+namespace {
+NameCollection metricNames;
+NameCollection descriptions;
+NameCollection tagKeys;
+NameCollection tagValues;
+}
+
+MetricNameId
+Repo::metricId(const vespalib::string &name)
+{
+ size_t id = metricNames.resolve(name);
+ return MetricNameId(id);
+}
+
+DescriptionId
+Repo::descriptionId(const vespalib::string &name)
+{
+ size_t id = descriptions.resolve(name);
+ return DescriptionId(id);
+}
+
+TagKeyId
+Repo::tagKey(const vespalib::string &name)
+{
+ size_t id = tagKeys.resolve(name);
+ return TagKeyId(id);
+}
+
+TagValueId
+Repo::tagValue(const vespalib::string &value)
+{
+ size_t id = tagValues.resolve(value);
+ return TagValueId(id);
+}
+
+const vespalib::string&
+Repo::metricName(MetricNameId id)
+{
+ return metricNames.lookup(id.id());
+}
+
+const vespalib::string&
+Repo::description(DescriptionId id)
+{
+ return descriptions.lookup(id.id());
+}
+
+const vespalib::string&
+Repo::tagKey(TagKeyId id)
+{
+ return tagKeys.lookup(id.id());
+}
+
+const vespalib::string&
+Repo::tagValue(TagValueId id)
+{
+ return tagValues.lookup(id.id());
+}
+
+
+} // namespace metrics
+
diff --git a/metrics/src/vespa/metrics/repo.h b/metrics/src/vespa/metrics/repo.h
new file mode 100644
index 00000000000..ddfeaf3f1b6
--- /dev/null
+++ b/metrics/src/vespa/metrics/repo.h
@@ -0,0 +1,32 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#pragma once
+
+#include <vespa/vespalib/stllike/string.h>
+#include <vespa/vespalib/metrics/handle.h>
+
+namespace metrics {
+
+struct MetricNameIdTag {};
+struct DescriptionIdTag {};
+struct TagKeyIdTag {};
+struct TagValueIdTag {};
+
+using MetricNameId = vespalib::metrics::Handle<MetricNameIdTag>;
+using DescriptionId = vespalib::metrics::Handle<DescriptionIdTag>;
+using TagKeyId = vespalib::metrics::Handle<TagKeyIdTag>;
+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 const vespalib::string& metricName(MetricNameId id);
+ static const vespalib::string& description(DescriptionId id);
+ static const vespalib::string& tagKey(TagKeyId id);
+ static const vespalib::string& tagValue(TagValueId id);
+};
+
+} // metrics
+