diff options
author | 2018-02-20 08:33:48 -0800 | |
---|---|---|
committer | 2018-02-20 08:33:48 -0800 | |
commit | c887549f9296d893957c6df17deaf5e2c6f4f633 (patch) | |
tree | 79e4d2a5909348a8065442de6d67ad1cc3f7b860 /src/core/ext/filters/client_channel/lb_policy_registry.h | |
parent | 84f94c17aa5ba19daa7cf001360719bdda7be407 (diff) |
Convert LB policy API to C++.
Diffstat (limited to 'src/core/ext/filters/client_channel/lb_policy_registry.h')
-rw-r--r-- | src/core/ext/filters/client_channel/lb_policy_registry.h | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/src/core/ext/filters/client_channel/lb_policy_registry.h b/src/core/ext/filters/client_channel/lb_policy_registry.h index 5aff79376b..14c21dfe63 100644 --- a/src/core/ext/filters/client_channel/lb_policy_registry.h +++ b/src/core/ext/filters/client_channel/lb_policy_registry.h @@ -20,21 +20,34 @@ #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H #include "src/core/ext/filters/client_channel/lb_policy_factory.h" +#include "src/core/lib/gprpp/memory.h" +#include "src/core/lib/gprpp/orphanable.h" #include "src/core/lib/iomgr/exec_ctx.h" -/** Initialize the registry and set \a default_factory as the factory to be - * returned when no name is provided in a lookup */ -void grpc_lb_policy_registry_init(void); -void grpc_lb_policy_registry_shutdown(void); +namespace grpc_core { -/** Register a LB policy factory. */ -void grpc_register_lb_policy(grpc_lb_policy_factory* factory); +class LoadBalancingPolicyRegistry { + public: + /// Methods used to create and populate the LoadBalancingPolicyRegistry. + /// NOT THREAD SAFE -- to be used only during global gRPC + /// initialization and shutdown. + class Builder { + public: + /// Global initialization and shutdown hooks. + static void InitRegistry(); + static void ShutdownRegistry(); -/** Create a \a grpc_lb_policy instance. - * - * If \a name is NULL, the default factory from \a grpc_lb_policy_registry_init - * will be returned. */ -grpc_lb_policy* grpc_lb_policy_create(const char* name, - grpc_lb_policy_args* args); + /// Registers an LB policy factory. The factory will be used to create an + /// LB policy whose name matches that of the factory. + static void RegisterLoadBalancingPolicyFactory( + UniquePtr<LoadBalancingPolicyFactory> factory); + }; + + /// Creates an LB policy of the type specified by \a name. + static OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy( + const char* name, const LoadBalancingPolicy::Args& args); +}; + +} // namespace grpc_core #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H */ |