LCOV - code coverage report
Current view: top level - source/common/rds - rds_route_config_provider_impl.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 21 21 100.0 %
Date: 2024-01-05 06:35:25 Functions: 6 6 100.0 %

          Line data    Source code
       1             : #include "source/common/rds/rds_route_config_provider_impl.h"
       2             : 
       3             : namespace Envoy {
       4             : namespace Rds {
       5             : 
       6             : RdsRouteConfigProviderImpl::RdsRouteConfigProviderImpl(
       7             :     RdsRouteConfigSubscriptionSharedPtr&& subscription,
       8             :     Server::Configuration::ServerFactoryContext& factory_context)
       9             :     : subscription_(std::move(subscription)),
      10          50 :       config_update_info_(subscription_->routeConfigUpdate()), tls_(factory_context.threadLocal()) {
      11             : 
      12          50 :   auto initial_config = config_update_info_->parsedConfiguration();
      13          50 :   ASSERT(initial_config);
      14         100 :   tls_.set([initial_config](Event::Dispatcher&) {
      15         100 :     return std::make_shared<ThreadLocalConfig>(initial_config);
      16         100 :   });
      17             :   // It should be 1:1 mapping due to shared rds config.
      18          50 :   ASSERT(subscription_->routeConfigProvider() == nullptr);
      19          50 :   subscription_->routeConfigProvider() = this;
      20          50 : }
      21             : 
      22          50 : RdsRouteConfigProviderImpl::~RdsRouteConfigProviderImpl() {
      23          50 :   ASSERT(subscription_->routeConfigProvider() != nullptr);
      24          50 :   subscription_->routeConfigProvider() = nullptr;
      25          50 : }
      26             : 
      27             : const absl::optional<RouteConfigProvider::ConfigInfo>&
      28         154 : RdsRouteConfigProviderImpl::configInfo() const {
      29         154 :   return config_update_info_->configInfo();
      30         154 : }
      31             : 
      32          36 : absl::Status RdsRouteConfigProviderImpl::onConfigUpdate() {
      33          36 :   tls_.runOnAllThreads([new_config = config_update_info_->parsedConfiguration()](
      34          72 :                            OptRef<ThreadLocalConfig> tls) { tls->config_ = new_config; });
      35          36 :   return absl::OkStatus();
      36          36 : }
      37             : 
      38             : } // namespace Rds
      39             : } // namespace Envoy

Generated by: LCOV version 1.15