grpc 1.64.3 → 1.71.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 (3205) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +372 -376
  3. data/include/grpc/compression.h +1 -2
  4. data/include/grpc/credentials.h +2 -3
  5. data/include/grpc/event_engine/README.md +1 -1
  6. data/include/grpc/event_engine/endpoint_config.h +7 -7
  7. data/include/grpc/event_engine/event_engine.h +83 -20
  8. data/include/grpc/event_engine/extensible.h +5 -2
  9. data/include/grpc/event_engine/internal/memory_allocator_impl.h +4 -4
  10. data/include/grpc/event_engine/internal/slice_cast.h +1 -1
  11. data/include/grpc/event_engine/memory_allocator.h +3 -4
  12. data/include/grpc/event_engine/memory_request.h +19 -2
  13. data/include/grpc/event_engine/slice.h +3 -5
  14. data/include/grpc/event_engine/slice_buffer.h +6 -8
  15. data/include/grpc/grpc.h +1 -2
  16. data/include/grpc/grpc_audit_logging.h +3 -3
  17. data/include/grpc/grpc_crl_provider.h +5 -5
  18. data/include/grpc/grpc_posix.h +1 -2
  19. data/include/grpc/grpc_security.h +1 -2
  20. data/include/grpc/impl/call.h +2 -2
  21. data/include/grpc/impl/channel_arg_names.h +10 -4
  22. data/include/grpc/impl/grpc_types.h +1 -2
  23. data/include/grpc/impl/slice_type.h +1 -2
  24. data/include/grpc/module.modulemap +1 -0
  25. data/include/grpc/passive_listener.h +62 -0
  26. data/include/grpc/status.h +1 -1
  27. data/include/grpc/support/alloc.h +1 -2
  28. data/include/grpc/support/atm.h +0 -13
  29. data/include/grpc/support/json.h +17 -18
  30. data/include/grpc/support/log.h +37 -64
  31. data/include/grpc/support/metrics.h +21 -6
  32. data/include/grpc/support/port_platform.h +31 -1
  33. data/include/grpc/support/sync_generic.h +2 -4
  34. data/include/grpc/support/sync_posix.h +1 -2
  35. data/include/grpc/support/time.h +1 -2
  36. data/src/core/call/request_buffer.cc +224 -0
  37. data/src/core/call/request_buffer.h +192 -0
  38. data/src/core/channelz/channel_trace.cc +6 -7
  39. data/src/core/channelz/channel_trace.h +6 -8
  40. data/src/core/channelz/channelz.cc +10 -12
  41. data/src/core/channelz/channelz.h +18 -39
  42. data/src/core/channelz/channelz_registry.cc +10 -18
  43. data/src/core/channelz/channelz_registry.h +4 -5
  44. data/src/core/client_channel/backup_poller.cc +25 -16
  45. data/src/core/client_channel/client_channel.cc +1415 -0
  46. data/src/core/client_channel/client_channel.h +245 -0
  47. data/src/core/client_channel/client_channel_args.h +21 -0
  48. data/src/core/client_channel/client_channel_factory.cc +2 -2
  49. data/src/core/client_channel/client_channel_factory.h +1 -2
  50. data/src/core/client_channel/client_channel_filter.cc +391 -981
  51. data/src/core/client_channel/client_channel_filter.h +32 -83
  52. data/src/core/client_channel/client_channel_internal.h +23 -9
  53. data/src/core/client_channel/client_channel_plugin.cc +4 -18
  54. data/src/core/client_channel/client_channel_service_config.cc +3 -4
  55. data/src/core/client_channel/client_channel_service_config.h +12 -14
  56. data/src/core/client_channel/config_selector.h +21 -22
  57. data/src/core/client_channel/connector.h +3 -3
  58. data/src/core/client_channel/direct_channel.cc +83 -0
  59. data/src/core/client_channel/direct_channel.h +101 -0
  60. data/src/core/client_channel/dynamic_filters.cc +16 -14
  61. data/src/core/client_channel/dynamic_filters.h +9 -10
  62. data/src/core/client_channel/global_subchannel_pool.cc +2 -2
  63. data/src/core/client_channel/global_subchannel_pool.h +2 -3
  64. data/src/core/client_channel/lb_metadata.cc +119 -0
  65. data/src/core/client_channel/lb_metadata.h +55 -0
  66. data/src/core/client_channel/load_balanced_call_destination.cc +273 -0
  67. data/src/core/client_channel/load_balanced_call_destination.h +48 -0
  68. data/src/core/client_channel/local_subchannel_pool.cc +2 -5
  69. data/src/core/client_channel/local_subchannel_pool.h +1 -1
  70. data/src/core/client_channel/retry_filter.cc +9 -18
  71. data/src/core/client_channel/retry_filter.h +7 -16
  72. data/src/core/client_channel/retry_filter_legacy_call_data.cc +219 -331
  73. data/src/core/client_channel/retry_filter_legacy_call_data.h +18 -21
  74. data/src/core/client_channel/retry_interceptor.cc +408 -0
  75. data/src/core/client_channel/retry_interceptor.h +157 -0
  76. data/src/core/client_channel/retry_service_config.cc +11 -14
  77. data/src/core/client_channel/retry_service_config.h +22 -11
  78. data/src/core/client_channel/retry_throttle.cc +34 -20
  79. data/src/core/client_channel/retry_throttle.h +6 -9
  80. data/src/core/client_channel/subchannel.cc +324 -239
  81. data/src/core/client_channel/subchannel.h +52 -44
  82. data/src/core/client_channel/subchannel_interface_internal.h +1 -1
  83. data/src/core/client_channel/subchannel_pool_interface.cc +1 -5
  84. data/src/core/client_channel/subchannel_pool_interface.h +4 -7
  85. data/src/core/client_channel/subchannel_stream_client.cc +43 -60
  86. data/src/core/client_channel/subchannel_stream_client.h +13 -17
  87. data/src/core/config/config_vars.cc +152 -0
  88. data/src/core/config/config_vars.h +129 -0
  89. data/src/core/config/config_vars_non_generated.cc +49 -0
  90. data/src/core/config/core_configuration.cc +111 -0
  91. data/src/core/config/core_configuration.h +242 -0
  92. data/src/core/config/load_config.cc +78 -0
  93. data/src/core/config/load_config.h +54 -0
  94. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +25 -37
  95. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +9 -7
  96. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  97. data/src/core/ext/filters/census/grpc_context.cc +7 -10
  98. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +1 -2
  99. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -1
  100. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +37 -48
  101. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +12 -8
  102. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +23 -33
  103. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -8
  104. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +3 -4
  105. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +7 -10
  106. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +198 -0
  107. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +97 -0
  108. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +80 -0
  109. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +86 -0
  110. data/src/core/ext/filters/http/client/http_client_filter.cc +14 -13
  111. data/src/core/ext/filters/http/client/http_client_filter.h +6 -4
  112. data/src/core/ext/filters/http/client_authority_filter.cc +14 -18
  113. data/src/core/ext/filters/http/client_authority_filter.h +8 -6
  114. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -2
  115. data/src/core/ext/filters/http/message_compress/compression_filter.cc +64 -64
  116. data/src/core/ext/filters/http/message_compress/compression_filter.h +24 -15
  117. data/src/core/ext/filters/http/server/http_server_filter.cc +18 -20
  118. data/src/core/ext/filters/http/server/http_server_filter.h +6 -4
  119. data/src/core/ext/filters/message_size/message_size_filter.cc +43 -55
  120. data/src/core/ext/filters/message_size/message_size_filter.h +30 -29
  121. data/src/core/ext/filters/rbac/rbac_filter.cc +8 -18
  122. data/src/core/ext/filters/rbac/rbac_filter.h +8 -7
  123. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +19 -13
  124. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -5
  125. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -21
  126. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +8 -7
  127. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +3 -4
  128. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +8 -10
  129. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -4
  130. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -2
  131. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +76 -109
  132. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +8 -13
  133. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +999 -375
  134. data/src/core/ext/transport/chttp2/server/chttp2_server.h +222 -13
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -34
  136. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -3
  137. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -7
  138. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  139. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +53 -0
  140. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +72 -0
  141. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +706 -555
  142. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +22 -23
  143. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +2 -3
  144. data/src/core/ext/transport/chttp2/transport/decode_huff.h +4 -4
  145. data/src/core/ext/transport/chttp2/transport/flow_control.cc +9 -14
  146. data/src/core/ext/transport/chttp2/transport/flow_control.h +5 -10
  147. data/src/core/ext/transport/chttp2/transport/frame.cc +24 -7
  148. data/src/core/ext/transport/chttp2/transport/frame.h +16 -7
  149. data/src/core/ext/transport/chttp2/transport/frame_data.cc +19 -20
  150. data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -5
  151. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +11 -14
  152. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  153. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +14 -19
  154. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  155. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -18
  156. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -5
  157. data/src/core/ext/transport/chttp2/transport/frame_security.cc +80 -0
  158. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  159. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +41 -25
  160. data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -4
  161. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +28 -7
  162. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -3
  163. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  164. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +19 -21
  165. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +19 -15
  166. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -3
  167. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +4 -5
  168. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -4
  169. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +6 -9
  170. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +55 -58
  171. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -13
  172. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +41 -16
  173. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +29 -10
  174. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +14 -6
  175. data/src/core/ext/transport/chttp2/transport/http2_settings.h +13 -7
  176. data/src/core/ext/transport/chttp2/transport/internal.h +86 -83
  177. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  178. data/src/core/ext/transport/chttp2/transport/parsing.cc +135 -121
  179. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +4 -4
  180. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +3 -3
  181. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +4 -7
  182. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +5 -9
  183. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +35 -20
  184. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +9 -10
  185. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +14 -16
  186. data/src/core/ext/transport/chttp2/transport/stream_lists.h +65 -0
  187. data/src/core/ext/transport/chttp2/transport/varint.cc +6 -6
  188. data/src/core/ext/transport/chttp2/transport/varint.h +1 -3
  189. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -3
  190. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +3 -4
  191. data/src/core/ext/transport/chttp2/transport/writing.cc +149 -130
  192. data/src/core/ext/transport/inproc/inproc_transport.cc +151 -71
  193. data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
  194. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +133 -129
  195. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
  196. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +46 -15
  197. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +40 -18
  198. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +10 -4
  199. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +59 -27
  200. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +36 -18
  201. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +9 -4
  202. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +50 -15
  203. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +44 -22
  204. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +10 -4
  205. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +190 -55
  206. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +162 -84
  207. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +24 -4
  208. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +11 -5
  209. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +14 -4
  210. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +7 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +19 -6
  212. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +18 -8
  213. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +7 -4
  214. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +11 -10
  215. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +7 -1
  216. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +6 -4
  217. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +8 -7
  218. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +7 -1
  219. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +6 -4
  220. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +8 -7
  221. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +7 -1
  222. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +6 -4
  223. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +145 -82
  224. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +40 -27
  225. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +7 -4
  226. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +9 -6
  227. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +10 -4
  228. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +6 -4
  229. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +9 -8
  230. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +7 -1
  231. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +5 -4
  232. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +18 -8
  233. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +13 -6
  234. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +6 -4
  235. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +91 -34
  236. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +114 -48
  237. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +21 -4
  238. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +544 -254
  239. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +265 -149
  240. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +29 -4
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +41 -14
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +31 -17
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +8 -4
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +529 -141
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +270 -143
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +31 -4
  247. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +12 -7
  248. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +11 -5
  249. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +6 -4
  250. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +171 -27
  251. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +54 -27
  252. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +6 -4
  253. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +127 -35
  254. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +125 -63
  255. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +20 -4
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +67 -27
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +60 -26
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +13 -4
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +11 -6
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +11 -5
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +6 -4
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +871 -72
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +346 -75
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +41 -4
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +67 -25
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +57 -27
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +12 -4
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +8 -5
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +10 -4
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +6 -4
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +9 -6
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +10 -4
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +6 -4
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +11 -5
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +14 -4
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +7 -4
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +201 -62
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +120 -53
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +19 -4
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +196 -62
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +95 -53
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +14 -4
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +13 -5
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +11 -5
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +6 -4
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +10 -7
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +10 -4
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +6 -4
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +322 -76
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +162 -84
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +21 -4
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +10 -7
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +14 -4
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +7 -4
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +15 -7
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +15 -5
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +7 -4
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
  301. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +244 -31
  302. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +79 -21
  303. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +13 -4
  304. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +23 -11
  305. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +17 -7
  306. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +7 -4
  307. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +11 -6
  308. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +11 -5
  309. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +6 -4
  310. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +42 -11
  311. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +35 -17
  312. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +9 -4
  313. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +106 -34
  314. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +69 -37
  315. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +12 -4
  316. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +281 -37
  317. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +81 -27
  318. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +12 -4
  319. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +8 -5
  320. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +10 -4
  321. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +6 -4
  322. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +142 -47
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +90 -47
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +15 -4
  325. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +92 -129
  326. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +66 -57
  327. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +11 -5
  328. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +178 -13
  329. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +46 -14
  330. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +6 -4
  331. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +14 -7
  332. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -6
  333. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +7 -4
  334. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +14 -9
  335. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +11 -5
  336. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +6 -4
  337. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +51 -22
  338. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +58 -24
  339. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +13 -4
  340. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +70 -22
  341. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +71 -29
  342. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +15 -4
  343. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +311 -38
  344. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +141 -63
  345. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +18 -4
  346. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +61 -13
  347. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +33 -19
  348. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +8 -4
  349. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +961 -237
  350. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +567 -273
  351. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +67 -4
  352. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +20 -10
  353. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +22 -8
  354. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +8 -4
  355. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +100 -35
  356. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +95 -45
  357. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +17 -4
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +118 -16
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +43 -12
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +8 -4
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +9 -6
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +10 -4
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +6 -4
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +12 -7
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +17 -7
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +7 -4
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +10 -7
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +10 -4
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +6 -4
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +20 -8
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +13 -7
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +6 -4
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +8 -5
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +10 -4
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +6 -4
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +17 -10
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +18 -8
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +7 -4
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +5 -6
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +3 -2
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +5 -5
  382. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +19 -10
  383. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +19 -9
  384. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +7 -4
  385. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +14 -11
  386. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -4
  387. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +6 -4
  388. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +216 -102
  389. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +124 -57
  390. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +21 -4
  391. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +5 -4
  392. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +7 -1
  393. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +6 -4
  394. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +24 -11
  395. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +33 -11
  396. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +10 -4
  397. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +42 -22
  398. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -13
  399. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +8 -4
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +444 -0
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +135 -0
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +38 -0
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +56 -13
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +29 -13
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +7 -4
  406. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +29 -12
  407. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +20 -10
  408. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +7 -4
  409. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +13 -8
  410. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +17 -7
  411. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +7 -4
  412. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -134
  413. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +209 -121
  414. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +26 -4
  415. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +8 -5
  416. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +10 -4
  417. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +6 -4
  418. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +83 -10
  419. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +28 -11
  420. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +6 -4
  421. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +31 -14
  422. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +39 -17
  423. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +10 -4
  424. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +6 -5
  425. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +7 -1
  426. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +6 -4
  427. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +22 -11
  428. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +14 -8
  429. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +6 -4
  430. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +8 -5
  431. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +10 -4
  432. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +6 -4
  433. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +105 -0
  434. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +51 -0
  435. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +32 -0
  436. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -4
  437. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +3 -1
  438. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +5 -4
  439. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +170 -31
  440. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +83 -37
  441. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +14 -4
  442. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +25 -12
  443. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +27 -13
  444. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +8 -4
  445. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +214 -63
  446. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +100 -61
  447. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +12 -4
  448. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +51 -13
  449. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +23 -11
  450. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +7 -4
  451. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +58 -20
  452. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +44 -26
  453. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +9 -4
  454. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +5 -4
  455. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +7 -1
  456. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +6 -4
  457. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +373 -58
  458. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +144 -61
  459. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +21 -4
  460. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +18 -8
  461. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +18 -8
  462. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +7 -4
  463. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +67 -25
  464. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +47 -25
  465. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +10 -4
  466. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +10 -7
  467. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +10 -4
  468. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +6 -4
  469. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +16 -6
  470. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +26 -8
  471. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +9 -4
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +142 -0
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +55 -0
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +32 -0
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +42 -6
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +16 -7
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +6 -4
  478. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +10 -9
  479. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +23 -1
  480. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +10 -4
  481. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +16 -8
  482. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +15 -5
  483. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +7 -4
  484. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +13 -5
  485. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +11 -5
  486. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +6 -4
  487. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +9 -6
  488. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +10 -4
  489. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +6 -4
  490. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +8 -5
  491. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +10 -4
  492. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +6 -4
  493. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +16 -9
  494. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +24 -10
  495. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +8 -4
  496. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +5 -4
  497. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +11 -1
  498. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +7 -4
  499. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +51 -10
  500. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +30 -9
  501. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +7 -4
  502. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +14 -6
  503. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +15 -5
  504. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +7 -4
  505. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +30 -12
  506. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +32 -14
  507. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +9 -4
  508. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +24 -10
  509. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +40 -10
  510. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +12 -4
  511. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +30 -17
  512. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +33 -11
  513. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +10 -4
  514. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +12 -7
  515. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +19 -5
  516. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +8 -4
  517. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +5 -4
  518. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +3 -1
  519. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +5 -4
  520. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +6 -5
  521. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +7 -1
  522. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +6 -4
  523. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +8 -7
  524. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +11 -1
  525. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +7 -4
  526. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +11 -10
  527. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +15 -1
  528. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +8 -4
  529. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +14 -9
  530. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +15 -5
  531. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +7 -4
  532. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +5 -4
  533. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +3 -1
  534. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +5 -4
  535. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +8 -7
  536. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +7 -1
  537. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +6 -4
  538. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +12 -7
  539. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +11 -5
  540. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +6 -4
  541. data/src/core/ext/upb-gen/google/api/annotations.upb.h +17 -7
  542. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +5 -2
  543. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +5 -4
  544. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +135 -36
  545. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +121 -56
  546. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +18 -4
  547. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +525 -69
  548. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +202 -68
  549. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +23 -4
  550. data/src/core/ext/upb-gen/google/api/http.upb.h +30 -16
  551. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -8
  552. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +8 -4
  553. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +12 -6
  554. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +10 -4
  555. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +6 -4
  556. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +8 -6
  557. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +7 -1
  558. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +6 -4
  559. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +583 -181
  560. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +376 -215
  561. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +56 -21
  562. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +8 -6
  563. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +7 -1
  564. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +6 -4
  565. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +6 -4
  566. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +7 -1
  567. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +6 -4
  568. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +33 -10
  569. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +32 -14
  570. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +9 -4
  571. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +8 -6
  572. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +7 -1
  573. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +6 -4
  574. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +15 -13
  575. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +39 -1
  576. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +14 -4
  577. data/src/core/ext/upb-gen/google/rpc/status.upb.h +12 -6
  578. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +10 -4
  579. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +6 -4
  580. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +19 -10
  581. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +15 -5
  582. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +7 -4
  583. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +98 -39
  584. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +87 -37
  585. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +17 -4
  586. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +14 -8
  587. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +15 -5
  588. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -4
  589. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +8 -6
  590. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +11 -1
  591. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +7 -4
  592. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +47 -22
  593. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +58 -20
  594. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +14 -4
  595. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +16 -8
  596. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +18 -4
  597. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +8 -4
  598. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +72 -19
  599. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +60 -22
  600. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +14 -4
  601. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +69 -23
  602. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +31 -12
  603. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +8 -4
  604. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +19 -9
  605. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +13 -6
  606. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +6 -4
  607. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +6 -5
  608. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +4 -1
  609. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +5 -4
  610. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +19 -9
  611. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +13 -6
  612. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +6 -4
  613. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +18 -8
  614. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +13 -6
  615. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +6 -4
  616. data/src/core/ext/upb-gen/validate/validate.upb.h +264 -172
  617. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +185 -87
  618. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +29 -5
  619. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +69 -23
  620. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +31 -12
  621. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +8 -4
  622. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +19 -9
  623. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +13 -6
  624. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +6 -4
  625. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +6 -5
  626. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +4 -1
  627. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +5 -4
  628. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +46 -18
  629. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +32 -11
  630. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +9 -4
  631. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +18 -8
  632. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +13 -6
  633. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +6 -4
  634. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +6 -5
  635. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +7 -1
  636. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +6 -4
  637. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +9 -6
  638. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +10 -4
  639. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +6 -4
  640. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +16 -9
  641. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +18 -8
  642. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +7 -4
  643. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +11 -4
  644. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +14 -4
  645. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +7 -4
  646. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +9 -6
  647. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +10 -4
  648. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +6 -4
  649. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +12 -7
  650. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +11 -5
  651. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +6 -4
  652. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +21 -11
  653. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +18 -8
  654. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +7 -4
  655. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +11 -8
  656. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +10 -4
  657. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +6 -4
  658. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +29 -10
  659. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +24 -6
  660. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +9 -4
  661. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +8 -5
  662. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +10 -4
  663. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +6 -4
  664. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +9 -6
  665. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +10 -4
  666. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +6 -4
  667. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +13 -5
  668. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +17 -7
  669. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +7 -4
  670. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +5 -4
  671. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +7 -1
  672. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +6 -4
  673. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +19 -6
  674. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +18 -8
  675. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +7 -4
  676. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +81 -22
  677. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +85 -43
  678. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +15 -4
  679. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +44 -7
  680. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +48 -22
  681. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +11 -4
  682. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +9 -6
  683. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +14 -4
  684. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +7 -4
  685. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +18 -10
  686. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +17 -7
  687. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +7 -4
  688. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +17 -8
  689. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +19 -9
  690. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +7 -4
  691. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +12 -10
  692. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +15 -1
  693. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +8 -4
  694. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +9 -6
  695. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +10 -4
  696. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +6 -4
  697. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +2 -1
  698. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -4
  699. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +2 -1
  700. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -4
  701. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +2 -1
  702. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -4
  703. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +13 -11
  704. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -4
  705. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +2 -1
  706. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -4
  707. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +2 -1
  708. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -4
  709. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +2 -1
  710. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -4
  711. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +2 -1
  712. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -4
  713. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +2 -1
  714. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -4
  715. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +90 -82
  716. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -4
  717. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +2 -1
  718. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -4
  719. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +2 -1
  720. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -4
  721. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +2 -1
  722. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -4
  723. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +63 -61
  724. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -4
  725. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +223 -211
  726. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +10 -4
  727. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -1
  728. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -4
  729. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +419 -393
  730. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +10 -4
  731. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +2 -1
  732. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -4
  733. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +116 -106
  734. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -4
  735. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +2 -1
  736. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -4
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +2 -1
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -4
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +2 -1
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -4
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +201 -147
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +35 -4
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +12 -12
  744. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -4
  745. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +2 -1
  746. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -4
  747. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +2 -1
  748. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -4
  749. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +2 -1
  750. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -4
  751. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +175 -165
  752. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -4
  753. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +199 -188
  754. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -4
  755. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +2 -1
  756. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -4
  757. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +2 -1
  758. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -4
  759. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +272 -255
  760. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -4
  761. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -1
  762. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -4
  763. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +2 -1
  764. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -4
  765. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +46 -0
  766. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +33 -0
  767. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +31 -20
  768. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +20 -4
  769. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -1
  770. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -4
  771. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -1
  772. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -4
  773. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -1
  774. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -4
  775. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +41 -37
  776. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -4
  777. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +124 -94
  778. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +10 -4
  779. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +2 -1
  780. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -4
  781. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +43 -40
  782. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -4
  783. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +60 -66
  784. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -9
  785. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +75 -56
  786. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -4
  787. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -1
  788. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -4
  789. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +2 -1
  790. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -4
  791. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +2 -1
  792. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -4
  793. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +51 -49
  794. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -4
  795. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +119 -97
  796. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +10 -4
  797. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +2 -1
  798. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -4
  799. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +922 -895
  800. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +15 -4
  801. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +2 -1
  802. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -4
  803. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +2 -1
  804. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -4
  805. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +32 -21
  806. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +10 -4
  807. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +20 -18
  808. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -4
  809. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -1
  810. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -4
  811. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +2 -1
  812. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -4
  813. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +2 -1
  814. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -4
  815. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +2 -1
  816. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -4
  817. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +2 -1
  818. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -4
  819. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +17 -19
  820. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -4
  821. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +2 -1
  822. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -4
  823. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +23 -21
  824. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -4
  825. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +147 -143
  826. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -4
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -1
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -4
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -1
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -4
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -1
  832. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -4
  833. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +87 -0
  834. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +48 -0
  835. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +38 -34
  836. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -4
  837. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -1
  838. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -4
  839. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +2 -1
  840. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -4
  841. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +465 -459
  842. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -4
  843. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +2 -1
  844. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -4
  845. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +50 -0
  846. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +33 -0
  847. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -1
  848. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -4
  849. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +96 -88
  850. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +10 -4
  851. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -1
  852. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -4
  853. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +204 -192
  854. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -4
  855. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +21 -18
  856. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -4
  857. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +2 -1
  858. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -4
  859. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +2 -1
  860. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -4
  861. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +150 -136
  862. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +10 -4
  863. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -1
  864. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -4
  865. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +25 -23
  866. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -4
  867. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +2 -1
  868. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -4
  869. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +2 -1
  870. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -4
  871. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +41 -0
  872. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +33 -0
  873. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +28 -20
  874. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -4
  875. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  876. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  877. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +2 -1
  878. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -4
  879. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +2 -1
  880. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -4
  881. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +2 -1
  882. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -4
  883. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +2 -1
  884. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -4
  885. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +2 -1
  886. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -4
  887. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +2 -1
  888. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -4
  889. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +41 -34
  890. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -4
  891. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +2 -1
  892. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -4
  893. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +2 -1
  894. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -4
  895. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +2 -1
  896. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -4
  897. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -1
  898. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -4
  899. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +2 -1
  900. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -4
  901. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +2 -1
  902. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -4
  903. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +2 -1
  904. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -4
  905. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +2 -1
  906. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -4
  907. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +2 -1
  908. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -4
  909. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +2 -1
  910. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -4
  911. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +2 -1
  912. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -4
  913. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +2 -1
  914. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -4
  915. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +2 -1
  916. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -4
  917. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +2 -1
  918. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -4
  919. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +110 -108
  920. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -4
  921. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +103 -79
  922. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +15 -4
  923. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +2 -1
  924. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -4
  925. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +2 -1
  926. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -4
  927. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +2 -1
  928. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -4
  929. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +485 -458
  930. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -4
  931. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +2 -1
  932. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -4
  933. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +2 -1
  934. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -4
  935. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +2 -1
  936. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -4
  937. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +2 -1
  938. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -4
  939. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +2 -1
  940. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -4
  941. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +2 -1
  942. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -4
  943. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +2 -1
  944. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -4
  945. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +2 -1
  946. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -4
  947. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +2 -1
  948. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -4
  949. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +2 -1
  950. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -4
  951. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +2 -1
  952. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -4
  953. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +2 -1
  954. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -4
  955. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +2 -1
  956. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -4
  957. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +2 -1
  958. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -4
  959. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +2 -1
  960. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -4
  961. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +2 -1
  962. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -4
  963. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +2 -1
  964. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -4
  965. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +2 -1
  966. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -4
  967. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +2 -1
  968. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -4
  969. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +2 -1
  970. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -4
  971. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +2 -1
  972. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -4
  973. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +2 -1
  974. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -4
  975. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +2 -1
  976. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -4
  977. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +2 -1
  978. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -4
  979. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +2 -1
  980. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -4
  981. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +2 -1
  982. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -4
  983. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +2 -1
  984. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -4
  985. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +2 -1
  986. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -4
  987. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  988. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  989. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +2 -1
  990. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -4
  991. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +2 -1
  992. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -4
  993. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +2 -1
  994. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -4
  995. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +2 -1
  996. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -4
  997. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +2 -1
  998. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -4
  999. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +2 -1
  1000. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -4
  1001. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +2 -1
  1002. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -4
  1003. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +2 -1
  1004. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -4
  1005. data/src/core/filter/blackboard.cc +33 -0
  1006. data/src/core/filter/blackboard.h +70 -0
  1007. data/src/core/filter/filter_args.h +112 -0
  1008. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +13 -12
  1009. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h +1 -1
  1010. data/src/core/handshaker/handshaker.cc +124 -159
  1011. data/src/core/handshaker/handshaker.h +58 -52
  1012. data/src/core/handshaker/handshaker_registry.cc +1 -2
  1013. data/src/core/handshaker/handshaker_registry.h +2 -2
  1014. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +120 -162
  1015. data/src/core/handshaker/http_connect/http_connect_handshaker.h +1 -1
  1016. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +61 -69
  1017. data/src/core/handshaker/http_connect/http_proxy_mapper.h +7 -8
  1018. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +57 -0
  1019. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +46 -0
  1020. data/src/core/handshaker/proxy_mapper.h +6 -7
  1021. data/src/core/handshaker/proxy_mapper_registry.cc +7 -8
  1022. data/src/core/handshaker/proxy_mapper_registry.h +6 -7
  1023. data/src/core/handshaker/security/secure_endpoint.cc +97 -84
  1024. data/src/core/handshaker/security/secure_endpoint.h +6 -7
  1025. data/src/core/handshaker/security/security_handshaker.cc +168 -224
  1026. data/src/core/handshaker/security/security_handshaker.h +3 -4
  1027. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +54 -66
  1028. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h +1 -1
  1029. data/src/core/lib/address_utils/parse_address.cc +30 -43
  1030. data/src/core/lib/address_utils/parse_address.h +2 -4
  1031. data/src/core/lib/address_utils/sockaddr_utils.cc +9 -12
  1032. data/src/core/lib/address_utils/sockaddr_utils.h +1 -3
  1033. data/src/core/lib/channel/call_finalization.h +2 -2
  1034. data/src/core/lib/channel/channel_args.cc +30 -36
  1035. data/src/core/lib/channel/channel_args.h +43 -29
  1036. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  1037. data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
  1038. data/src/core/lib/channel/channel_stack.cc +13 -76
  1039. data/src/core/lib/channel/channel_stack.h +26 -61
  1040. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  1041. data/src/core/lib/channel/channel_stack_builder.h +3 -9
  1042. data/src/core/lib/channel/channel_stack_builder_impl.cc +5 -150
  1043. data/src/core/lib/channel/channel_stack_builder_impl.h +14 -4
  1044. data/src/core/lib/channel/connected_channel.cc +48 -690
  1045. data/src/core/lib/channel/promise_based_filter.cc +190 -260
  1046. data/src/core/lib/channel/promise_based_filter.h +214 -625
  1047. data/src/core/lib/channel/status_util.cc +2 -4
  1048. data/src/core/lib/channel/status_util.h +3 -3
  1049. data/src/core/lib/compression/compression.cc +9 -10
  1050. data/src/core/lib/compression/compression_internal.cc +14 -17
  1051. data/src/core/lib/compression/compression_internal.h +6 -8
  1052. data/src/core/lib/compression/message_compress.cc +9 -12
  1053. data/src/core/lib/debug/trace.cc +48 -66
  1054. data/src/core/lib/debug/trace.h +2 -97
  1055. data/src/core/lib/debug/trace_flags.cc +245 -0
  1056. data/src/core/lib/debug/trace_flags.h +132 -0
  1057. data/src/core/lib/debug/trace_impl.h +125 -0
  1058. data/src/core/lib/event_engine/ares_resolver.cc +158 -86
  1059. data/src/core/lib/event_engine/ares_resolver.h +19 -30
  1060. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +15 -20
  1061. data/src/core/lib/event_engine/cf_engine/cf_engine.h +3 -5
  1062. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +50 -38
  1063. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +6 -10
  1064. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +3 -5
  1065. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +27 -35
  1066. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +5 -9
  1067. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +7 -10
  1068. data/src/core/lib/event_engine/channel_args_endpoint_config.h +7 -9
  1069. data/src/core/lib/event_engine/common_closures.h +5 -7
  1070. data/src/core/lib/event_engine/default_event_engine.cc +69 -42
  1071. data/src/core/lib/event_engine/default_event_engine.h +27 -36
  1072. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -14
  1073. data/src/core/lib/event_engine/default_event_engine_factory.h +4 -6
  1074. data/src/core/lib/event_engine/event_engine.cc +37 -8
  1075. data/src/core/lib/event_engine/event_engine_context.h +4 -2
  1076. data/src/core/lib/event_engine/extensions/can_track_errors.h +4 -6
  1077. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +3 -6
  1078. data/src/core/lib/event_engine/extensions/supports_fd.h +29 -7
  1079. data/src/core/lib/event_engine/extensions/tcp_trace.h +40 -0
  1080. data/src/core/lib/event_engine/forkable.cc +9 -13
  1081. data/src/core/lib/event_engine/forkable.h +4 -18
  1082. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -8
  1083. data/src/core/lib/event_engine/handle_containers.h +4 -7
  1084. data/src/core/lib/event_engine/memory_allocator_factory.h +5 -8
  1085. data/src/core/lib/event_engine/nameser.h +1 -1
  1086. data/src/core/lib/event_engine/poller.h +4 -6
  1087. data/src/core/lib/event_engine/posix.h +2 -4
  1088. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +25 -73
  1089. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +10 -13
  1090. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +21 -72
  1091. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +6 -9
  1092. data/src/core/lib/event_engine/posix_engine/event_poller.h +5 -8
  1093. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +6 -9
  1094. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +4 -6
  1095. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +6 -10
  1096. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -8
  1097. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +3 -6
  1098. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -11
  1099. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +4 -7
  1100. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +5 -8
  1101. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +4 -7
  1102. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +93 -89
  1103. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +13 -16
  1104. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +84 -62
  1105. data/src/core/lib/event_engine/posix_engine/posix_engine.h +20 -20
  1106. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +5 -7
  1107. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +27 -33
  1108. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +16 -17
  1109. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +24 -32
  1110. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +3 -6
  1111. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +49 -44
  1112. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +12 -14
  1113. data/src/core/lib/event_engine/posix_engine/timer.cc +9 -11
  1114. data/src/core/lib/event_engine/posix_engine/timer.h +9 -13
  1115. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +4 -7
  1116. data/src/core/lib/event_engine/posix_engine/timer_heap.h +4 -6
  1117. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +17 -28
  1118. data/src/core/lib/event_engine/posix_engine/timer_manager.h +9 -13
  1119. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +11 -17
  1120. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +27 -30
  1121. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +7 -10
  1122. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +4 -7
  1123. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +6 -9
  1124. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +4 -7
  1125. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +4 -6
  1126. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +4 -7
  1127. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +4 -6
  1128. data/src/core/lib/event_engine/query_extensions.h +4 -6
  1129. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +5 -9
  1130. data/src/core/lib/event_engine/resolved_address.cc +7 -9
  1131. data/src/core/lib/event_engine/resolved_address_internal.h +2 -4
  1132. data/src/core/lib/event_engine/shim.cc +3 -5
  1133. data/src/core/lib/event_engine/shim.h +2 -4
  1134. data/src/core/lib/event_engine/slice.cc +5 -10
  1135. data/src/core/lib/event_engine/slice_buffer.cc +3 -6
  1136. data/src/core/lib/event_engine/tcp_socket_utils.cc +15 -26
  1137. data/src/core/lib/event_engine/tcp_socket_utils.h +8 -10
  1138. data/src/core/lib/event_engine/thread_local.cc +2 -4
  1139. data/src/core/lib/event_engine/thread_local.h +3 -5
  1140. data/src/core/lib/event_engine/thread_pool/thread_count.cc +7 -11
  1141. data/src/core/lib/event_engine/thread_pool/thread_count.h +10 -25
  1142. data/src/core/lib/event_engine/thread_pool/thread_pool.h +4 -8
  1143. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +4 -7
  1144. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +43 -52
  1145. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +12 -19
  1146. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +52 -27
  1147. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +11 -12
  1148. data/src/core/lib/event_engine/time_util.cc +4 -6
  1149. data/src/core/lib/event_engine/time_util.h +3 -6
  1150. data/src/core/lib/event_engine/utils.cc +21 -9
  1151. data/src/core/lib/event_engine/utils.h +12 -8
  1152. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +128 -105
  1153. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +6 -10
  1154. data/src/core/lib/event_engine/windows/iocp.cc +16 -18
  1155. data/src/core/lib/event_engine/windows/iocp.h +4 -7
  1156. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +6 -10
  1157. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +2 -4
  1158. data/src/core/lib/event_engine/windows/win_socket.cc +44 -37
  1159. data/src/core/lib/event_engine/windows/win_socket.h +10 -14
  1160. data/src/core/lib/event_engine/windows/windows_endpoint.cc +48 -37
  1161. data/src/core/lib/event_engine/windows/windows_endpoint.h +4 -6
  1162. data/src/core/lib/event_engine/windows/windows_engine.cc +245 -138
  1163. data/src/core/lib/event_engine/windows/windows_engine.h +145 -37
  1164. data/src/core/lib/event_engine/windows/windows_listener.cc +24 -41
  1165. data/src/core/lib/event_engine/windows/windows_listener.h +6 -9
  1166. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +5 -7
  1167. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +5 -9
  1168. data/src/core/lib/event_engine/work_queue/work_queue.h +4 -7
  1169. data/src/core/lib/experiments/config.cc +55 -28
  1170. data/src/core/lib/experiments/config.h +56 -3
  1171. data/src/core/lib/experiments/experiments.cc +308 -366
  1172. data/src/core/lib/experiments/experiments.h +144 -155
  1173. data/src/core/lib/iomgr/buffer_list.cc +6 -6
  1174. data/src/core/lib/iomgr/buffer_list.h +23 -23
  1175. data/src/core/lib/iomgr/call_combiner.cc +39 -66
  1176. data/src/core/lib/iomgr/call_combiner.h +13 -17
  1177. data/src/core/lib/iomgr/cfstream_handle.cc +14 -22
  1178. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  1179. data/src/core/lib/iomgr/closure.cc +2 -2
  1180. data/src/core/lib/iomgr/closure.h +13 -21
  1181. data/src/core/lib/iomgr/combiner.cc +33 -49
  1182. data/src/core/lib/iomgr/combiner.h +2 -5
  1183. data/src/core/lib/iomgr/endpoint.cc +0 -6
  1184. data/src/core/lib/iomgr/endpoint.h +3 -4
  1185. data/src/core/lib/iomgr/endpoint_cfstream.cc +40 -73
  1186. data/src/core/lib/iomgr/endpoint_pair_posix.cc +3 -6
  1187. data/src/core/lib/iomgr/endpoint_pair_windows.cc +6 -8
  1188. data/src/core/lib/iomgr/error.cc +24 -34
  1189. data/src/core/lib/iomgr/error.h +7 -10
  1190. data/src/core/lib/iomgr/error_cfstream.cc +1 -3
  1191. data/src/core/lib/iomgr/ev_apple.cc +16 -24
  1192. data/src/core/lib/iomgr/ev_epoll1_linux.cc +69 -115
  1193. data/src/core/lib/iomgr/ev_poll_posix.cc +53 -53
  1194. data/src/core/lib/iomgr/ev_posix.cc +67 -58
  1195. data/src/core/lib/iomgr/ev_posix.h +9 -12
  1196. data/src/core/lib/iomgr/event_engine_shims/closure.cc +10 -14
  1197. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  1198. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +34 -54
  1199. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +2 -2
  1200. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +9 -14
  1201. data/src/core/lib/iomgr/exec_ctx.cc +11 -21
  1202. data/src/core/lib/iomgr/exec_ctx.h +23 -146
  1203. data/src/core/lib/iomgr/executor.cc +55 -64
  1204. data/src/core/lib/iomgr/executor.h +2 -2
  1205. data/src/core/lib/iomgr/fork_posix.cc +11 -15
  1206. data/src/core/lib/iomgr/fork_windows.cc +3 -2
  1207. data/src/core/lib/iomgr/internal_errqueue.cc +4 -4
  1208. data/src/core/lib/iomgr/iocp_windows.cc +8 -10
  1209. data/src/core/lib/iomgr/iomgr.cc +18 -24
  1210. data/src/core/lib/iomgr/iomgr.h +1 -2
  1211. data/src/core/lib/iomgr/iomgr_internal.cc +1 -2
  1212. data/src/core/lib/iomgr/iomgr_internal.h +1 -2
  1213. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1214. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1215. data/src/core/lib/iomgr/lockfree_event.cc +10 -20
  1216. data/src/core/lib/iomgr/nameser.h +1 -1
  1217. data/src/core/lib/iomgr/polling_entity.cc +13 -7
  1218. data/src/core/lib/iomgr/pollset.h +0 -2
  1219. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -2
  1220. data/src/core/lib/iomgr/pollset_windows.cc +2 -6
  1221. data/src/core/lib/iomgr/port.h +2 -2
  1222. data/src/core/lib/iomgr/resolve_address.cc +3 -5
  1223. data/src/core/lib/iomgr/resolve_address.h +4 -6
  1224. data/src/core/lib/iomgr/resolve_address_impl.h +1 -2
  1225. data/src/core/lib/iomgr/resolve_address_posix.cc +12 -23
  1226. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  1227. data/src/core/lib/iomgr/resolve_address_windows.cc +9 -14
  1228. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  1229. data/src/core/lib/iomgr/resolved_address.h +1 -2
  1230. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -6
  1231. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  1232. data/src/core/lib/iomgr/socket_mutator.cc +2 -3
  1233. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  1234. data/src/core/lib/iomgr/socket_utils.h +1 -2
  1235. data/src/core/lib/iomgr/socket_utils_common_posix.cc +43 -52
  1236. data/src/core/lib/iomgr/socket_utils_linux.cc +1 -3
  1237. data/src/core/lib/iomgr/socket_utils_posix.cc +6 -8
  1238. data/src/core/lib/iomgr/socket_utils_windows.cc +1 -3
  1239. data/src/core/lib/iomgr/socket_windows.cc +7 -11
  1240. data/src/core/lib/iomgr/socket_windows.h +1 -2
  1241. data/src/core/lib/iomgr/tcp_client_cfstream.cc +12 -20
  1242. data/src/core/lib/iomgr/tcp_client_posix.cc +19 -32
  1243. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -13
  1244. data/src/core/lib/iomgr/tcp_posix.cc +89 -158
  1245. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  1246. data/src/core/lib/iomgr/tcp_server.h +2 -2
  1247. data/src/core/lib/iomgr/tcp_server_posix.cc +41 -61
  1248. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -3
  1249. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -11
  1250. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +11 -13
  1251. data/src/core/lib/iomgr/tcp_server_windows.cc +20 -29
  1252. data/src/core/lib/iomgr/tcp_windows.cc +32 -62
  1253. data/src/core/lib/iomgr/timer.h +2 -2
  1254. data/src/core/lib/iomgr/timer_generic.cc +72 -105
  1255. data/src/core/lib/iomgr/timer_heap.cc +3 -4
  1256. data/src/core/lib/iomgr/timer_manager.cc +26 -52
  1257. data/src/core/lib/iomgr/timer_manager.h +1 -2
  1258. data/src/core/lib/iomgr/unix_sockets_posix.cc +4 -6
  1259. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -4
  1260. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +0 -4
  1261. data/src/core/lib/iomgr/vsock.cc +3 -6
  1262. data/src/core/lib/iomgr/vsock.h +3 -4
  1263. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -4
  1264. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1265. data/src/core/lib/promise/activity.cc +4 -4
  1266. data/src/core/lib/promise/activity.h +81 -29
  1267. data/src/core/lib/promise/all_ok.h +54 -11
  1268. data/src/core/lib/promise/arena_promise.h +2 -4
  1269. data/src/core/lib/promise/cancel_callback.h +34 -6
  1270. data/src/core/lib/promise/context.h +19 -10
  1271. data/src/core/lib/promise/detail/basic_seq.h +33 -20
  1272. data/src/core/lib/promise/detail/join_state.h +556 -814
  1273. data/src/core/lib/promise/detail/promise_factory.h +124 -48
  1274. data/src/core/lib/promise/detail/promise_like.h +50 -21
  1275. data/src/core/lib/promise/detail/seq_state.h +1378 -2254
  1276. data/src/core/lib/promise/detail/status.h +36 -15
  1277. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -3
  1278. data/src/core/lib/promise/for_each.h +46 -40
  1279. data/src/core/lib/promise/if.h +69 -37
  1280. data/src/core/lib/promise/interceptor_list.h +30 -44
  1281. data/src/core/lib/promise/latch.h +33 -40
  1282. data/src/core/lib/promise/loop.h +82 -29
  1283. data/src/core/lib/promise/map.h +186 -22
  1284. data/src/core/lib/promise/observable.h +181 -0
  1285. data/src/core/lib/promise/party.cc +326 -149
  1286. data/src/core/lib/promise/party.h +390 -395
  1287. data/src/core/lib/promise/pipe.h +33 -56
  1288. data/src/core/lib/promise/poll.h +120 -40
  1289. data/src/core/lib/promise/prioritized_race.h +17 -23
  1290. data/src/core/lib/promise/promise.h +15 -10
  1291. data/src/core/lib/promise/race.h +14 -17
  1292. data/src/core/lib/promise/seq.h +99 -71
  1293. data/src/core/lib/promise/sleep.cc +6 -6
  1294. data/src/core/lib/promise/sleep.h +19 -6
  1295. data/src/core/lib/promise/status_flag.h +173 -51
  1296. data/src/core/lib/promise/try_join.h +156 -26
  1297. data/src/core/lib/promise/try_seq.h +151 -89
  1298. data/src/core/lib/resource_quota/api.cc +4 -6
  1299. data/src/core/lib/resource_quota/api.h +2 -3
  1300. data/src/core/lib/resource_quota/arena.cc +64 -86
  1301. data/src/core/lib/resource_quota/arena.h +225 -210
  1302. data/src/core/lib/resource_quota/connection_quota.cc +2 -3
  1303. data/src/core/lib/resource_quota/connection_quota.h +9 -6
  1304. data/src/core/lib/resource_quota/memory_quota.cc +93 -90
  1305. data/src/core/lib/resource_quota/memory_quota.h +29 -23
  1306. data/src/core/lib/resource_quota/periodic_update.cc +5 -5
  1307. data/src/core/lib/resource_quota/periodic_update.h +2 -4
  1308. data/src/core/lib/resource_quota/resource_quota.h +8 -9
  1309. data/src/core/lib/resource_quota/thread_quota.cc +2 -3
  1310. data/src/core/lib/resource_quota/thread_quota.h +5 -6
  1311. data/src/core/lib/security/authorization/audit_logging.cc +5 -7
  1312. data/src/core/lib/security/authorization/audit_logging.h +5 -6
  1313. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1314. data/src/core/lib/security/authorization/authorization_policy_provider.h +4 -5
  1315. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +2 -2
  1316. data/src/core/lib/security/authorization/evaluate_args.cc +13 -17
  1317. data/src/core/lib/security/authorization/evaluate_args.h +6 -7
  1318. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -4
  1319. data/src/core/lib/security/authorization/grpc_authorization_engine.h +2 -3
  1320. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +21 -36
  1321. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +10 -8
  1322. data/src/core/lib/security/authorization/matchers.cc +5 -7
  1323. data/src/core/lib/security/authorization/matchers.h +5 -7
  1324. data/src/core/lib/security/authorization/rbac_policy.cc +3 -3
  1325. data/src/core/lib/security/authorization/rbac_policy.h +6 -8
  1326. data/src/core/lib/security/authorization/stdout_logger.cc +4 -5
  1327. data/src/core/lib/security/authorization/stdout_logger.h +4 -4
  1328. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -9
  1329. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +4 -5
  1330. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -3
  1331. data/src/core/lib/security/context/security_context.cc +48 -48
  1332. data/src/core/lib/security/context/security_context.h +47 -18
  1333. data/src/core/lib/security/credentials/alts/alts_credentials.cc +5 -5
  1334. data/src/core/lib/security/credentials/alts/alts_credentials.h +9 -5
  1335. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -4
  1336. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +1 -2
  1337. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +3 -5
  1338. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +3 -5
  1339. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +4 -5
  1340. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
  1341. data/src/core/lib/security/credentials/call_creds_util.cc +8 -7
  1342. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1343. data/src/core/lib/security/credentials/channel_creds_registry.h +7 -8
  1344. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +15 -14
  1345. data/src/core/lib/security/credentials/composite/composite_credentials.cc +10 -14
  1346. data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -10
  1347. data/src/core/lib/security/credentials/credentials.cc +18 -19
  1348. data/src/core/lib/security/credentials/credentials.h +12 -14
  1349. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +335 -340
  1350. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +60 -48
  1351. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -5
  1352. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1353. data/src/core/lib/security/credentials/external/external_account_credentials.cc +407 -374
  1354. data/src/core/lib/security/credentials/external/external_account_credentials.h +128 -60
  1355. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +89 -52
  1356. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +32 -11
  1357. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +102 -129
  1358. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +22 -24
  1359. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -4
  1360. data/src/core/lib/security/credentials/fake/fake_credentials.h +9 -8
  1361. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +195 -0
  1362. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +90 -0
  1363. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +7 -8
  1364. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +58 -76
  1365. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +8 -6
  1366. data/src/core/lib/security/credentials/iam/iam_credentials.cc +6 -11
  1367. data/src/core/lib/security/credentials/iam/iam_credentials.h +9 -8
  1368. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1369. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  1370. data/src/core/lib/security/credentials/jwt/json_token.cc +25 -29
  1371. data/src/core/lib/security/credentials/jwt/json_token.h +2 -3
  1372. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +23 -31
  1373. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -12
  1374. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +68 -76
  1375. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -4
  1376. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -2
  1377. data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
  1378. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +196 -297
  1379. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +51 -74
  1380. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +20 -34
  1381. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +12 -14
  1382. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +37 -49
  1383. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +5 -8
  1384. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +15 -17
  1385. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +18 -19
  1386. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +1 -3
  1387. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +122 -54
  1388. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +17 -16
  1389. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +6 -10
  1390. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +9 -11
  1391. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +10 -13
  1392. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -1
  1393. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +6 -11
  1394. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +9 -12
  1395. data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -24
  1396. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -3
  1397. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -6
  1398. data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
  1399. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +304 -0
  1400. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +181 -0
  1401. data/src/core/lib/security/credentials/xds/xds_credentials.cc +16 -13
  1402. data/src/core/lib/security/credentials/xds/xds_credentials.h +7 -9
  1403. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +23 -28
  1404. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  1405. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +27 -27
  1406. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
  1407. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +4 -7
  1408. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -6
  1409. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +10 -12
  1410. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +4 -6
  1411. data/src/core/lib/security/security_connector/local/local_security_connector.cc +26 -26
  1412. data/src/core/lib/security/security_connector/local/local_security_connector.h +1 -1
  1413. data/src/core/lib/security/security_connector/security_connector.cc +6 -11
  1414. data/src/core/lib/security/security_connector/security_connector.h +8 -11
  1415. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +23 -27
  1416. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -3
  1417. data/src/core/lib/security/security_connector/ssl_utils.cc +34 -35
  1418. data/src/core/lib/security/security_connector/ssl_utils.h +7 -9
  1419. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +46 -59
  1420. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +20 -21
  1421. data/src/core/lib/security/transport/auth_filters.h +101 -9
  1422. data/src/core/lib/security/transport/client_auth_filter.cc +113 -32
  1423. data/src/core/lib/security/transport/server_auth_filter.cc +19 -38
  1424. data/src/core/lib/security/util/json_util.cc +4 -5
  1425. data/src/core/lib/security/util/json_util.h +1 -1
  1426. data/src/core/lib/slice/percent_encoding.cc +2 -5
  1427. data/src/core/lib/slice/slice.cc +4 -7
  1428. data/src/core/lib/slice/slice.h +6 -9
  1429. data/src/core/lib/slice/slice_buffer.cc +7 -9
  1430. data/src/core/lib/slice/slice_buffer.h +5 -6
  1431. data/src/core/lib/slice/slice_internal.h +3 -6
  1432. data/src/core/lib/slice/slice_refcount.h +8 -15
  1433. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  1434. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  1435. data/src/core/lib/surface/byte_buffer.cc +1 -2
  1436. data/src/core/lib/surface/byte_buffer_reader.cc +3 -6
  1437. data/src/core/lib/surface/call.cc +158 -3826
  1438. data/src/core/lib/surface/call.h +67 -160
  1439. data/src/core/lib/surface/call_details.cc +4 -3
  1440. data/src/core/lib/surface/call_log_batch.cc +8 -11
  1441. data/src/core/lib/surface/call_test_only.h +1 -2
  1442. data/src/core/lib/surface/call_utils.cc +231 -0
  1443. data/src/core/lib/surface/call_utils.h +492 -0
  1444. data/src/core/lib/surface/channel.cc +47 -54
  1445. data/src/core/lib/surface/channel.h +24 -22
  1446. data/src/core/lib/surface/channel_create.cc +28 -13
  1447. data/src/core/lib/surface/channel_create.h +5 -5
  1448. data/src/core/lib/surface/channel_init.cc +270 -267
  1449. data/src/core/lib/surface/channel_init.h +173 -119
  1450. data/src/core/lib/surface/client_call.cc +456 -0
  1451. data/src/core/lib/surface/client_call.h +192 -0
  1452. data/src/core/lib/surface/completion_queue.cc +103 -138
  1453. data/src/core/lib/surface/completion_queue.h +4 -13
  1454. data/src/core/lib/surface/completion_queue_factory.cc +1 -3
  1455. data/src/core/lib/surface/connection_context.cc +77 -0
  1456. data/src/core/lib/surface/connection_context.h +156 -0
  1457. data/src/core/lib/surface/event_string.cc +9 -3
  1458. data/src/core/lib/surface/event_string.h +2 -2
  1459. data/src/core/lib/surface/filter_stack_call.cc +1154 -0
  1460. data/src/core/lib/surface/filter_stack_call.h +366 -0
  1461. data/src/core/lib/surface/init.cc +73 -28
  1462. data/src/core/lib/surface/init.h +5 -0
  1463. data/src/core/lib/surface/init_internally.h +13 -2
  1464. data/src/core/lib/surface/lame_client.cc +12 -15
  1465. data/src/core/lib/surface/lame_client.h +6 -5
  1466. data/src/core/lib/surface/legacy_channel.cc +67 -51
  1467. data/src/core/lib/surface/legacy_channel.h +16 -26
  1468. data/src/core/lib/surface/metadata_array.cc +5 -5
  1469. data/src/core/lib/surface/server_call.cc +259 -0
  1470. data/src/core/lib/surface/server_call.h +169 -0
  1471. data/src/core/lib/surface/validate_metadata.cc +3 -4
  1472. data/src/core/lib/surface/validate_metadata.h +2 -5
  1473. data/src/core/lib/surface/version.cc +2 -2
  1474. data/src/core/lib/transport/bdp_estimator.cc +12 -20
  1475. data/src/core/lib/transport/bdp_estimator.h +10 -16
  1476. data/src/core/lib/transport/call_arena_allocator.cc +4 -18
  1477. data/src/core/lib/transport/call_arena_allocator.h +30 -12
  1478. data/src/core/lib/transport/call_destination.h +76 -0
  1479. data/src/core/lib/transport/call_filters.cc +67 -405
  1480. data/src/core/lib/transport/call_filters.h +877 -778
  1481. data/src/core/lib/transport/call_final_info.cc +2 -2
  1482. data/src/core/lib/transport/call_final_info.h +3 -3
  1483. data/src/core/lib/transport/call_spine.cc +58 -74
  1484. data/src/core/lib/transport/call_spine.h +331 -361
  1485. data/src/core/lib/transport/call_state.cc +39 -0
  1486. data/src/core/lib/transport/call_state.h +1154 -0
  1487. data/src/core/lib/transport/connectivity_state.cc +43 -52
  1488. data/src/core/lib/transport/connectivity_state.h +7 -12
  1489. data/src/core/lib/transport/error_utils.cc +3 -4
  1490. data/src/core/lib/transport/error_utils.h +4 -5
  1491. data/src/core/lib/transport/http2_errors.h +5 -3
  1492. data/src/core/lib/transport/interception_chain.cc +155 -0
  1493. data/src/core/lib/transport/interception_chain.h +282 -0
  1494. data/src/core/lib/transport/message.cc +2 -2
  1495. data/src/core/lib/transport/message.h +5 -0
  1496. data/src/core/lib/transport/metadata.cc +27 -3
  1497. data/src/core/lib/transport/metadata.h +125 -2
  1498. data/src/core/lib/transport/metadata_batch.cc +14 -7
  1499. data/src/core/lib/transport/metadata_batch.h +152 -31
  1500. data/src/core/lib/transport/metadata_compression_traits.h +3 -4
  1501. data/src/core/lib/transport/metadata_info.h +1 -1
  1502. data/src/core/lib/transport/parsed_metadata.h +3 -5
  1503. data/src/core/lib/transport/simple_slice_based_metadata.h +1 -2
  1504. data/src/core/lib/transport/status_conversion.h +1 -1
  1505. data/src/core/lib/transport/timeout_encoding.cc +22 -23
  1506. data/src/core/lib/transport/timeout_encoding.h +4 -5
  1507. data/src/core/lib/transport/transport.cc +7 -13
  1508. data/src/core/lib/transport/transport.h +71 -63
  1509. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1510. data/src/core/lib/transport/transport_op_string.cc +4 -6
  1511. data/src/core/load_balancing/address_filtering.cc +2 -4
  1512. data/src/core/load_balancing/address_filtering.h +4 -5
  1513. data/src/core/load_balancing/backend_metric_data.h +2 -2
  1514. data/src/core/load_balancing/backend_metric_parser.cc +22 -30
  1515. data/src/core/load_balancing/backend_metric_parser.h +1 -3
  1516. data/src/core/load_balancing/child_policy_handler.cc +37 -41
  1517. data/src/core/load_balancing/child_policy_handler.h +4 -5
  1518. data/src/core/load_balancing/delegating_helper.h +6 -7
  1519. data/src/core/load_balancing/endpoint_list.cc +23 -15
  1520. data/src/core/load_balancing/endpoint_list.h +27 -22
  1521. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +12 -11
  1522. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +8 -5
  1523. data/src/core/load_balancing/grpclb/grpclb.cc +175 -226
  1524. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +2 -3
  1525. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -3
  1526. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +5 -7
  1527. data/src/core/load_balancing/grpclb/load_balancer_api.cc +7 -10
  1528. data/src/core/load_balancing/grpclb/load_balancer_api.h +4 -6
  1529. data/src/core/load_balancing/health_check_client.cc +76 -128
  1530. data/src/core/load_balancing/health_check_client.h +3 -3
  1531. data/src/core/load_balancing/health_check_client_internal.h +15 -16
  1532. data/src/core/load_balancing/lb_policy.cc +9 -14
  1533. data/src/core/load_balancing/lb_policy.h +77 -51
  1534. data/src/core/load_balancing/lb_policy_factory.h +5 -6
  1535. data/src/core/load_balancing/lb_policy_registry.cc +15 -15
  1536. data/src/core/load_balancing/lb_policy_registry.h +5 -6
  1537. data/src/core/load_balancing/oob_backend_metric.cc +19 -25
  1538. data/src/core/load_balancing/oob_backend_metric.h +3 -3
  1539. data/src/core/load_balancing/oob_backend_metric_internal.h +8 -9
  1540. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +191 -247
  1541. data/src/core/load_balancing/outlier_detection/outlier_detection.h +9 -10
  1542. data/src/core/load_balancing/pick_first/pick_first.cc +333 -381
  1543. data/src/core/load_balancing/priority/priority.cc +102 -151
  1544. data/src/core/load_balancing/ring_hash/ring_hash.cc +254 -226
  1545. data/src/core/load_balancing/ring_hash/ring_hash.h +10 -18
  1546. data/src/core/load_balancing/rls/rls.cc +434 -528
  1547. data/src/core/load_balancing/rls/rls.h +97 -1
  1548. data/src/core/load_balancing/round_robin/round_robin.cc +71 -103
  1549. data/src/core/load_balancing/subchannel_interface.h +17 -6
  1550. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +8 -9
  1551. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +4 -5
  1552. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +159 -185
  1553. data/src/core/load_balancing/weighted_target/weighted_target.cc +79 -123
  1554. data/src/core/load_balancing/xds/cds.cc +65 -85
  1555. data/src/core/load_balancing/xds/xds_cluster_impl.cc +192 -172
  1556. data/src/core/load_balancing/xds/xds_cluster_manager.cc +63 -103
  1557. data/src/core/load_balancing/xds/xds_override_host.cc +163 -272
  1558. data/src/core/load_balancing/xds/xds_override_host.h +6 -7
  1559. data/src/core/load_balancing/xds/xds_wrr_locality.cc +48 -60
  1560. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -8
  1561. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +6 -1
  1562. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +98 -73
  1563. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -3
  1564. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -6
  1565. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -6
  1566. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +119 -101
  1567. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +166 -151
  1568. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -18
  1569. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  1570. data/src/core/resolver/dns/dns_resolver_plugin.cc +10 -11
  1571. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1572. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +62 -74
  1573. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -4
  1574. data/src/core/resolver/dns/event_engine/service_config_helper.cc +8 -10
  1575. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  1576. data/src/core/resolver/dns/native/dns_resolver.cc +23 -32
  1577. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1578. data/src/core/resolver/endpoint_addresses.cc +2 -5
  1579. data/src/core/resolver/endpoint_addresses.h +5 -3
  1580. data/src/core/resolver/fake/fake_resolver.cc +18 -21
  1581. data/src/core/resolver/fake/fake_resolver.h +10 -11
  1582. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +33 -38
  1583. data/src/core/resolver/polling_resolver.cc +41 -60
  1584. data/src/core/resolver/polling_resolver.h +11 -12
  1585. data/src/core/resolver/resolver.cc +2 -6
  1586. data/src/core/resolver/resolver.h +4 -10
  1587. data/src/core/resolver/resolver_factory.h +4 -5
  1588. data/src/core/resolver/resolver_registry.cc +12 -13
  1589. data/src/core/resolver/resolver_registry.h +4 -5
  1590. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +8 -9
  1591. data/src/core/resolver/xds/xds_config.cc +95 -0
  1592. data/src/core/resolver/xds/xds_config.h +108 -0
  1593. data/src/core/resolver/xds/xds_dependency_manager.cc +260 -342
  1594. data/src/core/resolver/xds/xds_dependency_manager.h +34 -89
  1595. data/src/core/resolver/xds/xds_resolver.cc +188 -210
  1596. data/src/core/resolver/xds/xds_resolver_attributes.h +7 -4
  1597. data/src/core/server/server.cc +658 -501
  1598. data/src/core/server/server.h +261 -97
  1599. data/src/core/server/server_call_tracer_filter.cc +22 -25
  1600. data/src/core/server/server_call_tracer_filter.h +1 -1
  1601. data/src/core/server/server_config_selector.h +6 -7
  1602. data/src/core/server/server_config_selector_filter.cc +23 -25
  1603. data/src/core/server/server_interface.h +2 -0
  1604. data/src/core/server/xds_channel_stack_modifier.cc +5 -5
  1605. data/src/core/server/xds_channel_stack_modifier.h +6 -7
  1606. data/src/core/server/xds_server_config_fetcher.cc +147 -223
  1607. data/src/core/service_config/service_config.h +4 -6
  1608. data/src/core/service_config/service_config_call_data.h +21 -20
  1609. data/src/core/service_config/service_config_channel_arg_filter.cc +21 -29
  1610. data/src/core/service_config/service_config_impl.cc +12 -14
  1611. data/src/core/service_config/service_config_impl.h +5 -8
  1612. data/src/core/service_config/service_config_parser.cc +4 -8
  1613. data/src/core/service_config/service_config_parser.h +3 -5
  1614. data/src/core/telemetry/call_tracer.cc +386 -0
  1615. data/src/core/telemetry/call_tracer.h +264 -0
  1616. data/src/core/telemetry/histogram_view.cc +69 -0
  1617. data/src/core/telemetry/histogram_view.h +36 -0
  1618. data/src/core/telemetry/metrics.cc +180 -0
  1619. data/src/core/telemetry/metrics.h +563 -0
  1620. data/src/core/telemetry/stats.cc +67 -0
  1621. data/src/core/telemetry/stats.h +62 -0
  1622. data/src/core/telemetry/stats_data.cc +931 -0
  1623. data/src/core/telemetry/stats_data.h +705 -0
  1624. data/src/core/telemetry/tcp_tracer.h +143 -0
  1625. data/src/core/tsi/alts/crypt/aes_gcm.cc +5 -8
  1626. data/src/core/tsi/alts/crypt/gsec.cc +2 -3
  1627. data/src/core/tsi/alts/crypt/gsec.h +3 -4
  1628. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  1629. data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -4
  1630. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  1631. data/src/core/tsi/alts/frame_protector/alts_crypter.h +2 -3
  1632. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +16 -18
  1633. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +1 -2
  1634. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -1
  1635. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  1636. data/src/core/tsi/alts/frame_protector/frame_handler.cc +11 -12
  1637. data/src/core/tsi/alts/frame_protector/frame_handler.h +1 -2
  1638. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +43 -48
  1639. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +2 -4
  1640. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
  1641. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +69 -71
  1642. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
  1643. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +17 -24
  1644. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -4
  1645. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +14 -17
  1646. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +1 -2
  1647. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -12
  1648. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +1 -2
  1649. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +9 -11
  1650. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +3 -5
  1651. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +1 -2
  1652. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +10 -14
  1653. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +1 -2
  1654. data/src/core/tsi/fake_transport_security.cc +32 -32
  1655. data/src/core/tsi/local_transport_security.cc +9 -10
  1656. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -12
  1657. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +8 -10
  1658. data/src/core/tsi/ssl/session_cache/ssl_session.h +4 -5
  1659. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -9
  1660. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +7 -8
  1661. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -4
  1662. data/src/core/tsi/ssl_transport_security.cc +135 -113
  1663. data/src/core/tsi/ssl_transport_security.h +6 -8
  1664. data/src/core/tsi/ssl_transport_security_utils.cc +77 -24
  1665. data/src/core/tsi/ssl_transport_security_utils.h +14 -5
  1666. data/src/core/tsi/ssl_types.h +1 -2
  1667. data/src/core/tsi/transport_security.cc +2 -7
  1668. data/src/core/tsi/transport_security.h +1 -4
  1669. data/src/core/tsi/transport_security_interface.h +3 -8
  1670. data/src/core/util/alloc.cc +69 -0
  1671. data/src/core/util/alloc.h +28 -0
  1672. data/src/core/util/atomic_utils.h +47 -0
  1673. data/src/core/util/avl.h +324 -0
  1674. data/src/core/util/backoff.cc +57 -0
  1675. data/src/core/util/backoff.h +86 -0
  1676. data/src/core/util/bitset.h +224 -0
  1677. data/src/core/util/chunked_vector.h +256 -0
  1678. data/src/core/util/construct_destruct.h +41 -0
  1679. data/src/core/util/cpp_impl_of.h +49 -0
  1680. data/src/core/util/crash.cc +40 -0
  1681. data/src/core/util/crash.h +36 -0
  1682. data/src/core/util/debug_location.h +106 -0
  1683. data/src/core/util/directory_reader.h +48 -0
  1684. data/src/core/util/down_cast.h +48 -0
  1685. data/src/core/util/dual_ref_counted.h +376 -0
  1686. data/src/core/util/dump_args.cc +54 -0
  1687. data/src/core/util/dump_args.h +114 -0
  1688. data/src/core/util/env.h +52 -0
  1689. data/src/core/util/event_log.cc +87 -0
  1690. data/src/core/util/event_log.h +79 -0
  1691. data/src/core/util/examine_stack.cc +43 -0
  1692. data/src/core/util/examine_stack.h +44 -0
  1693. data/src/core/util/fork.cc +241 -0
  1694. data/src/core/util/fork.h +98 -0
  1695. data/src/core/util/gcp_metadata_query.cc +132 -0
  1696. data/src/core/util/gcp_metadata_query.h +86 -0
  1697. data/src/core/util/gethostname.h +26 -0
  1698. data/src/core/util/gethostname_fallback.cc +30 -0
  1699. data/src/core/util/gethostname_host_name_max.cc +39 -0
  1700. data/src/core/util/gethostname_sysconf.cc +39 -0
  1701. data/src/core/util/glob.cc +70 -0
  1702. data/src/core/util/glob.h +29 -0
  1703. data/src/core/util/gpr_time.cc +266 -0
  1704. data/src/core/util/grpc_if_nametoindex.h +29 -0
  1705. data/src/core/util/grpc_if_nametoindex_posix.cc +41 -0
  1706. data/src/core/util/grpc_if_nametoindex_unsupported.cc +36 -0
  1707. data/src/core/util/host_port.cc +114 -0
  1708. data/src/core/util/host_port.h +57 -0
  1709. data/src/core/util/http_client/format_request.cc +134 -0
  1710. data/src/core/util/http_client/format_request.h +37 -0
  1711. data/src/core/util/http_client/httpcli.cc +427 -0
  1712. data/src/core/util/http_client/httpcli.h +279 -0
  1713. data/src/core/util/http_client/httpcli_security_connector.cc +210 -0
  1714. data/src/core/util/http_client/httpcli_ssl_credentials.h +38 -0
  1715. data/src/core/util/http_client/parser.cc +447 -0
  1716. data/src/core/util/http_client/parser.h +126 -0
  1717. data/src/core/util/if_list.h +4530 -0
  1718. data/src/core/util/iphone/cpu.cc +43 -0
  1719. data/src/core/util/json/json.h +29 -0
  1720. data/src/core/util/json/json_args.h +34 -0
  1721. data/src/core/util/json/json_channel_args.h +42 -0
  1722. data/src/core/util/json/json_object_loader.cc +215 -0
  1723. data/src/core/util/json/json_object_loader.h +644 -0
  1724. data/src/core/util/json/json_reader.cc +953 -0
  1725. data/src/core/util/json/json_reader.h +33 -0
  1726. data/src/core/util/json/json_util.cc +101 -0
  1727. data/src/core/util/json/json_util.h +163 -0
  1728. data/src/core/util/json/json_writer.cc +337 -0
  1729. data/src/core/util/json/json_writer.h +33 -0
  1730. data/src/core/util/latent_see.cc +163 -0
  1731. data/src/core/util/latent_see.h +334 -0
  1732. data/src/core/util/linux/cpu.cc +86 -0
  1733. data/src/core/util/linux/env.cc +61 -0
  1734. data/src/core/util/load_file.cc +75 -0
  1735. data/src/core/util/load_file.h +33 -0
  1736. data/src/core/util/log.cc +127 -0
  1737. data/src/core/util/lru_cache.h +122 -0
  1738. data/src/core/util/manual_constructor.h +145 -0
  1739. data/src/core/util/match.h +74 -0
  1740. data/src/core/util/matchers.cc +336 -0
  1741. data/src/core/util/matchers.h +162 -0
  1742. data/src/core/util/memory.h +52 -0
  1743. data/src/core/util/mpscq.cc +108 -0
  1744. data/src/core/util/mpscq.h +98 -0
  1745. data/src/core/util/msys/tmpfile.cc +57 -0
  1746. data/src/core/util/no_destruct.h +95 -0
  1747. data/src/core/util/notification.h +66 -0
  1748. data/src/core/util/orphanable.h +153 -0
  1749. data/src/core/util/overload.h +59 -0
  1750. data/src/core/util/packed_table.h +40 -0
  1751. data/src/core/util/per_cpu.cc +34 -0
  1752. data/src/core/util/per_cpu.h +102 -0
  1753. data/src/core/util/posix/cpu.cc +83 -0
  1754. data/src/core/util/posix/directory_reader.cc +82 -0
  1755. data/src/core/util/posix/env.cc +47 -0
  1756. data/src/core/util/posix/stat.cc +54 -0
  1757. data/src/core/util/posix/string.cc +71 -0
  1758. data/src/core/util/posix/sync.cc +157 -0
  1759. data/src/core/util/posix/thd.cc +243 -0
  1760. data/src/core/util/posix/time.cc +122 -0
  1761. data/src/core/util/posix/tmpfile.cc +71 -0
  1762. data/src/core/util/random_early_detection.cc +33 -0
  1763. data/src/core/util/random_early_detection.h +61 -0
  1764. data/src/core/util/ref_counted.h +403 -0
  1765. data/src/core/util/ref_counted_ptr.h +443 -0
  1766. data/src/core/util/ref_counted_string.cc +42 -0
  1767. data/src/core/util/ref_counted_string.h +159 -0
  1768. data/src/core/util/ring_buffer.h +122 -0
  1769. data/src/core/util/single_set_ptr.h +89 -0
  1770. data/src/core/util/sorted_pack.h +89 -0
  1771. data/src/core/util/spinlock.h +51 -0
  1772. data/src/core/util/stat.h +35 -0
  1773. data/src/core/util/status_helper.cc +427 -0
  1774. data/src/core/util/status_helper.h +160 -0
  1775. data/src/core/util/strerror.cc +40 -0
  1776. data/src/core/util/strerror.h +29 -0
  1777. data/src/core/util/string.cc +341 -0
  1778. data/src/core/util/string.h +110 -0
  1779. data/src/core/util/sync.cc +123 -0
  1780. data/src/core/util/sync.h +199 -0
  1781. data/src/core/util/sync_abseil.cc +106 -0
  1782. data/src/core/util/table.h +471 -0
  1783. data/src/core/util/tchar.cc +49 -0
  1784. data/src/core/util/tchar.h +33 -0
  1785. data/src/core/util/thd.h +193 -0
  1786. data/src/core/util/time.cc +240 -0
  1787. data/src/core/util/time.h +385 -0
  1788. data/src/core/util/time_averaged_stats.cc +60 -0
  1789. data/src/core/util/time_averaged_stats.h +79 -0
  1790. data/src/core/util/time_precise.cc +167 -0
  1791. data/src/core/util/time_precise.h +68 -0
  1792. data/src/core/util/time_util.cc +80 -0
  1793. data/src/core/util/time_util.h +41 -0
  1794. data/src/core/util/tmpfile.h +31 -0
  1795. data/src/core/util/type_list.h +88 -0
  1796. data/src/core/util/unique_ptr_with_bitset.h +86 -0
  1797. data/src/core/util/unique_type_name.h +123 -0
  1798. data/src/core/util/upb_utils.h +43 -0
  1799. data/src/core/util/uri.cc +378 -0
  1800. data/src/core/util/uri.h +112 -0
  1801. data/src/core/util/useful.h +153 -0
  1802. data/src/core/util/uuid_v4.cc +37 -0
  1803. data/src/core/util/uuid_v4.h +35 -0
  1804. data/src/core/util/validation_errors.cc +73 -0
  1805. data/src/core/util/validation_errors.h +144 -0
  1806. data/src/core/util/wait_for_single_owner.h +62 -0
  1807. data/src/core/util/windows/cpu.cc +34 -0
  1808. data/src/core/util/windows/directory_reader.cc +79 -0
  1809. data/src/core/util/windows/env.cc +56 -0
  1810. data/src/core/util/windows/stat.cc +50 -0
  1811. data/src/core/util/windows/string.cc +68 -0
  1812. data/src/core/util/windows/string_util.cc +53 -0
  1813. data/src/core/util/windows/sync.cc +121 -0
  1814. data/src/core/util/windows/thd.cc +182 -0
  1815. data/src/core/util/windows/time.cc +104 -0
  1816. data/src/core/util/windows/tmpfile.cc +66 -0
  1817. data/src/core/util/work_serializer.cc +298 -0
  1818. data/src/core/util/work_serializer.h +81 -0
  1819. data/src/core/util/xxhash_inline.h +29 -0
  1820. data/src/core/xds/grpc/certificate_provider_store.cc +15 -21
  1821. data/src/core/xds/grpc/certificate_provider_store.h +13 -14
  1822. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +8 -9
  1823. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +9 -10
  1824. data/src/core/xds/grpc/xds_audit_logger_registry.cc +6 -6
  1825. data/src/core/xds/grpc/xds_audit_logger_registry.h +4 -5
  1826. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +18 -179
  1827. data/src/core/xds/grpc/xds_bootstrap_grpc.h +11 -41
  1828. data/src/core/xds/grpc/xds_certificate_provider.cc +19 -20
  1829. data/src/core/xds/grpc/xds_certificate_provider.h +12 -11
  1830. data/src/core/xds/grpc/xds_client_grpc.cc +104 -83
  1831. data/src/core/xds/grpc/xds_client_grpc.h +16 -10
  1832. data/src/core/xds/grpc/xds_cluster.cc +12 -737
  1833. data/src/core/xds/grpc/xds_cluster.h +40 -49
  1834. data/src/core/xds/grpc/xds_cluster_parser.cc +772 -0
  1835. data/src/core/xds/grpc/xds_cluster_parser.h +61 -0
  1836. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +10 -13
  1837. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +5 -6
  1838. data/src/core/xds/grpc/xds_common_types.cc +33 -438
  1839. data/src/core/xds/grpc/xds_common_types.h +12 -30
  1840. data/src/core/xds/grpc/xds_common_types_parser.cc +501 -0
  1841. data/src/core/xds/grpc/xds_common_types_parser.h +77 -0
  1842. data/src/core/xds/grpc/xds_endpoint.cc +3 -424
  1843. data/src/core/xds/grpc/xds_endpoint.h +7 -29
  1844. data/src/core/xds/grpc/xds_endpoint_parser.cc +475 -0
  1845. data/src/core/xds/grpc/xds_endpoint_parser.h +47 -0
  1846. data/src/core/xds/grpc/xds_health_status.cc +4 -6
  1847. data/src/core/xds/grpc/xds_health_status.h +4 -6
  1848. data/src/core/xds/grpc/xds_http_fault_filter.cc +46 -36
  1849. data/src/core/xds/grpc/xds_http_fault_filter.h +15 -10
  1850. data/src/core/xds/grpc/xds_http_filter.h +134 -0
  1851. data/src/core/xds/grpc/xds_http_filter_registry.cc +122 -0
  1852. data/src/core/xds/grpc/xds_http_filter_registry.h +104 -0
  1853. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +141 -0
  1854. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +61 -0
  1855. data/src/core/xds/grpc/xds_http_rbac_filter.cc +93 -71
  1856. data/src/core/xds/grpc/xds_http_rbac_filter.h +15 -10
  1857. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +34 -21
  1858. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +15 -10
  1859. data/src/core/xds/grpc/xds_lb_policy_registry.cc +27 -32
  1860. data/src/core/xds/grpc/xds_lb_policy_registry.h +5 -6
  1861. data/src/core/xds/grpc/xds_listener.cc +20 -989
  1862. data/src/core/xds/grpc/xds_listener.h +12 -45
  1863. data/src/core/xds/grpc/xds_listener_parser.cc +1000 -0
  1864. data/src/core/xds/grpc/xds_listener_parser.h +60 -0
  1865. data/src/core/xds/grpc/xds_metadata.cc +62 -0
  1866. data/src/core/xds/grpc/xds_metadata.h +158 -0
  1867. data/src/core/xds/grpc/xds_metadata_parser.cc +197 -0
  1868. data/src/core/xds/grpc/xds_metadata_parser.h +35 -0
  1869. data/src/core/xds/grpc/xds_route_config.cc +12 -934
  1870. data/src/core/xds/grpc/xds_route_config.h +17 -50
  1871. data/src/core/xds/grpc/xds_route_config_parser.cc +960 -0
  1872. data/src/core/xds/grpc/xds_route_config_parser.h +77 -0
  1873. data/src/core/xds/grpc/xds_routing.cc +66 -33
  1874. data/src/core/xds/grpc/xds_routing.h +17 -11
  1875. data/src/core/xds/grpc/xds_server_grpc.cc +181 -0
  1876. data/src/core/xds/grpc/xds_server_grpc.h +66 -0
  1877. data/src/core/xds/grpc/xds_server_grpc_interface.h +33 -0
  1878. data/src/core/xds/grpc/xds_transport_grpc.cc +101 -59
  1879. data/src/core/xds/grpc/xds_transport_grpc.h +34 -23
  1880. data/src/core/xds/xds_client/lrs_client.cc +1280 -0
  1881. data/src/core/xds/xds_client/lrs_client.h +394 -0
  1882. data/src/core/xds/xds_client/xds_api.cc +28 -469
  1883. data/src/core/xds/xds_client/xds_api.h +6 -161
  1884. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +63 -0
  1885. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +59 -0
  1886. data/src/core/xds/xds_client/xds_bootstrap.cc +13 -4
  1887. data/src/core/xds/xds_client/xds_bootstrap.h +10 -3
  1888. data/src/core/xds/xds_client/xds_client.cc +1122 -1414
  1889. data/src/core/xds/xds_client/xds_client.h +167 -117
  1890. data/src/core/xds/xds_client/xds_locality.h +102 -0
  1891. data/src/core/xds/xds_client/xds_metrics.h +2 -2
  1892. data/src/core/xds/xds_client/xds_resource_type.h +6 -8
  1893. data/src/core/xds/xds_client/xds_resource_type_impl.h +15 -11
  1894. data/src/core/xds/xds_client/xds_transport.h +29 -14
  1895. data/src/ruby/bin/math_pb.rb +1 -22
  1896. data/src/ruby/ext/grpc/extconf.rb +2 -1
  1897. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -3
  1898. data/src/ruby/ext/grpc/rb_call.c +15 -8
  1899. data/src/ruby/ext/grpc/rb_call_credentials.c +39 -33
  1900. data/src/ruby/ext/grpc/rb_channel.c +42 -37
  1901. data/src/ruby/ext/grpc/rb_channel_args.c +4 -4
  1902. data/src/ruby/ext/grpc/rb_channel_credentials.c +5 -6
  1903. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -2
  1904. data/src/ruby/ext/grpc/rb_completion_queue.c +18 -36
  1905. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  1906. data/src/ruby/ext/grpc/rb_compression_options.c +9 -10
  1907. data/src/ruby/ext/grpc/rb_event_thread.c +9 -9
  1908. data/src/ruby/ext/grpc/rb_grpc.c +16 -16
  1909. data/src/ruby/ext/grpc/rb_grpc.h +8 -1
  1910. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -14
  1911. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -21
  1912. data/src/ruby/ext/grpc/rb_server.c +47 -28
  1913. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  1914. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -2
  1915. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +5 -6
  1916. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +1 -2
  1917. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +4 -4
  1918. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -2
  1919. data/src/ruby/lib/grpc/generic/active_call.rb +8 -5
  1920. data/src/ruby/lib/grpc/logconfig.rb +13 -0
  1921. data/src/ruby/lib/grpc/version.rb +1 -1
  1922. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  1923. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  1924. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  1925. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  1926. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  1927. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  1928. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  1929. data/src/ruby/spec/call_spec.rb +53 -40
  1930. data/src/ruby/spec/channel_spec.rb +4 -2
  1931. data/src/ruby/spec/client_server_spec.rb +148 -507
  1932. data/src/ruby/spec/generic/active_call_spec.rb +64 -86
  1933. data/src/ruby/spec/generic/client_stub_spec.rb +20 -20
  1934. data/src/ruby/spec/logconfig_spec.rb +30 -0
  1935. data/src/ruby/spec/support/services.rb +3 -0
  1936. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -18
  1937. data/third_party/abseil-cpp/absl/base/attributes.h +84 -0
  1938. data/third_party/abseil-cpp/absl/base/config.h +32 -51
  1939. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -16
  1940. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +3 -1
  1941. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +13 -3
  1942. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -12
  1943. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +4 -4
  1944. data/third_party/abseil-cpp/absl/base/macros.h +48 -0
  1945. data/third_party/abseil-cpp/absl/base/no_destructor.h +35 -40
  1946. data/third_party/abseil-cpp/absl/base/nullability.h +33 -7
  1947. data/third_party/abseil-cpp/absl/base/optimization.h +11 -0
  1948. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1949. data/third_party/abseil-cpp/absl/base/prefetch.h +1 -1
  1950. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +68 -12
  1951. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +60 -6
  1952. data/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  1953. data/third_party/abseil-cpp/absl/container/inlined_vector.h +13 -0
  1954. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +20 -11
  1955. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +15 -16
  1956. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +34 -1
  1957. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +68 -1
  1958. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +50 -0
  1959. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +22 -7
  1960. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +26 -8
  1961. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +39 -35
  1962. data/third_party/abseil-cpp/absl/container/internal/layout.h +190 -74
  1963. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +8 -6
  1964. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +334 -71
  1965. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1299 -458
  1966. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +19 -17
  1967. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +4 -3
  1968. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +2 -1
  1969. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +12 -8
  1970. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +1 -1
  1971. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +11 -7
  1972. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +18 -17
  1973. data/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  1974. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  1975. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  1976. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1057 -86
  1977. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +3 -0
  1978. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  1979. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +42 -0
  1980. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +43 -16
  1981. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +8 -7
  1982. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +10 -7
  1983. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  1984. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  1985. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +11 -0
  1986. data/third_party/abseil-cpp/absl/flags/flag.h +2 -0
  1987. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +117 -30
  1988. data/third_party/abseil-cpp/absl/flags/internal/flag.h +192 -30
  1989. data/third_party/abseil-cpp/absl/flags/reflection.cc +10 -0
  1990. data/third_party/abseil-cpp/absl/functional/any_invocable.h +13 -3
  1991. data/third_party/abseil-cpp/absl/functional/bind_front.h +3 -2
  1992. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +7 -7
  1993. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +9 -9
  1994. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -1
  1995. data/third_party/abseil-cpp/absl/hash/internal/hash.h +13 -3
  1996. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +60 -28
  1997. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +4 -0
  1998. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +3 -3
  1999. data/third_party/abseil-cpp/absl/log/globals.h +28 -15
  2000. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +20 -0
  2001. data/third_party/abseil-cpp/absl/log/internal/check_op.h +63 -21
  2002. data/third_party/abseil-cpp/absl/log/internal/conditions.h +2 -2
  2003. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +23 -23
  2004. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +104 -47
  2005. data/third_party/abseil-cpp/absl/log/internal/log_message.h +23 -4
  2006. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -10
  2007. data/third_party/abseil-cpp/absl/log/internal/strip.h +36 -0
  2008. data/third_party/abseil-cpp/absl/log/log.h +5 -1
  2009. data/third_party/abseil-cpp/absl/log/log_sink.h +11 -4
  2010. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +3 -3
  2011. data/third_party/abseil-cpp/absl/meta/type_traits.h +138 -42
  2012. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -3
  2013. data/third_party/abseil-cpp/absl/numeric/int128.h +35 -5
  2014. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +14 -0
  2015. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +18 -0
  2016. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +6 -2
  2017. data/third_party/abseil-cpp/absl/random/beta_distribution.h +8 -8
  2018. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +9 -7
  2019. data/third_party/abseil-cpp/absl/random/distributions.h +11 -11
  2020. data/third_party/abseil-cpp/absl/random/seed_sequences.h +2 -0
  2021. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +61 -2
  2022. data/third_party/abseil-cpp/absl/status/status.cc +0 -4
  2023. data/third_party/abseil-cpp/absl/status/status.h +4 -4
  2024. data/third_party/abseil-cpp/absl/status/statusor.h +108 -142
  2025. data/third_party/abseil-cpp/absl/strings/ascii.cc +32 -71
  2026. data/third_party/abseil-cpp/absl/strings/cord.cc +20 -15
  2027. data/third_party/abseil-cpp/absl/strings/cord.h +68 -7
  2028. data/third_party/abseil-cpp/absl/strings/escaping.cc +96 -21
  2029. data/third_party/abseil-cpp/absl/strings/escaping.h +25 -8
  2030. data/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +1 -0
  2031. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +10 -0
  2032. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +29 -9
  2033. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +2 -2
  2034. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +19 -13
  2035. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +23 -13
  2036. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +24 -24
  2037. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +12 -7
  2038. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +9 -4
  2039. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +5 -2
  2040. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +23 -2
  2041. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +5 -1
  2042. data/third_party/abseil-cpp/absl/strings/numbers.cc +107 -333
  2043. data/third_party/abseil-cpp/absl/strings/numbers.h +12 -151
  2044. data/third_party/abseil-cpp/absl/strings/str_cat.cc +49 -142
  2045. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -85
  2046. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -1
  2047. data/third_party/abseil-cpp/absl/strings/str_join.h +19 -5
  2048. data/third_party/abseil-cpp/absl/strings/str_split.h +2 -2
  2049. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  2050. data/third_party/abseil-cpp/absl/strings/substitute.cc +4 -0
  2051. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -2
  2052. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +5 -0
  2053. data/third_party/abseil-cpp/absl/synchronization/mutex.h +5 -4
  2054. data/third_party/abseil-cpp/absl/time/civil_time.h +2 -2
  2055. data/third_party/abseil-cpp/absl/time/clock.cc +15 -1
  2056. data/third_party/abseil-cpp/absl/time/duration.cc +58 -53
  2057. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  2058. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  2059. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -29
  2060. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  2061. data/third_party/abseil-cpp/absl/time/time.h +73 -29
  2062. data/third_party/abseil-cpp/absl/types/compare.h +505 -0
  2063. data/third_party/abseil-cpp/absl/types/internal/optional.h +2 -2
  2064. data/third_party/abseil-cpp/absl/types/internal/variant.h +55 -67
  2065. data/third_party/abseil-cpp/absl/types/optional.h +15 -18
  2066. data/third_party/abseil-cpp/absl/types/span.h +3 -2
  2067. data/third_party/abseil-cpp/absl/types/variant.h +19 -24
  2068. data/third_party/abseil-cpp/absl/utility/utility.h +3 -41
  2069. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +243 -0
  2070. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.cc +53 -0
  2071. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.cc +47 -0
  2072. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.cc +42 -0
  2073. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.cc +109 -0
  2074. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.cc +43 -0
  2075. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +424 -0
  2076. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.cc +239 -0
  2077. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.cc +193 -0
  2078. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.cc +32 -0
  2079. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.cc +415 -0
  2080. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.cc +206 -0
  2081. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.cc +224 -0
  2082. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.cc +172 -0
  2083. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.cc +109 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.cc +355 -0
  2085. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.cc +61 -0
  2086. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.cc +56 -0
  2087. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.cc +63 -0
  2088. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.cc +52 -0
  2089. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -57
  2090. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.cc +241 -0
  2091. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +932 -0
  2092. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +669 -0
  2093. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.cc +164 -0
  2094. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.cc +276 -0
  2095. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +84 -0
  2096. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.cc +229 -0
  2097. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.cc +434 -0
  2098. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +119 -0
  2099. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.cc +658 -0
  2100. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.cc +268 -0
  2101. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +511 -0
  2102. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.cc +50 -0
  2103. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.cc +193 -0
  2104. data/third_party/boringssl-with-bazel/src/crypto/bio/file.cc +292 -0
  2105. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.cc +152 -0
  2106. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +13 -55
  2107. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.cc +446 -0
  2108. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.cc +59 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +147 -0
  2110. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +133 -0
  2111. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.cc +169 -0
  2112. data/third_party/boringssl-with-bazel/src/crypto/bn/bn_asn1.cc +57 -0
  2113. data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +423 -0
  2114. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.cc +118 -0
  2115. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.cc +53 -0
  2116. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.cc +266 -0
  2117. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +702 -0
  2118. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +912 -0
  2119. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +13 -13
  2120. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.cc +156 -0
  2121. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.cc +224 -0
  2122. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +18 -18
  2123. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +110 -0
  2124. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesctrhmac.cc +279 -0
  2125. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +845 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_chacha20poly1305.cc +341 -0
  2127. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_des.cc +198 -0
  2128. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_null.cc +51 -0
  2129. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc2.cc +417 -0
  2130. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc4.cc +54 -0
  2131. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_tls.cc +599 -0
  2132. data/third_party/boringssl-with-bazel/src/crypto/cipher/get_cipher.cc +85 -0
  2133. data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +240 -0
  2134. data/third_party/boringssl-with-bazel/src/crypto/cipher/tls_cbc.cc +476 -0
  2135. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.cc +631 -0
  2136. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +13 -13
  2137. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +75 -0
  2138. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +55 -0
  2139. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +62 -0
  2140. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +61 -0
  2141. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +94 -0
  2142. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +41 -0
  2143. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +54 -0
  2144. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +151 -0
  2145. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +13 -13
  2146. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +287 -0
  2147. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +183 -0
  2148. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.cc +2154 -0
  2149. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.cc +18 -0
  2150. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +13 -13
  2151. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +13 -13
  2152. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.cc +529 -0
  2153. data/third_party/boringssl-with-bazel/src/crypto/des/des.cc +829 -0
  2154. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +27 -69
  2155. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +124 -0
  2156. data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +442 -0
  2157. data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +306 -0
  2158. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +951 -0
  2159. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +379 -0
  2160. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +13 -13
  2161. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +570 -0
  2162. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_derive.cc +96 -0
  2163. data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +510 -0
  2164. data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +78 -0
  2165. data/third_party/boringssl-with-bazel/src/crypto/ecdh/ecdh.cc +73 -0
  2166. data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +357 -0
  2167. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.cc +95 -0
  2168. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +810 -0
  2169. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +13 -13
  2170. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.cc +379 -0
  2171. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +471 -0
  2172. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +440 -0
  2173. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +13 -55
  2174. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.cc +153 -0
  2175. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.cc +142 -0
  2176. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +279 -0
  2177. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.cc +230 -0
  2178. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +286 -0
  2179. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.cc +103 -0
  2180. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +225 -0
  2181. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.cc +236 -0
  2182. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.cc +609 -0
  2183. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +198 -0
  2184. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.cc +109 -0
  2185. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +237 -0
  2186. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.cc +98 -0
  2187. data/third_party/boringssl-with-bazel/src/crypto/evp/print.cc +342 -0
  2188. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.cc +216 -0
  2189. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +114 -0
  2190. data/third_party/boringssl-with-bazel/src/crypto/ex_data.cc +141 -0
  2191. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +191 -0
  2192. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.cc.inc +1281 -0
  2193. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cbc.cc.inc +130 -0
  2194. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cfb.cc.inc +166 -0
  2195. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ctr.cc.inc +100 -0
  2196. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +604 -0
  2197. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm_nohw.cc.inc +302 -0
  2198. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +450 -75
  2199. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +208 -0
  2200. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +84 -0
  2201. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ofb.cc.inc +53 -0
  2202. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/polyval.cc.inc +89 -0
  2203. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +282 -0
  2204. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +729 -0
  2205. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.cc.inc +269 -0
  2206. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +554 -0
  2207. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.cc.inc +374 -0
  2208. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.cc.inc +225 -0
  2209. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.cc.inc +159 -0
  2210. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.cc.inc +191 -0
  2211. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +825 -0
  2212. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.cc.inc +87 -0
  2213. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +1227 -0
  2214. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +300 -0
  2215. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +339 -0
  2216. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.cc.inc +582 -0
  2217. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +52 -151
  2218. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +108 -0
  2219. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +430 -0
  2220. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.cc.inc +222 -0
  2221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +698 -0
  2222. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +980 -0
  2223. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.cc.inc +260 -0
  2224. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.cc.inc +142 -0
  2225. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +20 -17
  2226. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +320 -0
  2227. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +459 -0
  2228. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.cc.inc +295 -0
  2229. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.cc.inc +672 -0
  2230. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +1242 -0
  2231. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.cc.inc +409 -0
  2232. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +14 -65
  2233. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.cc.inc +288 -0
  2234. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +26 -22
  2235. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +203 -0
  2236. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +443 -0
  2237. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +13 -15
  2238. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +250 -0
  2239. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.cc.inc +178 -0
  2240. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +13 -55
  2241. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +13 -47
  2242. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.cc.inc +226 -0
  2243. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +91 -91
  2244. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +986 -0
  2245. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +501 -0
  2246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.cc.inc +439 -0
  2247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.cc.inc +104 -0
  2248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +19 -66
  2249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +306 -0
  2250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.cc.inc +1163 -0
  2251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +15 -10
  2252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.cc.inc +741 -0
  2253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +87 -25
  2254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.cc.inc +749 -0
  2255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +13 -13
  2256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.cc.inc +179 -0
  2257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +284 -0
  2258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.cc.inc +269 -0
  2259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.cc.inc +255 -0
  2260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.cc.inc +221 -0
  2261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.cc.inc +88 -0
  2262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +278 -0
  2263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +41 -24
  2264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.cc +28 -0
  2265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.cc.inc +112 -0
  2266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.cc.inc +215 -0
  2267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +70 -0
  2268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/keccak.cc.inc +279 -0
  2269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +1993 -0
  2270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +1165 -0
  2271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.cc.inc +214 -0
  2272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +19 -104
  2273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +483 -0
  2274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.cc.inc +147 -0
  2275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +13 -56
  2276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +379 -0
  2277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +983 -0
  2278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1296 -0
  2279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  2280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +1042 -0
  2281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +36 -36
  2282. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +327 -0
  2283. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +51 -60
  2284. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.cc.inc +390 -0
  2285. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.cc.inc +299 -0
  2286. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  2287. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/address.h +119 -0
  2288. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.cc.inc +169 -0
  2289. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.h +58 -0
  2290. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.cc.inc +161 -0
  2291. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.h +70 -0
  2292. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/params.h +78 -0
  2293. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +329 -0
  2294. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.cc.inc +173 -0
  2295. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.h +85 -0
  2296. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.cc.inc +171 -0
  2297. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.h +50 -0
  2298. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +13 -13
  2299. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  2300. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.cc +1095 -0
  2301. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.cc +2185 -0
  2302. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +13 -13
  2303. data/third_party/boringssl-with-bazel/src/crypto/internal.h +323 -449
  2304. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +13 -13
  2305. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.cc +869 -0
  2306. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +31 -75
  2307. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.cc +309 -0
  2308. data/third_party/boringssl-with-bazel/src/crypto/md4/md4.cc +194 -0
  2309. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +37 -0
  2310. data/third_party/boringssl-with-bazel/src/crypto/md5/md5.cc +243 -0
  2311. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +583 -0
  2312. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.cc +90 -0
  2313. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +152 -0
  2314. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +519 -0
  2315. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +18 -57
  2316. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.cc +80 -0
  2317. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +44 -0
  2318. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.cc +149 -0
  2319. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.cc +254 -0
  2320. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +741 -0
  2321. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.cc +45 -0
  2322. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.cc +208 -0
  2323. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.cc +141 -0
  2324. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.cc +22 -0
  2325. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.cc +22 -0
  2326. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +13 -13
  2327. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +193 -0
  2328. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +526 -0
  2329. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +14 -54
  2330. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +275 -0
  2331. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +487 -0
  2332. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +1304 -0
  2333. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +13 -13
  2334. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.cc +314 -0
  2335. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.cc +310 -0
  2336. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.cc +850 -0
  2337. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +13 -13
  2338. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.cc +262 -0
  2339. data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +65 -0
  2340. data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +194 -0
  2341. data/third_party/boringssl-with-bazel/src/crypto/rand/forkunsafe.cc +44 -0
  2342. data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +60 -0
  2343. data/third_party/boringssl-with-bazel/src/crypto/rand/getrandom_fillin.h +64 -0
  2344. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +42 -0
  2345. data/third_party/boringssl-with-bazel/src/crypto/rand/passive.cc +178 -0
  2346. data/third_party/boringssl-with-bazel/src/crypto/rand/rand.cc +77 -0
  2347. data/third_party/boringssl-with-bazel/src/crypto/rand/sysrand_internal.h +37 -0
  2348. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +46 -0
  2349. data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +328 -0
  2350. data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +102 -0
  2351. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.cc +56 -0
  2352. data/third_party/boringssl-with-bazel/src/crypto/refcount.cc +59 -0
  2353. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +36 -0
  2354. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_asn1.cc +283 -0
  2355. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +531 -0
  2356. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_extra.cc +19 -0
  2357. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_print.cc +27 -0
  2358. data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
  2359. data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
  2360. data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
  2361. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.cc +79 -0
  2362. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +113 -0
  2363. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +204 -0
  2364. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/spake2plus.cc +501 -0
  2365. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.cc +496 -0
  2366. data/third_party/boringssl-with-bazel/src/crypto/thread.cc +68 -0
  2367. data/third_party/boringssl-with-bazel/src/crypto/thread_none.cc +51 -0
  2368. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.cc +151 -0
  2369. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +240 -0
  2370. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +13 -13
  2371. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.cc +1656 -0
  2372. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.cc +685 -0
  2373. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.cc +1263 -0
  2374. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.cc +52 -0
  2375. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +97 -0
  2376. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.cc +74 -0
  2377. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.cc +136 -0
  2378. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +542 -0
  2379. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.cc +355 -0
  2380. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.cc +227 -0
  2381. data/third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h +13 -55
  2382. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.cc +37 -0
  2383. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +13 -61
  2384. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.cc +185 -0
  2385. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.cc +796 -0
  2386. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.cc +364 -0
  2387. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.cc +103 -0
  2388. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.cc +203 -0
  2389. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.cc +287 -0
  2390. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.cc +79 -0
  2391. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.cc +181 -0
  2392. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.cc +31 -0
  2393. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.cc +593 -0
  2394. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.cc +95 -0
  2395. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.cc +102 -0
  2396. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +374 -0
  2397. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.cc +444 -0
  2398. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.cc +557 -0
  2399. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.cc +73 -0
  2400. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.cc +114 -0
  2401. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.cc +228 -0
  2402. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.cc +79 -0
  2403. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +164 -0
  2404. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.cc +81 -0
  2405. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.cc +304 -0
  2406. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.cc +514 -0
  2407. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.cc +89 -0
  2408. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.cc +101 -0
  2409. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.cc +109 -0
  2410. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.cc +183 -0
  2411. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.cc +590 -0
  2412. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.cc +131 -0
  2413. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.cc +1342 -0
  2414. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.cc +47 -0
  2415. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.cc +186 -0
  2416. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.cc +238 -0
  2417. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.cc +66 -0
  2418. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.cc +44 -0
  2419. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.cc +139 -0
  2420. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.cc +554 -0
  2421. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.cc +164 -0
  2422. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.cc +257 -0
  2423. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.cc +198 -0
  2424. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.cc +118 -0
  2425. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.cc +147 -0
  2426. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.cc +249 -0
  2427. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +1600 -0
  2428. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.cc +440 -0
  2429. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.cc +235 -0
  2430. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.cc +365 -0
  2431. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.cc +67 -0
  2432. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.cc +91 -0
  2433. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +107 -0
  2434. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.cc +318 -0
  2435. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.cc +55 -0
  2436. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.cc +342 -0
  2437. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.cc +36 -0
  2438. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +492 -0
  2439. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.cc +170 -0
  2440. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.cc +74 -0
  2441. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.cc +51 -0
  2442. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.cc +34 -0
  2443. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.cc +28 -0
  2444. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +506 -0
  2445. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +169 -0
  2446. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +1529 -0
  2447. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -13
  2448. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +13 -47
  2449. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +13 -51
  2450. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +14 -14
  2451. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +37 -63
  2452. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +13 -13
  2453. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +248 -328
  2454. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +24 -55
  2455. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +13 -55
  2456. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
  2457. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -61
  2458. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +13 -13
  2459. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +13 -55
  2460. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +28 -130
  2461. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +13 -55
  2462. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +13 -13
  2463. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +31 -16
  2464. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +13 -55
  2465. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +13 -13
  2466. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +31 -59
  2467. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +13 -13
  2468. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +13 -55
  2469. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +13 -13
  2470. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -25
  2471. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +13 -13
  2472. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +13 -13
  2473. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +13 -55
  2474. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -55
  2475. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -56
  2476. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -58
  2477. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +13 -13
  2478. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +13 -13
  2479. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +14 -66
  2480. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +31 -72
  2481. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +14 -65
  2482. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +13 -51
  2483. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +13 -13
  2484. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -107
  2485. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +14 -56
  2486. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +13 -55
  2487. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +13 -107
  2488. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +23 -13
  2489. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +13 -13
  2490. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +13 -55
  2491. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +21 -19
  2492. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +13 -13
  2493. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +13 -13
  2494. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +13 -13
  2495. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +13 -55
  2496. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +13 -55
  2497. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +13 -55
  2498. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +13 -55
  2499. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +130 -0
  2500. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +222 -0
  2501. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +30 -69
  2502. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +13 -55
  2503. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +13 -13
  2504. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +13 -13
  2505. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +13 -13
  2506. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +13 -13
  2507. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +13 -13
  2508. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +25 -64
  2509. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +13 -13
  2510. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +13 -13
  2511. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +13 -55
  2512. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +13 -13
  2513. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +13 -13
  2514. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +13 -13
  2515. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -13
  2516. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +13 -55
  2517. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +13 -55
  2518. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +23 -63
  2519. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +13 -13
  2520. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +15 -15
  2521. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +15 -95
  2522. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +13 -13
  2523. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +174 -0
  2524. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +60 -32
  2525. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +13 -13
  2526. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +465 -317
  2527. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +15 -114
  2528. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +13 -55
  2529. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +23 -13
  2530. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +15 -57
  2531. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +13 -13
  2532. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -156
  2533. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +15 -15
  2534. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +13 -55
  2535. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +14 -84
  2536. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +13 -13
  2537. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +13 -13
  2538. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +13 -53
  2539. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +15 -14
  2540. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +684 -441
  2541. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +129 -168
  2542. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +177 -127
  2543. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +21 -127
  2544. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +112 -97
  2545. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +456 -222
  2546. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +54 -47
  2547. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +701 -491
  2548. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +66 -73
  2549. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +61 -153
  2550. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +234 -335
  2551. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +104 -216
  2552. data/third_party/boringssl-with-bazel/src/ssl/internal.h +1009 -504
  2553. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +87 -169
  2554. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +29 -159
  2555. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +39 -113
  2556. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +103 -111
  2557. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +52 -145
  2558. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +22 -24
  2559. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +117 -157
  2560. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +229 -365
  2561. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +216 -31
  2562. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +13 -109
  2563. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +128 -32
  2564. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +244 -360
  2565. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +97 -103
  2566. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +101 -236
  2567. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +17 -91
  2568. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +109 -157
  2569. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +48 -28
  2570. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +66 -195
  2571. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -176
  2572. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +60 -43
  2573. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +152 -86
  2574. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +296 -163
  2575. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +247 -108
  2576. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +64 -117
  2577. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +55 -157
  2578. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
  2579. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
  2580. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
  2581. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
  2582. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
  2583. data/third_party/upb/upb/base/string_view.h +1 -1
  2584. data/third_party/upb/upb/json/decode.c +60 -13
  2585. data/third_party/upb/upb/json/decode.h +26 -3
  2586. data/third_party/upb/upb/json/encode.c +2 -2
  2587. data/third_party/upb/upb/lex/round_trip.c +10 -0
  2588. data/third_party/upb/upb/mem/arena.c +80 -4
  2589. data/third_party/upb/upb/mem/arena.h +20 -9
  2590. data/third_party/upb/upb/mem/arena.hpp +5 -1
  2591. data/third_party/upb/upb/mem/internal/arena.h +11 -8
  2592. data/third_party/upb/upb/message/accessors.c +6 -7
  2593. data/third_party/upb/upb/message/accessors.h +186 -376
  2594. data/third_party/upb/upb/message/array.c +26 -3
  2595. data/third_party/upb/upb/message/array.h +17 -9
  2596. data/third_party/upb/upb/message/compat.c +5 -5
  2597. data/third_party/upb/upb/message/compat.h +3 -3
  2598. data/third_party/upb/upb/message/copy.c +23 -20
  2599. data/third_party/upb/upb/message/internal/accessors.h +617 -55
  2600. data/third_party/upb/upb/message/internal/array.h +23 -15
  2601. data/third_party/upb/upb/message/internal/compare_unknown.c +289 -0
  2602. data/third_party/upb/upb/message/internal/compare_unknown.h +49 -0
  2603. data/third_party/upb/upb/message/internal/extension.c +12 -12
  2604. data/third_party/upb/upb/message/internal/extension.h +9 -12
  2605. data/third_party/upb/upb/message/internal/map.h +15 -0
  2606. data/third_party/upb/upb/message/internal/map_sorter.h +4 -5
  2607. data/third_party/upb/upb/message/internal/message.c +22 -6
  2608. data/third_party/upb/upb/message/internal/message.h +11 -0
  2609. data/third_party/upb/upb/message/internal/tagged_ptr.h +5 -5
  2610. data/third_party/upb/upb/message/internal/types.h +41 -1
  2611. data/third_party/upb/upb/message/map.c +25 -0
  2612. data/third_party/upb/upb/message/map.h +11 -7
  2613. data/third_party/upb/upb/message/merge.c +38 -0
  2614. data/third_party/upb/upb/message/merge.h +26 -0
  2615. data/third_party/upb/upb/message/message.c +83 -4
  2616. data/third_party/upb/upb/message/message.h +16 -1
  2617. data/third_party/upb/upb/message/tagged_ptr.h +4 -8
  2618. data/third_party/upb/upb/message/value.h +26 -0
  2619. data/third_party/upb/upb/mini_descriptor/build_enum.c +3 -3
  2620. data/third_party/upb/upb/mini_descriptor/build_enum.h +6 -14
  2621. data/third_party/upb/upb/mini_descriptor/decode.c +19 -3
  2622. data/third_party/upb/upb/mini_descriptor/link.c +23 -21
  2623. data/third_party/upb/upb/mini_table/enum.h +2 -4
  2624. data/third_party/upb/upb/mini_table/extension.h +4 -12
  2625. data/third_party/upb/upb/mini_table/extension_registry.c +18 -0
  2626. data/third_party/upb/upb/mini_table/extension_registry.h +17 -0
  2627. data/third_party/upb/upb/mini_table/field.h +12 -38
  2628. data/third_party/upb/upb/mini_table/file.h +6 -19
  2629. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  2630. data/third_party/upb/upb/mini_table/internal/extension.h +18 -9
  2631. data/third_party/upb/upb/mini_table/internal/field.h +23 -23
  2632. data/third_party/upb/upb/mini_table/internal/file.h +7 -7
  2633. data/third_party/upb/upb/mini_table/internal/message.c +21 -1
  2634. data/third_party/upb/upb/mini_table/internal/message.h +80 -36
  2635. data/third_party/upb/upb/mini_table/internal/sub.h +9 -4
  2636. data/third_party/upb/upb/mini_table/message.h +23 -22
  2637. data/third_party/upb/upb/mini_table/sub.h +4 -12
  2638. data/third_party/upb/upb/port/def.inc +108 -12
  2639. data/third_party/upb/upb/port/undef.inc +8 -1
  2640. data/third_party/upb/upb/reflection/common.h +1 -11
  2641. data/third_party/upb/upb/reflection/def.hpp +35 -0
  2642. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  2643. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2644. data/third_party/upb/upb/reflection/enum_def.c +5 -1
  2645. data/third_party/upb/upb/reflection/enum_def.h +1 -0
  2646. data/third_party/upb/upb/reflection/enum_value_def.c +3 -8
  2647. data/third_party/upb/upb/reflection/field_def.c +72 -46
  2648. data/third_party/upb/upb/reflection/field_def.h +4 -0
  2649. data/third_party/upb/upb/reflection/file_def.c +30 -4
  2650. data/third_party/upb/upb/reflection/file_def.h +3 -0
  2651. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2652. data/third_party/upb/upb/reflection/message.c +26 -9
  2653. data/third_party/upb/upb/reflection/message.h +2 -2
  2654. data/third_party/upb/upb/reflection/message_def.c +14 -9
  2655. data/third_party/upb/upb/reflection/method_def.h +8 -7
  2656. data/third_party/upb/upb/reflection/service_def.h +6 -5
  2657. data/third_party/upb/upb/text/encode.c +53 -389
  2658. data/third_party/upb/upb/text/encode.h +1 -11
  2659. data/third_party/upb/upb/text/internal/encode.c +180 -0
  2660. data/third_party/upb/upb/text/internal/encode.h +240 -0
  2661. data/third_party/upb/upb/text/options.h +22 -0
  2662. data/third_party/upb/upb/wire/decode.c +160 -94
  2663. data/third_party/upb/upb/wire/decode.h +15 -2
  2664. data/third_party/upb/upb/wire/encode.c +89 -48
  2665. data/third_party/upb/upb/wire/encode.h +12 -1
  2666. data/third_party/upb/upb/wire/eps_copy_input_stream.h +3 -3
  2667. data/third_party/upb/upb/wire/internal/decode_fast.c +28 -29
  2668. data/third_party/upb/upb/wire/internal/reader.h +3 -3
  2669. data/third_party/upb/upb/wire/reader.c +1 -2
  2670. data/third_party/upb/upb/wire/reader.h +4 -8
  2671. metadata +642 -545
  2672. data/src/core/client_channel/config_selector.cc +0 -60
  2673. data/src/core/ext/gcp/metadata_query.cc +0 -137
  2674. data/src/core/ext/gcp/metadata_query.h +0 -87
  2675. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  2676. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  2677. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +0 -45
  2678. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +0 -67
  2679. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  2680. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -419
  2681. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -81
  2682. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -30
  2683. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -400
  2684. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -106
  2685. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -33
  2686. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -104
  2687. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -32
  2688. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -66
  2689. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -47
  2690. data/src/core/handshaker/security/tsi_error.cc +0 -31
  2691. data/src/core/handshaker/security/tsi_error.h +0 -30
  2692. data/src/core/lib/avl/avl.h +0 -325
  2693. data/src/core/lib/backoff/backoff.cc +0 -47
  2694. data/src/core/lib/backoff/backoff.h +0 -89
  2695. data/src/core/lib/backoff/random_early_detection.cc +0 -33
  2696. data/src/core/lib/backoff/random_early_detection.h +0 -62
  2697. data/src/core/lib/channel/call_tracer.cc +0 -364
  2698. data/src/core/lib/channel/call_tracer.h +0 -226
  2699. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  2700. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  2701. data/src/core/lib/channel/context.h +0 -105
  2702. data/src/core/lib/channel/metrics.cc +0 -334
  2703. data/src/core/lib/channel/metrics.h +0 -365
  2704. data/src/core/lib/channel/tcp_tracer.h +0 -144
  2705. data/src/core/lib/config/config_vars.cc +0 -154
  2706. data/src/core/lib/config/config_vars.h +0 -131
  2707. data/src/core/lib/config/config_vars_non_generated.cc +0 -49
  2708. data/src/core/lib/config/core_configuration.cc +0 -112
  2709. data/src/core/lib/config/core_configuration.h +0 -244
  2710. data/src/core/lib/config/load_config.cc +0 -79
  2711. data/src/core/lib/config/load_config.h +0 -55
  2712. data/src/core/lib/debug/event_log.cc +0 -88
  2713. data/src/core/lib/debug/event_log.h +0 -81
  2714. data/src/core/lib/debug/histogram_view.cc +0 -69
  2715. data/src/core/lib/debug/histogram_view.h +0 -37
  2716. data/src/core/lib/debug/stats.cc +0 -68
  2717. data/src/core/lib/debug/stats.h +0 -64
  2718. data/src/core/lib/debug/stats_data.cc +0 -752
  2719. data/src/core/lib/debug/stats_data.h +0 -579
  2720. data/src/core/lib/event_engine/trace.cc +0 -25
  2721. data/src/core/lib/event_engine/trace.h +0 -48
  2722. data/src/core/lib/gpr/alloc.cc +0 -73
  2723. data/src/core/lib/gpr/alloc.h +0 -28
  2724. data/src/core/lib/gpr/android/log.cc +0 -79
  2725. data/src/core/lib/gpr/atm.cc +0 -35
  2726. data/src/core/lib/gpr/iphone/cpu.cc +0 -44
  2727. data/src/core/lib/gpr/linux/cpu.cc +0 -87
  2728. data/src/core/lib/gpr/linux/log.cc +0 -114
  2729. data/src/core/lib/gpr/log.cc +0 -166
  2730. data/src/core/lib/gpr/msys/tmpfile.cc +0 -59
  2731. data/src/core/lib/gpr/posix/cpu.cc +0 -84
  2732. data/src/core/lib/gpr/posix/log.cc +0 -111
  2733. data/src/core/lib/gpr/posix/string.cc +0 -72
  2734. data/src/core/lib/gpr/posix/sync.cc +0 -161
  2735. data/src/core/lib/gpr/posix/time.cc +0 -125
  2736. data/src/core/lib/gpr/posix/tmpfile.cc +0 -73
  2737. data/src/core/lib/gpr/spinlock.h +0 -53
  2738. data/src/core/lib/gpr/string.cc +0 -344
  2739. data/src/core/lib/gpr/string.h +0 -112
  2740. data/src/core/lib/gpr/sync.cc +0 -126
  2741. data/src/core/lib/gpr/sync_abseil.cc +0 -110
  2742. data/src/core/lib/gpr/time.cc +0 -271
  2743. data/src/core/lib/gpr/time_precise.cc +0 -168
  2744. data/src/core/lib/gpr/time_precise.h +0 -69
  2745. data/src/core/lib/gpr/tmpfile.h +0 -32
  2746. data/src/core/lib/gpr/useful.h +0 -184
  2747. data/src/core/lib/gpr/windows/cpu.cc +0 -35
  2748. data/src/core/lib/gpr/windows/log.cc +0 -116
  2749. data/src/core/lib/gpr/windows/string.cc +0 -69
  2750. data/src/core/lib/gpr/windows/string_util.cc +0 -55
  2751. data/src/core/lib/gpr/windows/sync.cc +0 -124
  2752. data/src/core/lib/gpr/windows/time.cc +0 -108
  2753. data/src/core/lib/gpr/windows/tmpfile.cc +0 -68
  2754. data/src/core/lib/gprpp/atomic_utils.h +0 -47
  2755. data/src/core/lib/gprpp/bitset.h +0 -225
  2756. data/src/core/lib/gprpp/chunked_vector.h +0 -258
  2757. data/src/core/lib/gprpp/construct_destruct.h +0 -40
  2758. data/src/core/lib/gprpp/cpp_impl_of.h +0 -49
  2759. data/src/core/lib/gprpp/crash.cc +0 -42
  2760. data/src/core/lib/gprpp/crash.h +0 -37
  2761. data/src/core/lib/gprpp/debug_location.h +0 -99
  2762. data/src/core/lib/gprpp/directory_reader.h +0 -48
  2763. data/src/core/lib/gprpp/down_cast.h +0 -49
  2764. data/src/core/lib/gprpp/dual_ref_counted.h +0 -365
  2765. data/src/core/lib/gprpp/env.h +0 -53
  2766. data/src/core/lib/gprpp/examine_stack.cc +0 -43
  2767. data/src/core/lib/gprpp/examine_stack.h +0 -45
  2768. data/src/core/lib/gprpp/fork.cc +0 -241
  2769. data/src/core/lib/gprpp/fork.h +0 -98
  2770. data/src/core/lib/gprpp/host_port.cc +0 -116
  2771. data/src/core/lib/gprpp/host_port.h +0 -57
  2772. data/src/core/lib/gprpp/if_list.h +0 -4530
  2773. data/src/core/lib/gprpp/linux/env.cc +0 -62
  2774. data/src/core/lib/gprpp/load_file.cc +0 -77
  2775. data/src/core/lib/gprpp/load_file.h +0 -34
  2776. data/src/core/lib/gprpp/manual_constructor.h +0 -146
  2777. data/src/core/lib/gprpp/match.h +0 -75
  2778. data/src/core/lib/gprpp/memory.h +0 -52
  2779. data/src/core/lib/gprpp/mpscq.cc +0 -108
  2780. data/src/core/lib/gprpp/mpscq.h +0 -100
  2781. data/src/core/lib/gprpp/no_destruct.h +0 -95
  2782. data/src/core/lib/gprpp/notification.h +0 -67
  2783. data/src/core/lib/gprpp/orphanable.h +0 -153
  2784. data/src/core/lib/gprpp/overload.h +0 -59
  2785. data/src/core/lib/gprpp/packed_table.h +0 -40
  2786. data/src/core/lib/gprpp/per_cpu.cc +0 -34
  2787. data/src/core/lib/gprpp/per_cpu.h +0 -103
  2788. data/src/core/lib/gprpp/posix/directory_reader.cc +0 -82
  2789. data/src/core/lib/gprpp/posix/env.cc +0 -47
  2790. data/src/core/lib/gprpp/posix/stat.cc +0 -56
  2791. data/src/core/lib/gprpp/posix/thd.cc +0 -247
  2792. data/src/core/lib/gprpp/ref_counted.h +0 -395
  2793. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -445
  2794. data/src/core/lib/gprpp/ref_counted_string.cc +0 -43
  2795. data/src/core/lib/gprpp/ref_counted_string.h +0 -161
  2796. data/src/core/lib/gprpp/single_set_ptr.h +0 -88
  2797. data/src/core/lib/gprpp/sorted_pack.h +0 -89
  2798. data/src/core/lib/gprpp/stat.h +0 -36
  2799. data/src/core/lib/gprpp/status_helper.cc +0 -453
  2800. data/src/core/lib/gprpp/status_helper.h +0 -190
  2801. data/src/core/lib/gprpp/strerror.cc +0 -41
  2802. data/src/core/lib/gprpp/strerror.h +0 -29
  2803. data/src/core/lib/gprpp/sync.h +0 -200
  2804. data/src/core/lib/gprpp/table.h +0 -452
  2805. data/src/core/lib/gprpp/tchar.cc +0 -49
  2806. data/src/core/lib/gprpp/tchar.h +0 -33
  2807. data/src/core/lib/gprpp/thd.h +0 -195
  2808. data/src/core/lib/gprpp/time.cc +0 -242
  2809. data/src/core/lib/gprpp/time.h +0 -384
  2810. data/src/core/lib/gprpp/time_averaged_stats.cc +0 -60
  2811. data/src/core/lib/gprpp/time_averaged_stats.h +0 -79
  2812. data/src/core/lib/gprpp/time_util.cc +0 -82
  2813. data/src/core/lib/gprpp/time_util.h +0 -41
  2814. data/src/core/lib/gprpp/type_list.h +0 -32
  2815. data/src/core/lib/gprpp/unique_type_name.h +0 -104
  2816. data/src/core/lib/gprpp/uuid_v4.cc +0 -37
  2817. data/src/core/lib/gprpp/uuid_v4.h +0 -36
  2818. data/src/core/lib/gprpp/validation_errors.cc +0 -65
  2819. data/src/core/lib/gprpp/validation_errors.h +0 -134
  2820. data/src/core/lib/gprpp/windows/directory_reader.cc +0 -81
  2821. data/src/core/lib/gprpp/windows/env.cc +0 -56
  2822. data/src/core/lib/gprpp/windows/stat.cc +0 -52
  2823. data/src/core/lib/gprpp/windows/thd.cc +0 -184
  2824. data/src/core/lib/gprpp/work_serializer.cc +0 -558
  2825. data/src/core/lib/gprpp/work_serializer.h +0 -106
  2826. data/src/core/lib/gprpp/xxhash_inline.h +0 -29
  2827. data/src/core/lib/http/format_request.cc +0 -136
  2828. data/src/core/lib/http/format_request.h +0 -37
  2829. data/src/core/lib/http/httpcli.cc +0 -392
  2830. data/src/core/lib/http/httpcli.h +0 -267
  2831. data/src/core/lib/http/httpcli_security_connector.cc +0 -213
  2832. data/src/core/lib/http/httpcli_ssl_credentials.h +0 -38
  2833. data/src/core/lib/http/parser.cc +0 -451
  2834. data/src/core/lib/http/parser.h +0 -129
  2835. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  2836. data/src/core/lib/iomgr/gethostname.h +0 -26
  2837. data/src/core/lib/iomgr/gethostname_fallback.cc +0 -30
  2838. data/src/core/lib/iomgr/gethostname_host_name_max.cc +0 -40
  2839. data/src/core/lib/iomgr/gethostname_sysconf.cc +0 -40
  2840. data/src/core/lib/iomgr/grpc_if_nametoindex.h +0 -30
  2841. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +0 -43
  2842. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +0 -39
  2843. data/src/core/lib/json/json.h +0 -29
  2844. data/src/core/lib/json/json_args.h +0 -34
  2845. data/src/core/lib/json/json_channel_args.h +0 -42
  2846. data/src/core/lib/json/json_object_loader.cc +0 -215
  2847. data/src/core/lib/json/json_object_loader.h +0 -645
  2848. data/src/core/lib/json/json_reader.cc +0 -956
  2849. data/src/core/lib/json/json_reader.h +0 -34
  2850. data/src/core/lib/json/json_util.cc +0 -101
  2851. data/src/core/lib/json/json_util.h +0 -164
  2852. data/src/core/lib/json/json_writer.cc +0 -339
  2853. data/src/core/lib/json/json_writer.h +0 -33
  2854. data/src/core/lib/matchers/matchers.cc +0 -330
  2855. data/src/core/lib/matchers/matchers.h +0 -163
  2856. data/src/core/lib/promise/trace.cc +0 -20
  2857. data/src/core/lib/promise/trace.h +0 -24
  2858. data/src/core/lib/resource_quota/trace.cc +0 -19
  2859. data/src/core/lib/resource_quota/trace.h +0 -24
  2860. data/src/core/lib/slice/slice_refcount.cc +0 -20
  2861. data/src/core/lib/surface/api_trace.cc +0 -25
  2862. data/src/core/lib/surface/api_trace.h +0 -52
  2863. data/src/core/lib/surface/call_trace.h +0 -24
  2864. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  2865. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  2866. data/src/core/lib/transport/batch_builder.cc +0 -172
  2867. data/src/core/lib/transport/batch_builder.h +0 -474
  2868. data/src/core/lib/uri/uri_parser.cc +0 -372
  2869. data/src/core/lib/uri/uri_parser.h +0 -101
  2870. data/src/core/resolver/binder/binder_resolver.cc +0 -154
  2871. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  2872. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  2873. data/src/core/xds/grpc/upb_utils.h +0 -45
  2874. data/src/core/xds/grpc/xds_http_filters.cc +0 -116
  2875. data/src/core/xds/grpc/xds_http_filters.h +0 -182
  2876. data/src/core/xds/xds_client/xds_client_stats.cc +0 -174
  2877. data/src/core/xds/xds_client/xds_client_stats.h +0 -258
  2878. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +0 -44
  2879. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +0 -284
  2880. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +0 -95
  2881. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -89
  2882. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +0 -84
  2883. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +0 -151
  2884. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +0 -85
  2885. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +0 -465
  2886. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +0 -279
  2887. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +0 -235
  2888. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +0 -74
  2889. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +0 -457
  2890. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +0 -245
  2891. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +0 -259
  2892. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +0 -214
  2893. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -183
  2894. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -397
  2895. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +0 -103
  2896. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +0 -98
  2897. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +0 -105
  2898. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +0 -94
  2899. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +0 -241
  2900. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +0 -973
  2901. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +0 -708
  2902. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +0 -212
  2903. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +0 -317
  2904. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -126
  2905. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +0 -268
  2906. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +0 -475
  2907. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +0 -726
  2908. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +0 -309
  2909. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +0 -544
  2910. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +0 -92
  2911. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -235
  2912. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +0 -334
  2913. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c +0 -192
  2914. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +0 -480
  2915. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -102
  2916. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +0 -189
  2917. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +0 -133
  2918. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +0 -169
  2919. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +0 -57
  2920. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +0 -465
  2921. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +0 -158
  2922. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +0 -53
  2923. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +0 -266
  2924. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +0 -718
  2925. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +0 -913
  2926. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +0 -156
  2927. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -224
  2928. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +0 -127
  2929. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +0 -152
  2930. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +0 -284
  2931. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +0 -841
  2932. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -341
  2933. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +0 -228
  2934. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +0 -90
  2935. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +0 -455
  2936. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +0 -94
  2937. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +0 -598
  2938. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +0 -237
  2939. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +0 -514
  2940. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +0 -647
  2941. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  2942. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +0 -75
  2943. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -55
  2944. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -62
  2945. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -61
  2946. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +0 -93
  2947. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +0 -41
  2948. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -54
  2949. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -148
  2950. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -292
  2951. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +0 -242
  2952. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +0 -2157
  2953. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +0 -18
  2954. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +0 -523
  2955. data/third_party/boringssl-with-bazel/src/crypto/des/des.c +0 -871
  2956. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +0 -165
  2957. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +0 -480
  2958. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -266
  2959. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +0 -990
  2960. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -421
  2961. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +0 -572
  2962. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +0 -96
  2963. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +0 -508
  2964. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -78
  2965. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +0 -124
  2966. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +0 -265
  2967. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +0 -91
  2968. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +0 -903
  2969. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +0 -430
  2970. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +0 -547
  2971. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +0 -483
  2972. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +0 -137
  2973. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +0 -120
  2974. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +0 -338
  2975. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +0 -274
  2976. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +0 -332
  2977. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +0 -100
  2978. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +0 -224
  2979. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +0 -232
  2980. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +0 -646
  2981. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +0 -241
  2982. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +0 -106
  2983. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +0 -236
  2984. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +0 -146
  2985. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +0 -381
  2986. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +0 -209
  2987. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +0 -156
  2988. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +0 -236
  2989. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -106
  2990. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +0 -1281
  2991. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +0 -242
  2992. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +0 -124
  2993. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +0 -275
  2994. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c +0 -310
  2995. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -541
  2996. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +0 -428
  2997. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +0 -267
  2998. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +0 -201
  2999. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -234
  3000. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +0 -909
  3001. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +0 -87
  3002. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +0 -1276
  3003. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -397
  3004. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +0 -331
  3005. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +0 -624
  3006. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c +0 -146
  3007. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +0 -532
  3008. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +0 -222
  3009. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +0 -744
  3010. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -1077
  3011. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +0 -356
  3012. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +0 -137
  3013. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +0 -363
  3014. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +0 -499
  3015. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +0 -287
  3016. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +0 -717
  3017. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +0 -1463
  3018. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.c +0 -446
  3019. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.c +0 -322
  3020. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +0 -245
  3021. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +0 -489
  3022. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +0 -288
  3023. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +0 -304
  3024. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.c +0 -267
  3025. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +0 -1043
  3026. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -557
  3027. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +0 -491
  3028. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +0 -104
  3029. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +0 -359
  3030. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +0 -1163
  3031. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +0 -637
  3032. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +0 -749
  3033. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +0 -173
  3034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +0 -336
  3035. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +0 -269
  3036. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +0 -255
  3037. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -264
  3038. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +0 -130
  3039. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +0 -372
  3040. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +0 -32
  3041. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +0 -112
  3042. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +0 -256
  3043. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +0 -240
  3044. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +0 -37
  3045. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +0 -284
  3046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +0 -164
  3047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +0 -200
  3048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +0 -196
  3049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +0 -743
  3050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +0 -302
  3051. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +0 -428
  3052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +0 -87
  3053. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +0 -90
  3054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +0 -220
  3055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +0 -197
  3056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +0 -68
  3057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +0 -64
  3058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -493
  3059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -328
  3060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -241
  3061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +0 -423
  3062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +0 -1038
  3063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +0 -1351
  3064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +0 -119
  3065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +0 -1064
  3066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +0 -328
  3067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +0 -439
  3068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +0 -359
  3069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +0 -537
  3070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +0 -218
  3071. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +0 -801
  3072. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +0 -2234
  3073. data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +0 -70
  3074. data/third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c +0 -279
  3075. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +0 -844
  3076. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +0 -350
  3077. data/third_party/boringssl-with-bazel/src/crypto/mem.c +0 -609
  3078. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +0 -564
  3079. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c +0 -122
  3080. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -243
  3081. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -294
  3082. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -790
  3083. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +0 -87
  3084. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -251
  3085. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -183
  3086. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -64
  3087. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -64
  3088. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +0 -193
  3089. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -523
  3090. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +0 -316
  3091. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -527
  3092. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +0 -1352
  3093. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +0 -314
  3094. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +0 -308
  3095. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +0 -847
  3096. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +0 -261
  3097. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +0 -57
  3098. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +0 -44
  3099. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +0 -52
  3100. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +0 -34
  3101. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +0 -158
  3102. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +0 -74
  3103. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +0 -38
  3104. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +0 -95
  3105. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c +0 -98
  3106. data/third_party/boringssl-with-bazel/src/crypto/refcount.c +0 -59
  3107. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +0 -77
  3108. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +0 -324
  3109. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +0 -570
  3110. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +0 -22
  3111. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +0 -79
  3112. data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
  3113. data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
  3114. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
  3115. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
  3116. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
  3117. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
  3118. data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
  3119. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
  3120. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
  3121. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
  3122. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
  3123. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
  3124. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
  3125. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
  3126. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +0 -534
  3127. data/third_party/boringssl-with-bazel/src/crypto/thread.c +0 -110
  3128. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -51
  3129. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -150
  3130. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +0 -236
  3131. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +0 -1668
  3132. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +0 -687
  3133. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +0 -1267
  3134. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +0 -94
  3135. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +0 -136
  3136. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +0 -116
  3137. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -178
  3138. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +0 -585
  3139. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +0 -400
  3140. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -269
  3141. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +0 -79
  3142. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +0 -227
  3143. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +0 -786
  3144. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +0 -401
  3145. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -145
  3146. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +0 -245
  3147. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -329
  3148. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +0 -121
  3149. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c +0 -221
  3150. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c +0 -73
  3151. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c +0 -634
  3152. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c +0 -135
  3153. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c +0 -141
  3154. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c +0 -416
  3155. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +0 -482
  3156. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +0 -598
  3157. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c +0 -112
  3158. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c +0 -154
  3159. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c +0 -270
  3160. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c +0 -122
  3161. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +0 -211
  3162. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c +0 -121
  3163. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +0 -344
  3164. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c +0 -555
  3165. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c +0 -81
  3166. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c +0 -142
  3167. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c +0 -150
  3168. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c +0 -224
  3169. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c +0 -624
  3170. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c +0 -170
  3171. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +0 -1357
  3172. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -89
  3173. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -227
  3174. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +0 -280
  3175. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +0 -108
  3176. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +0 -86
  3177. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +0 -181
  3178. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -609
  3179. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +0 -206
  3180. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +0 -299
  3181. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +0 -240
  3182. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +0 -160
  3183. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +0 -189
  3184. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +0 -291
  3185. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +0 -1648
  3186. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +0 -440
  3187. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +0 -277
  3188. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +0 -407
  3189. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +0 -109
  3190. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +0 -133
  3191. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +0 -149
  3192. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -356
  3193. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +0 -97
  3194. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +0 -384
  3195. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +0 -78
  3196. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +0 -527
  3197. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -210
  3198. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +0 -116
  3199. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +0 -93
  3200. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +0 -79
  3201. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +0 -70
  3202. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +0 -544
  3203. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +0 -209
  3204. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.c +0 -1514
  3205. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
@@ -18,6 +18,19 @@
18
18
 
19
19
  #include "src/core/lib/surface/call.h"
20
20
 
21
+ #include <grpc/byte_buffer.h>
22
+ #include <grpc/compression.h>
23
+ #include <grpc/event_engine/event_engine.h>
24
+ #include <grpc/grpc.h>
25
+ #include <grpc/impl/call.h>
26
+ #include <grpc/impl/propagation_bits.h>
27
+ #include <grpc/slice.h>
28
+ #include <grpc/slice_buffer.h>
29
+ #include <grpc/status.h>
30
+ #include <grpc/support/alloc.h>
31
+ #include <grpc/support/atm.h>
32
+ #include <grpc/support/port_platform.h>
33
+ #include <grpc/support/string_util.h>
21
34
  #include <inttypes.h>
22
35
  #include <limits.h>
23
36
  #include <stdlib.h>
@@ -25,8 +38,10 @@
25
38
 
26
39
  #include <algorithm>
27
40
  #include <atomic>
41
+ #include <cstdint>
28
42
  #include <memory>
29
43
  #include <new>
44
+ #include <queue>
30
45
  #include <string>
31
46
  #include <type_traits>
32
47
  #include <utility>
@@ -34,58 +49,29 @@
34
49
 
35
50
  #include "absl/base/thread_annotations.h"
36
51
  #include "absl/log/check.h"
52
+ #include "absl/log/log.h"
37
53
  #include "absl/status/status.h"
38
54
  #include "absl/strings/str_cat.h"
39
55
  #include "absl/strings/str_format.h"
40
56
  #include "absl/strings/str_join.h"
41
57
  #include "absl/strings/string_view.h"
42
-
43
- #include <grpc/byte_buffer.h>
44
- #include <grpc/compression.h>
45
- #include <grpc/event_engine/event_engine.h>
46
- #include <grpc/grpc.h>
47
- #include <grpc/impl/call.h>
48
- #include <grpc/impl/propagation_bits.h>
49
- #include <grpc/slice.h>
50
- #include <grpc/slice_buffer.h>
51
- #include <grpc/status.h>
52
- #include <grpc/support/alloc.h>
53
- #include <grpc/support/atm.h>
54
- #include <grpc/support/log.h>
55
- #include <grpc/support/port_platform.h>
56
- #include <grpc/support/string_util.h>
57
-
58
58
  #include "src/core/channelz/channelz.h"
59
59
  #include "src/core/lib/channel/call_finalization.h"
60
- #include "src/core/lib/channel/call_tracer.h"
61
60
  #include "src/core/lib/channel/channel_stack.h"
62
- #include "src/core/lib/channel/context.h"
63
61
  #include "src/core/lib/channel/status_util.h"
64
62
  #include "src/core/lib/compression/compression_internal.h"
65
- #include "src/core/lib/debug/stats.h"
66
- #include "src/core/lib/debug/stats_data.h"
63
+ #include "src/core/lib/event_engine/event_engine_context.h"
67
64
  #include "src/core/lib/experiments/experiments.h"
68
- #include "src/core/lib/gpr/alloc.h"
69
- #include "src/core/lib/gpr/time_precise.h"
70
- #include "src/core/lib/gpr/useful.h"
71
- #include "src/core/lib/gprpp/bitset.h"
72
- #include "src/core/lib/gprpp/cpp_impl_of.h"
73
- #include "src/core/lib/gprpp/crash.h"
74
- #include "src/core/lib/gprpp/debug_location.h"
75
- #include "src/core/lib/gprpp/ref_counted.h"
76
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
77
- #include "src/core/lib/gprpp/status_helper.h"
78
- #include "src/core/lib/gprpp/sync.h"
79
65
  #include "src/core/lib/iomgr/call_combiner.h"
80
66
  #include "src/core/lib/iomgr/exec_ctx.h"
81
67
  #include "src/core/lib/iomgr/polling_entity.h"
82
68
  #include "src/core/lib/promise/activity.h"
83
69
  #include "src/core/lib/promise/all_ok.h"
84
70
  #include "src/core/lib/promise/arena_promise.h"
71
+ #include "src/core/lib/promise/cancel_callback.h"
85
72
  #include "src/core/lib/promise/context.h"
86
73
  #include "src/core/lib/promise/latch.h"
87
74
  #include "src/core/lib/promise/map.h"
88
- #include "src/core/lib/promise/party.h"
89
75
  #include "src/core/lib/promise/pipe.h"
90
76
  #include "src/core/lib/promise/poll.h"
91
77
  #include "src/core/lib/promise/race.h"
@@ -95,22 +81,30 @@
95
81
  #include "src/core/lib/resource_quota/arena.h"
96
82
  #include "src/core/lib/slice/slice_buffer.h"
97
83
  #include "src/core/lib/slice/slice_internal.h"
98
- #include "src/core/lib/surface/api_trace.h"
99
84
  #include "src/core/lib/surface/call_test_only.h"
100
85
  #include "src/core/lib/surface/channel.h"
101
86
  #include "src/core/lib/surface/completion_queue.h"
102
87
  #include "src/core/lib/surface/validate_metadata.h"
103
- #include "src/core/lib/surface/wait_for_cq_end_op.h"
104
- #include "src/core/lib/transport/batch_builder.h"
105
88
  #include "src/core/lib/transport/error_utils.h"
89
+ #include "src/core/lib/transport/metadata.h"
106
90
  #include "src/core/lib/transport/metadata_batch.h"
107
91
  #include "src/core/lib/transport/transport.h"
108
92
  #include "src/core/server/server_interface.h"
109
-
110
- grpc_core::TraceFlag grpc_call_error_trace(false, "call_error");
111
- grpc_core::TraceFlag grpc_compression_trace(false, "compression");
112
- grpc_core::TraceFlag grpc_call_trace(false, "call");
113
- grpc_core::DebugOnlyTraceFlag grpc_call_refcount_trace(false, "call_refcount");
93
+ #include "src/core/telemetry/call_tracer.h"
94
+ #include "src/core/telemetry/stats.h"
95
+ #include "src/core/telemetry/stats_data.h"
96
+ #include "src/core/util/alloc.h"
97
+ #include "src/core/util/bitset.h"
98
+ #include "src/core/util/cpp_impl_of.h"
99
+ #include "src/core/util/crash.h"
100
+ #include "src/core/util/debug_location.h"
101
+ #include "src/core/util/match.h"
102
+ #include "src/core/util/ref_counted.h"
103
+ #include "src/core/util/ref_counted_ptr.h"
104
+ #include "src/core/util/status_helper.h"
105
+ #include "src/core/util/sync.h"
106
+ #include "src/core/util/time_precise.h"
107
+ #include "src/core/util/useful.h"
114
108
 
115
109
  namespace grpc_core {
116
110
 
@@ -121,10 +115,20 @@ using GrpcClosure = Closure;
121
115
  ///////////////////////////////////////////////////////////////////////////////
122
116
  // Call
123
117
 
118
+ Call::Call(bool is_client, Timestamp send_deadline, RefCountedPtr<Arena> arena)
119
+ : arena_(std::move(arena)),
120
+ send_deadline_(send_deadline),
121
+ is_client_(is_client) {
122
+ DCHECK_NE(arena_.get(), nullptr);
123
+ DCHECK_NE(arena_->GetContext<grpc_event_engine::experimental::EventEngine>(),
124
+ nullptr);
125
+ arena_->SetContext<Call>(this);
126
+ }
127
+
124
128
  Call::ParentCall* Call::GetOrCreateParentCall() {
125
129
  ParentCall* p = parent_call_.load(std::memory_order_acquire);
126
130
  if (p == nullptr) {
127
- p = arena_->New<ParentCall>();
131
+ p = arena()->New<ParentCall>();
128
132
  ParentCall* expected = nullptr;
129
133
  if (!parent_call_.compare_exchange_strong(expected, p,
130
134
  std::memory_order_release,
@@ -160,8 +164,8 @@ absl::Status Call::InitParent(Call* parent, uint32_t propagation_mask) {
160
164
  "Census tracing propagation requested without Census context "
161
165
  "propagation");
162
166
  }
163
- ContextSet(GRPC_CONTEXT_TRACING, parent->ContextGet(GRPC_CONTEXT_TRACING),
164
- nullptr);
167
+ arena()->SetContext<census_context>(
168
+ parent->arena()->GetContext<census_context>());
165
169
  } else if (propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
166
170
  return absl::UnknownError(
167
171
  "Census context propagation requested without Census tracing "
@@ -243,28 +247,6 @@ void Call::PropagateCancellationToChildren() {
243
247
  }
244
248
  }
245
249
 
246
- char* Call::GetPeer() {
247
- Slice peer_slice = GetPeerString();
248
- if (!peer_slice.empty()) {
249
- absl::string_view peer_string_view = peer_slice.as_string_view();
250
- char* peer_string =
251
- static_cast<char*>(gpr_malloc(peer_string_view.size() + 1));
252
- memcpy(peer_string, peer_string_view.data(), peer_string_view.size());
253
- peer_string[peer_string_view.size()] = '\0';
254
- return peer_string;
255
- }
256
- char* peer_string = grpc_channel_get_target(channel_->c_ptr());
257
- if (peer_string != nullptr) return peer_string;
258
- return gpr_strdup("unknown");
259
- }
260
-
261
- void Call::DeleteThis() {
262
- RefCountedPtr<Channel> channel = std::move(channel_);
263
- Arena* arena = arena_;
264
- this->~Call();
265
- channel->DestroyArena(arena);
266
- }
267
-
268
250
  void Call::PrepareOutgoingInitialMetadata(const grpc_op& op,
269
251
  grpc_metadata_batch& md) {
270
252
  // TODO(juanlishen): If the user has already specified a compression
@@ -279,7 +261,7 @@ void Call::PrepareOutgoingInitialMetadata(const grpc_op& op,
279
261
  op.data.send_initial_metadata.maybe_compression_level.level;
280
262
  level_set = true;
281
263
  } else {
282
- const grpc_compression_options copts = channel()->compression_options();
264
+ const grpc_compression_options copts = compression_options();
283
265
  if (copts.default_level.is_set) {
284
266
  level_set = true;
285
267
  effective_compression_level = copts.default_level.level;
@@ -305,26 +287,25 @@ void Call::ProcessIncomingInitialMetadata(grpc_metadata_batch& md) {
305
287
  Slice* peer_string = md.get_pointer(PeerString());
306
288
  if (peer_string != nullptr) SetPeerString(peer_string->Ref());
307
289
 
308
- incoming_compression_algorithm_ =
309
- md.Take(GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE);
290
+ SetIncomingCompressionAlgorithm(
291
+ md.Take(GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE));
310
292
  encodings_accepted_by_peer_ =
311
293
  md.Take(GrpcAcceptEncodingMetadata())
312
294
  .value_or(CompressionAlgorithmSet{GRPC_COMPRESS_NONE});
313
295
 
314
- const grpc_compression_options compression_options =
315
- channel_->compression_options();
296
+ const grpc_compression_options copts = compression_options();
316
297
  const grpc_compression_algorithm compression_algorithm =
317
- incoming_compression_algorithm_;
318
- if (GPR_UNLIKELY(!CompressionAlgorithmSet::FromUint32(
319
- compression_options.enabled_algorithms_bitset)
320
- .IsSet(compression_algorithm))) {
298
+ incoming_compression_algorithm();
299
+ if (GPR_UNLIKELY(
300
+ !CompressionAlgorithmSet::FromUint32(copts.enabled_algorithms_bitset)
301
+ .IsSet(compression_algorithm))) {
321
302
  // check if algorithm is supported by current channel config
322
303
  HandleCompressionAlgorithmDisabled(compression_algorithm);
323
304
  }
324
305
  // GRPC_COMPRESS_NONE is always set.
325
306
  DCHECK(encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE));
326
307
  if (GPR_UNLIKELY(!encodings_accepted_by_peer_.IsSet(compression_algorithm))) {
327
- if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
308
+ if (GRPC_TRACE_FLAG_ENABLED(compression)) {
328
309
  HandleCompressionAlgorithmNotAccepted(compression_algorithm);
329
310
  }
330
311
  }
@@ -334,11 +315,9 @@ void Call::HandleCompressionAlgorithmNotAccepted(
334
315
  grpc_compression_algorithm compression_algorithm) {
335
316
  const char* algo_name = nullptr;
336
317
  grpc_compression_algorithm_name(compression_algorithm, &algo_name);
337
- gpr_log(GPR_ERROR,
338
- "Compression algorithm ('%s') not present in the "
339
- "accepted encodings (%s)",
340
- algo_name,
341
- std::string(encodings_accepted_by_peer_.ToString()).c_str());
318
+ LOG(ERROR) << "Compression algorithm ('" << algo_name
319
+ << "') not present in the accepted encodings ("
320
+ << encodings_accepted_by_peer_.ToString() << ")";
342
321
  }
343
322
 
344
323
  void Call::HandleCompressionAlgorithmDisabled(
@@ -347,7 +326,7 @@ void Call::HandleCompressionAlgorithmDisabled(
347
326
  grpc_compression_algorithm_name(compression_algorithm, &algo_name);
348
327
  std::string error_msg =
349
328
  absl::StrFormat("Compression algorithm '%s' is disabled.", algo_name);
350
- gpr_log(GPR_ERROR, "%s", error_msg.c_str());
329
+ LOG(ERROR) << error_msg;
351
330
  CancelWithError(grpc_error_set_int(absl::UnimplementedError(error_msg),
352
331
  StatusIntProperty::kRpcStatus,
353
332
  GRPC_STATUS_UNIMPLEMENTED));
@@ -355,10 +334,9 @@ void Call::HandleCompressionAlgorithmDisabled(
355
334
 
356
335
  void Call::UpdateDeadline(Timestamp deadline) {
357
336
  ReleasableMutexLock lock(&deadline_mu_);
358
- if (grpc_call_trace.enabled()) {
359
- gpr_log(GPR_DEBUG, "[call %p] UpdateDeadline from=%s to=%s", this,
360
- deadline_.ToString().c_str(), deadline.ToString().c_str());
361
- }
337
+ GRPC_TRACE_LOG(call, INFO)
338
+ << "[call " << this << "] UpdateDeadline from=" << deadline_.ToString()
339
+ << " to=" << deadline.ToString();
362
340
  if (deadline >= deadline_) return;
363
341
  if (deadline < Timestamp::Now()) {
364
342
  lock.Release();
@@ -367,7 +345,8 @@ void Call::UpdateDeadline(Timestamp deadline) {
367
345
  StatusIntProperty::kRpcStatus, GRPC_STATUS_DEADLINE_EXCEEDED));
368
346
  return;
369
347
  }
370
- auto* const event_engine = channel()->event_engine();
348
+ auto* event_engine =
349
+ arena_->GetContext<grpc_event_engine::experimental::EventEngine>();
371
350
  if (deadline_ != Timestamp::InfFuture()) {
372
351
  if (!event_engine->Cancel(deadline_task_)) return;
373
352
  } else {
@@ -381,3797 +360,147 @@ void Call::ResetDeadline() {
381
360
  {
382
361
  MutexLock lock(&deadline_mu_);
383
362
  if (deadline_ == Timestamp::InfFuture()) return;
384
- auto* const event_engine = channel()->event_engine();
385
- if (!event_engine->Cancel(deadline_task_)) return;
363
+ if (!arena_->GetContext<grpc_event_engine::experimental::EventEngine>()
364
+ ->Cancel(deadline_task_)) {
365
+ return;
366
+ }
386
367
  deadline_ = Timestamp::InfFuture();
387
368
  }
388
369
  InternalUnref("deadline[reset]");
389
370
  }
390
371
 
391
372
  void Call::Run() {
392
- ApplicationCallbackExecCtx callback_exec_ctx;
393
373
  ExecCtx exec_ctx;
374
+ GRPC_TRACE_LOG(call, INFO)
375
+ << "call deadline expired "
376
+ << GRPC_DUMP_ARGS(Timestamp::Now(), send_deadline_);
394
377
  CancelWithError(grpc_error_set_int(
395
378
  absl::DeadlineExceededError("Deadline Exceeded"),
396
379
  StatusIntProperty::kRpcStatus, GRPC_STATUS_DEADLINE_EXCEEDED));
397
380
  InternalUnref("deadline[run]");
398
381
  }
399
382
 
400
- ///////////////////////////////////////////////////////////////////////////////
401
- // FilterStackCall
402
- // To be removed once promise conversion is complete
403
-
404
- class FilterStackCall final : public Call {
405
- public:
406
- ~FilterStackCall() override {
407
- for (int i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
408
- if (context_[i].destroy) {
409
- context_[i].destroy(context_[i].value);
410
- }
411
- }
412
- gpr_free(static_cast<void*>(const_cast<char*>(final_info_.error_string)));
413
- }
414
-
415
- bool Completed() override {
416
- return gpr_atm_acq_load(&received_final_op_atm_) != 0;
417
- }
418
-
419
- // TODO(ctiller): return absl::StatusOr<SomeSmartPointer<Call>>?
420
- static grpc_error_handle Create(grpc_call_create_args* args,
421
- grpc_call** out_call);
422
-
423
- static Call* FromTopElem(grpc_call_element* elem) {
424
- return FromCallStack(grpc_call_stack_from_top_element(elem));
425
- }
426
-
427
- grpc_call_stack* call_stack() override {
428
- return reinterpret_cast<grpc_call_stack*>(
429
- reinterpret_cast<char*>(this) +
430
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(*this)));
431
- }
432
-
433
- grpc_event_engine::experimental::EventEngine* event_engine() const override {
434
- return channel()->event_engine();
435
- }
436
-
437
- grpc_call_element* call_elem(size_t idx) {
438
- return grpc_call_stack_element(call_stack(), idx);
439
- }
440
-
441
- CallCombiner* call_combiner() { return &call_combiner_; }
442
-
443
- void CancelWithError(grpc_error_handle error) override;
444
- void SetCompletionQueue(grpc_completion_queue* cq) override;
445
- grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
446
- bool is_notify_tag_closure) override;
447
- void ExternalRef() override { ext_ref_.Ref(); }
448
- void ExternalUnref() override;
449
- void InternalRef(const char* reason) override {
450
- GRPC_CALL_STACK_REF(call_stack(), reason);
451
- }
452
- void InternalUnref(const char* reason) override {
453
- GRPC_CALL_STACK_UNREF(call_stack(), reason);
454
- }
455
-
456
- void ContextSet(grpc_context_index elem, void* value,
457
- void (*destroy)(void* value)) override;
458
- void* ContextGet(grpc_context_index elem) const override {
459
- return context_[elem].value;
460
- }
461
-
462
- bool is_trailers_only() const override {
463
- bool result = is_trailers_only_;
464
- DCHECK(!result || recv_initial_metadata_.TransportSize() == 0);
465
- return result;
466
- }
467
-
468
- bool failed_before_recv_message() const override {
469
- return call_failed_before_recv_message_;
470
- }
471
-
472
- absl::string_view GetServerAuthority() const override {
473
- const Slice* authority_metadata =
474
- recv_initial_metadata_.get_pointer(HttpAuthorityMetadata());
475
- if (authority_metadata == nullptr) return "";
476
- return authority_metadata->as_string_view();
477
- }
478
-
479
- static size_t InitialSizeEstimate() {
480
- return sizeof(FilterStackCall) +
481
- sizeof(BatchControl) * kMaxConcurrentBatches;
482
- }
483
-
484
- private:
485
- class ScopedContext : public promise_detail::Context<Arena> {
486
- public:
487
- explicit ScopedContext(FilterStackCall* call)
488
- : promise_detail::Context<Arena>(call->arena()) {}
489
- };
490
-
491
- static constexpr gpr_atm kRecvNone = 0;
492
- static constexpr gpr_atm kRecvInitialMetadataFirst = 1;
493
-
494
- enum class PendingOp {
495
- kRecvMessage,
496
- kRecvInitialMetadata,
497
- kRecvTrailingMetadata,
498
- kSends
499
- };
500
- static intptr_t PendingOpMask(PendingOp op) {
501
- return static_cast<intptr_t>(1) << static_cast<intptr_t>(op);
502
- }
503
- static std::string PendingOpString(intptr_t pending_ops) {
504
- std::vector<absl::string_view> pending_op_strings;
505
- if (pending_ops & PendingOpMask(PendingOp::kRecvMessage)) {
506
- pending_op_strings.push_back("kRecvMessage");
507
- }
508
- if (pending_ops & PendingOpMask(PendingOp::kRecvInitialMetadata)) {
509
- pending_op_strings.push_back("kRecvInitialMetadata");
510
- }
511
- if (pending_ops & PendingOpMask(PendingOp::kRecvTrailingMetadata)) {
512
- pending_op_strings.push_back("kRecvTrailingMetadata");
513
- }
514
- if (pending_ops & PendingOpMask(PendingOp::kSends)) {
515
- pending_op_strings.push_back("kSends");
516
- }
517
- return absl::StrCat("{", absl::StrJoin(pending_op_strings, ","), "}");
518
- }
519
- struct BatchControl {
520
- FilterStackCall* call_ = nullptr;
521
- CallTracerAnnotationInterface* call_tracer_ = nullptr;
522
- grpc_transport_stream_op_batch op_;
523
- // Share memory for cq_completion and notify_tag as they are never needed
524
- // simultaneously. Each byte used in this data structure count as six bytes
525
- // per call, so any savings we can make are worthwhile,
526
-
527
- // We use notify_tag to determine whether or not to send notification to the
528
- // completion queue. Once we've made that determination, we can reuse the
529
- // memory for cq_completion.
530
- union {
531
- grpc_cq_completion cq_completion;
532
- struct {
533
- // Any given op indicates completion by either (a) calling a closure or
534
- // (b) sending a notification on the call's completion queue. If
535
- // \a is_closure is true, \a tag indicates a closure to be invoked;
536
- // otherwise, \a tag indicates the tag to be used in the notification to
537
- // be sent to the completion queue.
538
- void* tag;
539
- bool is_closure;
540
- } notify_tag;
541
- } completion_data_;
542
- grpc_closure start_batch_;
543
- grpc_closure finish_batch_;
544
- std::atomic<intptr_t> ops_pending_{0};
545
- AtomicError batch_error_;
546
- void set_pending_ops(uintptr_t ops) {
547
- ops_pending_.store(ops, std::memory_order_release);
548
- }
549
- bool completed_batch_step(PendingOp op) {
550
- auto mask = PendingOpMask(op);
551
- auto r = ops_pending_.fetch_sub(mask, std::memory_order_acq_rel);
552
- if (grpc_call_trace.enabled()) {
553
- gpr_log(GPR_DEBUG, "BATCH:%p COMPLETE:%s REMAINING:%s (tag:%p)", this,
554
- PendingOpString(mask).c_str(),
555
- PendingOpString(r & ~mask).c_str(),
556
- completion_data_.notify_tag.tag);
557
- }
558
- CHECK_NE((r & mask), 0);
559
- return r == mask;
560
- }
561
-
562
- void PostCompletion();
563
- void FinishStep(PendingOp op);
564
- void ProcessDataAfterMetadata();
565
- void ReceivingStreamReady(grpc_error_handle error);
566
- void ReceivingInitialMetadataReady(grpc_error_handle error);
567
- void ReceivingTrailingMetadataReady(grpc_error_handle error);
568
- void FinishBatch(grpc_error_handle error);
569
- };
570
-
571
- FilterStackCall(Arena* arena, const grpc_call_create_args& args)
572
- : Call(arena, args.server_transport_data == nullptr, args.send_deadline,
573
- args.channel->Ref()),
574
- cq_(args.cq),
575
- stream_op_payload_(context_) {
576
- context_[GRPC_CONTEXT_CALL].value = this;
577
- }
578
-
579
- static void ReleaseCall(void* call, grpc_error_handle);
580
- static void DestroyCall(void* call, grpc_error_handle);
581
-
582
- static FilterStackCall* FromCallStack(grpc_call_stack* call_stack) {
583
- return reinterpret_cast<FilterStackCall*>(
584
- reinterpret_cast<char*>(call_stack) -
585
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)));
586
- }
587
-
588
- void ExecuteBatch(grpc_transport_stream_op_batch* batch,
589
- grpc_closure* start_batch_closure);
590
- void SetFinalStatus(grpc_error_handle error);
591
- BatchControl* ReuseOrAllocateBatchControl(const grpc_op* ops);
592
- bool PrepareApplicationMetadata(size_t count, grpc_metadata* metadata,
593
- bool is_trailing);
594
- void PublishAppMetadata(grpc_metadata_batch* b, bool is_trailing);
595
- void RecvInitialFilter(grpc_metadata_batch* b);
596
- void RecvTrailingFilter(grpc_metadata_batch* b,
597
- grpc_error_handle batch_error);
598
-
599
- RefCount ext_ref_;
600
- CallCombiner call_combiner_;
601
- grpc_completion_queue* cq_;
602
- grpc_polling_entity pollent_;
603
-
604
- /// has grpc_call_unref been called
605
- bool destroy_called_ = false;
606
- // Trailers-only response status
607
- bool is_trailers_only_ = false;
608
- /// which ops are in-flight
609
- bool sent_initial_metadata_ = false;
610
- bool sending_message_ = false;
611
- bool sent_final_op_ = false;
612
- bool received_initial_metadata_ = false;
613
- bool receiving_message_ = false;
614
- bool requested_final_op_ = false;
615
- gpr_atm received_final_op_atm_ = 0;
616
-
617
- BatchControl* active_batches_[kMaxConcurrentBatches] = {};
618
- grpc_transport_stream_op_batch_payload stream_op_payload_;
619
-
620
- // first idx: is_receiving, second idx: is_trailing
621
- grpc_metadata_batch send_initial_metadata_;
622
- grpc_metadata_batch send_trailing_metadata_;
623
- grpc_metadata_batch recv_initial_metadata_;
624
- grpc_metadata_batch recv_trailing_metadata_;
625
-
626
- // Buffered read metadata waiting to be returned to the application.
627
- // Element 0 is initial metadata, element 1 is trailing metadata.
628
- grpc_metadata_array* buffered_metadata_[2] = {};
629
-
630
- // Call data useful used for reporting. Only valid after the call has
631
- // completed
632
- grpc_call_final_info final_info_;
633
-
634
- // Contexts for various subsystems (security, tracing, ...).
635
- grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
636
-
637
- SliceBuffer send_slice_buffer_;
638
- absl::optional<SliceBuffer> receiving_slice_buffer_;
639
- uint32_t receiving_stream_flags_;
640
-
641
- bool call_failed_before_recv_message_ = false;
642
- grpc_byte_buffer** receiving_buffer_ = nullptr;
643
- grpc_slice receiving_slice_ = grpc_empty_slice();
644
- grpc_closure receiving_stream_ready_;
645
- grpc_closure receiving_initial_metadata_ready_;
646
- grpc_closure receiving_trailing_metadata_ready_;
647
- // Status about operation of call
648
- bool sent_server_trailing_metadata_ = false;
649
- gpr_atm cancelled_with_error_ = 0;
650
-
651
- grpc_closure release_call_;
652
-
653
- union {
654
- struct {
655
- grpc_status_code* status;
656
- grpc_slice* status_details;
657
- const char** error_string;
658
- } client;
659
- struct {
660
- int* cancelled;
661
- // backpointer to owning server if this is a server side call.
662
- ServerInterface* core_server;
663
- } server;
664
- } final_op_;
665
- AtomicError status_error_;
666
-
667
- // recv_state can contain one of the following values:
668
- // RECV_NONE : : no initial metadata and messages received
669
- // RECV_INITIAL_METADATA_FIRST : received initial metadata first
670
- // a batch_control* : received messages first
671
-
672
- // +------1------RECV_NONE------3-----+
673
- // | |
674
- // | |
675
- // v v
676
- // RECV_INITIAL_METADATA_FIRST receiving_stream_ready_bctlp
677
- // | ^ | ^
678
- // | | | |
679
- // +-----2-----+ +-----4-----+
680
-
681
- // For 1, 4: See receiving_initial_metadata_ready() function
682
- // For 2, 3: See receiving_stream_ready() function
683
- gpr_atm recv_state_ = 0;
684
- };
685
-
686
- grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
687
- grpc_call** out_call) {
688
- Channel* channel = args->channel.get();
689
-
690
- auto add_init_error = [](grpc_error_handle* composite,
691
- grpc_error_handle new_err) {
692
- if (new_err.ok()) return;
693
- if (composite->ok()) {
694
- *composite = GRPC_ERROR_CREATE("Call creation failed");
695
- }
696
- *composite = grpc_error_add_child(*composite, new_err);
697
- };
698
-
699
- FilterStackCall* call;
700
- grpc_error_handle error;
701
- grpc_channel_stack* channel_stack = channel->channel_stack();
702
- size_t call_alloc_size =
703
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)) +
704
- channel_stack->call_stack_size;
705
-
706
- Arena* arena = channel->CreateArena();
707
- call = new (arena->Alloc(call_alloc_size)) FilterStackCall(arena, *args);
708
- DCHECK(FromC(call->c_ptr()) == call);
709
- DCHECK(FromCallStack(call->call_stack()) == call);
710
- *out_call = call->c_ptr();
711
- grpc_slice path = grpc_empty_slice();
712
- ScopedContext ctx(call);
713
- if (call->is_client()) {
714
- call->final_op_.client.status_details = nullptr;
715
- call->final_op_.client.status = nullptr;
716
- call->final_op_.client.error_string = nullptr;
717
- global_stats().IncrementClientCallsCreated();
718
- path = CSliceRef(args->path->c_slice());
719
- call->send_initial_metadata_.Set(HttpPathMetadata(),
720
- std::move(*args->path));
721
- if (args->authority.has_value()) {
722
- call->send_initial_metadata_.Set(HttpAuthorityMetadata(),
723
- std::move(*args->authority));
724
- }
725
- call->send_initial_metadata_.Set(
726
- GrpcRegisteredMethod(), reinterpret_cast<void*>(static_cast<uintptr_t>(
727
- args->registered_method)));
728
- channel_stack->stats_plugin_group->AddClientCallTracers(
729
- Slice(CSliceRef(path)), args->registered_method, call->context_);
730
- } else {
731
- global_stats().IncrementServerCallsCreated();
732
- call->final_op_.server.cancelled = nullptr;
733
- call->final_op_.server.core_server = args->server;
734
- // TODO(yashykt): In the future, we want to also enable stats and trace
735
- // collecting from when the call is created at the transport. The idea is
736
- // that the transport would create the call tracer and pass it in as part of
737
- // the metadata.
738
- // TODO(yijiem): OpenCensus and internal Census is still using this way to
739
- // set server call tracer. We need to refactor them to stats plugins
740
- // (including removing the client channel filters).
741
- if (args->server != nullptr &&
742
- args->server->server_call_tracer_factory() != nullptr) {
743
- auto* server_call_tracer =
744
- args->server->server_call_tracer_factory()->CreateNewServerCallTracer(
745
- arena, args->server->channel_args());
746
- if (server_call_tracer != nullptr) {
747
- // Note that we are setting both
748
- // GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE and
749
- // GRPC_CONTEXT_CALL_TRACER as a matter of convenience. In the future
750
- // promise-based world, we would just a single tracer object for each
751
- // stack (call, subchannel_call, server_call.)
752
- call->ContextSet(GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE,
753
- server_call_tracer, nullptr);
754
- call->ContextSet(GRPC_CONTEXT_CALL_TRACER, server_call_tracer, nullptr);
755
- }
756
- }
757
- channel_stack->stats_plugin_group->AddServerCallTracers(call->context_);
758
- }
759
-
760
- Call* parent = Call::FromC(args->parent);
761
- if (parent != nullptr) {
762
- add_init_error(&error, absl_status_to_grpc_error(call->InitParent(
763
- parent, args->propagation_mask)));
764
- }
765
- // initial refcount dropped by grpc_call_unref
766
- grpc_call_element_args call_args = {
767
- call->call_stack(), args->server_transport_data,
768
- call->context_, path,
769
- call->start_time(), call->send_deadline(),
770
- call->arena(), &call->call_combiner_};
771
- add_init_error(&error, grpc_call_stack_init(channel_stack, 1, DestroyCall,
772
- call, &call_args));
773
- // Publish this call to parent only after the call stack has been initialized.
774
- if (parent != nullptr) {
775
- call->PublishToParent(parent);
776
- }
777
-
778
- if (!error.ok()) {
779
- call->CancelWithError(error);
780
- }
781
- if (args->cq != nullptr) {
782
- CHECK(args->pollset_set_alternative == nullptr)
783
- << "Only one of 'cq' and 'pollset_set_alternative' should be "
784
- "non-nullptr.";
785
- GRPC_CQ_INTERNAL_REF(args->cq, "bind");
786
- call->pollent_ =
787
- grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq));
788
- }
789
- if (args->pollset_set_alternative != nullptr) {
790
- call->pollent_ = grpc_polling_entity_create_from_pollset_set(
791
- args->pollset_set_alternative);
792
- }
793
- if (!grpc_polling_entity_is_empty(&call->pollent_)) {
794
- grpc_call_stack_set_pollset_or_pollset_set(call->call_stack(),
795
- &call->pollent_);
796
- }
797
-
798
- if (call->is_client()) {
799
- channelz::ChannelNode* channelz_channel = channel->channelz_node();
800
- if (channelz_channel != nullptr) {
801
- channelz_channel->RecordCallStarted();
802
- }
803
- } else if (call->final_op_.server.core_server != nullptr) {
804
- channelz::ServerNode* channelz_node =
805
- call->final_op_.server.core_server->channelz_node();
806
- if (channelz_node != nullptr) {
807
- channelz_node->RecordCallStarted();
808
- }
809
- }
810
-
811
- if (args->send_deadline != Timestamp::InfFuture()) {
812
- call->UpdateDeadline(args->send_deadline);
813
- }
814
-
815
- CSliceUnref(path);
816
-
817
- return error;
818
- }
819
-
820
- void FilterStackCall::SetCompletionQueue(grpc_completion_queue* cq) {
821
- CHECK(cq);
383
+ } // namespace grpc_core
822
384
 
823
- if (grpc_polling_entity_pollset_set(&pollent_) != nullptr) {
824
- Crash("A pollset_set is already registered for this call.");
825
- }
826
- cq_ = cq;
827
- GRPC_CQ_INTERNAL_REF(cq, "bind");
828
- pollent_ = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
829
- grpc_call_stack_set_pollset_or_pollset_set(call_stack(), &pollent_);
830
- }
385
+ ///////////////////////////////////////////////////////////////////////////////
386
+ // C-based API
831
387
 
832
- void FilterStackCall::ReleaseCall(void* call, grpc_error_handle /*error*/) {
833
- static_cast<FilterStackCall*>(call)->DeleteThis();
388
+ void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
389
+ grpc_core::ExecCtx exec_ctx;
390
+ return grpc_core::Call::FromC(call)->arena()->Alloc(size);
834
391
  }
835
392
 
836
- void FilterStackCall::DestroyCall(void* call, grpc_error_handle /*error*/) {
837
- auto* c = static_cast<FilterStackCall*>(call);
838
- c->recv_initial_metadata_.Clear();
839
- c->recv_trailing_metadata_.Clear();
840
- c->receiving_slice_buffer_.reset();
841
- ParentCall* pc = c->parent_call();
842
- if (pc != nullptr) {
843
- pc->~ParentCall();
844
- }
845
- if (c->cq_) {
846
- GRPC_CQ_INTERNAL_UNREF(c->cq_, "bind");
847
- }
848
-
849
- grpc_error_handle status_error = c->status_error_.get();
850
- grpc_error_get_status(status_error, c->send_deadline(),
851
- &c->final_info_.final_status, nullptr, nullptr,
852
- &(c->final_info_.error_string));
853
- c->status_error_.set(absl::OkStatus());
854
- c->final_info_.stats.latency =
855
- gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time());
856
- grpc_call_stack_destroy(c->call_stack(), &c->final_info_,
857
- GRPC_CLOSURE_INIT(&c->release_call_, ReleaseCall, c,
858
- grpc_schedule_on_exec_ctx));
393
+ void grpc_call_set_completion_queue(grpc_call* call,
394
+ grpc_completion_queue* cq) {
395
+ grpc_core::Call::FromC(call)->SetCompletionQueue(cq);
859
396
  }
860
397
 
861
- void FilterStackCall::ExternalUnref() {
862
- if (GPR_LIKELY(!ext_ref_.Unref())) return;
863
-
864
- ApplicationCallbackExecCtx callback_exec_ctx;
865
- ExecCtx exec_ctx;
866
-
867
- GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (this));
868
-
869
- MaybeUnpublishFromParent();
870
-
871
- CHECK(!destroy_called_);
872
- destroy_called_ = true;
873
- bool cancel = gpr_atm_acq_load(&received_final_op_atm_) == 0;
874
- if (cancel) {
875
- CancelWithError(absl::CancelledError());
876
- } else {
877
- // Unset the call combiner cancellation closure. This has the
878
- // effect of scheduling the previously set cancellation closure, if
879
- // any, so that it can release any internal references it may be
880
- // holding to the call stack.
881
- call_combiner_.SetNotifyOnCancel(nullptr);
882
- }
883
- InternalUnref("destroy");
884
- }
398
+ void grpc_call_ref(grpc_call* c) { grpc_core::Call::FromC(c)->ExternalRef(); }
885
399
 
886
- // start_batch_closure points to a caller-allocated closure to be used
887
- // for entering the call combiner.
888
- void FilterStackCall::ExecuteBatch(grpc_transport_stream_op_batch* batch,
889
- grpc_closure* start_batch_closure) {
890
- // This is called via the call combiner to start sending a batch down
891
- // the filter stack.
892
- auto execute_batch_in_call_combiner = [](void* arg, grpc_error_handle) {
893
- grpc_transport_stream_op_batch* batch =
894
- static_cast<grpc_transport_stream_op_batch*>(arg);
895
- auto* call =
896
- static_cast<FilterStackCall*>(batch->handler_private.extra_arg);
897
- grpc_call_element* elem = call->call_elem(0);
898
- GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
899
- elem->filter->start_transport_stream_op_batch(elem, batch);
900
- };
901
- batch->handler_private.extra_arg = this;
902
- GRPC_CLOSURE_INIT(start_batch_closure, execute_batch_in_call_combiner, batch,
903
- grpc_schedule_on_exec_ctx);
904
- GRPC_CALL_COMBINER_START(call_combiner(), start_batch_closure,
905
- absl::OkStatus(), "executing batch");
400
+ void grpc_call_unref(grpc_call* c) {
401
+ grpc_core::ExecCtx exec_ctx;
402
+ grpc_core::Call::FromC(c)->ExternalUnref();
906
403
  }
907
404
 
908
- namespace {
909
- struct CancelState {
910
- FilterStackCall* call;
911
- grpc_closure start_batch;
912
- grpc_closure finish_batch;
913
- };
914
- } // namespace
915
-
916
- // The on_complete callback used when sending a cancel_stream batch down
917
- // the filter stack. Yields the call combiner when the batch is done.
918
- static void done_termination(void* arg, grpc_error_handle /*error*/) {
919
- CancelState* state = static_cast<CancelState*>(arg);
920
- GRPC_CALL_COMBINER_STOP(state->call->call_combiner(),
921
- "on_complete for cancel_stream op");
922
- state->call->InternalUnref("termination");
923
- delete state;
405
+ char* grpc_call_get_peer(grpc_call* call) {
406
+ return grpc_core::Call::FromC(call)->GetPeer();
924
407
  }
925
408
 
926
- void FilterStackCall::CancelWithError(grpc_error_handle error) {
927
- if (!gpr_atm_rel_cas(&cancelled_with_error_, 0, 1)) {
928
- return;
929
- }
930
- if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
931
- gpr_log(GPR_INFO, "CancelWithError %s %s", is_client() ? "CLI" : "SVR",
932
- StatusToString(error).c_str());
409
+ grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
410
+ GRPC_TRACE_LOG(api, INFO)
411
+ << "grpc_call_cancel(call=" << call << ", reserved=" << reserved << ")";
412
+ CHECK_EQ(reserved, nullptr);
413
+ if (call == nullptr) {
414
+ return GRPC_CALL_ERROR;
933
415
  }
934
- ClearPeerString();
935
- InternalRef("termination");
936
- ResetDeadline();
937
- // Inform the call combiner of the cancellation, so that it can cancel
938
- // any in-flight asynchronous actions that may be holding the call
939
- // combiner. This ensures that the cancel_stream batch can be sent
940
- // down the filter stack in a timely manner.
941
- call_combiner_.Cancel(error);
942
- CancelState* state = new CancelState;
943
- state->call = this;
944
- GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state,
945
- grpc_schedule_on_exec_ctx);
946
- grpc_transport_stream_op_batch* op =
947
- grpc_make_transport_stream_op(&state->finish_batch);
948
- op->cancel_stream = true;
949
- op->payload->cancel_stream.cancel_error = error;
950
- ExecuteBatch(op, &state->start_batch);
416
+ grpc_core::ExecCtx exec_ctx;
417
+ grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
418
+ return GRPC_CALL_OK;
951
419
  }
952
420
 
953
- void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
954
- if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
955
- gpr_log(GPR_INFO, "set_final_status %s %s", is_client() ? "CLI" : "SVR",
956
- StatusToString(error).c_str());
957
- }
958
- ResetDeadline();
959
- if (is_client()) {
960
- std::string status_details;
961
- grpc_error_get_status(error, send_deadline(), final_op_.client.status,
962
- &status_details, nullptr,
963
- final_op_.client.error_string);
964
- *final_op_.client.status_details =
965
- grpc_slice_from_cpp_string(std::move(status_details));
966
- status_error_.set(error);
967
- channelz::ChannelNode* channelz_channel = channel()->channelz_node();
968
- if (channelz_channel != nullptr) {
969
- if (*final_op_.client.status != GRPC_STATUS_OK) {
970
- channelz_channel->RecordCallFailed();
971
- } else {
972
- channelz_channel->RecordCallSucceeded();
973
- }
974
- }
975
- } else {
976
- *final_op_.server.cancelled =
977
- !error.ok() || !sent_server_trailing_metadata_;
978
- channelz::ServerNode* channelz_node =
979
- final_op_.server.core_server->channelz_node();
980
- if (channelz_node != nullptr) {
981
- if (*final_op_.server.cancelled || !status_error_.ok()) {
982
- channelz_node->RecordCallFailed();
983
- } else {
984
- channelz_node->RecordCallSucceeded();
985
- }
986
- }
421
+ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
422
+ grpc_status_code status,
423
+ const char* description,
424
+ void* reserved) {
425
+ GRPC_TRACE_LOG(api, INFO)
426
+ << "grpc_call_cancel_with_status(c=" << c << ", status=" << (int)status
427
+ << ", description=" << description << ", reserved=" << reserved << ")";
428
+ CHECK_EQ(reserved, nullptr);
429
+ if (c == nullptr) {
430
+ return GRPC_CALL_ERROR;
987
431
  }
432
+ grpc_core::ExecCtx exec_ctx;
433
+ grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
434
+ return GRPC_CALL_OK;
988
435
  }
989
436
 
990
- bool FilterStackCall::PrepareApplicationMetadata(size_t count,
991
- grpc_metadata* metadata,
992
- bool is_trailing) {
993
- grpc_metadata_batch* batch =
994
- is_trailing ? &send_trailing_metadata_ : &send_initial_metadata_;
995
- for (size_t i = 0; i < count; i++) {
996
- grpc_metadata* md = &metadata[i];
997
- if (!GRPC_LOG_IF_ERROR("validate_metadata",
998
- grpc_validate_header_key_is_legal(md->key))) {
999
- return false;
1000
- } else if (!grpc_is_binary_header_internal(md->key) &&
1001
- !GRPC_LOG_IF_ERROR(
1002
- "validate_metadata",
1003
- grpc_validate_header_nonbin_value_is_legal(md->value))) {
1004
- return false;
1005
- } else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
1006
- // HTTP2 hpack encoding has a maximum limit.
1007
- return false;
1008
- } else if (grpc_slice_str_cmp(md->key, "content-length") == 0) {
1009
- // Filter "content-length metadata"
1010
- continue;
1011
- }
1012
- batch->Append(StringViewFromSlice(md->key), Slice(CSliceRef(md->value)),
1013
- [md](absl::string_view error, const Slice& value) {
1014
- gpr_log(GPR_DEBUG, "Append error: %s",
1015
- absl::StrCat("key=", StringViewFromSlice(md->key),
1016
- " error=", error,
1017
- " value=", value.as_string_view())
1018
- .c_str());
1019
- });
1020
- }
1021
-
1022
- return true;
437
+ void grpc_call_cancel_internal(grpc_call* call) {
438
+ grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
1023
439
  }
1024
440
 
1025
- namespace {
1026
- class PublishToAppEncoder {
1027
- public:
1028
- explicit PublishToAppEncoder(grpc_metadata_array* dest,
1029
- const grpc_metadata_batch* encoding,
1030
- bool is_client)
1031
- : dest_(dest), encoding_(encoding), is_client_(is_client) {}
1032
-
1033
- void Encode(const Slice& key, const Slice& value) {
1034
- Append(key.c_slice(), value.c_slice());
1035
- }
1036
-
1037
- // Catch anything that is not explicitly handled, and do not publish it to the
1038
- // application. If new metadata is added to a batch that needs to be
1039
- // published, it should be called out here.
1040
- template <typename Which>
1041
- void Encode(Which, const typename Which::ValueType&) {}
1042
-
1043
- void Encode(UserAgentMetadata, const Slice& slice) {
1044
- Append(UserAgentMetadata::key(), slice);
1045
- }
1046
-
1047
- void Encode(HostMetadata, const Slice& slice) {
1048
- Append(HostMetadata::key(), slice);
1049
- }
1050
-
1051
- void Encode(GrpcPreviousRpcAttemptsMetadata, uint32_t count) {
1052
- Append(GrpcPreviousRpcAttemptsMetadata::key(), count);
1053
- }
1054
-
1055
- void Encode(GrpcRetryPushbackMsMetadata, Duration count) {
1056
- Append(GrpcRetryPushbackMsMetadata::key(), count.millis());
1057
- }
1058
-
1059
- void Encode(LbTokenMetadata, const Slice& slice) {
1060
- Append(LbTokenMetadata::key(), slice);
1061
- }
1062
-
1063
- private:
1064
- void Append(absl::string_view key, int64_t value) {
1065
- Append(StaticSlice::FromStaticString(key).c_slice(),
1066
- Slice::FromInt64(value).c_slice());
1067
- }
1068
-
1069
- void Append(absl::string_view key, const Slice& value) {
1070
- Append(StaticSlice::FromStaticString(key).c_slice(), value.c_slice());
1071
- }
1072
-
1073
- void Append(grpc_slice key, grpc_slice value) {
1074
- if (dest_->count == dest_->capacity) {
1075
- Crash(absl::StrCat(
1076
- "Too many metadata entries: capacity=", dest_->capacity, " on ",
1077
- is_client_ ? "client" : "server", " encoding ", encoding_->count(),
1078
- " elements: ", encoding_->DebugString().c_str()));
1079
- }
1080
- auto* mdusr = &dest_->metadata[dest_->count++];
1081
- mdusr->key = key;
1082
- mdusr->value = value;
1083
- }
1084
-
1085
- grpc_metadata_array* const dest_;
1086
- const grpc_metadata_batch* const encoding_;
1087
- const bool is_client_;
1088
- };
1089
- } // namespace
1090
-
1091
- void FilterStackCall::PublishAppMetadata(grpc_metadata_batch* b,
1092
- bool is_trailing) {
1093
- if (b->count() == 0) return;
1094
- if (!is_client() && is_trailing) return;
1095
- if (is_trailing && buffered_metadata_[1] == nullptr) return;
1096
- grpc_metadata_array* dest;
1097
- dest = buffered_metadata_[is_trailing];
1098
- if (dest->count + b->count() > dest->capacity) {
1099
- dest->capacity =
1100
- std::max(dest->capacity + b->count(), dest->capacity * 3 / 2);
1101
- dest->metadata = static_cast<grpc_metadata*>(
1102
- gpr_realloc(dest->metadata, sizeof(grpc_metadata) * dest->capacity));
1103
- }
1104
- PublishToAppEncoder encoder(dest, b, is_client());
1105
- b->Encode(&encoder);
441
+ grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
442
+ grpc_call* call) {
443
+ return grpc_core::Call::FromC(call)->incoming_compression_algorithm();
1106
444
  }
1107
445
 
1108
- void FilterStackCall::RecvInitialFilter(grpc_metadata_batch* b) {
1109
- ProcessIncomingInitialMetadata(*b);
1110
- PublishAppMetadata(b, false);
446
+ uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
447
+ return grpc_core::Call::FromC(call)->test_only_message_flags();
1111
448
  }
1112
449
 
1113
- void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b,
1114
- grpc_error_handle batch_error) {
1115
- if (!batch_error.ok()) {
1116
- SetFinalStatus(batch_error);
1117
- } else {
1118
- absl::optional<grpc_status_code> grpc_status =
1119
- b->Take(GrpcStatusMetadata());
1120
- if (grpc_status.has_value()) {
1121
- grpc_status_code status_code = *grpc_status;
1122
- grpc_error_handle error;
1123
- if (status_code != GRPC_STATUS_OK) {
1124
- Slice peer = GetPeerString();
1125
- error = grpc_error_set_int(
1126
- GRPC_ERROR_CREATE(absl::StrCat("Error received from peer ",
1127
- peer.as_string_view())),
1128
- StatusIntProperty::kRpcStatus, static_cast<intptr_t>(status_code));
1129
- }
1130
- auto grpc_message = b->Take(GrpcMessageMetadata());
1131
- if (grpc_message.has_value()) {
1132
- error = grpc_error_set_str(error, StatusStrProperty::kGrpcMessage,
1133
- grpc_message->as_string_view());
1134
- } else if (!error.ok()) {
1135
- error = grpc_error_set_str(error, StatusStrProperty::kGrpcMessage, "");
1136
- }
1137
- SetFinalStatus(error);
1138
- } else if (!is_client()) {
1139
- SetFinalStatus(absl::OkStatus());
1140
- } else {
1141
- gpr_log(GPR_DEBUG,
1142
- "Received trailing metadata with no error and no status");
1143
- SetFinalStatus(grpc_error_set_int(GRPC_ERROR_CREATE("No status received"),
1144
- StatusIntProperty::kRpcStatus,
1145
- GRPC_STATUS_UNKNOWN));
1146
- }
1147
- }
1148
- PublishAppMetadata(b, true);
450
+ uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
451
+ return grpc_core::Call::FromC(call)
452
+ ->encodings_accepted_by_peer()
453
+ .ToLegacyBitmask();
1149
454
  }
1150
455
 
1151
- namespace {
1152
- bool AreWriteFlagsValid(uint32_t flags) {
1153
- // check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set
1154
- const uint32_t allowed_write_positions =
1155
- (GRPC_WRITE_USED_MASK | GRPC_WRITE_INTERNAL_USED_MASK);
1156
- const uint32_t invalid_positions = ~allowed_write_positions;
1157
- return !(flags & invalid_positions);
456
+ grpc_core::Arena* grpc_call_get_arena(grpc_call* call) {
457
+ return grpc_core::Call::FromC(call)->arena();
1158
458
  }
1159
459
 
1160
- bool AreInitialMetadataFlagsValid(uint32_t flags) {
1161
- // check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set
1162
- uint32_t invalid_positions = ~GRPC_INITIAL_METADATA_USED_MASK;
1163
- return !(flags & invalid_positions);
460
+ grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
461
+ return grpc_core::Call::FromC(call)->call_stack();
1164
462
  }
1165
463
 
1166
- size_t BatchSlotForOp(grpc_op_type type) {
1167
- switch (type) {
1168
- case GRPC_OP_SEND_INITIAL_METADATA:
1169
- return 0;
1170
- case GRPC_OP_SEND_MESSAGE:
1171
- return 1;
1172
- case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
1173
- case GRPC_OP_SEND_STATUS_FROM_SERVER:
1174
- return 2;
1175
- case GRPC_OP_RECV_INITIAL_METADATA:
1176
- return 3;
1177
- case GRPC_OP_RECV_MESSAGE:
1178
- return 4;
1179
- case GRPC_OP_RECV_CLOSE_ON_SERVER:
1180
- case GRPC_OP_RECV_STATUS_ON_CLIENT:
1181
- return 5;
1182
- }
1183
- GPR_UNREACHABLE_CODE(return 123456789);
1184
- }
1185
- } // namespace
464
+ grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
465
+ size_t nops, void* tag, void* reserved) {
466
+ GRPC_TRACE_LOG(api, INFO)
467
+ << "grpc_call_start_batch(call=" << call << ", ops=" << ops
468
+ << ", nops=" << (unsigned long)nops << ", tag=" << tag
469
+ << ", reserved=" << reserved << ")";
1186
470
 
1187
- FilterStackCall::BatchControl* FilterStackCall::ReuseOrAllocateBatchControl(
1188
- const grpc_op* ops) {
1189
- size_t slot_idx = BatchSlotForOp(ops[0].op);
1190
- BatchControl** pslot = &active_batches_[slot_idx];
1191
- BatchControl* bctl;
1192
- if (*pslot != nullptr) {
1193
- bctl = *pslot;
1194
- if (bctl->call_ != nullptr) {
1195
- return nullptr;
1196
- }
1197
- bctl->~BatchControl();
1198
- bctl->op_ = {};
1199
- new (&bctl->batch_error_) AtomicError();
471
+ if (reserved != nullptr || call == nullptr) {
472
+ return GRPC_CALL_ERROR;
1200
473
  } else {
1201
- bctl = arena()->New<BatchControl>();
1202
- *pslot = bctl;
474
+ grpc_core::ExecCtx exec_ctx;
475
+ return grpc_core::Call::FromC(call)->StartBatch(ops, nops, tag, false);
1203
476
  }
1204
- bctl->call_ = this;
1205
- bctl->call_tracer_ = static_cast<CallTracerAnnotationInterface*>(
1206
- ContextGet(GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE));
1207
- bctl->op_.payload = &stream_op_payload_;
1208
- return bctl;
1209
477
  }
1210
478
 
1211
- void FilterStackCall::BatchControl::PostCompletion() {
1212
- FilterStackCall* call = call_;
1213
- grpc_error_handle error = batch_error_.get();
1214
-
1215
- if (IsCallStatusOverrideOnCancellationEnabled()) {
1216
- // On the client side, if final call status is already known (i.e if this op
1217
- // includes recv_trailing_metadata) and if the call status is known to be
1218
- // OK, then disregard the batch error to ensure call->receiving_buffer_ is
1219
- // not cleared.
1220
- if (op_.recv_trailing_metadata && call->is_client() &&
1221
- call->status_error_.ok()) {
1222
- error = absl::OkStatus();
1223
- }
1224
- }
1225
-
1226
- if (grpc_call_trace.enabled()) {
1227
- gpr_log(GPR_DEBUG, "tag:%p batch_error=%s op:%s",
1228
- completion_data_.notify_tag.tag, error.ToString().c_str(),
1229
- grpc_transport_stream_op_batch_string(&op_, false).c_str());
1230
- }
479
+ grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
480
+ const grpc_op* ops,
481
+ size_t nops,
482
+ grpc_closure* closure) {
483
+ return grpc_core::Call::FromC(call)->StartBatch(ops, nops, closure, true);
484
+ }
1231
485
 
1232
- if (op_.send_initial_metadata) {
1233
- call->send_initial_metadata_.Clear();
1234
- }
1235
- if (op_.send_message) {
1236
- if (op_.payload->send_message.stream_write_closed && error.ok()) {
1237
- error = grpc_error_add_child(
1238
- error, GRPC_ERROR_CREATE(
1239
- "Attempt to send message after stream was closed."));
1240
- }
1241
- call->sending_message_ = false;
1242
- call->send_slice_buffer_.Clear();
1243
- }
1244
- if (op_.send_trailing_metadata) {
1245
- call->send_trailing_metadata_.Clear();
1246
- }
1247
-
1248
- if (!error.ok() && op_.recv_message && *call->receiving_buffer_ != nullptr) {
1249
- grpc_byte_buffer_destroy(*call->receiving_buffer_);
1250
- *call->receiving_buffer_ = nullptr;
1251
- }
1252
- if (op_.recv_trailing_metadata) {
1253
- // propagate cancellation to any interested children
1254
- gpr_atm_rel_store(&call->received_final_op_atm_, 1);
1255
- call->PropagateCancellationToChildren();
1256
- error = absl::OkStatus();
1257
- }
1258
- batch_error_.set(absl::OkStatus());
1259
-
1260
- if (completion_data_.notify_tag.is_closure) {
1261
- call_ = nullptr;
1262
- GrpcClosure::Run(
1263
- DEBUG_LOCATION,
1264
- static_cast<grpc_closure*>(completion_data_.notify_tag.tag), error);
1265
- call->InternalUnref("completion");
1266
- } else {
1267
- grpc_cq_end_op(
1268
- call->cq_, completion_data_.notify_tag.tag, error,
1269
- [](void* user_data, grpc_cq_completion* /*storage*/) {
1270
- BatchControl* bctl = static_cast<BatchControl*>(user_data);
1271
- Call* call = bctl->call_;
1272
- bctl->call_ = nullptr;
1273
- call->InternalUnref("completion");
1274
- },
1275
- this, &completion_data_.cq_completion);
1276
- }
1277
- }
1278
-
1279
- void FilterStackCall::BatchControl::FinishStep(PendingOp op) {
1280
- if (GPR_UNLIKELY(completed_batch_step(op))) {
1281
- PostCompletion();
1282
- }
1283
- }
1284
-
1285
- void FilterStackCall::BatchControl::ProcessDataAfterMetadata() {
1286
- FilterStackCall* call = call_;
1287
- if (!call->receiving_slice_buffer_.has_value()) {
1288
- *call->receiving_buffer_ = nullptr;
1289
- call->receiving_message_ = false;
1290
- FinishStep(PendingOp::kRecvMessage);
1291
- } else {
1292
- call->NoteLastMessageFlags(call->receiving_stream_flags_);
1293
- if ((call->receiving_stream_flags_ & GRPC_WRITE_INTERNAL_COMPRESS) &&
1294
- (call->incoming_compression_algorithm() != GRPC_COMPRESS_NONE)) {
1295
- *call->receiving_buffer_ = grpc_raw_compressed_byte_buffer_create(
1296
- nullptr, 0, call->incoming_compression_algorithm());
1297
- } else {
1298
- *call->receiving_buffer_ = grpc_raw_byte_buffer_create(nullptr, 0);
1299
- }
1300
- grpc_slice_buffer_move_into(
1301
- call->receiving_slice_buffer_->c_slice_buffer(),
1302
- &(*call->receiving_buffer_)->data.raw.slice_buffer);
1303
- call->receiving_message_ = false;
1304
- call->receiving_slice_buffer_.reset();
1305
- FinishStep(PendingOp::kRecvMessage);
1306
- }
1307
- }
1308
-
1309
- void FilterStackCall::BatchControl::ReceivingStreamReady(
1310
- grpc_error_handle error) {
1311
- if (grpc_call_trace.enabled()) {
1312
- gpr_log(GPR_DEBUG,
1313
- "tag:%p ReceivingStreamReady error=%s "
1314
- "receiving_slice_buffer.has_value=%d recv_state=%" PRIdPTR,
1315
- completion_data_.notify_tag.tag, error.ToString().c_str(),
1316
- call_->receiving_slice_buffer_.has_value(),
1317
- gpr_atm_no_barrier_load(&call_->recv_state_));
1318
- }
1319
- FilterStackCall* call = call_;
1320
- if (!error.ok()) {
1321
- call->receiving_slice_buffer_.reset();
1322
- if (batch_error_.ok()) {
1323
- batch_error_.set(error);
1324
- }
1325
- call->CancelWithError(error);
1326
- }
1327
- // If recv_state is kRecvNone, we will save the batch_control
1328
- // object with rel_cas, and will not use it after the cas. Its corresponding
1329
- // acq_load is in receiving_initial_metadata_ready()
1330
- if (!error.ok() || !call->receiving_slice_buffer_.has_value() ||
1331
- !gpr_atm_rel_cas(&call->recv_state_, kRecvNone,
1332
- reinterpret_cast<gpr_atm>(this))) {
1333
- ProcessDataAfterMetadata();
1334
- }
1335
- }
1336
-
1337
- void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
1338
- grpc_error_handle error) {
1339
- FilterStackCall* call = call_;
1340
-
1341
- GRPC_CALL_COMBINER_STOP(call->call_combiner(), "recv_initial_metadata_ready");
1342
-
1343
- if (error.ok()) {
1344
- grpc_metadata_batch* md = &call->recv_initial_metadata_;
1345
- call->RecvInitialFilter(md);
1346
-
1347
- absl::optional<Timestamp> deadline = md->get(GrpcTimeoutMetadata());
1348
- if (deadline.has_value() && !call->is_client()) {
1349
- call_->set_send_deadline(*deadline);
1350
- }
1351
- } else {
1352
- if (batch_error_.ok()) {
1353
- batch_error_.set(error);
1354
- }
1355
- call->CancelWithError(error);
1356
- }
1357
-
1358
- grpc_closure* saved_rsr_closure = nullptr;
1359
- while (true) {
1360
- gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state_);
1361
- // Should only receive initial metadata once
1362
- CHECK_NE(rsr_bctlp, 1);
1363
- if (rsr_bctlp == 0) {
1364
- // We haven't seen initial metadata and messages before, thus initial
1365
- // metadata is received first.
1366
- // no_barrier_cas is used, as this function won't access the batch_control
1367
- // object saved by receiving_stream_ready() if the initial metadata is
1368
- // received first.
1369
- if (gpr_atm_no_barrier_cas(&call->recv_state_, kRecvNone,
1370
- kRecvInitialMetadataFirst)) {
1371
- break;
1372
- }
1373
- } else {
1374
- // Already received messages
1375
- saved_rsr_closure = GRPC_CLOSURE_CREATE(
1376
- [](void* bctl, grpc_error_handle error) {
1377
- static_cast<BatchControl*>(bctl)->ReceivingStreamReady(error);
1378
- },
1379
- reinterpret_cast<BatchControl*>(rsr_bctlp),
1380
- grpc_schedule_on_exec_ctx);
1381
- // No need to modify recv_state
1382
- break;
1383
- }
1384
- }
1385
- if (saved_rsr_closure != nullptr) {
1386
- GrpcClosure::Run(DEBUG_LOCATION, saved_rsr_closure, error);
1387
- }
1388
-
1389
- FinishStep(PendingOp::kRecvInitialMetadata);
1390
- }
1391
-
1392
- void FilterStackCall::BatchControl::ReceivingTrailingMetadataReady(
1393
- grpc_error_handle error) {
1394
- GRPC_CALL_COMBINER_STOP(call_->call_combiner(),
1395
- "recv_trailing_metadata_ready");
1396
- grpc_metadata_batch* md = &call_->recv_trailing_metadata_;
1397
- call_->RecvTrailingFilter(md, error);
1398
- FinishStep(PendingOp::kRecvTrailingMetadata);
1399
- }
1400
-
1401
- void FilterStackCall::BatchControl::FinishBatch(grpc_error_handle error) {
1402
- GRPC_CALL_COMBINER_STOP(call_->call_combiner(), "on_complete");
1403
- if (batch_error_.ok()) {
1404
- batch_error_.set(error);
1405
- }
1406
- if (!error.ok()) {
1407
- call_->CancelWithError(error);
1408
- }
1409
- FinishStep(PendingOp::kSends);
1410
- }
1411
-
1412
- namespace {
1413
- void EndOpImmediately(grpc_completion_queue* cq, void* notify_tag,
1414
- bool is_notify_tag_closure) {
1415
- if (!is_notify_tag_closure) {
1416
- CHECK(grpc_cq_begin_op(cq, notify_tag));
1417
- grpc_cq_end_op(
1418
- cq, notify_tag, absl::OkStatus(),
1419
- [](void*, grpc_cq_completion* completion) { gpr_free(completion); },
1420
- nullptr,
1421
- static_cast<grpc_cq_completion*>(
1422
- gpr_malloc(sizeof(grpc_cq_completion))));
1423
- } else {
1424
- Closure::Run(DEBUG_LOCATION, static_cast<grpc_closure*>(notify_tag),
1425
- absl::OkStatus());
1426
- }
1427
- }
1428
- } // namespace
1429
-
1430
- grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
1431
- void* notify_tag,
1432
- bool is_notify_tag_closure) {
1433
- size_t i;
1434
- const grpc_op* op;
1435
- BatchControl* bctl;
1436
- grpc_call_error error = GRPC_CALL_OK;
1437
- grpc_transport_stream_op_batch* stream_op;
1438
- grpc_transport_stream_op_batch_payload* stream_op_payload;
1439
- uint32_t seen_ops = 0;
1440
- intptr_t pending_ops = 0;
1441
-
1442
- for (i = 0; i < nops; i++) {
1443
- if (seen_ops & (1u << ops[i].op)) {
1444
- return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1445
- }
1446
- seen_ops |= (1u << ops[i].op);
1447
- }
1448
-
1449
- if (!is_client() &&
1450
- (seen_ops & (1u << GRPC_OP_SEND_STATUS_FROM_SERVER)) != 0 &&
1451
- (seen_ops & (1u << GRPC_OP_RECV_MESSAGE)) != 0) {
1452
- gpr_log(GPR_ERROR,
1453
- "******************* SEND_STATUS WITH RECV_MESSAGE "
1454
- "*******************");
1455
- return GRPC_CALL_ERROR;
1456
- }
1457
-
1458
- GRPC_CALL_LOG_BATCH(GPR_INFO, ops, nops);
1459
-
1460
- if (nops == 0) {
1461
- EndOpImmediately(cq_, notify_tag, is_notify_tag_closure);
1462
- error = GRPC_CALL_OK;
1463
- goto done;
1464
- }
1465
-
1466
- bctl = ReuseOrAllocateBatchControl(ops);
1467
- if (bctl == nullptr) {
1468
- return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1469
- }
1470
- bctl->completion_data_.notify_tag.tag = notify_tag;
1471
- bctl->completion_data_.notify_tag.is_closure =
1472
- static_cast<uint8_t>(is_notify_tag_closure != 0);
1473
-
1474
- stream_op = &bctl->op_;
1475
- stream_op_payload = &stream_op_payload_;
1476
-
1477
- // rewrite batch ops into a transport op
1478
- for (i = 0; i < nops; i++) {
1479
- op = &ops[i];
1480
- if (op->reserved != nullptr) {
1481
- error = GRPC_CALL_ERROR;
1482
- goto done_with_error;
1483
- }
1484
- switch (op->op) {
1485
- case GRPC_OP_SEND_INITIAL_METADATA: {
1486
- // Flag validation: currently allow no flags
1487
- if (!AreInitialMetadataFlagsValid(op->flags)) {
1488
- error = GRPC_CALL_ERROR_INVALID_FLAGS;
1489
- goto done_with_error;
1490
- }
1491
- if (sent_initial_metadata_) {
1492
- error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1493
- goto done_with_error;
1494
- }
1495
- if (op->data.send_initial_metadata.count > INT_MAX) {
1496
- error = GRPC_CALL_ERROR_INVALID_METADATA;
1497
- goto done_with_error;
1498
- }
1499
- stream_op->send_initial_metadata = true;
1500
- sent_initial_metadata_ = true;
1501
- if (!PrepareApplicationMetadata(op->data.send_initial_metadata.count,
1502
- op->data.send_initial_metadata.metadata,
1503
- false)) {
1504
- error = GRPC_CALL_ERROR_INVALID_METADATA;
1505
- goto done_with_error;
1506
- }
1507
- PrepareOutgoingInitialMetadata(*op, send_initial_metadata_);
1508
- // TODO(ctiller): just make these the same variable?
1509
- if (is_client() && send_deadline() != Timestamp::InfFuture()) {
1510
- send_initial_metadata_.Set(GrpcTimeoutMetadata(), send_deadline());
1511
- }
1512
- if (is_client()) {
1513
- send_initial_metadata_.Set(
1514
- WaitForReady(),
1515
- WaitForReady::ValueType{
1516
- (op->flags & GRPC_INITIAL_METADATA_WAIT_FOR_READY) != 0,
1517
- (op->flags &
1518
- GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET) != 0});
1519
- }
1520
- stream_op_payload->send_initial_metadata.send_initial_metadata =
1521
- &send_initial_metadata_;
1522
- pending_ops |= PendingOpMask(PendingOp::kSends);
1523
- break;
1524
- }
1525
- case GRPC_OP_SEND_MESSAGE: {
1526
- if (!AreWriteFlagsValid(op->flags)) {
1527
- error = GRPC_CALL_ERROR_INVALID_FLAGS;
1528
- goto done_with_error;
1529
- }
1530
- if (op->data.send_message.send_message == nullptr) {
1531
- error = GRPC_CALL_ERROR_INVALID_MESSAGE;
1532
- goto done_with_error;
1533
- }
1534
- if (sending_message_) {
1535
- error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1536
- goto done_with_error;
1537
- }
1538
- uint32_t flags = op->flags;
1539
- // If the outgoing buffer is already compressed, mark it as so in the
1540
- // flags. These will be picked up by the compression filter and further
1541
- // (wasteful) attempts at compression skipped.
1542
- if (op->data.send_message.send_message->data.raw.compression >
1543
- GRPC_COMPRESS_NONE) {
1544
- flags |= GRPC_WRITE_INTERNAL_COMPRESS;
1545
- }
1546
- stream_op->send_message = true;
1547
- sending_message_ = true;
1548
- send_slice_buffer_.Clear();
1549
- grpc_slice_buffer_move_into(
1550
- &op->data.send_message.send_message->data.raw.slice_buffer,
1551
- send_slice_buffer_.c_slice_buffer());
1552
- stream_op_payload->send_message.flags = flags;
1553
- stream_op_payload->send_message.send_message = &send_slice_buffer_;
1554
- pending_ops |= PendingOpMask(PendingOp::kSends);
1555
- break;
1556
- }
1557
- case GRPC_OP_SEND_CLOSE_FROM_CLIENT: {
1558
- // Flag validation: currently allow no flags
1559
- if (op->flags != 0) {
1560
- error = GRPC_CALL_ERROR_INVALID_FLAGS;
1561
- goto done_with_error;
1562
- }
1563
- if (!is_client()) {
1564
- error = GRPC_CALL_ERROR_NOT_ON_SERVER;
1565
- goto done_with_error;
1566
- }
1567
- if (sent_final_op_) {
1568
- error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1569
- goto done_with_error;
1570
- }
1571
- stream_op->send_trailing_metadata = true;
1572
- sent_final_op_ = true;
1573
- stream_op_payload->send_trailing_metadata.send_trailing_metadata =
1574
- &send_trailing_metadata_;
1575
- pending_ops |= PendingOpMask(PendingOp::kSends);
1576
- break;
1577
- }
1578
- case GRPC_OP_SEND_STATUS_FROM_SERVER: {
1579
- // Flag validation: currently allow no flags
1580
- if (op->flags != 0) {
1581
- error = GRPC_CALL_ERROR_INVALID_FLAGS;
1582
- goto done_with_error;
1583
- }
1584
- if (is_client()) {
1585
- error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
1586
- goto done_with_error;
1587
- }
1588
- if (sent_final_op_) {
1589
- error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1590
- goto done_with_error;
1591
- }
1592
- if (op->data.send_status_from_server.trailing_metadata_count >
1593
- INT_MAX) {
1594
- error = GRPC_CALL_ERROR_INVALID_METADATA;
1595
- goto done_with_error;
1596
- }
1597
- stream_op->send_trailing_metadata = true;
1598
- sent_final_op_ = true;
1599
-
1600
- if (!PrepareApplicationMetadata(
1601
- op->data.send_status_from_server.trailing_metadata_count,
1602
- op->data.send_status_from_server.trailing_metadata, true)) {
1603
- error = GRPC_CALL_ERROR_INVALID_METADATA;
1604
- goto done_with_error;
1605
- }
1606
-
1607
- grpc_error_handle status_error =
1608
- op->data.send_status_from_server.status == GRPC_STATUS_OK
1609
- ? absl::OkStatus()
1610
- : grpc_error_set_int(
1611
- GRPC_ERROR_CREATE("Server returned error"),
1612
- StatusIntProperty::kRpcStatus,
1613
- static_cast<intptr_t>(
1614
- op->data.send_status_from_server.status));
1615
- if (op->data.send_status_from_server.status_details != nullptr) {
1616
- send_trailing_metadata_.Set(
1617
- GrpcMessageMetadata(),
1618
- Slice(grpc_slice_copy(
1619
- *op->data.send_status_from_server.status_details)));
1620
- if (!status_error.ok()) {
1621
- status_error = grpc_error_set_str(
1622
- status_error, StatusStrProperty::kGrpcMessage,
1623
- StringViewFromSlice(
1624
- *op->data.send_status_from_server.status_details));
1625
- }
1626
- }
1627
-
1628
- status_error_.set(status_error);
1629
-
1630
- send_trailing_metadata_.Set(GrpcStatusMetadata(),
1631
- op->data.send_status_from_server.status);
1632
-
1633
- // Ignore any te metadata key value pairs specified.
1634
- send_trailing_metadata_.Remove(TeMetadata());
1635
- stream_op_payload->send_trailing_metadata.send_trailing_metadata =
1636
- &send_trailing_metadata_;
1637
- stream_op_payload->send_trailing_metadata.sent =
1638
- &sent_server_trailing_metadata_;
1639
- pending_ops |= PendingOpMask(PendingOp::kSends);
1640
- break;
1641
- }
1642
- case GRPC_OP_RECV_INITIAL_METADATA: {
1643
- // Flag validation: currently allow no flags
1644
- if (op->flags != 0) {
1645
- error = GRPC_CALL_ERROR_INVALID_FLAGS;
1646
- goto done_with_error;
1647
- }
1648
- if (received_initial_metadata_) {
1649
- error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1650
- goto done_with_error;
1651
- }
1652
- received_initial_metadata_ = true;
1653
- buffered_metadata_[0] =
1654
- op->data.recv_initial_metadata.recv_initial_metadata;
1655
- GRPC_CLOSURE_INIT(
1656
- &receiving_initial_metadata_ready_,
1657
- [](void* bctl, grpc_error_handle error) {
1658
- static_cast<BatchControl*>(bctl)->ReceivingInitialMetadataReady(
1659
- error);
1660
- },
1661
- bctl, grpc_schedule_on_exec_ctx);
1662
- stream_op->recv_initial_metadata = true;
1663
- stream_op_payload->recv_initial_metadata.recv_initial_metadata =
1664
- &recv_initial_metadata_;
1665
- stream_op_payload->recv_initial_metadata.recv_initial_metadata_ready =
1666
- &receiving_initial_metadata_ready_;
1667
- if (is_client()) {
1668
- stream_op_payload->recv_initial_metadata.trailing_metadata_available =
1669
- &is_trailers_only_;
1670
- }
1671
- pending_ops |= PendingOpMask(PendingOp::kRecvInitialMetadata);
1672
- break;
1673
- }
1674
- case GRPC_OP_RECV_MESSAGE: {
1675
- // Flag validation: currently allow no flags
1676
- if (op->flags != 0) {
1677
- error = GRPC_CALL_ERROR_INVALID_FLAGS;
1678
- goto done_with_error;
1679
- }
1680
- if (receiving_message_) {
1681
- error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1682
- goto done_with_error;
1683
- }
1684
- receiving_message_ = true;
1685
- stream_op->recv_message = true;
1686
- receiving_slice_buffer_.reset();
1687
- receiving_buffer_ = op->data.recv_message.recv_message;
1688
- stream_op_payload->recv_message.recv_message = &receiving_slice_buffer_;
1689
- receiving_stream_flags_ = 0;
1690
- stream_op_payload->recv_message.flags = &receiving_stream_flags_;
1691
- stream_op_payload->recv_message.call_failed_before_recv_message =
1692
- &call_failed_before_recv_message_;
1693
- GRPC_CLOSURE_INIT(
1694
- &receiving_stream_ready_,
1695
- [](void* bctlp, grpc_error_handle error) {
1696
- auto* bctl = static_cast<BatchControl*>(bctlp);
1697
- auto* call = bctl->call_;
1698
- // Yields the call combiner before processing the received
1699
- // message.
1700
- GRPC_CALL_COMBINER_STOP(call->call_combiner(),
1701
- "recv_message_ready");
1702
- bctl->ReceivingStreamReady(error);
1703
- },
1704
- bctl, grpc_schedule_on_exec_ctx);
1705
- stream_op_payload->recv_message.recv_message_ready =
1706
- &receiving_stream_ready_;
1707
- pending_ops |= PendingOpMask(PendingOp::kRecvMessage);
1708
- break;
1709
- }
1710
- case GRPC_OP_RECV_STATUS_ON_CLIENT: {
1711
- // Flag validation: currently allow no flags
1712
- if (op->flags != 0) {
1713
- error = GRPC_CALL_ERROR_INVALID_FLAGS;
1714
- goto done_with_error;
1715
- }
1716
- if (!is_client()) {
1717
- error = GRPC_CALL_ERROR_NOT_ON_SERVER;
1718
- goto done_with_error;
1719
- }
1720
- if (requested_final_op_) {
1721
- error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1722
- goto done_with_error;
1723
- }
1724
- requested_final_op_ = true;
1725
- buffered_metadata_[1] =
1726
- op->data.recv_status_on_client.trailing_metadata;
1727
- final_op_.client.status = op->data.recv_status_on_client.status;
1728
- final_op_.client.status_details =
1729
- op->data.recv_status_on_client.status_details;
1730
- final_op_.client.error_string =
1731
- op->data.recv_status_on_client.error_string;
1732
- stream_op->recv_trailing_metadata = true;
1733
- stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
1734
- &recv_trailing_metadata_;
1735
- stream_op_payload->recv_trailing_metadata.collect_stats =
1736
- &final_info_.stats.transport_stream_stats;
1737
- GRPC_CLOSURE_INIT(
1738
- &receiving_trailing_metadata_ready_,
1739
- [](void* bctl, grpc_error_handle error) {
1740
- static_cast<BatchControl*>(bctl)->ReceivingTrailingMetadataReady(
1741
- error);
1742
- },
1743
- bctl, grpc_schedule_on_exec_ctx);
1744
- stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1745
- &receiving_trailing_metadata_ready_;
1746
- pending_ops |= PendingOpMask(PendingOp::kRecvTrailingMetadata);
1747
- break;
1748
- }
1749
- case GRPC_OP_RECV_CLOSE_ON_SERVER: {
1750
- // Flag validation: currently allow no flags
1751
- if (op->flags != 0) {
1752
- error = GRPC_CALL_ERROR_INVALID_FLAGS;
1753
- goto done_with_error;
1754
- }
1755
- if (is_client()) {
1756
- error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
1757
- goto done_with_error;
1758
- }
1759
- if (requested_final_op_) {
1760
- error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1761
- goto done_with_error;
1762
- }
1763
- requested_final_op_ = true;
1764
- final_op_.server.cancelled = op->data.recv_close_on_server.cancelled;
1765
- stream_op->recv_trailing_metadata = true;
1766
- stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
1767
- &recv_trailing_metadata_;
1768
- stream_op_payload->recv_trailing_metadata.collect_stats =
1769
- &final_info_.stats.transport_stream_stats;
1770
- GRPC_CLOSURE_INIT(
1771
- &receiving_trailing_metadata_ready_,
1772
- [](void* bctl, grpc_error_handle error) {
1773
- static_cast<BatchControl*>(bctl)->ReceivingTrailingMetadataReady(
1774
- error);
1775
- },
1776
- bctl, grpc_schedule_on_exec_ctx);
1777
- stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1778
- &receiving_trailing_metadata_ready_;
1779
- pending_ops |= PendingOpMask(PendingOp::kRecvTrailingMetadata);
1780
- break;
1781
- }
1782
- }
1783
- }
1784
-
1785
- InternalRef("completion");
1786
- if (!is_notify_tag_closure) {
1787
- CHECK(grpc_cq_begin_op(cq_, notify_tag));
1788
- }
1789
- bctl->set_pending_ops(pending_ops);
1790
-
1791
- if (pending_ops & PendingOpMask(PendingOp::kSends)) {
1792
- GRPC_CLOSURE_INIT(
1793
- &bctl->finish_batch_,
1794
- [](void* bctl, grpc_error_handle error) {
1795
- static_cast<BatchControl*>(bctl)->FinishBatch(error);
1796
- },
1797
- bctl, grpc_schedule_on_exec_ctx);
1798
- stream_op->on_complete = &bctl->finish_batch_;
1799
- }
1800
-
1801
- if (grpc_call_trace.enabled()) {
1802
- gpr_log(GPR_DEBUG, "BATCH:%p START:%s BATCH:%s (tag:%p)", bctl,
1803
- PendingOpString(pending_ops).c_str(),
1804
- grpc_transport_stream_op_batch_string(stream_op, false).c_str(),
1805
- bctl->completion_data_.notify_tag.tag);
1806
- }
1807
- ExecuteBatch(stream_op, &bctl->start_batch_);
1808
-
1809
- done:
1810
- return error;
1811
-
1812
- done_with_error:
1813
- // reverse any mutations that occurred
1814
- if (stream_op->send_initial_metadata) {
1815
- sent_initial_metadata_ = false;
1816
- send_initial_metadata_.Clear();
1817
- }
1818
- if (stream_op->send_message) {
1819
- sending_message_ = false;
1820
- }
1821
- if (stream_op->send_trailing_metadata) {
1822
- sent_final_op_ = false;
1823
- send_trailing_metadata_.Clear();
1824
- }
1825
- if (stream_op->recv_initial_metadata) {
1826
- received_initial_metadata_ = false;
1827
- }
1828
- if (stream_op->recv_message) {
1829
- receiving_message_ = false;
1830
- }
1831
- if (stream_op->recv_trailing_metadata) {
1832
- requested_final_op_ = false;
1833
- }
1834
- goto done;
1835
- }
1836
-
1837
- void FilterStackCall::ContextSet(grpc_context_index elem, void* value,
1838
- void (*destroy)(void*)) {
1839
- if (context_[elem].destroy) {
1840
- context_[elem].destroy(context_[elem].value);
1841
- }
1842
- context_[elem].value = value;
1843
- context_[elem].destroy = destroy;
1844
- }
1845
-
1846
- ///////////////////////////////////////////////////////////////////////////////
1847
- // Metadata validation helpers
1848
-
1849
- namespace {
1850
- bool ValidateMetadata(size_t count, grpc_metadata* metadata) {
1851
- if (count > INT_MAX) {
1852
- return false;
1853
- }
1854
- for (size_t i = 0; i < count; i++) {
1855
- grpc_metadata* md = &metadata[i];
1856
- if (!GRPC_LOG_IF_ERROR("validate_metadata",
1857
- grpc_validate_header_key_is_legal(md->key))) {
1858
- return false;
1859
- } else if (!grpc_is_binary_header_internal(md->key) &&
1860
- !GRPC_LOG_IF_ERROR(
1861
- "validate_metadata",
1862
- grpc_validate_header_nonbin_value_is_legal(md->value))) {
1863
- return false;
1864
- } else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
1865
- // HTTP2 hpack encoding has a maximum limit.
1866
- return false;
1867
- }
1868
- }
1869
- return true;
1870
- }
1871
- } // namespace
1872
-
1873
- ///////////////////////////////////////////////////////////////////////////////
1874
- // PromiseBasedCall
1875
- // Will be folded into Call once the promise conversion is done
1876
-
1877
- class BasicPromiseBasedCall : public Call, public Party {
1878
- public:
1879
- using Call::arena;
1880
-
1881
- BasicPromiseBasedCall(Arena* arena, uint32_t initial_external_refs,
1882
- uint32_t initial_internal_refs,
1883
- const grpc_call_create_args& args)
1884
- : Call(arena, args.server_transport_data == nullptr, args.send_deadline,
1885
- args.channel->Ref()),
1886
- Party(initial_internal_refs),
1887
- external_refs_(initial_external_refs),
1888
- cq_(args.cq) {
1889
- if (args.cq != nullptr) {
1890
- GRPC_CQ_INTERNAL_REF(args.cq, "bind");
1891
- }
1892
- context_[GRPC_CONTEXT_CALL].value = this;
1893
- }
1894
-
1895
- ~BasicPromiseBasedCall() override {
1896
- if (cq_) GRPC_CQ_INTERNAL_UNREF(cq_, "bind");
1897
- for (int i = 0; i < GRPC_CONTEXT_COUNT; i++) {
1898
- if (context_[i].destroy) {
1899
- context_[i].destroy(context_[i].value);
1900
- }
1901
- }
1902
- }
1903
-
1904
- virtual void OrphanCall() = 0;
1905
-
1906
- virtual ServerCallContext* server_call_context() { return nullptr; }
1907
- void SetCompletionQueue(grpc_completion_queue* cq) final {
1908
- cq_ = cq;
1909
- GRPC_CQ_INTERNAL_REF(cq, "bind");
1910
- }
1911
-
1912
- // Implementation of call refcounting: move this to DualRefCounted once we
1913
- // don't need to maintain FilterStackCall compatibility
1914
- void ExternalRef() final {
1915
- if (external_refs_.fetch_add(1, std::memory_order_relaxed) == 0) {
1916
- InternalRef("external");
1917
- }
1918
- }
1919
- void ExternalUnref() final {
1920
- if (external_refs_.fetch_sub(1, std::memory_order_acq_rel) == 1) {
1921
- OrphanCall();
1922
- InternalUnref("external");
1923
- }
1924
- }
1925
- void InternalRef(const char* reason) final {
1926
- if (grpc_call_refcount_trace.enabled()) {
1927
- gpr_log(GPR_DEBUG, "INTERNAL_REF:%p:%s", this, reason);
1928
- }
1929
- Party::IncrementRefCount();
1930
- }
1931
- void InternalUnref(const char* reason) final {
1932
- if (grpc_call_refcount_trace.enabled()) {
1933
- gpr_log(GPR_DEBUG, "INTERNAL_UNREF:%p:%s", this, reason);
1934
- }
1935
- Party::Unref();
1936
- }
1937
-
1938
- void RunInContext(absl::AnyInvocable<void()> fn) {
1939
- Spawn(
1940
- "run_in_context",
1941
- [fn = std::move(fn)]() mutable {
1942
- fn();
1943
- return Empty{};
1944
- },
1945
- [](Empty) {});
1946
- }
1947
-
1948
- void ContextSet(grpc_context_index elem, void* value,
1949
- void (*destroy)(void*)) final {
1950
- if (context_[elem].destroy != nullptr) {
1951
- context_[elem].destroy(context_[elem].value);
1952
- }
1953
- context_[elem].value = value;
1954
- context_[elem].destroy = destroy;
1955
- }
1956
-
1957
- void* ContextGet(grpc_context_index elem) const final {
1958
- return context_[elem].value;
1959
- }
1960
-
1961
- // Accept the stats from the context (call once we have proof the transport is
1962
- // done with them).
1963
- void AcceptTransportStatsFromContext() {
1964
- final_stats_ = *call_context_.call_stats();
1965
- }
1966
-
1967
- // This should return nullptr for the promise stack (and alternative means
1968
- // for that functionality be invented)
1969
- grpc_call_stack* call_stack() final { return nullptr; }
1970
-
1971
- virtual RefCountedPtr<CallSpineInterface> MakeCallSpine(CallArgs) {
1972
- Crash("Not implemented");
1973
- }
1974
-
1975
- protected:
1976
- class ScopedContext
1977
- : public ScopedActivity,
1978
- public promise_detail::Context<Arena>,
1979
- public promise_detail::Context<grpc_call_context_element>,
1980
- public promise_detail::Context<CallContext>,
1981
- public promise_detail::Context<CallFinalization> {
1982
- public:
1983
- explicit ScopedContext(BasicPromiseBasedCall* call)
1984
- : ScopedActivity(call),
1985
- promise_detail::Context<Arena>(call->arena()),
1986
- promise_detail::Context<grpc_call_context_element>(call->context_),
1987
- promise_detail::Context<CallContext>(&call->call_context_),
1988
- promise_detail::Context<CallFinalization>(&call->finalization_) {}
1989
- };
1990
-
1991
- grpc_call_context_element* context() { return context_; }
1992
-
1993
- grpc_completion_queue* cq() { return cq_; }
1994
-
1995
- // At the end of the call run any finalization actions.
1996
- void SetFinalizationStatus(grpc_status_code status, Slice status_details) {
1997
- final_message_ = std::move(status_details);
1998
- final_status_ = status;
1999
- }
2000
-
2001
- grpc_event_engine::experimental::EventEngine* event_engine() const override {
2002
- return channel()->event_engine();
2003
- }
2004
-
2005
- private:
2006
- void PartyOver() final {
2007
- {
2008
- ScopedContext ctx(this);
2009
- std::string message;
2010
- grpc_call_final_info final_info;
2011
- final_info.stats = final_stats_;
2012
- final_info.final_status = final_status_;
2013
- // TODO(ctiller): change type here so we don't need to copy this string.
2014
- final_info.error_string = nullptr;
2015
- if (!final_message_.empty()) {
2016
- message = std::string(final_message_.begin(), final_message_.end());
2017
- final_info.error_string = message.c_str();
2018
- }
2019
- final_info.stats.latency =
2020
- gpr_cycle_counter_sub(gpr_get_cycle_counter(), start_time());
2021
- finalization_.Run(&final_info);
2022
- CancelRemainingParticipants();
2023
- arena()->DestroyManagedNewObjects();
2024
- }
2025
- DeleteThis();
2026
- }
2027
-
2028
- // Double refcounted for now: party owns the internal refcount, we track the
2029
- // external refcount. Figure out a better scheme post-promise conversion.
2030
- std::atomic<size_t> external_refs_;
2031
- CallFinalization finalization_;
2032
- CallContext call_context_{this};
2033
- // Contexts for various subsystems (security, tracing, ...).
2034
- grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
2035
- grpc_call_stats final_stats_{};
2036
- Slice final_message_;
2037
- grpc_status_code final_status_ = GRPC_STATUS_UNKNOWN;
2038
- grpc_completion_queue* cq_;
2039
- };
2040
-
2041
- class PromiseBasedCall : public BasicPromiseBasedCall {
2042
- public:
2043
- PromiseBasedCall(Arena* arena, uint32_t initial_external_refs,
2044
- const grpc_call_create_args& args);
2045
-
2046
- bool Completed() final { return finished_.IsSet(); }
2047
-
2048
- bool failed_before_recv_message() const final {
2049
- return failed_before_recv_message_.load(std::memory_order_relaxed);
2050
- }
2051
-
2052
- using Call::arena;
2053
-
2054
- protected:
2055
- class ScopedContext : public BasicPromiseBasedCall::ScopedContext,
2056
- public BatchBuilder,
2057
- public promise_detail::Context<BatchBuilder> {
2058
- public:
2059
- explicit ScopedContext(PromiseBasedCall* call)
2060
- : BasicPromiseBasedCall::ScopedContext(call),
2061
- BatchBuilder(&call->batch_payload_),
2062
- promise_detail::Context<BatchBuilder>(this) {}
2063
- };
2064
-
2065
- class Completion {
2066
- public:
2067
- Completion() : index_(kNullIndex) {}
2068
- ~Completion() { CHECK(index_ == kNullIndex); }
2069
- explicit Completion(uint8_t index) : index_(index) {}
2070
- Completion(const Completion& other) = delete;
2071
- Completion& operator=(const Completion& other) = delete;
2072
- Completion(Completion&& other) noexcept : index_(other.index_) {
2073
- other.index_ = kNullIndex;
2074
- }
2075
- Completion& operator=(Completion&& other) noexcept {
2076
- CHECK(index_ == kNullIndex);
2077
- index_ = other.index_;
2078
- other.index_ = kNullIndex;
2079
- return *this;
2080
- }
2081
-
2082
- uint8_t index() const { return index_; }
2083
- uint8_t TakeIndex() { return std::exchange(index_, kNullIndex); }
2084
- bool has_value() const { return index_ != kNullIndex; }
2085
-
2086
- private:
2087
- enum : uint8_t { kNullIndex = 0xff };
2088
- uint8_t index_;
2089
- };
2090
-
2091
- // Enumerates why a Completion is still pending
2092
- enum class PendingOp {
2093
- // We're in the midst of starting a batch of operations
2094
- kStartingBatch = 0,
2095
- // The following correspond with the batch operations from above
2096
- kSendInitialMetadata,
2097
- kReceiveInitialMetadata,
2098
- kReceiveStatusOnClient,
2099
- kReceiveCloseOnServer = kReceiveStatusOnClient,
2100
- kSendMessage,
2101
- kReceiveMessage,
2102
- kSendStatusFromServer,
2103
- kSendCloseFromClient = kSendStatusFromServer,
2104
- };
2105
-
2106
- bool RunParty() override {
2107
- ScopedContext ctx(this);
2108
- return Party::RunParty();
2109
- }
2110
-
2111
- const char* PendingOpString(PendingOp reason) const {
2112
- switch (reason) {
2113
- case PendingOp::kStartingBatch:
2114
- return "StartingBatch";
2115
- case PendingOp::kSendInitialMetadata:
2116
- return "SendInitialMetadata";
2117
- case PendingOp::kReceiveInitialMetadata:
2118
- return "ReceiveInitialMetadata";
2119
- case PendingOp::kReceiveStatusOnClient:
2120
- return is_client() ? "ReceiveStatusOnClient" : "ReceiveCloseOnServer";
2121
- case PendingOp::kSendMessage:
2122
- return "SendMessage";
2123
- case PendingOp::kReceiveMessage:
2124
- return "ReceiveMessage";
2125
- case PendingOp::kSendStatusFromServer:
2126
- return is_client() ? "SendCloseFromClient" : "SendStatusFromServer";
2127
- }
2128
- return "Unknown";
2129
- }
2130
-
2131
- static constexpr uint32_t PendingOpBit(PendingOp reason) {
2132
- return 1 << static_cast<int>(reason);
2133
- }
2134
-
2135
- // Begin work on a completion, recording the tag/closure to notify.
2136
- // Use the op selected in \a ops to determine the index to allocate into.
2137
- // Starts the "StartingBatch" PendingOp immediately.
2138
- // Assumes at least one operation in \a ops.
2139
- Completion StartCompletion(void* tag, bool is_closure, const grpc_op* ops);
2140
- // Add one pending op to the completion, and return it.
2141
- Completion AddOpToCompletion(const Completion& completion, PendingOp reason);
2142
- // Stringify a completion
2143
- std::string CompletionString(const Completion& completion) const {
2144
- return completion.has_value()
2145
- ? completion_info_[completion.index()].pending.ToString(this)
2146
- : "no-completion";
2147
- }
2148
- // Finish one op on the completion. Must have been previously been added.
2149
- // The completion as a whole finishes when all pending ops finish.
2150
- void FinishOpOnCompletion(Completion* completion, PendingOp reason);
2151
- // Mark the completion as failed. Does not finish it.
2152
- void FailCompletion(const Completion& completion,
2153
- SourceLocation source_location = {});
2154
- // Mark the completion as infallible. Overrides FailCompletion to report
2155
- // success always.
2156
- void ForceCompletionSuccess(const Completion& completion);
2157
-
2158
- std::string PresentAndCompletionText(const char* caption, bool has,
2159
- const Completion& completion) const {
2160
- if (has) {
2161
- if (completion.has_value()) {
2162
- return absl::StrCat(caption, ":", CompletionString(completion), " ");
2163
- } else {
2164
- return absl::StrCat(caption,
2165
- ":!!BUG:operation is present, no completion!! ");
2166
- }
2167
- } else {
2168
- if (!completion.has_value()) {
2169
- return "";
2170
- } else {
2171
- return absl::StrCat(caption, ":no-op:", CompletionString(completion),
2172
- " ");
2173
- }
2174
- }
2175
- }
2176
-
2177
- // Spawn a job that will first do FirstPromise then receive a message
2178
- template <typename FirstPromise>
2179
- void StartRecvMessage(const grpc_op& op, const Completion& completion,
2180
- FirstPromise first,
2181
- PipeReceiver<MessageHandle>* receiver,
2182
- bool cancel_on_error, Party::BulkSpawner& spawner);
2183
- void StartSendMessage(const grpc_op& op, const Completion& completion,
2184
- PipeSender<MessageHandle>* sender,
2185
- Party::BulkSpawner& spawner);
2186
-
2187
- void set_completed() { finished_.Set(); }
2188
-
2189
- // Returns a promise that resolves to Empty whenever the call is completed.
2190
- auto finished() { return finished_.Wait(); }
2191
-
2192
- // Returns a promise that resolves to Empty whenever there is no outstanding
2193
- // send operation
2194
- auto WaitForSendingStarted() {
2195
- return [this]() -> Poll<Empty> {
2196
- int n = sends_queued_.load(std::memory_order_relaxed);
2197
- if (grpc_call_trace.enabled()) {
2198
- gpr_log(GPR_DEBUG, "%s[call] WaitForSendingStarted n=%d",
2199
- DebugTag().c_str(), n);
2200
- }
2201
- if (n != 0) return waiting_for_queued_sends_.pending();
2202
- return Empty{};
2203
- };
2204
- }
2205
-
2206
- // Mark that a send has been queued - blocks sending trailing metadata.
2207
- void QueueSend() {
2208
- if (grpc_call_trace.enabled()) {
2209
- gpr_log(GPR_DEBUG, "%s[call] QueueSend", DebugTag().c_str());
2210
- }
2211
- sends_queued_.fetch_add(1, std::memory_order_relaxed);
2212
- }
2213
- // Mark that a send has been dequeued - allows sending trailing metadata once
2214
- // zero sends are queued.
2215
- void EnactSend() {
2216
- if (grpc_call_trace.enabled()) {
2217
- gpr_log(GPR_DEBUG, "%s[call] EnactSend", DebugTag().c_str());
2218
- }
2219
- if (1 == sends_queued_.fetch_sub(1, std::memory_order_relaxed)) {
2220
- waiting_for_queued_sends_.Wake();
2221
- }
2222
- }
2223
-
2224
- void set_failed_before_recv_message() {
2225
- failed_before_recv_message_.store(true, std::memory_order_relaxed);
2226
- }
2227
-
2228
- private:
2229
- union CompletionInfo {
2230
- static constexpr uint32_t kOpFailed = 0x8000'0000u;
2231
- static constexpr uint32_t kOpForceSuccess = 0x4000'0000u;
2232
- CompletionInfo() {}
2233
- enum CompletionState {
2234
- kPending,
2235
- kSuccess,
2236
- kFailure,
2237
- };
2238
- struct Pending {
2239
- // Bitmask of PendingOps at the bottom, and kOpFailed, kOpForceSuccess at
2240
- // the top.
2241
- std::atomic<uint32_t> state;
2242
- bool is_closure;
2243
- // True if this completion was for a recv_message op.
2244
- // In that case if the completion as a whole fails we need to cleanup the
2245
- // returned message.
2246
- bool is_recv_message;
2247
- void* tag;
2248
-
2249
- void Start(bool is_closure, void* tag) {
2250
- this->is_closure = is_closure;
2251
- this->is_recv_message = false;
2252
- this->tag = tag;
2253
- state.store(PendingOpBit(PendingOp::kStartingBatch),
2254
- std::memory_order_release);
2255
- }
2256
-
2257
- void AddPendingBit(PendingOp reason) {
2258
- if (reason == PendingOp::kReceiveMessage) is_recv_message = true;
2259
- auto prev =
2260
- state.fetch_or(PendingOpBit(reason), std::memory_order_relaxed);
2261
- CHECK_EQ((prev & PendingOpBit(reason)), 0u);
2262
- }
2263
-
2264
- CompletionState RemovePendingBit(PendingOp reason) {
2265
- const uint32_t mask = ~PendingOpBit(reason);
2266
- auto prev = state.fetch_and(mask, std::memory_order_acq_rel);
2267
- CHECK_NE((prev & PendingOpBit(reason)), 0u);
2268
- switch (prev & mask) {
2269
- case kOpFailed:
2270
- return kFailure;
2271
- case kOpFailed | kOpForceSuccess:
2272
- case kOpForceSuccess:
2273
- case 0:
2274
- return kSuccess;
2275
- default:
2276
- return kPending;
2277
- }
2278
- }
2279
-
2280
- void MarkFailed() {
2281
- state.fetch_or(kOpFailed, std::memory_order_relaxed);
2282
- }
2283
-
2284
- void MarkForceSuccess() {
2285
- state.fetch_or(kOpForceSuccess, std::memory_order_relaxed);
2286
- }
2287
-
2288
- std::string ToString(const PromiseBasedCall* call) const {
2289
- auto state = this->state.load(std::memory_order_relaxed);
2290
- std::vector<absl::string_view> pending_ops;
2291
- for (size_t i = 0; i < 24; i++) {
2292
- if (state & (1u << i)) {
2293
- pending_ops.push_back(
2294
- call->PendingOpString(static_cast<PendingOp>(i)));
2295
- }
2296
- }
2297
- return absl::StrFormat("{%s}%s:tag=%p", absl::StrJoin(pending_ops, ","),
2298
- (state & kOpForceSuccess) ? ":force-success"
2299
- : (state & kOpFailed) ? ":failed"
2300
- : ":success",
2301
- tag);
2302
- }
2303
- } pending;
2304
- grpc_cq_completion completion;
2305
- };
2306
-
2307
- CompletionInfo completion_info_[6];
2308
- ExternallyObservableLatch<void> finished_;
2309
- // Non-zero with an outstanding GRPC_OP_SEND_INITIAL_METADATA or
2310
- // GRPC_OP_SEND_MESSAGE (one count each), and 0 once those payloads have been
2311
- // pushed onto the outgoing pipe.
2312
- std::atomic<uint8_t> sends_queued_{0};
2313
- std::atomic<bool> failed_before_recv_message_{false};
2314
- // Waiter for when sends_queued_ becomes 0.
2315
- IntraActivityWaiter waiting_for_queued_sends_;
2316
- grpc_byte_buffer** recv_message_ = nullptr;
2317
- grpc_transport_stream_op_batch_payload batch_payload_{context()};
2318
- };
2319
-
2320
- template <typename T>
2321
- grpc_error_handle MakePromiseBasedCall(grpc_call_create_args* args,
2322
- grpc_call** out_call) {
2323
- Channel* channel = args->channel.get();
2324
-
2325
- auto* arena = channel->CreateArena();
2326
- PromiseBasedCall* call = arena->New<T>(arena, args);
2327
- *out_call = call->c_ptr();
2328
- DCHECK(Call::FromC(*out_call) == call);
2329
- return absl::OkStatus();
2330
- }
2331
-
2332
- PromiseBasedCall::PromiseBasedCall(Arena* arena, uint32_t initial_external_refs,
2333
- const grpc_call_create_args& args)
2334
- : BasicPromiseBasedCall(arena, initial_external_refs,
2335
- initial_external_refs != 0 ? 1 : 0, args) {}
2336
-
2337
- static void CToMetadata(grpc_metadata* metadata, size_t count,
2338
- grpc_metadata_batch* b) {
2339
- for (size_t i = 0; i < count; i++) {
2340
- grpc_metadata* md = &metadata[i];
2341
- auto key = StringViewFromSlice(md->key);
2342
- // Filter "content-length metadata"
2343
- if (key == "content-length") continue;
2344
- b->Append(key, Slice(CSliceRef(md->value)),
2345
- [md](absl::string_view error, const Slice& value) {
2346
- gpr_log(GPR_DEBUG, "Append error: %s",
2347
- absl::StrCat("key=", StringViewFromSlice(md->key),
2348
- " error=", error,
2349
- " value=", value.as_string_view())
2350
- .c_str());
2351
- });
2352
- }
2353
- }
2354
-
2355
- PromiseBasedCall::Completion PromiseBasedCall::StartCompletion(
2356
- void* tag, bool is_closure, const grpc_op* ops) {
2357
- Completion c(BatchSlotForOp(ops[0].op));
2358
- if (!is_closure) {
2359
- grpc_cq_begin_op(cq(), tag);
2360
- }
2361
- completion_info_[c.index()].pending.Start(is_closure, tag);
2362
- if (grpc_call_trace.enabled()) {
2363
- gpr_log(GPR_INFO, "%s[call] StartCompletion %s", DebugTag().c_str(),
2364
- CompletionString(c).c_str());
2365
- }
2366
- return c;
2367
- }
2368
-
2369
- PromiseBasedCall::Completion PromiseBasedCall::AddOpToCompletion(
2370
- const Completion& completion, PendingOp reason) {
2371
- if (grpc_call_trace.enabled()) {
2372
- gpr_log(GPR_INFO, "%s[call] AddOpToCompletion %s %s", DebugTag().c_str(),
2373
- CompletionString(completion).c_str(), PendingOpString(reason));
2374
- }
2375
- CHECK(completion.has_value());
2376
- completion_info_[completion.index()].pending.AddPendingBit(reason);
2377
- return Completion(completion.index());
2378
- }
2379
-
2380
- void PromiseBasedCall::FailCompletion(const Completion& completion,
2381
- SourceLocation location) {
2382
- if (grpc_call_trace.enabled()) {
2383
- gpr_log(location.file(), location.line(), GPR_LOG_SEVERITY_ERROR,
2384
- "%s[call] FailCompletion %s", DebugTag().c_str(),
2385
- CompletionString(completion).c_str());
2386
- }
2387
- completion_info_[completion.index()].pending.MarkFailed();
2388
- }
2389
-
2390
- void PromiseBasedCall::ForceCompletionSuccess(const Completion& completion) {
2391
- completion_info_[completion.index()].pending.MarkForceSuccess();
2392
- }
2393
-
2394
- void PromiseBasedCall::FinishOpOnCompletion(Completion* completion,
2395
- PendingOp reason) {
2396
- if (grpc_call_trace.enabled()) {
2397
- gpr_log(GPR_INFO, "%s[call] FinishOpOnCompletion completion:%s finish:%s",
2398
- DebugTag().c_str(), CompletionString(*completion).c_str(),
2399
- PendingOpString(reason));
2400
- }
2401
- const uint8_t i = completion->TakeIndex();
2402
- CHECK(i < GPR_ARRAY_SIZE(completion_info_));
2403
- CompletionInfo::Pending& pending = completion_info_[i].pending;
2404
- bool success;
2405
- switch (pending.RemovePendingBit(reason)) {
2406
- case CompletionInfo::kPending:
2407
- return; // Early out
2408
- case CompletionInfo::kSuccess:
2409
- success = true;
2410
- break;
2411
- case CompletionInfo::kFailure:
2412
- success = false;
2413
- break;
2414
- }
2415
- if (pending.is_recv_message && !success && *recv_message_ != nullptr) {
2416
- grpc_byte_buffer_destroy(*recv_message_);
2417
- *recv_message_ = nullptr;
2418
- }
2419
- auto error = success ? absl::OkStatus() : absl::CancelledError();
2420
- if (pending.is_closure) {
2421
- ExecCtx::Run(DEBUG_LOCATION, static_cast<grpc_closure*>(pending.tag),
2422
- error);
2423
- } else {
2424
- InternalRef("cq_end_op");
2425
- grpc_cq_end_op(
2426
- cq(), pending.tag, error,
2427
- [](void* p, grpc_cq_completion*) {
2428
- static_cast<PromiseBasedCall*>(p)->InternalUnref("cq_end_op");
2429
- },
2430
- this, &completion_info_[i].completion);
2431
- }
2432
- }
2433
-
2434
- void PromiseBasedCall::StartSendMessage(const grpc_op& op,
2435
- const Completion& completion,
2436
- PipeSender<MessageHandle>* sender,
2437
- Party::BulkSpawner& spawner) {
2438
- QueueSend();
2439
- SliceBuffer send;
2440
- grpc_slice_buffer_swap(
2441
- &op.data.send_message.send_message->data.raw.slice_buffer,
2442
- send.c_slice_buffer());
2443
- auto msg = arena()->MakePooled<Message>(std::move(send), op.flags);
2444
- spawner.Spawn(
2445
- "call_send_message",
2446
- [this, sender, msg = std::move(msg)]() mutable {
2447
- EnactSend();
2448
- return sender->Push(std::move(msg));
2449
- },
2450
- [this, completion = AddOpToCompletion(
2451
- completion, PendingOp::kSendMessage)](bool result) mutable {
2452
- if (grpc_call_trace.enabled()) {
2453
- gpr_log(GPR_DEBUG, "%sSendMessage completes %s", DebugTag().c_str(),
2454
- result ? "successfully" : "with failure");
2455
- }
2456
- if (!result) FailCompletion(completion);
2457
- FinishOpOnCompletion(&completion, PendingOp::kSendMessage);
2458
- });
2459
- }
2460
-
2461
- template <typename FirstPromiseFactory>
2462
- void PromiseBasedCall::StartRecvMessage(
2463
- const grpc_op& op, const Completion& completion,
2464
- FirstPromiseFactory first_promise_factory,
2465
- PipeReceiver<MessageHandle>* receiver, bool cancel_on_error,
2466
- Party::BulkSpawner& spawner) {
2467
- if (grpc_call_trace.enabled()) {
2468
- gpr_log(GPR_INFO, "%s[call] Start RecvMessage: %s", DebugTag().c_str(),
2469
- CompletionString(completion).c_str());
2470
- }
2471
- recv_message_ = op.data.recv_message.recv_message;
2472
- spawner.Spawn(
2473
- "call_recv_message",
2474
- [first_promise_factory = std::move(first_promise_factory), receiver]() {
2475
- return Seq(first_promise_factory(), receiver->Next());
2476
- },
2477
- [this, cancel_on_error,
2478
- completion = AddOpToCompletion(completion, PendingOp::kReceiveMessage)](
2479
- NextResult<MessageHandle> result) mutable {
2480
- if (result.has_value()) {
2481
- MessageHandle& message = *result;
2482
- NoteLastMessageFlags(message->flags());
2483
- if ((message->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
2484
- (incoming_compression_algorithm() != GRPC_COMPRESS_NONE)) {
2485
- *recv_message_ = grpc_raw_compressed_byte_buffer_create(
2486
- nullptr, 0, incoming_compression_algorithm());
2487
- } else {
2488
- *recv_message_ = grpc_raw_byte_buffer_create(nullptr, 0);
2489
- }
2490
- grpc_slice_buffer_move_into(message->payload()->c_slice_buffer(),
2491
- &(*recv_message_)->data.raw.slice_buffer);
2492
- if (grpc_call_trace.enabled()) {
2493
- gpr_log(GPR_INFO,
2494
- "%s[call] RecvMessage: outstanding_recv "
2495
- "finishes: received %" PRIdPTR " byte message",
2496
- DebugTag().c_str(),
2497
- (*recv_message_)->data.raw.slice_buffer.length);
2498
- }
2499
- } else if (result.cancelled()) {
2500
- if (grpc_call_trace.enabled()) {
2501
- gpr_log(GPR_INFO,
2502
- "%s[call] RecvMessage: outstanding_recv "
2503
- "finishes: received end-of-stream with error",
2504
- DebugTag().c_str());
2505
- }
2506
- set_failed_before_recv_message();
2507
- FailCompletion(completion);
2508
- if (cancel_on_error) CancelWithError(absl::CancelledError());
2509
- *recv_message_ = nullptr;
2510
- } else {
2511
- if (grpc_call_trace.enabled()) {
2512
- gpr_log(GPR_INFO,
2513
- "%s[call] RecvMessage: outstanding_recv "
2514
- "finishes: received end-of-stream",
2515
- DebugTag().c_str());
2516
- }
2517
- *recv_message_ = nullptr;
2518
- }
2519
- FinishOpOnCompletion(&completion, PendingOp::kReceiveMessage);
2520
- });
2521
- }
2522
-
2523
- ///////////////////////////////////////////////////////////////////////////////
2524
- // CallContext
2525
-
2526
- void CallContext::RunInContext(absl::AnyInvocable<void()> fn) {
2527
- call_->RunInContext(std::move(fn));
2528
- }
2529
-
2530
- void CallContext::IncrementRefCount(const char* reason) {
2531
- call_->InternalRef(reason);
2532
- }
2533
-
2534
- void CallContext::Unref(const char* reason) { call_->InternalUnref(reason); }
2535
-
2536
- ServerCallContext* CallContext::server_call_context() {
2537
- return call_->server_call_context();
2538
- }
2539
-
2540
- RefCountedPtr<CallSpineInterface> CallContext::MakeCallSpine(
2541
- CallArgs call_args) {
2542
- return call_->MakeCallSpine(std::move(call_args));
2543
- }
2544
-
2545
- grpc_call* CallContext::c_call() { return call_->c_ptr(); }
2546
-
2547
- ///////////////////////////////////////////////////////////////////////////////
2548
- // PublishMetadataArray
2549
-
2550
- namespace {
2551
- void PublishMetadataArray(grpc_metadata_batch* md, grpc_metadata_array* array,
2552
- bool is_client) {
2553
- const auto md_count = md->count();
2554
- if (md_count > array->capacity) {
2555
- array->capacity =
2556
- std::max(array->capacity + md->count(), array->capacity * 3 / 2);
2557
- array->metadata = static_cast<grpc_metadata*>(
2558
- gpr_realloc(array->metadata, sizeof(grpc_metadata) * array->capacity));
2559
- }
2560
- PublishToAppEncoder encoder(array, md, is_client);
2561
- md->Encode(&encoder);
2562
- }
2563
- } // namespace
2564
-
2565
- ///////////////////////////////////////////////////////////////////////////////
2566
- // ClientPromiseBasedCall
2567
-
2568
- #ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_CLIENT_CALL
2569
- class ClientPromiseBasedCall final : public PromiseBasedCall {
2570
- public:
2571
- ClientPromiseBasedCall(Arena* arena, grpc_call_create_args* args)
2572
- : PromiseBasedCall(arena, 1, *args),
2573
- polling_entity_(
2574
- args->cq != nullptr
2575
- ? grpc_polling_entity_create_from_pollset(
2576
- grpc_cq_pollset(args->cq))
2577
- : (args->pollset_set_alternative != nullptr
2578
- ? grpc_polling_entity_create_from_pollset_set(
2579
- args->pollset_set_alternative)
2580
- : grpc_polling_entity{})) {
2581
- global_stats().IncrementClientCallsCreated();
2582
- if (args->cq != nullptr) {
2583
- CHECK(args->pollset_set_alternative == nullptr)
2584
- << "Only one of 'cq' and 'pollset_set_alternative' should be "
2585
- "non-nullptr.";
2586
- }
2587
- ScopedContext context(this);
2588
- args->channel->channel_stack()->stats_plugin_group->AddClientCallTracers(
2589
- *args->path, args->registered_method, this->context());
2590
- send_initial_metadata_ = Arena::MakePooled<ClientMetadata>();
2591
- send_initial_metadata_->Set(HttpPathMetadata(), std::move(*args->path));
2592
- if (args->authority.has_value()) {
2593
- send_initial_metadata_->Set(HttpAuthorityMetadata(),
2594
- std::move(*args->authority));
2595
- }
2596
- send_initial_metadata_->Set(GrpcRegisteredMethod(),
2597
- reinterpret_cast<void*>(static_cast<uintptr_t>(
2598
- args->registered_method)));
2599
- if (auto* channelz_channel = channel()->channelz_node()) {
2600
- channelz_channel->RecordCallStarted();
2601
- }
2602
- if (args->send_deadline != Timestamp::InfFuture()) {
2603
- UpdateDeadline(args->send_deadline);
2604
- }
2605
- Call* parent = Call::FromC(args->parent);
2606
- if (parent != nullptr) {
2607
- auto parent_status = InitParent(parent, args->propagation_mask);
2608
- if (!parent_status.ok()) {
2609
- CancelWithError(std::move(parent_status));
2610
- }
2611
- PublishToParent(parent);
2612
- }
2613
- }
2614
-
2615
- void OrphanCall() override { MaybeUnpublishFromParent(); }
2616
-
2617
- ~ClientPromiseBasedCall() override {
2618
- ScopedContext context(this);
2619
- send_initial_metadata_.reset();
2620
- // Need to destroy the pipes under the ScopedContext above, so we
2621
- // move them out here and then allow the destructors to run at
2622
- // end of scope, but before context.
2623
- auto c2s = std::move(client_to_server_messages_);
2624
- auto s2c = std::move(server_to_client_messages_);
2625
- auto sim = std::move(server_initial_metadata_);
2626
- }
2627
-
2628
- void CancelWithError(absl::Status error) override {
2629
- if (cancel_with_error_called_.exchange(true, std::memory_order_relaxed)) {
2630
- return;
2631
- }
2632
- if (!started_.exchange(true, std::memory_order_relaxed)) {
2633
- // Initial metadata not sent yet, so we can just fail the call.
2634
- Spawn(
2635
- "cancel_before_initial_metadata",
2636
- [error = std::move(error), this]() {
2637
- server_to_client_messages_.sender.Close();
2638
- auto md = ServerMetadataFromStatus(error);
2639
- md->Set(GrpcCallWasCancelled(), true);
2640
- Finish(std::move(md));
2641
- return Empty{};
2642
- },
2643
- [](Empty) {});
2644
- } else {
2645
- Spawn(
2646
- "cancel_with_error",
2647
- [error = std::move(error), this]() {
2648
- if (!cancel_error_.is_set()) {
2649
- auto md = ServerMetadataFromStatus(error);
2650
- md->Set(GrpcCallWasCancelled(), true);
2651
- cancel_error_.Set(std::move(md));
2652
- }
2653
- return Empty{};
2654
- },
2655
- [](Empty) {});
2656
- }
2657
- }
2658
- absl::string_view GetServerAuthority() const override { abort(); }
2659
- bool is_trailers_only() const override { return is_trailers_only_; }
2660
-
2661
- grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
2662
- bool is_notify_tag_closure) override;
2663
-
2664
- std::string DebugTag() const override {
2665
- return absl::StrFormat("CLIENT_CALL[%p]: ", this);
2666
- }
2667
-
2668
- RefCountedPtr<CallSpineInterface> MakeCallSpine(CallArgs call_args) final {
2669
- class WrappingCallSpine final : public PipeBasedCallSpine {
2670
- public:
2671
- WrappingCallSpine(ClientPromiseBasedCall* call,
2672
- ClientMetadataHandle metadata)
2673
- : call_(call) {
2674
- call_->InternalRef("call-spine");
2675
- SpawnInfallible(
2676
- "send_client_initial_metadata",
2677
- [self = Ref(), metadata = std::move(metadata)]() mutable {
2678
- return Map(self->client_initial_metadata_.sender.Push(
2679
- std::move(metadata)),
2680
- [self](bool) { return Empty{}; });
2681
- });
2682
- }
2683
-
2684
- ~WrappingCallSpine() override {
2685
- {
2686
- ScopedContext context(call_);
2687
- // Move these out and destroy before the internal unref.
2688
- auto client_initial_metadata = std::move(client_initial_metadata_);
2689
- auto server_trailing_metadata = std::move(server_trailing_metadata_);
2690
- }
2691
- call_->InternalUnref("call-spine");
2692
- }
2693
-
2694
- Pipe<ClientMetadataHandle>& client_initial_metadata() override {
2695
- return client_initial_metadata_;
2696
- }
2697
-
2698
- Pipe<MessageHandle>& client_to_server_messages() override {
2699
- return call_->client_to_server_messages_;
2700
- }
2701
-
2702
- Pipe<ServerMetadataHandle>& server_initial_metadata() override {
2703
- return call_->server_initial_metadata_;
2704
- }
2705
-
2706
- Pipe<MessageHandle>& server_to_client_messages() override {
2707
- return call_->server_to_client_messages_;
2708
- }
2709
-
2710
- Latch<ServerMetadataHandle>& cancel_latch() override {
2711
- return cancel_error_;
2712
- }
2713
-
2714
- Latch<bool>& was_cancelled_latch() override {
2715
- return was_cancelled_latch_;
2716
- }
2717
-
2718
- Party& party() override { return *call_; }
2719
- Arena* arena() override { return call_->arena(); }
2720
-
2721
- void IncrementRefCount() override { refs_.Ref(); }
2722
- void Unref() override {
2723
- if (refs_.Unref()) delete this;
2724
- }
2725
- RefCountedPtr<WrappingCallSpine> Ref() {
2726
- IncrementRefCount();
2727
- return RefCountedPtr<WrappingCallSpine>(this);
2728
- }
2729
-
2730
- ClientMetadata& UnprocessedClientInitialMetadata() override {
2731
- Crash("not for v2");
2732
- }
2733
-
2734
- void V2HackToStartCallWithoutACallFilterStack() override {}
2735
-
2736
- private:
2737
- RefCount refs_;
2738
- ClientPromiseBasedCall* const call_;
2739
- std::atomic<bool> sent_trailing_metadata_{false};
2740
- Pipe<ClientMetadataHandle> client_initial_metadata_{call_->arena()};
2741
- Pipe<ServerMetadataHandle> server_trailing_metadata_{call_->arena()};
2742
- Latch<ServerMetadataHandle> cancel_error_;
2743
- Latch<bool> was_cancelled_latch_;
2744
- };
2745
- CHECK(call_args.server_initial_metadata ==
2746
- &server_initial_metadata_.sender);
2747
- CHECK(call_args.client_to_server_messages ==
2748
- &client_to_server_messages_.receiver);
2749
- CHECK(call_args.server_to_client_messages ==
2750
- &server_to_client_messages_.sender);
2751
- call_args.client_initial_metadata_outstanding.Complete(true);
2752
- return MakeRefCounted<WrappingCallSpine>(
2753
- this, std::move(call_args.client_initial_metadata));
2754
- }
2755
-
2756
- private:
2757
- // Finish the call with the given status/trailing metadata.
2758
- void Finish(ServerMetadataHandle trailing_metadata);
2759
- // Validate that a set of ops is valid for a client call.
2760
- grpc_call_error ValidateBatch(const grpc_op* ops, size_t nops) const;
2761
- // Commit a valid batch of operations to be executed.
2762
- void CommitBatch(const grpc_op* ops, size_t nops,
2763
- const Completion& completion);
2764
- // Start the underlying promise.
2765
- void StartPromise(ClientMetadataHandle client_initial_metadata,
2766
- const Completion& completion, Party::BulkSpawner& spawner);
2767
- // Start receiving initial metadata
2768
- void StartRecvInitialMetadata(grpc_metadata_array* array,
2769
- const Completion& completion,
2770
- Party::BulkSpawner& spawner);
2771
- void StartRecvStatusOnClient(
2772
- const Completion& completion,
2773
- grpc_op::grpc_op_data::grpc_op_recv_status_on_client op_args,
2774
- Party::BulkSpawner& spawner);
2775
- // Publish status out to the application.
2776
- void PublishStatus(
2777
- grpc_op::grpc_op_data::grpc_op_recv_status_on_client op_args,
2778
- ServerMetadataHandle trailing_metadata);
2779
- // Publish server initial metadata out to the application.
2780
- void PublishInitialMetadata(ServerMetadata* metadata);
2781
-
2782
- ClientMetadataHandle send_initial_metadata_;
2783
- Pipe<ServerMetadataHandle> server_initial_metadata_{arena()};
2784
- Latch<ServerMetadataHandle> server_trailing_metadata_;
2785
- Latch<ServerMetadataHandle> cancel_error_;
2786
- Latch<grpc_polling_entity> polling_entity_;
2787
- Pipe<MessageHandle> client_to_server_messages_{arena()};
2788
- Pipe<MessageHandle> server_to_client_messages_{arena()};
2789
- bool is_trailers_only_ = false;
2790
- bool scheduled_receive_status_ = false;
2791
- bool scheduled_send_close_ = false;
2792
- // True once the promise for the call is started.
2793
- // This corresponds to sending initial metadata, or cancelling before doing
2794
- // so.
2795
- // In the latter case real world code sometimes does not sent the initial
2796
- // metadata, and so gating based upon that does not work out.
2797
- std::atomic<bool> started_{false};
2798
- // True after the first CancelWithError call - prevents spamming cancels from
2799
- // overflowing the party.
2800
- std::atomic<bool> cancel_with_error_called_{false};
2801
- // TODO(ctiller): delete when we remove the filter based API (may require some
2802
- // cleanup in wrapped languages: they depend on this to hold slice refs)
2803
- ServerMetadataHandle recv_initial_metadata_;
2804
- ServerMetadataHandle recv_trailing_metadata_;
2805
- };
2806
-
2807
- void ClientPromiseBasedCall::StartPromise(
2808
- ClientMetadataHandle client_initial_metadata, const Completion& completion,
2809
- Party::BulkSpawner& spawner) {
2810
- auto token = ClientInitialMetadataOutstandingToken::New(arena());
2811
- spawner.Spawn(
2812
- "call_send_initial_metadata", token.Wait(),
2813
- [this,
2814
- completion = AddOpToCompletion(
2815
- completion, PendingOp::kSendInitialMetadata)](bool result) mutable {
2816
- if (!result) FailCompletion(completion);
2817
- FinishOpOnCompletion(&completion, PendingOp::kSendInitialMetadata);
2818
- });
2819
- spawner.Spawn(
2820
- "client_promise",
2821
- [this, client_initial_metadata = std::move(client_initial_metadata),
2822
- token = std::move(token)]() mutable {
2823
- return Race(
2824
- cancel_error_.Wait(),
2825
- Map(channel()->channel_stack()->MakeClientCallPromise(CallArgs{
2826
- std::move(client_initial_metadata), std::move(token),
2827
- &polling_entity_, &server_initial_metadata_.sender,
2828
- &client_to_server_messages_.receiver,
2829
- &server_to_client_messages_.sender}),
2830
- [this](ServerMetadataHandle trailing_metadata) {
2831
- // If we're cancelled the transport doesn't get to return
2832
- // stats.
2833
- AcceptTransportStatsFromContext();
2834
- return trailing_metadata;
2835
- }));
2836
- },
2837
- [this](ServerMetadataHandle trailing_metadata) {
2838
- Finish(std::move(trailing_metadata));
2839
- });
2840
- }
2841
-
2842
- grpc_call_error ClientPromiseBasedCall::ValidateBatch(const grpc_op* ops,
2843
- size_t nops) const {
2844
- BitSet<8> got_ops;
2845
- for (size_t op_idx = 0; op_idx < nops; op_idx++) {
2846
- const grpc_op& op = ops[op_idx];
2847
- switch (op.op) {
2848
- case GRPC_OP_SEND_INITIAL_METADATA:
2849
- if (!AreInitialMetadataFlagsValid(op.flags)) {
2850
- return GRPC_CALL_ERROR_INVALID_FLAGS;
2851
- }
2852
- if (!ValidateMetadata(op.data.send_initial_metadata.count,
2853
- op.data.send_initial_metadata.metadata)) {
2854
- return GRPC_CALL_ERROR_INVALID_METADATA;
2855
- }
2856
- break;
2857
- case GRPC_OP_SEND_MESSAGE:
2858
- if (!AreWriteFlagsValid(op.flags)) {
2859
- return GRPC_CALL_ERROR_INVALID_FLAGS;
2860
- }
2861
- break;
2862
- case GRPC_OP_RECV_INITIAL_METADATA:
2863
- case GRPC_OP_RECV_MESSAGE:
2864
- if (op.flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
2865
- break;
2866
- case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
2867
- if (scheduled_send_close_) return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
2868
- if (op.flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
2869
- break;
2870
- case GRPC_OP_RECV_STATUS_ON_CLIENT:
2871
- if (op.flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
2872
- if (scheduled_receive_status_) {
2873
- return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
2874
- }
2875
- break;
2876
- case GRPC_OP_RECV_CLOSE_ON_SERVER:
2877
- case GRPC_OP_SEND_STATUS_FROM_SERVER:
2878
- return GRPC_CALL_ERROR_NOT_ON_CLIENT;
2879
- }
2880
- if (got_ops.is_set(op.op)) {
2881
- return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
2882
- }
2883
- got_ops.set(op.op);
2884
- }
2885
- return GRPC_CALL_OK;
2886
- }
2887
-
2888
- void ClientPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
2889
- const Completion& completion) {
2890
- Party::BulkSpawner spawner(this);
2891
- for (size_t op_idx = 0; op_idx < nops; op_idx++) {
2892
- const grpc_op& op = ops[op_idx];
2893
- switch (op.op) {
2894
- case GRPC_OP_SEND_INITIAL_METADATA: {
2895
- if (started_.exchange(true, std::memory_order_relaxed)) break;
2896
- CToMetadata(op.data.send_initial_metadata.metadata,
2897
- op.data.send_initial_metadata.count,
2898
- send_initial_metadata_.get());
2899
- PrepareOutgoingInitialMetadata(op, *send_initial_metadata_);
2900
- if (send_deadline() != Timestamp::InfFuture()) {
2901
- send_initial_metadata_->Set(GrpcTimeoutMetadata(), send_deadline());
2902
- }
2903
- send_initial_metadata_->Set(
2904
- WaitForReady(),
2905
- WaitForReady::ValueType{
2906
- (op.flags & GRPC_INITIAL_METADATA_WAIT_FOR_READY) != 0,
2907
- (op.flags &
2908
- GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET) != 0});
2909
- StartPromise(std::move(send_initial_metadata_), completion, spawner);
2910
- } break;
2911
- case GRPC_OP_RECV_INITIAL_METADATA: {
2912
- StartRecvInitialMetadata(
2913
- op.data.recv_initial_metadata.recv_initial_metadata, completion,
2914
- spawner);
2915
- } break;
2916
- case GRPC_OP_RECV_STATUS_ON_CLIENT: {
2917
- scheduled_receive_status_ = true;
2918
- StartRecvStatusOnClient(completion, op.data.recv_status_on_client,
2919
- spawner);
2920
- } break;
2921
- case GRPC_OP_SEND_MESSAGE:
2922
- StartSendMessage(op, completion, &client_to_server_messages_.sender,
2923
- spawner);
2924
- break;
2925
- case GRPC_OP_RECV_MESSAGE:
2926
- StartRecvMessage(
2927
- op, completion,
2928
- [this]() {
2929
- return Race(server_initial_metadata_.receiver.AwaitClosed(),
2930
- server_to_client_messages_.receiver.AwaitClosed());
2931
- },
2932
- &server_to_client_messages_.receiver, false, spawner);
2933
- break;
2934
- case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
2935
- scheduled_send_close_ = true;
2936
- spawner.Spawn(
2937
- "send_close_from_client",
2938
- [this]() {
2939
- client_to_server_messages_.sender.Close();
2940
- return Empty{};
2941
- },
2942
- [this,
2943
- completion = AddOpToCompletion(
2944
- completion, PendingOp::kSendCloseFromClient)](Empty) mutable {
2945
- FinishOpOnCompletion(&completion,
2946
- PendingOp::kSendCloseFromClient);
2947
- });
2948
- break;
2949
- case GRPC_OP_SEND_STATUS_FROM_SERVER:
2950
- case GRPC_OP_RECV_CLOSE_ON_SERVER:
2951
- abort(); // unreachable
2952
- }
2953
- }
2954
- }
2955
-
2956
- grpc_call_error ClientPromiseBasedCall::StartBatch(const grpc_op* ops,
2957
- size_t nops,
2958
- void* notify_tag,
2959
- bool is_notify_tag_closure) {
2960
- if (nops == 0) {
2961
- EndOpImmediately(cq(), notify_tag, is_notify_tag_closure);
2962
- return GRPC_CALL_OK;
2963
- }
2964
- const grpc_call_error validation_result = ValidateBatch(ops, nops);
2965
- if (validation_result != GRPC_CALL_OK) {
2966
- return validation_result;
2967
- }
2968
- Completion completion =
2969
- StartCompletion(notify_tag, is_notify_tag_closure, ops);
2970
- CommitBatch(ops, nops, completion);
2971
- FinishOpOnCompletion(&completion, PendingOp::kStartingBatch);
2972
- return GRPC_CALL_OK;
2973
- }
2974
-
2975
- void ClientPromiseBasedCall::StartRecvInitialMetadata(
2976
- grpc_metadata_array* array, const Completion& completion,
2977
- Party::BulkSpawner& spawner) {
2978
- spawner.Spawn(
2979
- "recv_initial_metadata",
2980
- [this]() {
2981
- return Race(server_initial_metadata_.receiver.Next(),
2982
- Map(finished(), [](Empty) {
2983
- return NextResult<ServerMetadataHandle>(true);
2984
- }));
2985
- },
2986
- [this, array,
2987
- completion =
2988
- AddOpToCompletion(completion, PendingOp::kReceiveInitialMetadata)](
2989
- NextResult<ServerMetadataHandle> next_metadata) mutable {
2990
- server_initial_metadata_.sender.Close();
2991
- ServerMetadataHandle metadata;
2992
- if (grpc_call_trace.enabled()) {
2993
- gpr_log(GPR_INFO, "%s[call] RecvTrailingMetadata: %s",
2994
- DebugTag().c_str(),
2995
- next_metadata.has_value()
2996
- ? next_metadata.value()->DebugString().c_str()
2997
- : "null");
2998
- }
2999
- if (next_metadata.has_value()) {
3000
- metadata = std::move(next_metadata.value());
3001
- is_trailers_only_ = metadata->get(GrpcTrailersOnly()).value_or(false);
3002
- } else {
3003
- is_trailers_only_ = true;
3004
- metadata = arena()->MakePooled<ServerMetadata>();
3005
- }
3006
- ProcessIncomingInitialMetadata(*metadata);
3007
- PublishMetadataArray(metadata.get(), array, true);
3008
- recv_initial_metadata_ = std::move(metadata);
3009
- FinishOpOnCompletion(&completion, PendingOp::kReceiveInitialMetadata);
3010
- });
3011
- }
3012
-
3013
- void ClientPromiseBasedCall::Finish(ServerMetadataHandle trailing_metadata) {
3014
- if (grpc_call_trace.enabled()) {
3015
- gpr_log(GPR_INFO, "%s[call] Finish: %s", DebugTag().c_str(),
3016
- trailing_metadata->DebugString().c_str());
3017
- }
3018
- ResetDeadline();
3019
- set_completed();
3020
- client_to_server_messages_.sender.CloseWithError();
3021
- client_to_server_messages_.receiver.CloseWithError();
3022
- if (trailing_metadata->get(GrpcCallWasCancelled()).value_or(false)) {
3023
- server_to_client_messages_.receiver.CloseWithError();
3024
- server_initial_metadata_.receiver.CloseWithError();
3025
- }
3026
- if (auto* channelz_channel = channel()->channelz_node()) {
3027
- if (trailing_metadata->get(GrpcStatusMetadata())
3028
- .value_or(GRPC_STATUS_UNKNOWN) == GRPC_STATUS_OK) {
3029
- channelz_channel->RecordCallSucceeded();
3030
- } else {
3031
- channelz_channel->RecordCallFailed();
3032
- }
3033
- }
3034
- server_trailing_metadata_.Set(std::move(trailing_metadata));
3035
- }
3036
-
3037
- namespace {
3038
- std::string MakeErrorString(const ServerMetadata* trailing_metadata) {
3039
- std::string out = absl::StrCat(
3040
- trailing_metadata->get(GrpcStatusFromWire()).value_or(false)
3041
- ? "Error received from peer"
3042
- : "Error generated by client",
3043
- "grpc_status: ",
3044
- grpc_status_code_to_string(trailing_metadata->get(GrpcStatusMetadata())
3045
- .value_or(GRPC_STATUS_UNKNOWN)));
3046
- if (const Slice* message =
3047
- trailing_metadata->get_pointer(GrpcMessageMetadata())) {
3048
- absl::StrAppend(&out, "\ngrpc_message: ", message->as_string_view());
3049
- }
3050
- if (auto annotations = trailing_metadata->get_pointer(GrpcStatusContext())) {
3051
- absl::StrAppend(&out, "\nStatus Context:");
3052
- for (const std::string& annotation : *annotations) {
3053
- absl::StrAppend(&out, "\n ", annotation);
3054
- }
3055
- }
3056
- return out;
3057
- }
3058
- } // namespace
3059
-
3060
- void ClientPromiseBasedCall::StartRecvStatusOnClient(
3061
- const Completion& completion,
3062
- grpc_op::grpc_op_data::grpc_op_recv_status_on_client op_args,
3063
- Party::BulkSpawner& spawner) {
3064
- ForceCompletionSuccess(completion);
3065
- spawner.Spawn(
3066
- "recv_status_on_client", server_trailing_metadata_.Wait(),
3067
- [this, op_args,
3068
- completion =
3069
- AddOpToCompletion(completion, PendingOp::kReceiveStatusOnClient)](
3070
- ServerMetadataHandle trailing_metadata) mutable {
3071
- const grpc_status_code status =
3072
- trailing_metadata->get(GrpcStatusMetadata())
3073
- .value_or(GRPC_STATUS_UNKNOWN);
3074
- *op_args.status = status;
3075
- Slice message_slice;
3076
- if (Slice* message =
3077
- trailing_metadata->get_pointer(GrpcMessageMetadata())) {
3078
- message_slice = message->Ref();
3079
- }
3080
- SetFinalizationStatus(status, message_slice.Ref());
3081
- *op_args.status_details = message_slice.TakeCSlice();
3082
- if (op_args.error_string != nullptr && status != GRPC_STATUS_OK) {
3083
- *op_args.error_string =
3084
- gpr_strdup(MakeErrorString(trailing_metadata.get()).c_str());
3085
- }
3086
- PublishMetadataArray(trailing_metadata.get(), op_args.trailing_metadata,
3087
- true);
3088
- recv_trailing_metadata_ = std::move(trailing_metadata);
3089
- FinishOpOnCompletion(&completion, PendingOp::kReceiveStatusOnClient);
3090
- });
3091
- }
3092
- #endif
3093
-
3094
- ///////////////////////////////////////////////////////////////////////////////
3095
- // ServerPromiseBasedCall
3096
-
3097
- #ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL
3098
-
3099
- class ServerPromiseBasedCall final : public PromiseBasedCall,
3100
- public ServerCallContext {
3101
- public:
3102
- ServerPromiseBasedCall(Arena* arena, grpc_call_create_args* args);
3103
-
3104
- void OrphanCall() override {}
3105
- void CancelWithError(grpc_error_handle) override;
3106
- grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
3107
- bool is_notify_tag_closure) override;
3108
- bool is_trailers_only() const override {
3109
- Crash("is_trailers_only not implemented for server calls");
3110
- }
3111
- absl::string_view GetServerAuthority() const override {
3112
- const Slice* authority_metadata =
3113
- client_initial_metadata_->get_pointer(HttpAuthorityMetadata());
3114
- if (authority_metadata == nullptr) return "";
3115
- return authority_metadata->as_string_view();
3116
- }
3117
-
3118
- // Polling order for the server promise stack:
3119
- //
3120
- // │ ┌───────────────────────────────────────┐
3121
- // │ │ ServerPromiseBasedCall ├──► Lifetime management
3122
- // │ ├───────────────────────────────────────┤
3123
- // │ │ ConnectedChannel ├─┐
3124
- // │ ├───────────────────────────────────────┤ └► Interactions with the
3125
- // │ │ ... closest to transport filter │ transport - send/recv msgs
3126
- // │ ├───────────────────────────────────────┤ and metadata, call phase
3127
- // │ │ ... │ ordering
3128
- // │ ├───────────────────────────────────────┤
3129
- // │ │ ... closest to app filter │ ┌► Request matching, initial
3130
- // │ ├───────────────────────────────────────┤ │ setup, publishing call to
3131
- // │ │ Server::ChannelData::MakeCallPromise ├─┘ application
3132
- // │ ├───────────────────────────────────────┤
3133
- // │ │ MakeTopOfServerCallPromise ├──► Send trailing metadata
3134
- // ▼ └───────────────────────────────────────┘
3135
- // Polling &
3136
- // instantiation
3137
- // order
3138
-
3139
- std::string DebugTag() const override {
3140
- return absl::StrFormat("SERVER_CALL[%p]: ", this);
3141
- }
3142
-
3143
- ServerCallContext* server_call_context() override { return this; }
3144
-
3145
- const void* server_stream_data() override { return server_transport_data_; }
3146
- void PublishInitialMetadata(
3147
- ClientMetadataHandle metadata,
3148
- grpc_metadata_array* publish_initial_metadata) override;
3149
- ArenaPromise<ServerMetadataHandle> MakeTopOfServerCallPromise(
3150
- CallArgs call_args, grpc_completion_queue* cq,
3151
- absl::FunctionRef<void(grpc_call* call)> publish) override;
3152
-
3153
- private:
3154
- class RecvCloseOpCancelState {
3155
- public:
3156
- // Request that receiver be filled in per
3157
- // grpc_op_recv_close_on_server. Returns true if the request can
3158
- // be fulfilled immediately. Returns false if the request will be
3159
- // fulfilled later.
3160
- bool ReceiveCloseOnServerOpStarted(int* receiver) {
3161
- uintptr_t state = state_.load(std::memory_order_acquire);
3162
- uintptr_t new_state;
3163
- do {
3164
- switch (state) {
3165
- case kUnset:
3166
- new_state = reinterpret_cast<uintptr_t>(receiver);
3167
- break;
3168
- case kFinishedWithFailure:
3169
- *receiver = 1;
3170
- return true;
3171
- case kFinishedWithSuccess:
3172
- *receiver = 0;
3173
- return true;
3174
- default:
3175
- Crash("Two threads offered ReceiveCloseOnServerOpStarted");
3176
- }
3177
- } while (!state_.compare_exchange_weak(state, new_state,
3178
- std::memory_order_acq_rel,
3179
- std::memory_order_acquire));
3180
- return false;
3181
- }
3182
-
3183
- // Mark the call as having completed.
3184
- // Returns true if this finishes a previous
3185
- // RequestReceiveCloseOnServer.
3186
- bool CompleteCallWithCancelledSetTo(bool cancelled) {
3187
- uintptr_t state = state_.load(std::memory_order_acquire);
3188
- uintptr_t new_state;
3189
- bool r;
3190
- do {
3191
- switch (state) {
3192
- case kUnset:
3193
- new_state = cancelled ? kFinishedWithFailure : kFinishedWithSuccess;
3194
- r = false;
3195
- break;
3196
- case kFinishedWithFailure:
3197
- return false;
3198
- case kFinishedWithSuccess:
3199
- Crash("unreachable");
3200
- default:
3201
- new_state = cancelled ? kFinishedWithFailure : kFinishedWithSuccess;
3202
- r = true;
3203
- }
3204
- } while (!state_.compare_exchange_weak(state, new_state,
3205
- std::memory_order_acq_rel,
3206
- std::memory_order_acquire));
3207
- if (r) *reinterpret_cast<int*>(state) = cancelled ? 1 : 0;
3208
- return r;
3209
- }
3210
-
3211
- std::string ToString() const {
3212
- auto state = state_.load(std::memory_order_relaxed);
3213
- switch (state) {
3214
- case kUnset:
3215
- return "Unset";
3216
- case kFinishedWithFailure:
3217
- return "FinishedWithFailure";
3218
- case kFinishedWithSuccess:
3219
- return "FinishedWithSuccess";
3220
- default:
3221
- return absl::StrFormat("WaitingForReceiver(%p)",
3222
- reinterpret_cast<void*>(state));
3223
- }
3224
- }
3225
-
3226
- private:
3227
- static constexpr uintptr_t kUnset = 0;
3228
- static constexpr uintptr_t kFinishedWithFailure = 1;
3229
- static constexpr uintptr_t kFinishedWithSuccess = 2;
3230
- // Holds one of kUnset, kFinishedWithFailure, or
3231
- // kFinishedWithSuccess OR an int* that wants to receive the
3232
- // final status.
3233
- std::atomic<uintptr_t> state_{kUnset};
3234
- };
3235
-
3236
- void CommitBatch(const grpc_op* ops, size_t nops,
3237
- const Completion& completion);
3238
- void Finish(ServerMetadataHandle result);
3239
-
3240
- ServerInterface* const server_;
3241
- const void* const server_transport_data_;
3242
- PipeSender<ServerMetadataHandle>* server_initial_metadata_ = nullptr;
3243
- PipeSender<MessageHandle>* server_to_client_messages_ = nullptr;
3244
- PipeReceiver<MessageHandle>* client_to_server_messages_ = nullptr;
3245
- Latch<ServerMetadataHandle> send_trailing_metadata_;
3246
- RecvCloseOpCancelState recv_close_op_cancel_state_;
3247
- ClientMetadataHandle client_initial_metadata_;
3248
- Completion recv_close_completion_;
3249
- std::atomic<bool> cancelled_{false};
3250
- };
3251
-
3252
- ServerPromiseBasedCall::ServerPromiseBasedCall(Arena* arena,
3253
- grpc_call_create_args* args)
3254
- : PromiseBasedCall(arena, 0, *args),
3255
- server_(args->server),
3256
- server_transport_data_(args->server_transport_data) {
3257
- global_stats().IncrementServerCallsCreated();
3258
- channelz::ServerNode* channelz_node = server_->channelz_node();
3259
- if (channelz_node != nullptr) {
3260
- channelz_node->RecordCallStarted();
3261
- }
3262
- ScopedContext activity_context(this);
3263
- // TODO(yashykt): In the future, we want to also enable stats and trace
3264
- // collecting from when the call is created at the transport. The idea is that
3265
- // the transport would create the call tracer and pass it in as part of the
3266
- // metadata.
3267
- // TODO(yijiem): OpenCensus and internal Census is still using this way to
3268
- // set server call tracer. We need to refactor them to stats plugins
3269
- // (including removing the client channel filters).
3270
- if (args->server != nullptr &&
3271
- args->server->server_call_tracer_factory() != nullptr) {
3272
- auto* server_call_tracer =
3273
- args->server->server_call_tracer_factory()->CreateNewServerCallTracer(
3274
- arena, args->server->channel_args());
3275
- if (server_call_tracer != nullptr) {
3276
- // Note that we are setting both
3277
- // GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE and
3278
- // GRPC_CONTEXT_CALL_TRACER as a matter of convenience. In the future
3279
- // promise-based world, we would just a single tracer object for each
3280
- // stack (call, subchannel_call, server_call.)
3281
- ContextSet(GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE,
3282
- server_call_tracer, nullptr);
3283
- ContextSet(GRPC_CONTEXT_CALL_TRACER, server_call_tracer, nullptr);
3284
- }
3285
- }
3286
- args->channel->channel_stack()->stats_plugin_group->AddServerCallTracers(
3287
- context());
3288
- Spawn("server_promise",
3289
- channel()->channel_stack()->MakeServerCallPromise(
3290
- CallArgs{nullptr, ClientInitialMetadataOutstandingToken::Empty(),
3291
- nullptr, nullptr, nullptr, nullptr}),
3292
- [this](ServerMetadataHandle result) { Finish(std::move(result)); });
3293
- }
3294
-
3295
- void ServerPromiseBasedCall::Finish(ServerMetadataHandle result) {
3296
- if (grpc_call_trace.enabled()) {
3297
- gpr_log(GPR_INFO, "%s[call] Finish: recv_close_state:%s result:%s",
3298
- DebugTag().c_str(), recv_close_op_cancel_state_.ToString().c_str(),
3299
- result->DebugString().c_str());
3300
- }
3301
- const auto status =
3302
- result->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
3303
- channelz::ServerNode* channelz_node = server_->channelz_node();
3304
- if (channelz_node != nullptr) {
3305
- if (status == GRPC_STATUS_OK) {
3306
- channelz_node->RecordCallSucceeded();
3307
- } else {
3308
- channelz_node->RecordCallFailed();
3309
- }
3310
- }
3311
- bool was_cancelled = result->get(GrpcCallWasCancelled()).value_or(true);
3312
- if (recv_close_op_cancel_state_.CompleteCallWithCancelledSetTo(
3313
- was_cancelled)) {
3314
- FinishOpOnCompletion(&recv_close_completion_,
3315
- PendingOp::kReceiveCloseOnServer);
3316
- }
3317
- if (was_cancelled) set_failed_before_recv_message();
3318
- if (server_initial_metadata_ != nullptr) {
3319
- server_initial_metadata_->Close();
3320
- }
3321
- Slice message_slice;
3322
- if (Slice* message = result->get_pointer(GrpcMessageMetadata())) {
3323
- message_slice = message->Ref();
3324
- }
3325
- AcceptTransportStatsFromContext();
3326
- SetFinalizationStatus(status, std::move(message_slice));
3327
- set_completed();
3328
- ResetDeadline();
3329
- PropagateCancellationToChildren();
3330
- }
3331
-
3332
- grpc_call_error ValidateServerBatch(const grpc_op* ops, size_t nops) {
3333
- BitSet<8> got_ops;
3334
- for (size_t op_idx = 0; op_idx < nops; op_idx++) {
3335
- const grpc_op& op = ops[op_idx];
3336
- switch (op.op) {
3337
- case GRPC_OP_SEND_INITIAL_METADATA:
3338
- if (!AreInitialMetadataFlagsValid(op.flags)) {
3339
- return GRPC_CALL_ERROR_INVALID_FLAGS;
3340
- }
3341
- if (!ValidateMetadata(op.data.send_initial_metadata.count,
3342
- op.data.send_initial_metadata.metadata)) {
3343
- return GRPC_CALL_ERROR_INVALID_METADATA;
3344
- }
3345
- break;
3346
- case GRPC_OP_SEND_MESSAGE:
3347
- if (!AreWriteFlagsValid(op.flags)) {
3348
- return GRPC_CALL_ERROR_INVALID_FLAGS;
3349
- }
3350
- break;
3351
- case GRPC_OP_SEND_STATUS_FROM_SERVER:
3352
- if (op.flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
3353
- if (!ValidateMetadata(
3354
- op.data.send_status_from_server.trailing_metadata_count,
3355
- op.data.send_status_from_server.trailing_metadata)) {
3356
- return GRPC_CALL_ERROR_INVALID_METADATA;
3357
- }
3358
- break;
3359
- case GRPC_OP_RECV_MESSAGE:
3360
- case GRPC_OP_RECV_CLOSE_ON_SERVER:
3361
- if (op.flags != 0) return GRPC_CALL_ERROR_INVALID_FLAGS;
3362
- break;
3363
- case GRPC_OP_RECV_INITIAL_METADATA:
3364
- case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
3365
- case GRPC_OP_RECV_STATUS_ON_CLIENT:
3366
- return GRPC_CALL_ERROR_NOT_ON_SERVER;
3367
- }
3368
- if (got_ops.is_set(op.op)) return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
3369
- got_ops.set(op.op);
3370
- }
3371
- return GRPC_CALL_OK;
3372
- }
3373
-
3374
- void ServerPromiseBasedCall::CommitBatch(const grpc_op* ops, size_t nops,
3375
- const Completion& completion) {
3376
- Party::BulkSpawner spawner(this);
3377
- for (size_t op_idx = 0; op_idx < nops; op_idx++) {
3378
- const grpc_op& op = ops[op_idx];
3379
- switch (op.op) {
3380
- case GRPC_OP_SEND_INITIAL_METADATA: {
3381
- auto metadata = arena()->MakePooled<ServerMetadata>();
3382
- PrepareOutgoingInitialMetadata(op, *metadata);
3383
- CToMetadata(op.data.send_initial_metadata.metadata,
3384
- op.data.send_initial_metadata.count, metadata.get());
3385
- if (grpc_call_trace.enabled()) {
3386
- gpr_log(GPR_INFO, "%s[call] Send initial metadata",
3387
- DebugTag().c_str());
3388
- }
3389
- QueueSend();
3390
- spawner.Spawn(
3391
- "call_send_initial_metadata",
3392
- [this, metadata = std::move(metadata)]() mutable {
3393
- EnactSend();
3394
- return server_initial_metadata_->Push(std::move(metadata));
3395
- },
3396
- [this,
3397
- completion = AddOpToCompletion(
3398
- completion, PendingOp::kSendInitialMetadata)](bool r) mutable {
3399
- if (!r) {
3400
- set_failed_before_recv_message();
3401
- FailCompletion(completion);
3402
- }
3403
- FinishOpOnCompletion(&completion,
3404
- PendingOp::kSendInitialMetadata);
3405
- });
3406
- } break;
3407
- case GRPC_OP_SEND_MESSAGE:
3408
- StartSendMessage(op, completion, server_to_client_messages_, spawner);
3409
- break;
3410
- case GRPC_OP_RECV_MESSAGE:
3411
- if (cancelled_.load(std::memory_order_relaxed)) {
3412
- set_failed_before_recv_message();
3413
- FailCompletion(completion);
3414
- break;
3415
- }
3416
- StartRecvMessage(
3417
- op, completion, []() { return []() { return Empty{}; }; },
3418
- client_to_server_messages_, true, spawner);
3419
- break;
3420
- case GRPC_OP_SEND_STATUS_FROM_SERVER: {
3421
- auto metadata = arena()->MakePooled<ServerMetadata>();
3422
- CToMetadata(op.data.send_status_from_server.trailing_metadata,
3423
- op.data.send_status_from_server.trailing_metadata_count,
3424
- metadata.get());
3425
- metadata->Set(GrpcStatusMetadata(),
3426
- op.data.send_status_from_server.status);
3427
- if (auto* details = op.data.send_status_from_server.status_details) {
3428
- // TODO(ctiller): this should not be a copy, but we have callers that
3429
- // allocate and pass in a slice created with
3430
- // grpc_slice_from_static_string and then delete the string after
3431
- // passing it in, which shouldn't be a supported API.
3432
- metadata->Set(GrpcMessageMetadata(),
3433
- Slice(grpc_slice_copy(*details)));
3434
- }
3435
- spawner.Spawn(
3436
- "call_send_status_from_server",
3437
- [this, metadata = std::move(metadata)]() mutable {
3438
- bool r = true;
3439
- if (send_trailing_metadata_.is_set()) {
3440
- r = false;
3441
- } else {
3442
- send_trailing_metadata_.Set(std::move(metadata));
3443
- }
3444
- return Map(WaitForSendingStarted(), [this, r](Empty) {
3445
- server_initial_metadata_->Close();
3446
- server_to_client_messages_->Close();
3447
- return r;
3448
- });
3449
- },
3450
- [this, completion = AddOpToCompletion(
3451
- completion, PendingOp::kSendStatusFromServer)](
3452
- bool ok) mutable {
3453
- if (!ok) {
3454
- set_failed_before_recv_message();
3455
- FailCompletion(completion);
3456
- }
3457
- FinishOpOnCompletion(&completion,
3458
- PendingOp::kSendStatusFromServer);
3459
- });
3460
- } break;
3461
- case GRPC_OP_RECV_CLOSE_ON_SERVER:
3462
- if (grpc_call_trace.enabled()) {
3463
- gpr_log(GPR_INFO, "%s[call] StartBatch: RecvClose %s",
3464
- DebugTag().c_str(),
3465
- recv_close_op_cancel_state_.ToString().c_str());
3466
- }
3467
- ForceCompletionSuccess(completion);
3468
- recv_close_completion_ =
3469
- AddOpToCompletion(completion, PendingOp::kReceiveCloseOnServer);
3470
- if (recv_close_op_cancel_state_.ReceiveCloseOnServerOpStarted(
3471
- op.data.recv_close_on_server.cancelled)) {
3472
- FinishOpOnCompletion(&recv_close_completion_,
3473
- PendingOp::kReceiveCloseOnServer);
3474
- }
3475
- break;
3476
- case GRPC_OP_RECV_STATUS_ON_CLIENT:
3477
- case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
3478
- case GRPC_OP_RECV_INITIAL_METADATA:
3479
- abort(); // unreachable
3480
- }
3481
- }
3482
- }
3483
-
3484
- grpc_call_error ServerPromiseBasedCall::StartBatch(const grpc_op* ops,
3485
- size_t nops,
3486
- void* notify_tag,
3487
- bool is_notify_tag_closure) {
3488
- if (nops == 0) {
3489
- EndOpImmediately(cq(), notify_tag, is_notify_tag_closure);
3490
- return GRPC_CALL_OK;
3491
- }
3492
- const grpc_call_error validation_result = ValidateServerBatch(ops, nops);
3493
- if (validation_result != GRPC_CALL_OK) {
3494
- return validation_result;
3495
- }
3496
- Completion completion =
3497
- StartCompletion(notify_tag, is_notify_tag_closure, ops);
3498
- CommitBatch(ops, nops, completion);
3499
- FinishOpOnCompletion(&completion, PendingOp::kStartingBatch);
3500
- return GRPC_CALL_OK;
3501
- }
3502
-
3503
- void ServerPromiseBasedCall::CancelWithError(absl::Status error) {
3504
- cancelled_.store(true, std::memory_order_relaxed);
3505
- Spawn(
3506
- "cancel_with_error",
3507
- [this, error = std::move(error)]() {
3508
- if (!send_trailing_metadata_.is_set()) {
3509
- auto md = ServerMetadataFromStatus(error);
3510
- md->Set(GrpcCallWasCancelled(), true);
3511
- send_trailing_metadata_.Set(std::move(md));
3512
- }
3513
- if (server_to_client_messages_ != nullptr) {
3514
- server_to_client_messages_->Close();
3515
- }
3516
- if (server_initial_metadata_ != nullptr) {
3517
- server_initial_metadata_->Close();
3518
- }
3519
- return Empty{};
3520
- },
3521
- [](Empty) {});
3522
- }
3523
- #endif
3524
-
3525
- #ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL
3526
- void ServerPromiseBasedCall::PublishInitialMetadata(
3527
- ClientMetadataHandle metadata,
3528
- grpc_metadata_array* publish_initial_metadata) {
3529
- if (grpc_call_trace.enabled()) {
3530
- gpr_log(GPR_INFO, "%s[call] PublishInitialMetadata: %s", DebugTag().c_str(),
3531
- metadata->DebugString().c_str());
3532
- }
3533
- PublishMetadataArray(metadata.get(), publish_initial_metadata, false);
3534
- client_initial_metadata_ = std::move(metadata);
3535
- }
3536
-
3537
- ArenaPromise<ServerMetadataHandle>
3538
- ServerPromiseBasedCall::MakeTopOfServerCallPromise(
3539
- CallArgs call_args, grpc_completion_queue* cq,
3540
- absl::FunctionRef<void(grpc_call* call)> publish) {
3541
- SetCompletionQueue(cq);
3542
- call_args.polling_entity->Set(
3543
- grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq)));
3544
- server_to_client_messages_ = call_args.server_to_client_messages;
3545
- client_to_server_messages_ = call_args.client_to_server_messages;
3546
- server_initial_metadata_ = call_args.server_initial_metadata;
3547
- absl::optional<Timestamp> deadline =
3548
- client_initial_metadata_->get(GrpcTimeoutMetadata());
3549
- if (deadline.has_value()) {
3550
- set_send_deadline(*deadline);
3551
- UpdateDeadline(*deadline);
3552
- }
3553
- ProcessIncomingInitialMetadata(*client_initial_metadata_);
3554
- ExternalRef();
3555
- publish(c_ptr());
3556
- return Seq(server_to_client_messages_->AwaitClosed(),
3557
- send_trailing_metadata_.Wait());
3558
- }
3559
-
3560
- ///////////////////////////////////////////////////////////////////////////////
3561
- // CallSpine based Server Call
3562
-
3563
- class ServerCallSpine final : public PipeBasedCallSpine,
3564
- public ServerCallContext,
3565
- public BasicPromiseBasedCall {
3566
- public:
3567
- ServerCallSpine(ClientMetadataHandle client_initial_metadata,
3568
- ServerInterface* server, Channel* channel, Arena* arena);
3569
-
3570
- // CallSpineInterface
3571
- Pipe<ClientMetadataHandle>& client_initial_metadata() override {
3572
- return client_initial_metadata_;
3573
- }
3574
- Pipe<ServerMetadataHandle>& server_initial_metadata() override {
3575
- return server_initial_metadata_;
3576
- }
3577
- Pipe<MessageHandle>& client_to_server_messages() override {
3578
- return client_to_server_messages_;
3579
- }
3580
- Pipe<MessageHandle>& server_to_client_messages() override {
3581
- return server_to_client_messages_;
3582
- }
3583
- Latch<ServerMetadataHandle>& cancel_latch() override { return cancel_latch_; }
3584
- Latch<bool>& was_cancelled_latch() override { return was_cancelled_latch_; }
3585
- Party& party() override { return *this; }
3586
- Arena* arena() override { return BasicPromiseBasedCall::arena(); }
3587
- void IncrementRefCount() override { InternalRef("CallSpine"); }
3588
- void Unref() override { InternalUnref("CallSpine"); }
3589
-
3590
- // PromiseBasedCall
3591
- void OrphanCall() override {
3592
- ResetDeadline();
3593
- CancelWithError(absl::CancelledError());
3594
- }
3595
- void CancelWithError(grpc_error_handle error) override {
3596
- SpawnInfallible("CancelWithError", [this, error = std::move(error)] {
3597
- auto status = ServerMetadataFromStatus(error);
3598
- status->Set(GrpcCallWasCancelled(), true);
3599
- PushServerTrailingMetadata(std::move(status));
3600
- return Empty{};
3601
- });
3602
- }
3603
- bool is_trailers_only() const override {
3604
- Crash("is_trailers_only not implemented for server calls");
3605
- }
3606
- absl::string_view GetServerAuthority() const override {
3607
- Crash("unimplemented");
3608
- }
3609
- grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
3610
- bool is_notify_tag_closure) override;
3611
-
3612
- bool Completed() final { Crash("unimplemented"); }
3613
- bool failed_before_recv_message() const final { Crash("unimplemented"); }
3614
-
3615
- ServerCallContext* server_call_context() override { return this; }
3616
- const void* server_stream_data() override { Crash("unimplemented"); }
3617
- void PublishInitialMetadata(
3618
- ClientMetadataHandle metadata,
3619
- grpc_metadata_array* publish_initial_metadata) override;
3620
- ArenaPromise<ServerMetadataHandle> MakeTopOfServerCallPromise(
3621
- CallArgs, grpc_completion_queue*,
3622
- absl::FunctionRef<void(grpc_call* call)>) override {
3623
- Crash("unimplemented");
3624
- }
3625
-
3626
- void V2HackToStartCallWithoutACallFilterStack() override {}
3627
-
3628
- ClientMetadata& UnprocessedClientInitialMetadata() override {
3629
- Crash("not for v2");
3630
- }
3631
-
3632
- bool RunParty() override {
3633
- ScopedContext ctx(this);
3634
- return Party::RunParty();
3635
- }
3636
-
3637
- private:
3638
- void CommitBatch(const grpc_op* ops, size_t nops, void* notify_tag,
3639
- bool is_notify_tag_closure);
3640
- StatusFlag FinishRecvMessage(NextResult<MessageHandle> result);
3641
-
3642
- std::string DebugTag() const override {
3643
- return absl::StrFormat("SERVER_CALL_SPINE[%p]: ", this);
3644
- }
3645
-
3646
- // Initial metadata from client to server
3647
- Pipe<ClientMetadataHandle> client_initial_metadata_;
3648
- // Initial metadata from server to client
3649
- Pipe<ServerMetadataHandle> server_initial_metadata_;
3650
- // Messages travelling from the application to the transport.
3651
- Pipe<MessageHandle> client_to_server_messages_;
3652
- // Messages travelling from the transport to the application.
3653
- Pipe<MessageHandle> server_to_client_messages_;
3654
- // Latch that can be set to terminate the call
3655
- Latch<ServerMetadataHandle> cancel_latch_;
3656
- Latch<bool> was_cancelled_latch_;
3657
- grpc_byte_buffer** recv_message_ = nullptr;
3658
- ClientMetadataHandle client_initial_metadata_stored_;
3659
- };
3660
-
3661
- ServerCallSpine::ServerCallSpine(ClientMetadataHandle client_initial_metadata,
3662
- ServerInterface* server, Channel* channel,
3663
- Arena* arena)
3664
- : BasicPromiseBasedCall(arena, 0, 1,
3665
- [channel, server]() -> grpc_call_create_args {
3666
- grpc_call_create_args args;
3667
- args.channel = channel->Ref();
3668
- args.server = server;
3669
- args.parent = nullptr;
3670
- args.propagation_mask = 0;
3671
- args.cq = nullptr;
3672
- args.pollset_set_alternative = nullptr;
3673
- args.server_transport_data =
3674
- &args; // Arbitrary non-null pointer
3675
- args.send_deadline = Timestamp::InfFuture();
3676
- return args;
3677
- }()),
3678
- client_initial_metadata_(arena),
3679
- server_initial_metadata_(arena),
3680
- client_to_server_messages_(arena),
3681
- server_to_client_messages_(arena) {
3682
- global_stats().IncrementServerCallsCreated();
3683
- ScopedContext ctx(this);
3684
- channel->channel_stack()->InitServerCallSpine(this);
3685
- SpawnGuarded("push_client_initial_metadata",
3686
- [this, md = std::move(client_initial_metadata)]() mutable {
3687
- return Map(client_initial_metadata_.sender.Push(std::move(md)),
3688
- [](bool r) { return StatusFlag(r); });
3689
- });
3690
- }
3691
-
3692
- void ServerCallSpine::PublishInitialMetadata(
3693
- ClientMetadataHandle metadata,
3694
- grpc_metadata_array* publish_initial_metadata) {
3695
- if (grpc_call_trace.enabled()) {
3696
- gpr_log(GPR_INFO, "%s[call] PublishInitialMetadata: %s", DebugTag().c_str(),
3697
- metadata->DebugString().c_str());
3698
- }
3699
- PublishMetadataArray(metadata.get(), publish_initial_metadata, false);
3700
- client_initial_metadata_stored_ = std::move(metadata);
3701
- }
3702
-
3703
- grpc_call_error ServerCallSpine::StartBatch(const grpc_op* ops, size_t nops,
3704
- void* notify_tag,
3705
- bool is_notify_tag_closure) {
3706
- if (nops == 0) {
3707
- EndOpImmediately(cq(), notify_tag, is_notify_tag_closure);
3708
- return GRPC_CALL_OK;
3709
- }
3710
- const grpc_call_error validation_result = ValidateServerBatch(ops, nops);
3711
- if (validation_result != GRPC_CALL_OK) {
3712
- return validation_result;
3713
- }
3714
- CommitBatch(ops, nops, notify_tag, is_notify_tag_closure);
3715
- return GRPC_CALL_OK;
3716
- }
3717
-
3718
- namespace {
3719
- template <typename SetupFn>
3720
- class MaybeOpImpl {
3721
- public:
3722
- using SetupResult = decltype(std::declval<SetupFn>()(grpc_op()));
3723
- using PromiseFactory = promise_detail::OncePromiseFactory<void, SetupResult>;
3724
- using Promise = typename PromiseFactory::Promise;
3725
- struct Dismissed {};
3726
- using State = absl::variant<Dismissed, PromiseFactory, Promise>;
3727
-
3728
- // op_ is garbage but shouldn't be uninitialized
3729
- MaybeOpImpl() : state_(Dismissed{}), op_(GRPC_OP_RECV_STATUS_ON_CLIENT) {}
3730
- MaybeOpImpl(SetupResult result, grpc_op_type op)
3731
- : state_(PromiseFactory(std::move(result))), op_(op) {}
3732
-
3733
- MaybeOpImpl(const MaybeOpImpl&) = delete;
3734
- MaybeOpImpl& operator=(const MaybeOpImpl&) = delete;
3735
- MaybeOpImpl(MaybeOpImpl&& /*other*/) noexcept { Crash("not implemented"); }
3736
- MaybeOpImpl& operator=(MaybeOpImpl&& other) noexcept {
3737
- op_ = other.op_;
3738
- if (absl::holds_alternative<Dismissed>(state_)) {
3739
- state_.template emplace<Dismissed>();
3740
- return *this;
3741
- }
3742
- // Can't move after first poll => Promise is not an option
3743
- state_.template emplace<PromiseFactory>(
3744
- std::move(absl::get<PromiseFactory>(other.state_)));
3745
- return *this;
3746
- }
3747
-
3748
- Poll<StatusFlag> operator()() {
3749
- if (absl::holds_alternative<Dismissed>(state_)) return Success{};
3750
- if (absl::holds_alternative<PromiseFactory>(state_)) {
3751
- auto& factory = absl::get<PromiseFactory>(state_);
3752
- auto promise = factory.Make();
3753
- state_.template emplace<Promise>(std::move(promise));
3754
- }
3755
- if (grpc_call_trace.enabled()) {
3756
- gpr_log(GPR_INFO, "%sBeginPoll %s",
3757
- Activity::current()->DebugTag().c_str(), OpName(op_).c_str());
3758
- }
3759
- auto& promise = absl::get<Promise>(state_);
3760
- auto r = poll_cast<StatusFlag>(promise());
3761
- if (grpc_call_trace.enabled()) {
3762
- gpr_log(GPR_INFO, "%sEndPoll %s --> %s",
3763
- Activity::current()->DebugTag().c_str(), OpName(op_).c_str(),
3764
- r.pending() ? "PENDING" : (r.value().ok() ? "OK" : "FAILURE"));
3765
- }
3766
- return r;
3767
- }
3768
-
3769
- private:
3770
- GPR_NO_UNIQUE_ADDRESS State state_;
3771
- GPR_NO_UNIQUE_ADDRESS grpc_op_type op_;
3772
-
3773
- static std::string OpName(grpc_op_type op) {
3774
- switch (op) {
3775
- case GRPC_OP_SEND_INITIAL_METADATA:
3776
- return "SendInitialMetadata";
3777
- case GRPC_OP_SEND_MESSAGE:
3778
- return "SendMessage";
3779
- case GRPC_OP_SEND_STATUS_FROM_SERVER:
3780
- return "SendStatusFromServer";
3781
- case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
3782
- return "SendCloseFromClient";
3783
- case GRPC_OP_RECV_MESSAGE:
3784
- return "RecvMessage";
3785
- case GRPC_OP_RECV_CLOSE_ON_SERVER:
3786
- return "RecvCloseOnServer";
3787
- case GRPC_OP_RECV_INITIAL_METADATA:
3788
- return "RecvInitialMetadata";
3789
- case GRPC_OP_RECV_STATUS_ON_CLIENT:
3790
- return "RecvStatusOnClient";
3791
- }
3792
- return absl::StrCat("UnknownOp(", op, ")");
3793
- }
3794
-
3795
- static State MoveState(State& state) {
3796
- if (absl::holds_alternative<Dismissed>(state)) return Dismissed{};
3797
- // Can't move after first poll => Promise is not an option
3798
- return std::move(absl::get<PromiseFactory>(state));
3799
- }
3800
- };
3801
-
3802
- // MaybeOp captures a fairly complicated dance we need to do for the batch API.
3803
- // We first check if an op is included or not, and if it is, we run the setup
3804
- // function in the context of the API call (NOT in the call party).
3805
- // This setup function returns a promise factory which we'll then run *in* the
3806
- // party to do initial setup, and have it return the promise that we'll
3807
- // ultimately poll on til completion.
3808
- // Once we express our surface API in terms of core internal types this whole
3809
- // dance will go away.
3810
- template <typename SetupFn>
3811
- auto MaybeOp(const grpc_op* ops, uint8_t idx, SetupFn setup) {
3812
- if (idx == 255) {
3813
- return MaybeOpImpl<SetupFn>();
3814
- } else {
3815
- return MaybeOpImpl<SetupFn>(setup(ops[idx]), ops[idx].op);
3816
- }
3817
- }
3818
-
3819
- template <typename F>
3820
- class PollBatchLogger {
3821
- public:
3822
- PollBatchLogger(void* tag, F f) : tag_(tag), f_(std::move(f)) {}
3823
-
3824
- auto operator()() {
3825
- if (grpc_call_trace.enabled()) {
3826
- gpr_log(GPR_INFO, "Poll batch %p", tag_);
3827
- }
3828
- auto r = f_();
3829
- if (grpc_call_trace.enabled()) {
3830
- gpr_log(GPR_INFO, "Poll batch %p --> %s", tag_, ResultString(r).c_str());
3831
- }
3832
- return r;
3833
- }
3834
-
3835
- private:
3836
- template <typename T>
3837
- static std::string ResultString(Poll<T> r) {
3838
- if (r.pending()) return "PENDING";
3839
- return ResultString(r.value());
3840
- }
3841
- static std::string ResultString(Empty) { return "DONE"; }
3842
-
3843
- void* tag_;
3844
- F f_;
3845
- };
3846
-
3847
- template <typename F>
3848
- PollBatchLogger<F> LogPollBatch(void* tag, F f) {
3849
- return PollBatchLogger<F>(tag, std::move(f));
3850
- }
3851
- } // namespace
3852
-
3853
- StatusFlag ServerCallSpine::FinishRecvMessage(
3854
- NextResult<MessageHandle> result) {
3855
- if (result.has_value()) {
3856
- MessageHandle& message = *result;
3857
- NoteLastMessageFlags(message->flags());
3858
- if ((message->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
3859
- (incoming_compression_algorithm() != GRPC_COMPRESS_NONE)) {
3860
- *recv_message_ = grpc_raw_compressed_byte_buffer_create(
3861
- nullptr, 0, incoming_compression_algorithm());
3862
- } else {
3863
- *recv_message_ = grpc_raw_byte_buffer_create(nullptr, 0);
3864
- }
3865
- grpc_slice_buffer_move_into(message->payload()->c_slice_buffer(),
3866
- &(*recv_message_)->data.raw.slice_buffer);
3867
- if (grpc_call_trace.enabled()) {
3868
- gpr_log(GPR_INFO,
3869
- "%s[call] RecvMessage: outstanding_recv "
3870
- "finishes: received %" PRIdPTR " byte message",
3871
- DebugTag().c_str(),
3872
- (*recv_message_)->data.raw.slice_buffer.length);
3873
- }
3874
- recv_message_ = nullptr;
3875
- return Success{};
3876
- }
3877
- if (result.cancelled()) {
3878
- if (grpc_call_trace.enabled()) {
3879
- gpr_log(GPR_INFO,
3880
- "%s[call] RecvMessage: outstanding_recv "
3881
- "finishes: received end-of-stream with error",
3882
- DebugTag().c_str());
3883
- }
3884
- *recv_message_ = nullptr;
3885
- recv_message_ = nullptr;
3886
- return Failure{};
3887
- }
3888
- if (grpc_call_trace.enabled()) {
3889
- gpr_log(GPR_INFO,
3890
- "%s[call] RecvMessage: outstanding_recv "
3891
- "finishes: received end-of-stream",
3892
- DebugTag().c_str());
3893
- }
3894
- *recv_message_ = nullptr;
3895
- recv_message_ = nullptr;
3896
- return Success{};
3897
- }
3898
-
3899
- void ServerCallSpine::CommitBatch(const grpc_op* ops, size_t nops,
3900
- void* notify_tag,
3901
- bool is_notify_tag_closure) {
3902
- std::array<uint8_t, 8> got_ops{255, 255, 255, 255, 255, 255, 255, 255};
3903
- for (size_t op_idx = 0; op_idx < nops; op_idx++) {
3904
- const grpc_op& op = ops[op_idx];
3905
- got_ops[op.op] = op_idx;
3906
- }
3907
- if (!is_notify_tag_closure) grpc_cq_begin_op(cq(), notify_tag);
3908
- auto send_initial_metadata = MaybeOp(
3909
- ops, got_ops[GRPC_OP_SEND_INITIAL_METADATA], [this](const grpc_op& op) {
3910
- auto metadata = arena()->MakePooled<ServerMetadata>();
3911
- PrepareOutgoingInitialMetadata(op, *metadata);
3912
- CToMetadata(op.data.send_initial_metadata.metadata,
3913
- op.data.send_initial_metadata.count, metadata.get());
3914
- if (grpc_call_trace.enabled()) {
3915
- gpr_log(GPR_INFO, "%s[call] Send initial metadata",
3916
- DebugTag().c_str());
3917
- }
3918
- return [this, metadata = std::move(metadata)]() mutable {
3919
- return Map(server_initial_metadata_.sender.Push(std::move(metadata)),
3920
- [this](bool r) {
3921
- server_initial_metadata_.sender.Close();
3922
- return StatusFlag(r);
3923
- });
3924
- };
3925
- });
3926
- auto send_message =
3927
- MaybeOp(ops, got_ops[GRPC_OP_SEND_MESSAGE], [this](const grpc_op& op) {
3928
- SliceBuffer send;
3929
- grpc_slice_buffer_swap(
3930
- &op.data.send_message.send_message->data.raw.slice_buffer,
3931
- send.c_slice_buffer());
3932
- auto msg = arena()->MakePooled<Message>(std::move(send), op.flags);
3933
- return [this, msg = std::move(msg)]() mutable {
3934
- return Map(server_to_client_messages_.sender.Push(std::move(msg)),
3935
- [](bool r) { return StatusFlag(r); });
3936
- };
3937
- });
3938
- auto send_trailing_metadata = MaybeOp(
3939
- ops, got_ops[GRPC_OP_SEND_STATUS_FROM_SERVER], [this](const grpc_op& op) {
3940
- auto metadata = arena()->MakePooled<ServerMetadata>();
3941
- CToMetadata(op.data.send_status_from_server.trailing_metadata,
3942
- op.data.send_status_from_server.trailing_metadata_count,
3943
- metadata.get());
3944
- metadata->Set(GrpcStatusMetadata(),
3945
- op.data.send_status_from_server.status);
3946
- if (auto* details = op.data.send_status_from_server.status_details) {
3947
- // TODO(ctiller): this should not be a copy, but we have
3948
- // callers that allocate and pass in a slice created with
3949
- // grpc_slice_from_static_string and then delete the string
3950
- // after passing it in, which shouldn't be a supported API.
3951
- metadata->Set(GrpcMessageMetadata(),
3952
- Slice(grpc_slice_copy(*details)));
3953
- }
3954
- CHECK(metadata != nullptr);
3955
- return [this, metadata = std::move(metadata)]() mutable {
3956
- CHECK(metadata != nullptr);
3957
- return [this,
3958
- metadata = std::move(metadata)]() mutable -> Poll<Success> {
3959
- CHECK(metadata != nullptr);
3960
- PushServerTrailingMetadata(std::move(metadata));
3961
- return Success{};
3962
- };
3963
- };
3964
- });
3965
- auto recv_message =
3966
- MaybeOp(ops, got_ops[GRPC_OP_RECV_MESSAGE], [this](const grpc_op& op) {
3967
- CHECK_EQ(recv_message_, nullptr);
3968
- recv_message_ = op.data.recv_message.recv_message;
3969
- return [this]() mutable {
3970
- return Map(client_to_server_messages_.receiver.Next(),
3971
- [this](NextResult<MessageHandle> msg) {
3972
- return FinishRecvMessage(std::move(msg));
3973
- });
3974
- };
3975
- });
3976
- auto primary_ops = AllOk<StatusFlag>(
3977
- TrySeq(AllOk<StatusFlag>(std::move(send_initial_metadata),
3978
- std::move(send_message)),
3979
- std::move(send_trailing_metadata)),
3980
- std::move(recv_message));
3981
- if (got_ops[GRPC_OP_RECV_CLOSE_ON_SERVER] != 255) {
3982
- auto recv_trailing_metadata = MaybeOp(
3983
- ops, got_ops[GRPC_OP_RECV_CLOSE_ON_SERVER], [this](const grpc_op& op) {
3984
- return [this, cancelled = op.data.recv_close_on_server.cancelled]() {
3985
- return Map(WasCancelled(),
3986
- [cancelled, this](bool result) -> Success {
3987
- ResetDeadline();
3988
- *cancelled = result ? 1 : 0;
3989
- return Success{};
3990
- });
3991
- };
3992
- });
3993
- SpawnInfallible(
3994
- "final-batch",
3995
- [primary_ops = std::move(primary_ops),
3996
- recv_trailing_metadata = std::move(recv_trailing_metadata),
3997
- is_notify_tag_closure, notify_tag, this]() mutable {
3998
- return LogPollBatch(
3999
- notify_tag,
4000
- Seq(std::move(primary_ops), std::move(recv_trailing_metadata),
4001
- [is_notify_tag_closure, notify_tag, this](StatusFlag) {
4002
- return WaitForCqEndOp(is_notify_tag_closure, notify_tag,
4003
- absl::OkStatus(), cq());
4004
- }));
4005
- });
4006
- } else {
4007
- SpawnInfallible("batch", [primary_ops = std::move(primary_ops),
4008
- is_notify_tag_closure, notify_tag,
4009
- this]() mutable {
4010
- return LogPollBatch(
4011
- notify_tag,
4012
- Seq(std::move(primary_ops),
4013
- [is_notify_tag_closure, notify_tag, this](StatusFlag r) {
4014
- return WaitForCqEndOp(is_notify_tag_closure, notify_tag,
4015
- StatusCast<grpc_error_handle>(r), cq());
4016
- }));
4017
- });
4018
- }
4019
- }
4020
-
4021
- RefCountedPtr<CallSpineInterface> MakeServerCall(
4022
- ClientMetadataHandle client_initial_metadata, ServerInterface* server,
4023
- Channel* channel, Arena* arena) {
4024
- return RefCountedPtr<ServerCallSpine>(arena->New<ServerCallSpine>(
4025
- std::move(client_initial_metadata), server, channel, arena));
4026
- }
4027
- #else
4028
- RefCountedPtr<CallSpineInterface> MakeServerCall(ClientMetadataHandle,
4029
- ServerInterface*, Channel*,
4030
- Arena*) {
4031
- Crash("not implemented");
4032
- }
4033
- #endif
4034
-
4035
- } // namespace grpc_core
4036
-
4037
- ///////////////////////////////////////////////////////////////////////////////
4038
- // C-based API
4039
-
4040
- void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
4041
- grpc_core::ExecCtx exec_ctx;
4042
- return grpc_core::Call::FromC(call)->arena()->Alloc(size);
4043
- }
4044
-
4045
- size_t grpc_call_get_initial_size_estimate() {
4046
- return grpc_core::FilterStackCall::InitialSizeEstimate();
4047
- }
4048
-
4049
- grpc_error_handle grpc_call_create(grpc_call_create_args* args,
4050
- grpc_call** out_call) {
4051
- #ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_CLIENT_CALL
4052
- if (grpc_core::IsPromiseBasedClientCallEnabled() &&
4053
- args->server_transport_data == nullptr && args->channel->is_promising()) {
4054
- return grpc_core::MakePromiseBasedCall<grpc_core::ClientPromiseBasedCall>(
4055
- args, out_call);
4056
- }
4057
- #endif
4058
- #ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL
4059
- if (grpc_core::IsPromiseBasedServerCallEnabled() &&
4060
- args->server_transport_data != nullptr && args->channel->is_promising()) {
4061
- return grpc_core::MakePromiseBasedCall<grpc_core::ServerPromiseBasedCall>(
4062
- args, out_call);
4063
- }
4064
- #endif
4065
- return grpc_core::FilterStackCall::Create(args, out_call);
4066
- }
4067
-
4068
- void grpc_call_set_completion_queue(grpc_call* call,
4069
- grpc_completion_queue* cq) {
4070
- grpc_core::Call::FromC(call)->SetCompletionQueue(cq);
4071
- }
4072
-
4073
- void grpc_call_ref(grpc_call* c) { grpc_core::Call::FromC(c)->ExternalRef(); }
4074
-
4075
- void grpc_call_unref(grpc_call* c) {
4076
- grpc_core::ExecCtx exec_ctx;
4077
- grpc_core::Call::FromC(c)->ExternalUnref();
4078
- }
4079
-
4080
- char* grpc_call_get_peer(grpc_call* call) {
4081
- return grpc_core::Call::FromC(call)->GetPeer();
4082
- }
4083
-
4084
- grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
4085
- return grpc_core::FilterStackCall::FromTopElem(surface_element)->c_ptr();
4086
- }
4087
-
4088
- grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
4089
- GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
4090
- CHECK_EQ(reserved, nullptr);
4091
- if (call == nullptr) {
4092
- return GRPC_CALL_ERROR;
4093
- }
4094
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
4095
- grpc_core::ExecCtx exec_ctx;
4096
- grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
4097
- return GRPC_CALL_OK;
4098
- }
4099
-
4100
- grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
4101
- grpc_status_code status,
4102
- const char* description,
4103
- void* reserved) {
4104
- GRPC_API_TRACE(
4105
- "grpc_call_cancel_with_status("
4106
- "c=%p, status=%d, description=%s, reserved=%p)",
4107
- 4, (c, (int)status, description, reserved));
4108
- CHECK_EQ(reserved, nullptr);
4109
- if (c == nullptr) {
4110
- return GRPC_CALL_ERROR;
4111
- }
4112
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
4113
- grpc_core::ExecCtx exec_ctx;
4114
- grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
4115
- return GRPC_CALL_OK;
4116
- }
4117
-
4118
- void grpc_call_cancel_internal(grpc_call* call) {
4119
- grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
4120
- }
4121
-
4122
- grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
4123
- grpc_call* call) {
4124
- return grpc_core::Call::FromC(call)->test_only_compression_algorithm();
4125
- }
4126
-
4127
- uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
4128
- return grpc_core::Call::FromC(call)->test_only_message_flags();
4129
- }
4130
-
4131
- uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
4132
- return grpc_core::Call::FromC(call)
4133
- ->encodings_accepted_by_peer()
4134
- .ToLegacyBitmask();
4135
- }
4136
-
4137
- grpc_core::Arena* grpc_call_get_arena(grpc_call* call) {
4138
- return grpc_core::Call::FromC(call)->arena();
4139
- }
4140
-
4141
- grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
4142
- return grpc_core::Call::FromC(call)->call_stack();
4143
- }
4144
-
4145
- grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
4146
- size_t nops, void* tag, void* reserved) {
4147
- GRPC_API_TRACE(
4148
- "grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, "
4149
- "reserved=%p)",
4150
- 5, (call, ops, (unsigned long)nops, tag, reserved));
4151
-
4152
- if (reserved != nullptr || call == nullptr) {
4153
- return GRPC_CALL_ERROR;
4154
- } else {
4155
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
4156
- grpc_core::ExecCtx exec_ctx;
4157
- return grpc_core::Call::FromC(call)->StartBatch(ops, nops, tag, false);
4158
- }
4159
- }
4160
-
4161
- grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
4162
- const grpc_op* ops,
4163
- size_t nops,
4164
- grpc_closure* closure) {
4165
- return grpc_core::Call::FromC(call)->StartBatch(ops, nops, closure, true);
486
+ void grpc_call_tracer_set(grpc_call* call,
487
+ grpc_core::ClientCallTracer* tracer) {
488
+ grpc_core::Arena* arena = grpc_call_get_arena(call);
489
+ return arena->SetContext<grpc_core::CallTracerAnnotationInterface>(tracer);
4166
490
  }
4167
491
 
4168
- void grpc_call_context_set(grpc_call* call, grpc_context_index elem,
4169
- void* value, void (*destroy)(void* value)) {
4170
- return grpc_core::Call::FromC(call)->ContextSet(elem, value, destroy);
492
+ void grpc_call_tracer_set_and_manage(grpc_call* call,
493
+ grpc_core::ClientCallTracer* tracer) {
494
+ grpc_core::Arena* arena = grpc_call_get_arena(call);
495
+ arena->ManagedNew<ClientCallTracerWrapper>(tracer);
496
+ return arena->SetContext<grpc_core::CallTracerAnnotationInterface>(tracer);
4171
497
  }
4172
498
 
4173
- void* grpc_call_context_get(grpc_call* call, grpc_context_index elem) {
4174
- return grpc_core::Call::FromC(call)->ContextGet(elem);
499
+ void* grpc_call_tracer_get(grpc_call* call) {
500
+ grpc_core::Arena* arena = grpc_call_get_arena(call);
501
+ auto* call_tracer =
502
+ arena->GetContext<grpc_core::CallTracerAnnotationInterface>();
503
+ return call_tracer;
4175
504
  }
4176
505
 
4177
506
  uint8_t grpc_call_is_client(grpc_call* call) {
@@ -4237,5 +566,8 @@ const char* grpc_call_error_to_string(grpc_call_error error) {
4237
566
 
4238
567
  void grpc_call_run_in_event_engine(const grpc_call* call,
4239
568
  absl::AnyInvocable<void()> cb) {
4240
- grpc_core::Call::FromC(call)->event_engine()->Run(std::move(cb));
569
+ grpc_core::Call::FromC(call)
570
+ ->arena()
571
+ ->GetContext<grpc_event_engine::experimental::EventEngine>()
572
+ ->Run(std::move(cb));
4241
573
  }