#pragma once #include "descriptions/serdes.hpp" #include "indexer/feature_decl.hpp" #include "indexer/mwm_set.hpp" #include #include #include #include #include #include class DataSource; namespace descriptions { // *NOTE* This class IS thread-safe. class Loader { public: explicit Loader(DataSource const & dataSource) : m_dataSource(dataSource) {} bool GetDescription(FeatureID const & featureId, std::vector const & langPriority, std::string & description); private: struct Entry { std::mutex m_mutex; Deserializer m_deserializer; }; using EntryPtr = std::shared_ptr; DataSource const & m_dataSource; std::map m_deserializers; std::mutex m_mutex; }; } // namespace descriptions