grpc 1.47.0-x86_64-linux → 1.49.0.pre1-x86_64-linux

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 (1059) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +183 -62
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +37 -25
  5. data/include/grpc/event_engine/slice_buffer.h +8 -2
  6. data/include/grpc/grpc.h +3 -3
  7. data/include/grpc/impl/codegen/compression_types.h +2 -1
  8. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  9. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  10. data/include/grpc/impl/codegen/grpc_types.h +5 -9
  11. data/include/grpc/impl/codegen/port_platform.h +2 -7
  12. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  13. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +20 -8
  14. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -2
  15. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  16. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
  18. data/src/core/ext/filters/client_channel/client_channel.cc +164 -261
  19. data/src/core/ext/filters/client_channel/client_channel.h +34 -12
  20. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
  21. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
  22. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  23. data/src/core/ext/filters/client_channel/config_selector.h +13 -5
  24. data/src/core/ext/filters/client_channel/connector.h +5 -6
  25. data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
  26. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  27. data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
  28. data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
  29. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
  31. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +170 -164
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +13 -4
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
  39. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
  40. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +200 -96
  42. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
  43. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +121 -131
  44. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +153 -116
  45. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +220 -181
  46. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
  47. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +110 -119
  48. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +133 -117
  49. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +97 -87
  50. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +114 -131
  51. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
  52. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +84 -102
  53. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +64 -76
  54. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +172 -103
  55. data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
  56. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +18 -16
  57. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
  58. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -9
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +434 -148
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +179 -103
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
  63. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -18
  64. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -18
  65. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
  66. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +16 -18
  67. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +4 -5
  68. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
  69. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
  70. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +181 -175
  71. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  72. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +39 -32
  73. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
  74. data/src/core/ext/filters/client_channel/retry_filter.cc +35 -43
  75. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  76. data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
  77. data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
  78. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +7 -7
  79. data/src/core/ext/filters/client_channel/subchannel.cc +101 -138
  80. data/src/core/ext/filters/client_channel/subchannel.h +14 -30
  81. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
  82. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  83. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
  84. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +15 -101
  85. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
  86. data/src/core/ext/filters/deadline/deadline_filter.cc +18 -13
  87. data/src/core/ext/filters/deadline/deadline_filter.h +8 -2
  88. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -3
  89. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -4
  90. data/src/core/ext/filters/fault_injection/service_config_parser.cc +19 -11
  91. data/src/core/ext/filters/fault_injection/service_config_parser.h +19 -6
  92. data/src/core/ext/filters/http/client/http_client_filter.cc +17 -7
  93. data/src/core/ext/filters/http/client/http_client_filter.h +9 -2
  94. data/src/core/ext/filters/http/client_authority_filter.cc +11 -11
  95. data/src/core/ext/filters/http/client_authority_filter.h +6 -3
  96. data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
  97. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
  98. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  99. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
  100. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  101. data/src/core/ext/filters/http/server/http_server_filter.cc +17 -11
  102. data/src/core/ext/filters/http/server/http_server_filter.h +7 -2
  103. data/src/core/ext/filters/message_size/message_size_filter.cc +37 -21
  104. data/src/core/ext/filters/message_size/message_size_filter.h +13 -3
  105. data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
  106. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  107. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +25 -10
  108. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +15 -5
  109. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  110. data/src/core/ext/filters/server_config_selector/server_config_selector.h +14 -0
  111. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +23 -5
  112. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  113. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +39 -66
  114. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +77 -104
  115. data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
  116. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +320 -635
  117. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -3
  118. data/src/core/ext/transport/chttp2/transport/flow_control.cc +207 -262
  119. data/src/core/ext/transport/chttp2/transport/flow_control.h +177 -289
  120. data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
  121. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
  122. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
  123. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
  124. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
  125. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
  126. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
  128. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -16
  130. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
  131. data/src/core/ext/transport/chttp2/transport/internal.h +11 -112
  132. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
  133. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
  134. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
  135. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  136. data/src/core/ext/transport/inproc/inproc_transport.cc +124 -154
  137. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  138. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  139. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  140. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
  141. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
  142. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  143. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  144. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  145. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  146. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  147. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  148. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  149. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  150. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  151. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  152. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  153. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  154. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  155. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  156. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  157. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  158. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  159. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  160. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  161. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  162. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
  163. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
  164. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  165. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  166. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
  167. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
  168. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  169. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  170. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  171. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  172. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  173. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
  176. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  177. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  178. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  180. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  181. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  205. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  206. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  207. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
  208. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
  209. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  210. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  211. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  212. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  213. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
  214. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
  215. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  216. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  217. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
  218. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
  219. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  220. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  221. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  222. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  223. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  224. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  225. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  226. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  227. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
  228. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
  229. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
  230. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
  231. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
  232. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
  233. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  234. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  235. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  236. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  237. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
  238. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
  239. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  240. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  241. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  242. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  243. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  244. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  245. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  246. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  247. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  248. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  249. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  250. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  251. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  252. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  253. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  254. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  255. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  256. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  257. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
  258. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
  259. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  260. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  261. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  262. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  263. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  264. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  265. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  266. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  267. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
  268. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
  269. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
  270. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
  271. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  272. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -0
  273. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  274. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  275. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  276. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  277. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  278. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  279. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
  280. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
  281. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  282. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  283. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  284. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  285. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
  286. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
  287. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  288. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  289. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  290. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  291. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  292. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  293. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  294. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  295. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  296. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  297. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  298. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  299. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  300. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  301. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  302. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  303. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  304. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  305. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  306. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  307. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  308. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  309. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  310. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  311. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  312. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  313. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  314. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  315. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  316. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  317. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  318. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  319. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  320. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  321. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  322. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  323. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  324. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  325. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  326. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  327. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  328. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  329. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  330. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  331. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  332. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  333. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  334. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  335. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  336. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  337. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  338. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  339. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  340. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  341. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  342. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  343. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  344. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  345. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  346. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  347. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  348. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  349. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  350. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  351. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  352. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  353. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  354. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  355. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  356. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  357. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  358. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  359. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  360. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  361. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  362. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  363. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  364. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  365. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  366. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  367. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  368. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  369. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  370. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  371. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  372. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  373. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  374. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  375. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  376. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  377. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  378. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  379. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  380. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  381. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  382. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  383. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  384. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  385. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  386. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  387. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  388. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  389. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  390. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  391. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  392. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  393. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  394. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  395. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  396. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  397. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  398. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  399. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  400. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
  401. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
  402. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  403. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  404. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  405. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  406. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  407. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  408. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  409. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
  410. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  411. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  412. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  413. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  414. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  415. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  416. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  417. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  418. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
  419. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
  420. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
  421. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  422. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
  423. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  424. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  425. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
  426. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  427. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
  428. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
  429. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
  430. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  431. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  432. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  433. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  434. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  435. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  436. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  437. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
  438. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  439. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
  440. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  441. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  442. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  443. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  444. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  445. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  446. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  447. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  448. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  449. data/src/core/ext/xds/certificate_provider_store.cc +2 -0
  450. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  451. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  452. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  453. data/src/core/ext/xds/upb_utils.h +0 -22
  454. data/src/core/ext/xds/xds_api.cc +68 -103
  455. data/src/core/ext/xds/xds_api.h +30 -32
  456. data/src/core/ext/xds/xds_bootstrap.cc +69 -69
  457. data/src/core/ext/xds/xds_bootstrap.h +37 -19
  458. data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
  459. data/src/core/ext/xds/xds_certificate_provider.h +25 -1
  460. data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -4
  461. data/src/core/ext/xds/xds_channel_stack_modifier.h +13 -1
  462. data/src/core/ext/xds/xds_client.cc +583 -1193
  463. data/src/core/ext/xds/xds_client.h +28 -42
  464. data/src/core/ext/xds/xds_client_grpc.cc +291 -0
  465. data/src/core/ext/xds/xds_client_grpc.h +102 -0
  466. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  467. data/src/core/ext/xds/xds_client_stats.h +4 -3
  468. data/src/core/ext/xds/xds_cluster.cc +107 -107
  469. data/src/core/ext/xds/xds_cluster.h +14 -5
  470. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +23 -18
  471. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -8
  472. data/src/core/ext/xds/xds_common_types.cc +161 -123
  473. data/src/core/ext/xds/xds_common_types.h +16 -9
  474. data/src/core/ext/xds/xds_endpoint.cc +95 -85
  475. data/src/core/ext/xds/xds_endpoint.h +16 -8
  476. data/src/core/ext/xds/xds_http_fault_filter.cc +11 -16
  477. data/src/core/ext/xds/xds_http_fault_filter.h +5 -3
  478. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  479. data/src/core/ext/xds/xds_http_filters.h +5 -5
  480. data/src/core/ext/xds/xds_http_rbac_filter.cc +52 -55
  481. data/src/core/ext/xds/xds_http_rbac_filter.h +8 -1
  482. data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
  483. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  484. data/src/core/ext/xds/xds_listener.cc +355 -307
  485. data/src/core/ext/xds/xds_listener.h +13 -4
  486. data/src/core/ext/xds/xds_resource_type.h +16 -5
  487. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  488. data/src/core/ext/xds/xds_route_config.cc +215 -184
  489. data/src/core/ext/xds/xds_route_config.h +39 -16
  490. data/src/core/ext/xds/xds_routing.cc +19 -6
  491. data/src/core/ext/xds/xds_routing.h +12 -9
  492. data/src/core/ext/xds/xds_server_config_fetcher.cc +124 -81
  493. data/src/core/ext/xds/xds_transport.h +86 -0
  494. data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
  495. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  496. data/src/core/lib/address_utils/parse_address.cc +24 -25
  497. data/src/core/lib/address_utils/parse_address.h +11 -7
  498. data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
  499. data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
  500. data/src/core/lib/avl/avl.h +47 -25
  501. data/src/core/lib/backoff/backoff.cc +1 -1
  502. data/src/core/lib/backoff/backoff.h +1 -1
  503. data/src/core/lib/channel/call_tracer.h +4 -4
  504. data/src/core/lib/channel/channel_args.cc +88 -19
  505. data/src/core/lib/channel/channel_args.h +114 -62
  506. data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
  507. data/src/core/lib/channel/channel_fwd.h +26 -0
  508. data/src/core/lib/channel/channel_stack.cc +4 -5
  509. data/src/core/lib/channel/channel_stack.h +1 -11
  510. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  511. data/src/core/lib/channel/channel_stack_builder.h +4 -7
  512. data/src/core/lib/channel/channel_stack_builder_impl.cc +3 -5
  513. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
  514. data/src/core/lib/channel/channelz.cc +28 -37
  515. data/src/core/lib/channel/channelz.h +11 -3
  516. data/src/core/lib/channel/channelz_registry.cc +4 -5
  517. data/src/core/lib/channel/connected_channel.cc +1 -0
  518. data/src/core/lib/channel/connected_channel.h +1 -0
  519. data/src/core/lib/channel/promise_based_filter.cc +11 -5
  520. data/src/core/lib/channel/promise_based_filter.h +2 -1
  521. data/src/core/lib/compression/compression.cc +6 -1
  522. data/src/core/lib/compression/compression_internal.cc +3 -6
  523. data/src/core/lib/compression/compression_internal.h +3 -2
  524. data/src/core/lib/compression/message_compress.cc +3 -1
  525. data/src/core/lib/compression/message_compress.h +2 -3
  526. data/src/core/lib/config/core_configuration.h +48 -35
  527. data/src/core/lib/debug/stats.cc +15 -18
  528. data/src/core/lib/debug/stats.h +13 -4
  529. data/src/core/lib/debug/stats_data.cc +2 -1
  530. data/src/core/lib/debug/stats_data.h +0 -4
  531. data/src/core/lib/debug/trace.h +13 -12
  532. data/src/core/lib/event_engine/default_event_engine.cc +71 -0
  533. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +6 -10
  534. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
  535. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  536. data/src/core/lib/event_engine/executor/executor.h +38 -0
  537. data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
  538. data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
  539. data/src/core/lib/event_engine/forkable.cc +98 -0
  540. data/src/core/lib/event_engine/forkable.h +61 -0
  541. data/src/core/lib/event_engine/poller.h +54 -0
  542. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +142 -0
  543. data/src/core/lib/event_engine/{iomgr_engine.h → posix_engine/posix_engine.h} +35 -32
  544. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  545. data/src/core/lib/event_engine/posix_engine/timer.h +193 -0
  546. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  547. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  548. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +290 -0
  549. data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
  550. data/src/core/lib/event_engine/promise.h +78 -0
  551. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  552. data/src/core/lib/event_engine/thread_pool.cc +158 -0
  553. data/src/core/lib/event_engine/thread_pool.h +81 -0
  554. data/src/core/lib/event_engine/utils.cc +49 -0
  555. data/src/core/lib/event_engine/utils.h +40 -0
  556. data/src/core/lib/event_engine/windows/iocp.cc +149 -0
  557. data/src/core/lib/event_engine/windows/iocp.h +68 -0
  558. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  559. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  560. data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
  561. data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
  562. data/src/core/lib/gpr/time.cc +11 -9
  563. data/src/core/lib/gpr/time_posix.cc +6 -9
  564. data/src/core/lib/gpr/time_windows.cc +10 -7
  565. data/src/core/lib/gpr/useful.h +29 -0
  566. data/src/core/lib/gprpp/bitset.h +3 -13
  567. data/src/core/lib/gprpp/debug_location.h +39 -7
  568. data/src/core/lib/gprpp/manual_constructor.h +0 -68
  569. data/src/core/lib/gprpp/no_destruct.h +94 -0
  570. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
  571. data/src/core/lib/gprpp/status_helper.cc +45 -30
  572. data/src/core/lib/gprpp/table.h +0 -1
  573. data/src/core/lib/gprpp/time.cc +8 -0
  574. data/src/core/lib/gprpp/time.h +4 -0
  575. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  576. data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
  577. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  578. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
  579. data/src/core/lib/http/format_request.cc +5 -4
  580. data/src/core/lib/http/format_request.h +1 -1
  581. data/src/core/lib/http/httpcli.cc +29 -35
  582. data/src/core/lib/http/httpcli.h +19 -3
  583. data/src/core/lib/http/httpcli_security_connector.cc +26 -14
  584. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  585. data/src/core/lib/http/parser.cc +6 -7
  586. data/src/core/lib/http/parser.h +3 -0
  587. data/src/core/lib/iomgr/call_combiner.cc +2 -28
  588. data/src/core/lib/iomgr/closure.h +0 -9
  589. data/src/core/lib/iomgr/combiner.cc +0 -20
  590. data/src/core/lib/iomgr/endpoint.h +1 -1
  591. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
  592. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  593. data/src/core/lib/iomgr/error.cc +6 -777
  594. data/src/core/lib/iomgr/error.h +6 -147
  595. data/src/core/lib/iomgr/error_cfstream.cc +0 -5
  596. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  597. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  598. data/src/core/lib/iomgr/ev_poll_posix.cc +94 -61
  599. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  600. data/src/core/lib/iomgr/ev_posix.cc +54 -92
  601. data/src/core/lib/iomgr/ev_posix.h +5 -3
  602. data/src/core/lib/iomgr/exec_ctx.cc +0 -12
  603. data/src/core/lib/iomgr/executor.cc +0 -10
  604. data/src/core/lib/iomgr/executor.h +0 -3
  605. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  606. data/src/core/lib/iomgr/iomgr.cc +7 -0
  607. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  608. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  609. data/src/core/lib/iomgr/load_file.cc +1 -1
  610. data/src/core/lib/iomgr/lockfree_event.cc +0 -17
  611. data/src/core/lib/iomgr/port.h +3 -0
  612. data/src/core/lib/iomgr/resolve_address.h +29 -6
  613. data/src/core/lib/iomgr/resolve_address_posix.cc +39 -9
  614. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  615. data/src/core/lib/iomgr/resolve_address_windows.cc +41 -11
  616. data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
  617. data/src/core/lib/iomgr/socket_windows.h +0 -2
  618. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  619. data/src/core/lib/iomgr/tcp_client.h +24 -13
  620. data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
  621. data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
  622. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  623. data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
  624. data/src/core/lib/iomgr/tcp_posix.cc +207 -33
  625. data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
  626. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
  627. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  628. data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
  629. data/src/core/lib/iomgr/tcp_windows.cc +5 -5
  630. data/src/core/lib/iomgr/timer_generic.cc +6 -8
  631. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  632. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  633. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  634. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  635. data/src/core/lib/json/json.h +19 -22
  636. data/src/core/lib/json/json_args.h +34 -0
  637. data/src/core/lib/json/json_object_loader.cc +233 -0
  638. data/src/core/lib/json/json_object_loader.h +618 -0
  639. data/src/core/lib/json/json_reader.cc +86 -62
  640. data/src/core/lib/json/json_util.cc +8 -36
  641. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
  642. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -31
  643. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  644. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +48 -73
  645. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
  646. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +16 -24
  647. data/src/core/lib/matchers/matchers.cc +6 -3
  648. data/src/core/lib/matchers/matchers.h +2 -0
  649. data/src/core/lib/promise/activity.cc +0 -1
  650. data/src/core/lib/promise/activity.h +56 -14
  651. data/src/core/lib/promise/arena_promise.h +84 -81
  652. data/src/core/lib/promise/context.h +0 -1
  653. data/src/core/lib/promise/detail/basic_seq.h +43 -23
  654. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  655. data/src/core/lib/promise/loop.h +1 -0
  656. data/src/core/lib/promise/map.h +0 -1
  657. data/src/core/lib/promise/promise.h +1 -0
  658. data/src/core/lib/promise/seq.h +25 -4
  659. data/src/core/lib/promise/sleep.cc +43 -42
  660. data/src/core/lib/promise/sleep.h +31 -28
  661. data/src/core/lib/promise/try_seq.h +26 -6
  662. data/src/core/lib/resolver/resolver.cc +0 -42
  663. data/src/core/lib/resolver/resolver.h +5 -12
  664. data/src/core/lib/resolver/resolver_factory.h +6 -4
  665. data/src/core/lib/resolver/resolver_registry.cc +3 -10
  666. data/src/core/lib/resolver/resolver_registry.h +12 -2
  667. data/src/core/lib/resolver/server_address.cc +19 -15
  668. data/src/core/lib/resolver/server_address.h +11 -8
  669. data/src/core/lib/resource_quota/api.cc +1 -1
  670. data/src/core/lib/resource_quota/arena.cc +21 -1
  671. data/src/core/lib/resource_quota/arena.h +24 -2
  672. data/src/core/lib/resource_quota/memory_quota.cc +171 -73
  673. data/src/core/lib/resource_quota/memory_quota.h +109 -42
  674. data/src/core/lib/resource_quota/periodic_update.cc +79 -0
  675. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  676. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  677. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  678. data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
  679. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  680. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  681. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  682. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -1
  683. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +13 -2
  684. data/src/core/lib/security/authorization/matchers.cc +20 -9
  685. data/src/core/lib/security/authorization/matchers.h +7 -0
  686. data/src/core/lib/security/authorization/rbac_policy.cc +4 -0
  687. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  688. data/src/core/lib/security/context/security_context.cc +5 -2
  689. data/src/core/lib/security/context/security_context.h +14 -2
  690. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  691. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
  692. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  693. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  694. data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
  695. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  696. data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
  697. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  698. data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -9
  699. data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -5
  700. data/src/core/lib/security/credentials/credentials.cc +4 -8
  701. data/src/core/lib/security/credentials/credentials.h +26 -20
  702. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +45 -20
  703. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
  704. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  705. data/src/core/lib/security/credentials/external/external_account_credentials.cc +53 -29
  706. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  707. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +15 -8
  708. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  709. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +23 -9
  710. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  711. data/src/core/lib/security/credentials/fake/fake_credentials.cc +10 -17
  712. data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
  713. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  714. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +55 -35
  715. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -3
  716. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -3
  717. data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
  718. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
  719. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +7 -3
  720. data/src/core/lib/security/credentials/jwt/json_token.cc +17 -5
  721. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  722. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +12 -10
  723. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
  724. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +37 -14
  725. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  726. data/src/core/lib/security/credentials/local/local_credentials.cc +7 -7
  727. data/src/core/lib/security/credentials/local/local_credentials.h +9 -3
  728. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +41 -29
  729. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
  730. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
  731. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
  732. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -21
  733. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -3
  734. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  735. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  736. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
  737. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -4
  738. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
  739. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
  740. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  741. data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -26
  742. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -4
  743. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  744. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  745. data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -31
  746. data/src/core/lib/security/credentials/xds/xds_credentials.h +16 -2
  747. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -18
  748. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  749. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +42 -38
  750. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
  751. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +13 -4
  752. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -5
  753. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  754. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  755. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  756. data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -13
  757. data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
  758. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  759. data/src/core/lib/security/security_connector/security_connector.h +23 -9
  760. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +21 -8
  761. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  762. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  763. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  764. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  765. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +25 -17
  766. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -7
  767. data/src/core/lib/security/transport/auth_filters.h +8 -1
  768. data/src/core/lib/security/transport/client_auth_filter.cc +19 -11
  769. data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
  770. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  771. data/src/core/lib/security/transport/security_handshaker.cc +70 -49
  772. data/src/core/lib/security/transport/security_handshaker.h +6 -1
  773. data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
  774. data/src/core/lib/security/util/json_util.cc +3 -2
  775. data/src/core/lib/security/util/json_util.h +0 -2
  776. data/src/core/lib/service_config/service_config.h +11 -0
  777. data/src/core/lib/service_config/service_config_call_data.h +2 -1
  778. data/src/core/lib/service_config/service_config_impl.cc +98 -97
  779. data/src/core/lib/service_config/service_config_impl.h +12 -16
  780. data/src/core/lib/service_config/service_config_parser.cc +26 -29
  781. data/src/core/lib/service_config/service_config_parser.h +10 -22
  782. data/src/core/lib/slice/percent_encoding.cc +4 -13
  783. data/src/core/lib/slice/slice.cc +10 -4
  784. data/src/core/lib/slice/slice_buffer.cc +30 -1
  785. data/src/core/lib/slice/slice_buffer.h +37 -6
  786. data/src/core/lib/slice/slice_string_helpers.cc +0 -20
  787. data/src/core/lib/slice/slice_string_helpers.h +0 -4
  788. data/src/core/lib/surface/call.cc +61 -117
  789. data/src/core/lib/surface/call.h +5 -1
  790. data/src/core/lib/surface/channel.cc +6 -6
  791. data/src/core/lib/surface/channel.h +3 -1
  792. data/src/core/lib/surface/channel_ping.cc +1 -1
  793. data/src/core/lib/surface/completion_queue.cc +15 -16
  794. data/src/core/lib/surface/completion_queue.h +2 -4
  795. data/src/core/lib/surface/init.cc +2 -7
  796. data/src/core/lib/surface/lame_client.cc +3 -4
  797. data/src/core/lib/surface/lame_client.h +2 -2
  798. data/src/core/lib/surface/server.cc +21 -20
  799. data/src/core/lib/surface/server.h +11 -8
  800. data/src/core/lib/surface/validate_metadata.cc +5 -15
  801. data/src/core/lib/surface/version.cc +2 -2
  802. data/src/core/lib/transport/connectivity_state.cc +0 -1
  803. data/src/core/lib/transport/connectivity_state.h +1 -1
  804. data/src/core/lib/transport/error_utils.cc +9 -39
  805. data/src/core/lib/transport/handshaker.cc +10 -12
  806. data/src/core/lib/transport/handshaker.h +4 -5
  807. data/src/core/lib/transport/handshaker_factory.h +2 -3
  808. data/src/core/lib/transport/handshaker_registry.cc +2 -1
  809. data/src/core/lib/transport/handshaker_registry.h +2 -4
  810. data/src/core/lib/transport/http_connect_handshaker.cc +20 -20
  811. data/src/core/lib/transport/metadata_batch.cc +5 -0
  812. data/src/core/lib/transport/metadata_batch.h +52 -7
  813. data/src/core/lib/transport/parsed_metadata.h +0 -1
  814. data/src/core/lib/transport/tcp_connect_handshaker.cc +14 -20
  815. data/src/core/lib/transport/transport.cc +0 -3
  816. data/src/core/lib/transport/transport.h +20 -21
  817. data/src/core/lib/transport/transport_fwd.h +20 -0
  818. data/src/core/lib/transport/transport_impl.h +1 -0
  819. data/src/core/lib/transport/transport_op_string.cc +9 -9
  820. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
  821. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  822. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +15 -8
  823. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
  824. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  825. data/src/core/tsi/fake_transport_security.cc +66 -31
  826. data/src/core/tsi/fake_transport_security.h +6 -0
  827. data/src/core/tsi/local_transport_security.cc +9 -5
  828. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
  829. data/src/core/tsi/ssl_transport_security.cc +48 -24
  830. data/src/core/tsi/transport_security.cc +18 -6
  831. data/src/core/tsi/transport_security.h +2 -1
  832. data/src/core/tsi/transport_security_grpc.cc +3 -2
  833. data/src/core/tsi/transport_security_grpc.h +5 -2
  834. data/src/core/tsi/transport_security_interface.h +17 -5
  835. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  836. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  837. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  838. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  839. data/src/ruby/ext/grpc/extconf.rb +51 -18
  840. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  841. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  842. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
  843. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  844. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  845. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  846. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  847. data/src/ruby/lib/grpc/errors.rb +1 -1
  848. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  849. data/src/ruby/lib/grpc/version.rb +1 -1
  850. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  851. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  852. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  853. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  854. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  855. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  856. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  857. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  858. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  859. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  860. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  861. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  862. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  863. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  864. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  865. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  866. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  867. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  868. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  869. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  870. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  871. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  872. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  873. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  874. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  875. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  876. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  877. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  878. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  879. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  880. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  881. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
  882. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  883. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  884. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  885. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  886. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  887. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  888. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  889. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  890. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  891. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  892. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  893. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  894. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  895. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  896. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  897. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  898. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  899. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  900. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  901. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  902. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  903. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  904. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  905. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  906. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  907. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  908. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  909. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  910. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  911. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  912. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  913. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  914. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  915. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  916. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  917. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  918. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  919. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  920. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  921. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  922. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  923. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  924. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  925. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  926. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  927. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  928. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  929. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  930. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  931. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  932. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  933. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  934. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  935. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  936. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  937. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  938. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  939. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  940. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  941. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  942. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  943. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  944. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  945. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  946. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  947. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  948. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  949. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  950. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  951. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  952. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  953. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  954. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  955. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  956. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  957. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  958. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  959. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  960. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  961. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  962. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  963. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  964. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  965. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  966. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  967. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  968. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  969. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  970. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  971. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  972. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  973. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  974. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  975. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  976. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  977. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  978. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  979. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  980. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  981. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  982. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  983. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  984. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  985. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  986. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  987. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  988. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  989. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  990. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  991. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  992. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  993. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  994. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  995. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  996. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  997. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  998. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  999. data/third_party/upb/upb/arena.c +277 -0
  1000. data/third_party/upb/upb/arena.h +225 -0
  1001. data/third_party/upb/upb/array.c +114 -0
  1002. data/third_party/upb/upb/array.h +83 -0
  1003. data/third_party/upb/upb/collections.h +36 -0
  1004. data/third_party/upb/upb/decode.c +161 -65
  1005. data/third_party/upb/upb/decode.h +1 -0
  1006. data/third_party/upb/upb/decode_fast.c +1 -1
  1007. data/third_party/upb/upb/def.c +10 -2
  1008. data/third_party/upb/upb/def.h +8 -1
  1009. data/third_party/upb/upb/def.hpp +7 -4
  1010. data/third_party/upb/upb/encode.c +29 -20
  1011. data/third_party/upb/upb/encode.h +16 -6
  1012. data/third_party/upb/upb/extension_registry.c +93 -0
  1013. data/third_party/upb/upb/extension_registry.h +84 -0
  1014. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  1015. data/third_party/upb/upb/internal/table.h +385 -0
  1016. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  1017. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  1018. data/third_party/upb/upb/json_decode.c +1512 -0
  1019. data/third_party/upb/upb/json_decode.h +47 -0
  1020. data/third_party/upb/upb/json_encode.c +7 -3
  1021. data/third_party/upb/upb/json_encode.h +6 -3
  1022. data/third_party/upb/upb/map.c +108 -0
  1023. data/third_party/upb/upb/map.h +117 -0
  1024. data/third_party/upb/upb/message_value.h +66 -0
  1025. data/third_party/upb/upb/mini_table.c +1147 -0
  1026. data/third_party/upb/upb/mini_table.h +189 -0
  1027. data/third_party/upb/upb/mini_table.hpp +112 -0
  1028. data/third_party/upb/upb/msg.c +2 -62
  1029. data/third_party/upb/upb/msg.h +2 -45
  1030. data/third_party/upb/upb/msg_internal.h +28 -22
  1031. data/third_party/upb/upb/port_def.inc +2 -1
  1032. data/third_party/upb/upb/port_undef.inc +1 -0
  1033. data/third_party/upb/upb/reflection.c +2 -159
  1034. data/third_party/upb/upb/reflection.h +2 -112
  1035. data/third_party/upb/upb/status.c +86 -0
  1036. data/third_party/upb/upb/status.h +66 -0
  1037. data/third_party/upb/upb/table.c +2 -2
  1038. data/third_party/upb/upb/table_internal.h +3 -352
  1039. data/third_party/upb/upb/text_encode.c +3 -2
  1040. data/third_party/upb/upb/upb.c +4 -290
  1041. data/third_party/upb/upb/upb.h +7 -196
  1042. metadata +113 -37
  1043. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  1044. data/src/core/lib/event_engine/event_engine.cc +0 -62
  1045. data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
  1046. data/src/core/lib/iomgr/error_internal.h +0 -66
  1047. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  1048. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  1049. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  1050. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  1051. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  1052. data/src/core/lib/promise/detail/switch.h +0 -1455
  1053. data/src/core/lib/slice/slice_split.cc +0 -103
  1054. data/src/core/lib/slice/slice_split.h +0 -36
  1055. data/src/core/lib/transport/byte_stream.cc +0 -165
  1056. data/src/core/lib/transport/byte_stream.h +0 -170
  1057. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
  1058. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
  1059. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -55,9 +55,10 @@
55
55
  #include "src/core/lib/promise/latch.h"
56
56
  #include "src/core/lib/resource_quota/arena.h"
57
57
  #include "src/core/lib/slice/slice.h"
58
- #include "src/core/lib/transport/byte_stream.h"
58
+ #include "src/core/lib/slice/slice_buffer.h"
59
59
  #include "src/core/lib/transport/connectivity_state.h"
60
60
  #include "src/core/lib/transport/metadata_batch.h"
61
+ #include "src/core/lib/transport/transport_fwd.h"
61
62
 
62
63
  struct grpc_transport_stream_op_batch_payload;
63
64
 
@@ -69,6 +70,17 @@ struct grpc_transport_stream_op_batch_payload;
69
70
 
70
71
  #define GRPC_ARG_TRANSPORT "grpc.internal.transport"
71
72
 
73
+ /** Internal bit flag for grpc_begin_message's \a flags signaling the use of
74
+ * compression for the message. (Does not apply for stream compression.) */
75
+ #define GRPC_WRITE_INTERNAL_COMPRESS (0x80000000u)
76
+ /** Internal bit flag for determining whether the message was compressed and had
77
+ * to be decompressed by the message_decompress filter. (Does not apply for
78
+ * stream compression.) */
79
+ #define GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED (0x40000000u)
80
+ /** Mask of all valid internal flags. */
81
+ #define GRPC_WRITE_INTERNAL_USED_MASK \
82
+ (GRPC_WRITE_INTERNAL_COMPRESS | GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED)
83
+
72
84
  namespace grpc_core {
73
85
  // TODO(ctiller): eliminate once MetadataHandle is constructable directly.
74
86
  namespace promise_filter_detail {
@@ -156,8 +168,6 @@ using NextPromiseFactory =
156
168
 
157
169
  /* forward declarations */
158
170
 
159
- typedef struct grpc_transport grpc_transport;
160
-
161
171
  /* grpc_stream doesn't actually exist. It's used as a typesafe
162
172
  opaque pointer for whatever data the transport wants to track
163
173
  for a stream. */
@@ -332,17 +342,8 @@ struct grpc_transport_stream_op_batch_payload {
332
342
  explicit grpc_transport_stream_op_batch_payload(
333
343
  grpc_call_context_element* context)
334
344
  : context(context) {}
335
- ~grpc_transport_stream_op_batch_payload() {
336
- // We don't really own `send_message`, so release ownership and let the
337
- // owner clean the data.
338
- (void)send_message.send_message.release();
339
- }
340
-
341
345
  struct {
342
346
  grpc_metadata_batch* send_initial_metadata = nullptr;
343
- /** Iff send_initial_metadata != NULL, flags associated with
344
- send_initial_metadata: a bitfield of GRPC_INITIAL_METADATA_xxx */
345
- uint32_t send_initial_metadata_flags = 0;
346
347
  // If non-NULL, will be set by the transport to the peer string (a char*).
347
348
  // The transport retains ownership of the string.
348
349
  // Note: This pointer may be used by the transport after the
@@ -366,7 +367,8 @@ struct grpc_transport_stream_op_batch_payload {
366
367
  // the op gets down to the transport) takes ownership.
367
368
  // The batch's on_complete will not be called until after the byte
368
369
  // stream is orphaned.
369
- grpc_core::OrphanablePtr<grpc_core::ByteStream> send_message;
370
+ grpc_core::SliceBuffer* send_message;
371
+ uint32_t flags = 0;
370
372
  // Set by the transport if the stream has been closed for writes. If this
371
373
  // is set and send message op is present, we set the operation to be a
372
374
  // failure without sending a cancel OP down the stack. This is so that the
@@ -383,10 +385,6 @@ struct grpc_transport_stream_op_batch_payload {
383
385
 
384
386
  struct {
385
387
  grpc_metadata_batch* recv_initial_metadata = nullptr;
386
- // Flags are used only on the server side. If non-null, will be set to
387
- // a bitfield of the GRPC_INITIAL_METADATA_xxx macros (e.g., to
388
- // indicate if the call is idempotent).
389
- uint32_t* recv_flags = nullptr;
390
388
  /** Should be enqueued when initial metadata is ready to be processed. */
391
389
  grpc_closure* recv_initial_metadata_ready = nullptr;
392
390
  // If not NULL, will be set to true if trailing metadata is
@@ -405,10 +403,11 @@ struct grpc_transport_stream_op_batch_payload {
405
403
  } recv_initial_metadata;
406
404
 
407
405
  struct {
408
- // Will be set by the transport to point to the byte stream
409
- // containing a received message.
410
- // Will be NULL if trailing metadata is received instead of a message.
411
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message = nullptr;
406
+ // Will be set by the transport to point to the byte stream containing a
407
+ // received message. Will be nullopt if trailing metadata is received
408
+ // instead of a message.
409
+ absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
410
+ uint32_t* flags = nullptr;
412
411
  // Was this recv_message failed for reasons other than a clean end-of-stream
413
412
  bool* call_failed_before_recv_message = nullptr;
414
413
  /** Should be enqueued when one message is ready to be processed. */
@@ -0,0 +1,20 @@
1
+ // Copyright 2022 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
16
+ #define GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
17
+
18
+ typedef struct grpc_transport grpc_transport;
19
+
20
+ #endif // GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
@@ -32,6 +32,7 @@
32
32
  #include "src/core/lib/promise/arena_promise.h"
33
33
  #include "src/core/lib/resource_quota/arena.h"
34
34
  #include "src/core/lib/transport/transport.h"
35
+ #include "src/core/lib/transport/transport_fwd.h"
35
36
 
36
37
  typedef struct grpc_transport_vtable {
37
38
  /* Memory required for a single stream element - this is allocated by upper
@@ -29,10 +29,11 @@
29
29
 
30
30
  #include <grpc/support/log.h>
31
31
 
32
+ #include "src/core/lib/channel/channel_fwd.h"
32
33
  #include "src/core/lib/channel/channel_stack.h"
33
34
  #include "src/core/lib/gprpp/orphanable.h"
34
35
  #include "src/core/lib/iomgr/error.h"
35
- #include "src/core/lib/transport/byte_stream.h"
36
+ #include "src/core/lib/slice/slice_buffer.h"
36
37
  #include "src/core/lib/transport/connectivity_state.h"
37
38
  #include "src/core/lib/transport/metadata_batch.h"
38
39
  #include "src/core/lib/transport/transport.h"
@@ -53,10 +54,9 @@ std::string grpc_transport_stream_op_batch_string(
53
54
 
54
55
  if (op->send_message) {
55
56
  if (op->payload->send_message.send_message != nullptr) {
56
- out.push_back(
57
- absl::StrFormat(" SEND_MESSAGE:flags=0x%08x:len=%d",
58
- op->payload->send_message.send_message->flags(),
59
- op->payload->send_message.send_message->length()));
57
+ out.push_back(absl::StrFormat(
58
+ " SEND_MESSAGE:flags=0x%08x:len=%d", op->payload->send_message.flags,
59
+ op->payload->send_message.send_message->Length()));
60
60
  } else {
61
61
  // This can happen when we check a batch after the transport has
62
62
  // processed and cleared the send_message op.
@@ -107,14 +107,14 @@ std::string grpc_transport_op_string(grpc_transport_op* op) {
107
107
  op->stop_connectivity_watch));
108
108
  }
109
109
 
110
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
110
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
111
111
  out.push_back(absl::StrCat(
112
112
  " DISCONNECT:", grpc_error_std_string(op->disconnect_with_error)));
113
113
  }
114
114
 
115
- if (op->goaway_error != GRPC_ERROR_NONE) {
116
- out.push_back(absl::StrCat(" SEND_GOAWAY:%s",
117
- grpc_error_std_string(op->goaway_error)));
115
+ if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
116
+ out.push_back(
117
+ absl::StrCat(" SEND_GOAWAY:", grpc_error_std_string(op->goaway_error)));
118
118
  }
119
119
 
120
120
  if (op->set_accept_stream) {
@@ -71,7 +71,8 @@ typedef struct alts_grpc_handshaker_client {
71
71
  * handshaker service. */
72
72
  grpc_byte_buffer* send_buffer = nullptr;
73
73
  grpc_byte_buffer* recv_buffer = nullptr;
74
- grpc_status_code status = GRPC_STATUS_OK;
74
+ // Used to inject a read failure from tests.
75
+ bool inject_read_failure = false;
75
76
  /* Initial metadata to be received from handshaker service. */
76
77
  grpc_metadata_array recv_initial_metadata;
77
78
  /* A callback function provided by an application to be invoked when response
@@ -106,6 +107,8 @@ typedef struct alts_grpc_handshaker_client {
106
107
  recv_message_result* pending_recv_message_result = nullptr;
107
108
  /* Maximum frame size used by frame protector. */
108
109
  size_t max_frame_size;
110
+ // If non-null, will be populated with an error string upon error.
111
+ std::string* error;
109
112
  } alts_grpc_handshaker_client;
110
113
 
111
114
  static void handshaker_client_send_buffer_destroy(
@@ -174,10 +177,11 @@ static void maybe_complete_tsi_next(
174
177
  }
175
178
 
176
179
  static void handle_response_done(alts_grpc_handshaker_client* client,
177
- tsi_result status,
180
+ tsi_result status, std::string error,
178
181
  const unsigned char* bytes_to_send,
179
182
  size_t bytes_to_send_size,
180
183
  tsi_handshaker_result* result) {
184
+ if (client->error != nullptr) *client->error = std::move(error);
181
185
  recv_message_result* p = grpc_core::Zalloc<recv_message_result>();
182
186
  p->status = status;
183
187
  p->bytes_to_send = bytes_to_send;
@@ -193,7 +197,6 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
193
197
  alts_grpc_handshaker_client* client =
194
198
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
195
199
  grpc_byte_buffer* recv_buffer = client->recv_buffer;
196
- grpc_status_code status = client->status;
197
200
  alts_tsi_handshaker* handshaker = client->handshaker;
198
201
  /* Invalid input check. */
199
202
  if (client->cb == nullptr) {
@@ -204,25 +207,34 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
204
207
  if (handshaker == nullptr) {
205
208
  gpr_log(GPR_ERROR,
206
209
  "handshaker is nullptr in alts_tsi_handshaker_handle_response()");
207
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
210
+ handle_response_done(
211
+ client, TSI_INTERNAL_ERROR,
212
+ "handshaker is nullptr in alts_tsi_handshaker_handle_response()",
213
+ nullptr, 0, nullptr);
208
214
  return;
209
215
  }
210
216
  /* TSI handshake has been shutdown. */
211
217
  if (alts_tsi_handshaker_has_shutdown(handshaker)) {
212
218
  gpr_log(GPR_INFO, "TSI handshake shutdown");
213
- handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN, nullptr, 0, nullptr);
219
+ handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN,
220
+ "TSI handshake shutdown", nullptr, 0, nullptr);
214
221
  return;
215
222
  }
216
- /* Failed grpc call check. */
217
- if (!is_ok || status != GRPC_STATUS_OK) {
218
- gpr_log(GPR_INFO, "grpc call made to handshaker service failed");
219
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
223
+ /* Check for failed grpc read. */
224
+ if (!is_ok || client->inject_read_failure) {
225
+ gpr_log(GPR_INFO, "read failed on grpc call to handshaker service");
226
+ handle_response_done(client, TSI_INTERNAL_ERROR,
227
+ "read failed on grpc call to handshaker service",
228
+ nullptr, 0, nullptr);
220
229
  return;
221
230
  }
222
231
  if (recv_buffer == nullptr) {
223
232
  gpr_log(GPR_ERROR,
224
233
  "recv_buffer is nullptr in alts_tsi_handshaker_handle_response()");
225
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
234
+ handle_response_done(
235
+ client, TSI_INTERNAL_ERROR,
236
+ "recv_buffer is nullptr in alts_tsi_handshaker_handle_response()",
237
+ nullptr, 0, nullptr);
226
238
  return;
227
239
  }
228
240
  upb::Arena arena;
@@ -233,14 +245,17 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
233
245
  /* Invalid handshaker response check. */
234
246
  if (resp == nullptr) {
235
247
  gpr_log(GPR_ERROR, "alts_tsi_utils_deserialize_response() failed");
236
- handle_response_done(client, TSI_DATA_CORRUPTED, nullptr, 0, nullptr);
248
+ handle_response_done(client, TSI_DATA_CORRUPTED,
249
+ "alts_tsi_utils_deserialize_response() failed",
250
+ nullptr, 0, nullptr);
237
251
  return;
238
252
  }
239
253
  const grpc_gcp_HandshakerStatus* resp_status =
240
254
  grpc_gcp_HandshakerResp_status(resp);
241
255
  if (resp_status == nullptr) {
242
256
  gpr_log(GPR_ERROR, "No status in HandshakerResp");
243
- handle_response_done(client, TSI_DATA_CORRUPTED, nullptr, 0, nullptr);
257
+ handle_response_done(client, TSI_DATA_CORRUPTED,
258
+ "No status in HandshakerResp", nullptr, 0, nullptr);
244
259
  return;
245
260
  }
246
261
  upb_StringView out_frames = grpc_gcp_HandshakerResp_out_frames(resp);
@@ -262,7 +277,9 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
262
277
  alts_tsi_handshaker_result_create(resp, client->is_client, &result);
263
278
  if (status != TSI_OK) {
264
279
  gpr_log(GPR_ERROR, "alts_tsi_handshaker_result_create() failed");
265
- handle_response_done(client, status, nullptr, 0, nullptr);
280
+ handle_response_done(client, status,
281
+ "alts_tsi_handshaker_result_create() failed",
282
+ nullptr, 0, nullptr);
266
283
  return;
267
284
  }
268
285
  alts_tsi_handshaker_result_set_unused_bytes(
@@ -271,13 +288,13 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
271
288
  }
272
289
  grpc_status_code code = static_cast<grpc_status_code>(
273
290
  grpc_gcp_HandshakerStatus_code(resp_status));
291
+ std::string error;
274
292
  if (code != GRPC_STATUS_OK) {
275
293
  upb_StringView details = grpc_gcp_HandshakerStatus_details(resp_status);
276
294
  if (details.size > 0) {
277
- char* error_details = static_cast<char*>(gpr_zalloc(details.size + 1));
278
- memcpy(error_details, details.data, details.size);
279
- gpr_log(GPR_ERROR, "Error from handshaker service:%s", error_details);
280
- gpr_free(error_details);
295
+ error = absl::StrCat("Status ", code, " from handshaker service: ",
296
+ absl::string_view(details.data, details.size));
297
+ gpr_log(GPR_ERROR, "%s", error.c_str());
281
298
  }
282
299
  }
283
300
  // TODO(apolcyn): consider short ciruiting handle_response_done and
@@ -285,7 +302,8 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
285
302
  // handle_response_done's allocation per message received causes
286
303
  // a performance issue.
287
304
  handle_response_done(client, alts_tsi_utils_convert_to_tsi_result(code),
288
- bytes_to_send, bytes_to_send_size, result);
305
+ std::move(error), bytes_to_send, bytes_to_send_size,
306
+ result);
289
307
  }
290
308
 
291
309
  static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client,
@@ -690,7 +708,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
690
708
  grpc_alts_credentials_options* options, const grpc_slice& target_name,
691
709
  grpc_iomgr_cb_func grpc_cb, tsi_handshaker_on_next_done_cb cb,
692
710
  void* user_data, alts_handshaker_client_vtable* vtable_for_testing,
693
- bool is_client, size_t max_frame_size) {
711
+ bool is_client, size_t max_frame_size, std::string* error) {
694
712
  if (channel == nullptr || handshaker_service_url == nullptr) {
695
713
  gpr_log(GPR_ERROR, "Invalid arguments to alts_handshaker_client_create()");
696
714
  return nullptr;
@@ -713,6 +731,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
713
731
  client->buffer = static_cast<unsigned char*>(gpr_zalloc(client->buffer_size));
714
732
  client->handshake_status_details = grpc_empty_slice();
715
733
  client->max_frame_size = max_frame_size;
734
+ client->error = error;
716
735
  grpc_slice slice = grpc_slice_from_copied_string(handshaker_service_url);
717
736
  client->call =
718
737
  strcmp(handshaker_service_url, ALTS_HANDSHAKER_SERVICE_URL_FOR_TESTING) ==
@@ -776,7 +795,7 @@ void alts_handshaker_client_set_recv_bytes_for_testing(
776
795
  void alts_handshaker_client_set_fields_for_testing(
777
796
  alts_handshaker_client* c, alts_tsi_handshaker* handshaker,
778
797
  tsi_handshaker_on_next_done_cb cb, void* user_data,
779
- grpc_byte_buffer* recv_buffer, grpc_status_code status) {
798
+ grpc_byte_buffer* recv_buffer, bool inject_read_failure) {
780
799
  GPR_ASSERT(c != nullptr);
781
800
  alts_grpc_handshaker_client* client =
782
801
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
@@ -784,7 +803,7 @@ void alts_handshaker_client_set_fields_for_testing(
784
803
  client->cb = cb;
785
804
  client->user_data = user_data;
786
805
  client->recv_buffer = recv_buffer;
787
- client->status = status;
806
+ client->inject_read_failure = inject_read_failure;
788
807
  }
789
808
 
790
809
  void alts_handshaker_client_check_fields_for_testing(
@@ -144,7 +144,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
144
144
  grpc_alts_credentials_options* options, const grpc_slice& target_name,
145
145
  grpc_iomgr_cb_func grpc_cb, tsi_handshaker_on_next_done_cb cb,
146
146
  void* user_data, alts_handshaker_client_vtable* vtable_for_testing,
147
- bool is_client, size_t max_frame_size);
147
+ bool is_client, size_t max_frame_size, std::string* error);
148
148
 
149
149
  /**
150
150
  * This method handles handshaker response returned from ALTS handshaker
@@ -391,7 +391,7 @@ static void on_handshaker_service_resp_recv(void* arg,
391
391
  return;
392
392
  }
393
393
  bool success = true;
394
- if (error != GRPC_ERROR_NONE) {
394
+ if (!GRPC_ERROR_IS_NONE(error)) {
395
395
  gpr_log(GPR_INFO,
396
396
  "ALTS handshaker on_handshaker_service_resp_recv error: %s",
397
397
  grpc_error_std_string(error).c_str());
@@ -416,7 +416,7 @@ static void on_handshaker_service_resp_recv_dedicated(
416
416
  static tsi_result alts_tsi_handshaker_continue_handshaker_next(
417
417
  alts_tsi_handshaker* handshaker, const unsigned char* received_bytes,
418
418
  size_t received_bytes_size, tsi_handshaker_on_next_done_cb cb,
419
- void* user_data) {
419
+ void* user_data, std::string* error) {
420
420
  if (!handshaker->has_created_handshaker_client) {
421
421
  if (handshaker->channel == nullptr) {
422
422
  grpc_alts_shared_resource_dedicated_start(
@@ -437,9 +437,10 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
437
437
  handshaker->interested_parties, handshaker->options,
438
438
  handshaker->target_name, grpc_cb, cb, user_data,
439
439
  handshaker->client_vtable_for_testing, handshaker->is_client,
440
- handshaker->max_frame_size);
440
+ handshaker->max_frame_size, error);
441
441
  if (client == nullptr) {
442
442
  gpr_log(GPR_ERROR, "Failed to create ALTS handshaker client");
443
+ if (error != nullptr) *error = "Failed to create ALTS handshaker client";
443
444
  return TSI_FAILED_PRECONDITION;
444
445
  }
445
446
  {
@@ -448,6 +449,7 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
448
449
  handshaker->client = client;
449
450
  if (handshaker->shutdown) {
450
451
  gpr_log(GPR_INFO, "TSI handshake shutdown");
452
+ if (error != nullptr) *error = "TSI handshaker shutdown";
451
453
  return TSI_HANDSHAKE_SHUTDOWN;
452
454
  }
453
455
  }
@@ -490,6 +492,7 @@ struct alts_tsi_handshaker_continue_handshaker_next_args {
490
492
  tsi_handshaker_on_next_done_cb cb;
491
493
  void* user_data;
492
494
  grpc_closure closure;
495
+ std::string* error = nullptr;
493
496
  };
494
497
 
495
498
  static void alts_tsi_handshaker_create_channel(
@@ -510,7 +513,8 @@ static void alts_tsi_handshaker_create_channel(
510
513
  tsi_result continue_next_result =
511
514
  alts_tsi_handshaker_continue_handshaker_next(
512
515
  handshaker, next_args->received_bytes.get(),
513
- next_args->received_bytes_size, next_args->cb, next_args->user_data);
516
+ next_args->received_bytes_size, next_args->cb, next_args->user_data,
517
+ next_args->error);
514
518
  if (continue_next_result != TSI_OK) {
515
519
  next_args->cb(continue_next_result, next_args->user_data, nullptr, 0,
516
520
  nullptr);
@@ -522,9 +526,10 @@ static tsi_result handshaker_next(
522
526
  tsi_handshaker* self, const unsigned char* received_bytes,
523
527
  size_t received_bytes_size, const unsigned char** /*bytes_to_send*/,
524
528
  size_t* /*bytes_to_send_size*/, tsi_handshaker_result** /*result*/,
525
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
529
+ tsi_handshaker_on_next_done_cb cb, void* user_data, std::string* error) {
526
530
  if (self == nullptr || cb == nullptr) {
527
531
  gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
532
+ if (error != nullptr) *error = "invalid argument";
528
533
  return TSI_INVALID_ARGUMENT;
529
534
  }
530
535
  alts_tsi_handshaker* handshaker =
@@ -533,6 +538,7 @@ static tsi_result handshaker_next(
533
538
  grpc_core::MutexLock lock(&handshaker->mu);
534
539
  if (handshaker->shutdown) {
535
540
  gpr_log(GPR_INFO, "TSI handshake shutdown");
541
+ if (error != nullptr) *error = "handshake shutdown";
536
542
  return TSI_HANDSHAKE_SHUTDOWN;
537
543
  }
538
544
  }
@@ -542,6 +548,7 @@ static tsi_result handshaker_next(
542
548
  args->handshaker = handshaker;
543
549
  args->received_bytes = nullptr;
544
550
  args->received_bytes_size = received_bytes_size;
551
+ args->error = error;
545
552
  if (received_bytes_size > 0) {
546
553
  args->received_bytes = std::unique_ptr<unsigned char>(
547
554
  static_cast<unsigned char*>(gpr_zalloc(received_bytes_size)));
@@ -559,7 +566,7 @@ static tsi_result handshaker_next(
559
566
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, &args->closure, GRPC_ERROR_NONE);
560
567
  } else {
561
568
  tsi_result ok = alts_tsi_handshaker_continue_handshaker_next(
562
- handshaker, received_bytes, received_bytes_size, cb, user_data);
569
+ handshaker, received_bytes, received_bytes_size, cb, user_data, error);
563
570
  if (ok != TSI_OK) {
564
571
  gpr_log(GPR_ERROR, "Failed to schedule ALTS handshaker requests");
565
572
  return ok;
@@ -577,11 +584,11 @@ static tsi_result handshaker_next_dedicated(
577
584
  tsi_handshaker* self, const unsigned char* received_bytes,
578
585
  size_t received_bytes_size, const unsigned char** bytes_to_send,
579
586
  size_t* bytes_to_send_size, tsi_handshaker_result** result,
580
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
587
+ tsi_handshaker_on_next_done_cb cb, void* user_data, std::string* error) {
581
588
  grpc_core::ExecCtx exec_ctx;
582
589
  return handshaker_next(self, received_bytes, received_bytes_size,
583
590
  bytes_to_send, bytes_to_send_size, result, cb,
584
- user_data);
591
+ user_data, error);
585
592
  }
586
593
 
587
594
  static void handshaker_shutdown(tsi_handshaker* self) {
@@ -63,7 +63,7 @@ void alts_handshaker_client_check_fields_for_testing(
63
63
  void alts_handshaker_client_set_fields_for_testing(
64
64
  alts_handshaker_client* client, alts_tsi_handshaker* handshaker,
65
65
  tsi_handshaker_on_next_done_cb cb, void* user_data,
66
- grpc_byte_buffer* recv_buffer, grpc_status_code status);
66
+ grpc_byte_buffer* recv_buffer, bool inject_read_failure);
67
67
 
68
68
  void alts_handshaker_client_set_vtable_for_testing(
69
69
  alts_handshaker_client* client, alts_handshaker_client_vtable* vtable);
@@ -174,7 +174,7 @@ static tsi_result alts_zero_copy_grpc_protector_protect(
174
174
 
175
175
  static tsi_result alts_zero_copy_grpc_protector_unprotect(
176
176
  tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
177
- grpc_slice_buffer* unprotected_slices) {
177
+ grpc_slice_buffer* unprotected_slices, int* min_progress_size) {
178
178
  if (self == nullptr || unprotected_slices == nullptr ||
179
179
  protected_slices == nullptr) {
180
180
  gpr_log(GPR_ERROR,
@@ -215,6 +215,14 @@ static tsi_result alts_zero_copy_grpc_protector_unprotect(
215
215
  return status;
216
216
  }
217
217
  }
218
+ if (min_progress_size != nullptr) {
219
+ if (protector->parsed_frame_size > kZeroCopyFrameLengthFieldSize) {
220
+ *min_progress_size =
221
+ protector->parsed_frame_size - protector->protected_sb.length;
222
+ } else {
223
+ *min_progress_size = 1;
224
+ }
225
+ }
218
226
  return TSI_OK;
219
227
  }
220
228