LCOV - code coverage report
Current view: top level - source/common/rds - route_config_update_receiver_impl.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 13 23 56.5 %
Date: 2024-01-05 06:35:25 Functions: 4 5 80.0 %

          Line data    Source code
       1             : #include "source/common/rds/route_config_update_receiver_impl.h"
       2             : 
       3             : #include "source/common/rds/util.h"
       4             : 
       5             : namespace Envoy {
       6             : namespace Rds {
       7             : 
       8             : RouteConfigUpdateReceiverImpl::RouteConfigUpdateReceiverImpl(
       9             :     ConfigTraits& config_traits, ProtoTraits& proto_traits,
      10             :     Server::Configuration::ServerFactoryContext& factory_context)
      11             :     : config_traits_(config_traits), proto_traits_(proto_traits), factory_context_(factory_context),
      12             :       time_source_(factory_context.timeSource()),
      13             :       route_config_proto_(proto_traits_.createEmptyProto()),
      14          50 :       config_(config_traits_.createNullConfig()) {}
      15             : 
      16             : void RouteConfigUpdateReceiverImpl::updateConfig(
      17          36 :     std::unique_ptr<Protobuf::Message>&& route_config_proto) {
      18          36 :   config_ = config_traits_.createConfig(*route_config_proto, factory_context_,
      19          36 :                                         false /* not validate unknown cluster */);
      20             :   // If the above create config doesn't raise exception, update the
      21             :   // other cached config entries.
      22          36 :   route_config_proto_ = std::move(route_config_proto);
      23          36 : }
      24             : 
      25          36 : void RouteConfigUpdateReceiverImpl::onUpdateCommon(const std::string& version_info) {
      26          36 :   last_updated_ = time_source_.systemTime();
      27          36 :   config_info_.emplace(RouteConfigProvider::ConfigInfo{*route_config_proto_, version_info});
      28          36 : }
      29             : 
      30             : // Rds::RouteConfigUpdateReceiver
      31             : bool RouteConfigUpdateReceiverImpl::onRdsUpdate(const Protobuf::Message& rc,
      32           0 :                                                 const std::string& version_info) {
      33           0 :   uint64_t new_hash = getHash(rc);
      34           0 :   if (!checkHash(new_hash)) {
      35           0 :     return false;
      36           0 :   }
      37           0 :   updateConfig(cloneProto(proto_traits_, rc));
      38           0 :   updateHash(new_hash);
      39           0 :   onUpdateCommon(version_info);
      40           0 :   return true;
      41           0 : }
      42             : 
      43             : const absl::optional<RouteConfigProvider::ConfigInfo>&
      44         154 : RouteConfigUpdateReceiverImpl::configInfo() const {
      45         154 :   return config_info_;
      46         154 : }
      47             : 
      48             : } // namespace Rds
      49             : } // namespace Envoy

Generated by: LCOV version 1.15