Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/server/regex_engine.cc
Line
Count
Source
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
11.4k
                                   Configuration::ServerFactoryContext& server_factory_context) {
12
11.4k
  Regex::EnginePtr regex_engine;
13
11.4k
  if (bootstrap.has_default_regex_engine()) {
14
174
    const auto& default_regex_engine = bootstrap.default_regex_engine();
15
174
    Regex::EngineFactory& factory =
16
174
        Config::Utility::getAndCheckFactory<Regex::EngineFactory>(default_regex_engine);
17
174
    auto config = Config::Utility::translateAnyToFactoryConfig(default_regex_engine.typed_config(),
18
174
                                                               validation_visitor, factory);
19
174
    regex_engine = factory.createEngine(*config, server_factory_context);
20
11.2k
  } else {
21
11.2k
    regex_engine = std::make_shared<Regex::GoogleReEngine>();
22
11.2k
  }
23
11.4k
  Regex::EngineSingleton::clear();
24
11.4k
  Regex::EngineSingleton::initialize(regex_engine.get());
25
26
11.4k
  return regex_engine;
27
11.4k
}
28
29
} // namespace Server
30
} // namespace Envoy