summaryrefslogtreecommitdiffstats
path: root/staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp')
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp b/staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp
new file mode 100644
index 00000000000..f8294661c77
--- /dev/null
+++ b/staging_vespalib/src/vespa/vespalib/metrics/name_repo.cpp
@@ -0,0 +1,72 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include "name_repo.h"
+
+#include <vespa/log/log.h>
+LOG_SETUP(".vespalib.metrics.name_repo");
+
+namespace vespalib {
+namespace metrics {
+
+MetricName
+NameRepo::metric(const vespalib::string &name)
+{
+ size_t id = _metricNames.resolve(name);
+ LOG(debug, "metric name %s -> %zu", name.c_str(), id);
+ return MetricName(id);
+}
+
+Dimension
+NameRepo::dimension(const vespalib::string &name)
+{
+ size_t id = _dimensionNames.resolve(name);
+ LOG(debug, "dimension name %s -> %zu", name.c_str(), id);
+ return Dimension(id);
+}
+
+Label
+NameRepo::label(const vespalib::string &value)
+{
+ size_t id = _labelValues.resolve(value);
+ LOG(debug, "label value %s -> %zu", value.c_str(), id);
+ return Label(id);
+}
+
+const vespalib::string&
+NameRepo::metricName(MetricName metric)
+{
+ return _metricNames.lookup(metric.id());
+}
+
+const vespalib::string&
+NameRepo::dimensionName(Dimension dim)
+{
+ return _dimensionNames.lookup(dim.id());
+}
+
+const vespalib::string&
+NameRepo::labelValue(Label l)
+{
+ return _labelValues.lookup(l.id());
+}
+
+
+const PointMap::BackingMap&
+NameRepo::pointMap(Point from)
+{
+ const PointMap &map = _pointMaps.lookup(from.id());
+ return map.backingMap();
+}
+
+Point
+NameRepo::pointFrom(PointMap::BackingMap map)
+{
+ size_t id = _pointMaps.resolve(PointMap(std::move(map)));
+ return Point(id);
+}
+
+
+NameRepo NameRepo::instance;
+
+
+} // namespace vespalib::metrics
+} // namespace vespalib