grpc 1.34.0 → 1.35.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 (458) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +808 -2787
  3. data/etc/roots.pem +257 -573
  4. data/include/grpc/compression.h +1 -1
  5. data/include/grpc/grpc.h +14 -0
  6. data/include/grpc/grpc_security.h +61 -3
  7. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  8. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  9. data/include/grpc/impl/codegen/grpc_types.h +1 -1
  10. data/include/grpc/impl/codegen/log.h +0 -2
  11. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  12. data/include/grpc/slice_buffer.h +3 -3
  13. data/include/grpc/support/sync.h +3 -3
  14. data/include/grpc/support/time.h +7 -7
  15. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
  16. data/src/core/ext/filters/client_channel/client_channel.cc +2734 -1498
  17. data/src/core/ext/filters/client_channel/client_channel.h +0 -4
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +4 -0
  20. data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
  21. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  22. data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -6
  23. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  24. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +4 -5
  25. data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +2 -3
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +32 -30
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +162 -20
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -2
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
  37. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +7 -14
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +454 -16
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
  42. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -9
  43. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
  44. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +18 -31
  45. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -5
  46. data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
  47. data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
  48. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
  49. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -13
  50. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
  51. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  52. data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
  53. data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
  54. data/src/core/ext/filters/client_channel/subchannel.cc +34 -50
  55. data/src/core/ext/filters/client_channel/subchannel.h +12 -18
  56. data/src/core/ext/filters/deadline/deadline_filter.cc +4 -2
  57. data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
  58. data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
  59. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  60. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  61. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  62. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
  63. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
  64. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
  65. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +178 -86
  66. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
  67. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -8
  68. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
  69. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
  70. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
  71. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
  72. data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
  73. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
  74. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  75. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
  76. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -27
  77. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
  78. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
  79. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
  80. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -111
  81. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +424 -241
  82. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
  83. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +22 -22
  85. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +47 -21
  86. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
  87. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
  88. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
  89. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
  90. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +44 -44
  91. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +200 -78
  92. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +17 -17
  93. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +72 -35
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -0
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +39 -39
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +157 -89
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +47 -47
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +163 -78
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +7 -0
  112. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -13
  113. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
  114. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
  115. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
  116. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
  117. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
  118. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
  119. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
  120. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +28 -28
  121. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
  122. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -23
  123. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +106 -54
  124. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -2
  125. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
  126. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +16 -16
  127. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
  128. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -7
  129. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +38 -22
  130. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +203 -203
  131. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +845 -495
  132. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
  133. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
  134. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -3
  135. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
  136. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +87 -87
  137. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -204
  138. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
  139. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +20 -20
  140. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +85 -46
  141. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -7
  142. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -11
  143. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -32
  144. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
  145. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
  146. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
  147. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  148. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
  149. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +29 -29
  150. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +120 -82
  151. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -1
  152. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
  153. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -1
  154. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
  155. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -7
  156. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
  157. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
  159. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
  160. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
  161. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
  162. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
  163. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  164. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
  165. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  166. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
  167. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
  168. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
  169. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -2
  170. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
  171. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  172. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
  173. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  174. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
  175. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
  176. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
  177. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
  178. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
  179. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
  180. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
  181. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
  182. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
  184. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
  185. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
  186. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
  187. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +34 -34
  188. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +142 -59
  189. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  190. data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
  191. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  192. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
  193. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
  194. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
  195. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  196. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
  197. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  198. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
  199. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
  200. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
  201. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  202. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
  203. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  204. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
  205. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  206. data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
  207. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
  208. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
  209. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
  210. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
  211. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  212. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
  213. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  214. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
  215. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  216. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
  217. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  218. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
  219. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  220. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
  221. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
  222. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
  223. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
  224. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  225. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
  226. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +1 -1
  227. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +7 -0
  228. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +5 -5
  229. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +21 -7
  230. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +2 -2
  231. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +7 -0
  232. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +4 -4
  233. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +17 -8
  234. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +7 -7
  235. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +31 -18
  236. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +5 -5
  237. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +19 -11
  238. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
  239. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
  240. data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
  241. data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
  242. data/src/core/ext/xds/certificate_provider_store.cc +10 -7
  243. data/src/core/ext/xds/certificate_provider_store.h +12 -7
  244. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +25 -0
  245. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -4
  246. data/src/core/ext/xds/xds_api.cc +220 -31
  247. data/src/core/ext/xds/xds_api.h +41 -10
  248. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  249. data/src/core/ext/xds/xds_certificate_provider.cc +61 -2
  250. data/src/core/ext/xds/xds_certificate_provider.h +40 -2
  251. data/src/core/ext/xds/xds_client.cc +31 -29
  252. data/src/core/ext/xds/xds_client.h +6 -1
  253. data/src/core/ext/xds/xds_client_stats.cc +2 -2
  254. data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
  255. data/src/core/lib/channel/channel_args.cc +8 -8
  256. data/src/core/lib/channel/channel_trace.h +1 -1
  257. data/src/core/lib/channel/channelz.cc +13 -14
  258. data/src/core/lib/channel/channelz.h +0 -1
  259. data/src/core/lib/channel/channelz_registry.h +0 -1
  260. data/src/core/lib/channel/handshaker.cc +2 -2
  261. data/src/core/lib/compression/compression_args.cc +3 -2
  262. data/src/core/lib/debug/stats.h +2 -2
  263. data/src/core/lib/debug/stats_data.h +13 -13
  264. data/src/core/lib/gpr/alloc.cc +3 -2
  265. data/src/core/lib/gpr/log.cc +53 -16
  266. data/src/core/lib/gpr/log_linux.cc +3 -1
  267. data/src/core/lib/gpr/log_posix.cc +3 -1
  268. data/src/core/lib/gpr/log_windows.cc +3 -1
  269. data/src/core/lib/gpr/spinlock.h +10 -2
  270. data/src/core/lib/gpr/string.cc +22 -21
  271. data/src/core/lib/gpr/string.h +5 -6
  272. data/src/core/lib/gpr/sync.cc +4 -4
  273. data/src/core/lib/gpr/time.cc +12 -12
  274. data/src/core/lib/gprpp/arena.h +3 -2
  275. data/src/core/lib/gprpp/ref_counted.h +2 -2
  276. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -1
  277. data/src/core/lib/gprpp/thd_posix.cc +6 -1
  278. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  279. data/src/core/lib/http/httpcli.cc +1 -1
  280. data/src/core/lib/http/httpcli.h +2 -3
  281. data/src/core/lib/http/httpcli_security_connector.cc +1 -1
  282. data/src/core/lib/http/parser.cc +1 -2
  283. data/src/core/lib/iomgr/call_combiner.cc +8 -5
  284. data/src/core/lib/iomgr/combiner.cc +2 -1
  285. data/src/core/lib/iomgr/endpoint.h +1 -1
  286. data/src/core/lib/iomgr/error.cc +15 -11
  287. data/src/core/lib/iomgr/error_internal.h +1 -1
  288. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
  289. data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -13
  290. data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
  291. data/src/core/lib/iomgr/exec_ctx.h +6 -4
  292. data/src/core/lib/iomgr/executor.cc +2 -1
  293. data/src/core/lib/iomgr/executor.h +1 -1
  294. data/src/core/lib/iomgr/executor/threadpool.h +1 -1
  295. data/src/core/lib/iomgr/iomgr.cc +1 -1
  296. data/src/core/lib/iomgr/load_file.h +1 -1
  297. data/src/core/lib/iomgr/lockfree_event.cc +19 -14
  298. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  299. data/src/core/lib/iomgr/parse_address.cc +52 -46
  300. data/src/core/lib/iomgr/parse_address.h +13 -9
  301. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
  302. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
  303. data/src/core/lib/iomgr/python_util.h +1 -1
  304. data/src/core/lib/iomgr/resolve_address.cc +4 -4
  305. data/src/core/lib/iomgr/resource_quota.cc +4 -4
  306. data/src/core/lib/iomgr/sockaddr_utils.cc +10 -10
  307. data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
  308. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  309. data/src/core/lib/iomgr/socket_mutator.cc +3 -2
  310. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  311. data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
  312. data/src/core/lib/iomgr/tcp_custom.cc +22 -17
  313. data/src/core/lib/iomgr/tcp_posix.cc +9 -6
  314. data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
  315. data/src/core/lib/iomgr/timer_custom.cc +3 -3
  316. data/src/core/lib/iomgr/timer_generic.cc +3 -3
  317. data/src/core/lib/iomgr/timer_manager.cc +2 -2
  318. data/src/core/lib/iomgr/udp_server.cc +1 -2
  319. data/src/core/lib/iomgr/udp_server.h +1 -2
  320. data/src/core/lib/iomgr/unix_sockets_posix.cc +17 -18
  321. data/src/core/lib/json/json.h +10 -0
  322. data/src/core/lib/security/authorization/evaluate_args.cc +5 -10
  323. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  324. data/src/core/lib/security/context/security_context.cc +4 -3
  325. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  326. data/src/core/lib/security/credentials/credentials.cc +6 -6
  327. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
  328. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
  329. data/src/core/lib/security/credentials/external/aws_request_signer.cc +15 -10
  330. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -2
  331. data/src/core/lib/security/credentials/external/external_account_credentials.cc +217 -31
  332. data/src/core/lib/security/credentials/external/external_account_credentials.h +7 -5
  333. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
  334. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -4
  335. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -18
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +5 -6
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -12
  339. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  341. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -3
  342. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -44
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
  345. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
  346. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -6
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +1 -6
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +326 -5
  350. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +64 -0
  351. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +1 -1
  352. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -1
  353. data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
  354. data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
  355. data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
  356. data/src/core/lib/security/credentials/xds/xds_credentials.cc +140 -10
  357. data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
  358. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
  359. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
  360. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +46 -13
  361. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +23 -6
  362. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  363. data/src/core/lib/security/security_connector/security_connector.cc +3 -2
  364. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
  365. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  366. data/src/core/lib/security/security_connector/ssl_utils.h +12 -19
  367. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +57 -12
  368. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -3
  369. data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
  370. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  371. data/src/core/lib/slice/slice_intern.cc +4 -5
  372. data/src/core/lib/slice/slice_internal.h +2 -2
  373. data/src/core/lib/surface/call.cc +32 -24
  374. data/src/core/lib/surface/call_details.cc +8 -8
  375. data/src/core/lib/surface/channel.cc +16 -10
  376. data/src/core/lib/surface/channel.h +3 -2
  377. data/src/core/lib/surface/channel_init.cc +1 -1
  378. data/src/core/lib/surface/completion_queue.cc +23 -18
  379. data/src/core/lib/surface/completion_queue.h +16 -16
  380. data/src/core/lib/surface/init.cc +6 -5
  381. data/src/core/lib/surface/lame_client.cc +20 -46
  382. data/src/core/lib/surface/lame_client.h +4 -0
  383. data/src/core/lib/surface/server.cc +59 -15
  384. data/src/core/lib/surface/server.h +37 -5
  385. data/src/core/lib/surface/version.cc +1 -1
  386. data/src/core/lib/transport/authority_override.cc +6 -4
  387. data/src/core/lib/transport/authority_override.h +5 -2
  388. data/src/core/lib/transport/connectivity_state.h +6 -4
  389. data/src/core/lib/transport/error_utils.h +1 -1
  390. data/src/core/lib/transport/metadata_batch.h +4 -4
  391. data/src/core/lib/transport/static_metadata.cc +1 -1
  392. data/src/core/lib/transport/status_metadata.cc +4 -3
  393. data/src/core/lib/transport/transport.h +7 -7
  394. data/src/core/lib/uri/uri_parser.cc +131 -249
  395. data/src/core/lib/uri/uri_parser.h +57 -21
  396. data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
  397. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  398. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  399. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  400. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -23
  401. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  402. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  403. data/src/core/tsi/fake_transport_security.cc +5 -3
  404. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  405. data/src/core/tsi/ssl_transport_security.cc +62 -49
  406. data/src/core/tsi/ssl_transport_security.h +6 -6
  407. data/src/core/tsi/transport_security.cc +6 -6
  408. data/src/core/tsi/transport_security_interface.h +1 -1
  409. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  410. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -0
  411. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -13
  412. data/src/ruby/lib/grpc/version.rb +1 -1
  413. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
  414. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
  415. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
  416. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  417. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  418. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
  419. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  420. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  421. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  422. data/third_party/upb/upb/decode.c +248 -167
  423. data/third_party/upb/upb/decode.h +20 -1
  424. data/third_party/upb/upb/decode.int.h +163 -0
  425. data/third_party/upb/upb/decode_fast.c +1040 -0
  426. data/third_party/upb/upb/decode_fast.h +126 -0
  427. data/third_party/upb/upb/def.c +525 -516
  428. data/third_party/upb/upb/def.h +16 -31
  429. data/third_party/upb/upb/def.hpp +37 -123
  430. data/third_party/upb/upb/encode.c +227 -169
  431. data/third_party/upb/upb/encode.h +27 -2
  432. data/third_party/upb/upb/json_decode.c +1443 -0
  433. data/third_party/upb/upb/json_decode.h +23 -0
  434. data/third_party/upb/upb/json_encode.c +713 -0
  435. data/third_party/upb/upb/json_encode.h +36 -0
  436. data/third_party/upb/upb/msg.c +167 -88
  437. data/third_party/upb/upb/msg.h +174 -34
  438. data/third_party/upb/upb/port_def.inc +74 -61
  439. data/third_party/upb/upb/port_undef.inc +3 -7
  440. data/third_party/upb/upb/reflection.c +36 -19
  441. data/third_party/upb/upb/table.c +34 -197
  442. data/third_party/upb/upb/table.int.h +14 -5
  443. data/third_party/upb/upb/text_encode.c +45 -22
  444. data/third_party/upb/upb/text_encode.h +4 -1
  445. data/third_party/upb/upb/upb.c +18 -41
  446. data/third_party/upb/upb/upb.h +36 -7
  447. data/third_party/upb/upb/upb.hpp +4 -4
  448. data/third_party/upb/upb/upb.int.h +29 -0
  449. metadata +60 -46
  450. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
  451. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
  452. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  453. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
  454. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
  455. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
  456. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
  457. data/src/core/lib/gprpp/map.h +0 -53
  458. data/third_party/upb/upb/port.c +0 -26
@@ -49,15 +49,11 @@ class ClientChannelGlobalParsedConfig
49
49
  RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config,
50
50
  std::string parsed_deprecated_lb_policy,
51
51
  const absl::optional<RetryThrottling>& retry_throttling,
52
- const char* health_check_service_name)
52
+ absl::optional<std::string> health_check_service_name)
53
53
  : parsed_lb_config_(std::move(parsed_lb_config)),
54
54
  parsed_deprecated_lb_policy_(std::move(parsed_deprecated_lb_policy)),
55
55
  retry_throttling_(retry_throttling),
56
- health_check_service_name_(health_check_service_name) {}
57
-
58
- absl::optional<RetryThrottling> retry_throttling() const {
59
- return retry_throttling_;
60
- }
56
+ health_check_service_name_(std::move(health_check_service_name)) {}
61
57
 
62
58
  RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config() const {
63
59
  return parsed_lb_config_;
@@ -67,7 +63,11 @@ class ClientChannelGlobalParsedConfig
67
63
  return parsed_deprecated_lb_policy_;
68
64
  }
69
65
 
70
- const char* health_check_service_name() const {
66
+ absl::optional<RetryThrottling> retry_throttling() const {
67
+ return retry_throttling_;
68
+ }
69
+
70
+ const absl::optional<std::string>& health_check_service_name() const {
71
71
  return health_check_service_name_;
72
72
  }
73
73
 
@@ -75,7 +75,7 @@ class ClientChannelGlobalParsedConfig
75
75
  RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config_;
76
76
  std::string parsed_deprecated_lb_policy_;
77
77
  absl::optional<RetryThrottling> retry_throttling_;
78
- const char* health_check_service_name_;
78
+ absl::optional<std::string> health_check_service_name_;
79
79
  };
80
80
 
81
81
  class ClientChannelMethodParsedConfig
@@ -23,6 +23,8 @@
23
23
  #include <limits.h>
24
24
  #include <string.h>
25
25
 
26
+ #include <string>
27
+
26
28
  #include <grpc/support/alloc.h>
27
29
  #include <grpc/support/atm.h>
28
30
  #include <grpc/support/string_util.h>
@@ -164,20 +166,20 @@ void ServerRetryThrottleMap::Shutdown() {
164
166
  }
165
167
 
166
168
  RefCountedPtr<ServerRetryThrottleData> ServerRetryThrottleMap::GetDataForServer(
167
- const char* server_name, intptr_t max_milli_tokens,
169
+ const std::string& server_name, intptr_t max_milli_tokens,
168
170
  intptr_t milli_token_ratio) {
169
171
  RefCountedPtr<ServerRetryThrottleData> result;
170
172
  gpr_mu_lock(&g_mu);
171
173
  ServerRetryThrottleData* throttle_data =
172
174
  static_cast<ServerRetryThrottleData*>(
173
- grpc_avl_get(g_avl, const_cast<char*>(server_name), nullptr));
175
+ grpc_avl_get(g_avl, const_cast<char*>(server_name.c_str()), nullptr));
174
176
  if (throttle_data == nullptr ||
175
177
  throttle_data->max_milli_tokens() != max_milli_tokens ||
176
178
  throttle_data->milli_token_ratio() != milli_token_ratio) {
177
179
  // Entry not found, or found with old parameters. Create a new one.
178
180
  result = MakeRefCounted<ServerRetryThrottleData>(
179
181
  max_milli_tokens, milli_token_ratio, throttle_data);
180
- g_avl = grpc_avl_add(g_avl, gpr_strdup(server_name),
182
+ g_avl = grpc_avl_add(g_avl, gpr_strdup(server_name.c_str()),
181
183
  result->Ref().release(), nullptr);
182
184
  } else {
183
185
  // Entry found. Return a new ref to it.
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <string>
25
+
24
26
  #include "src/core/lib/gprpp/memory.h"
25
27
  #include "src/core/lib/gprpp/ref_counted.h"
26
28
 
@@ -67,7 +69,7 @@ class ServerRetryThrottleMap {
67
69
  /// Returns the failure data for \a server_name, creating a new entry if
68
70
  /// needed.
69
71
  static RefCountedPtr<ServerRetryThrottleData> GetDataForServer(
70
- const char* server_name, intptr_t max_milli_tokens,
72
+ const std::string& server_name, intptr_t max_milli_tokens,
71
73
  intptr_t milli_token_ratio);
72
74
  };
73
75
 
@@ -19,6 +19,10 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
+ #include <map>
23
+
24
+ #include "absl/strings/string_view.h"
25
+
22
26
  #include "src/core/ext/filters/client_channel/service_config.h"
23
27
  #include "src/core/ext/filters/client_channel/service_config_parser.h"
24
28
  #include "src/core/lib/channel/context.h"
@@ -35,13 +39,22 @@ class ServiceConfigCallData {
35
39
  ServiceConfigCallData(
36
40
  RefCountedPtr<ServiceConfig> service_config,
37
41
  const ServiceConfigParser::ParsedConfigVector* method_configs,
42
+ std::map<const char*, absl::string_view> call_attributes,
38
43
  grpc_call_context_element* call_context)
39
44
  : service_config_(std::move(service_config)),
40
- method_configs_(method_configs) {
45
+ method_configs_(method_configs),
46
+ call_attributes_(std::move(call_attributes)) {
41
47
  call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = this;
42
48
  call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].destroy = Destroy;
43
49
  }
44
50
 
51
+ ServiceConfigCallData(
52
+ RefCountedPtr<ServiceConfig> service_config,
53
+ const ServiceConfigParser::ParsedConfigVector* method_configs,
54
+ grpc_call_context_element* call_context)
55
+ : ServiceConfigCallData(std::move(service_config), method_configs, {},
56
+ call_context) {}
57
+
45
58
  ServiceConfig* service_config() { return service_config_.get(); }
46
59
 
47
60
  ServiceConfigParser::ParsedConfig* GetMethodParsedConfig(size_t index) const {
@@ -53,6 +66,10 @@ class ServiceConfigCallData {
53
66
  return service_config_->GetGlobalParsedConfig(index);
54
67
  }
55
68
 
69
+ const std::map<const char*, absl::string_view>& call_attributes() const {
70
+ return call_attributes_;
71
+ }
72
+
56
73
  private:
57
74
  static void Destroy(void* ptr) {
58
75
  ServiceConfigCallData* self = static_cast<ServiceConfigCallData*>(ptr);
@@ -61,6 +78,7 @@ class ServiceConfigCallData {
61
78
 
62
79
  RefCountedPtr<ServiceConfig> service_config_;
63
80
  const ServiceConfigParser::ParsedConfigVector* method_configs_ = nullptr;
81
+ std::map<const char*, absl::string_view> call_attributes_;
64
82
  };
65
83
 
66
84
  } // namespace grpc_core
@@ -121,18 +121,9 @@ void ConnectedSubchannel::Ping(grpc_closure* on_initiate,
121
121
  elem->filter->start_transport_op(elem, op);
122
122
  }
123
123
 
124
- size_t ConnectedSubchannel::GetInitialCallSizeEstimate(
125
- size_t parent_data_size) const {
126
- size_t allocation_size =
127
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall));
128
- if (parent_data_size > 0) {
129
- allocation_size +=
130
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(channel_stack_->call_stack_size) +
131
- parent_data_size;
132
- } else {
133
- allocation_size += channel_stack_->call_stack_size;
134
- }
135
- return allocation_size;
124
+ size_t ConnectedSubchannel::GetInitialCallSizeEstimate() const {
125
+ return GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall)) +
126
+ channel_stack_->call_stack_size;
136
127
  }
137
128
 
138
129
  //
@@ -142,8 +133,7 @@ size_t ConnectedSubchannel::GetInitialCallSizeEstimate(
142
133
  RefCountedPtr<SubchannelCall> SubchannelCall::Create(Args args,
143
134
  grpc_error** error) {
144
135
  const size_t allocation_size =
145
- args.connected_subchannel->GetInitialCallSizeEstimate(
146
- args.parent_data_size);
136
+ args.connected_subchannel->GetInitialCallSizeEstimate();
147
137
  Arena* arena = args.arena;
148
138
  return RefCountedPtr<SubchannelCall>(new (
149
139
  arena->Alloc(allocation_size)) SubchannelCall(std::move(args), error));
@@ -187,12 +177,6 @@ void SubchannelCall::StartTransportStreamOpBatch(
187
177
  top_elem->filter->start_transport_stream_op_batch(top_elem, batch);
188
178
  }
189
179
 
190
- void* SubchannelCall::GetParentData() {
191
- grpc_channel_stack* chanstk = connected_subchannel_->channel_stack();
192
- return (char*)this + GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall)) +
193
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(chanstk->call_stack_size);
194
- }
195
-
196
180
  grpc_call_stack* SubchannelCall::GetCallStack() {
197
181
  return SUBCHANNEL_CALL_TO_CALL_STACK(this);
198
182
  }
@@ -440,8 +424,7 @@ void Subchannel::ConnectivityStateWatcherList::NotifyLocked(
440
424
  class Subchannel::HealthWatcherMap::HealthWatcher
441
425
  : public AsyncConnectivityStateWatcherInterface {
442
426
  public:
443
- HealthWatcher(Subchannel* c,
444
- grpc_core::UniquePtr<char> health_check_service_name,
427
+ HealthWatcher(Subchannel* c, std::string health_check_service_name,
445
428
  grpc_connectivity_state subchannel_state)
446
429
  : subchannel_(c),
447
430
  health_check_service_name_(std::move(health_check_service_name)),
@@ -456,8 +439,8 @@ class Subchannel::HealthWatcherMap::HealthWatcher
456
439
  GRPC_SUBCHANNEL_WEAK_UNREF(subchannel_, "health_watcher");
457
440
  }
458
441
 
459
- const char* health_check_service_name() const {
460
- return health_check_service_name_.get();
442
+ const std::string& health_check_service_name() const {
443
+ return health_check_service_name_;
461
444
  }
462
445
 
463
446
  grpc_connectivity_state state() const { return state_; }
@@ -520,12 +503,12 @@ class Subchannel::HealthWatcherMap::HealthWatcher
520
503
  void StartHealthCheckingLocked() {
521
504
  GPR_ASSERT(health_check_client_ == nullptr);
522
505
  health_check_client_ = MakeOrphanable<HealthCheckClient>(
523
- health_check_service_name_.get(), subchannel_->connected_subchannel_,
506
+ health_check_service_name_, subchannel_->connected_subchannel_,
524
507
  subchannel_->pollset_set_, subchannel_->channelz_node_, Ref());
525
508
  }
526
509
 
527
510
  Subchannel* subchannel_;
528
- grpc_core::UniquePtr<char> health_check_service_name_;
511
+ std::string health_check_service_name_;
529
512
  OrphanablePtr<HealthCheckClient> health_check_client_;
530
513
  grpc_connectivity_state state_;
531
514
  absl::Status status_;
@@ -538,18 +521,17 @@ class Subchannel::HealthWatcherMap::HealthWatcher
538
521
 
539
522
  void Subchannel::HealthWatcherMap::AddWatcherLocked(
540
523
  Subchannel* subchannel, grpc_connectivity_state initial_state,
541
- grpc_core::UniquePtr<char> health_check_service_name,
524
+ const std::string& health_check_service_name,
542
525
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
543
526
  // If the health check service name is not already present in the map,
544
527
  // add it.
545
- auto it = map_.find(health_check_service_name.get());
528
+ auto it = map_.find(health_check_service_name);
546
529
  HealthWatcher* health_watcher;
547
530
  if (it == map_.end()) {
548
- const char* key = health_check_service_name.get();
549
531
  auto w = MakeOrphanable<HealthWatcher>(
550
- subchannel, std::move(health_check_service_name), subchannel->state_);
532
+ subchannel, health_check_service_name, subchannel->state_);
551
533
  health_watcher = w.get();
552
- map_[key] = std::move(w);
534
+ map_.emplace(health_check_service_name, std::move(w));
553
535
  } else {
554
536
  health_watcher = it->second.get();
555
537
  }
@@ -558,7 +540,7 @@ void Subchannel::HealthWatcherMap::AddWatcherLocked(
558
540
  }
559
541
 
560
542
  void Subchannel::HealthWatcherMap::RemoveWatcherLocked(
561
- const char* health_check_service_name,
543
+ const std::string& health_check_service_name,
562
544
  ConnectivityStateWatcherInterface* watcher) {
563
545
  auto it = map_.find(health_check_service_name);
564
546
  GPR_ASSERT(it != map_.end());
@@ -577,7 +559,7 @@ void Subchannel::HealthWatcherMap::NotifyLocked(grpc_connectivity_state state,
577
559
 
578
560
  grpc_connectivity_state
579
561
  Subchannel::HealthWatcherMap::CheckConnectivityStateLocked(
580
- Subchannel* subchannel, const char* health_check_service_name) {
562
+ Subchannel* subchannel, const std::string& health_check_service_name) {
581
563
  auto it = map_.find(health_check_service_name);
582
564
  if (it == map_.end()) {
583
565
  // If the health check service name is not found in the map, we're
@@ -702,7 +684,7 @@ Subchannel::Subchannel(SubchannelKey* key,
702
684
  const grpc_integer_options options = {
703
685
  GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX};
704
686
  size_t channel_tracer_max_memory =
705
- (size_t)grpc_channel_arg_get_integer(arg, options);
687
+ static_cast<size_t>(grpc_channel_arg_get_integer(arg, options));
706
688
  if (channelz_enabled) {
707
689
  channelz_node_ = MakeRefCounted<channelz::SubchannelNode>(
708
690
  GetTargetAddress(), channel_tracer_max_memory);
@@ -840,15 +822,15 @@ channelz::SubchannelNode* Subchannel::channelz_node() {
840
822
  }
841
823
 
842
824
  grpc_connectivity_state Subchannel::CheckConnectivityState(
843
- const char* health_check_service_name,
825
+ const absl::optional<std::string>& health_check_service_name,
844
826
  RefCountedPtr<ConnectedSubchannel>* connected_subchannel) {
845
827
  MutexLock lock(&mu_);
846
828
  grpc_connectivity_state state;
847
- if (health_check_service_name == nullptr) {
829
+ if (!health_check_service_name.has_value()) {
848
830
  state = state_;
849
831
  } else {
850
832
  state = health_watcher_map_.CheckConnectivityStateLocked(
851
- this, health_check_service_name);
833
+ this, *health_check_service_name);
852
834
  }
853
835
  if (connected_subchannel != nullptr && state == GRPC_CHANNEL_READY) {
854
836
  *connected_subchannel = connected_subchannel_;
@@ -858,37 +840,37 @@ grpc_connectivity_state Subchannel::CheckConnectivityState(
858
840
 
859
841
  void Subchannel::WatchConnectivityState(
860
842
  grpc_connectivity_state initial_state,
861
- grpc_core::UniquePtr<char> health_check_service_name,
843
+ const absl::optional<std::string>& health_check_service_name,
862
844
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
863
845
  MutexLock lock(&mu_);
864
846
  grpc_pollset_set* interested_parties = watcher->interested_parties();
865
847
  if (interested_parties != nullptr) {
866
848
  grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties);
867
849
  }
868
- if (health_check_service_name == nullptr) {
850
+ if (!health_check_service_name.has_value()) {
869
851
  if (state_ != initial_state) {
870
852
  new AsyncWatcherNotifierLocked(watcher, this, state_, status_);
871
853
  }
872
854
  watcher_list_.AddWatcherLocked(std::move(watcher));
873
855
  } else {
874
- health_watcher_map_.AddWatcherLocked(this, initial_state,
875
- std::move(health_check_service_name),
876
- std::move(watcher));
856
+ health_watcher_map_.AddWatcherLocked(
857
+ this, initial_state, *health_check_service_name, std::move(watcher));
877
858
  }
878
859
  }
879
860
 
880
861
  void Subchannel::CancelConnectivityStateWatch(
881
- const char* health_check_service_name,
862
+ const absl::optional<std::string>& health_check_service_name,
882
863
  ConnectivityStateWatcherInterface* watcher) {
883
864
  MutexLock lock(&mu_);
884
865
  grpc_pollset_set* interested_parties = watcher->interested_parties();
885
866
  if (interested_parties != nullptr) {
886
867
  grpc_pollset_set_del_pollset_set(pollset_set_, interested_parties);
887
868
  }
888
- if (health_check_service_name == nullptr) {
869
+ if (!health_check_service_name.has_value()) {
889
870
  watcher_list_.RemoveWatcherLocked(watcher);
890
871
  } else {
891
- health_watcher_map_.RemoveWatcherLocked(health_check_service_name, watcher);
872
+ health_watcher_map_.RemoveWatcherLocked(*health_check_service_name,
873
+ watcher);
892
874
  }
893
875
  }
894
876
 
@@ -912,7 +894,7 @@ void Subchannel::ResetBackoff() {
912
894
  grpc_arg Subchannel::CreateSubchannelAddressArg(
913
895
  const grpc_resolved_address* addr) {
914
896
  return grpc_channel_arg_string_create(
915
- (char*)GRPC_ARG_SUBCHANNEL_ADDRESS,
897
+ const_cast<char*>(GRPC_ARG_SUBCHANNEL_ADDRESS),
916
898
  gpr_strdup(addr->len > 0 ? grpc_sockaddr_to_uri(addr).c_str() : ""));
917
899
  }
918
900
 
@@ -928,10 +910,12 @@ const char* Subchannel::GetUriFromSubchannelAddressArg(
928
910
  namespace {
929
911
 
930
912
  void UriToSockaddr(const char* uri_str, grpc_resolved_address* addr) {
931
- grpc_uri* uri = grpc_uri_parse(uri_str, false /* suppress_errors */);
932
- GPR_ASSERT(uri != nullptr);
933
- if (!grpc_parse_uri(uri, addr)) memset(addr, 0, sizeof(*addr));
934
- grpc_uri_destroy(uri);
913
+ absl::StatusOr<URI> uri = URI::Parse(uri_str);
914
+ if (!uri.ok()) {
915
+ gpr_log(GPR_ERROR, "%s", uri.status().ToString().c_str());
916
+ GPR_ASSERT(uri.ok());
917
+ }
918
+ if (!grpc_parse_uri(*uri, addr)) memset(addr, 0, sizeof(*addr));
935
919
  }
936
920
 
937
921
  } // namespace
@@ -30,7 +30,6 @@
30
30
  #include "src/core/lib/channel/channel_stack.h"
31
31
  #include "src/core/lib/gpr/time_precise.h"
32
32
  #include "src/core/lib/gprpp/arena.h"
33
- #include "src/core/lib/gprpp/map.h"
34
33
  #include "src/core/lib/gprpp/ref_counted.h"
35
34
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
36
35
  #include "src/core/lib/gprpp/sync.h"
@@ -89,7 +88,7 @@ class ConnectedSubchannel : public RefCounted<ConnectedSubchannel> {
89
88
  return channelz_subchannel_.get();
90
89
  }
91
90
 
92
- size_t GetInitialCallSizeEstimate(size_t parent_data_size) const;
91
+ size_t GetInitialCallSizeEstimate() const;
93
92
 
94
93
  private:
95
94
  grpc_channel_stack* channel_stack_;
@@ -111,18 +110,12 @@ class SubchannelCall {
111
110
  Arena* arena;
112
111
  grpc_call_context_element* context;
113
112
  CallCombiner* call_combiner;
114
- size_t parent_data_size;
115
113
  };
116
114
  static RefCountedPtr<SubchannelCall> Create(Args args, grpc_error** error);
117
115
 
118
116
  // Continues processing a transport stream op batch.
119
117
  void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
120
118
 
121
- // Returns a pointer to the parent data associated with the subchannel call.
122
- // The data will be of the size specified in \a parent_data_size field of
123
- // the args passed to \a ConnectedSubchannel::CreateCall().
124
- void* GetParentData();
125
-
126
119
  // Returns the call stack of the subchannel call.
127
120
  grpc_call_stack* GetCallStack();
128
121
 
@@ -139,8 +132,6 @@ class SubchannelCall {
139
132
  void Unref();
140
133
  void Unref(const DebugLocation& location, const char* reason);
141
134
 
142
- static void Destroy(void* arg, grpc_error* error);
143
-
144
135
  private:
145
136
  // Allow RefCountedPtr<> to access IncrementRefCount().
146
137
  template <typename T>
@@ -159,6 +150,8 @@ class SubchannelCall {
159
150
  void IncrementRefCount();
160
151
  void IncrementRefCount(const DebugLocation& location, const char* reason);
161
152
 
153
+ static void Destroy(void* arg, grpc_error* error);
154
+
162
155
  RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
163
156
  grpc_closure* after_call_stack_destroy_ = nullptr;
164
157
  // State needed to support channelz interception of recv trailing metadata.
@@ -257,7 +250,7 @@ class Subchannel {
257
250
  // service name.
258
251
  // If the return value is GRPC_CHANNEL_READY, also sets *connected_subchannel.
259
252
  grpc_connectivity_state CheckConnectivityState(
260
- const char* health_check_service_name,
253
+ const absl::optional<std::string>& health_check_service_name,
261
254
  RefCountedPtr<ConnectedSubchannel>* connected_subchannel);
262
255
 
263
256
  // Starts watching the subchannel's connectivity state.
@@ -270,13 +263,14 @@ class Subchannel {
270
263
  // destroyed or when CancelConnectivityStateWatch() is called.
271
264
  void WatchConnectivityState(
272
265
  grpc_connectivity_state initial_state,
273
- grpc_core::UniquePtr<char> health_check_service_name,
266
+ const absl::optional<std::string>& health_check_service_name,
274
267
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
275
268
 
276
269
  // Cancels a connectivity state watch.
277
270
  // If the watcher has already been destroyed, this is a no-op.
278
- void CancelConnectivityStateWatch(const char* health_check_service_name,
279
- ConnectivityStateWatcherInterface* watcher);
271
+ void CancelConnectivityStateWatch(
272
+ const absl::optional<std::string>& health_check_service_name,
273
+ ConnectivityStateWatcherInterface* watcher);
280
274
 
281
275
  // Attempt to connect to the backend. Has no effect if already connected.
282
276
  void AttemptToConnect();
@@ -340,9 +334,9 @@ class Subchannel {
340
334
  public:
341
335
  void AddWatcherLocked(
342
336
  Subchannel* subchannel, grpc_connectivity_state initial_state,
343
- grpc_core::UniquePtr<char> health_check_service_name,
337
+ const std::string& health_check_service_name,
344
338
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
345
- void RemoveWatcherLocked(const char* health_check_service_name,
339
+ void RemoveWatcherLocked(const std::string& health_check_service_name,
346
340
  ConnectivityStateWatcherInterface* watcher);
347
341
 
348
342
  // Notifies the watcher when the subchannel's state changes.
@@ -350,14 +344,14 @@ class Subchannel {
350
344
  const absl::Status& status);
351
345
 
352
346
  grpc_connectivity_state CheckConnectivityStateLocked(
353
- Subchannel* subchannel, const char* health_check_service_name);
347
+ Subchannel* subchannel, const std::string& health_check_service_name);
354
348
 
355
349
  void ShutdownLocked();
356
350
 
357
351
  private:
358
352
  class HealthWatcher;
359
353
 
360
- std::map<const char*, OrphanablePtr<HealthWatcher>, StringLess> map_;
354
+ std::map<std::string, OrphanablePtr<HealthWatcher>> map_;
361
355
  };
362
356
 
363
357
  class ConnectedSubchannelStateWatcher;