grpc 1.71.0 → 1.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +78 -75
  3. data/include/grpc/event_engine/memory_request.h +3 -3
  4. data/include/grpc/impl/channel_arg_names.h +70 -50
  5. data/include/grpc/support/workaround_list.h +1 -4
  6. data/src/core/{lib/transport → call}/call_arena_allocator.cc +1 -1
  7. data/src/core/{lib/transport → call}/call_arena_allocator.h +3 -3
  8. data/src/core/{lib/transport → call}/call_destination.h +4 -4
  9. data/src/core/{lib/transport → call}/call_filters.cc +2 -2
  10. data/src/core/{lib/transport → call}/call_filters.h +25 -6
  11. data/src/core/{lib/channel → call}/call_finalization.h +3 -3
  12. data/src/core/{lib/transport → call}/call_spine.cc +1 -1
  13. data/src/core/{lib/transport → call}/call_spine.h +68 -26
  14. data/src/core/{lib/transport → call}/call_state.cc +1 -1
  15. data/src/core/{lib/transport → call}/call_state.h +3 -3
  16. data/src/core/{lib/surface → call}/client_call.cc +9 -7
  17. data/src/core/{lib/surface → call}/client_call.h +4 -4
  18. data/src/core/{lib/transport → call}/custom_metadata.h +3 -3
  19. data/src/core/{lib/transport → call}/interception_chain.cc +5 -5
  20. data/src/core/{lib/transport → call}/interception_chain.h +7 -7
  21. data/src/core/{lib/transport → call}/message.cc +1 -1
  22. data/src/core/{lib/transport → call}/message.h +7 -3
  23. data/src/core/{lib/transport → call}/metadata.cc +2 -2
  24. data/src/core/{lib/transport → call}/metadata.h +4 -4
  25. data/src/core/{lib/transport → call}/metadata_batch.cc +1 -1
  26. data/src/core/{lib/transport → call}/metadata_batch.h +7 -7
  27. data/src/core/{lib/transport → call}/metadata_compression_traits.h +3 -3
  28. data/src/core/{lib/transport → call}/metadata_info.cc +27 -9
  29. data/src/core/{lib/transport → call}/metadata_info.h +4 -4
  30. data/src/core/{lib/transport → call}/parsed_metadata.cc +1 -1
  31. data/src/core/{lib/transport → call}/parsed_metadata.h +3 -3
  32. data/src/core/call/request_buffer.h +3 -3
  33. data/src/core/call/security_context.cc +125 -0
  34. data/src/core/call/security_context.h +114 -0
  35. data/src/core/{lib/surface → call}/server_call.cc +3 -3
  36. data/src/core/{lib/surface → call}/server_call.h +5 -5
  37. data/src/core/{lib/transport → call}/simple_slice_based_metadata.h +4 -4
  38. data/src/core/{lib/channel → call}/status_util.cc +1 -1
  39. data/src/core/{lib/channel → call}/status_util.h +3 -3
  40. data/src/core/client_channel/client_channel.cc +24 -16
  41. data/src/core/client_channel/client_channel.h +4 -3
  42. data/src/core/client_channel/client_channel_filter.cc +10 -20
  43. data/src/core/client_channel/client_channel_filter.h +1 -1
  44. data/src/core/client_channel/client_channel_internal.h +1 -1
  45. data/src/core/client_channel/config_selector.h +2 -2
  46. data/src/core/client_channel/direct_channel.cc +2 -2
  47. data/src/core/client_channel/dynamic_filters.cc +0 -1
  48. data/src/core/client_channel/dynamic_filters.h +0 -1
  49. data/src/core/client_channel/lb_metadata.h +1 -1
  50. data/src/core/client_channel/load_balanced_call_destination.cc +1 -1
  51. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  52. data/src/core/client_channel/retry_filter_legacy_call_data.cc +43 -41
  53. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -6
  54. data/src/core/client_channel/retry_interceptor.h +1 -1
  55. data/src/core/client_channel/retry_service_config.cc +1 -1
  56. data/src/core/client_channel/retry_service_config.h +1 -1
  57. data/src/core/client_channel/retry_throttle.cc +30 -34
  58. data/src/core/client_channel/retry_throttle.h +10 -2
  59. data/src/core/client_channel/subchannel.cc +7 -8
  60. data/src/core/client_channel/subchannel.h +1 -2
  61. data/src/core/client_channel/subchannel_stream_client.cc +14 -11
  62. data/src/core/client_channel/subchannel_stream_client.h +2 -2
  63. data/src/core/config/core_configuration.h +2 -2
  64. data/src/core/credentials/call/call_credentials.h +157 -0
  65. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.cc +4 -4
  66. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.h +4 -4
  67. data/src/core/{lib/security/credentials/composite/composite_credentials.cc → credentials/call/composite/composite_call_credentials.cc} +4 -57
  68. data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
  69. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.cc +2 -2
  70. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.h +5 -5
  71. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.cc +1 -1
  72. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.h +3 -3
  73. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.cc +6 -6
  74. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.h +5 -5
  75. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.cc +1 -1
  76. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.h +4 -4
  77. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.cc +3 -2
  78. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.h +4 -4
  79. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +3 -2
  80. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.h +6 -6
  81. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.cc +2 -2
  82. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.h +4 -4
  83. data/src/core/{lib/security/util → credentials/call}/json_util.cc +1 -1
  84. data/src/core/{lib/security/util → credentials/call}/json_util.h +3 -3
  85. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.cc +2 -2
  86. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.h +3 -3
  87. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.cc +3 -3
  88. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.h +5 -5
  89. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.cc +3 -2
  90. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.h +3 -3
  91. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.cc +4 -3
  92. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.h +5 -5
  93. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.cc +2 -2
  94. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.h +5 -5
  95. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.cc +1 -1
  96. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.h +5 -5
  97. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.cc +4 -4
  98. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.h +5 -5
  99. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.cc +4 -4
  100. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.h +4 -4
  101. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.cc +1 -1
  102. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.h +3 -3
  103. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_linux.cc +1 -1
  104. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_no_op.cc +1 -1
  105. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_windows.cc +1 -1
  106. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_client_options.cc +1 -1
  107. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.cc +1 -1
  108. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.h +3 -3
  109. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_server_options.cc +1 -1
  110. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry.h +4 -4
  111. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry_init.cc +21 -17
  112. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
  113. data/src/core/{lib/security/credentials/composite/composite_credentials.h → credentials/transport/composite/composite_channel_credentials.h} +6 -51
  114. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.cc +4 -26
  115. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.h +5 -37
  116. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.cc +4 -4
  117. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.h +4 -4
  118. data/src/core/{lib/security/credentials → credentials/transport}/google_default/credentials_generic.cc +2 -2
  119. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.cc +31 -19
  120. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.h +5 -5
  121. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.cc +2 -2
  122. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.h +5 -5
  123. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.cc +2 -2
  124. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.h +5 -5
  125. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.cc +2 -2
  126. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.h +5 -5
  127. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.cc +4 -4
  128. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.h +4 -4
  129. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.cc +2 -2
  130. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.h +3 -3
  131. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.cc +2 -2
  132. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.h +6 -6
  133. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.cc +5 -5
  134. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.h +4 -4
  135. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_factory.h +3 -3
  136. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.cc +1 -1
  137. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.h +4 -4
  138. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.cc +1 -1
  139. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.h +4 -4
  140. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_match.cc +1 -1
  141. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.cc +2 -2
  142. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.h +5 -5
  143. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.cc +2 -2
  144. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.h +3 -3
  145. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.cc +1 -1
  146. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.h +7 -7
  147. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.cc +1 -1
  148. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.h +3 -3
  149. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots.h +3 -3
  150. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_fallback.cc +1 -1
  151. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.cc +2 -2
  152. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.h +3 -3
  153. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_windows.cc +1 -1
  154. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.cc +3 -3
  155. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.h +4 -4
  156. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.cc +4 -4
  157. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.h +5 -5
  158. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.cc +6 -6
  159. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.h +6 -6
  160. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.cc +1 -1
  161. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.h +3 -3
  162. data/src/core/{lib/security/credentials/credentials.cc → credentials/transport/transport_credentials.cc} +1 -3
  163. data/src/core/{lib/security/credentials/credentials.h → credentials/transport/transport_credentials.h} +5 -121
  164. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.cc +5 -5
  165. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.h +6 -6
  166. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
  167. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -5
  168. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -2
  169. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  170. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  171. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  172. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  173. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  174. data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -1
  175. data/src/core/ext/filters/http/message_compress/compression_filter.h +1 -1
  176. data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
  177. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  178. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -2
  179. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -1
  180. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +3 -3
  181. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +8 -5
  182. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -1
  183. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
  184. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +1 -3
  185. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +58 -57
  186. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
  187. data/src/core/ext/transport/chttp2/transport/frame.cc +89 -68
  188. data/src/core/ext/transport/chttp2/transport/frame.h +37 -1
  189. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
  190. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -3
  191. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -2
  192. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -2
  193. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +1 -1
  194. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
  195. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -1
  196. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
  197. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +10 -8
  198. data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -2
  199. data/src/core/ext/transport/chttp2/transport/http2_status.h +52 -0
  200. data/src/core/ext/transport/chttp2/transport/internal.h +11 -14
  201. data/src/core/ext/transport/chttp2/transport/parsing.cc +36 -23
  202. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -14
  203. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
  204. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +1 -1
  205. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +65 -65
  206. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +28 -28
  207. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +14 -14
  208. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +6 -6
  209. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +6 -6
  210. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +133 -133
  212. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +71 -71
  213. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +26 -26
  214. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +7 -7
  215. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +216 -218
  216. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +66 -66
  217. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +27 -27
  218. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +9 -9
  219. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +326 -328
  220. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +103 -103
  221. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +58 -58
  222. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +14 -14
  223. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +22 -24
  224. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +3 -3
  225. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +29 -29
  226. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +16 -16
  227. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +186 -192
  228. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +54 -54
  229. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +54 -54
  230. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +21 -21
  231. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +59 -61
  232. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +15 -15
  233. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +100 -100
  234. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +34 -34
  235. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +12 -12
  236. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +5 -5
  237. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +118 -118
  238. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +39 -39
  239. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +19 -19
  240. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +9 -9
  241. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +27 -27
  242. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +10 -10
  243. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +12 -14
  244. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +2 -2
  245. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +41 -41
  246. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +16 -16
  247. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +24 -24
  248. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -9
  249. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +139 -139
  250. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +46 -46
  251. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +61 -61
  252. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +20 -20
  253. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +3 -3
  254. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -1
  255. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +6 -6
  256. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -4
  257. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +33 -33
  258. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +14 -14
  259. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +12 -14
  260. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +2 -2
  261. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -54
  262. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +10 -10
  263. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +620 -626
  264. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +215 -215
  265. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +13 -13
  266. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +4 -4
  267. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +3 -3
  268. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +2 -2
  269. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +7 -7
  270. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +3 -3
  271. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +15 -15
  272. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +7 -7
  273. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +7 -7
  274. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +3 -3
  275. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +16 -16
  276. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -10
  277. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +306 -312
  278. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +96 -96
  279. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +61 -61
  280. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -27
  281. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +19 -19
  282. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +6 -6
  283. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +25 -25
  284. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +9 -9
  285. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +34 -34
  286. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +9 -9
  287. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +3 -3
  288. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -2
  289. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +294 -294
  290. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +105 -105
  291. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +3 -3
  292. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +1 -1
  293. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +23 -23
  294. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +8 -8
  295. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +84 -84
  296. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +28 -28
  297. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +87 -87
  298. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +31 -31
  299. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +24 -24
  300. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +5 -5
  301. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +130 -132
  302. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +43 -43
  303. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +6 -6
  304. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -2
  305. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +60 -60
  306. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +26 -26
  307. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -7
  308. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +3 -3
  309. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +6 -6
  310. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -2
  311. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +7 -7
  312. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +3 -3
  313. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +11 -11
  314. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +4 -4
  315. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +85 -89
  316. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +20 -20
  317. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +80 -83
  318. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +27 -27
  319. data/src/core/ext/upb-gen/google/api/http.upb.h +51 -51
  320. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -22
  321. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +327 -301
  322. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +97 -85
  323. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +1 -0
  324. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +9 -11
  325. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +9 -10
  326. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +110 -113
  327. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +25 -25
  328. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +6 -6
  329. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +4 -4
  330. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +21 -22
  331. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -3
  332. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +70 -72
  333. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +17 -17
  334. data/src/core/ext/upb-gen/validate/validate.upb.h +368 -368
  335. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +117 -117
  336. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +9 -10
  337. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +7 -7
  338. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +3 -3
  339. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +12 -12
  340. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -2
  341. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +27 -30
  342. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -7
  343. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +3 -3
  344. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +3 -3
  345. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +1 -1
  346. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +22 -24
  347. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +3 -3
  348. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +98 -87
  349. data/src/core/{lib/security/transport → filter/auth}/auth_filters.h +8 -7
  350. data/src/core/{lib/security/transport → filter/auth}/client_auth_filter.cc +7 -6
  351. data/src/core/{lib/security/transport → filter/auth}/server_auth_filter.cc +5 -4
  352. data/src/core/handshaker/handshaker.cc +0 -8
  353. data/src/core/handshaker/security/security_handshaker.cc +1 -1
  354. data/src/core/handshaker/security/security_handshaker.h +1 -1
  355. data/src/core/lib/channel/channel_args.h +49 -30
  356. data/src/core/lib/channel/channel_stack.h +1 -2
  357. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  358. data/src/core/lib/channel/connected_channel.cc +2 -2
  359. data/src/core/lib/channel/promise_based_filter.h +3 -3
  360. data/src/core/lib/debug/trace_flags.cc +2 -4
  361. data/src/core/lib/debug/trace_flags.h +1 -2
  362. data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -6
  363. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -1
  364. data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
  365. data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
  366. data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
  367. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +0 -2
  368. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +1 -3
  369. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +26 -0
  370. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +4 -0
  371. data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
  372. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +0 -11
  373. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +10 -2
  374. data/src/core/lib/event_engine/shim.cc +9 -16
  375. data/src/core/lib/event_engine/shim.h +11 -0
  376. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +15 -7
  377. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +2 -1
  378. data/src/core/lib/event_engine/windows/win_socket.cc +11 -0
  379. data/src/core/lib/event_engine/windows/win_socket.h +3 -0
  380. data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -10
  381. data/src/core/lib/event_engine/windows/windows_engine.cc +42 -0
  382. data/src/core/lib/event_engine/windows/windows_engine.h +8 -2
  383. data/src/core/lib/event_engine/windows/windows_listener.cc +5 -6
  384. data/src/core/lib/event_engine/windows/windows_listener.h +9 -4
  385. data/src/core/lib/experiments/experiments.cc +174 -21
  386. data/src/core/lib/experiments/experiments.h +70 -13
  387. data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
  388. data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
  389. data/src/core/lib/iomgr/error.cc +27 -43
  390. data/src/core/lib/iomgr/ev_epoll1_linux.cc +13 -1
  391. data/src/core/lib/iomgr/ev_poll_posix.cc +13 -0
  392. data/src/core/lib/iomgr/polling_entity.cc +2 -7
  393. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  394. data/src/core/lib/iomgr/socket_utils_posix.cc +22 -11
  395. data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
  396. data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
  397. data/src/core/lib/iomgr/tcp_client_posix.cc +11 -15
  398. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  399. data/src/core/lib/iomgr/tcp_posix.cc +58 -31
  400. data/src/core/lib/iomgr/tcp_posix.h +10 -2
  401. data/src/core/lib/iomgr/tcp_server_posix.cc +9 -1
  402. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
  403. data/src/core/lib/iomgr/tcp_server_windows.cc +27 -16
  404. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -2
  405. data/src/core/lib/promise/all_ok.h +31 -0
  406. data/src/core/lib/promise/loop.h +8 -5
  407. data/src/core/lib/promise/map.h +65 -2
  408. data/src/core/lib/promise/party.h +5 -1
  409. data/src/core/lib/promise/poll.h +22 -20
  410. data/src/core/lib/promise/promise.h +2 -2
  411. data/src/core/lib/promise/status_flag.h +23 -11
  412. data/src/core/lib/security/authorization/evaluate_args.cc +1 -1
  413. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  414. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  415. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  416. data/src/core/lib/slice/slice.h +6 -0
  417. data/src/core/lib/surface/call.cc +20 -18
  418. data/src/core/lib/surface/call_utils.cc +3 -3
  419. data/src/core/lib/surface/call_utils.h +3 -3
  420. data/src/core/lib/surface/channel.h +2 -2
  421. data/src/core/lib/surface/channel_init.h +2 -2
  422. data/src/core/lib/surface/completion_queue.cc +77 -17
  423. data/src/core/lib/surface/filter_stack_call.cc +40 -27
  424. data/src/core/lib/surface/filter_stack_call.h +1 -1
  425. data/src/core/lib/surface/init.cc +2 -3
  426. data/src/core/lib/surface/lame_client.cc +1 -1
  427. data/src/core/lib/surface/legacy_channel.cc +27 -23
  428. data/src/core/lib/surface/legacy_channel.h +1 -1
  429. data/src/core/lib/surface/version.cc +2 -2
  430. data/src/core/lib/transport/error_utils.cc +65 -11
  431. data/src/core/lib/transport/error_utils.h +2 -2
  432. data/src/core/lib/transport/status_conversion.cc +16 -14
  433. data/src/core/lib/transport/status_conversion.h +5 -4
  434. data/src/core/lib/transport/transport.h +5 -5
  435. data/src/core/lib/transport/transport_op_string.cc +1 -1
  436. data/src/core/load_balancing/delegating_helper.h +1 -1
  437. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -1
  438. data/src/core/load_balancing/grpclb/grpclb.cc +1 -2
  439. data/src/core/load_balancing/pick_first/pick_first.cc +0 -955
  440. data/src/core/load_balancing/rls/rls.cc +31 -37
  441. data/src/core/load_balancing/weighted_target/weighted_target.cc +1 -1
  442. data/src/core/load_balancing/xds/cds.cc +3 -10
  443. data/src/core/load_balancing/xds/xds_cluster_impl.cc +1 -1
  444. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  445. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -2
  446. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +1 -3
  447. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
  448. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +1 -1
  449. data/src/core/resolver/xds/xds_dependency_manager.cc +8 -3
  450. data/src/core/resolver/xds/xds_resolver.cc +2 -2
  451. data/src/core/server/server.cc +7 -4
  452. data/src/core/server/server.h +1 -1
  453. data/src/core/server/server_call_tracer_filter.cc +1 -1
  454. data/src/core/server/server_config_selector.h +1 -1
  455. data/src/core/server/server_config_selector_filter.cc +1 -1
  456. data/src/core/server/xds_server_config_fetcher.cc +5 -5
  457. data/src/core/service_config/service_config_channel_arg_filter.cc +1 -1
  458. data/src/core/telemetry/call_tracer.cc +2 -4
  459. data/src/core/telemetry/call_tracer.h +3 -3
  460. data/src/core/telemetry/metrics.cc +30 -12
  461. data/src/core/telemetry/metrics.h +15 -3
  462. data/src/core/telemetry/stats_data.cc +75 -2
  463. data/src/core/telemetry/stats_data.h +46 -4
  464. data/src/core/telemetry/tcp_tracer.h +90 -84
  465. data/src/core/{lib/security/context/security_context.cc → transport/auth_context.cc} +1 -96
  466. data/src/core/{lib/security/context/security_context.h → transport/auth_context.h} +6 -76
  467. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  468. data/src/core/tsi/ssl_transport_security.cc +1 -1
  469. data/src/core/util/check_class_size.h +48 -0
  470. data/src/core/util/gcp_metadata_query.cc +1 -1
  471. data/src/core/util/http_client/httpcli.cc +3 -3
  472. data/src/core/util/http_client/httpcli_security_connector.cc +3 -3
  473. data/src/core/util/load_file.cc +26 -14
  474. data/src/core/util/status_helper.cc +86 -63
  475. data/src/core/util/status_helper.h +9 -26
  476. data/src/core/xds/grpc/certificate_provider_store.cc +1 -1
  477. data/src/core/xds/grpc/certificate_provider_store.h +3 -3
  478. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  479. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  480. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +10 -7
  481. data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
  482. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  483. data/src/core/xds/grpc/xds_client_grpc.cc +7 -6
  484. data/src/core/xds/grpc/xds_client_grpc.h +4 -2
  485. data/src/core/xds/grpc/xds_cluster.h +3 -3
  486. data/src/core/xds/grpc/xds_cluster_parser.cc +3 -2
  487. data/src/core/xds/grpc/xds_http_fault_filter.cc +1 -1
  488. data/src/core/xds/grpc/xds_http_filter.h +1 -1
  489. data/src/core/xds/grpc/xds_http_filter_registry.h +1 -1
  490. data/src/core/xds/grpc/xds_route_config.h +1 -1
  491. data/src/core/xds/grpc/xds_route_config_parser.cc +1 -1
  492. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  493. data/src/core/xds/grpc/xds_routing.h +1 -1
  494. data/src/core/xds/grpc/xds_server_grpc.cc +60 -48
  495. data/src/core/xds/grpc/xds_server_grpc.h +23 -13
  496. data/src/core/xds/grpc/xds_server_grpc_interface.h +2 -2
  497. data/src/core/xds/grpc/xds_transport_grpc.cc +5 -5
  498. data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
  499. data/src/core/xds/xds_client/lrs_client.cc +6 -5
  500. data/src/core/xds/xds_client/lrs_client.h +7 -7
  501. data/src/core/xds/xds_client/xds_bootstrap.h +16 -1
  502. data/src/core/xds/xds_client/xds_client.cc +25 -23
  503. data/src/core/xds/xds_client/xds_client.h +3 -1
  504. data/src/core/xds/xds_client/xds_resource_type.h +1 -2
  505. data/src/core/xds/xds_client/xds_transport.h +1 -1
  506. data/src/ruby/ext/grpc/extconf.rb +1 -1
  507. data/src/ruby/lib/grpc/version.rb +1 -1
  508. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +0 -2
  509. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +0 -2
  510. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +0 -2
  511. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +0 -2
  512. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +0 -2
  513. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +0 -2
  514. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +0 -1
  515. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +0 -1
  516. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +0 -2
  517. data/third_party/boringssl-with-bazel/src/crypto/internal.h +20 -3
  518. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -25
  519. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +3 -7
  520. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1 -1
  521. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  522. data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -6
  523. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +2 -1
  524. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  525. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1 -1
  526. data/third_party/upb/upb/base/internal/log2.h +3 -1
  527. data/third_party/upb/upb/base/string_view.h +10 -0
  528. data/third_party/upb/upb/hash/common.c +5 -1
  529. data/third_party/upb/upb/json/decode.c +2 -2
  530. data/third_party/upb/upb/json/decode.h +0 -1
  531. data/third_party/upb/upb/mem/alloc.h +5 -0
  532. data/third_party/upb/upb/mem/arena.c +296 -142
  533. data/third_party/upb/upb/mem/arena.h +47 -11
  534. data/third_party/upb/upb/mem/arena.hpp +4 -20
  535. data/third_party/upb/upb/mem/internal/arena.h +4 -6
  536. data/third_party/upb/upb/message/accessors.h +41 -0
  537. data/third_party/upb/upb/message/compat.c +11 -14
  538. data/third_party/upb/upb/message/compat.h +4 -3
  539. data/third_party/upb/upb/message/copy.c +35 -30
  540. data/third_party/upb/upb/message/internal/accessors.h +139 -10
  541. data/third_party/upb/upb/message/internal/extension.c +28 -25
  542. data/third_party/upb/upb/message/internal/extension.h +21 -5
  543. data/third_party/upb/upb/message/internal/iterator.c +58 -0
  544. data/third_party/upb/upb/message/internal/iterator.h +29 -0
  545. data/third_party/upb/upb/message/internal/map.h +2 -3
  546. data/third_party/upb/upb/message/internal/map_sorter.h +3 -2
  547. data/third_party/upb/upb/message/internal/message.c +48 -29
  548. data/third_party/upb/upb/message/internal/message.h +154 -24
  549. data/third_party/upb/upb/message/map_sorter.c +20 -8
  550. data/third_party/upb/upb/message/message.c +90 -38
  551. data/third_party/upb/upb/message/message.h +58 -2
  552. data/third_party/upb/upb/message/value.h +9 -0
  553. data/third_party/upb/upb/mini_descriptor/build_enum.c +1 -1
  554. data/third_party/upb/upb/mini_descriptor/decode.c +97 -136
  555. data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
  556. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
  557. data/third_party/upb/upb/mini_table/extension_registry.c +24 -12
  558. data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
  559. data/third_party/upb/upb/mini_table/message.c +21 -13
  560. data/third_party/upb/upb/port/atomic.h +134 -7
  561. data/third_party/upb/upb/port/def.inc +140 -38
  562. data/third_party/upb/upb/port/undef.inc +11 -1
  563. data/third_party/upb/upb/reflection/def.hpp +5 -1
  564. data/third_party/upb/upb/reflection/def_pool.c +10 -3
  565. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +1 -1
  566. data/third_party/upb/upb/reflection/file_def.c +12 -5
  567. data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
  568. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  569. data/third_party/upb/upb/reflection/message.c +19 -16
  570. data/third_party/upb/upb/reflection/message.h +3 -1
  571. data/third_party/upb/upb/text/encode.c +1 -13
  572. data/third_party/upb/upb/text/internal/encode.c +25 -6
  573. data/third_party/upb/upb/text/internal/encode.h +4 -0
  574. data/third_party/upb/upb/wire/decode.c +60 -45
  575. data/third_party/upb/upb/wire/decode.h +4 -2
  576. data/third_party/upb/upb/wire/encode.c +77 -42
  577. data/third_party/upb/upb/wire/encode.h +2 -0
  578. data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
  579. data/third_party/upb/upb/wire/internal/decoder.h +4 -11
  580. data/third_party/utf8_range/utf8_range.c +15 -275
  581. data/third_party/utf8_range/utf8_range_neon.inc +117 -0
  582. data/third_party/utf8_range/utf8_range_sse.inc +272 -0
  583. data/third_party/zlib/deflate.c +40 -15
  584. data/third_party/zlib/deflate.h +33 -2
  585. data/third_party/zlib/gzguts.h +2 -6
  586. data/third_party/zlib/inflate.c +1 -1
  587. data/third_party/zlib/inftrees.c +3 -3
  588. data/third_party/zlib/inftrees.h +2 -2
  589. data/third_party/zlib/trees.c +18 -4
  590. data/third_party/zlib/zconf.h +1 -9
  591. data/third_party/zlib/zlib.h +12 -12
  592. data/third_party/zlib/zutil.h +4 -25
  593. metadata +155 -145
  594. data/include/grpc/grpc_cronet.h +0 -37
  595. data/src/core/lib/transport/http2_errors.h +0 -43
  596. data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
  597. data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -22,10 +22,9 @@
22
22
 
23
23
  #ifdef GRPC_POSIX_SOCKET_TCP
24
24
 
25
- #include <errno.h>
26
25
  #include <fcntl.h>
26
+ #include <grpc/event_engine/event_engine.h>
27
27
  #include <grpc/support/alloc.h>
28
- #include <string.h>
29
28
  #include <sys/socket.h>
30
29
  #include <sys/types.h>
31
30
 
@@ -33,16 +32,27 @@
33
32
 
34
33
  #include "absl/log/check.h"
35
34
  #include "absl/strings/str_cat.h"
35
+ #include "src/core/config/core_configuration.h"
36
36
  #include "src/core/lib/event_engine/channel_args_endpoint_config.h"
37
+ #include "src/core/lib/event_engine/extensions/supports_fd.h"
38
+ #include "src/core/lib/event_engine/query_extensions.h"
39
+ #include "src/core/lib/event_engine/shim.h"
37
40
  #include "src/core/lib/iomgr/endpoint_pair.h"
41
+ #include "src/core/lib/iomgr/ev_posix.h"
42
+ #include "src/core/lib/iomgr/event_engine_shims/endpoint.h"
38
43
  #include "src/core/lib/iomgr/socket_utils_posix.h"
39
44
  #include "src/core/lib/iomgr/tcp_posix.h"
40
45
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
41
- #include "src/core/lib/resource_quota/api.h"
42
46
  #include "src/core/util/crash.h"
43
- #include "src/core/util/string.h"
44
47
 
45
- static void create_sockets(int sv[2]) {
48
+ namespace {
49
+ using grpc_event_engine::experimental::ChannelArgsEndpointConfig;
50
+ using grpc_event_engine::experimental::EventEngine;
51
+ using grpc_event_engine::experimental::EventEngineSupportsFdExtension;
52
+ using grpc_event_engine::experimental::QueryExtension;
53
+ using grpc_event_engine::experimental::UsePollsetAlternative;
54
+
55
+ void create_sockets(int sv[2]) {
46
56
  int flags;
47
57
  grpc_create_socketpair_if_unix(sv);
48
58
  flags = fcntl(sv[0], F_GETFL, 0);
@@ -53,27 +63,44 @@ static void create_sockets(int sv[2]) {
53
63
  CHECK(grpc_set_socket_no_sigpipe_if_possible(sv[1]) == absl::OkStatus());
54
64
  }
55
65
 
66
+ } // namespace
67
+
56
68
  grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(
57
69
  const char* name, const grpc_channel_args* args) {
58
70
  int sv[2];
59
71
  grpc_endpoint_pair p;
60
72
  create_sockets(sv);
61
73
  grpc_core::ExecCtx exec_ctx;
62
- std::string final_name = absl::StrCat(name, ":client");
63
74
  auto new_args = grpc_core::CoreConfiguration::Get()
64
75
  .channel_args_preconditioning()
65
76
  .PreconditionChannelArgs(args);
66
- p.client = grpc_tcp_create(
67
- grpc_fd_create(sv[1], final_name.c_str(), false),
68
- TcpOptionsFromEndpointConfig(
69
- grpc_event_engine::experimental::ChannelArgsEndpointConfig(new_args)),
70
- "socketpair-server");
77
+ if (UsePollsetAlternative()) {
78
+ // Return iomgr-wrapped EE endpoints if a Posix-compatible EventEngine is
79
+ // present. If an endpoint cannot be created from an fd, crash.
80
+ auto* event_engine_supports_fd =
81
+ QueryExtension<EventEngineSupportsFdExtension>(
82
+ new_args.GetObjectRef<EventEngine>().get());
83
+ if (event_engine_supports_fd == nullptr) {
84
+ grpc_core::Crash(
85
+ "EventEngine does not support fds, so an endpoint pair cannot be "
86
+ "created.");
87
+ }
88
+ p.client = grpc_event_engine_endpoint_create(
89
+ event_engine_supports_fd->CreateEndpointFromFd(
90
+ sv[1], ChannelArgsEndpointConfig(new_args)));
91
+ p.server = grpc_event_engine_endpoint_create(
92
+ event_engine_supports_fd->CreateEndpointFromFd(
93
+ sv[0], ChannelArgsEndpointConfig(new_args)));
94
+ return p;
95
+ }
96
+ std::string final_name = absl::StrCat(name, ":client");
97
+ p.client =
98
+ grpc_tcp_create(grpc_fd_create(sv[1], final_name.c_str(), false),
99
+ ChannelArgsEndpointConfig(new_args), "socketpair-server");
71
100
  final_name = absl::StrCat(name, ":server");
72
- p.server = grpc_tcp_create(
73
- grpc_fd_create(sv[0], final_name.c_str(), false),
74
- TcpOptionsFromEndpointConfig(
75
- grpc_event_engine::experimental::ChannelArgsEndpointConfig(new_args)),
76
- "socketpair-client");
101
+ p.server =
102
+ grpc_tcp_create(grpc_fd_create(sv[0], final_name.c_str(), false),
103
+ ChannelArgsEndpointConfig(new_args), "socketpair-client");
77
104
  return p;
78
105
  }
79
106
 
@@ -27,8 +27,13 @@
27
27
 
28
28
  #include "absl/log/check.h"
29
29
  #include "absl/log/log.h"
30
+ #include "src/core/config/core_configuration.h"
30
31
  #include "src/core/lib/address_utils/sockaddr_utils.h"
32
+ #include "src/core/lib/event_engine/channel_args_endpoint_config.h"
33
+ #include "src/core/lib/event_engine/extensions/supports_win_sockets.h"
34
+ #include "src/core/lib/event_engine/query_extensions.h"
31
35
  #include "src/core/lib/iomgr/endpoint_pair.h"
36
+ #include "src/core/lib/iomgr/event_engine_shims/endpoint.h"
32
37
  #include "src/core/lib/iomgr/sockaddr.h"
33
38
  #include "src/core/lib/iomgr/socket_windows.h"
34
39
  #include "src/core/lib/iomgr/tcp_windows.h"
@@ -57,10 +62,11 @@ static void create_sockets(SOCKET sv[2]) {
57
62
  grpc_get_default_wsa_socket_flags());
58
63
  CHECK(cli_sock != INVALID_SOCKET);
59
64
 
60
- CHECK(WSAConnect(cli_sock, (grpc_sockaddr*)&addr, addr_len, NULL, NULL, NULL,
61
- NULL) == 0);
65
+ CHECK_EQ(WSAConnect(cli_sock, (grpc_sockaddr*)&addr, addr_len, NULL, NULL,
66
+ NULL, NULL),
67
+ 0);
62
68
  svr_sock = accept(lst_sock, (grpc_sockaddr*)&addr, &addr_len);
63
- CHECK(svr_sock != INVALID_SOCKET);
69
+ CHECK_NE(svr_sock, INVALID_SOCKET);
64
70
 
65
71
  closesocket(lst_sock);
66
72
  grpc_error_handle error = grpc_tcp_prepare_socket(cli_sock);
@@ -79,15 +85,44 @@ static void create_sockets(SOCKET sv[2]) {
79
85
  }
80
86
 
81
87
  grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(
82
- const char*, const grpc_channel_args* /* channel_args */) {
88
+ const char*, const grpc_channel_args* channel_args) {
83
89
  SOCKET sv[2];
84
90
  grpc_endpoint_pair p;
85
91
  create_sockets(sv);
86
92
  grpc_core::ExecCtx exec_ctx;
87
- p.client = grpc_tcp_create(grpc_winsocket_create(sv[1], "endpoint:client"),
88
- "endpoint:server");
89
- p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"),
90
- "endpoint:client");
93
+ if (grpc_core::IsPollsetAlternativeEnabled()) {
94
+ auto new_args = grpc_core::CoreConfiguration::Get()
95
+ .channel_args_preconditioning()
96
+ .PreconditionChannelArgs(channel_args);
97
+ auto* event_engine_supports_win_sockets =
98
+ grpc_event_engine::experimental::QueryExtension<
99
+ grpc_event_engine::experimental::EventEngineWindowsSocketSupport>(
100
+ new_args
101
+ .GetObjectRef<grpc_event_engine::experimental::EventEngine>()
102
+ .get());
103
+ CHECK_NE(event_engine_supports_win_sockets, nullptr)
104
+ << "EventEngine does not support windows SOCKETS, so an endpoint pair "
105
+ "cannot be created.";
106
+ auto client_endpoint =
107
+ event_engine_supports_win_sockets->CreateEndpointFromWinSocket(
108
+ sv[1], grpc_event_engine::experimental::ChannelArgsEndpointConfig(
109
+ new_args));
110
+ CHECK_NE(client_endpoint.get(), nullptr)
111
+ << "Failed to create client endpoint";
112
+ auto server_endpoint =
113
+ event_engine_supports_win_sockets->CreateEndpointFromWinSocket(
114
+ sv[0], grpc_event_engine::experimental::ChannelArgsEndpointConfig(
115
+ new_args));
116
+ CHECK_NE(server_endpoint.get(), nullptr)
117
+ << "Failed to create server endpoint";
118
+ p.client = grpc_event_engine_endpoint_create(std::move(client_endpoint));
119
+ p.server = grpc_event_engine_endpoint_create(std::move(server_endpoint));
120
+ } else {
121
+ p.client = grpc_tcp_create(grpc_winsocket_create(sv[1], "endpoint:client"),
122
+ "endpoint:server");
123
+ p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"),
124
+ "endpoint:client");
125
+ }
91
126
  return p;
92
127
  }
93
128
 
@@ -35,6 +35,7 @@
35
35
  #endif
36
36
 
37
37
  #include "src/core/lib/debug/trace.h"
38
+ #include "src/core/lib/experiments/experiments.h"
38
39
  #include "src/core/lib/slice/slice_internal.h"
39
40
  #include "src/core/util/strerror.h"
40
41
  #include "src/core/util/useful.h"
@@ -109,7 +110,7 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
109
110
  grpc_error_handle grpc_error_set_int(grpc_error_handle src,
110
111
  grpc_core::StatusIntProperty which,
111
112
  intptr_t value) {
112
- if (src.ok()) {
113
+ if (!grpc_core::IsErrorFlattenEnabled() && src.ok()) {
113
114
  src = absl::UnknownError("");
114
115
  StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
115
116
  GRPC_STATUS_OK);
@@ -126,7 +127,8 @@ bool grpc_error_get_int(grpc_error_handle error,
126
127
  return true;
127
128
  } else {
128
129
  // TODO(veblush): Remove this once absl::Status migration is done
129
- if (which == grpc_core::StatusIntProperty::kRpcStatus) {
130
+ if (!grpc_core::IsErrorFlattenEnabled() &&
131
+ which == grpc_core::StatusIntProperty::kRpcStatus) {
130
132
  switch (error.code()) {
131
133
  case absl::StatusCode::kOk:
132
134
  *p = GRPC_STATUS_OK;
@@ -148,64 +150,46 @@ bool grpc_error_get_int(grpc_error_handle error,
148
150
  grpc_error_handle grpc_error_set_str(grpc_error_handle src,
149
151
  grpc_core::StatusStrProperty which,
150
152
  absl::string_view str) {
151
- if (src.ok()) {
153
+ if (!grpc_core::IsErrorFlattenEnabled() && src.ok()) {
152
154
  src = absl::UnknownError("");
153
155
  StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
154
156
  GRPC_STATUS_OK);
155
157
  }
156
- if (which == grpc_core::StatusStrProperty::kDescription) {
157
- // To change the message of absl::Status, a new instance should be created
158
- // with a code and payload because it doesn't have a setter for it.
159
- absl::Status s = absl::Status(src.code(), str);
160
- src.ForEachPayload(
161
- [&](absl::string_view type_url, const absl::Cord& payload) {
162
- s.SetPayload(type_url, payload);
163
- });
164
- return s;
165
- } else {
166
- grpc_core::StatusSetStr(&src, which, str);
167
- }
158
+ grpc_core::StatusSetStr(&src, which, str);
168
159
  return src;
169
160
  }
170
161
 
171
162
  bool grpc_error_get_str(grpc_error_handle error,
172
163
  grpc_core::StatusStrProperty which, std::string* s) {
173
- if (which == grpc_core::StatusStrProperty::kDescription) {
174
- // absl::Status uses the message field for
175
- // grpc_core::StatusStrProperty::kDescription instead of using payload.
176
- absl::string_view msg = error.message();
177
- if (msg.empty()) {
178
- return false;
179
- } else {
180
- *s = std::string(msg);
181
- return true;
182
- }
164
+ std::optional<std::string> value = grpc_core::StatusGetStr(error, which);
165
+ if (value.has_value()) {
166
+ *s = std::move(*value);
167
+ return true;
183
168
  } else {
184
- std::optional<std::string> value = grpc_core::StatusGetStr(error, which);
185
- if (value.has_value()) {
186
- *s = std::move(*value);
187
- return true;
188
- } else {
189
- // TODO(veblush): Remove this once absl::Status migration is done
190
- if (which == grpc_core::StatusStrProperty::kGrpcMessage) {
191
- switch (error.code()) {
192
- case absl::StatusCode::kOk:
193
- *s = "";
194
- return true;
195
- case absl::StatusCode::kCancelled:
196
- *s = "CANCELLED";
197
- return true;
198
- default:
199
- break;
200
- }
169
+ // TODO(veblush): Remove this once absl::Status migration is done
170
+ if (!grpc_core::IsErrorFlattenEnabled() &&
171
+ which == grpc_core::StatusStrProperty::kGrpcMessage) {
172
+ switch (error.code()) {
173
+ case absl::StatusCode::kOk:
174
+ *s = "";
175
+ return true;
176
+ case absl::StatusCode::kCancelled:
177
+ *s = "CANCELLED";
178
+ return true;
179
+ default:
180
+ break;
201
181
  }
202
- return false;
203
182
  }
183
+ return false;
204
184
  }
205
185
  }
206
186
 
207
187
  grpc_error_handle grpc_error_add_child(grpc_error_handle src,
208
188
  grpc_error_handle child) {
189
+ if (grpc_core::IsErrorFlattenEnabled()) {
190
+ grpc_core::StatusAddChild(&src, child);
191
+ return src;
192
+ }
209
193
  if (src.ok()) {
210
194
  return child;
211
195
  } else {
@@ -45,6 +45,7 @@
45
45
  #include "absl/strings/str_cat.h"
46
46
  #include "absl/strings/str_format.h"
47
47
  #include "absl/strings/str_join.h"
48
+ #include "src/core/lib/experiments/experiments.h"
48
49
  #include "src/core/lib/iomgr/block_annotate.h"
49
50
  #include "src/core/lib/iomgr/ev_epoll1_linux.h"
50
51
  #include "src/core/lib/iomgr/ev_posix.h"
@@ -332,7 +333,11 @@ static void fork_fd_list_remove_grpc_fd(grpc_fd* fd) {
332
333
 
333
334
  static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
334
335
  grpc_fd* new_fd = nullptr;
335
-
336
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
337
+ grpc_fd* new_fd = static_cast<grpc_fd*>(gpr_malloc(sizeof(grpc_fd)));
338
+ new_fd->fd = fd;
339
+ return new_fd;
340
+ }
336
341
  gpr_mu_lock(&fd_freelist_mu);
337
342
  if (fd_freelist != nullptr) {
338
343
  new_fd = fd_freelist;
@@ -410,6 +415,13 @@ static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
410
415
 
411
416
  static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
412
417
  const char* reason) {
418
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
419
+ CHECK_NE(release_fd, nullptr);
420
+ CHECK_EQ(on_done, nullptr);
421
+ *release_fd = fd->fd;
422
+ gpr_free(fd);
423
+ return;
424
+ }
413
425
  grpc_error_handle error;
414
426
  bool is_release_fd = (release_fd != nullptr);
415
427
 
@@ -38,6 +38,7 @@
38
38
  #include "absl/log/log.h"
39
39
  #include "absl/strings/str_cat.h"
40
40
  #include "absl/strings/str_format.h"
41
+ #include "src/core/lib/experiments/experiments.h"
41
42
  #include "src/core/lib/iomgr/block_annotate.h"
42
43
  #include "src/core/lib/iomgr/ev_poll_posix.h"
43
44
  #include "src/core/lib/iomgr/iomgr_internal.h"
@@ -377,6 +378,11 @@ static void unref_by(grpc_fd* fd, int n) {
377
378
  }
378
379
 
379
380
  static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
381
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
382
+ grpc_fd* new_fd = static_cast<grpc_fd*>(gpr_malloc(sizeof(grpc_fd)));
383
+ new_fd->fd = fd;
384
+ return new_fd;
385
+ }
380
386
  // Avoid unused-parameter warning for debug-only parameter
381
387
  (void)track_err;
382
388
  DCHECK(track_err == false);
@@ -467,6 +473,13 @@ static int fd_wrapped_fd(grpc_fd* fd) {
467
473
 
468
474
  static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
469
475
  const char* reason) {
476
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
477
+ CHECK_NE(release_fd, nullptr);
478
+ CHECK_EQ(on_done, nullptr);
479
+ *release_fd = fd->fd;
480
+ gpr_free(fd);
481
+ return;
482
+ }
470
483
  fd->on_done_closure = on_done;
471
484
  fd->released = release_fd != nullptr;
472
485
  if (release_fd != nullptr) {
@@ -67,8 +67,7 @@ bool grpc_polling_entity_is_empty(const grpc_polling_entity* pollent) {
67
67
  void grpc_polling_entity_add_to_pollset_set(grpc_polling_entity* pollent,
68
68
  grpc_pollset_set* pss_dst) {
69
69
  if (pollent->tag == GRPC_POLLS_POLLSET) {
70
- // CFStream does not use file destriptors. When CFStream is used, the fd
71
- // pollset is possible to be null.
70
+ // CFStream and EventEngine-based cqs do not use file descriptors.
72
71
  if (pollent->pollent.pollset != nullptr) {
73
72
  grpc_pollset_set_add_pollset(pss_dst, pollent->pollent.pollset);
74
73
  }
@@ -86,14 +85,10 @@ void grpc_polling_entity_add_to_pollset_set(grpc_polling_entity* pollent,
86
85
  void grpc_polling_entity_del_from_pollset_set(grpc_polling_entity* pollent,
87
86
  grpc_pollset_set* pss_dst) {
88
87
  if (pollent->tag == GRPC_POLLS_POLLSET) {
89
- #ifdef GRPC_CFSTREAM
88
+ // CFStream and EventEngine-based cqs do not use file descriptors.
90
89
  if (pollent->pollent.pollset != nullptr) {
91
90
  grpc_pollset_set_del_pollset(pss_dst, pollent->pollent.pollset);
92
91
  }
93
- #else
94
- CHECK_NE(pollent->pollent.pollset, nullptr);
95
- grpc_pollset_set_del_pollset(pss_dst, pollent->pollent.pollset);
96
- #endif
97
92
  } else if (pollent->tag == GRPC_POLLS_POLLSET_SET) {
98
93
  CHECK_NE(pollent->pollent.pollset_set, nullptr);
99
94
  grpc_pollset_set_del_pollset_set(pss_dst, pollent->pollent.pollset_set);
@@ -51,6 +51,7 @@
51
51
  #include "absl/strings/str_cat.h"
52
52
  #include "src/core/lib/address_utils/sockaddr_utils.h"
53
53
  #include "src/core/lib/iomgr/sockaddr.h"
54
+ #include "src/core/lib/iomgr/socket_factory_posix.h"
54
55
  #include "src/core/util/crash.h"
55
56
  #include "src/core/util/strerror.h"
56
57
  #include "src/core/util/string.h"
@@ -18,33 +18,37 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include <optional>
22
-
23
21
  #include "src/core/lib/iomgr/port.h"
24
22
 
25
23
  #ifdef GRPC_POSIX_SOCKETUTILS
26
24
  #include <fcntl.h>
27
- #include <grpc/impl/grpc_types.h>
28
25
  #include <sys/socket.h>
29
26
  #include <unistd.h>
30
27
 
28
+ #include <climits>
29
+ #include <optional>
30
+
31
31
  #include "src/core/lib/iomgr/sockaddr.h"
32
- #include "src/core/lib/iomgr/socket_utils_posix.h"
33
32
  #include "src/core/util/crash.h"
34
33
  #endif
35
34
 
36
35
  #ifdef GRPC_POSIX_SOCKET_TCP
37
36
 
38
- #include "src/core/lib/event_engine/channel_args_endpoint_config.h"
39
- #include "src/core/lib/iomgr/socket_utils_posix.h"
40
- #include "src/core/util/strerror.h"
41
-
42
- using ::grpc_event_engine::experimental::EndpointConfig;
37
+ #include <grpc/event_engine/endpoint_config.h>
38
+ #include <grpc/event_engine/event_engine.h>
39
+ #include <grpc/grpc.h>
40
+ #include <grpc/impl/grpc_types.h>
43
41
 
44
- using ::grpc_core::PosixTcpOptions;
42
+ #include "src/core/lib/channel/channel_args.h"
43
+ #include "src/core/lib/iomgr/socket_mutator.h"
44
+ #include "src/core/lib/iomgr/socket_utils_posix.h"
45
+ #include "src/core/lib/resource_quota/resource_quota.h"
46
+ #include "src/core/util/useful.h"
45
47
 
46
48
  namespace {
47
49
 
50
+ using grpc_core::PosixTcpOptions;
51
+
48
52
  int AdjustValue(int default_value, int min_value, int max_value,
49
53
  std::optional<int> actual_value) {
50
54
  if (!actual_value.has_value() || *actual_value < min_value ||
@@ -55,7 +59,8 @@ int AdjustValue(int default_value, int min_value, int max_value,
55
59
  }
56
60
  } // namespace
57
61
 
58
- PosixTcpOptions TcpOptionsFromEndpointConfig(const EndpointConfig& config) {
62
+ PosixTcpOptions TcpOptionsFromEndpointConfig(
63
+ const grpc_event_engine::experimental::EndpointConfig& config) {
59
64
  void* value;
60
65
  PosixTcpOptions options;
61
66
  options.tcp_read_chunk_size = AdjustValue(
@@ -111,6 +116,12 @@ PosixTcpOptions TcpOptionsFromEndpointConfig(const EndpointConfig& config) {
111
116
  options.socket_mutator =
112
117
  grpc_socket_mutator_ref(static_cast<grpc_socket_mutator*>(value));
113
118
  }
119
+ value = config.GetVoidPointer(GRPC_INTERNAL_ARG_EVENT_ENGINE);
120
+ if (value != nullptr) {
121
+ options.event_engine =
122
+ reinterpret_cast<grpc_event_engine::experimental::EventEngine*>(value)
123
+ ->shared_from_this();
124
+ }
114
125
  return options;
115
126
  }
116
127
 
@@ -20,14 +20,19 @@
20
20
  #define GRPC_SRC_CORE_LIB_IOMGR_SOCKET_UTILS_POSIX_H
21
21
 
22
22
  #include <grpc/event_engine/endpoint_config.h>
23
+ #include <grpc/event_engine/event_engine.h>
23
24
  #include <grpc/impl/grpc_types.h>
24
25
  #include <grpc/support/port_platform.h>
25
26
 
27
+ #include <cstddef>
28
+ #include <memory>
29
+ #include <utility>
30
+
26
31
  #include "src/core/lib/iomgr/error.h"
27
- #include "src/core/lib/iomgr/resolve_address.h"
28
- #include "src/core/lib/iomgr/socket_factory_posix.h"
32
+ #include "src/core/lib/iomgr/resolved_address.h"
29
33
  #include "src/core/lib/iomgr/socket_mutator.h"
30
34
  #include "src/core/lib/resource_quota/resource_quota.h"
35
+ #include "src/core/util/ref_counted_ptr.h"
31
36
 
32
37
  #ifdef GRPC_LINUX_ERRQUEUE
33
38
  #ifndef SO_ZEROCOPY
@@ -65,11 +70,13 @@ struct PosixTcpOptions {
65
70
  bool allow_reuse_port = false;
66
71
  RefCountedPtr<ResourceQuota> resource_quota;
67
72
  struct grpc_socket_mutator* socket_mutator = nullptr;
73
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> event_engine;
68
74
  PosixTcpOptions() = default;
69
75
  // Move ctor
70
76
  PosixTcpOptions(PosixTcpOptions&& other) noexcept {
71
77
  socket_mutator = std::exchange(other.socket_mutator, nullptr);
72
78
  resource_quota = std::move(other.resource_quota);
79
+ event_engine = std::move(other.event_engine);
73
80
  CopyIntegerOptions(other);
74
81
  }
75
82
  // Move assignment
@@ -79,6 +86,7 @@ struct PosixTcpOptions {
79
86
  }
80
87
  socket_mutator = std::exchange(other.socket_mutator, nullptr);
81
88
  resource_quota = std::move(other.resource_quota);
89
+ event_engine = std::move(other.event_engine);
82
90
  CopyIntegerOptions(other);
83
91
  return *this;
84
92
  }
@@ -88,6 +96,7 @@ struct PosixTcpOptions {
88
96
  socket_mutator = grpc_socket_mutator_ref(other.socket_mutator);
89
97
  }
90
98
  resource_quota = other.resource_quota;
99
+ event_engine = other.event_engine;
91
100
  CopyIntegerOptions(other);
92
101
  }
93
102
  // Copy assignment
@@ -103,6 +112,7 @@ struct PosixTcpOptions {
103
112
  socket_mutator = grpc_socket_mutator_ref(other.socket_mutator);
104
113
  }
105
114
  resource_quota = other.resource_quota;
115
+ event_engine = other.event_engine;
106
116
  CopyIntegerOptions(other);
107
117
  return *this;
108
118
  }
@@ -147,11 +147,10 @@ static int64_t CFStreamClientConnect(
147
147
  grpc_pollset_set* /*interested_parties*/,
148
148
  const grpc_event_engine::experimental::EndpointConfig& config,
149
149
  const grpc_resolved_address* resolved_addr, grpc_core::Timestamp deadline) {
150
- if (grpc_event_engine::experimental::UseEventEngineClient()) {
151
- return grpc_event_engine::experimental::event_engine_tcp_client_connect(
152
- closure, ep, config, resolved_addr, deadline);
153
- }
154
-
150
+ #if GRPC_IOS_EVENT_ENGINE_CLIENT
151
+ return grpc_event_engine::experimental::event_engine_tcp_client_connect(
152
+ closure, ep, config, resolved_addr, deadline);
153
+ #endif
155
154
  auto addr_uri = grpc_sockaddr_to_uri(resolved_addr);
156
155
  if (!addr_uri.ok()) {
157
156
  grpc_error_handle error = GRPC_ERROR_CREATE(addr_uri.status().ToString());
@@ -198,10 +197,10 @@ static int64_t CFStreamClientConnect(
198
197
  }
199
198
 
200
199
  static bool CFStreamClientCancelConnect(int64_t connection_handle) {
201
- if (grpc_event_engine::experimental::UseEventEngineClient()) {
202
- return grpc_event_engine::experimental::
203
- event_engine_tcp_client_cancel_connect(connection_handle);
204
- }
200
+ #if GRPC_IOS_EVENT_ENGINE_CLIENT
201
+ return grpc_event_engine::experimental::
202
+ event_engine_tcp_client_cancel_connect(connection_handle);
203
+ #endif
205
204
  return false;
206
205
  }
207
206
 
@@ -51,6 +51,7 @@
51
51
  #include "src/core/lib/iomgr/vsock.h"
52
52
  #include "src/core/lib/slice/slice_internal.h"
53
53
  #include "src/core/util/crash.h"
54
+ #include "src/core/util/status_helper.h"
54
55
  #include "src/core/util/string.h"
55
56
 
56
57
  using ::grpc_event_engine::experimental::EndpointConfig;
@@ -154,6 +155,7 @@ static void tc_on_alarm(void* acp, grpc_error_handle error) {
154
155
  }
155
156
  }
156
157
 
158
+ // Deprecated. This is internal-only, no new uses permitted.
157
159
  static grpc_endpoint* grpc_tcp_client_create_from_fd(
158
160
  grpc_fd* fd, const grpc_core::PosixTcpOptions& options,
159
161
  absl::string_view addr_str) {
@@ -163,7 +165,7 @@ static grpc_endpoint* grpc_tcp_client_create_from_fd(
163
165
  grpc_endpoint* grpc_tcp_create_from_fd(
164
166
  grpc_fd* fd, const grpc_event_engine::experimental::EndpointConfig& config,
165
167
  absl::string_view addr_str) {
166
- return grpc_tcp_create(fd, TcpOptionsFromEndpointConfig(config), addr_str);
168
+ return grpc_tcp_create(fd, config, addr_str);
167
169
  }
168
170
 
169
171
  static void on_writable(void* acp, grpc_error_handle error) {
@@ -265,14 +267,8 @@ finish:
265
267
  done = (--ac->refs == 0);
266
268
  gpr_mu_unlock(&ac->mu);
267
269
  if (!error.ok()) {
268
- std::string str;
269
- bool ret = grpc_error_get_str(
270
- error, grpc_core::StatusStrProperty::kDescription, &str);
271
- CHECK(ret);
272
- std::string description =
273
- absl::StrCat("Failed to connect to remote host: ", str);
274
- error = grpc_error_set_str(
275
- error, grpc_core::StatusStrProperty::kDescription, description);
270
+ error =
271
+ grpc_core::AddMessagePrefix("Failed to connect to remote host", error);
276
272
  }
277
273
  if (done) {
278
274
  // This is safe even outside the lock, because "done", the sentinel, is
@@ -320,7 +316,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
320
316
 
321
317
  int64_t grpc_tcp_client_create_from_prepared_fd(
322
318
  grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
323
- const grpc_core::PosixTcpOptions& options,
319
+ const grpc_event_engine::experimental::EndpointConfig& config,
324
320
  const grpc_resolved_address* addr, grpc_core::Timestamp deadline,
325
321
  grpc_endpoint** ep) {
326
322
  int err;
@@ -348,7 +344,7 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
348
344
  if (err >= 0) {
349
345
  // Connection already succeeded. Return 0 to discourage any cancellation
350
346
  // attempts.
351
- *ep = grpc_tcp_client_create_from_fd(fdobj, options, *addr_uri);
347
+ *ep = grpc_tcp_create_from_fd(fdobj, config, *addr_uri);
352
348
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
353
349
  return 0;
354
350
  }
@@ -375,7 +371,7 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
375
371
  ac->refs = 2;
376
372
  GRPC_CLOSURE_INIT(&ac->write_closure, on_writable, ac,
377
373
  grpc_schedule_on_exec_ctx);
378
- ac->options = options;
374
+ ac->options = TcpOptionsFromEndpointConfig(config);
379
375
 
380
376
  GRPC_TRACE_LOG(tcp, INFO) << "CLIENT_CONNECT: " << ac->addr_str
381
377
  << ": asynchronously connecting fd " << fdobj;
@@ -405,17 +401,17 @@ static int64_t tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
405
401
  closure, ep, config, addr, deadline);
406
402
  }
407
403
  grpc_resolved_address mapped_addr;
408
- grpc_core::PosixTcpOptions options(TcpOptionsFromEndpointConfig(config));
409
404
  int fd = -1;
410
405
  grpc_error_handle error;
411
406
  *ep = nullptr;
412
- if ((error = grpc_tcp_client_prepare_fd(options, addr, &mapped_addr, &fd)) !=
407
+ if ((error = grpc_tcp_client_prepare_fd(TcpOptionsFromEndpointConfig(config),
408
+ addr, &mapped_addr, &fd)) !=
413
409
  absl::OkStatus()) {
414
410
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
415
411
  return 0;
416
412
  }
417
413
  return grpc_tcp_client_create_from_prepared_fd(
418
- interested_parties, closure, fd, options, &mapped_addr, deadline, ep);
414
+ interested_parties, closure, fd, config, &mapped_addr, deadline, ep);
419
415
  }
420
416
 
421
417
  static bool tcp_cancel_connect(int64_t connection_handle) {
@@ -65,7 +65,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
65
65
  //
66
66
  int64_t grpc_tcp_client_create_from_prepared_fd(
67
67
  grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
68
- const grpc_core::PosixTcpOptions& options,
68
+ const grpc_event_engine::experimental::EndpointConfig& config,
69
69
  const grpc_resolved_address* addr, grpc_core::Timestamp deadline,
70
70
  grpc_endpoint** ep);
71
71