LCOV - code coverage report
Current view: top level - source/extensions/load_balancing_policies/maglev - config.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 1 11 9.1 %
Date: 2024-01-05 06:35:25 Functions: 1 2 50.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <memory>
       4             : 
       5             : #include "envoy/extensions/load_balancing_policies/maglev/v3/maglev.pb.h"
       6             : #include "envoy/extensions/load_balancing_policies/maglev/v3/maglev.pb.validate.h"
       7             : #include "envoy/upstream/load_balancer.h"
       8             : 
       9             : #include "source/common/upstream/load_balancer_factory_base.h"
      10             : #include "source/extensions/load_balancing_policies/common/factory_base.h"
      11             : #include "source/extensions/load_balancing_policies/maglev/maglev_lb.h"
      12             : 
      13             : namespace Envoy {
      14             : namespace Extensions {
      15             : namespace LoadBalancingPolices {
      16             : namespace Maglev {
      17             : 
      18             : using MaglevLbProto = envoy::extensions::load_balancing_policies::maglev::v3::Maglev;
      19             : 
      20             : class Factory : public Upstream::TypedLoadBalancerFactoryBase<MaglevLbProto> {
      21             : public:
      22          13 :   Factory() : TypedLoadBalancerFactoryBase("envoy.load_balancing_policies.maglev") {}
      23             : 
      24             :   Upstream::ThreadAwareLoadBalancerPtr create(OptRef<const Upstream::LoadBalancerConfig> lb_config,
      25             :                                               const Upstream::ClusterInfo& cluster_info,
      26             :                                               const Upstream::PrioritySet& priority_set,
      27             :                                               Runtime::Loader& runtime,
      28             :                                               Random::RandomGenerator& random,
      29             :                                               TimeSource& time_source) override;
      30             : 
      31             :   Upstream::LoadBalancerConfigPtr loadConfig(const Protobuf::Message& config,
      32           0 :                                              ProtobufMessage::ValidationVisitor&) override {
      33           0 :     auto active_or_legacy =
      34           0 :         Common::ActiveOrLegacy<Upstream::MaglevLbProto, Upstream::ClusterProto>::get(&config);
      35             : 
      36           0 :     ASSERT(active_or_legacy.hasLegacy() || active_or_legacy.hasActive());
      37             : 
      38           0 :     return active_or_legacy.hasLegacy()
      39           0 :                ? Upstream::LoadBalancerConfigPtr{new Upstream::LegacyMaglevLbConfig(
      40           0 :                      *active_or_legacy.legacy())}
      41           0 :                : Upstream::LoadBalancerConfigPtr{
      42           0 :                      new Upstream::TypedMaglevLbConfig(*active_or_legacy.active())};
      43           0 :   }
      44             : };
      45             : 
      46             : } // namespace Maglev
      47             : } // namespace LoadBalancingPolices
      48             : } // namespace Extensions
      49             : } // namespace Envoy

Generated by: LCOV version 1.15