Line data Source code
1 : #pragma once 2 : 3 : #include <memory> 4 : 5 : #include "envoy/upstream/load_balancer.h" 6 : 7 : #include "source/common/upstream/load_balancer_factory_base.h" 8 : #include "source/extensions/load_balancing_policies/subset/subset_lb.h" 9 : 10 : namespace Envoy { 11 : namespace Extensions { 12 : namespace LoadBalancingPolices { 13 : namespace Subset { 14 : 15 : class Factory : public Upstream::NonThreadAwareLoadBalancerFactory { 16 : public: 17 2 : std::string name() const override { return "envoy.load_balancing_policies.subset"; } 18 : 19 : Upstream::LoadBalancerPtr create(const Upstream::ClusterInfo& cluster_info, 20 : const Upstream::PrioritySet& priority_set, 21 : const Upstream::PrioritySet* local_priority_set, 22 : Runtime::Loader& runtime, Random::RandomGenerator& random, 23 : TimeSource& time_source) override; 24 : }; 25 : 26 : class SubsetLbFactory 27 : : public Upstream::TypedLoadBalancerFactoryBase<Upstream::SubsetLoadbalancingPolicyProto> { 28 : public: 29 2 : SubsetLbFactory() : TypedLoadBalancerFactoryBase("envoy.load_balancing_policies.subset") {} 30 : 31 : Upstream::ThreadAwareLoadBalancerPtr create(OptRef<const Upstream::LoadBalancerConfig> lb_config, 32 : const Upstream::ClusterInfo& cluster_info, 33 : const Upstream::PrioritySet& priority_set, 34 : Runtime::Loader& runtime, 35 : Random::RandomGenerator& random, 36 : TimeSource& time_source) override; 37 : 38 : Upstream::LoadBalancerConfigPtr loadConfig(const Protobuf::Message& config, 39 : ProtobufMessage::ValidationVisitor& visitor) override; 40 : }; 41 : 42 : } // namespace Subset 43 : } // namespace LoadBalancingPolices 44 : } // namespace Extensions 45 : } // namespace Envoy