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
@@ -119,6 +119,20 @@ Histogram_1800000_40 operator-(const Histogram_1800000_40& left,
119
119
  }
120
120
  return result;
121
121
  }
122
+ void HistogramCollector_16777216_50::Collect(
123
+ Histogram_16777216_50* result) const {
124
+ for (int i = 0; i < 50; i++) {
125
+ result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
126
+ }
127
+ }
128
+ Histogram_16777216_50 operator-(const Histogram_16777216_50& left,
129
+ const Histogram_16777216_50& right) {
130
+ Histogram_16777216_50 result;
131
+ for (int i = 0; i < 50; i++) {
132
+ result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
133
+ }
134
+ return result;
135
+ }
122
136
  const absl::string_view
123
137
  GlobalStats::counter_name[static_cast<int>(Counter::COUNT)] = {
124
138
  "client_calls_created",
@@ -226,6 +240,9 @@ const absl::string_view
226
240
  "http2_transport_remote_window_update",
227
241
  "http2_transport_window_update_period",
228
242
  "http2_stream_window_update_period",
243
+ "http2_write_target_size",
244
+ "http2_write_data_frame_size",
245
+ "http2_read_data_frame_size",
229
246
  "wrr_subchannel_list_size",
230
247
  "wrr_subchannel_ready_size",
231
248
  "work_serializer_run_time_ms",
@@ -269,6 +286,9 @@ const absl::string_view GlobalStats::histogram_doc[static_cast<int>(
269
286
  "Transport window update sent by peer",
270
287
  "Period in milliseconds at which peer sends transport window update",
271
288
  "Period in milliseconds at which peer sends stream window update",
289
+ "Number of bytes targetted for http2 writes",
290
+ "Number of bytes for each data frame written",
291
+ "Number of bytes for each data frame read",
272
292
  "Number of subchannels in a subchannel list at picker creation time",
273
293
  "Number of READY subchannels in a subchannel list at picker creation time",
274
294
  "Number of milliseconds work serializers run for",
@@ -333,6 +353,20 @@ const int kStatsTable12[41] = {
333
353
  const uint8_t kStatsTable13[37] = {
334
354
  4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
335
355
  22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39};
356
+ const int kStatsTable14[51] = {
357
+ 0, 1, 2, 3, 5, 7, 10, 14,
358
+ 20, 28, 39, 54, 75, 104, 144, 200,
359
+ 277, 383, 530, 733, 1014, 1402, 1939, 2681,
360
+ 3706, 5123, 7082, 9790, 13533, 18707, 25859, 35746,
361
+ 49412, 68303, 94416, 130512, 180408, 249380, 344720, 476509,
362
+ 658682, 910501, 1258592, 1739760, 2404882, 3324285, 4595181, 6351949,
363
+ 8780340, 12137120, 16777216};
364
+ const uint8_t kStatsTable15[88] = {
365
+ 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11, 11, 12, 12, 13,
366
+ 13, 14, 14, 15, 15, 16, 16, 17, 18, 18, 18, 19, 20, 20, 21, 21, 22, 22,
367
+ 23, 23, 24, 24, 25, 25, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32,
368
+ 32, 33, 33, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 42,
369
+ 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 50, 50};
336
370
  } // namespace
337
371
  int Histogram_100000_20::BucketFor(int value) {
338
372
  if (value < 3) {
@@ -483,6 +517,25 @@ int Histogram_1800000_40::BucketFor(int value) {
483
517
  }
484
518
  }
485
519
  }
520
+ int Histogram_16777216_50::BucketFor(int value) {
521
+ if (value < 4) {
522
+ if (value < 0) {
523
+ return 0;
524
+ } else {
525
+ return value;
526
+ }
527
+ } else {
528
+ if (value < 14680065) {
529
+ DblUint val;
530
+ val.dbl = value;
531
+ const int bucket =
532
+ kStatsTable15[((val.uint - 4616189618054758400ull) >> 50)];
533
+ return bucket - (value < kStatsTable14[bucket]);
534
+ } else {
535
+ return 49;
536
+ }
537
+ }
538
+ }
486
539
  GlobalStats::GlobalStats()
487
540
  : client_calls_created{0},
488
541
  server_calls_created{0},
@@ -556,13 +609,13 @@ HistogramView GlobalStats::histogram(Histogram which) const {
556
609
  return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable6, 20,
557
610
  http2_header_table_size.buckets()};
558
611
  case Histogram::kHttp2InitialWindowSize:
559
- return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable6, 20,
612
+ return HistogramView{&Histogram_16777216_50::BucketFor, kStatsTable14, 50,
560
613
  http2_initial_window_size.buckets()};
561
614
  case Histogram::kHttp2MaxConcurrentStreams:
562
615
  return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable6, 20,
563
616
  http2_max_concurrent_streams.buckets()};
564
617
  case Histogram::kHttp2MaxFrameSize:
565
- return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable6, 20,
618
+ return HistogramView{&Histogram_16777216_50::BucketFor, kStatsTable14, 50,
566
619
  http2_max_frame_size.buckets()};
567
620
  case Histogram::kHttp2MaxHeaderListSize:
568
621
  return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable6, 20,
@@ -583,6 +636,15 @@ HistogramView GlobalStats::histogram(Histogram which) const {
583
636
  case Histogram::kHttp2StreamWindowUpdatePeriod:
584
637
  return HistogramView{&Histogram_100000_20::BucketFor, kStatsTable0, 20,
585
638
  http2_stream_window_update_period.buckets()};
639
+ case Histogram::kHttp2WriteTargetSize:
640
+ return HistogramView{&Histogram_16777216_50::BucketFor, kStatsTable14, 50,
641
+ http2_write_target_size.buckets()};
642
+ case Histogram::kHttp2WriteDataFrameSize:
643
+ return HistogramView{&Histogram_16777216_50::BucketFor, kStatsTable14, 50,
644
+ http2_write_data_frame_size.buckets()};
645
+ case Histogram::kHttp2ReadDataFrameSize:
646
+ return HistogramView{&Histogram_16777216_50::BucketFor, kStatsTable14, 50,
647
+ http2_read_data_frame_size.buckets()};
586
648
  case Histogram::kWrrSubchannelListSize:
587
649
  return HistogramView{&Histogram_10000_20::BucketFor, kStatsTable10, 20,
588
650
  wrr_subchannel_list_size.buckets()};
@@ -744,6 +806,11 @@ std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
744
806
  &result->http2_transport_window_update_period);
745
807
  data.http2_stream_window_update_period.Collect(
746
808
  &result->http2_stream_window_update_period);
809
+ data.http2_write_target_size.Collect(&result->http2_write_target_size);
810
+ data.http2_write_data_frame_size.Collect(
811
+ &result->http2_write_data_frame_size);
812
+ data.http2_read_data_frame_size.Collect(
813
+ &result->http2_read_data_frame_size);
747
814
  data.wrr_subchannel_list_size.Collect(&result->wrr_subchannel_list_size);
748
815
  data.wrr_subchannel_ready_size.Collect(&result->wrr_subchannel_ready_size);
749
816
  data.work_serializer_run_time_ms.Collect(
@@ -874,6 +941,12 @@ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
874
941
  result->http2_stream_window_update_period =
875
942
  http2_stream_window_update_period -
876
943
  other.http2_stream_window_update_period;
944
+ result->http2_write_target_size =
945
+ http2_write_target_size - other.http2_write_target_size;
946
+ result->http2_write_data_frame_size =
947
+ http2_write_data_frame_size - other.http2_write_data_frame_size;
948
+ result->http2_read_data_frame_size =
949
+ http2_read_data_frame_size - other.http2_read_data_frame_size;
877
950
  result->wrr_subchannel_list_size =
878
951
  wrr_subchannel_list_size - other.wrr_subchannel_list_size;
879
952
  result->wrr_subchannel_ready_size =
@@ -196,6 +196,30 @@ class HistogramCollector_1800000_40 {
196
196
  private:
197
197
  std::atomic<uint64_t> buckets_[40]{};
198
198
  };
199
+ class HistogramCollector_16777216_50;
200
+ class Histogram_16777216_50 {
201
+ public:
202
+ static int BucketFor(int value);
203
+ const uint64_t* buckets() const { return buckets_; }
204
+ size_t bucket_count() const { return 50; }
205
+ friend Histogram_16777216_50 operator-(const Histogram_16777216_50& left,
206
+ const Histogram_16777216_50& right);
207
+
208
+ private:
209
+ friend class HistogramCollector_16777216_50;
210
+ uint64_t buckets_[50]{};
211
+ };
212
+ class HistogramCollector_16777216_50 {
213
+ public:
214
+ void Increment(int value) {
215
+ buckets_[Histogram_16777216_50::BucketFor(value)].fetch_add(
216
+ 1, std::memory_order_relaxed);
217
+ }
218
+ void Collect(Histogram_16777216_50* result) const;
219
+
220
+ private:
221
+ std::atomic<uint64_t> buckets_[50]{};
222
+ };
199
223
  struct GlobalStats {
200
224
  enum class Counter {
201
225
  kClientCallsCreated,
@@ -257,6 +281,9 @@ struct GlobalStats {
257
281
  kHttp2TransportRemoteWindowUpdate,
258
282
  kHttp2TransportWindowUpdatePeriod,
259
283
  kHttp2StreamWindowUpdatePeriod,
284
+ kHttp2WriteTargetSize,
285
+ kHttp2WriteDataFrameSize,
286
+ kHttp2ReadDataFrameSize,
260
287
  kWrrSubchannelListSize,
261
288
  kWrrSubchannelReadySize,
262
289
  kWorkSerializerRunTimeMs,
@@ -338,15 +365,18 @@ struct GlobalStats {
338
365
  Histogram_65536_26 http2_metadata_size;
339
366
  Histogram_1800000_40 http2_hpack_entry_lifetime;
340
367
  Histogram_16777216_20 http2_header_table_size;
341
- Histogram_16777216_20 http2_initial_window_size;
368
+ Histogram_16777216_50 http2_initial_window_size;
342
369
  Histogram_16777216_20 http2_max_concurrent_streams;
343
- Histogram_16777216_20 http2_max_frame_size;
370
+ Histogram_16777216_50 http2_max_frame_size;
344
371
  Histogram_16777216_20 http2_max_header_list_size;
345
372
  Histogram_16777216_20 http2_preferred_receive_crypto_message_size;
346
373
  Histogram_16777216_20 http2_stream_remote_window_update;
347
374
  Histogram_16777216_20 http2_transport_remote_window_update;
348
375
  Histogram_100000_20 http2_transport_window_update_period;
349
376
  Histogram_100000_20 http2_stream_window_update_period;
377
+ Histogram_16777216_50 http2_write_target_size;
378
+ Histogram_16777216_50 http2_write_data_frame_size;
379
+ Histogram_16777216_50 http2_read_data_frame_size;
350
380
  Histogram_10000_20 wrr_subchannel_list_size;
351
381
  Histogram_10000_20 wrr_subchannel_ready_size;
352
382
  Histogram_100000_20 work_serializer_run_time_ms;
@@ -557,6 +587,15 @@ class GlobalStatsCollector {
557
587
  void IncrementHttp2StreamWindowUpdatePeriod(int value) {
558
588
  data_.this_cpu().http2_stream_window_update_period.Increment(value);
559
589
  }
590
+ void IncrementHttp2WriteTargetSize(int value) {
591
+ data_.this_cpu().http2_write_target_size.Increment(value);
592
+ }
593
+ void IncrementHttp2WriteDataFrameSize(int value) {
594
+ data_.this_cpu().http2_write_data_frame_size.Increment(value);
595
+ }
596
+ void IncrementHttp2ReadDataFrameSize(int value) {
597
+ data_.this_cpu().http2_read_data_frame_size.Increment(value);
598
+ }
560
599
  void IncrementWrrSubchannelListSize(int value) {
561
600
  data_.this_cpu().wrr_subchannel_list_size.Increment(value);
562
601
  }
@@ -668,15 +707,18 @@ class GlobalStatsCollector {
668
707
  HistogramCollector_65536_26 http2_metadata_size;
669
708
  HistogramCollector_1800000_40 http2_hpack_entry_lifetime;
670
709
  HistogramCollector_16777216_20 http2_header_table_size;
671
- HistogramCollector_16777216_20 http2_initial_window_size;
710
+ HistogramCollector_16777216_50 http2_initial_window_size;
672
711
  HistogramCollector_16777216_20 http2_max_concurrent_streams;
673
- HistogramCollector_16777216_20 http2_max_frame_size;
712
+ HistogramCollector_16777216_50 http2_max_frame_size;
674
713
  HistogramCollector_16777216_20 http2_max_header_list_size;
675
714
  HistogramCollector_16777216_20 http2_preferred_receive_crypto_message_size;
676
715
  HistogramCollector_16777216_20 http2_stream_remote_window_update;
677
716
  HistogramCollector_16777216_20 http2_transport_remote_window_update;
678
717
  HistogramCollector_100000_20 http2_transport_window_update_period;
679
718
  HistogramCollector_100000_20 http2_stream_window_update_period;
719
+ HistogramCollector_16777216_50 http2_write_target_size;
720
+ HistogramCollector_16777216_50 http2_write_data_frame_size;
721
+ HistogramCollector_16777216_50 http2_read_data_frame_size;
680
722
  HistogramCollector_10000_20 wrr_subchannel_list_size;
681
723
  HistogramCollector_10000_20 wrr_subchannel_ready_size;
682
724
  HistogramCollector_100000_20 work_serializer_run_time_ms;
@@ -30,8 +30,87 @@
30
30
 
31
31
  namespace grpc_core {
32
32
 
33
- // Interface for TCP tracer implementations. Created by CallTracerInterface.
34
- class TcpTracerInterface {
33
+ struct TcpConnectionMetrics {
34
+ // Congestion control name.
35
+ std::string congestion_ctrl;
36
+ // Delivery rate in Bps.
37
+ std::optional<uint64_t> delivery_rate;
38
+ // Total bytes retransmitted so far.
39
+ std::optional<uint64_t> data_retx;
40
+ // Total bytes sent so far.
41
+ std::optional<uint64_t> data_sent;
42
+ // Total packets lost so far.
43
+ // Includes lost or spuriously retransmitted packets.
44
+ std::optional<uint32_t> packet_retx;
45
+ // Total packets spuriously retransmitted so far.
46
+ std::optional<uint32_t> packet_spurious_retx;
47
+ // Total packets sent so far.
48
+ std::optional<uint32_t> packet_sent;
49
+ // Total packets delivered so far.
50
+ std::optional<uint32_t> packet_delivered;
51
+ // Total packets delivered so far with ECE marked.
52
+ // This metric is smaller than or equal to packet_delivered.
53
+ std::optional<uint32_t> packet_delivered_ce;
54
+ // Total bytes in write queue but not sent.
55
+ std::optional<uint64_t> data_notsent;
56
+ // Minimum RTT observed in usec.
57
+ std::optional<uint32_t> min_rtt;
58
+ // Smoothed RTT in usec
59
+ std::optional<uint32_t> srtt;
60
+ // TTL or hop limit of a packet received
61
+ // Only available with ACKED timestamps.
62
+ std::optional<uint32_t> ttl;
63
+ // Represents the number of recurring retransmissions of
64
+ // the first sequence that is not acknowledged yet.
65
+ std::optional<uint32_t> recurring_retrans;
66
+ // Network RTT using hardware timestamps (in usec).
67
+ // A value of -1 indicates that net_rtt could not be measured.
68
+ std::optional<int32_t> net_rtt_usec;
69
+ // Timeout-triggered rehash attempts.
70
+ std::optional<uint32_t> timeout_rehash;
71
+ // Rehash due to ECN congestion.
72
+ std::optional<uint32_t> ecn_rehash;
73
+ // Earliest departure time (CLOCK_MONOTONIC).
74
+ // Only available with SCHEDULED and SENT timestamps.
75
+ std::optional<uint64_t> edt;
76
+ // If the delivery rate is limited by the application, this is set to
77
+ // true.
78
+ std::optional<bool> is_delivery_rate_app_limited;
79
+ // Pacing rate of the connection in Bps.
80
+ std::optional<uint64_t> pacing_rate;
81
+ // Send congestion window in packets.
82
+ std::optional<uint32_t> congestion_window;
83
+ // Maximum degree of reordering (i.e., maximum number of packets reordered)
84
+ // on the connection.
85
+ std::optional<uint32_t> reordering;
86
+ // Cumulative duration (in usec) that the transport protocol
87
+ // was busy sending time.
88
+ std::optional<uint64_t> busy_usec;
89
+ // Cumulative duration (in usec) that the transport protocol
90
+ // was limited by the receive window size.
91
+ std::optional<uint64_t> rwnd_limited_usec;
92
+ // Cumulative duration (in usec) that the transport protocol
93
+ // was limited by the send buffer size.
94
+ std::optional<uint64_t> sndbuf_limited_usec;
95
+ // Slow start size threshold in packets.
96
+ // Set to TCP_INFINITE_SSTHRESH when still in slow start.
97
+ std::optional<uint32_t> snd_ssthresh;
98
+ // The extra time it takes for the receiver to generate the
99
+ // acknowledgement after receiving the last packet. This metric is not
100
+ // cumulative. Only available with ACKED timestamps.
101
+ std::optional<uint32_t> time_to_ack_usec;
102
+ // Last socket error code. Only populated for CLOSED timestamps.
103
+ std::optional<uint32_t> socket_errno;
104
+ // Peer's receive window after scaling (tcpi_snd_wnd).
105
+ // Only available with SENDMSG timestamps.
106
+ std::optional<uint32_t> peer_rwnd;
107
+ // Receive queue drops.
108
+ std::optional<uint32_t> rcvq_drops;
109
+ // The NIC Rx delay reported by the remote host.
110
+ std::optional<uint32_t> nic_rx_delay_usec;
111
+ };
112
+
113
+ class TcpCallTracer {
35
114
  public:
36
115
  enum class Type {
37
116
  kUnknown = 0,
@@ -49,93 +128,20 @@ class TcpTracerInterface {
49
128
  kClosed,
50
129
  };
51
130
 
52
- struct ConnectionMetrics {
53
- // Congestion control name.
54
- std::string congestion_ctrl;
55
- // Delivery rate in Bps.
56
- std::optional<uint64_t> delivery_rate;
57
- // Total bytes retransmitted so far.
58
- std::optional<uint64_t> data_retx;
59
- // Total bytes sent so far.
60
- std::optional<uint64_t> data_sent;
61
- // Total packets lost so far.
62
- // Includes lost or spuriously retransmitted packets.
63
- std::optional<uint32_t> packet_retx;
64
- // Total packets spuriously retransmitted so far.
65
- std::optional<uint32_t> packet_spurious_retx;
66
- // Total packets sent so far.
67
- std::optional<uint32_t> packet_sent;
68
- // Total packets delivered so far.
69
- std::optional<uint32_t> packet_delivered;
70
- // Total packets delivered so far with ECE marked.
71
- // This metric is smaller than or equal to packet_delivered.
72
- std::optional<uint32_t> packet_delivered_ce;
73
- // Total bytes in write queue but not sent.
74
- std::optional<uint64_t> data_notsent;
75
- // Minimum RTT observed in usec.
76
- std::optional<uint32_t> min_rtt;
77
- // Smoothed RTT in usec
78
- std::optional<uint32_t> srtt;
79
- // TTL or hop limit of a packet received
80
- // Only available with ACKED timestamps.
81
- std::optional<uint32_t> ttl;
82
- // Represents the number of recurring retransmissions of
83
- // the first sequence that is not acknowledged yet.
84
- std::optional<uint32_t> recurring_retrans;
85
- // Network RTT using hardware timestamps (in usec).
86
- // A value of -1 indicates that net_rtt could not be measured.
87
- std::optional<int32_t> net_rtt_usec;
88
- // Timeout-triggered rehash attempts.
89
- std::optional<uint32_t> timeout_rehash;
90
- // Rehash due to ECN congestion.
91
- std::optional<uint32_t> ecn_rehash;
92
- // Earliest departure time (CLOCK_MONOTONIC).
93
- // Only available with SCHEDULED and SENT timestamps.
94
- std::optional<uint64_t> edt;
95
- // If the delivery rate is limited by the application, this is set to
96
- // true.
97
- std::optional<bool> is_delivery_rate_app_limited;
98
- // Pacing rate of the connection in Bps.
99
- std::optional<uint64_t> pacing_rate;
100
- // Send congestion window in packets.
101
- std::optional<uint32_t> congestion_window;
102
- // Maximum degree of reordering (i.e., maximum number of packets reodered)
103
- // on the connection.
104
- std::optional<uint32_t> reordering;
105
- // Cumulative duration (in usec) that the transport protocol
106
- // was busy sending time.
107
- std::optional<uint64_t> busy_usec;
108
- // Cumulative duration (in usec) that the transport protocol
109
- // was limited by the receive window size.
110
- std::optional<uint64_t> rwnd_limited_usec;
111
- // Cumulative duration (in usec) that the transport protocol
112
- // was limited by the send buffer size.
113
- std::optional<uint64_t> sndbuf_limited_usec;
114
- // Slow start size threshold in packets.
115
- // Set to TCP_INFINITE_SSTHRESH when still in slow start.
116
- std::optional<uint32_t> snd_ssthresh;
117
- // The extra time it takes for the receiver to generate the
118
- // acknowledgement after receiving the last packet. This metric is not
119
- // cumulative. Only available with ACKED timestamps.
120
- std::optional<uint32_t> time_to_ack_usec;
121
- // Last socket error code. Only populated for CLOSED timestamps.
122
- std::optional<uint32_t> socket_errno;
123
- // Peer's receive window after scaling (tcpi_snd_wnd).
124
- // Only available with SENDMSG timestamps.
125
- std::optional<uint32_t> peer_rwnd;
126
- // Receive queue drops.
127
- std::optional<uint32_t> rcvq_drops;
128
- // The NIC Rx delay reported by the remote host.
129
- std::optional<uint32_t> nic_rx_delay_usec;
130
- };
131
+ virtual ~TcpCallTracer() = default;
131
132
 
132
- virtual ~TcpTracerInterface() = default;
133
133
  // Records a per-message event with an optional snapshot of connection
134
134
  // metrics.
135
135
  virtual void RecordEvent(Type type, absl::Time time, size_t byte_offset,
136
- std::optional<ConnectionMetrics> metrics) = 0;
136
+ std::optional<TcpConnectionMetrics> metrics) = 0;
137
+ };
138
+
139
+ class TcpConnectionTracer {
140
+ public:
141
+ virtual ~TcpConnectionTracer() = default;
142
+
137
143
  // Records a snapshot of connection metrics.
138
- virtual void RecordConnectionMetrics(ConnectionMetrics metrics) = 0;
144
+ virtual void RecordConnectionMetrics(TcpConnectionMetrics metrics) = 0;
139
145
  };
140
146
 
141
147
  } // namespace grpc_core
@@ -1,5 +1,4 @@
1
1
  //
2
- //
3
2
  // Copyright 2015 gRPC authors.
4
3
  //
5
4
  // Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,9 +13,8 @@
14
13
  // See the License for the specific language governing permissions and
15
14
  // limitations under the License.
16
15
  //
17
- //
18
16
 
19
- #include "src/core/lib/security/context/security_context.h"
17
+ #include "src/core/transport/auth_context.h"
20
18
 
21
19
  #include <grpc/credentials.h>
22
20
  #include <grpc/grpc_security.h>
@@ -33,61 +31,9 @@
33
31
  #include "src/core/lib/debug/trace.h"
34
32
  #include "src/core/lib/iomgr/exec_ctx.h"
35
33
  #include "src/core/lib/resource_quota/arena.h"
36
- #include "src/core/lib/security/credentials/credentials.h"
37
34
  #include "src/core/lib/surface/call.h"
38
35
  #include "src/core/util/ref_counted_ptr.h"
39
36
 
40
- // --- grpc_call ---
41
-
42
- grpc_call_error grpc_call_set_credentials(grpc_call* call,
43
- grpc_call_credentials* creds) {
44
- grpc_core::ExecCtx exec_ctx;
45
- grpc_client_security_context* ctx = nullptr;
46
- GRPC_TRACE_LOG(api, INFO) << "grpc_call_set_credentials(call=" << call
47
- << ", creds=" << creds << ")";
48
- if (!grpc_call_is_client(call)) {
49
- LOG(ERROR) << "Method is client-side only.";
50
- return GRPC_CALL_ERROR_NOT_ON_SERVER;
51
- }
52
- auto* arena = grpc_call_get_arena(call);
53
- ctx = grpc_core::DownCast<grpc_client_security_context*>(
54
- arena->GetContext<grpc_core::SecurityContext>());
55
- if (ctx == nullptr) {
56
- ctx = grpc_client_security_context_create(arena, creds);
57
- arena->SetContext<grpc_core::SecurityContext>(ctx);
58
- } else {
59
- ctx->creds = creds != nullptr ? creds->Ref() : nullptr;
60
- }
61
-
62
- return GRPC_CALL_OK;
63
- }
64
-
65
- grpc_auth_context* grpc_call_auth_context(grpc_call* call) {
66
- auto* sec_ctx =
67
- grpc_call_get_arena(call)->GetContext<grpc_core::SecurityContext>();
68
- GRPC_TRACE_LOG(api, INFO) << "grpc_call_auth_context(call=" << call << ")";
69
- if (sec_ctx == nullptr) return nullptr;
70
- if (grpc_call_is_client(call)) {
71
- auto* sc = grpc_core::DownCast<grpc_client_security_context*>(sec_ctx);
72
- if (sc->auth_context == nullptr) {
73
- return nullptr;
74
- } else {
75
- return sc->auth_context
76
- ->Ref(DEBUG_LOCATION, "grpc_call_auth_context client")
77
- .release();
78
- }
79
- } else {
80
- auto* sc = grpc_core::DownCast<grpc_server_security_context*>(sec_ctx);
81
- if (sc->auth_context == nullptr) {
82
- return nullptr;
83
- } else {
84
- return sc->auth_context
85
- ->Ref(DEBUG_LOCATION, "grpc_call_auth_context server")
86
- .release();
87
- }
88
- }
89
- }
90
-
91
37
  void grpc_auth_context_release(grpc_auth_context* context) {
92
38
  GRPC_TRACE_LOG(api, INFO)
93
39
  << "grpc_auth_context_release(context=" << context << ")";
@@ -95,47 +41,6 @@ void grpc_auth_context_release(grpc_auth_context* context) {
95
41
  context->Unref(DEBUG_LOCATION, "grpc_auth_context_unref");
96
42
  }
97
43
 
98
- // --- grpc_client_security_context ---
99
- grpc_client_security_context::~grpc_client_security_context() {
100
- auth_context.reset(DEBUG_LOCATION, "client_security_context");
101
- if (extension.instance != nullptr && extension.destroy != nullptr) {
102
- extension.destroy(extension.instance);
103
- }
104
- }
105
-
106
- grpc_client_security_context* grpc_client_security_context_create(
107
- grpc_core::Arena* arena, grpc_call_credentials* creds) {
108
- return arena->New<grpc_client_security_context>(
109
- creds != nullptr ? creds->Ref() : nullptr);
110
- }
111
-
112
- void grpc_client_security_context_destroy(void* ctx) {
113
- grpc_client_security_context* c =
114
- static_cast<grpc_client_security_context*>(ctx);
115
- c->~grpc_client_security_context();
116
- }
117
-
118
- // --- grpc_server_security_context ---
119
- grpc_server_security_context::~grpc_server_security_context() {
120
- auth_context.reset(DEBUG_LOCATION, "server_security_context");
121
- if (extension.instance != nullptr && extension.destroy != nullptr) {
122
- extension.destroy(extension.instance);
123
- }
124
- }
125
-
126
- grpc_server_security_context* grpc_server_security_context_create(
127
- grpc_core::Arena* arena) {
128
- return arena->New<grpc_server_security_context>();
129
- }
130
-
131
- void grpc_server_security_context_destroy(void* ctx) {
132
- grpc_server_security_context* c =
133
- static_cast<grpc_server_security_context*>(ctx);
134
- c->~grpc_server_security_context();
135
- }
136
-
137
- // --- grpc_auth_context ---
138
-
139
44
  static grpc_auth_property_iterator empty_iterator = {nullptr, 0, nullptr};
140
45
 
141
46
  const char* grpc_auth_context_peer_identity_property_name(
@@ -1,5 +1,4 @@
1
1
  //
2
- //
3
2
  // Copyright 2015 gRPC authors.
4
3
  //
5
4
  // Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,10 +13,9 @@
14
13
  // See the License for the specific language governing permissions and
15
14
  // limitations under the License.
16
15
  //
17
- //
18
16
 
19
- #ifndef GRPC_SRC_CORE_LIB_SECURITY_CONTEXT_SECURITY_CONTEXT_H
20
- #define GRPC_SRC_CORE_LIB_SECURITY_CONTEXT_SECURITY_CONTEXT_H
17
+ #ifndef GRPC_SRC_CORE_TRANSPORT_AUTH_CONTEXT_H
18
+ #define GRPC_SRC_CORE_TRANSPORT_AUTH_CONTEXT_H
21
19
 
22
20
  #include <grpc/credentials.h>
23
21
  #include <grpc/grpc.h>
@@ -30,9 +28,9 @@
30
28
  #include <utility>
31
29
 
32
30
  #include "absl/strings/string_view.h"
31
+ #include "src/core/credentials/transport/transport_credentials.h" // IWYU pragma: keep
33
32
  #include "src/core/lib/debug/trace.h"
34
33
  #include "src/core/lib/resource_quota/arena.h"
35
- #include "src/core/lib/security/credentials/credentials.h" // IWYU pragma: keep
36
34
  #include "src/core/lib/surface/connection_context.h"
37
35
  #include "src/core/util/debug_location.h"
38
36
  #include "src/core/util/orphanable.h"
@@ -59,6 +57,8 @@ void grpc_auth_property_reset(grpc_auth_property* property);
59
57
  // This type is forward declared as a C struct and we cannot define it as a
60
58
  // class. Otherwise, compiler will complain about type mismatch due to
61
59
  // -Wmismatched-tags.
60
+ // TODO(roth): Consider renaming to something like ConnectionSecurityContext
61
+ // to reflect the fact that it stores connection-level security properties.
62
62
  struct grpc_auth_context
63
63
  : public grpc_core::RefCounted<grpc_auth_context,
64
64
  grpc_core::NonPolymorphicRefCount> {
@@ -130,60 +130,6 @@ struct grpc_auth_context
130
130
  grpc_core::OrphanablePtr<grpc_core::ConnectionContext> connection_context_;
131
131
  };
132
132
 
133
- // --- grpc_security_context_extension ---
134
-
135
- // Extension to the security context that may be set in a filter and accessed
136
- // later by a higher level method on a grpc_call object.
137
-
138
- struct grpc_security_context_extension {
139
- void* instance = nullptr;
140
- void (*destroy)(void*) = nullptr;
141
- };
142
-
143
- namespace grpc_core {
144
-
145
- class SecurityContext {
146
- public:
147
- virtual ~SecurityContext() = default;
148
- };
149
-
150
- } // namespace grpc_core
151
-
152
- // --- grpc_client_security_context ---
153
-
154
- // Internal client-side security context.
155
-
156
- struct grpc_client_security_context final : public grpc_core::SecurityContext {
157
- explicit grpc_client_security_context(
158
- grpc_core::RefCountedPtr<grpc_call_credentials> creds)
159
- : creds(std::move(creds)) {}
160
- ~grpc_client_security_context() override;
161
-
162
- grpc_core::RefCountedPtr<grpc_call_credentials> creds;
163
- grpc_core::RefCountedPtr<grpc_auth_context> auth_context;
164
- grpc_security_context_extension extension;
165
- };
166
-
167
- grpc_client_security_context* grpc_client_security_context_create(
168
- grpc_core::Arena* arena, grpc_call_credentials* creds);
169
- void grpc_client_security_context_destroy(void* ctx);
170
-
171
- // --- grpc_server_security_context ---
172
-
173
- // Internal server-side security context.
174
-
175
- struct grpc_server_security_context final : public grpc_core::SecurityContext {
176
- grpc_server_security_context() = default;
177
- ~grpc_server_security_context() override;
178
-
179
- grpc_core::RefCountedPtr<grpc_auth_context> auth_context;
180
- grpc_security_context_extension extension;
181
- };
182
-
183
- grpc_server_security_context* grpc_server_security_context_create(
184
- grpc_core::Arena* arena);
185
- void grpc_server_security_context_destroy(void* ctx);
186
-
187
133
  // --- Channel args for auth context ---
188
134
 
189
135
  grpc_arg grpc_auth_context_to_arg(grpc_auth_context* c);
@@ -191,20 +137,4 @@ grpc_auth_context* grpc_auth_context_from_arg(const grpc_arg* arg);
191
137
  grpc_auth_context* grpc_find_auth_context_in_args(
192
138
  const grpc_channel_args* args);
193
139
 
194
- namespace grpc_core {
195
- template <>
196
- struct ArenaContextType<SecurityContext> {
197
- static void Destroy(SecurityContext* p) { p->~SecurityContext(); }
198
- };
199
-
200
- template <>
201
- struct ContextSubclass<grpc_client_security_context> {
202
- using Base = SecurityContext;
203
- };
204
- template <>
205
- struct ContextSubclass<grpc_server_security_context> {
206
- using Base = SecurityContext;
207
- };
208
- } // namespace grpc_core
209
-
210
- #endif // GRPC_SRC_CORE_LIB_SECURITY_CONTEXT_SECURITY_CONTEXT_H
140
+ #endif // GRPC_SRC_CORE_TRANSPORT_AUTH_CONTEXT_H