Line data Source code
1 : #include "source/server/regex_engine.h" 2 : 3 : #include "source/common/common/regex.h" 4 : #include "source/common/config/utility.h" 5 : 6 : namespace Envoy { 7 : namespace Server { 8 : 9 : Regex::EnginePtr createRegexEngine(const envoy::config::bootstrap::v3::Bootstrap& bootstrap, 10 : ProtobufMessage::ValidationVisitor& validation_visitor, 11 248 : Configuration::ServerFactoryContext& server_factory_context) { 12 248 : Regex::EnginePtr regex_engine; 13 248 : if (bootstrap.has_default_regex_engine()) { 14 0 : const auto& default_regex_engine = bootstrap.default_regex_engine(); 15 0 : Regex::EngineFactory& factory = 16 0 : Config::Utility::getAndCheckFactory<Regex::EngineFactory>(default_regex_engine); 17 0 : auto config = Config::Utility::translateAnyToFactoryConfig(default_regex_engine.typed_config(), 18 0 : validation_visitor, factory); 19 0 : regex_engine = factory.createEngine(*config, server_factory_context); 20 248 : } else { 21 248 : regex_engine = std::make_shared<Regex::GoogleReEngine>(); 22 248 : } 23 248 : Regex::EngineSingleton::clear(); 24 248 : Regex::EngineSingleton::initialize(regex_engine.get()); 25 : 26 248 : return regex_engine; 27 248 : } 28 : 29 : } // namespace Server 30 : } // namespace Envoy