grpc 1.31.0.pre1 → 1.33.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (614) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +693 -16022
  3. data/include/grpc/grpc.h +0 -5
  4. data/include/grpc/grpc_security.h +47 -14
  5. data/include/grpc/impl/codegen/README.md +22 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +0 -5
  7. data/include/grpc/impl/codegen/port_platform.h +6 -1
  8. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  9. data/src/core/ext/filters/client_channel/client_channel.cc +264 -186
  10. data/src/core/ext/filters/client_channel/client_channel.h +1 -1
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  12. data/src/core/ext/filters/client_channel/config_selector.cc +0 -4
  13. data/src/core/ext/filters/client_channel/config_selector.h +34 -5
  14. data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -1
  15. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -3
  16. data/src/core/ext/filters/client_channel/lb_policy.h +3 -1
  17. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
  18. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  19. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +9 -6
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +126 -119
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
  24. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +21 -15
  25. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +32 -13
  26. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +8 -7
  27. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -32
  28. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -16
  29. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +207 -129
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +453 -255
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +571 -0
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +727 -0
  33. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
  34. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  37. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  38. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  39. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  40. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +602 -58
  41. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  42. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -39
  43. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +4 -3
  44. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +49 -47
  45. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -9
  46. data/src/core/ext/filters/client_channel/server_address.cc +120 -7
  47. data/src/core/ext/filters/client_channel/server_address.h +48 -21
  48. data/src/core/ext/filters/client_channel/service_config.cc +16 -13
  49. data/src/core/ext/filters/client_channel/service_config.h +7 -4
  50. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  51. data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
  52. data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
  53. data/src/core/ext/filters/client_channel/subchannel.cc +64 -23
  54. data/src/core/ext/filters/client_channel/subchannel.h +16 -4
  55. data/src/core/ext/filters/client_channel/subchannel_interface.h +44 -0
  56. data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
  57. data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
  58. data/src/core/ext/filters/message_size/message_size_filter.h +2 -1
  59. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  60. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
  61. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
  62. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -25
  63. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
  64. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
  65. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
  66. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
  67. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +256 -287
  68. data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
  69. data/src/core/ext/transport/chttp2/transport/flow_control.h +10 -0
  70. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  71. data/src/core/ext/transport/chttp2/transport/internal.h +10 -1
  72. data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -30
  73. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -5
  74. data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
  75. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +244 -0
  76. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +766 -0
  77. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  78. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
  79. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +458 -0
  80. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1635 -0
  81. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
  82. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
  83. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
  85. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
  86. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +379 -0
  87. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
  88. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
  89. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +310 -0
  90. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
  91. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
  92. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +351 -0
  93. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +133 -0
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +752 -0
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
  101. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +176 -0
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +645 -0
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
  107. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +36 -0
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +85 -0
  111. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
  112. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
  113. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  114. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
  115. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  116. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
  117. data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
  118. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
  119. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +128 -0
  120. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +467 -0
  121. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +155 -0
  122. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +539 -0
  123. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
  124. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
  125. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
  126. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +616 -0
  127. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
  128. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
  129. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +900 -0
  130. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3290 -0
  131. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
  132. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +139 -0
  133. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
  134. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
  135. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +364 -0
  136. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1336 -0
  137. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
  138. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
  139. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +110 -0
  140. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +387 -0
  141. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +76 -0
  142. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +214 -0
  143. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +147 -0
  144. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +570 -0
  145. data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
  146. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
  147. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
  148. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
  149. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +139 -0
  150. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +449 -0
  151. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
  152. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
  153. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
  154. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
  155. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
  156. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
  157. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
  158. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
  159. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
  160. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
  161. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  162. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
  163. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  164. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
  165. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  166. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
  167. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  168. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
  169. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +54 -0
  170. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +133 -0
  171. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  172. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
  173. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  174. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
  175. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  176. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
  177. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  178. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
  179. data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
  180. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
  181. data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
  182. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
  183. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
  184. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
  185. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
  186. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +753 -0
  187. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
  188. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
  189. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
  190. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
  191. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
  192. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -0
  193. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  194. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
  195. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +28 -0
  196. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +53 -0
  197. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
  198. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +129 -0
  199. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
  200. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +77 -0
  201. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
  202. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +85 -0
  203. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
  204. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +160 -0
  205. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
  206. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +84 -0
  207. data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
  208. data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
  209. data/src/core/ext/xds/certificate_provider_factory.h +59 -0
  210. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  211. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  212. data/src/core/ext/xds/certificate_provider_store.h +50 -0
  213. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +377 -0
  214. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +102 -0
  215. data/src/core/ext/xds/xds_api.cc +2596 -0
  216. data/src/core/ext/xds/xds_api.h +397 -0
  217. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +44 -2
  218. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
  219. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
  220. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +541 -785
  221. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +114 -93
  222. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +20 -14
  223. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +36 -8
  224. data/src/core/lib/channel/channel_args.h +0 -1
  225. data/src/core/lib/channel/channelz.cc +24 -60
  226. data/src/core/lib/channel/channelz.h +12 -20
  227. data/src/core/lib/channel/channelz_registry.cc +15 -12
  228. data/src/core/lib/channel/channelz_registry.h +3 -0
  229. data/src/core/lib/gpr/sync_posix.cc +2 -8
  230. data/src/core/lib/gpr/time_precise.cc +2 -0
  231. data/src/core/lib/gpr/time_precise.h +6 -2
  232. data/src/core/lib/gprpp/dual_ref_counted.h +336 -0
  233. data/src/core/lib/gprpp/ref_counted.h +51 -22
  234. data/src/core/lib/gprpp/ref_counted_ptr.h +153 -0
  235. data/src/core/lib/iomgr/endpoint.cc +5 -1
  236. data/src/core/lib/iomgr/endpoint.h +7 -3
  237. data/src/core/lib/iomgr/endpoint_cfstream.cc +36 -11
  238. data/src/core/lib/iomgr/ev_posix.cc +0 -2
  239. data/src/core/lib/iomgr/exec_ctx.h +10 -8
  240. data/src/core/lib/iomgr/iomgr.cc +0 -10
  241. data/src/core/lib/iomgr/iomgr.h +0 -10
  242. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
  243. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
  244. data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
  245. data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
  246. data/src/core/lib/iomgr/tcp_custom.cc +32 -16
  247. data/src/core/lib/iomgr/tcp_posix.cc +31 -13
  248. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  249. data/src/core/lib/json/json_util.cc +58 -0
  250. data/src/core/lib/json/json_util.h +37 -0
  251. data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
  252. data/src/core/lib/security/authorization/authorization_engine.h +84 -0
  253. data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
  254. data/src/core/lib/security/authorization/evaluate_args.h +59 -0
  255. data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
  256. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
  257. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
  258. data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
  259. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
  260. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
  261. data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
  262. data/src/core/lib/security/certificate_provider.h +60 -0
  263. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
  264. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +321 -0
  265. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +214 -0
  266. data/src/core/lib/security/credentials/xds/xds_credentials.cc +45 -0
  267. data/src/core/lib/security/credentials/xds/xds_credentials.h +51 -0
  268. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -12
  269. data/src/core/lib/security/security_connector/ssl_utils.h +5 -0
  270. data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
  271. data/src/core/lib/surface/call.cc +12 -12
  272. data/src/core/lib/surface/call.h +2 -1
  273. data/src/core/lib/surface/channel.cc +37 -51
  274. data/src/core/lib/surface/channel.h +18 -3
  275. data/src/core/lib/surface/completion_queue.cc +10 -272
  276. data/src/core/lib/surface/completion_queue.h +0 -8
  277. data/src/core/lib/surface/init.cc +27 -12
  278. data/src/core/lib/surface/server.cc +1066 -1244
  279. data/src/core/lib/surface/server.h +363 -87
  280. data/src/core/lib/surface/version.cc +2 -2
  281. data/src/core/lib/transport/authority_override.cc +38 -0
  282. data/src/core/lib/transport/authority_override.h +32 -0
  283. data/src/core/lib/transport/bdp_estimator.h +2 -1
  284. data/src/core/lib/transport/connectivity_state.cc +18 -13
  285. data/src/core/lib/transport/connectivity_state.h +20 -8
  286. data/src/core/lib/transport/error_utils.cc +13 -0
  287. data/src/core/lib/transport/error_utils.h +6 -0
  288. data/src/core/lib/transport/metadata.cc +11 -1
  289. data/src/core/lib/transport/static_metadata.cc +295 -276
  290. data/src/core/lib/transport/static_metadata.h +80 -73
  291. data/src/core/lib/transport/transport.h +7 -0
  292. data/src/core/lib/uri/uri_parser.cc +23 -21
  293. data/src/core/lib/uri/uri_parser.h +3 -1
  294. data/src/core/plugin_registry/grpc_plugin_registry.cc +35 -20
  295. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
  296. data/src/core/tsi/ssl_transport_security.cc +2 -2
  297. data/src/ruby/bin/math_services_pb.rb +4 -4
  298. data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
  299. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -4
  300. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +7 -7
  301. data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
  302. data/src/ruby/lib/grpc/version.rb +1 -1
  303. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  304. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
  305. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
  306. data/src/ruby/spec/channel_credentials_spec.rb +10 -0
  307. data/src/ruby/spec/generic/active_call_spec.rb +19 -8
  308. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  309. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  310. data/src/ruby/spec/pb/codegen/package_option_spec.rb +20 -0
  311. data/src/ruby/spec/user_agent_spec.rb +74 -0
  312. data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
  313. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
  314. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  315. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  316. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  317. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  318. data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
  319. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  320. data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
  321. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
  322. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
  323. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
  324. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  325. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
  326. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
  327. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  328. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
  329. data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
  330. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  331. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
  332. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
  333. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  334. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
  335. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  336. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  337. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  338. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
  339. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
  340. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
  341. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
  342. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  343. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  344. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
  345. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  346. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
  347. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
  348. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  349. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  350. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  351. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
  352. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  353. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
  354. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  355. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  356. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  357. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  358. data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
  359. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  360. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  361. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  362. data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
  363. data/third_party/abseil-cpp/absl/status/status.cc +447 -0
  364. data/third_party/abseil-cpp/absl/status/status.h +428 -0
  365. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
  366. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  367. data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
  368. data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
  369. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
  370. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  371. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  372. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  373. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  374. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  375. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  376. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
  377. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  378. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  379. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
  380. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  381. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  382. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
  383. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  384. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
  385. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
  386. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  387. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  388. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  389. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  390. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  391. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  392. data/third_party/boringssl-with-bazel/err_data.c +475 -467
  393. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
  394. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
  395. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  396. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  397. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
  398. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
  399. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
  403. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -15
  404. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +543 -0
  405. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +237 -0
  406. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +44 -2
  407. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +221 -49
  408. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +64 -20
  409. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +3 -3
  410. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -8
  411. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
  412. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
  413. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +7 -2
  414. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
  415. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
  416. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +24 -3
  417. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +3 -3
  418. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  419. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
  420. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +29 -35
  421. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +13 -2
  422. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
  423. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
  424. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +2 -2
  425. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
  426. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  427. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
  428. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  429. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
  430. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
  431. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  432. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +55 -8
  433. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
  434. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
  435. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -1
  436. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -2
  437. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
  438. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
  439. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
  440. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
  441. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +4 -1
  442. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +48 -9
  443. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
  444. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +26 -6
  445. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
  446. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -43
  447. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +18 -18
  448. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -3
  449. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  450. data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -9
  451. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
  452. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
  453. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +10 -0
  454. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
  455. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
  456. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +4 -8
  457. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +7 -2
  458. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  459. data/third_party/re2/re2/bitmap256.h +117 -0
  460. data/third_party/re2/re2/bitstate.cc +385 -0
  461. data/third_party/re2/re2/compile.cc +1279 -0
  462. data/third_party/re2/re2/dfa.cc +2130 -0
  463. data/third_party/re2/re2/filtered_re2.cc +121 -0
  464. data/third_party/re2/re2/filtered_re2.h +109 -0
  465. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  466. data/third_party/re2/re2/nfa.cc +713 -0
  467. data/third_party/re2/re2/onepass.cc +623 -0
  468. data/third_party/re2/re2/parse.cc +2464 -0
  469. data/third_party/re2/re2/perl_groups.cc +119 -0
  470. data/third_party/re2/re2/pod_array.h +55 -0
  471. data/third_party/re2/re2/prefilter.cc +710 -0
  472. data/third_party/re2/re2/prefilter.h +108 -0
  473. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  474. data/third_party/re2/re2/prefilter_tree.h +139 -0
  475. data/third_party/re2/re2/prog.cc +988 -0
  476. data/third_party/re2/re2/prog.h +436 -0
  477. data/third_party/re2/re2/re2.cc +1362 -0
  478. data/third_party/re2/re2/re2.h +1002 -0
  479. data/third_party/re2/re2/regexp.cc +980 -0
  480. data/third_party/re2/re2/regexp.h +659 -0
  481. data/third_party/re2/re2/set.cc +154 -0
  482. data/third_party/re2/re2/set.h +80 -0
  483. data/third_party/re2/re2/simplify.cc +657 -0
  484. data/third_party/re2/re2/sparse_array.h +392 -0
  485. data/third_party/re2/re2/sparse_set.h +264 -0
  486. data/third_party/re2/re2/stringpiece.cc +65 -0
  487. data/third_party/re2/re2/stringpiece.h +210 -0
  488. data/third_party/re2/re2/tostring.cc +351 -0
  489. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  490. data/third_party/re2/re2/unicode_casefold.h +78 -0
  491. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  492. data/third_party/re2/re2/unicode_groups.h +67 -0
  493. data/third_party/re2/re2/walker-inl.h +246 -0
  494. data/third_party/re2/util/benchmark.h +156 -0
  495. data/third_party/re2/util/flags.h +26 -0
  496. data/third_party/re2/util/logging.h +109 -0
  497. data/third_party/re2/util/malloc_counter.h +19 -0
  498. data/third_party/re2/util/mix.h +41 -0
  499. data/third_party/re2/util/mutex.h +148 -0
  500. data/third_party/re2/util/pcre.cc +1025 -0
  501. data/third_party/re2/util/pcre.h +681 -0
  502. data/third_party/re2/util/rune.cc +260 -0
  503. data/third_party/re2/util/strutil.cc +149 -0
  504. data/third_party/re2/util/strutil.h +21 -0
  505. data/third_party/re2/util/test.h +50 -0
  506. data/third_party/re2/util/utf.h +44 -0
  507. data/third_party/re2/util/util.h +42 -0
  508. data/third_party/upb/upb/decode.c +64 -15
  509. data/third_party/upb/upb/encode.c +2 -2
  510. data/third_party/upb/upb/msg.h +2 -2
  511. data/third_party/upb/upb/port_def.inc +1 -1
  512. data/third_party/upb/upb/table.c +0 -11
  513. data/third_party/upb/upb/table.int.h +0 -9
  514. data/third_party/upb/upb/upb.c +16 -14
  515. data/third_party/upb/upb/upb.h +26 -0
  516. data/third_party/upb/upb/upb.hpp +2 -0
  517. metadata +340 -153
  518. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  519. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1142
  520. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -2110
  521. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -345
  522. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  523. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  524. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  525. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
  526. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  527. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
  528. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  529. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
  530. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  531. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
  532. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
  533. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  534. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
  535. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  536. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
  537. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  538. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
  539. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  540. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
  541. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
  542. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  543. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
  544. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  545. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
  546. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  547. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
  548. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  549. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
  550. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  551. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
  552. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  553. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  554. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
  555. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
  556. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  557. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
  558. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
  559. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  560. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
  561. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  562. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
  563. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  564. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
  565. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  566. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
  567. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
  568. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  569. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
  570. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  571. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
  572. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  573. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
  574. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  575. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
  576. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
  577. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  578. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
  579. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  580. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
  581. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  582. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
  583. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  584. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
  585. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
  586. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  587. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
  588. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  589. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
  590. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  591. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  592. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  593. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
  594. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  595. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
  596. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  597. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
  598. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  599. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  600. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  601. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  602. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
  603. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
  604. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
  605. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  606. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
  607. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  608. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -29
  609. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  610. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  611. data/src/core/lib/slice/slice_hash_table.h +0 -199
  612. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  613. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  614. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
@@ -25,6 +25,7 @@
25
25
  #include "src/core/lib/channel/context.h"
26
26
  #include "src/core/lib/gprpp/arena.h"
27
27
  #include "src/core/lib/surface/api_trace.h"
28
+ #include "src/core/lib/surface/server.h"
28
29
 
29
30
  #include <grpc/grpc.h>
30
31
  #include <grpc/impl/codegen/compression_types.h>
@@ -34,7 +35,7 @@ typedef void (*grpc_ioreq_completion_func)(grpc_call* call, int success,
34
35
 
35
36
  typedef struct grpc_call_create_args {
36
37
  grpc_channel* channel;
37
- grpc_server* server;
38
+ grpc_core::Server* server;
38
39
 
39
40
  grpc_call* parent;
40
41
  uint32_t propagation_mask;
@@ -183,42 +183,30 @@ void CreateChannelzNode(grpc_channel_stack_builder* builder) {
183
183
  const grpc_channel_args* args =
184
184
  grpc_channel_stack_builder_get_channel_arguments(builder);
185
185
  // Check whether channelz is enabled.
186
- const bool channelz_enabled = grpc_channel_arg_get_bool(
187
- grpc_channel_args_find(args, GRPC_ARG_ENABLE_CHANNELZ),
188
- GRPC_ENABLE_CHANNELZ_DEFAULT);
186
+ const bool channelz_enabled = grpc_channel_args_find_bool(
187
+ args, GRPC_ARG_ENABLE_CHANNELZ, GRPC_ENABLE_CHANNELZ_DEFAULT);
189
188
  if (!channelz_enabled) return;
190
189
  // Get parameters needed to create the channelz node.
191
- const size_t channel_tracer_max_memory = grpc_channel_arg_get_integer(
192
- grpc_channel_args_find(args,
193
- GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE),
190
+ const size_t channel_tracer_max_memory = grpc_channel_args_find_integer(
191
+ args, GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE,
194
192
  {GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
195
- const intptr_t channelz_parent_uuid =
196
- grpc_core::channelz::GetParentUuidFromArgs(*args);
193
+ const bool is_internal_channel = grpc_channel_args_find_bool(
194
+ args, GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, false);
197
195
  // Create the channelz node.
198
196
  const char* target = grpc_channel_stack_builder_get_target(builder);
199
197
  grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_node =
200
198
  grpc_core::MakeRefCounted<grpc_core::channelz::ChannelNode>(
201
199
  target != nullptr ? target : "", channel_tracer_max_memory,
202
- channelz_parent_uuid);
200
+ is_internal_channel);
203
201
  channelz_node->AddTraceEvent(
204
202
  grpc_core::channelz::ChannelTrace::Severity::Info,
205
203
  grpc_slice_from_static_string("Channel created"));
206
- // Update parent channel node, if any.
207
- if (channelz_parent_uuid > 0) {
208
- grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> parent_node =
209
- grpc_core::channelz::ChannelzRegistry::Get(channelz_parent_uuid);
210
- if (parent_node != nullptr) {
211
- grpc_core::channelz::ChannelNode* parent =
212
- static_cast<grpc_core::channelz::ChannelNode*>(parent_node.get());
213
- parent->AddChildChannel(channelz_node->uuid());
214
- }
215
- }
216
204
  // Add channelz node to channel args.
217
- // We remove the arg for the parent uuid, since we no longer need it.
205
+ // We remove the is_internal_channel arg, since we no longer need it.
218
206
  grpc_arg new_arg = grpc_channel_arg_pointer_create(
219
207
  const_cast<char*>(GRPC_ARG_CHANNELZ_CHANNEL_NODE), channelz_node.get(),
220
208
  &channelz_node_arg_vtable);
221
- const char* args_to_remove[] = {GRPC_ARG_CHANNELZ_PARENT_UUID};
209
+ const char* args_to_remove[] = {GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL};
222
210
  grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
223
211
  args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
224
212
  grpc_channel_stack_builder_set_channel_arguments(builder, new_args);
@@ -415,26 +403,33 @@ grpc_call* grpc_channel_create_pollset_set_call(
415
403
 
416
404
  namespace grpc_core {
417
405
 
418
- RegisteredCall::RegisteredCall(const char* method, const char* host) {
419
- path = grpc_mdelem_from_slices(GRPC_MDSTR_PATH,
420
- grpc_core::ExternallyManagedSlice(method));
421
- authority =
422
- host ? grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY,
423
- grpc_core::ExternallyManagedSlice(host))
424
- : GRPC_MDNULL;
425
- }
406
+ RegisteredCall::RegisteredCall(const char* method_arg, const char* host_arg)
407
+ : method(method_arg != nullptr ? method_arg : ""),
408
+ host(host_arg != nullptr ? host_arg : ""),
409
+ path(grpc_mdelem_from_slices(
410
+ GRPC_MDSTR_PATH, grpc_core::ExternallyManagedSlice(method.c_str()))),
411
+ authority(!host.empty()
412
+ ? grpc_mdelem_from_slices(
413
+ GRPC_MDSTR_AUTHORITY,
414
+ grpc_core::ExternallyManagedSlice(host.c_str()))
415
+ : GRPC_MDNULL) {}
426
416
 
427
417
  // TODO(vjpai): Delete copy-constructor when allowed by all supported compilers.
428
- RegisteredCall::RegisteredCall(const RegisteredCall& other) {
429
- path = other.path;
430
- authority = other.authority;
431
- GRPC_MDELEM_REF(path);
432
- GRPC_MDELEM_REF(authority);
433
- }
434
-
435
- RegisteredCall::RegisteredCall(RegisteredCall&& other) noexcept {
436
- path = other.path;
437
- authority = other.authority;
418
+ RegisteredCall::RegisteredCall(const RegisteredCall& other)
419
+ : RegisteredCall(other.method.c_str(), other.host.c_str()) {}
420
+
421
+ RegisteredCall::RegisteredCall(RegisteredCall&& other) noexcept
422
+ : method(std::move(other.method)),
423
+ host(std::move(other.host)),
424
+ path(grpc_mdelem_from_slices(
425
+ GRPC_MDSTR_PATH, grpc_core::ExternallyManagedSlice(method.c_str()))),
426
+ authority(!host.empty()
427
+ ? grpc_mdelem_from_slices(
428
+ GRPC_MDSTR_AUTHORITY,
429
+ grpc_core::ExternallyManagedSlice(host.c_str()))
430
+ : GRPC_MDNULL) {
431
+ GRPC_MDELEM_UNREF(other.path);
432
+ GRPC_MDELEM_UNREF(other.authority);
438
433
  other.path = GRPC_MDNULL;
439
434
  other.authority = GRPC_MDNULL;
440
435
  }
@@ -457,13 +452,14 @@ void* grpc_channel_register_call(grpc_channel* channel, const char* method,
457
452
 
458
453
  grpc_core::MutexLock lock(&channel->registration_table->mu);
459
454
  channel->registration_table->method_registration_attempts++;
460
- auto key = std::make_pair(host, method);
455
+ auto key = std::make_pair(std::string(host != nullptr ? host : ""),
456
+ std::string(method != nullptr ? method : ""));
461
457
  auto rc_posn = channel->registration_table->map.find(key);
462
458
  if (rc_posn != channel->registration_table->map.end()) {
463
459
  return &rc_posn->second;
464
460
  }
465
461
  auto insertion_result = channel->registration_table->map.insert(
466
- {key, grpc_core::RegisteredCall(method, host)});
462
+ {std::move(key), grpc_core::RegisteredCall(method, host)});
467
463
  return &insertion_result.first->second;
468
464
  }
469
465
 
@@ -498,16 +494,6 @@ grpc_call* grpc_channel_create_registered_call(
498
494
  static void destroy_channel(void* arg, grpc_error* /*error*/) {
499
495
  grpc_channel* channel = static_cast<grpc_channel*>(arg);
500
496
  if (channel->channelz_node != nullptr) {
501
- if (channel->channelz_node->parent_uuid() > 0) {
502
- grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> parent_node =
503
- grpc_core::channelz::ChannelzRegistry::Get(
504
- channel->channelz_node->parent_uuid());
505
- if (parent_node != nullptr) {
506
- grpc_core::channelz::ChannelNode* parent =
507
- static_cast<grpc_core::channelz::ChannelNode*>(parent_node.get());
508
- parent->RemoveChildChannel(channel->channelz_node->uuid());
509
- }
510
- }
511
497
  channel->channelz_node->AddTraceEvent(
512
498
  grpc_core::channelz::ChannelTrace::Severity::Info,
513
499
  grpc_slice_from_static_string("Channel destroyed"));
@@ -69,21 +69,31 @@ void grpc_channel_update_call_size_estimate(grpc_channel* channel, size_t size);
69
69
  namespace grpc_core {
70
70
 
71
71
  struct RegisteredCall {
72
+ // The method and host are kept as part of this struct just to manage their
73
+ // lifetime since they must outlive the mdelem contents.
74
+ std::string method;
75
+ std::string host;
76
+
72
77
  grpc_mdelem path;
73
78
  grpc_mdelem authority;
74
79
 
75
- explicit RegisteredCall(const char* method, const char* host);
80
+ explicit RegisteredCall(const char* method_arg, const char* host_arg);
76
81
  // TODO(vjpai): delete copy constructor once all supported compilers allow
77
82
  // std::map value_type to be MoveConstructible.
78
83
  RegisteredCall(const RegisteredCall& other);
79
84
  RegisteredCall(RegisteredCall&& other) noexcept;
85
+ RegisteredCall& operator=(const RegisteredCall&) = delete;
86
+ RegisteredCall& operator=(RegisteredCall&&) = delete;
80
87
 
81
88
  ~RegisteredCall();
82
89
  };
83
90
 
84
91
  struct CallRegistrationTable {
85
92
  grpc_core::Mutex mu;
86
- std::map<std::pair<const char*, const char*>, RegisteredCall>
93
+ // The map key should be owned strings rather than unowned char*'s to
94
+ // guarantee that it outlives calls on the core channel (which may outlast the
95
+ // C++ or other wrapped language Channel that registered these calls).
96
+ std::map<std::pair<std::string, std::string>, RegisteredCall>
87
97
  map /* GUARDED_BY(mu) */;
88
98
  int method_registration_attempts /* GUARDED_BY(mu) */ = 0;
89
99
  };
@@ -151,8 +161,13 @@ inline void grpc_channel_internal_unref(grpc_channel* channel) {
151
161
  grpc_channel_internal_unref(channel)
152
162
  #endif
153
163
 
154
- /** Return the channel's compression options. */
164
+ // Return the channel's compression options.
155
165
  grpc_compression_options grpc_channel_compression_options(
156
166
  const grpc_channel* channel);
157
167
 
168
+ // Ping the channels peer (load balanced channels will select one sub-channel to
169
+ // ping); if the channel is not connected, posts a failed.
170
+ void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq,
171
+ void* tag, void* reserved);
172
+
158
173
  #endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_H */
@@ -39,7 +39,6 @@
39
39
  #include "src/core/lib/gpr/string.h"
40
40
  #include "src/core/lib/gpr/tls.h"
41
41
  #include "src/core/lib/gprpp/atomic.h"
42
- #include "src/core/lib/iomgr/closure.h"
43
42
  #include "src/core/lib/iomgr/executor.h"
44
43
  #include "src/core/lib/iomgr/pollset.h"
45
44
  #include "src/core/lib/iomgr/timer.h"
@@ -209,9 +208,6 @@ struct cq_vtable {
209
208
  void* reserved);
210
209
  grpc_event (*pluck)(grpc_completion_queue* cq, void* tag,
211
210
  gpr_timespec deadline, void* reserved);
212
- // TODO(vjpai): Remove proxy_pollset once callback_alternative no longer
213
- // needed.
214
- grpc_pollset* (*proxy_pollset)(grpc_completion_queue* cq);
215
211
  };
216
212
 
217
213
  namespace {
@@ -313,7 +309,7 @@ struct cq_pluck_data {
313
309
  };
314
310
 
315
311
  struct cq_callback_data {
316
- explicit cq_callback_data(
312
+ cq_callback_data(
317
313
  grpc_experimental_completion_queue_functor* shutdown_callback)
318
314
  : shutdown_callback(shutdown_callback) {}
319
315
 
@@ -338,81 +334,6 @@ struct cq_callback_data {
338
334
  grpc_experimental_completion_queue_functor* shutdown_callback;
339
335
  };
340
336
 
341
- // TODO(vjpai): Remove all callback_alternative variants when event manager is
342
- // the only supported poller.
343
- struct cq_callback_alternative_data {
344
- explicit cq_callback_alternative_data(
345
- grpc_experimental_completion_queue_functor* shutdown_callback)
346
- : implementation(SharedNextableCQ()),
347
- shutdown_callback(shutdown_callback) {}
348
-
349
- /* This just points to a single shared nextable CQ */
350
- grpc_completion_queue* const implementation;
351
-
352
- /** Number of outstanding events (+1 if not shut down)
353
- Initial count is dropped by grpc_completion_queue_shutdown */
354
- grpc_core::Atomic<intptr_t> pending_events{1};
355
-
356
- /** 0 initially. 1 once we initiated shutdown */
357
- bool shutdown_called = false;
358
-
359
- /** A callback that gets invoked when the CQ completes shutdown */
360
- grpc_experimental_completion_queue_functor* shutdown_callback;
361
-
362
- static grpc_completion_queue* SharedNextableCQ() {
363
- grpc_core::MutexLock lock(&*shared_cq_next_mu);
364
-
365
- if (shared_cq_next == nullptr) {
366
- shared_cq_next = grpc_completion_queue_create_for_next(nullptr);
367
- int num_nexting_threads = GPR_CLAMP(gpr_cpu_num_cores(), 1, 32);
368
- threads_remaining.Store(num_nexting_threads,
369
- grpc_core::MemoryOrder::RELEASE);
370
- for (int i = 0; i < num_nexting_threads; i++) {
371
- grpc_core::Executor::Run(
372
- GRPC_CLOSURE_CREATE(
373
- [](void* arg, grpc_error* /*error*/) {
374
- grpc_completion_queue* cq =
375
- static_cast<grpc_completion_queue*>(arg);
376
- while (true) {
377
- grpc_event event = grpc_completion_queue_next(
378
- cq, gpr_inf_future(GPR_CLOCK_REALTIME), nullptr);
379
- if (event.type == GRPC_QUEUE_SHUTDOWN) {
380
- break;
381
- }
382
- GPR_DEBUG_ASSERT(event.type == GRPC_OP_COMPLETE);
383
- // We can always execute the callback inline rather than
384
- // pushing it to another Executor thread because this
385
- // thread is definitely running on an executor, does not
386
- // hold any application locks before executing the callback,
387
- // and cannot be entered recursively.
388
- auto* functor = static_cast<
389
- grpc_experimental_completion_queue_functor*>(event.tag);
390
- functor->functor_run(functor, event.success);
391
- }
392
- if (threads_remaining.FetchSub(
393
- 1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
394
- grpc_completion_queue_destroy(cq);
395
- }
396
- },
397
- shared_cq_next, nullptr),
398
- GRPC_ERROR_NONE, grpc_core::ExecutorType::DEFAULT,
399
- grpc_core::ExecutorJobType::LONG);
400
- }
401
- }
402
- return shared_cq_next;
403
- }
404
- // Use manually-constructed Mutex to avoid static construction issues
405
- static grpc_core::ManualConstructor<grpc_core::Mutex> shared_cq_next_mu;
406
- static grpc_completion_queue*
407
- shared_cq_next; // GUARDED_BY(shared_cq_next_mu)
408
- static grpc_core::Atomic<int> threads_remaining;
409
- };
410
-
411
- grpc_core::ManualConstructor<grpc_core::Mutex>
412
- cq_callback_alternative_data::shared_cq_next_mu;
413
- grpc_completion_queue* cq_callback_alternative_data::shared_cq_next = nullptr;
414
- grpc_core::Atomic<int> cq_callback_alternative_data::threads_remaining{0};
415
-
416
337
  } // namespace
417
338
 
418
339
  /* Completion queue structure */
@@ -425,12 +346,6 @@ struct grpc_completion_queue {
425
346
  const cq_vtable* vtable;
426
347
  const cq_poller_vtable* poller_vtable;
427
348
 
428
- // The pollset entry is allowed to enable proxy CQs like the
429
- // callback_alternative.
430
- // TODO(vjpai): Consider removing pollset and reverting to previous
431
- // calculation of pollset once callback_alternative is no longer needed.
432
- grpc_pollset* pollset;
433
-
434
349
  #ifndef NDEBUG
435
350
  void** outstanding_tags;
436
351
  size_t outstanding_tag_count;
@@ -445,17 +360,13 @@ struct grpc_completion_queue {
445
360
  static void cq_finish_shutdown_next(grpc_completion_queue* cq);
446
361
  static void cq_finish_shutdown_pluck(grpc_completion_queue* cq);
447
362
  static void cq_finish_shutdown_callback(grpc_completion_queue* cq);
448
- static void cq_finish_shutdown_callback_alternative(grpc_completion_queue* cq);
449
363
  static void cq_shutdown_next(grpc_completion_queue* cq);
450
364
  static void cq_shutdown_pluck(grpc_completion_queue* cq);
451
365
  static void cq_shutdown_callback(grpc_completion_queue* cq);
452
- static void cq_shutdown_callback_alternative(grpc_completion_queue* cq);
453
366
 
454
367
  static bool cq_begin_op_for_next(grpc_completion_queue* cq, void* tag);
455
368
  static bool cq_begin_op_for_pluck(grpc_completion_queue* cq, void* tag);
456
369
  static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* tag);
457
- static bool cq_begin_op_for_callback_alternative(grpc_completion_queue* cq,
458
- void* tag);
459
370
 
460
371
  // A cq_end_op function is called when an operation on a given CQ with
461
372
  // a given tag has completed. The storage argument is a reference to the
@@ -478,20 +389,12 @@ static void cq_end_op_for_callback(
478
389
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
479
390
  grpc_cq_completion* storage, bool internal);
480
391
 
481
- static void cq_end_op_for_callback_alternative(
482
- grpc_completion_queue* cq, void* tag, grpc_error* error,
483
- void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
484
- grpc_cq_completion* storage, bool internal);
485
-
486
392
  static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
487
393
  void* reserved);
488
394
 
489
395
  static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
490
396
  gpr_timespec deadline, void* reserved);
491
397
 
492
- static grpc_pollset* cq_proxy_pollset_for_callback_alternative(
493
- grpc_completion_queue* cq);
494
-
495
398
  // Note that cq_init_next and cq_init_pluck do not use the shutdown_callback
496
399
  static void cq_init_next(
497
400
  void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
@@ -499,39 +402,29 @@ static void cq_init_pluck(
499
402
  void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
500
403
  static void cq_init_callback(
501
404
  void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
502
- // poller becomes only option.
503
- static void cq_init_callback_alternative(
504
- void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
505
405
  static void cq_destroy_next(void* data);
506
406
  static void cq_destroy_pluck(void* data);
507
407
  static void cq_destroy_callback(void* data);
508
- static void cq_destroy_callback_alternative(void* data);
509
408
 
510
409
  /* Completion queue vtables based on the completion-type */
511
- // TODO(vjpai): Make this const again once we stop needing callback_alternative
512
- static cq_vtable g_polling_cq_vtable[] = {
410
+ static const cq_vtable g_cq_vtable[] = {
513
411
  /* GRPC_CQ_NEXT */
514
412
  {GRPC_CQ_NEXT, sizeof(cq_next_data), cq_init_next, cq_shutdown_next,
515
413
  cq_destroy_next, cq_begin_op_for_next, cq_end_op_for_next, cq_next,
516
- nullptr, nullptr},
414
+ nullptr},
517
415
  /* GRPC_CQ_PLUCK */
518
416
  {GRPC_CQ_PLUCK, sizeof(cq_pluck_data), cq_init_pluck, cq_shutdown_pluck,
519
417
  cq_destroy_pluck, cq_begin_op_for_pluck, cq_end_op_for_pluck, nullptr,
520
- cq_pluck, nullptr},
418
+ cq_pluck},
521
419
  /* GRPC_CQ_CALLBACK */
522
420
  {GRPC_CQ_CALLBACK, sizeof(cq_callback_data), cq_init_callback,
523
421
  cq_shutdown_callback, cq_destroy_callback, cq_begin_op_for_callback,
524
- cq_end_op_for_callback, nullptr, nullptr, nullptr},
422
+ cq_end_op_for_callback, nullptr, nullptr},
525
423
  };
526
424
 
527
- // Separate vtable for non-polling cqs, assign at init
528
- static cq_vtable g_nonpolling_cq_vtable[sizeof(g_polling_cq_vtable) /
529
- sizeof(g_polling_cq_vtable[0])];
530
-
531
425
  #define DATA_FROM_CQ(cq) ((void*)(cq + 1))
532
- #define INLINE_POLLSET_FROM_CQ(cq) \
426
+ #define POLLSET_FROM_CQ(cq) \
533
427
  ((grpc_pollset*)(cq->vtable->data_size + (char*)DATA_FROM_CQ(cq)))
534
- #define POLLSET_FROM_CQ(cq) (cq->pollset)
535
428
 
536
429
  grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck");
537
430
 
@@ -550,46 +443,6 @@ static void on_pollset_shutdown_done(void* cq, grpc_error* error);
550
443
  void grpc_cq_global_init() {
551
444
  gpr_tls_init(&g_cached_event);
552
445
  gpr_tls_init(&g_cached_cq);
553
- g_nonpolling_cq_vtable[GRPC_CQ_NEXT] = g_polling_cq_vtable[GRPC_CQ_NEXT];
554
- g_nonpolling_cq_vtable[GRPC_CQ_PLUCK] = g_polling_cq_vtable[GRPC_CQ_PLUCK];
555
- g_nonpolling_cq_vtable[GRPC_CQ_CALLBACK] =
556
- g_polling_cq_vtable[GRPC_CQ_CALLBACK];
557
- }
558
-
559
- // TODO(vjpai): Remove when callback_alternative is no longer needed
560
- void grpc_cq_init() {
561
- // If the iomgr runs in the background, we can use the preferred callback CQ.
562
- // If the iomgr is non-polling, we cannot use the alternative callback CQ.
563
- if (!grpc_iomgr_run_in_background() && !grpc_iomgr_non_polling()) {
564
- cq_callback_alternative_data::shared_cq_next_mu.Init();
565
- g_polling_cq_vtable[GRPC_CQ_CALLBACK] = {
566
- GRPC_CQ_CALLBACK,
567
- sizeof(cq_callback_alternative_data),
568
- cq_init_callback_alternative,
569
- cq_shutdown_callback_alternative,
570
- cq_destroy_callback_alternative,
571
- cq_begin_op_for_callback_alternative,
572
- cq_end_op_for_callback_alternative,
573
- nullptr,
574
- nullptr,
575
- cq_proxy_pollset_for_callback_alternative};
576
- }
577
- }
578
-
579
- // TODO(vjpai): Remove when callback_alternative is no longer needed
580
- void grpc_cq_shutdown() {
581
- if (!grpc_iomgr_run_in_background() && !grpc_iomgr_non_polling()) {
582
- {
583
- grpc_core::MutexLock lock(
584
- &*cq_callback_alternative_data::shared_cq_next_mu);
585
- if (cq_callback_alternative_data::shared_cq_next != nullptr) {
586
- grpc_completion_queue_shutdown(
587
- cq_callback_alternative_data::shared_cq_next);
588
- }
589
- cq_callback_alternative_data::shared_cq_next = nullptr;
590
- }
591
- cq_callback_alternative_data::shared_cq_next_mu.Destroy();
592
- }
593
446
  }
594
447
 
595
448
  void grpc_completion_queue_thread_local_cache_init(grpc_completion_queue* cq) {
@@ -668,9 +521,7 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
668
521
  "polling_type=%d)",
669
522
  2, (completion_type, polling_type));
670
523
 
671
- const cq_vtable* vtable = (polling_type == GRPC_CQ_NON_POLLING)
672
- ? &g_nonpolling_cq_vtable[completion_type]
673
- : &g_polling_cq_vtable[completion_type];
524
+ const cq_vtable* vtable = &g_cq_vtable[completion_type];
674
525
  const cq_poller_vtable* poller_vtable =
675
526
  &g_poller_vtable_by_poller_type[polling_type];
676
527
 
@@ -687,18 +538,9 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
687
538
  /* One for destroy(), one for pollset_shutdown */
688
539
  new (&cq->owning_refs) grpc_core::RefCount(2);
689
540
 
541
+ poller_vtable->init(POLLSET_FROM_CQ(cq), &cq->mu);
690
542
  vtable->init(DATA_FROM_CQ(cq), shutdown_callback);
691
543
 
692
- // TODO(vjpai): When callback_alternative is no longer needed, cq->pollset can
693
- // be removed and the nullptr proxy_pollset value below can be the definition
694
- // of POLLSET_FROM_CQ.
695
- cq->pollset = cq->vtable->proxy_pollset == nullptr
696
- ? INLINE_POLLSET_FROM_CQ(cq)
697
- : cq->vtable->proxy_pollset(cq);
698
- // Init the inline pollset. If a proxy CQ is used, the proxy pollset will be
699
- // init'ed in its CQ init.
700
- cq->poller_vtable->init(INLINE_POLLSET_FROM_CQ(cq), &cq->mu);
701
-
702
544
  GRPC_CLOSURE_INIT(&cq->pollset_shutdown_done, on_pollset_shutdown_done, cq,
703
545
  grpc_schedule_on_exec_ctx);
704
546
  return cq;
@@ -736,17 +578,6 @@ static void cq_destroy_callback(void* data) {
736
578
  cqd->~cq_callback_data();
737
579
  }
738
580
 
739
- static void cq_init_callback_alternative(
740
- void* data, grpc_experimental_completion_queue_functor* shutdown_callback) {
741
- new (data) cq_callback_alternative_data(shutdown_callback);
742
- }
743
-
744
- static void cq_destroy_callback_alternative(void* data) {
745
- cq_callback_alternative_data* cqd =
746
- static_cast<cq_callback_alternative_data*>(data);
747
- cqd->~cq_callback_alternative_data();
748
- }
749
-
750
581
  grpc_cq_completion_type grpc_get_cq_completion_type(grpc_completion_queue* cq) {
751
582
  return cq->vtable->cq_completion_type;
752
583
  }
@@ -787,9 +618,7 @@ void grpc_cq_internal_unref(grpc_completion_queue* cq) {
787
618
  #endif
788
619
  if (GPR_UNLIKELY(cq->owning_refs.Unref(debug_location, reason))) {
789
620
  cq->vtable->destroy(DATA_FROM_CQ(cq));
790
- // Only destroy the inlined pollset. If a proxy CQ is used, the proxy
791
- // pollset will be destroyed by the proxy CQ.
792
- cq->poller_vtable->destroy(INLINE_POLLSET_FROM_CQ(cq));
621
+ cq->poller_vtable->destroy(POLLSET_FROM_CQ(cq));
793
622
  #ifndef NDEBUG
794
623
  gpr_free(cq->outstanding_tags);
795
624
  #endif
@@ -840,14 +669,6 @@ static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* /*tag*/) {
840
669
  return cqd->pending_events.IncrementIfNonzero();
841
670
  }
842
671
 
843
- static bool cq_begin_op_for_callback_alternative(grpc_completion_queue* cq,
844
- void* tag) {
845
- cq_callback_alternative_data* cqd =
846
- static_cast<cq_callback_alternative_data*> DATA_FROM_CQ(cq);
847
- return grpc_cq_begin_op(cqd->implementation, tag) &&
848
- cqd->pending_events.IncrementIfNonzero();
849
- }
850
-
851
672
  bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
852
673
  #ifndef NDEBUG
853
674
  gpr_mu_lock(cq->mu);
@@ -1011,7 +832,7 @@ static void cq_end_op_for_pluck(
1011
832
  GRPC_ERROR_UNREF(error);
1012
833
  }
1013
834
 
1014
- void functor_callback(void* arg, grpc_error* error) {
835
+ static void functor_callback(void* arg, grpc_error* error) {
1015
836
  auto* functor = static_cast<grpc_experimental_completion_queue_functor*>(arg);
1016
837
  functor->functor_run(functor, error == GRPC_ERROR_NONE);
1017
838
  }
@@ -1071,40 +892,6 @@ static void cq_end_op_for_callback(
1071
892
  GRPC_CLOSURE_CREATE(functor_callback, functor, nullptr), error);
1072
893
  }
1073
894
 
1074
- static void cq_end_op_for_callback_alternative(
1075
- grpc_completion_queue* cq, void* tag, grpc_error* error,
1076
- void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
1077
- grpc_cq_completion* storage, bool internal) {
1078
- GPR_TIMER_SCOPE("cq_end_op_for_callback_alternative", 0);
1079
-
1080
- cq_callback_alternative_data* cqd =
1081
- static_cast<cq_callback_alternative_data*> DATA_FROM_CQ(cq);
1082
-
1083
- if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
1084
- (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
1085
- error != GRPC_ERROR_NONE)) {
1086
- const char* errmsg = grpc_error_string(error);
1087
- GRPC_API_TRACE(
1088
- "cq_end_op_for_callback_alternative(cq=%p, tag=%p, error=%s, "
1089
- "done=%p, done_arg=%p, storage=%p)",
1090
- 6, (cq, tag, errmsg, done, done_arg, storage));
1091
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
1092
- error != GRPC_ERROR_NONE) {
1093
- gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
1094
- }
1095
- }
1096
-
1097
- // Pass through the actual work to the internal nextable CQ
1098
- grpc_cq_end_op(cqd->implementation, tag, error, done, done_arg, storage,
1099
- internal);
1100
-
1101
- cq_check_tag(cq, tag, true); /* Used in debug builds only */
1102
-
1103
- if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
1104
- cq_finish_shutdown_callback_alternative(cq);
1105
- }
1106
- }
1107
-
1108
895
  void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error,
1109
896
  void (*done)(void* done_arg, grpc_cq_completion* storage),
1110
897
  void* done_arg, grpc_cq_completion* storage,
@@ -1112,13 +899,6 @@ void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error,
1112
899
  cq->vtable->end_op(cq, tag, error, done, done_arg, storage, internal);
1113
900
  }
1114
901
 
1115
- static grpc_pollset* cq_proxy_pollset_for_callback_alternative(
1116
- grpc_completion_queue* cq) {
1117
- cq_callback_alternative_data* cqd =
1118
- static_cast<cq_callback_alternative_data*>(DATA_FROM_CQ(cq));
1119
- return POLLSET_FROM_CQ(cqd->implementation);
1120
- }
1121
-
1122
902
  struct cq_is_finished_arg {
1123
903
  gpr_atm last_seen_things_queued_ever;
1124
904
  grpc_completion_queue* cq;
@@ -1599,21 +1379,6 @@ static void cq_finish_shutdown_callback(grpc_completion_queue* cq) {
1599
1379
  GRPC_ERROR_NONE);
1600
1380
  }
1601
1381
 
1602
- static void cq_finish_shutdown_callback_alternative(grpc_completion_queue* cq) {
1603
- cq_callback_alternative_data* cqd =
1604
- static_cast<cq_callback_alternative_data*> DATA_FROM_CQ(cq);
1605
- auto* callback = cqd->shutdown_callback;
1606
-
1607
- GPR_ASSERT(cqd->shutdown_called);
1608
-
1609
- // Shutdown the non-proxy pollset
1610
- cq->poller_vtable->shutdown(INLINE_POLLSET_FROM_CQ(cq),
1611
- &cq->pollset_shutdown_done);
1612
- grpc_core::Executor::Run(
1613
- GRPC_CLOSURE_CREATE(functor_callback, callback, nullptr),
1614
- GRPC_ERROR_NONE);
1615
- }
1616
-
1617
1382
  static void cq_shutdown_callback(grpc_completion_queue* cq) {
1618
1383
  cq_callback_data* cqd = static_cast<cq_callback_data*> DATA_FROM_CQ(cq);
1619
1384
 
@@ -1640,33 +1405,6 @@ static void cq_shutdown_callback(grpc_completion_queue* cq) {
1640
1405
  GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (callback cq)");
1641
1406
  }
1642
1407
 
1643
- static void cq_shutdown_callback_alternative(grpc_completion_queue* cq) {
1644
- cq_callback_alternative_data* cqd =
1645
- static_cast<cq_callback_alternative_data*> DATA_FROM_CQ(cq);
1646
-
1647
- /* Need an extra ref for cq here because:
1648
- * We call cq_finish_shutdown_callback() below, which calls pollset shutdown.
1649
- * Pollset shutdown decrements the cq ref count which can potentially destroy
1650
- * the cq (if that happens to be the last ref).
1651
- * Creating an extra ref here prevents the cq from getting destroyed while
1652
- * this function is still active */
1653
- GRPC_CQ_INTERNAL_REF(cq, "shutting_down (callback cq)");
1654
- gpr_mu_lock(cq->mu);
1655
- if (cqd->shutdown_called) {
1656
- gpr_mu_unlock(cq->mu);
1657
- GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (callback cq)");
1658
- return;
1659
- }
1660
- cqd->shutdown_called = true;
1661
- if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
1662
- gpr_mu_unlock(cq->mu);
1663
- cq_finish_shutdown_callback_alternative(cq);
1664
- } else {
1665
- gpr_mu_unlock(cq->mu);
1666
- }
1667
- GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (callback cq)");
1668
- }
1669
-
1670
1408
  /* Shutdown simply drops a ref that we reserved at creation time; if we drop
1671
1409
  to zero here, then enter shutdown mode and wake up any waiters */
1672
1410
  void grpc_completion_queue_shutdown(grpc_completion_queue* cq) {