Line data Source code
1 : #pragma once 2 : 3 : #include "envoy/upstream/load_balancer.h" 4 : 5 : namespace Envoy { 6 : namespace Upstream { 7 : 8 : /** 9 : * Base class for cluster provided load balancers and load balancers specified by load balancing 10 : * policy config. This class should be extended directly if the load balancing policy specifies a 11 : * thread-aware load balancer. 12 : * 13 : * TODO: provide a ThreadLocalLoadBalancer construct to abstract away thread-awareness from load 14 : * balancing extensions that don't require it. 15 : */ 16 : template <class Proto> class TypedLoadBalancerFactoryBase : public TypedLoadBalancerFactory { 17 : public: 18 : // Upstream::TypedLoadBalancerFactory 19 970 : std::string name() const override { return name_; } 20 : 21 62 : ProtobufTypes::MessagePtr createEmptyConfigProto() override { 22 62 : return ProtobufTypes::MessagePtr{new Proto()}; 23 62 : } 24 : 25 : protected: 26 69 : TypedLoadBalancerFactoryBase(const std::string& name) : name_(name) {} 27 : 28 : private: 29 : const std::string name_; 30 : }; 31 : 32 : } // namespace Upstream 33 : } // namespace Envoy