// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include #include #include #include namespace vespalib::metrics { // internal class NameCollection { private: using Map = std::map; mutable std::mutex _lock; Map _names; std::vector _names_by_id; public: const vespalib::string &lookup(size_t id) const; size_t resolve(const vespalib::string& name); size_t size() const; NameCollection(); NameCollection(const NameCollection &) = delete; NameCollection & operator = (const NameCollection &) = delete; ~NameCollection(); static constexpr size_t empty_id = 0; }; }