Add synchronization to ProtobufSchemas.

This commit is contained in:
Vitaly Baranov 2021-12-10 23:18:47 +03:00
parent ea320c96d5
commit 82c2d8dd2c
2 changed files with 3 additions and 0 deletions

View File

@ -73,6 +73,7 @@ ProtobufSchemas::~ProtobufSchemas() = default;
const google::protobuf::Descriptor * ProtobufSchemas::getMessageTypeForFormatSchema(const FormatSchemaInfo & info)
{
std::lock_guard lock(mutex);
auto it = importers.find(info.schemaDirectory());
if (it == importers.end())
it = importers.emplace(info.schemaDirectory(), std::make_unique<ImporterWithSourceTree>(info.schemaDirectory())).first;

View File

@ -4,6 +4,7 @@
#if USE_PROTOBUF
#include <memory>
#include <mutex>
#include <unordered_map>
#include <base/types.h>
#include <boost/noncopyable.hpp>
@ -39,6 +40,7 @@ public:
private:
class ImporterWithSourceTree;
std::unordered_map<String, std::unique_ptr<ImporterWithSourceTree>> importers;
std::mutex mutex;
};
}