grpc 1.46.2-x86_64-linux → 1.48.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 (816) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +138 -128
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +62 -18
  5. data/include/grpc/event_engine/memory_allocator.h +0 -15
  6. data/include/grpc/event_engine/port.h +1 -1
  7. data/include/grpc/event_engine/slice.h +286 -0
  8. data/include/grpc/event_engine/slice_buffer.h +118 -0
  9. data/include/grpc/grpc.h +3 -3
  10. data/include/grpc/grpc_security.h +11 -0
  11. data/include/grpc/impl/codegen/compression_types.h +2 -1
  12. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  13. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  14. data/include/grpc/impl/codegen/grpc_types.h +2 -1
  15. data/include/grpc/impl/codegen/port_platform.h +106 -39
  16. data/include/grpc/impl/codegen/slice.h +1 -1
  17. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  18. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +35 -35
  19. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +20 -1
  20. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  21. data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
  22. data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
  23. data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
  24. data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
  25. data/src/core/ext/filters/client_channel/channel_connectivity.cc +43 -21
  26. data/src/core/ext/filters/client_channel/client_channel.cc +111 -82
  27. data/src/core/ext/filters/client_channel/client_channel.h +43 -8
  28. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
  29. data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
  30. data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
  31. data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
  32. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
  33. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  34. data/src/core/ext/filters/client_channel/config_selector.h +8 -6
  35. data/src/core/ext/filters/client_channel/connector.h +9 -3
  36. data/src/core/ext/filters/client_channel/dynamic_filters.cc +19 -6
  37. data/src/core/ext/filters/client_channel/dynamic_filters.h +12 -2
  38. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
  39. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
  40. data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
  41. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
  42. data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
  43. data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
  45. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
  46. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  47. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
  48. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -5
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +132 -62
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
  56. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
  57. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  58. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
  59. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  60. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +149 -147
  61. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +176 -85
  62. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +303 -203
  63. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
  64. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +92 -54
  65. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +240 -214
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +119 -111
  67. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +86 -71
  68. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +101 -25
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
  70. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -11
  71. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +36 -20
  72. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +78 -14
  73. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
  74. data/src/core/ext/filters/client_channel/lb_policy.h +18 -31
  75. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
  76. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
  77. data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
  78. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  79. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
  80. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  81. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
  82. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  83. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +26 -6
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +139 -48
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
  87. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -6
  88. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -14
  89. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
  90. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
  91. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  92. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  93. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +39 -7
  94. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -19
  95. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
  96. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -16
  97. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +14 -2
  98. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
  99. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +17 -12
  100. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +111 -46
  101. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  102. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +12 -18
  103. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
  104. data/src/core/ext/filters/client_channel/retry_filter.cc +75 -36
  105. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  106. data/src/core/ext/filters/client_channel/retry_service_config.cc +12 -13
  107. data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
  108. data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
  109. data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
  110. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +24 -6
  111. data/src/core/ext/filters/client_channel/subchannel.cc +186 -187
  112. data/src/core/ext/filters/client_channel/subchannel.h +80 -36
  113. data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
  114. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  115. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
  116. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
  117. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +24 -95
  118. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +17 -9
  119. data/src/core/ext/filters/deadline/deadline_filter.cc +18 -9
  120. data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
  121. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +22 -6
  122. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
  123. data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
  124. data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
  125. data/src/core/ext/filters/http/client/http_client_filter.cc +30 -10
  126. data/src/core/ext/filters/http/client/http_client_filter.h +15 -2
  127. data/src/core/ext/filters/http/client_authority_filter.cc +16 -20
  128. data/src/core/ext/filters/http/client_authority_filter.h +5 -2
  129. data/src/core/ext/filters/http/http_filters_plugin.cc +16 -9
  130. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +65 -187
  131. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  132. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -107
  133. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  134. data/src/core/ext/filters/http/server/http_server_filter.cc +95 -255
  135. data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
  136. data/src/core/ext/filters/message_size/message_size_filter.cc +45 -41
  137. data/src/core/ext/filters/message_size/message_size_filter.h +15 -2
  138. data/src/core/ext/filters/rbac/rbac_filter.cc +15 -3
  139. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  140. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
  141. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
  142. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  143. data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
  144. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
  145. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  146. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +104 -138
  147. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
  148. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +58 -29
  149. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
  150. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
  151. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  152. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  153. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -491
  154. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +6 -1
  155. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
  156. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
  157. data/src/core/ext/transport/chttp2/transport/flow_control.cc +145 -261
  158. data/src/core/ext/transport/chttp2/transport/flow_control.h +179 -288
  159. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  160. data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -211
  161. data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
  162. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
  163. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
  164. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
  165. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
  166. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
  167. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
  168. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -42
  169. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
  170. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
  171. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
  172. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
  173. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
  174. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
  175. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
  176. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -13
  177. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
  178. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +53 -37
  179. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
  180. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  181. data/src/core/ext/transport/chttp2/transport/internal.h +31 -112
  182. data/src/core/ext/transport/chttp2/transport/parsing.cc +77 -43
  183. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
  184. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  185. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  186. data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
  187. data/src/core/ext/transport/chttp2/transport/writing.cc +54 -21
  188. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  189. data/src/core/ext/transport/inproc/inproc_transport.cc +93 -86
  190. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  191. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  192. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
  193. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  194. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
  195. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  196. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  197. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  198. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  199. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  200. data/src/core/ext/xds/certificate_provider_store.cc +6 -2
  201. data/src/core/ext/xds/certificate_provider_store.h +10 -1
  202. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  203. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  204. data/src/core/ext/xds/upb_utils.h +1 -2
  205. data/src/core/ext/xds/xds_api.cc +16 -18
  206. data/src/core/ext/xds/xds_api.h +12 -5
  207. data/src/core/ext/xds/xds_bootstrap.cc +39 -26
  208. data/src/core/ext/xds/xds_bootstrap.h +11 -11
  209. data/src/core/ext/xds/xds_certificate_provider.cc +16 -4
  210. data/src/core/ext/xds/xds_certificate_provider.h +17 -2
  211. data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -5
  212. data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
  213. data/src/core/ext/xds/xds_client.cc +121 -46
  214. data/src/core/ext/xds/xds_client.h +19 -4
  215. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  216. data/src/core/ext/xds/xds_client_stats.h +4 -3
  217. data/src/core/ext/xds/xds_cluster.cc +126 -25
  218. data/src/core/ext/xds/xds_cluster.h +12 -1
  219. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
  220. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
  221. data/src/core/ext/xds/xds_common_types.cc +36 -22
  222. data/src/core/ext/xds/xds_common_types.h +12 -4
  223. data/src/core/ext/xds/xds_endpoint.cc +25 -15
  224. data/src/core/ext/xds/xds_endpoint.h +13 -5
  225. data/src/core/ext/xds/xds_http_fault_filter.cc +10 -8
  226. data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
  227. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  228. data/src/core/ext/xds/xds_http_filters.h +3 -3
  229. data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
  230. data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
  231. data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
  232. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  233. data/src/core/ext/xds/xds_listener.cc +70 -42
  234. data/src/core/ext/xds/xds_listener.h +10 -1
  235. data/src/core/ext/xds/xds_resource_type.h +3 -3
  236. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  237. data/src/core/ext/xds/xds_route_config.cc +56 -28
  238. data/src/core/ext/xds/xds_route_config.h +11 -2
  239. data/src/core/ext/xds/xds_routing.cc +16 -0
  240. data/src/core/ext/xds/xds_routing.h +7 -2
  241. data/src/core/ext/xds/xds_server_config_fetcher.cc +56 -7
  242. data/src/core/lib/address_utils/parse_address.cc +5 -8
  243. data/src/core/lib/address_utils/parse_address.h +3 -2
  244. data/src/core/lib/address_utils/sockaddr_utils.cc +60 -26
  245. data/src/core/lib/address_utils/sockaddr_utils.h +9 -4
  246. data/src/core/lib/avl/avl.h +6 -4
  247. data/src/core/lib/backoff/backoff.cc +1 -1
  248. data/src/core/lib/backoff/backoff.h +1 -1
  249. data/src/core/lib/channel/call_finalization.h +4 -0
  250. data/src/core/lib/channel/call_tracer.h +11 -5
  251. data/src/core/lib/channel/channel_args.cc +41 -22
  252. data/src/core/lib/channel/channel_args.h +34 -3
  253. data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
  254. data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
  255. data/src/core/lib/channel/channel_fwd.h +26 -0
  256. data/src/core/lib/channel/channel_stack.cc +45 -7
  257. data/src/core/lib/channel/channel_stack.h +45 -9
  258. data/src/core/lib/channel/channel_stack_builder.cc +9 -19
  259. data/src/core/lib/channel/channel_stack_builder.h +17 -32
  260. data/src/core/lib/channel/channel_stack_builder_impl.cc +38 -43
  261. data/src/core/lib/channel/channel_stack_builder_impl.h +4 -6
  262. data/src/core/lib/channel/channel_trace.cc +8 -13
  263. data/src/core/lib/channel/channel_trace.h +6 -3
  264. data/src/core/lib/channel/channelz.cc +10 -14
  265. data/src/core/lib/channel/channelz.h +15 -7
  266. data/src/core/lib/channel/channelz_registry.cc +11 -19
  267. data/src/core/lib/channel/channelz_registry.h +10 -9
  268. data/src/core/lib/channel/connected_channel.cc +22 -31
  269. data/src/core/lib/channel/connected_channel.h +2 -0
  270. data/src/core/lib/channel/promise_based_filter.cc +451 -190
  271. data/src/core/lib/channel/promise_based_filter.h +162 -27
  272. data/src/core/lib/channel/status_util.cc +2 -0
  273. data/src/core/lib/channel/status_util.h +0 -3
  274. data/src/core/lib/compression/compression.cc +6 -1
  275. data/src/core/lib/compression/compression_internal.cc +48 -16
  276. data/src/core/lib/compression/compression_internal.h +4 -3
  277. data/src/core/lib/compression/message_compress.cc +3 -1
  278. data/src/core/lib/compression/message_compress.h +2 -3
  279. data/src/core/lib/config/core_configuration.cc +3 -0
  280. data/src/core/lib/config/core_configuration.h +2 -1
  281. data/src/core/lib/debug/stats.cc +9 -9
  282. data/src/core/lib/debug/stats.h +2 -1
  283. data/src/core/lib/debug/stats_data.cc +2 -1
  284. data/src/core/lib/debug/stats_data.h +0 -4
  285. data/src/core/lib/debug/trace.h +13 -12
  286. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
  287. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
  288. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
  289. data/src/core/lib/event_engine/event_engine.cc +29 -14
  290. data/src/core/lib/event_engine/event_engine_factory.h +5 -0
  291. data/src/core/lib/event_engine/handle_containers.h +67 -0
  292. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
  293. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
  294. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
  295. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
  296. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
  297. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
  298. data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
  299. data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
  300. data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
  301. data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
  302. data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
  303. data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
  304. data/src/core/lib/event_engine/memory_allocator.cc +12 -4
  305. data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
  306. data/src/core/lib/event_engine/resolved_address.cc +4 -2
  307. data/src/core/lib/event_engine/slice.cc +102 -0
  308. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  309. data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
  310. data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
  311. data/src/core/lib/gpr/log.cc +5 -0
  312. data/src/core/lib/gpr/time_posix.cc +6 -9
  313. data/src/core/lib/gpr/time_windows.cc +10 -7
  314. data/src/core/lib/gpr/tls.h +3 -5
  315. data/src/core/lib/gprpp/bitset.h +5 -1
  316. data/src/core/lib/gprpp/chunked_vector.h +4 -0
  317. data/src/core/lib/gprpp/construct_destruct.h +1 -0
  318. data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
  319. data/src/core/lib/gprpp/examine_stack.h +0 -1
  320. data/src/core/lib/gprpp/fork.cc +3 -6
  321. data/src/core/lib/gprpp/global_config.h +2 -4
  322. data/src/core/lib/gprpp/global_config_env.cc +3 -2
  323. data/src/core/lib/gprpp/global_config_env.h +3 -1
  324. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  325. data/src/core/lib/gprpp/host_port.cc +2 -0
  326. data/src/core/lib/gprpp/manual_constructor.h +0 -68
  327. data/src/core/lib/gprpp/match.h +2 -0
  328. data/src/core/lib/gprpp/memory.h +1 -5
  329. data/src/core/lib/gprpp/orphanable.h +1 -4
  330. data/src/core/lib/gprpp/ref_counted.h +1 -3
  331. data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
  332. data/src/core/lib/gprpp/stat.h +0 -2
  333. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  334. data/src/core/lib/gprpp/status_helper.cc +50 -32
  335. data/src/core/lib/gprpp/status_helper.h +4 -0
  336. data/src/core/lib/gprpp/sync.h +3 -1
  337. data/src/core/lib/gprpp/table.h +10 -0
  338. data/src/core/lib/gprpp/thd.h +2 -5
  339. data/src/core/lib/gprpp/thd_posix.cc +4 -2
  340. data/src/core/lib/gprpp/thd_windows.cc +2 -0
  341. data/src/core/lib/gprpp/time.cc +16 -0
  342. data/src/core/lib/gprpp/time.h +10 -1
  343. data/src/core/lib/gprpp/time_util.cc +4 -0
  344. data/src/core/lib/gprpp/time_util.h +1 -1
  345. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  346. data/src/core/lib/http/format_request.cc +34 -4
  347. data/src/core/lib/http/format_request.h +3 -1
  348. data/src/core/lib/http/httpcli.cc +106 -93
  349. data/src/core/lib/http/httpcli.h +58 -10
  350. data/src/core/lib/http/httpcli_security_connector.cc +19 -8
  351. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  352. data/src/core/lib/http/parser.cc +6 -7
  353. data/src/core/lib/http/parser.h +3 -0
  354. data/src/core/lib/iomgr/call_combiner.cc +2 -2
  355. data/src/core/lib/iomgr/endpoint.cc +4 -4
  356. data/src/core/lib/iomgr/endpoint.h +7 -5
  357. data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
  358. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  359. data/src/core/lib/iomgr/error.cc +11 -9
  360. data/src/core/lib/iomgr/error.h +9 -5
  361. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  362. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  363. data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
  364. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  365. data/src/core/lib/iomgr/ev_posix.cc +55 -96
  366. data/src/core/lib/iomgr/ev_posix.h +5 -3
  367. data/src/core/lib/iomgr/exec_ctx.h +1 -2
  368. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  369. data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
  370. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  371. data/src/core/lib/iomgr/iomgr.cc +7 -1
  372. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
  373. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  374. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  375. data/src/core/lib/iomgr/load_file.cc +1 -1
  376. data/src/core/lib/iomgr/pollset_set.h +1 -2
  377. data/src/core/lib/iomgr/port.h +25 -6
  378. data/src/core/lib/iomgr/resolve_address.cc +8 -0
  379. data/src/core/lib/iomgr/resolve_address.h +21 -14
  380. data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
  381. data/src/core/lib/iomgr/resolve_address_posix.cc +9 -15
  382. data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
  383. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -15
  384. data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
  385. data/src/core/lib/iomgr/sockaddr.h +2 -3
  386. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  387. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  388. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
  389. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  390. data/src/core/lib/iomgr/tcp_client.h +24 -13
  391. data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
  392. data/src/core/lib/iomgr/tcp_client_posix.cc +154 -29
  393. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  394. data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
  395. data/src/core/lib/iomgr/tcp_posix.cc +96 -52
  396. data/src/core/lib/iomgr/tcp_server_posix.cc +33 -19
  397. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +41 -38
  398. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -6
  399. data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
  400. data/src/core/lib/iomgr/tcp_windows.cc +12 -9
  401. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  402. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  403. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  404. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  405. data/src/core/lib/iomgr/work_serializer.h +2 -3
  406. data/src/core/lib/json/json.h +1 -2
  407. data/src/core/lib/json/json_reader.cc +9 -1
  408. data/src/core/lib/json/json_util.cc +7 -0
  409. data/src/core/lib/json/json_util.h +10 -1
  410. data/src/core/lib/json/json_writer.cc +6 -1
  411. data/src/core/lib/matchers/matchers.cc +6 -3
  412. data/src/core/lib/matchers/matchers.h +2 -0
  413. data/src/core/lib/promise/activity.cc +1 -2
  414. data/src/core/lib/promise/activity.h +13 -19
  415. data/src/core/lib/promise/arena_promise.h +11 -1
  416. data/src/core/lib/promise/call_push_pull.h +4 -0
  417. data/src/core/lib/promise/context.h +1 -1
  418. data/src/core/lib/promise/detail/basic_seq.h +2 -2
  419. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  420. data/src/core/lib/promise/latch.h +0 -1
  421. data/src/core/lib/promise/loop.h +2 -0
  422. data/src/core/lib/promise/promise.h +1 -0
  423. data/src/core/lib/promise/race.h +0 -1
  424. data/src/core/lib/promise/seq.h +0 -2
  425. data/src/core/lib/promise/sleep.cc +38 -31
  426. data/src/core/lib/promise/sleep.h +32 -22
  427. data/src/core/lib/promise/try_seq.h +2 -2
  428. data/src/core/lib/resolver/resolver.cc +5 -0
  429. data/src/core/lib/resolver/resolver.h +3 -0
  430. data/src/core/lib/resolver/resolver_factory.h +6 -4
  431. data/src/core/lib/resolver/resolver_registry.cc +2 -9
  432. data/src/core/lib/resolver/resolver_registry.h +12 -1
  433. data/src/core/lib/resolver/server_address.cc +17 -3
  434. data/src/core/lib/resolver/server_address.h +13 -6
  435. data/src/core/lib/resource_quota/api.cc +14 -1
  436. data/src/core/lib/resource_quota/api.h +4 -1
  437. data/src/core/lib/resource_quota/arena.cc +0 -6
  438. data/src/core/lib/resource_quota/arena.h +1 -2
  439. data/src/core/lib/resource_quota/memory_quota.cc +62 -62
  440. data/src/core/lib/resource_quota/memory_quota.h +35 -30
  441. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  442. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  443. data/src/core/lib/resource_quota/thread_quota.h +4 -0
  444. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  445. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  446. data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
  447. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  448. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  449. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  450. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -0
  451. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
  452. data/src/core/lib/security/authorization/matchers.cc +9 -1
  453. data/src/core/lib/security/authorization/matchers.h +7 -0
  454. data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
  455. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  456. data/src/core/lib/security/context/security_context.cc +5 -2
  457. data/src/core/lib/security/context/security_context.h +14 -2
  458. data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -4
  459. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -3
  460. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  461. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  462. data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
  463. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  464. data/src/core/lib/security/credentials/channel_creds_registry.h +7 -1
  465. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  466. data/src/core/lib/security/credentials/composite/composite_credentials.cc +11 -7
  467. data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -6
  468. data/src/core/lib/security/credentials/credentials.cc +4 -8
  469. data/src/core/lib/security/credentials/credentials.h +27 -18
  470. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +108 -9
  471. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +18 -0
  472. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  473. data/src/core/lib/security/credentials/external/external_account_credentials.cc +27 -9
  474. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  475. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
  476. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  477. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +22 -4
  478. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  479. data/src/core/lib/security/credentials/fake/fake_credentials.cc +21 -9
  480. data/src/core/lib/security/credentials/fake/fake_credentials.h +15 -3
  481. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  482. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +51 -24
  483. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +12 -3
  484. data/src/core/lib/security/credentials/iam/iam_credentials.cc +13 -4
  485. data/src/core/lib/security/credentials/iam/iam_credentials.h +12 -2
  486. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +12 -2
  487. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +9 -4
  488. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  489. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  490. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -7
  491. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -2
  492. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
  493. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  494. data/src/core/lib/security/credentials/local/local_credentials.cc +12 -5
  495. data/src/core/lib/security/credentials/local/local_credentials.h +9 -2
  496. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +36 -19
  497. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -4
  498. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -8
  499. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -1
  500. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -2
  501. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +17 -4
  502. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  503. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  504. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
  505. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -11
  506. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +35 -3
  507. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +34 -11
  508. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  509. data/src/core/lib/security/credentials/tls/tls_credentials.cc +17 -2
  510. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -3
  511. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  512. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  513. data/src/core/lib/security/credentials/xds/xds_credentials.cc +20 -4
  514. data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
  515. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
  516. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  517. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +18 -2
  518. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  519. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
  520. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
  521. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  522. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  523. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  524. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
  525. data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
  526. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  527. data/src/core/lib/security/security_connector/security_connector.h +19 -7
  528. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +19 -7
  529. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  530. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  531. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  532. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  533. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
  534. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
  535. data/src/core/lib/security/transport/auth_filters.h +7 -0
  536. data/src/core/lib/security/transport/client_auth_filter.cc +24 -17
  537. data/src/core/lib/security/transport/secure_endpoint.cc +81 -20
  538. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  539. data/src/core/lib/security/transport/security_handshaker.cc +49 -16
  540. data/src/core/lib/security/transport/security_handshaker.h +5 -1
  541. data/src/core/lib/security/transport/server_auth_filter.cc +29 -6
  542. data/src/core/lib/security/util/json_util.cc +3 -2
  543. data/src/core/lib/security/util/json_util.h +0 -2
  544. data/src/core/lib/service_config/service_config.h +4 -8
  545. data/src/core/lib/service_config/service_config_call_data.h +6 -2
  546. data/src/core/lib/service_config/service_config_impl.cc +13 -6
  547. data/src/core/lib/service_config/service_config_impl.h +9 -4
  548. data/src/core/lib/service_config/service_config_parser.cc +8 -2
  549. data/src/core/lib/service_config/service_config_parser.h +7 -0
  550. data/src/core/lib/slice/b64.cc +1 -1
  551. data/src/core/lib/slice/b64.h +2 -0
  552. data/src/core/lib/slice/percent_encoding.cc +4 -1
  553. data/src/core/lib/slice/percent_encoding.h +0 -6
  554. data/src/core/lib/slice/slice.cc +2 -1
  555. data/src/core/lib/slice/slice.h +10 -5
  556. data/src/core/lib/slice/slice_api.cc +1 -1
  557. data/src/core/lib/slice/slice_buffer.cc +79 -23
  558. data/src/core/lib/slice/slice_buffer.h +137 -0
  559. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  560. data/src/core/lib/slice/slice_internal.h +4 -3
  561. data/src/core/lib/slice/slice_refcount.h +2 -3
  562. data/src/core/lib/slice/slice_refcount_base.h +2 -3
  563. data/src/core/lib/slice/slice_string_helpers.cc +0 -16
  564. data/src/core/lib/slice/slice_string_helpers.h +1 -8
  565. data/src/core/lib/surface/builtins.cc +7 -2
  566. data/src/core/lib/surface/byte_buffer.cc +7 -1
  567. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  568. data/src/core/lib/surface/call.cc +90 -137
  569. data/src/core/lib/surface/call.h +21 -3
  570. data/src/core/lib/surface/call_details.cc +4 -4
  571. data/src/core/lib/surface/call_log_batch.cc +7 -1
  572. data/src/core/lib/surface/call_test_only.h +4 -1
  573. data/src/core/lib/surface/channel.cc +179 -242
  574. data/src/core/lib/surface/channel.h +97 -58
  575. data/src/core/lib/surface/channel_init.h +2 -0
  576. data/src/core/lib/surface/channel_ping.cc +8 -2
  577. data/src/core/lib/surface/channel_stack_type.cc +0 -2
  578. data/src/core/lib/surface/channel_stack_type.h +0 -2
  579. data/src/core/lib/surface/completion_queue.cc +29 -20
  580. data/src/core/lib/surface/completion_queue.h +7 -2
  581. data/src/core/lib/surface/completion_queue_factory.cc +1 -0
  582. data/src/core/lib/surface/completion_queue_factory.h +1 -3
  583. data/src/core/lib/surface/event_string.cc +1 -7
  584. data/src/core/lib/surface/event_string.h +1 -1
  585. data/src/core/lib/surface/init.cc +17 -46
  586. data/src/core/lib/surface/init.h +0 -8
  587. data/src/core/lib/surface/lame_client.cc +63 -109
  588. data/src/core/lib/surface/lame_client.h +41 -3
  589. data/src/core/lib/surface/metadata_array.cc +2 -0
  590. data/src/core/lib/surface/server.cc +83 -64
  591. data/src/core/lib/surface/server.h +42 -9
  592. data/src/core/lib/surface/validate_metadata.cc +3 -6
  593. data/src/core/lib/surface/validate_metadata.h +3 -0
  594. data/src/core/lib/surface/version.cc +2 -2
  595. data/src/core/lib/transport/bdp_estimator.cc +3 -1
  596. data/src/core/lib/transport/bdp_estimator.h +2 -3
  597. data/src/core/lib/transport/connectivity_state.cc +6 -4
  598. data/src/core/lib/transport/connectivity_state.h +2 -3
  599. data/src/core/lib/transport/error_utils.cc +16 -8
  600. data/src/core/lib/transport/error_utils.h +5 -1
  601. data/src/core/lib/{channel → transport}/handshaker.cc +12 -7
  602. data/src/core/lib/{channel → transport}/handshaker.h +13 -6
  603. data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
  604. data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
  605. data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
  606. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +28 -14
  607. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
  608. data/src/core/lib/transport/metadata_batch.cc +287 -0
  609. data/src/core/lib/transport/metadata_batch.h +133 -264
  610. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  611. data/src/core/lib/transport/parsed_metadata.h +10 -3
  612. data/src/core/lib/transport/status_conversion.cc +2 -0
  613. data/src/core/lib/transport/status_conversion.h +2 -2
  614. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  615. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  616. data/src/core/lib/transport/timeout_encoding.cc +2 -6
  617. data/src/core/lib/transport/timeout_encoding.h +5 -1
  618. data/src/core/lib/transport/transport.cc +18 -20
  619. data/src/core/lib/transport/transport.h +48 -16
  620. data/src/core/lib/transport/transport_fwd.h +20 -0
  621. data/src/core/lib/transport/transport_impl.h +11 -0
  622. data/src/core/lib/transport/transport_op_string.cc +17 -18
  623. data/src/core/lib/uri/uri_parser.cc +11 -3
  624. data/src/core/lib/uri/uri_parser.h +0 -2
  625. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
  626. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  627. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  628. data/src/core/tsi/fake_transport_security.cc +13 -1
  629. data/src/core/tsi/fake_transport_security.h +6 -0
  630. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
  631. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  632. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
  633. data/src/core/tsi/ssl_transport_security.cc +1 -1
  634. data/src/core/tsi/transport_security_grpc.cc +3 -2
  635. data/src/core/tsi/transport_security_grpc.h +5 -2
  636. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  637. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  638. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  639. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  640. data/src/ruby/ext/grpc/extconf.rb +50 -19
  641. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  642. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
  643. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  644. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  645. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  646. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  647. data/src/ruby/lib/grpc/errors.rb +1 -1
  648. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  649. data/src/ruby/lib/grpc/version.rb +1 -1
  650. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  651. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  652. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  653. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  654. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  655. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  656. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  657. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  658. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  659. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  660. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  661. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  662. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  663. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  664. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  665. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  666. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  667. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  668. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  669. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  670. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  671. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  672. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  673. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  674. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  675. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  676. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  677. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  678. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  679. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  680. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
  681. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  682. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  683. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  684. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  685. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  686. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  687. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  688. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  689. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  690. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  691. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  692. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  693. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  694. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  695. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  696. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  697. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  698. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  699. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  700. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  701. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  702. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  703. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  704. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  705. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  706. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  707. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  708. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  709. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  710. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  711. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  712. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  713. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  714. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  715. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  716. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  717. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  718. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  719. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  720. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  721. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  722. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  723. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  724. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  725. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  726. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  727. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  728. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  729. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  730. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  731. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  732. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  733. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  734. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  735. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  736. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  737. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  738. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  739. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  740. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  741. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  742. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  743. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  744. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  745. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  746. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  747. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  748. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  749. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  750. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  751. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  752. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  753. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  754. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  755. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  756. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  757. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  758. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  759. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  760. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  761. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  762. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  763. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  764. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  765. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  766. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  767. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  768. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  769. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  770. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  771. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  772. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  773. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  774. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  775. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  776. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  777. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  778. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  779. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  780. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  781. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  782. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  783. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  784. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  785. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  786. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  787. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  788. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  789. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  790. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  791. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  792. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  793. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  794. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  795. metadata +69 -38
  796. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  797. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  798. data/src/core/lib/event_engine/sockaddr.h +0 -44
  799. data/src/core/lib/gprpp/capture.h +0 -76
  800. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  801. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  802. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  803. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  804. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
  805. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
  806. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
  807. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
  808. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
  809. data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
  810. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
  811. data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
  812. data/src/core/lib/slice/slice_split.cc +0 -100
  813. data/src/core/lib/slice/slice_split.h +0 -40
  814. data/src/core/lib/transport/byte_stream.cc +0 -164
  815. data/src/core/lib/transport/byte_stream.h +0 -166
  816. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -18,10 +18,17 @@
18
18
 
19
19
  #include "src/core/ext/xds/xds_listener.h"
20
20
 
21
+ #include <stdint.h>
22
+
23
+ #include <set>
24
+ #include <type_traits>
25
+ #include <utility>
26
+
27
+ #include "absl/memory/memory.h"
28
+ #include "absl/status/status.h"
21
29
  #include "absl/strings/str_cat.h"
22
30
  #include "absl/strings/str_format.h"
23
31
  #include "absl/strings/str_join.h"
24
- #include "absl/strings/str_split.h"
25
32
  #include "envoy/config/core/v3/address.upb.h"
26
33
  #include "envoy/config/core/v3/base.upb.h"
27
34
  #include "envoy/config/core/v3/config_source.upb.h"
@@ -30,18 +37,29 @@
30
37
  #include "envoy/config/listener/v3/listener.upb.h"
31
38
  #include "envoy/config/listener/v3/listener.upbdefs.h"
32
39
  #include "envoy/config/listener/v3/listener_components.upb.h"
40
+ #include "envoy/config/route/v3/route.upb.h"
33
41
  #include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
34
42
  #include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h"
43
+ #include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
44
+ #include "google/protobuf/any.upb.h"
45
+ #include "google/protobuf/duration.upb.h"
35
46
  #include "google/protobuf/wrappers.upb.h"
36
47
  #include "upb/text_encode.h"
37
48
  #include "upb/upb.h"
38
- #include "upb/upb.hpp"
49
+
50
+ #include <grpc/support/log.h>
39
51
 
40
52
  #include "src/core/ext/xds/xds_common_types.h"
53
+ #include "src/core/ext/xds/xds_resource_type.h"
41
54
  #include "src/core/lib/address_utils/parse_address.h"
42
55
  #include "src/core/lib/address_utils/sockaddr_utils.h"
56
+ #include "src/core/lib/debug/trace.h"
43
57
  #include "src/core/lib/gprpp/host_port.h"
58
+ #include "src/core/lib/gprpp/status_helper.h"
59
+ #include "src/core/lib/iomgr/error.h"
44
60
  #include "src/core/lib/iomgr/sockaddr.h"
61
+ #include "src/core/lib/json/json.h"
62
+ #include "src/core/lib/transport/error_utils.h"
45
63
 
46
64
  namespace grpc_core {
47
65
 
@@ -64,7 +82,7 @@ bool XdsListenerResource::DownstreamTlsContext::Empty() const {
64
82
  //
65
83
 
66
84
  std::string XdsListenerResource::HttpConnectionManager::ToString() const {
67
- absl::InlinedVector<std::string, 4> contents;
85
+ std::vector<std::string> contents;
68
86
  contents.push_back(absl::StrFormat(
69
87
  "route_config_name=%s",
70
88
  !route_config_name.empty() ? route_config_name.c_str() : "<inlined>"));
@@ -109,8 +127,10 @@ std::string XdsListenerResource::FilterChainData::ToString() const {
109
127
  //
110
128
 
111
129
  std::string XdsListenerResource::FilterChainMap::CidrRange::ToString() const {
130
+ auto addr_str = grpc_sockaddr_to_string(&address, false);
112
131
  return absl::StrCat(
113
- "{address_prefix=", grpc_sockaddr_to_string(&address, false),
132
+ "{address_prefix=",
133
+ addr_str.ok() ? addr_str.value() : addr_str.status().ToString(),
114
134
  ", prefix_len=", prefix_len, "}");
115
135
  }
116
136
 
@@ -138,7 +158,7 @@ struct FilterChain {
138
158
  };
139
159
 
140
160
  std::string FilterChain::FilterChainMatch::ToString() const {
141
- absl::InlinedVector<std::string, 8> contents;
161
+ std::vector<std::string> contents;
142
162
  if (destination_port != 0) {
143
163
  contents.push_back(absl::StrCat("destination_port=", destination_port));
144
164
  }
@@ -227,7 +247,7 @@ std::string XdsListenerResource::FilterChainMap::ToString() const {
227
247
  //
228
248
 
229
249
  std::string XdsListenerResource::ToString() const {
230
- absl::InlinedVector<std::string, 4> contents;
250
+ std::vector<std::string> contents;
231
251
  if (type == ListenerType::kTcpListener) {
232
252
  contents.push_back(absl::StrCat("address=", address));
233
253
  contents.push_back(
@@ -330,30 +350,30 @@ grpc_error_handle HttpConnectionManagerParse(
330
350
  return GRPC_ERROR_CREATE_FROM_CPP_STRING(
331
351
  absl::StrCat("no filter config specified for filter name ", name));
332
352
  }
333
- absl::string_view filter_type;
334
- grpc_error_handle error =
335
- ExtractExtensionTypeName(context, any, &filter_type);
336
- if (error != GRPC_ERROR_NONE) return error;
353
+ auto filter_type = ExtractExtensionTypeName(context, any);
354
+ if (!filter_type.ok()) {
355
+ return absl_status_to_grpc_error(filter_type.status());
356
+ }
337
357
  const XdsHttpFilterImpl* filter_impl =
338
- XdsHttpFilterRegistry::GetFilterForType(filter_type);
358
+ XdsHttpFilterRegistry::GetFilterForType(filter_type->type);
339
359
  if (filter_impl == nullptr) {
340
360
  if (is_optional) continue;
341
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
342
- absl::StrCat("no filter registered for config type ", filter_type));
361
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
362
+ "no filter registered for config type ", filter_type->type));
343
363
  }
344
364
  if ((is_client && !filter_impl->IsSupportedOnClients()) ||
345
365
  (!is_client && !filter_impl->IsSupportedOnServers())) {
346
366
  if (is_optional) continue;
347
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
348
- absl::StrFormat("Filter %s is not supported on %s", filter_type,
349
- is_client ? "clients" : "servers"));
367
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
368
+ "Filter %s is not supported on %s", filter_type->type,
369
+ is_client ? "clients" : "servers"));
350
370
  }
351
371
  absl::StatusOr<XdsHttpFilterImpl::FilterConfig> filter_config =
352
372
  filter_impl->GenerateFilterConfig(google_protobuf_Any_value(any),
353
373
  context.arena);
354
374
  if (!filter_config.ok()) {
355
375
  return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
356
- "filter config for type ", filter_type,
376
+ "filter config for type ", filter_type->type,
357
377
  " failed to parse: ", StatusToString(filter_config.status())));
358
378
  }
359
379
  http_connection_manager->http_filters.emplace_back(
@@ -412,7 +432,7 @@ grpc_error_handle HttpConnectionManagerParse(
412
432
  XdsRouteConfigResource rds_update;
413
433
  grpc_error_handle error =
414
434
  XdsRouteConfigResource::Parse(context, route_config, &rds_update);
415
- if (error != GRPC_ERROR_NONE) return error;
435
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
416
436
  http_connection_manager->rds_update = std::move(rds_update);
417
437
  return GRPC_ERROR_NONE;
418
438
  }
@@ -496,7 +516,7 @@ grpc_error_handle DownstreamTlsContextParse(
496
516
  grpc_error_handle error =
497
517
  CommonTlsContext::Parse(context, common_tls_context,
498
518
  &downstream_tls_context->common_tls_context);
499
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
519
+ if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
500
520
  }
501
521
  auto* require_client_certificate =
502
522
  envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(
@@ -549,7 +569,7 @@ grpc_error_handle CidrRangeParse(
549
569
  envoy_config_core_v3_CidrRange_address_prefix(cidr_range_proto));
550
570
  grpc_error_handle error =
551
571
  grpc_string_to_sockaddr(&cidr_range->address, address_prefix.c_str(), 0);
552
- if (error != GRPC_ERROR_NONE) return error;
572
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
553
573
  cidr_range->prefix_len = 0;
554
574
  auto* prefix_len_proto =
555
575
  envoy_config_core_v3_CidrRange_prefix_len(cidr_range_proto);
@@ -583,7 +603,7 @@ grpc_error_handle FilterChainMatchParse(
583
603
  for (size_t i = 0; i < size; i++) {
584
604
  XdsListenerResource::FilterChainMap::CidrRange cidr_range;
585
605
  grpc_error_handle error = CidrRangeParse(prefix_ranges[i], &cidr_range);
586
- if (error != GRPC_ERROR_NONE) return error;
606
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
587
607
  filter_chain_match->prefix_ranges.push_back(cidr_range);
588
608
  }
589
609
  filter_chain_match->source_type =
@@ -598,7 +618,7 @@ grpc_error_handle FilterChainMatchParse(
598
618
  XdsListenerResource::FilterChainMap::CidrRange cidr_range;
599
619
  grpc_error_handle error =
600
620
  CidrRangeParse(source_prefix_ranges[i], &cidr_range);
601
- if (error != GRPC_ERROR_NONE) return error;
621
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
602
622
  filter_chain_match->source_prefix_ranges.push_back(cidr_range);
603
623
  }
604
624
  auto* source_ports = envoy_config_listener_v3_FilterChainMatch_source_ports(
@@ -637,7 +657,7 @@ grpc_error_handle FilterChainParse(
637
657
  if (filter_chain_match != nullptr) {
638
658
  grpc_error_handle error = FilterChainMatchParse(
639
659
  filter_chain_match, &filter_chain->filter_chain_match);
640
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
660
+ if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
641
661
  }
642
662
  filter_chain->filter_chain_data =
643
663
  std::make_shared<XdsListenerResource::FilterChainData>();
@@ -679,7 +699,7 @@ grpc_error_handle FilterChainParse(
679
699
  grpc_error_handle error = HttpConnectionManagerParse(
680
700
  false /* is_client */, context, http_connection_manager, is_v2,
681
701
  &filter_chain->filter_chain_data->http_connection_manager);
682
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
702
+ if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
683
703
  }
684
704
  }
685
705
  }
@@ -690,7 +710,7 @@ grpc_error_handle FilterChainParse(
690
710
  grpc_error_handle error = DownstreamTlsContextParse(
691
711
  context, transport_socket,
692
712
  &filter_chain->filter_chain_data->downstream_tls_context);
693
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
713
+ if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
694
714
  }
695
715
  return GRPC_ERROR_CREATE_FROM_VECTOR("Error parsing FilterChain", &errors);
696
716
  }
@@ -759,7 +779,7 @@ grpc_error_handle AddFilterChainDataForSourcePorts(
759
779
  for (uint32_t port : filter_chain.filter_chain_match.source_ports) {
760
780
  grpc_error_handle error =
761
781
  AddFilterChainDataForSourcePort(filter_chain, ports_map, port);
762
- if (error != GRPC_ERROR_NONE) return error;
782
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
763
783
  }
764
784
  }
765
785
  return GRPC_ERROR_NONE;
@@ -776,16 +796,19 @@ grpc_error_handle AddFilterChainDataForSourceIpRange(
776
796
  } else {
777
797
  for (const auto& prefix_range :
778
798
  filter_chain.filter_chain_match.source_prefix_ranges) {
799
+ auto addr_str = grpc_sockaddr_to_string(&prefix_range.address, false);
800
+ if (!addr_str.ok()) {
801
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
802
+ }
779
803
  auto insert_result = source_ip_map->emplace(
780
- absl::StrCat(grpc_sockaddr_to_string(&prefix_range.address, false),
781
- "/", prefix_range.prefix_len),
804
+ absl::StrCat(*addr_str, "/", prefix_range.prefix_len),
782
805
  XdsListenerResource::FilterChainMap::SourceIp());
783
806
  if (insert_result.second) {
784
807
  insert_result.first->second.prefix_range.emplace(prefix_range);
785
808
  }
786
809
  grpc_error_handle error = AddFilterChainDataForSourcePorts(
787
810
  filter_chain, &insert_result.first->second.ports_map);
788
- if (error != GRPC_ERROR_NONE) return error;
811
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
789
812
  }
790
813
  }
791
814
  return GRPC_ERROR_NONE;
@@ -860,16 +883,19 @@ grpc_error_handle AddFilterChainDataForDestinationIpRange(
860
883
  } else {
861
884
  for (const auto& prefix_range :
862
885
  filter_chain.filter_chain_match.prefix_ranges) {
886
+ auto addr_str = grpc_sockaddr_to_string(&prefix_range.address, false);
887
+ if (!addr_str.ok()) {
888
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
889
+ }
863
890
  auto insert_result = destination_ip_map->emplace(
864
- absl::StrCat(grpc_sockaddr_to_string(&prefix_range.address, false),
865
- "/", prefix_range.prefix_len),
891
+ absl::StrCat(*addr_str, "/", prefix_range.prefix_len),
866
892
  InternalFilterChainMap::DestinationIp());
867
893
  if (insert_result.second) {
868
894
  insert_result.first->second.prefix_range.emplace(prefix_range);
869
895
  }
870
896
  grpc_error_handle error = AddFilterChainDataForServerNames(
871
897
  filter_chain, &insert_result.first->second);
872
- if (error != GRPC_ERROR_NONE) return error;
898
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
873
899
  }
874
900
  }
875
901
  return GRPC_ERROR_NONE;
@@ -903,7 +929,7 @@ grpc_error_handle BuildFilterChainMap(
903
929
  if (filter_chain.filter_chain_match.destination_port != 0) continue;
904
930
  grpc_error_handle error = AddFilterChainDataForDestinationIpRange(
905
931
  filter_chain, &internal_filter_chain_map.destination_ip_map);
906
- if (error != GRPC_ERROR_NONE) return error;
932
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
907
933
  }
908
934
  *filter_chain_map =
909
935
  BuildFromInternalFilterChainMap(&internal_filter_chain_map);
@@ -918,7 +944,7 @@ grpc_error_handle LdsResourceParseServer(
918
944
  grpc_error_handle error =
919
945
  AddressParse(envoy_config_listener_v3_Listener_address(listener),
920
946
  &lds_update->address);
921
- if (error != GRPC_ERROR_NONE) return error;
947
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
922
948
  const auto* use_original_dst =
923
949
  envoy_config_listener_v3_Listener_use_original_dst(listener);
924
950
  if (use_original_dst != nullptr) {
@@ -935,19 +961,19 @@ grpc_error_handle LdsResourceParseServer(
935
961
  for (size_t i = 0; i < size; i++) {
936
962
  FilterChain filter_chain;
937
963
  error = FilterChainParse(context, filter_chains[i], is_v2, &filter_chain);
938
- if (error != GRPC_ERROR_NONE) return error;
964
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
939
965
  parsed_filter_chains.push_back(std::move(filter_chain));
940
966
  }
941
967
  error =
942
968
  BuildFilterChainMap(parsed_filter_chains, &lds_update->filter_chain_map);
943
- if (error != GRPC_ERROR_NONE) return error;
969
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
944
970
  auto* default_filter_chain =
945
971
  envoy_config_listener_v3_Listener_default_filter_chain(listener);
946
972
  if (default_filter_chain != nullptr) {
947
973
  FilterChain filter_chain;
948
974
  error =
949
975
  FilterChainParse(context, default_filter_chain, is_v2, &filter_chain);
950
- if (error != GRPC_ERROR_NONE) return error;
976
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
951
977
  if (filter_chain.filter_chain_data != nullptr) {
952
978
  lds_update->default_filter_chain =
953
979
  std::move(*filter_chain.filter_chain_data);
@@ -968,10 +994,12 @@ grpc_error_handle LdsResourceParse(
968
994
  envoy_config_listener_v3_Listener_api_listener(listener);
969
995
  const envoy_config_core_v3_Address* address =
970
996
  envoy_config_listener_v3_Listener_address(listener);
971
- if (api_listener != nullptr && address != nullptr) {
972
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
973
- "Listener has both address and ApiListener");
974
- }
997
+ // TODO(roth): Re-enable the following check once
998
+ // github.com/istio/istio/issues/38914 is resolved.
999
+ // if (api_listener != nullptr && address != nullptr) {
1000
+ // return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1001
+ // "Listener has both address and ApiListener");
1002
+ // }
975
1003
  if (api_listener == nullptr && address == nullptr) {
976
1004
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
977
1005
  "Listener has neither address nor ApiListener");
@@ -1017,7 +1045,7 @@ absl::StatusOr<XdsResourceType::DecodeResult> XdsListenerResourceType::Decode(
1017
1045
  auto listener_data = absl::make_unique<ResourceDataSubclass>();
1018
1046
  grpc_error_handle error =
1019
1047
  LdsResourceParse(context, resource, is_v2, &listener_data->resource);
1020
- if (error != GRPC_ERROR_NONE) {
1048
+ if (!GRPC_ERROR_IS_NONE(error)) {
1021
1049
  std::string error_str = grpc_error_std_string(error);
1022
1050
  GRPC_ERROR_UNREF(error);
1023
1051
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
@@ -19,8 +19,14 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
+ #include <stdint.h>
23
+ #include <string.h>
24
+
25
+ #include <algorithm>
22
26
  #include <array>
27
+ #include <cstdint>
23
28
  #include <map>
29
+ #include <memory>
24
30
  #include <string>
25
31
  #include <vector>
26
32
 
@@ -29,12 +35,15 @@
29
35
  #include "absl/types/optional.h"
30
36
  #include "envoy/config/listener/v3/listener.upbdefs.h"
31
37
  #include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h"
38
+ #include "upb/def.h"
32
39
 
33
- #include "src/core/ext/xds/xds_client.h"
40
+ #include "src/core/ext/xds/upb_utils.h"
34
41
  #include "src/core/ext/xds/xds_common_types.h"
35
42
  #include "src/core/ext/xds/xds_http_filters.h"
36
43
  #include "src/core/ext/xds/xds_resource_type_impl.h"
37
44
  #include "src/core/ext/xds/xds_route_config.h"
45
+ #include "src/core/lib/gprpp/time.h"
46
+ #include "src/core/lib/iomgr/resolved_address.h"
38
47
 
39
48
  namespace grpc_core {
40
49
 
@@ -14,6 +14,8 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
+ #ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
18
+ #define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
17
19
  #include <grpc/support/port_platform.h>
18
20
 
19
21
  #include <memory>
@@ -21,12 +23,10 @@
21
23
 
22
24
  #include "absl/status/statusor.h"
23
25
  #include "absl/strings/string_view.h"
26
+ #include "upb/def.h"
24
27
 
25
28
  #include "src/core/ext/xds/upb_utils.h"
26
29
 
27
- #ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
28
- #define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
29
-
30
30
  namespace grpc_core {
31
31
 
32
32
  // Interface for an xDS resource type.
@@ -14,13 +14,17 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
+ #ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H
18
+ #define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H
17
19
  #include <grpc/support/port_platform.h>
18
20
 
21
+ #include <memory>
22
+
23
+ #include "absl/strings/string_view.h"
24
+
19
25
  #include "src/core/ext/xds/xds_client.h"
20
26
  #include "src/core/ext/xds/xds_resource_type.h"
21
-
22
- #ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H
23
- #define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H
27
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
24
28
 
25
29
  namespace grpc_core {
26
30
 
@@ -16,37 +16,64 @@
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
18
 
19
+ #include "src/core/ext/xds/xds_route_config.h"
20
+
21
+ #include <stddef.h>
22
+ #include <stdint.h>
23
+
24
+ #include <map>
25
+ #include <memory>
26
+ #include <set>
27
+ #include <string>
28
+ #include <type_traits>
29
+ #include <utility>
30
+ #include <vector>
31
+
19
32
  #include "absl/memory/memory.h"
33
+ #include "absl/status/status.h"
34
+ #include "absl/status/statusor.h"
20
35
  #include "absl/strings/str_cat.h"
21
36
  #include "absl/strings/str_format.h"
22
37
  #include "absl/strings/str_join.h"
23
38
  #include "absl/strings/str_split.h"
24
39
  #include "absl/strings/string_view.h"
40
+ #include "absl/types/optional.h"
41
+ #include "absl/types/variant.h"
25
42
  #include "envoy/config/core/v3/base.upb.h"
26
43
  #include "envoy/config/core/v3/extension.upb.h"
27
44
  #include "envoy/config/route/v3/route.upb.h"
28
45
  #include "envoy/config/route/v3/route.upbdefs.h"
29
46
  #include "envoy/config/route/v3/route_components.upb.h"
30
- #include "envoy/config/route/v3/route_components.upbdefs.h"
31
47
  #include "envoy/type/matcher/v3/regex.upb.h"
32
- #include "envoy/type/matcher/v3/string.upb.h"
33
48
  #include "envoy/type/v3/percent.upb.h"
34
49
  #include "envoy/type/v3/range.upb.h"
35
50
  #include "google/protobuf/any.upb.h"
51
+ #include "google/protobuf/duration.upb.h"
36
52
  #include "google/protobuf/wrappers.upb.h"
53
+ #include "re2/re2.h"
54
+ #include "upb/def.h"
37
55
  #include "upb/text_encode.h"
38
56
  #include "upb/upb.h"
39
- #include "upb/upb.hpp"
57
+
58
+ #include <grpc/status.h>
59
+ #include <grpc/support/alloc.h>
60
+ #include <grpc/support/log.h>
40
61
 
41
62
  #include "src/core/ext/xds/upb_utils.h"
42
- #include "src/core/ext/xds/xds_api.h"
43
63
  #include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
44
64
  #include "src/core/ext/xds/xds_common_types.h"
65
+ #include "src/core/ext/xds/xds_http_filters.h"
45
66
  #include "src/core/ext/xds/xds_resource_type.h"
67
+ #include "src/core/ext/xds/xds_resource_type_impl.h"
46
68
  #include "src/core/ext/xds/xds_routing.h"
69
+ #include "src/core/lib/channel/status_util.h"
70
+ #include "src/core/lib/debug/trace.h"
47
71
  #include "src/core/lib/gpr/env.h"
48
72
  #include "src/core/lib/gpr/string.h"
73
+ #include "src/core/lib/gprpp/status_helper.h"
74
+ #include "src/core/lib/gprpp/time.h"
49
75
  #include "src/core/lib/iomgr/error.h"
76
+ #include "src/core/lib/matchers/matchers.h"
50
77
  #include "src/core/lib/transport/error_utils.h"
51
78
 
52
79
  namespace grpc_core {
@@ -336,19 +363,19 @@ grpc_error_handle ClusterSpecifierPluginParse(
336
363
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
337
364
  "Could not obtrain TypedExtensionConfig for plugin config.");
338
365
  }
339
- absl::string_view plugin_type;
340
- grpc_error_handle error =
341
- ExtractExtensionTypeName(context, any, &plugin_type);
342
- if (error != GRPC_ERROR_NONE) return error;
366
+ auto plugin_type = ExtractExtensionTypeName(context, any);
367
+ if (!plugin_type.ok()) {
368
+ return absl_status_to_grpc_error(plugin_type.status());
369
+ }
343
370
  bool is_optional = envoy_config_route_v3_ClusterSpecifierPlugin_is_optional(
344
371
  cluster_specifier_plugin[i]);
345
372
  const XdsClusterSpecifierPluginImpl* cluster_specifier_plugin_impl =
346
- XdsClusterSpecifierPluginRegistry::GetPluginForType(plugin_type);
373
+ XdsClusterSpecifierPluginRegistry::GetPluginForType(plugin_type->type);
347
374
  std::string lb_policy_config;
348
375
  if (cluster_specifier_plugin_impl == nullptr) {
349
376
  if (!is_optional) {
350
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
351
- absl::StrCat("Unknown ClusterSpecifierPlugin type ", plugin_type));
377
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
378
+ "Unknown ClusterSpecifierPlugin type ", plugin_type->type));
352
379
  }
353
380
  // Optional plugin, leave lb_policy_config empty.
354
381
  } else {
@@ -601,22 +628,23 @@ grpc_error_handle ParseTypedPerFilterConfig(
601
628
  absl::StrCat("no filter config specified for filter name ", key));
602
629
  }
603
630
  }
604
- grpc_error_handle error =
605
- ExtractExtensionTypeName(context, any, &filter_type);
606
- if (error != GRPC_ERROR_NONE) return error;
631
+ auto type = ExtractExtensionTypeName(context, any);
632
+ if (!type.ok()) {
633
+ return absl_status_to_grpc_error(type.status());
634
+ }
607
635
  const XdsHttpFilterImpl* filter_impl =
608
- XdsHttpFilterRegistry::GetFilterForType(filter_type);
636
+ XdsHttpFilterRegistry::GetFilterForType(type->type);
609
637
  if (filter_impl == nullptr) {
610
638
  if (is_optional) continue;
611
639
  return GRPC_ERROR_CREATE_FROM_CPP_STRING(
612
- absl::StrCat("no filter registered for config type ", filter_type));
640
+ absl::StrCat("no filter registered for config type ", type->type));
613
641
  }
614
642
  absl::StatusOr<XdsHttpFilterImpl::FilterConfig> filter_config =
615
643
  filter_impl->GenerateFilterConfigOverride(
616
644
  google_protobuf_Any_value(any), context.arena);
617
645
  if (!filter_config.ok()) {
618
646
  return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
619
- "filter config for type ", filter_type,
647
+ "filter config for type ", type->type,
620
648
  " failed to parse: ", StatusToString(filter_config.status())));
621
649
  }
622
650
  (*typed_per_filter_config)[std::string(key)] = std::move(*filter_config);
@@ -767,7 +795,7 @@ grpc_error_handle RouteActionParse(
767
795
  envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_key,
768
796
  envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_value,
769
797
  &cluster.typed_per_filter_config);
770
- if (error != GRPC_ERROR_NONE) return error;
798
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
771
799
  }
772
800
  action_weighted_clusters.emplace_back(std::move(cluster));
773
801
  }
@@ -906,7 +934,7 @@ grpc_error_handle RouteActionParse(
906
934
  if (retry_policy != nullptr) {
907
935
  absl::optional<XdsRouteConfigResource::RetryPolicy> retry;
908
936
  grpc_error_handle error = RetryPolicyParse(context, retry_policy, &retry);
909
- if (error != GRPC_ERROR_NONE) return error;
937
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
910
938
  route->retry_policy = retry;
911
939
  }
912
940
  return GRPC_ERROR_NONE;
@@ -922,7 +950,7 @@ grpc_error_handle XdsRouteConfigResource::Parse(
922
950
  if (XdsRlsEnabled()) {
923
951
  grpc_error_handle error =
924
952
  ClusterSpecifierPluginParse(context, route_config, rds_update);
925
- if (error != GRPC_ERROR_NONE) return error;
953
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
926
954
  }
927
955
  // Get the virtual hosts.
928
956
  size_t num_virtual_hosts;
@@ -958,7 +986,7 @@ grpc_error_handle XdsRouteConfigResource::Parse(
958
986
  envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_key,
959
987
  envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_value,
960
988
  &vhost.typed_per_filter_config);
961
- if (error != GRPC_ERROR_NONE) return error;
989
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
962
990
  }
963
991
  // Parse retry policy.
964
992
  absl::optional<XdsRouteConfigResource::RetryPolicy>
@@ -968,7 +996,7 @@ grpc_error_handle XdsRouteConfigResource::Parse(
968
996
  if (retry_policy != nullptr) {
969
997
  grpc_error_handle error =
970
998
  RetryPolicyParse(context, retry_policy, &virtual_host_retry_policy);
971
- if (error != GRPC_ERROR_NONE) return error;
999
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
972
1000
  }
973
1001
  // Parse routes.
974
1002
  size_t num_routes;
@@ -1001,12 +1029,12 @@ grpc_error_handle XdsRouteConfigResource::Parse(
1001
1029
  bool ignore_route = false;
1002
1030
  grpc_error_handle error =
1003
1031
  RoutePathMatchParse(match, &route, &ignore_route);
1004
- if (error != GRPC_ERROR_NONE) return error;
1032
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
1005
1033
  if (ignore_route) continue;
1006
1034
  error = RouteHeaderMatchersParse(match, &route);
1007
- if (error != GRPC_ERROR_NONE) return error;
1035
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
1008
1036
  error = RouteRuntimeFractionParse(match, &route);
1009
- if (error != GRPC_ERROR_NONE) return error;
1037
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
1010
1038
  if (envoy_config_route_v3_Route_has_route(routes[j])) {
1011
1039
  route.action.emplace<XdsRouteConfigResource::Route::RouteAction>();
1012
1040
  auto& route_action =
@@ -1014,7 +1042,7 @@ grpc_error_handle XdsRouteConfigResource::Parse(
1014
1042
  error = RouteActionParse(context, routes[j],
1015
1043
  rds_update->cluster_specifier_plugin_map,
1016
1044
  &route_action, &ignore_route);
1017
- if (error != GRPC_ERROR_NONE) return error;
1045
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
1018
1046
  if (ignore_route) continue;
1019
1047
  if (route_action.retry_policy == absl::nullopt &&
1020
1048
  retry_policy != nullptr) {
@@ -1042,7 +1070,7 @@ grpc_error_handle XdsRouteConfigResource::Parse(
1042
1070
  envoy_config_route_v3_Route_TypedPerFilterConfigEntry_key,
1043
1071
  envoy_config_route_v3_Route_TypedPerFilterConfigEntry_value,
1044
1072
  &route.typed_per_filter_config);
1045
- if (error != GRPC_ERROR_NONE) return error;
1073
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
1046
1074
  }
1047
1075
  vhost.routes.emplace_back(std::move(route));
1048
1076
  }
@@ -1100,7 +1128,7 @@ XdsRouteConfigResourceType::Decode(const XdsEncodingContext& context,
1100
1128
  auto route_config_data = absl::make_unique<ResourceDataSubclass>();
1101
1129
  grpc_error_handle error = XdsRouteConfigResource::Parse(
1102
1130
  context, resource, &route_config_data->resource);
1103
- if (error != GRPC_ERROR_NONE) {
1131
+ if (!GRPC_ERROR_IS_NONE(error)) {
1104
1132
  std::string error_str = grpc_error_std_string(error);
1105
1133
  GRPC_ERROR_UNREF(error);
1106
1134
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
@@ -19,22 +19,31 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
+ #include <stddef.h>
23
+ #include <stdint.h>
24
+
25
+ #include <algorithm>
22
26
  #include <map>
27
+ #include <memory>
23
28
  #include <string>
24
29
  #include <vector>
25
30
 
31
+ #include "absl/status/statusor.h"
32
+ #include "absl/strings/string_view.h"
26
33
  #include "absl/types/optional.h"
27
34
  #include "absl/types/variant.h"
28
35
  #include "envoy/config/route/v3/route.upb.h"
29
36
  #include "envoy/config/route/v3/route.upbdefs.h"
30
37
  #include "re2/re2.h"
38
+ #include "upb/def.h"
31
39
 
32
- #include "src/core/ext/xds/xds_client.h"
40
+ #include "src/core/ext/xds/upb_utils.h"
33
41
  #include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
34
- #include "src/core/ext/xds/xds_common_types.h"
35
42
  #include "src/core/ext/xds/xds_http_filters.h"
36
43
  #include "src/core/ext/xds/xds_resource_type_impl.h"
37
44
  #include "src/core/lib/channel/status_util.h"
45
+ #include "src/core/lib/gprpp/time.h"
46
+ #include "src/core/lib/iomgr/error.h"
38
47
  #include "src/core/lib/matchers/matchers.h"
39
48
 
40
49
  namespace grpc_core {
@@ -20,7 +20,23 @@
20
20
 
21
21
  #include "src/core/ext/xds/xds_routing.h"
22
22
 
23
+ #include <stdint.h>
24
+ #include <stdlib.h>
25
+
26
+ #include <algorithm>
23
27
  #include <cctype>
28
+ #include <utility>
29
+
30
+ #include "absl/status/status.h"
31
+ #include "absl/status/statusor.h"
32
+ #include "absl/strings/match.h"
33
+ #include "absl/strings/str_cat.h"
34
+
35
+ #include <grpc/support/log.h>
36
+
37
+ #include "src/core/ext/xds/xds_http_filters.h"
38
+ #include "src/core/lib/channel/channel_args.h"
39
+ #include "src/core/lib/matchers/matchers.h"
24
40
 
25
41
  namespace grpc_core {
26
42