grpc 1.75.0 → 1.78.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 (834) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +24 -5
  3. data/include/grpc/credentials.h +27 -6
  4. data/include/grpc/event_engine/memory_allocator.h +2 -0
  5. data/include/grpc/event_engine/memory_request.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +5 -0
  7. data/include/grpc/support/metrics.h +7 -1
  8. data/src/core/call/call_filters.cc +5 -5
  9. data/src/core/call/call_filters.h +211 -37
  10. data/src/core/call/call_spine.cc +1 -1
  11. data/src/core/call/call_spine.h +54 -32
  12. data/src/core/call/channelz_context.h +30 -0
  13. data/src/core/call/client_call.cc +49 -10
  14. data/src/core/call/client_call.h +6 -3
  15. data/src/core/call/filter_fusion.h +9 -9
  16. data/src/core/call/interception_chain.h +7 -6
  17. data/src/core/call/metadata_batch.cc +49 -55
  18. data/src/core/call/metadata_batch.h +10 -9
  19. data/src/core/call/metadata_info.cc +1 -1
  20. data/src/core/call/parsed_metadata.h +2 -2
  21. data/src/core/call/request_buffer.cc +1 -1
  22. data/src/core/call/security_context.cc +2 -2
  23. data/src/core/call/security_context.h +1 -1
  24. data/src/core/call/server_call.cc +5 -5
  25. data/src/core/call/server_call.h +6 -4
  26. data/src/core/call/simple_slice_based_metadata.h +1 -1
  27. data/src/core/call/status_util.cc +1 -1
  28. data/src/core/channelz/channel_trace.cc +1 -1
  29. data/src/core/channelz/channel_trace.h +3 -3
  30. data/src/core/channelz/channelz.cc +25 -29
  31. data/src/core/channelz/channelz.h +73 -22
  32. data/src/core/channelz/channelz_registry.cc +2 -2
  33. data/src/core/channelz/channelz_registry.h +53 -2
  34. data/src/core/channelz/property_list.cc +18 -0
  35. data/src/core/channelz/property_list.h +15 -4
  36. data/src/core/channelz/text_encode.cc +66 -0
  37. data/src/core/channelz/text_encode.h +29 -0
  38. data/src/core/channelz/v2tov1/convert.cc +17 -6
  39. data/src/core/channelz/v2tov1/legacy_api.cc +18 -12
  40. data/src/core/channelz/v2tov1/property_list.cc +2 -1
  41. data/src/core/channelz/ztrace_collector.h +260 -87
  42. data/src/core/client_channel/backup_poller.cc +7 -8
  43. data/src/core/client_channel/buffered_call.cc +140 -0
  44. data/src/core/client_channel/buffered_call.h +104 -0
  45. data/src/core/client_channel/client_channel.cc +144 -84
  46. data/src/core/client_channel/client_channel.h +8 -11
  47. data/src/core/client_channel/client_channel_factory.h +1 -1
  48. data/src/core/client_channel/client_channel_filter.cc +424 -686
  49. data/src/core/client_channel/client_channel_filter.h +57 -150
  50. data/src/core/client_channel/client_channel_internal.h +8 -5
  51. data/src/core/client_channel/client_channel_service_config.cc +43 -3
  52. data/src/core/client_channel/client_channel_service_config.h +12 -1
  53. data/src/core/client_channel/config_selector.h +5 -5
  54. data/src/core/client_channel/connector.h +2 -0
  55. data/src/core/client_channel/dynamic_filters.cc +5 -5
  56. data/src/core/client_channel/global_subchannel_pool.cc +0 -37
  57. data/src/core/client_channel/global_subchannel_pool.h +1 -28
  58. data/src/core/client_channel/lb_metadata.h +1 -1
  59. data/src/core/client_channel/load_balanced_call_destination.cc +10 -12
  60. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  61. data/src/core/client_channel/local_subchannel_pool.cc +4 -4
  62. data/src/core/client_channel/retry_filter.cc +2 -2
  63. data/src/core/client_channel/retry_filter.h +3 -3
  64. data/src/core/client_channel/retry_filter_legacy_call_data.cc +11 -12
  65. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -8
  66. data/src/core/client_channel/retry_service_config.cc +3 -3
  67. data/src/core/client_channel/retry_service_config.h +1 -1
  68. data/src/core/client_channel/subchannel.cc +114 -25
  69. data/src/core/client_channel/subchannel.h +24 -8
  70. data/src/core/client_channel/subchannel_pool_interface.cc +2 -2
  71. data/src/core/client_channel/subchannel_pool_interface.h +1 -1
  72. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  73. data/src/core/client_channel/subchannel_stream_client.h +3 -3
  74. data/src/core/config/config_vars.cc +38 -3
  75. data/src/core/config/config_vars.h +26 -0
  76. data/src/core/config/core_configuration.cc +5 -5
  77. data/src/core/config/core_configuration.h +8 -8
  78. data/src/core/config/load_config.cc +13 -1
  79. data/src/core/config/load_config.h +2 -0
  80. data/src/core/credentials/call/call_credentials.h +4 -4
  81. data/src/core/credentials/call/call_creds_registry.h +1 -1
  82. data/src/core/credentials/call/call_creds_registry_init.cc +2 -2
  83. data/src/core/credentials/call/call_creds_util.cc +7 -6
  84. data/src/core/credentials/call/composite/composite_call_credentials.cc +6 -6
  85. data/src/core/credentials/call/composite/composite_call_credentials.h +1 -1
  86. data/src/core/credentials/call/external/aws_external_account_credentials.cc +9 -9
  87. data/src/core/credentials/call/external/aws_external_account_credentials.h +1 -1
  88. data/src/core/credentials/call/external/external_account_credentials.cc +12 -12
  89. data/src/core/credentials/call/external/external_account_credentials.h +1 -1
  90. data/src/core/credentials/call/external/file_external_account_credentials.cc +3 -3
  91. data/src/core/credentials/call/external/file_external_account_credentials.h +1 -1
  92. data/src/core/credentials/call/external/url_external_account_credentials.cc +7 -7
  93. data/src/core/credentials/call/external/url_external_account_credentials.h +1 -1
  94. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +24 -71
  95. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +1 -8
  96. data/src/core/credentials/call/iam/iam_credentials.cc +6 -6
  97. data/src/core/credentials/call/iam/iam_credentials.h +1 -1
  98. data/src/core/credentials/call/json_util.cc +1 -1
  99. data/src/core/credentials/call/jwt/json_token.cc +7 -7
  100. data/src/core/credentials/call/jwt/jwt_credentials.cc +5 -5
  101. data/src/core/credentials/call/jwt/jwt_credentials.h +4 -4
  102. data/src/core/credentials/call/jwt/jwt_verifier.cc +19 -18
  103. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +2 -2
  104. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +3 -3
  105. data/src/core/credentials/call/jwt_util.cc +3 -3
  106. data/src/core/credentials/call/jwt_util.h +1 -1
  107. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +49 -72
  108. data/src/core/credentials/call/oauth2/oauth2_credentials.h +3 -9
  109. data/src/core/credentials/call/plugin/plugin_credentials.cc +6 -6
  110. data/src/core/credentials/call/plugin/plugin_credentials.h +2 -2
  111. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +46 -0
  112. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +32 -3
  113. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -5
  114. data/src/core/credentials/transport/alts/alts_security_connector.cc +17 -15
  115. data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +1 -1
  116. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +23 -3
  117. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
  118. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
  119. data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
  120. data/src/core/credentials/transport/channel_creds_registry.h +1 -1
  121. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  122. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +7 -7
  123. data/src/core/credentials/transport/composite/composite_channel_credentials.h +1 -1
  124. data/src/core/credentials/transport/fake/fake_credentials.cc +1 -1
  125. data/src/core/credentials/transport/fake/fake_credentials.h +1 -1
  126. data/src/core/credentials/transport/fake/fake_security_connector.cc +7 -7
  127. data/src/core/credentials/transport/google_default/credentials_generic.cc +2 -2
  128. data/src/core/credentials/transport/google_default/google_default_credentials.cc +83 -39
  129. data/src/core/credentials/transport/google_default/google_default_credentials.h +0 -2
  130. data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
  131. data/src/core/credentials/transport/insecure/insecure_security_connector.h +2 -2
  132. data/src/core/credentials/transport/local/local_security_connector.cc +13 -13
  133. data/src/core/credentials/transport/security_connector.cc +6 -6
  134. data/src/core/credentials/transport/security_connector.h +2 -2
  135. data/src/core/credentials/transport/ssl/ssl_credentials.cc +13 -13
  136. data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
  137. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -8
  138. data/src/core/credentials/transport/tls/certificate_provider_factory.h +1 -1
  139. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
  140. data/src/core/credentials/transport/tls/certificate_provider_registry.h +1 -1
  141. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -25
  142. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +2 -2
  143. data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +1 -1
  144. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +8 -8
  145. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -5
  146. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  147. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +4 -4
  148. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +18 -18
  149. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
  150. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +3 -3
  151. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -1
  152. data/src/core/credentials/transport/tls/spiffe_utils.cc +10 -8
  153. data/src/core/credentials/transport/tls/spiffe_utils.h +2 -2
  154. data/src/core/credentials/transport/tls/ssl_utils.cc +18 -13
  155. data/src/core/credentials/transport/tls/ssl_utils.h +2 -2
  156. data/src/core/credentials/transport/tls/tls_credentials.cc +3 -3
  157. data/src/core/credentials/transport/tls/tls_security_connector.cc +15 -15
  158. data/src/core/credentials/transport/tls/tls_security_connector.h +3 -3
  159. data/src/core/credentials/transport/transport_credentials.cc +3 -3
  160. data/src/core/credentials/transport/transport_credentials.h +4 -4
  161. data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
  162. data/src/core/credentials/transport/xds/xds_credentials.h +1 -1
  163. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +2 -2
  164. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +4 -1
  165. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +6 -4
  166. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -2
  167. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +7 -7
  168. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -3
  169. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +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 +6 -3
  172. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
  173. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -6
  174. data/src/core/ext/filters/http/client/http_client_filter.h +4 -1
  175. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  176. data/src/core/ext/filters/http/client_authority_filter.h +4 -1
  177. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
  178. data/src/core/ext/filters/http/message_compress/compression_filter.cc +11 -11
  179. data/src/core/ext/filters/http/message_compress/compression_filter.h +24 -5
  180. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  181. data/src/core/ext/filters/http/server/http_server_filter.h +4 -1
  182. data/src/core/ext/filters/message_size/message_size_filter.cc +2 -2
  183. data/src/core/ext/filters/message_size/message_size_filter.h +8 -2
  184. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  185. data/src/core/ext/filters/rbac/rbac_filter.h +4 -1
  186. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
  187. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  188. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -14
  189. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +13 -2
  190. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
  191. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
  192. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +58 -44
  193. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
  194. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +25 -24
  195. data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -2
  196. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
  197. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
  198. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +306 -148
  199. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -2
  200. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -7
  201. data/src/core/ext/transport/chttp2/transport/flow_control.h +223 -83
  202. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +105 -0
  203. data/src/core/ext/transport/chttp2/transport/frame.cc +175 -27
  204. data/src/core/ext/transport/chttp2/transport/frame.h +58 -10
  205. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  206. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  207. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
  208. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -6
  209. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  210. data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -1
  211. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -15
  212. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
  213. data/src/core/ext/transport/chttp2/transport/goaway.cc +129 -0
  214. data/src/core/ext/transport/chttp2/transport/goaway.h +350 -0
  215. data/src/core/ext/transport/chttp2/transport/header_assembler.h +194 -54
  216. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +3 -3
  217. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -6
  218. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
  219. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +3 -3
  220. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +5 -5
  221. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +34 -34
  222. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -7
  223. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +8 -8
  224. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -1
  225. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1475 -632
  226. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +384 -373
  227. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  228. data/src/core/ext/transport/chttp2/transport/http2_settings.h +6 -4
  229. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +4 -3
  230. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +6 -5
  231. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +417 -0
  232. data/src/core/ext/transport/chttp2/transport/http2_status.h +7 -1
  233. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +337 -30
  234. data/src/core/ext/transport/chttp2/transport/http2_transport.h +196 -21
  235. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +172 -72
  236. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
  237. data/src/core/ext/transport/chttp2/transport/internal.h +31 -19
  238. data/src/core/ext/transport/chttp2/transport/keepalive.cc +12 -5
  239. data/src/core/ext/transport/chttp2/transport/keepalive.h +14 -10
  240. data/src/core/ext/transport/chttp2/transport/message_assembler.h +30 -21
  241. data/src/core/ext/transport/chttp2/transport/parsing.cc +25 -23
  242. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  243. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -3
  244. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +70 -28
  245. data/src/core/ext/transport/chttp2/transport/ping_promise.h +63 -23
  246. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +1 -1
  247. data/src/core/ext/transport/chttp2/transport/security_frame.cc +31 -0
  248. data/src/core/ext/transport/chttp2/transport/security_frame.h +32 -0
  249. data/src/core/ext/transport/chttp2/transport/stream.h +287 -0
  250. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +476 -208
  251. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +8 -8
  252. data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
  253. data/src/core/ext/transport/chttp2/transport/transport_common.h +57 -0
  254. data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
  255. data/src/core/ext/transport/chttp2/transport/writable_streams.h +202 -84
  256. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
  257. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -6
  258. data/src/core/ext/transport/inproc/inproc_transport.cc +9 -3
  259. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +11 -8
  260. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
  261. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
  262. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
  263. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
  264. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
  265. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
  266. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
  267. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
  268. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
  269. data/src/core/filter/auth/auth_filters.h +7 -1
  270. data/src/core/filter/auth/client_auth_filter.cc +2 -2
  271. data/src/core/filter/auth/server_auth_filter.cc +5 -5
  272. data/src/core/filter/blackboard.h +2 -2
  273. data/src/core/filter/filter_args.h +40 -2
  274. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +2 -2
  275. data/src/core/handshaker/handshaker.cc +8 -8
  276. data/src/core/handshaker/handshaker.h +2 -2
  277. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +5 -5
  278. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +12 -12
  279. data/src/core/handshaker/http_connect/http_proxy_mapper.h +1 -1
  280. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
  281. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +1 -1
  282. data/src/core/handshaker/proxy_mapper.h +1 -1
  283. data/src/core/handshaker/proxy_mapper_registry.h +1 -1
  284. data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -6
  285. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +38 -15
  286. data/src/core/handshaker/security/secure_endpoint.cc +31 -11
  287. data/src/core/handshaker/security/security_handshaker.cc +11 -8
  288. data/src/core/handshaker/security/security_handshaker.h +1 -1
  289. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +6 -6
  290. data/src/core/lib/address_utils/parse_address.cc +5 -5
  291. data/src/core/lib/address_utils/parse_address.h +2 -2
  292. data/src/core/lib/address_utils/sockaddr_utils.cc +4 -4
  293. data/src/core/lib/address_utils/sockaddr_utils.h +1 -1
  294. data/src/core/lib/channel/channel_args.cc +1 -1
  295. data/src/core/lib/channel/channel_args.h +2 -2
  296. data/src/core/lib/channel/channel_stack.cc +29 -25
  297. data/src/core/lib/channel/channel_stack.h +8 -3
  298. data/src/core/lib/channel/channel_stack_builder.cc +8 -4
  299. data/src/core/lib/channel/channel_stack_builder.h +10 -9
  300. data/src/core/lib/channel/channel_stack_builder_impl.cc +8 -13
  301. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -1
  302. data/src/core/lib/channel/connected_channel.cc +4 -4
  303. data/src/core/lib/channel/promise_based_filter.cc +132 -72
  304. data/src/core/lib/channel/promise_based_filter.h +39 -23
  305. data/src/core/lib/compression/compression_internal.cc +6 -6
  306. data/src/core/lib/compression/compression_internal.h +1 -1
  307. data/src/core/lib/compression/message_compress.cc +8 -8
  308. data/src/core/lib/debug/trace.cc +2 -5
  309. data/src/core/lib/debug/trace.h +10 -0
  310. data/src/core/lib/debug/trace_flags.cc +2 -2
  311. data/src/core/lib/debug/trace_flags.h +1 -1
  312. data/src/core/lib/event_engine/ares_resolver.cc +30 -28
  313. data/src/core/lib/event_engine/ares_resolver.h +4 -4
  314. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -3
  315. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
  316. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +1 -1
  317. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +4 -4
  318. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -3
  319. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -1
  320. data/src/core/lib/event_engine/default_event_engine.cc +1 -1
  321. data/src/core/lib/event_engine/event_engine.cc +1 -1
  322. data/src/core/lib/event_engine/extensions/channelz.h +3 -3
  323. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -1
  324. data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
  325. data/src/core/lib/event_engine/extensions/tcp_trace.h +8 -1
  326. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -1
  327. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -1
  328. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -12
  329. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +5 -5
  330. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -15
  331. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
  332. data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -2
  333. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  334. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +1 -1
  335. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +1 -1
  336. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -4
  337. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +1 -1
  338. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +3 -3
  339. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +1 -1
  340. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -3
  341. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +1 -1
  342. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +28 -27
  343. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +17 -17
  344. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +175 -177
  345. data/src/core/lib/event_engine/posix_engine/posix_engine.h +40 -61
  346. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +11 -7
  347. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +4 -4
  348. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +9 -9
  349. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -1
  350. data/src/core/lib/event_engine/posix_engine/posix_interface.h +2 -2
  351. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +5 -5
  352. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  353. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
  354. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  355. data/src/core/lib/event_engine/posix_engine/timer.h +1 -1
  356. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -4
  357. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  358. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -2
  359. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -2
  360. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +1 -1
  361. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  362. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +1 -1
  363. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  364. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +1 -1
  365. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  366. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +1 -1
  367. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -1
  368. data/src/core/lib/event_engine/resolved_address.cc +3 -3
  369. data/src/core/lib/event_engine/shim.cc +8 -11
  370. data/src/core/lib/event_engine/shim.h +2 -1
  371. data/src/core/lib/event_engine/slice.cc +2 -2
  372. data/src/core/lib/event_engine/tcp_socket_utils.cc +15 -15
  373. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  374. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  375. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +11 -11
  376. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -3
  377. data/src/core/lib/event_engine/utils.cc +3 -3
  378. data/src/core/lib/event_engine/utils.h +1 -1
  379. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +32 -32
  380. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -2
  381. data/src/core/lib/event_engine/windows/iocp.cc +11 -11
  382. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  383. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -2
  384. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  385. data/src/core/lib/event_engine/windows/win_socket.h +2 -2
  386. data/src/core/lib/event_engine/windows/windows_endpoint.cc +16 -16
  387. data/src/core/lib/event_engine/windows/windows_engine.cc +20 -18
  388. data/src/core/lib/event_engine/windows/windows_engine.h +3 -3
  389. data/src/core/lib/event_engine/windows/windows_listener.cc +10 -10
  390. data/src/core/lib/event_engine/windows/windows_listener.h +2 -2
  391. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -2
  392. data/src/core/lib/experiments/config.cc +4 -4
  393. data/src/core/lib/experiments/experiments.cc +255 -42
  394. data/src/core/lib/experiments/experiments.h +105 -21
  395. data/src/core/lib/iomgr/buffer_list.cc +1 -1
  396. data/src/core/lib/iomgr/call_combiner.cc +4 -4
  397. data/src/core/lib/iomgr/call_combiner.h +2 -2
  398. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  399. data/src/core/lib/iomgr/closure.h +2 -2
  400. data/src/core/lib/iomgr/combiner.cc +2 -2
  401. data/src/core/lib/iomgr/endpoint.h +1 -1
  402. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -7
  403. data/src/core/lib/iomgr/endpoint_pair_posix.cc +6 -6
  404. data/src/core/lib/iomgr/endpoint_pair_windows.cc +16 -15
  405. data/src/core/lib/iomgr/error.cc +1 -1
  406. data/src/core/lib/iomgr/error.h +2 -2
  407. data/src/core/lib/iomgr/error_cfstream.cc +1 -1
  408. data/src/core/lib/iomgr/ev_apple.cc +1 -1
  409. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  410. data/src/core/lib/iomgr/ev_poll_posix.cc +14 -14
  411. data/src/core/lib/iomgr/ev_posix.cc +3 -3
  412. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -3
  413. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -1
  414. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +10 -9
  415. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
  416. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -2
  417. data/src/core/lib/iomgr/exec_ctx.cc +3 -3
  418. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  419. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  420. data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
  421. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  422. data/src/core/lib/iomgr/iomgr.cc +1 -1
  423. data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
  424. data/src/core/lib/iomgr/lockfree_event.cc +3 -3
  425. data/src/core/lib/iomgr/polling_entity.cc +4 -4
  426. data/src/core/lib/iomgr/resolve_address.cc +1 -1
  427. data/src/core/lib/iomgr/resolve_address.h +2 -2
  428. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -4
  429. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  430. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +1 -1
  431. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -4
  432. data/src/core/lib/iomgr/socket_windows.cc +6 -6
  433. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
  434. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -7
  435. data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
  436. data/src/core/lib/iomgr/tcp_posix.cc +47 -47
  437. data/src/core/lib/iomgr/tcp_server.cc +5 -0
  438. data/src/core/lib/iomgr/tcp_server.h +7 -0
  439. data/src/core/lib/iomgr/tcp_server_posix.cc +62 -31
  440. data/src/core/lib/iomgr/tcp_server_utils_posix.h +4 -1
  441. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -7
  442. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -4
  443. data/src/core/lib/iomgr/tcp_server_windows.cc +70 -31
  444. data/src/core/lib/iomgr/tcp_windows.cc +8 -8
  445. data/src/core/lib/iomgr/timer_generic.cc +5 -5
  446. data/src/core/lib/iomgr/timer_manager.cc +3 -3
  447. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  448. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
  449. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
  450. data/src/core/lib/iomgr/vsock.cc +1 -1
  451. data/src/core/lib/iomgr/vsock.h +1 -1
  452. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +1 -1
  453. data/src/core/lib/promise/activity.cc +3 -3
  454. data/src/core/lib/promise/activity.h +11 -10
  455. data/src/core/lib/promise/all_ok.h +3 -3
  456. data/src/core/lib/promise/arena_promise.h +47 -6
  457. data/src/core/lib/promise/context.h +3 -3
  458. data/src/core/lib/promise/detail/join_state.h +10 -10
  459. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  460. data/src/core/lib/promise/detail/promise_like.h +1 -1
  461. data/src/core/lib/promise/detail/seq_state.h +16 -16
  462. data/src/core/lib/promise/detail/status.h +2 -2
  463. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -1
  464. data/src/core/lib/promise/for_each.h +8 -8
  465. data/src/core/lib/promise/if.h +1 -1
  466. data/src/core/lib/promise/inter_activity_latch.h +3 -3
  467. data/src/core/lib/promise/inter_activity_mutex.h +1 -1
  468. data/src/core/lib/promise/interceptor_list.h +5 -5
  469. data/src/core/lib/promise/latch.h +9 -9
  470. data/src/core/lib/promise/loop.h +2 -2
  471. data/src/core/lib/promise/map.h +2 -2
  472. data/src/core/lib/promise/mpsc.cc +31 -30
  473. data/src/core/lib/promise/mpsc.h +2 -2
  474. data/src/core/lib/promise/observable.h +6 -6
  475. data/src/core/lib/promise/party.cc +43 -30
  476. data/src/core/lib/promise/party.h +27 -23
  477. data/src/core/lib/promise/pipe.h +31 -17
  478. data/src/core/lib/promise/poll.h +6 -5
  479. data/src/core/lib/promise/promise.h +2 -4
  480. data/src/core/lib/promise/sleep.cc +3 -1
  481. data/src/core/lib/promise/sleep.h +1 -1
  482. data/src/core/lib/promise/status_flag.h +8 -8
  483. data/src/core/lib/promise/try_join.h +5 -5
  484. data/src/core/lib/promise/try_seq.h +5 -5
  485. data/src/core/lib/promise/wait_set.h +2 -2
  486. data/src/core/lib/resource_quota/api.cc +1 -1
  487. data/src/core/lib/resource_quota/arena.cc +1 -1
  488. data/src/core/lib/resource_quota/arena.h +15 -2
  489. data/src/core/lib/resource_quota/connection_quota.cc +9 -7
  490. data/src/core/lib/resource_quota/connection_quota.h +1 -1
  491. data/src/core/lib/resource_quota/memory_quota.cc +48 -27
  492. data/src/core/lib/resource_quota/memory_quota.h +56 -20
  493. data/src/core/lib/resource_quota/periodic_update.h +1 -1
  494. data/src/core/lib/resource_quota/resource_quota.cc +8 -0
  495. data/src/core/lib/resource_quota/resource_quota.h +2 -1
  496. data/src/core/lib/resource_quota/stream_quota.cc +22 -0
  497. data/src/core/lib/resource_quota/stream_quota.h +31 -0
  498. data/src/core/lib/resource_quota/telemetry.h +55 -0
  499. data/src/core/lib/resource_quota/thread_quota.cc +2 -2
  500. data/src/core/lib/resource_quota/thread_quota.h +1 -1
  501. data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
  502. data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
  503. data/src/core/lib/security/authorization/audit_logging.cc +7 -7
  504. data/src/core/lib/security/authorization/audit_logging.h +1 -1
  505. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  506. data/src/core/lib/security/authorization/evaluate_args.cc +5 -5
  507. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  508. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
  509. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -3
  510. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +4 -1
  511. data/src/core/lib/security/authorization/matchers.cc +2 -2
  512. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  513. data/src/core/lib/slice/percent_encoding.cc +1 -1
  514. data/src/core/lib/slice/slice.cc +1 -1
  515. data/src/core/lib/slice/slice.h +2 -2
  516. data/src/core/lib/slice/slice_buffer.cc +1 -1
  517. data/src/core/lib/slice/slice_internal.h +1 -1
  518. data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
  519. data/src/core/lib/surface/call.cc +58 -28
  520. data/src/core/lib/surface/call.h +13 -6
  521. data/src/core/lib/surface/call_log_batch.cc +2 -2
  522. data/src/core/lib/surface/call_utils.cc +7 -7
  523. data/src/core/lib/surface/call_utils.h +85 -20
  524. data/src/core/lib/surface/channel.cc +6 -5
  525. data/src/core/lib/surface/channel.h +13 -3
  526. data/src/core/lib/surface/channel_create.cc +12 -8
  527. data/src/core/lib/surface/channel_create.h +1 -1
  528. data/src/core/lib/surface/channel_init.cc +84 -27
  529. data/src/core/lib/surface/channel_init.h +30 -13
  530. data/src/core/lib/surface/completion_queue.cc +21 -20
  531. data/src/core/lib/surface/completion_queue_factory.cc +7 -7
  532. data/src/core/lib/surface/connection_context.h +45 -2
  533. data/src/core/lib/surface/filter_stack_call.cc +25 -31
  534. data/src/core/lib/surface/filter_stack_call.h +6 -7
  535. data/src/core/lib/surface/init.cc +4 -4
  536. data/src/core/lib/surface/lame_client.cc +2 -2
  537. data/src/core/lib/surface/lame_client.h +3 -3
  538. data/src/core/lib/surface/legacy_channel.cc +10 -10
  539. data/src/core/lib/surface/legacy_channel.h +1 -1
  540. data/src/core/lib/surface/validate_metadata.cc +2 -2
  541. data/src/core/lib/surface/validate_metadata.h +3 -3
  542. data/src/core/lib/surface/version.cc +2 -2
  543. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  544. data/src/core/lib/transport/bdp_estimator.h +5 -5
  545. data/src/core/lib/transport/connectivity_state.cc +1 -1
  546. data/src/core/lib/transport/connectivity_state.h +2 -2
  547. data/src/core/lib/transport/error_utils.h +1 -1
  548. data/src/core/lib/transport/promise_endpoint.cc +4 -4
  549. data/src/core/lib/transport/promise_endpoint.h +11 -11
  550. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  551. data/src/core/lib/transport/transport.cc +3 -3
  552. data/src/core/lib/transport/transport.h +62 -4
  553. data/src/core/lib/transport/transport_framing_endpoint_extension.h +1 -1
  554. data/src/core/lib/transport/transport_op_string.cc +2 -2
  555. data/src/core/load_balancing/address_filtering.cc +1 -1
  556. data/src/core/load_balancing/address_filtering.h +2 -2
  557. data/src/core/load_balancing/backend_metric_parser.cc +1 -1
  558. data/src/core/load_balancing/backend_metric_parser.h +1 -1
  559. data/src/core/load_balancing/child_policy_handler.cc +8 -8
  560. data/src/core/load_balancing/child_policy_handler.h +2 -2
  561. data/src/core/load_balancing/delegating_helper.h +2 -2
  562. data/src/core/load_balancing/endpoint_list.cc +6 -6
  563. data/src/core/load_balancing/endpoint_list.h +2 -2
  564. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +7 -5
  565. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -1
  566. data/src/core/load_balancing/grpclb/grpclb.cc +37 -48
  567. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +2 -2
  568. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  569. data/src/core/load_balancing/grpclb/load_balancer_api.h +1 -1
  570. data/src/core/load_balancing/health_check_client.cc +13 -9
  571. data/src/core/load_balancing/health_check_client_internal.h +5 -5
  572. data/src/core/load_balancing/lb_policy.h +11 -8
  573. data/src/core/load_balancing/lb_policy_factory.h +2 -2
  574. data/src/core/load_balancing/lb_policy_registry.cc +3 -3
  575. data/src/core/load_balancing/lb_policy_registry.h +2 -2
  576. data/src/core/load_balancing/oob_backend_metric.cc +11 -7
  577. data/src/core/load_balancing/oob_backend_metric_internal.h +4 -4
  578. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +9 -17
  579. data/src/core/load_balancing/pick_first/pick_first.cc +62 -32
  580. data/src/core/load_balancing/priority/priority.cc +29 -30
  581. data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -11
  582. data/src/core/load_balancing/rls/rls.cc +23 -23
  583. data/src/core/load_balancing/round_robin/round_robin.cc +16 -16
  584. data/src/core/load_balancing/subchannel_interface.h +2 -2
  585. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
  586. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +42 -41
  587. data/src/core/load_balancing/weighted_target/weighted_target.cc +14 -14
  588. data/src/core/load_balancing/xds/cds.cc +81 -37
  589. data/src/core/load_balancing/xds/xds_cluster_impl.cc +24 -41
  590. data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
  591. data/src/core/load_balancing/xds/xds_override_host.cc +14 -14
  592. data/src/core/load_balancing/xds/xds_override_host.h +1 -1
  593. data/src/core/load_balancing/xds/xds_wrr_locality.cc +5 -5
  594. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
  595. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
  596. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  597. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  598. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +35 -35
  599. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +16 -16
  600. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -2
  601. data/src/core/resolver/dns/dns_resolver_plugin.cc +8 -5
  602. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +10 -10
  603. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +1 -1
  604. data/src/core/resolver/dns/event_engine/service_config_helper.cc +2 -2
  605. data/src/core/resolver/dns/native/dns_resolver.cc +7 -7
  606. data/src/core/resolver/endpoint_addresses.cc +6 -6
  607. data/src/core/resolver/endpoint_addresses.h +4 -1
  608. data/src/core/resolver/fake/fake_resolver.cc +3 -3
  609. data/src/core/resolver/fake/fake_resolver.h +3 -3
  610. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +46 -59
  611. data/src/core/resolver/polling_resolver.cc +8 -8
  612. data/src/core/resolver/polling_resolver.h +1 -1
  613. data/src/core/resolver/resolver.h +2 -2
  614. data/src/core/resolver/resolver_factory.h +2 -2
  615. data/src/core/resolver/resolver_registry.cc +5 -4
  616. data/src/core/resolver/resolver_registry.h +1 -1
  617. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +4 -4
  618. data/src/core/resolver/xds/xds_config.cc +1 -1
  619. data/src/core/resolver/xds/xds_config.h +3 -3
  620. data/src/core/resolver/xds/xds_dependency_manager.cc +7 -7
  621. data/src/core/resolver/xds/xds_dependency_manager.h +3 -3
  622. data/src/core/resolver/xds/xds_resolver.cc +25 -22
  623. data/src/core/resolver/xds/xds_resolver_attributes.h +1 -1
  624. data/src/core/server/add_port.cc +2 -2
  625. data/src/core/server/server.cc +47 -43
  626. data/src/core/server/server.h +8 -7
  627. data/src/core/server/server_call_tracer_filter.cc +1 -1
  628. data/src/core/server/server_call_tracer_filter.h +9 -5
  629. data/src/core/server/server_config_selector.h +2 -2
  630. data/src/core/server/server_config_selector_filter.cc +5 -5
  631. data/src/core/server/xds_channel_stack_modifier.cc +3 -2
  632. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  633. data/src/core/server/xds_server_config_fetcher.cc +19 -18
  634. data/src/core/service_config/service_config.h +1 -1
  635. data/src/core/service_config/service_config_channel_arg_filter.h +4 -1
  636. data/src/core/service_config/service_config_impl.cc +3 -3
  637. data/src/core/service_config/service_config_impl.h +4 -4
  638. data/src/core/service_config/service_config_parser.h +1 -1
  639. data/src/core/telemetry/call_tracer.cc +39 -49
  640. data/src/core/telemetry/call_tracer.h +201 -24
  641. data/src/core/telemetry/default_tcp_tracer.h +3 -3
  642. data/src/core/telemetry/histogram.h +205 -0
  643. data/src/core/telemetry/instrument.cc +999 -0
  644. data/src/core/telemetry/instrument.h +1105 -0
  645. data/src/core/telemetry/metrics.cc +15 -5
  646. data/src/core/telemetry/metrics.h +36 -5
  647. data/src/core/telemetry/stats.h +2 -2
  648. data/src/core/telemetry/stats_data.cc +1 -20
  649. data/src/core/telemetry/stats_data.h +2 -21
  650. data/src/core/transport/auth_context.cc +3 -3
  651. data/src/core/transport/auth_context.h +2 -1
  652. data/src/core/transport/auth_context_comparator_registry.h +1 -1
  653. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -1
  654. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +2 -2
  655. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -1
  656. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +81 -48
  657. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
  658. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
  659. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +46 -36
  660. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +4 -4
  661. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  662. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +4 -4
  663. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -3
  664. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +10 -0
  665. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +16 -8
  666. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -0
  667. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +18 -5
  668. data/src/core/tsi/fake_transport_security.cc +6 -5
  669. data/src/core/tsi/local_transport_security.cc +1 -1
  670. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  671. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -1
  672. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +10 -10
  673. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -4
  674. data/src/core/tsi/ssl_transport_security.cc +30 -30
  675. data/src/core/tsi/ssl_transport_security.h +1 -1
  676. data/src/core/tsi/ssl_transport_security_utils.cc +10 -10
  677. data/src/core/tsi/ssl_transport_security_utils.h +2 -2
  678. data/src/core/tsi/transport_security_grpc.cc +8 -0
  679. data/src/core/tsi/transport_security_grpc.h +15 -0
  680. data/src/core/util/alloc.cc +1 -1
  681. data/src/core/util/backoff.h +1 -1
  682. data/src/core/util/chunked_vector.h +4 -4
  683. data/src/core/util/crash.h +1 -1
  684. data/src/core/util/dual_ref_counted.h +2 -2
  685. data/src/core/util/event_log.cc +2 -2
  686. data/src/core/util/event_log.h +3 -3
  687. data/src/core/util/gcp_metadata_query.cc +7 -7
  688. data/src/core/util/gcp_metadata_query.h +2 -2
  689. data/src/core/util/glob.cc +2 -0
  690. data/src/core/util/grpc_check.cc +24 -0
  691. data/src/core/util/grpc_check.h +103 -0
  692. data/src/core/util/grpc_if_nametoindex_posix.cc +1 -1
  693. data/src/core/util/grpc_if_nametoindex_unsupported.cc +1 -1
  694. data/src/core/util/http_client/format_request.cc +1 -1
  695. data/src/core/util/http_client/httpcli.cc +6 -6
  696. data/src/core/util/http_client/httpcli.h +4 -4
  697. data/src/core/util/http_client/httpcli_security_connector.cc +4 -4
  698. data/src/core/util/http_client/parser.cc +4 -4
  699. data/src/core/util/json/json_channel_args.h +1 -1
  700. data/src/core/util/json/json_object_loader.h +6 -6
  701. data/src/core/util/json/json_reader.cc +2 -2
  702. data/src/core/util/json/json_reader.h +1 -1
  703. data/src/core/util/json/json_util.h +3 -3
  704. data/src/core/util/json/json_writer.cc +1 -1
  705. data/src/core/util/latent_see.cc +45 -24
  706. data/src/core/util/latent_see.h +199 -28
  707. data/src/core/util/linux/cpu.cc +1 -1
  708. data/src/core/util/load_file.cc +1 -1
  709. data/src/core/util/load_file.h +1 -1
  710. data/src/core/util/log.cc +3 -3
  711. data/src/core/util/lru_cache.h +4 -4
  712. data/src/core/util/matchers.h +1 -1
  713. data/src/core/util/memory_usage.h +17 -1
  714. data/src/core/util/mpscq.h +1 -1
  715. data/src/core/util/notification.h +1 -1
  716. data/src/core/util/posix/cpu.cc +1 -1
  717. data/src/core/util/posix/directory_reader.cc +3 -2
  718. data/src/core/util/posix/stat.cc +2 -2
  719. data/src/core/util/posix/sync.cc +24 -24
  720. data/src/core/util/posix/thd.cc +2 -2
  721. data/src/core/util/posix/tmpfile.cc +2 -2
  722. data/src/core/util/postmortem_emit.cc +52 -0
  723. data/src/core/util/postmortem_emit.h +30 -0
  724. data/src/core/util/ref_counted.h +2 -2
  725. data/src/core/util/ref_counted_ptr.h +6 -1
  726. data/src/core/util/ref_counted_string.h +1 -1
  727. data/src/core/util/single_set_ptr.h +3 -1
  728. data/src/core/util/status_helper.cc +8 -8
  729. data/src/core/util/status_helper.h +1 -1
  730. data/src/core/util/string.cc +2 -2
  731. data/src/core/util/sync_abseil.cc +1 -1
  732. data/src/core/util/table.h +1 -1
  733. data/src/core/util/time.cc +1 -1
  734. data/src/core/util/time_precise.cc +1 -1
  735. data/src/core/util/trie_lookup.h +170 -0
  736. data/src/core/util/unique_ptr_with_bitset.h +5 -5
  737. data/src/core/util/unique_type_name.h +1 -1
  738. data/src/core/util/upb_utils.h +6 -1
  739. data/src/core/util/validation_errors.cc +2 -2
  740. data/src/core/util/validation_errors.h +2 -3
  741. data/src/core/util/wait_for_single_owner.h +2 -2
  742. data/src/core/util/windows/directory_reader.cc +1 -1
  743. data/src/core/util/windows/stat.cc +2 -2
  744. data/src/core/util/windows/thd.cc +2 -2
  745. data/src/core/util/windows/time.cc +1 -1
  746. data/src/core/util/work_serializer.cc +3 -3
  747. data/src/core/util/work_serializer.h +2 -2
  748. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  749. data/src/core/xds/grpc/certificate_provider_store.h +2 -2
  750. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  751. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  752. data/src/core/xds/grpc/xds_audit_logger_registry.cc +3 -3
  753. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  754. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +7 -7
  755. data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -3
  756. data/src/core/xds/grpc/xds_certificate_provider.cc +4 -4
  757. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  758. data/src/core/xds/grpc/xds_client_grpc.cc +39 -20
  759. data/src/core/xds/grpc/xds_client_grpc.h +6 -3
  760. data/src/core/xds/grpc/xds_cluster.cc +2 -2
  761. data/src/core/xds/grpc/xds_cluster.h +1 -1
  762. data/src/core/xds/grpc/xds_cluster_parser.cc +7 -7
  763. data/src/core/xds/grpc/xds_cluster_parser.h +1 -1
  764. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +4 -4
  765. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  766. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  767. data/src/core/xds/grpc/xds_common_types.h +1 -1
  768. data/src/core/xds/grpc/xds_common_types_parser.cc +5 -5
  769. data/src/core/xds/grpc/xds_endpoint.h +2 -2
  770. data/src/core/xds/grpc/xds_endpoint_parser.cc +7 -7
  771. data/src/core/xds/grpc/xds_endpoint_parser.h +1 -1
  772. data/src/core/xds/grpc/xds_health_status.cc +1 -1
  773. data/src/core/xds/grpc/xds_health_status.h +1 -1
  774. data/src/core/xds/grpc/xds_http_fault_filter.cc +4 -4
  775. data/src/core/xds/grpc/xds_http_fault_filter.h +2 -2
  776. data/src/core/xds/grpc/xds_http_filter.h +3 -3
  777. data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
  778. data/src/core/xds/grpc/xds_http_filter_registry.h +2 -2
  779. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +3 -3
  780. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -2
  781. data/src/core/xds/grpc/xds_http_rbac_filter.cc +4 -4
  782. data/src/core/xds/grpc/xds_http_rbac_filter.h +2 -2
  783. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +3 -3
  784. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +2 -2
  785. data/src/core/xds/grpc/xds_lb_policy_registry.cc +1 -1
  786. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  787. data/src/core/xds/grpc/xds_listener.cc +2 -2
  788. data/src/core/xds/grpc/xds_listener_parser.cc +9 -9
  789. data/src/core/xds/grpc/xds_listener_parser.h +1 -1
  790. data/src/core/xds/grpc/xds_matcher.cc +277 -0
  791. data/src/core/xds/grpc/xds_matcher.h +432 -0
  792. data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
  793. data/src/core/xds/grpc/xds_matcher_action.h +48 -0
  794. data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
  795. data/src/core/xds/grpc/xds_matcher_context.h +46 -0
  796. data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
  797. data/src/core/xds/grpc/xds_matcher_input.h +105 -0
  798. data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
  799. data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
  800. data/src/core/xds/grpc/xds_metadata.cc +4 -3
  801. data/src/core/xds/grpc/xds_metadata.h +3 -3
  802. data/src/core/xds/grpc/xds_metadata_parser.cc +2 -2
  803. data/src/core/xds/grpc/xds_route_config.cc +3 -3
  804. data/src/core/xds/grpc/xds_route_config_parser.cc +14 -14
  805. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  806. data/src/core/xds/grpc/xds_routing.cc +6 -6
  807. data/src/core/xds/grpc/xds_routing.h +2 -2
  808. data/src/core/xds/grpc/xds_server_grpc.cc +2 -2
  809. data/src/core/xds/grpc/xds_transport_grpc.cc +11 -11
  810. data/src/core/xds/grpc/xds_transport_grpc.h +2 -2
  811. data/src/core/xds/xds_client/lrs_client.cc +9 -9
  812. data/src/core/xds/xds_client/lrs_client.h +4 -4
  813. data/src/core/xds/xds_client/xds_api.h +1 -1
  814. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +1 -1
  815. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +1 -1
  816. data/src/core/xds/xds_client/xds_client.cc +17 -17
  817. data/src/core/xds/xds_client/xds_client.h +5 -5
  818. data/src/core/xds/xds_client/xds_locality.h +2 -2
  819. data/src/core/xds/xds_client/xds_resource_type.h +2 -2
  820. data/src/core/xds/xds_client/xds_resource_type_impl.h +1 -1
  821. data/src/core/xds/xds_client/xds_transport.h +2 -2
  822. data/src/ruby/ext/grpc/extconf.rb +14 -12
  823. data/src/ruby/ext/grpc/rb_call.c +0 -1
  824. data/src/ruby/ext/grpc/rb_channel_args.c +0 -1
  825. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  826. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  827. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  828. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  829. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  830. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  831. data/src/ruby/lib/grpc/version.rb +1 -1
  832. data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
  833. data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
  834. metadata +51 -6
@@ -23,21 +23,20 @@
23
23
  #include <grpc/support/port_platform.h>
24
24
 
25
25
  #include <list>
26
+ #include <memory>
27
+ #include <string>
26
28
 
27
- #include "absl/log/check.h"
28
- #include "absl/log/log.h"
29
- #include "absl/strings/numbers.h"
30
- #include "absl/strings/str_split.h"
31
- #include "src/core/lib/slice/slice_internal.h"
32
29
  #include "src/core/lib/surface/call.h"
33
30
  #include "src/core/lib/surface/channel.h"
34
- #include "src/core/tsi/alts/handshaker/alts_shared_resource.h"
35
31
  #include "src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h"
36
32
  #include "src/core/tsi/alts/handshaker/alts_tsi_utils.h"
37
- #include "src/core/util/crash.h"
38
33
  #include "src/core/util/env.h"
34
+ #include "src/core/util/grpc_check.h"
39
35
  #include "src/core/util/sync.h"
40
36
  #include "upb/mem/arena.hpp"
37
+ #include "absl/log/log.h"
38
+ #include "absl/strings/numbers.h"
39
+ #include "absl/strings/str_split.h"
41
40
 
42
41
  #define TSI_ALTS_INITIAL_BUFFER_SIZE 256
43
42
 
@@ -119,13 +118,13 @@ typedef struct alts_grpc_handshaker_client {
119
118
 
120
119
  static void handshaker_client_send_buffer_destroy(
121
120
  alts_grpc_handshaker_client* client) {
122
- CHECK_NE(client, nullptr);
121
+ GRPC_CHECK_NE(client, nullptr);
123
122
  grpc_byte_buffer_destroy(client->send_buffer);
124
123
  client->send_buffer = nullptr;
125
124
  }
126
125
 
127
126
  static bool is_handshake_finished_properly(grpc_gcp_HandshakerResp* resp) {
128
- CHECK_NE(resp, nullptr);
127
+ GRPC_CHECK_NE(resp, nullptr);
129
128
  return grpc_gcp_HandshakerResp_result(resp) != nullptr;
130
129
  }
131
130
 
@@ -158,7 +157,7 @@ static void maybe_complete_tsi_next(
158
157
  grpc_core::MutexLock lock(&client->mu);
159
158
  client->receive_status_finished |= receive_status_finished;
160
159
  if (pending_recv_message_result != nullptr) {
161
- CHECK_EQ(client->pending_recv_message_result, nullptr);
160
+ GRPC_CHECK_EQ(client->pending_recv_message_result, nullptr);
162
161
  client->pending_recv_message_result = pending_recv_message_result;
163
162
  }
164
163
  if (client->pending_recv_message_result == nullptr) {
@@ -199,7 +198,7 @@ static void handle_response_done(alts_grpc_handshaker_client* client,
199
198
 
200
199
  void alts_handshaker_client_handle_response(alts_handshaker_client* c,
201
200
  bool is_ok) {
202
- CHECK_NE(c, nullptr);
201
+ GRPC_CHECK_NE(c, nullptr);
203
202
  alts_grpc_handshaker_client* client =
204
203
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
205
204
  grpc_byte_buffer* recv_buffer = client->recv_buffer;
@@ -313,7 +312,7 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
313
312
 
314
313
  static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client,
315
314
  bool is_start) {
316
- CHECK_NE(client, nullptr);
315
+ GRPC_CHECK_NE(client, nullptr);
317
316
  grpc_op ops[kHandshakerClientOpNum];
318
317
  memset(ops, 0, sizeof(ops));
319
318
  grpc_op* op = ops;
@@ -326,34 +325,34 @@ static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client,
326
325
  op->flags = 0;
327
326
  op->reserved = nullptr;
328
327
  op++;
329
- CHECK(op - ops <= kHandshakerClientOpNum);
328
+ GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
330
329
  gpr_ref(&client->refs);
331
330
  grpc_call_error call_error =
332
331
  client->grpc_caller(client->call, ops, static_cast<size_t>(op - ops),
333
332
  &client->on_status_received);
334
333
  // TODO(apolcyn): return the error here instead, as done for other ops?
335
- CHECK_EQ(call_error, GRPC_CALL_OK);
334
+ GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
336
335
  memset(ops, 0, sizeof(ops));
337
336
  op = ops;
338
337
  op->op = GRPC_OP_SEND_INITIAL_METADATA;
339
338
  op->data.send_initial_metadata.count = 0;
340
339
  op++;
341
- CHECK(op - ops <= kHandshakerClientOpNum);
340
+ GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
342
341
  op->op = GRPC_OP_RECV_INITIAL_METADATA;
343
342
  op->data.recv_initial_metadata.recv_initial_metadata =
344
343
  &client->recv_initial_metadata;
345
344
  op++;
346
- CHECK(op - ops <= kHandshakerClientOpNum);
345
+ GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
347
346
  }
348
347
  op->op = GRPC_OP_SEND_MESSAGE;
349
348
  op->data.send_message.send_message = client->send_buffer;
350
349
  op++;
351
- CHECK(op - ops <= kHandshakerClientOpNum);
350
+ GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
352
351
  op->op = GRPC_OP_RECV_MESSAGE;
353
352
  op->data.recv_message.recv_message = &client->recv_buffer;
354
353
  op++;
355
- CHECK(op - ops <= kHandshakerClientOpNum);
356
- CHECK_NE(client->grpc_caller, nullptr);
354
+ GRPC_CHECK(op - ops <= kHandshakerClientOpNum);
355
+ GRPC_CHECK_NE(client->grpc_caller, nullptr);
357
356
  if (client->grpc_caller(client->call, ops, static_cast<size_t>(op - ops),
358
357
  &client->on_handshaker_service_resp_recv) !=
359
358
  GRPC_CALL_OK) {
@@ -451,7 +450,7 @@ void HandshakeDone(bool is_client) {
451
450
  /// make a grpc call.
452
451
  ///
453
452
  static tsi_result make_grpc_call(alts_handshaker_client* c, bool is_start) {
454
- CHECK_NE(c, nullptr);
453
+ GRPC_CHECK_NE(c, nullptr);
455
454
  alts_grpc_handshaker_client* client =
456
455
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
457
456
  if (is_start) {
@@ -500,7 +499,7 @@ static grpc_byte_buffer* get_serialized_handshaker_req(
500
499
  // Create and populate a client_start handshaker request, then serialize it.
501
500
  static grpc_byte_buffer* get_serialized_start_client(
502
501
  alts_handshaker_client* c) {
503
- CHECK_NE(c, nullptr);
502
+ GRPC_CHECK_NE(c, nullptr);
504
503
  alts_grpc_handshaker_client* client =
505
504
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
506
505
  upb::Arena arena;
@@ -512,9 +511,17 @@ static grpc_byte_buffer* get_serialized_start_client(
512
511
  grpc_gcp_StartClientHandshakeReq_add_application_protocols(
513
512
  start_client, upb_StringView_FromString(ALTS_APPLICATION_PROTOCOL),
514
513
  arena.ptr());
515
- grpc_gcp_StartClientHandshakeReq_add_record_protocols(
516
- start_client, upb_StringView_FromString(ALTS_RECORD_PROTOCOL),
517
- arena.ptr());
514
+ if (client->options->record_protocols.empty()) {
515
+ grpc_gcp_StartClientHandshakeReq_add_record_protocols(
516
+ start_client, upb_StringView_FromString(ALTS_RECORD_PROTOCOL),
517
+ arena.ptr());
518
+ } else {
519
+ for (const auto& record_protocol : client->options->record_protocols) {
520
+ grpc_gcp_StartClientHandshakeReq_add_record_protocols(
521
+ start_client, upb_StringView_FromString(record_protocol.c_str()),
522
+ arena.ptr());
523
+ }
524
+ }
518
525
  grpc_gcp_RpcProtocolVersions* client_version =
519
526
  grpc_gcp_StartClientHandshakeReq_mutable_rpc_versions(start_client,
520
527
  arena.ptr());
@@ -536,6 +543,24 @@ static grpc_byte_buffer* get_serialized_start_client(
536
543
  upb_StringView_FromString(ptr->data));
537
544
  ptr = ptr->next;
538
545
  }
546
+ // This ensures the token string is available when the proto gets serialized.
547
+ absl::StatusOr<std::string> access_token = absl::NotFoundError("");
548
+ // Set access token if the token fetcher is available.
549
+ grpc::alts::TokenFetcher* token_fetcher =
550
+ (reinterpret_cast<grpc_alts_credentials_client_options*>(client->options))
551
+ ->token_fetcher.get();
552
+ if (token_fetcher != nullptr) {
553
+ access_token = token_fetcher->GetToken();
554
+ if (!access_token.ok()) {
555
+ LOG_EVERY_N_SEC(ERROR, 60)
556
+ << "Failed to get token from the token fetcher "
557
+ "in client start handshake: "
558
+ << access_token.status();
559
+ return nullptr;
560
+ }
561
+ grpc_gcp_StartClientHandshakeReq_set_access_token(
562
+ start_client, upb_StringView_FromString(access_token->c_str()));
563
+ }
539
564
  grpc_gcp_StartClientHandshakeReq_set_max_frame_size(
540
565
  start_client, static_cast<uint32_t>(client->max_frame_size));
541
566
  if (!client->preferred_transport_protocols.empty()) {
@@ -576,8 +601,8 @@ static tsi_result handshaker_client_start_client(alts_handshaker_client* c) {
576
601
  // Create and populate a start_server handshaker request, then serialize it.
577
602
  static grpc_byte_buffer* get_serialized_start_server(
578
603
  alts_handshaker_client* c, grpc_slice* bytes_received) {
579
- CHECK_NE(c, nullptr);
580
- CHECK_NE(bytes_received, nullptr);
604
+ GRPC_CHECK_NE(c, nullptr);
605
+ GRPC_CHECK_NE(bytes_received, nullptr);
581
606
  alts_grpc_handshaker_client* client =
582
607
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
583
608
 
@@ -591,8 +616,16 @@ static grpc_byte_buffer* get_serialized_start_server(
591
616
  arena.ptr());
592
617
  grpc_gcp_ServerHandshakeParameters* value =
593
618
  grpc_gcp_ServerHandshakeParameters_new(arena.ptr());
594
- grpc_gcp_ServerHandshakeParameters_add_record_protocols(
595
- value, upb_StringView_FromString(ALTS_RECORD_PROTOCOL), arena.ptr());
619
+ if (client->options->record_protocols.empty()) {
620
+ grpc_gcp_ServerHandshakeParameters_add_record_protocols(
621
+ value, upb_StringView_FromString(ALTS_RECORD_PROTOCOL), arena.ptr());
622
+ } else {
623
+ for (const auto& record_protocol : client->options->record_protocols) {
624
+ grpc_gcp_ServerHandshakeParameters_add_record_protocols(
625
+ value, upb_StringView_FromString(record_protocol.c_str()),
626
+ arena.ptr());
627
+ }
628
+ }
596
629
  grpc_gcp_StartServerHandshakeReq_handshake_parameters_set(
597
630
  start_server, grpc_gcp_ALTS, value, arena.ptr());
598
631
  grpc_gcp_StartServerHandshakeReq_set_in_bytes(
@@ -645,7 +678,7 @@ static tsi_result handshaker_client_start_server(alts_handshaker_client* c,
645
678
 
646
679
  // Create and populate a next handshaker request, then serialize it.
647
680
  static grpc_byte_buffer* get_serialized_next(grpc_slice* bytes_received) {
648
- CHECK_NE(bytes_received, nullptr);
681
+ GRPC_CHECK_NE(bytes_received, nullptr);
649
682
  upb::Arena arena;
650
683
  grpc_gcp_HandshakerReq* req = grpc_gcp_HandshakerReq_new(arena.ptr());
651
684
  grpc_gcp_NextHandshakeMessageReq* next =
@@ -683,7 +716,7 @@ static tsi_result handshaker_client_next(alts_handshaker_client* c,
683
716
  }
684
717
 
685
718
  static void handshaker_client_shutdown(alts_handshaker_client* c) {
686
- CHECK_NE(c, nullptr);
719
+ GRPC_CHECK_NE(c, nullptr);
687
720
  alts_grpc_handshaker_client* client =
688
721
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
689
722
  if (client->call != nullptr) {
@@ -789,8 +822,8 @@ namespace internal {
789
822
 
790
823
  void alts_handshaker_client_set_grpc_caller_for_testing(
791
824
  alts_handshaker_client* c, alts_grpc_caller caller) {
792
- CHECK(c != nullptr);
793
- CHECK_NE(caller, nullptr);
825
+ GRPC_CHECK(c != nullptr);
826
+ GRPC_CHECK_NE(caller, nullptr);
794
827
  alts_grpc_handshaker_client* client =
795
828
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
796
829
  client->grpc_caller = caller;
@@ -798,7 +831,7 @@ void alts_handshaker_client_set_grpc_caller_for_testing(
798
831
 
799
832
  grpc_byte_buffer* alts_handshaker_client_get_send_buffer_for_testing(
800
833
  alts_handshaker_client* c) {
801
- CHECK_NE(c, nullptr);
834
+ GRPC_CHECK_NE(c, nullptr);
802
835
  alts_grpc_handshaker_client* client =
803
836
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
804
837
  return client->send_buffer;
@@ -806,7 +839,7 @@ grpc_byte_buffer* alts_handshaker_client_get_send_buffer_for_testing(
806
839
 
807
840
  grpc_byte_buffer** alts_handshaker_client_get_recv_buffer_addr_for_testing(
808
841
  alts_handshaker_client* c) {
809
- CHECK_NE(c, nullptr);
842
+ GRPC_CHECK_NE(c, nullptr);
810
843
  alts_grpc_handshaker_client* client =
811
844
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
812
845
  return &client->recv_buffer;
@@ -814,7 +847,7 @@ grpc_byte_buffer** alts_handshaker_client_get_recv_buffer_addr_for_testing(
814
847
 
815
848
  grpc_metadata_array* alts_handshaker_client_get_initial_metadata_for_testing(
816
849
  alts_handshaker_client* c) {
817
- CHECK_NE(c, nullptr);
850
+ GRPC_CHECK_NE(c, nullptr);
818
851
  alts_grpc_handshaker_client* client =
819
852
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
820
853
  return &client->recv_initial_metadata;
@@ -822,7 +855,7 @@ grpc_metadata_array* alts_handshaker_client_get_initial_metadata_for_testing(
822
855
 
823
856
  void alts_handshaker_client_set_recv_bytes_for_testing(
824
857
  alts_handshaker_client* c, grpc_slice* recv_bytes) {
825
- CHECK_NE(c, nullptr);
858
+ GRPC_CHECK_NE(c, nullptr);
826
859
  alts_grpc_handshaker_client* client =
827
860
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
828
861
  client->recv_bytes = CSliceRef(*recv_bytes);
@@ -832,7 +865,7 @@ void alts_handshaker_client_set_fields_for_testing(
832
865
  alts_handshaker_client* c, alts_tsi_handshaker* handshaker,
833
866
  tsi_handshaker_on_next_done_cb cb, void* user_data,
834
867
  grpc_byte_buffer* recv_buffer, bool inject_read_failure) {
835
- CHECK_NE(c, nullptr);
868
+ GRPC_CHECK_NE(c, nullptr);
836
869
  alts_grpc_handshaker_client* client =
837
870
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
838
871
  client->handshaker = handshaker;
@@ -845,22 +878,22 @@ void alts_handshaker_client_set_fields_for_testing(
845
878
  void alts_handshaker_client_check_fields_for_testing(
846
879
  alts_handshaker_client* c, tsi_handshaker_on_next_done_cb cb,
847
880
  void* user_data, bool has_sent_start_message, grpc_slice* recv_bytes) {
848
- CHECK_NE(c, nullptr);
881
+ GRPC_CHECK_NE(c, nullptr);
849
882
  alts_grpc_handshaker_client* client =
850
883
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
851
- CHECK(client->cb == cb);
852
- CHECK(client->user_data == user_data);
884
+ GRPC_CHECK(client->cb == cb);
885
+ GRPC_CHECK(client->user_data == user_data);
853
886
  if (recv_bytes != nullptr) {
854
- CHECK_EQ(grpc_slice_cmp(client->recv_bytes, *recv_bytes), 0);
887
+ GRPC_CHECK_EQ(grpc_slice_cmp(client->recv_bytes, *recv_bytes), 0);
855
888
  }
856
- CHECK(alts_tsi_handshaker_get_has_sent_start_message_for_testing(
857
- client->handshaker) == has_sent_start_message);
889
+ GRPC_CHECK(alts_tsi_handshaker_get_has_sent_start_message_for_testing(
890
+ client->handshaker) == has_sent_start_message);
858
891
  }
859
892
 
860
893
  void alts_handshaker_client_set_vtable_for_testing(
861
894
  alts_handshaker_client* c, alts_handshaker_client_vtable* vtable) {
862
- CHECK_NE(c, nullptr);
863
- CHECK_NE(vtable, nullptr);
895
+ GRPC_CHECK_NE(c, nullptr);
896
+ GRPC_CHECK_NE(vtable, nullptr);
864
897
  alts_grpc_handshaker_client* client =
865
898
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
866
899
  client->base.vtable = vtable;
@@ -868,7 +901,7 @@ void alts_handshaker_client_set_vtable_for_testing(
868
901
 
869
902
  alts_tsi_handshaker* alts_handshaker_client_get_handshaker_for_testing(
870
903
  alts_handshaker_client* c) {
871
- CHECK_NE(c, nullptr);
904
+ GRPC_CHECK_NE(c, nullptr);
872
905
  alts_grpc_handshaker_client* client =
873
906
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
874
907
  return client->handshaker;
@@ -876,7 +909,7 @@ alts_tsi_handshaker* alts_handshaker_client_get_handshaker_for_testing(
876
909
 
877
910
  void alts_handshaker_client_set_cb_for_testing(
878
911
  alts_handshaker_client* c, tsi_handshaker_on_next_done_cb cb) {
879
- CHECK_NE(c, nullptr);
912
+ GRPC_CHECK_NE(c, nullptr);
880
913
  alts_grpc_handshaker_client* client =
881
914
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
882
915
  client->cb = cb;
@@ -884,7 +917,7 @@ void alts_handshaker_client_set_cb_for_testing(
884
917
 
885
918
  grpc_closure* alts_handshaker_client_get_closure_for_testing(
886
919
  alts_handshaker_client* c) {
887
- CHECK_NE(c, nullptr);
920
+ GRPC_CHECK_NE(c, nullptr);
888
921
  alts_grpc_handshaker_client* client =
889
922
  reinterpret_cast<alts_grpc_handshaker_client*>(c);
890
923
  return &client->on_handshaker_service_resp_recv;
@@ -32,6 +32,7 @@
32
32
  #define ALTS_SERVICE_METHOD "/grpc.gcp.HandshakerService/DoHandshake"
33
33
  #define ALTS_APPLICATION_PROTOCOL "grpc"
34
34
  #define ALTS_RECORD_PROTOCOL "ALTSRP_GCM_AES128_REKEY"
35
+ #define ALTS_INTEGRITY_ONLY_RECORD_PROTOCOL "ALTSRP_GMAC_128"
35
36
  #define ALTS_HANDSHAKER_SERVICE_URL_FOR_TESTING "lame"
36
37
 
37
38
  const size_t kAltsAes128GcmRekeyKeyLength = 44;
@@ -20,10 +20,10 @@
20
20
 
21
21
  #include <grpc/support/port_platform.h>
22
22
 
23
- #include "absl/log/check.h"
24
23
  #include "src/core/lib/channel/channel_args.h"
25
24
  #include "src/core/tsi/alts/handshaker/alts_handshaker_client.h"
26
25
  #include "src/core/util/crash.h"
26
+ #include "src/core/util/grpc_check.h"
27
27
 
28
28
  static alts_shared_resource_dedicated g_alts_resource_dedicated;
29
29
 
@@ -36,11 +36,11 @@ static void thread_worker(void* /*arg*/) {
36
36
  grpc_event event =
37
37
  grpc_completion_queue_next(g_alts_resource_dedicated.cq,
38
38
  gpr_inf_future(GPR_CLOCK_REALTIME), nullptr);
39
- CHECK(event.type != GRPC_QUEUE_TIMEOUT);
39
+ GRPC_CHECK(event.type != GRPC_QUEUE_TIMEOUT);
40
40
  if (event.type == GRPC_QUEUE_SHUTDOWN) {
41
41
  break;
42
42
  }
43
- CHECK(event.type == GRPC_OP_COMPLETE);
43
+ GRPC_CHECK(event.type == GRPC_OP_COMPLETE);
44
44
  alts_handshaker_client* client =
45
45
  static_cast<alts_handshaker_client*>(event.tag);
46
46
  alts_handshaker_client_handle_response(client, event.success);
@@ -29,8 +29,6 @@
29
29
  #include <stdlib.h>
30
30
  #include <string.h>
31
31
 
32
- #include "absl/log/check.h"
33
- #include "absl/log/log.h"
34
32
  #include "src/core/lib/iomgr/closure.h"
35
33
  #include "src/core/lib/iomgr/exec_ctx.h"
36
34
  #include "src/core/lib/surface/channel.h"
@@ -39,9 +37,11 @@
39
37
  #include "src/core/tsi/alts/handshaker/alts_shared_resource.h"
40
38
  #include "src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h"
41
39
  #include "src/core/util/env.h"
40
+ #include "src/core/util/grpc_check.h"
42
41
  #include "src/core/util/memory.h"
43
42
  #include "src/core/util/sync.h"
44
43
  #include "upb/mem/arena.hpp"
44
+ #include "absl/log/log.h"
45
45
 
46
46
  namespace {
47
47
  constexpr absl::string_view kUseGrpcExperimentalAltsHandshakerKeepaliveParams =
@@ -94,6 +94,7 @@ typedef struct alts_tsi_handshaker_result {
94
94
  grpc_slice serialized_context;
95
95
  // Peer's maximum frame size.
96
96
  size_t max_frame_size;
97
+ std::string record_protocol;
97
98
  std::optional<std::string> negotiated_transport_protocol;
98
99
  } alts_tsi_handshaker_result;
99
100
 
@@ -116,7 +117,7 @@ static tsi_result handshaker_result_extract_peer(
116
117
  LOG(ERROR) << "Failed to construct tsi peer";
117
118
  return ok;
118
119
  }
119
- CHECK_NE(&peer->properties[index], nullptr);
120
+ GRPC_CHECK_NE(&peer->properties[index], nullptr);
120
121
  ok = tsi_construct_string_peer_property_from_cstring(
121
122
  TSI_CERTIFICATE_TYPE_PEER_PROPERTY, TSI_ALTS_CERTIFICATE_TYPE,
122
123
  &peer->properties[index]);
@@ -126,7 +127,7 @@ static tsi_result handshaker_result_extract_peer(
126
127
  return ok;
127
128
  }
128
129
  index++;
129
- CHECK_NE(&peer->properties[index], nullptr);
130
+ GRPC_CHECK_NE(&peer->properties[index], nullptr);
130
131
  ok = tsi_construct_string_peer_property_from_cstring(
131
132
  TSI_ALTS_SERVICE_ACCOUNT_PEER_PROPERTY, result->peer_identity,
132
133
  &peer->properties[index]);
@@ -135,7 +136,7 @@ static tsi_result handshaker_result_extract_peer(
135
136
  LOG(ERROR) << "Failed to set tsi peer property";
136
137
  }
137
138
  index++;
138
- CHECK_NE(&peer->properties[index], nullptr);
139
+ GRPC_CHECK_NE(&peer->properties[index], nullptr);
139
140
  ok = tsi_construct_string_peer_property(
140
141
  TSI_ALTS_RPC_VERSIONS,
141
142
  reinterpret_cast<char*>(GRPC_SLICE_START_PTR(result->rpc_versions)),
@@ -145,7 +146,7 @@ static tsi_result handshaker_result_extract_peer(
145
146
  LOG(ERROR) << "Failed to set tsi peer property";
146
147
  }
147
148
  index++;
148
- CHECK_NE(&peer->properties[index], nullptr);
149
+ GRPC_CHECK_NE(&peer->properties[index], nullptr);
149
150
  ok = tsi_construct_string_peer_property(
150
151
  TSI_ALTS_CONTEXT,
151
152
  reinterpret_cast<char*>(GRPC_SLICE_START_PTR(result->serialized_context)),
@@ -155,18 +156,21 @@ static tsi_result handshaker_result_extract_peer(
155
156
  LOG(ERROR) << "Failed to set tsi peer property";
156
157
  }
157
158
  index++;
158
- CHECK_NE(&peer->properties[index], nullptr);
159
+ GRPC_CHECK_NE(&peer->properties[index], nullptr);
160
+ tsi_security_level security_level =
161
+ result->record_protocol == ALTS_INTEGRITY_ONLY_RECORD_PROTOCOL
162
+ ? TSI_INTEGRITY_ONLY
163
+ : TSI_PRIVACY_AND_INTEGRITY;
159
164
  ok = tsi_construct_string_peer_property_from_cstring(
160
165
  TSI_SECURITY_LEVEL_PEER_PROPERTY,
161
- tsi_security_level_to_string(TSI_PRIVACY_AND_INTEGRITY),
162
- &peer->properties[index]);
166
+ tsi_security_level_to_string(security_level), &peer->properties[index]);
163
167
  if (ok != TSI_OK) {
164
168
  tsi_peer_destruct(peer);
165
169
  LOG(ERROR) << "Failed to set tsi peer property";
166
170
  }
167
171
  if (result->negotiated_transport_protocol.has_value()) {
168
172
  index++;
169
- CHECK_NE(&peer->properties[index], nullptr);
173
+ GRPC_CHECK_NE(&peer->properties[index], nullptr);
170
174
  ok = tsi_construct_string_peer_property_from_cstring(
171
175
  TSI_ALTS_NEGOTIATED_TRANSPORT_PROTOCOL,
172
176
  result->negotiated_transport_protocol.value().c_str(),
@@ -176,7 +180,7 @@ static tsi_result handshaker_result_extract_peer(
176
180
  LOG(ERROR) << "Failed to set tsi peer property";
177
181
  }
178
182
  }
179
- CHECK(++index == peer_properties_count);
183
+ GRPC_CHECK(++index == peer_properties_count);
180
184
  return ok;
181
185
  }
182
186
 
@@ -216,13 +220,16 @@ static tsi_result handshaker_result_create_zero_copy_grpc_protector(
216
220
  VLOG(2) << "After Frame Size Negotiation, maximum frame size used by frame "
217
221
  "protector equals "
218
222
  << *max_output_protected_frame_size;
223
+ bool is_integrity_only =
224
+ (result->record_protocol == ALTS_INTEGRITY_ONLY_RECORD_PROTOCOL);
219
225
  tsi_result ok = alts_zero_copy_grpc_protector_create(
220
- grpc_core::GsecKeyFactory({reinterpret_cast<uint8_t*>(result->key_data),
221
- kAltsAes128GcmRekeyKeyLength},
222
- /*is_rekey=*/true),
223
- result->is_client,
224
- /*is_integrity_only=*/false, /*enable_extra_copy=*/false,
225
- max_output_protected_frame_size, protector);
226
+ grpc_core::GsecKeyFactory(
227
+ {reinterpret_cast<uint8_t*>(result->key_data),
228
+ is_integrity_only ? kAes128GcmKeyLength
229
+ : kAltsAes128GcmRekeyKeyLength},
230
+ !is_integrity_only),
231
+ result->is_client, is_integrity_only,
232
+ /*enable_extra_copy=*/false, max_output_protected_frame_size, protector);
226
233
  if (ok != TSI_OK) {
227
234
  LOG(ERROR) << "Failed to create zero-copy grpc protector";
228
235
  }
@@ -277,7 +284,7 @@ static void handshaker_result_destroy(tsi_handshaker_result* self) {
277
284
  gpr_free(result->unused_bytes);
278
285
  grpc_core::CSliceUnref(result->rpc_versions);
279
286
  grpc_core::CSliceUnref(result->serialized_context);
280
- gpr_free(result);
287
+ delete result;
281
288
  }
282
289
 
283
290
  static const tsi_handshaker_result_vtable result_vtable = {
@@ -342,9 +349,7 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
342
349
  grpc_gcp_Identity_service_account(local_identity);
343
350
  // We don't check if local service account is empty here
344
351
  // because local identity could be empty in certain situations.
345
- alts_tsi_handshaker_result* sresult =
346
- static_cast<alts_tsi_handshaker_result*>(
347
- gpr_zalloc(sizeof(alts_tsi_handshaker_result)));
352
+ alts_tsi_handshaker_result* sresult = new alts_tsi_handshaker_result();
348
353
  sresult->key_data =
349
354
  static_cast<char*>(gpr_zalloc(kAltsAes128GcmRekeyKeyLength));
350
355
  memcpy(sresult->key_data, key_data.data, kAltsAes128GcmRekeyKeyLength);
@@ -366,6 +371,10 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
366
371
  std::string(transport_protocol.data, transport_protocol.size);
367
372
  }
368
373
  }
374
+
375
+ sresult->record_protocol =
376
+ std::string(record_protocol.data, record_protocol.size);
377
+
369
378
  upb::Arena rpc_versions_arena;
370
379
  bool serialized = grpc_gcp_rpc_protocol_versions_encode(
371
380
  peer_rpc_version, rpc_versions_arena.ptr(), &sresult->rpc_versions);
@@ -377,9 +386,10 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
377
386
  grpc_gcp_AltsContext* context = grpc_gcp_AltsContext_new(context_arena.ptr());
378
387
  grpc_gcp_AltsContext_set_application_protocol(context, application_protocol);
379
388
  grpc_gcp_AltsContext_set_record_protocol(context, record_protocol);
380
- // ALTS currently only supports the security level of 2,
381
- // which is "grpc_gcp_INTEGRITY_AND_PRIVACY".
382
- grpc_gcp_AltsContext_set_security_level(context, 2);
389
+ grpc_gcp_AltsContext_set_security_level(
390
+ context, sresult->record_protocol == ALTS_INTEGRITY_ONLY_RECORD_PROTOCOL
391
+ ? TSI_INTEGRITY_ONLY
392
+ : TSI_PRIVACY_AND_INTEGRITY);
383
393
  grpc_gcp_AltsContext_set_peer_service_account(context, peer_service_account);
384
394
  grpc_gcp_AltsContext_set_local_service_account(context,
385
395
  local_service_account);
@@ -456,7 +466,7 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
456
466
  handshaker->handshaker_service_url);
457
467
  handshaker->interested_parties =
458
468
  grpc_alts_get_shared_resource_dedicated()->interested_parties;
459
- CHECK_NE(handshaker->interested_parties, nullptr);
469
+ GRPC_CHECK_NE(handshaker->interested_parties, nullptr);
460
470
  }
461
471
  grpc_iomgr_cb_func grpc_cb = handshaker->channel == nullptr
462
472
  ? on_handshaker_service_resp_recv_dedicated
@@ -479,7 +489,7 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
479
489
  }
480
490
  {
481
491
  grpc_core::MutexLock lock(&handshaker->mu);
482
- CHECK_EQ(handshaker->client, nullptr);
492
+ GRPC_CHECK_EQ(handshaker->client, nullptr);
483
493
  handshaker->client = client;
484
494
  if (handshaker->shutdown) {
485
495
  VLOG(2) << "TSI handshake shutdown";
@@ -491,8 +501,8 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
491
501
  }
492
502
  if (handshaker->channel == nullptr &&
493
503
  handshaker->client_vtable_for_testing == nullptr) {
494
- CHECK(grpc_cq_begin_op(grpc_alts_get_shared_resource_dedicated()->cq,
495
- handshaker->client));
504
+ GRPC_CHECK(grpc_cq_begin_op(grpc_alts_get_shared_resource_dedicated()->cq,
505
+ handshaker->client));
496
506
  }
497
507
  grpc_slice slice = (received_bytes == nullptr || received_bytes_size == 0)
498
508
  ? grpc_empty_slice()
@@ -534,7 +544,7 @@ static void alts_tsi_handshaker_create_channel(
534
544
  alts_tsi_handshaker_continue_handshaker_next_args* next_args =
535
545
  static_cast<alts_tsi_handshaker_continue_handshaker_next_args*>(arg);
536
546
  alts_tsi_handshaker* handshaker = next_args->handshaker;
537
- CHECK_EQ(handshaker->channel, nullptr);
547
+ GRPC_CHECK_EQ(handshaker->channel, nullptr);
538
548
  grpc_channel_credentials* creds = grpc_insecure_credentials_create();
539
549
  // Disable retries so that we quickly get a signal when the
540
550
  // handshake server is not reachable.
@@ -643,7 +653,7 @@ static tsi_result handshaker_next_dedicated(
643
653
  }
644
654
 
645
655
  static void handshaker_shutdown(tsi_handshaker* self) {
646
- CHECK_NE(self, nullptr);
656
+ GRPC_CHECK_NE(self, nullptr);
647
657
  alts_tsi_handshaker* handshaker =
648
658
  reinterpret_cast<alts_tsi_handshaker*>(self);
649
659
  grpc_core::MutexLock lock(&handshaker->mu);
@@ -689,7 +699,7 @@ static const tsi_handshaker_vtable handshaker_vtable_dedicated = {
689
699
  handshaker_shutdown};
690
700
 
691
701
  bool alts_tsi_handshaker_has_shutdown(alts_tsi_handshaker* handshaker) {
692
- CHECK_NE(handshaker, nullptr);
702
+ GRPC_CHECK_NE(handshaker, nullptr);
693
703
  grpc_core::MutexLock lock(&handshaker->mu);
694
704
  return handshaker->shutdown;
695
705
  }
@@ -729,8 +739,8 @@ tsi_result alts_tsi_handshaker_create(
729
739
  void alts_tsi_handshaker_result_set_unused_bytes(tsi_handshaker_result* result,
730
740
  grpc_slice* recv_bytes,
731
741
  size_t bytes_consumed) {
732
- CHECK(recv_bytes != nullptr);
733
- CHECK_NE(result, nullptr);
742
+ GRPC_CHECK(recv_bytes != nullptr);
743
+ GRPC_CHECK_NE(result, nullptr);
734
744
  if (GRPC_SLICE_LENGTH(*recv_bytes) == bytes_consumed) {
735
745
  return;
736
746
  }
@@ -749,19 +759,19 @@ namespace internal {
749
759
 
750
760
  bool alts_tsi_handshaker_get_has_sent_start_message_for_testing(
751
761
  alts_tsi_handshaker* handshaker) {
752
- CHECK_NE(handshaker, nullptr);
762
+ GRPC_CHECK_NE(handshaker, nullptr);
753
763
  return handshaker->has_sent_start_message;
754
764
  }
755
765
 
756
766
  void alts_tsi_handshaker_set_client_vtable_for_testing(
757
767
  alts_tsi_handshaker* handshaker, alts_handshaker_client_vtable* vtable) {
758
- CHECK_NE(handshaker, nullptr);
768
+ GRPC_CHECK_NE(handshaker, nullptr);
759
769
  handshaker->client_vtable_for_testing = vtable;
760
770
  }
761
771
 
762
772
  bool alts_tsi_handshaker_get_is_client_for_testing(
763
773
  alts_tsi_handshaker* handshaker) {
764
- CHECK_NE(handshaker, nullptr);
774
+ GRPC_CHECK_NE(handshaker, nullptr);
765
775
  return handshaker->is_client;
766
776
  }
767
777
 
@@ -21,10 +21,10 @@
21
21
  #include <grpc/byte_buffer_reader.h>
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include "absl/log/check.h"
25
- #include "absl/log/log.h"
26
24
  #include "src/core/lib/slice/slice.h"
27
25
  #include "src/core/lib/slice/slice_internal.h"
26
+ #include "src/core/util/grpc_check.h"
27
+ #include "absl/log/log.h"
28
28
 
29
29
  tsi_result alts_tsi_utils_convert_to_tsi_result(grpc_status_code code) {
30
30
  switch (code) {
@@ -45,8 +45,8 @@ tsi_result alts_tsi_utils_convert_to_tsi_result(grpc_status_code code) {
45
45
 
46
46
  grpc_gcp_HandshakerResp* alts_tsi_utils_deserialize_response(
47
47
  grpc_byte_buffer* resp_buffer, upb_Arena* arena) {
48
- CHECK_NE(resp_buffer, nullptr);
49
- CHECK_NE(arena, nullptr);
48
+ GRPC_CHECK_NE(resp_buffer, nullptr);
49
+ GRPC_CHECK_NE(arena, nullptr);
50
50
  grpc_byte_buffer_reader bbr;
51
51
  grpc_byte_buffer_reader_init(&bbr, resp_buffer);
52
52
  grpc_slice slice = grpc_byte_buffer_reader_readall(&bbr);
@@ -20,8 +20,8 @@
20
20
 
21
21
  #include <grpc/support/port_platform.h>
22
22
 
23
- #include "absl/log/log.h"
24
23
  #include "upb/mem/arena.hpp"
24
+ #include "absl/log/log.h"
25
25
 
26
26
  bool grpc_gcp_rpc_protocol_versions_set_max(
27
27
  grpc_gcp_rpc_protocol_versions* versions, uint32_t max_major,