grpc_plugin_registry.cc 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /*
  2. *
  3. * Copyright 2016 gRPC authors.
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. *
  17. */
  18. // This file is copied from
  19. // gRPC repo's src/core/plugin_registry/grpc_plugin_registry.cc then comment out
  20. // several lb plugins that have been stripped out by BUILD.chromium.gn.template
  21. #include <grpc/support/port_platform.h>
  22. #include <grpc/grpc.h>
  23. #include "third_party/grpc/src/src/core/lib/config/core_configuration.h"
  24. #include "third_party/grpc/src/src/core/lib/surface/builtins.h"
  25. #include "third_party/grpc/src/src/core/lib/transport/http_connect_handshaker.h"
  26. #include "third_party/grpc/src/src/core/lib/transport/tcp_connect_handshaker.h"
  27. extern void grpc_register_extra_plugins(void);
  28. void grpc_chttp2_plugin_init(void);
  29. void grpc_chttp2_plugin_shutdown(void);
  30. void grpc_client_channel_init(void);
  31. void grpc_client_channel_shutdown(void);
  32. void grpc_lb_policy_grpclb_init(void);
  33. void grpc_lb_policy_grpclb_shutdown(void);
  34. void grpc_lb_policy_priority_init(void);
  35. void grpc_lb_policy_priority_shutdown(void);
  36. void grpc_lb_policy_outlier_detection_init(void);
  37. void grpc_lb_policy_outlier_detection_shutdown(void);
  38. void grpc_lb_policy_weighted_target_init(void);
  39. void grpc_lb_policy_weighted_target_shutdown(void);
  40. void grpc_lb_policy_pick_first_init(void);
  41. void grpc_lb_policy_pick_first_shutdown(void);
  42. void grpc_lb_policy_round_robin_init(void);
  43. void grpc_lb_policy_round_robin_shutdown(void);
  44. void grpc_resolver_dns_ares_init(void);
  45. void grpc_resolver_dns_ares_shutdown(void);
  46. namespace grpc_core {
  47. void GrpcLbPolicyRingHashInit(void);
  48. void GrpcLbPolicyRingHashShutdown(void);
  49. #ifndef GRPC_NO_RLS
  50. void RlsLbPluginInit();
  51. void RlsLbPluginShutdown();
  52. #endif // !GRPC_NO_RLS
  53. } // namespace grpc_core
  54. void grpc_register_built_in_plugins(void) {
  55. grpc_register_plugin(grpc_client_channel_init, grpc_client_channel_shutdown);
  56. // grpc_register_plugin(grpc_lb_policy_grpclb_init,
  57. // grpc_lb_policy_grpclb_shutdown);
  58. #ifndef GRPC_NO_RLS
  59. grpc_register_plugin(grpc_core::RlsLbPluginInit,
  60. grpc_core::RlsLbPluginShutdown);
  61. #endif // !GRPC_NO_RLS
  62. // grpc_register_plugin(grpc_lb_policy_outlier_detection_init,
  63. // grpc_lb_policy_outlier_detection_shutdown);
  64. // grpc_register_plugin(grpc_lb_policy_priority_init,
  65. // grpc_lb_policy_priority_shutdown);
  66. // grpc_register_plugin(grpc_lb_policy_weighted_target_init,
  67. // grpc_lb_policy_weighted_target_shutdown);
  68. grpc_register_plugin(grpc_lb_policy_pick_first_init,
  69. grpc_lb_policy_pick_first_shutdown);
  70. // grpc_register_plugin(grpc_lb_policy_round_robin_init,
  71. // grpc_lb_policy_round_robin_shutdown);
  72. // grpc_register_plugin(grpc_core::GrpcLbPolicyRingHashInit,
  73. // grpc_core::GrpcLbPolicyRingHashShutdown);
  74. grpc_register_plugin(grpc_resolver_dns_ares_init,
  75. grpc_resolver_dns_ares_shutdown);
  76. grpc_register_extra_plugins();
  77. }
  78. namespace grpc_core {
  79. extern void BuildClientChannelConfiguration(
  80. CoreConfiguration::Builder* builder);
  81. extern void SecurityRegisterHandshakerFactories(
  82. CoreConfiguration::Builder* builder);
  83. extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder);
  84. extern void RegisterChannelIdleFilters(CoreConfiguration::Builder* builder);
  85. extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder);
  86. extern void RegisterGrpcLbLoadReportingFilter(
  87. CoreConfiguration::Builder* builder);
  88. extern void RegisterHttpFilters(CoreConfiguration::Builder* builder);
  89. extern void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder);
  90. extern void RegisterSecurityFilters(CoreConfiguration::Builder* builder);
  91. extern void RegisterServiceConfigChannelArgFilter(
  92. CoreConfiguration::Builder* builder);
  93. extern void RegisterExtraFilters(CoreConfiguration::Builder* builder);
  94. extern void RegisterResourceQuota(CoreConfiguration::Builder* builder);
  95. extern void FaultInjectionFilterRegister(CoreConfiguration::Builder* builder);
  96. extern void RegisterNativeDnsResolver(CoreConfiguration::Builder* builder);
  97. extern void RegisterAresDnsResolver(CoreConfiguration::Builder* builder);
  98. extern void RegisterSockaddrResolver(CoreConfiguration::Builder* builder);
  99. extern void RegisterFakeResolver(CoreConfiguration::Builder* builder);
  100. #ifdef GPR_SUPPORT_BINDER_TRANSPORT
  101. extern void RegisterBinderResolver(CoreConfiguration::Builder* builder);
  102. #endif
  103. void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
  104. // The order of the handshaker registration is crucial here.
  105. // We want TCP connect handshaker to be registered last so that it is added to
  106. // the start of the handshaker list.
  107. RegisterHttpConnectHandshaker(builder);
  108. RegisterTCPConnectHandshaker(builder);
  109. BuildClientChannelConfiguration(builder);
  110. SecurityRegisterHandshakerFactories(builder);
  111. RegisterClientAuthorityFilter(builder);
  112. RegisterChannelIdleFilters(builder);
  113. // RegisterGrpcLbLoadReportingFilter(builder);
  114. RegisterHttpFilters(builder);
  115. RegisterDeadlineFilter(builder);
  116. RegisterMessageSizeFilter(builder);
  117. RegisterServiceConfigChannelArgFilter(builder);
  118. RegisterResourceQuota(builder);
  119. FaultInjectionFilterRegister(builder);
  120. RegisterAresDnsResolver(builder);
  121. RegisterNativeDnsResolver(builder);
  122. RegisterSockaddrResolver(builder);
  123. RegisterFakeResolver(builder);
  124. #ifdef GPR_SUPPORT_BINDER_TRANSPORT
  125. RegisterBinderResolver(builder);
  126. #endif
  127. // Run last so it gets a consistent location.
  128. // TODO(ctiller): Is this actually necessary?
  129. RegisterSecurityFilters(builder);
  130. RegisterExtraFilters(builder);
  131. RegisterBuiltins(builder);
  132. }
  133. } // namespace grpc_core