diff options
Diffstat (limited to 'storage/src/vespa/storage/storageserver/priorityconverter.h')
-rw-r--r-- | storage/src/vespa/storage/storageserver/priorityconverter.h | 46 |
1 files changed, 15 insertions, 31 deletions
diff --git a/storage/src/vespa/storage/storageserver/priorityconverter.h b/storage/src/vespa/storage/storageserver/priorityconverter.h index 0abfccac3ea..48c7424433b 100644 --- a/storage/src/vespa/storage/storageserver/priorityconverter.h +++ b/storage/src/vespa/storage/storageserver/priorityconverter.h @@ -1,51 +1,35 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/storage/config/config-stor-prioritymapping.h> -#include <vespa/config/helper/ifetchercallback.h> #include <vespa/documentapi/messagebus/priority.h> -#include <atomic> #include <array> -#include <mutex> - -namespace config { - class ConfigUri; - class ConfigFetcher; -} +#include <vector> namespace storage { -class PriorityConverter - : public config::IFetcherCallback< - vespa::config::content::core::StorPrioritymappingConfig> -{ +class PriorityConverter { public: - using Config = vespa::config::content::core::StorPrioritymappingConfig; - - explicit PriorityConverter(const config::ConfigUri& configUri); - ~PriorityConverter() override; + PriorityConverter(); + ~PriorityConverter(); /** Converts the given priority into a storage api priority number. */ - uint8_t toStoragePriority(documentapi::Priority::Value) const; + [[nodiscard]] uint8_t toStoragePriority(documentapi::Priority::Value) const noexcept; /** Converts the given priority into a document api priority number. */ - documentapi::Priority::Value toDocumentPriority(uint8_t) const; - - void configure(std::unique_ptr<Config> config) override; + [[nodiscard]] documentapi::Priority::Value toDocumentPriority(uint8_t storage_priority) const noexcept { + return _reverse_mapping[storage_priority]; + } private: - static_assert(documentapi::Priority::PRI_ENUM_SIZE == 16, - "Unexpected size of priority enumeration"); - static_assert(documentapi::Priority::PRI_LOWEST == 15, - "Priority enum value out of bounds"); - static constexpr size_t PRI_ENUM_SIZE = documentapi::Priority::PRI_ENUM_SIZE; + void init_static_priority_mappings(); - std::array<std::atomic<uint8_t>, PRI_ENUM_SIZE> _mapping; - std::map<uint8_t, documentapi::Priority::Value> _reverseMapping; - mutable std::mutex _mutex; + static_assert(documentapi::Priority::PRI_ENUM_SIZE == 16, "Unexpected size of priority enumeration"); + static_assert(documentapi::Priority::PRI_LOWEST == 15, "Priority enum value out of bounds"); + static constexpr size_t PRI_ENUM_SIZE = documentapi::Priority::PRI_ENUM_SIZE; - std::unique_ptr<config::ConfigFetcher> _configFetcher; + std::array<uint8_t, PRI_ENUM_SIZE> _mapping; + std::vector<documentapi::Priority::Value> _reverse_mapping; }; } // storage |