grpc 1.64.3 → 1.70.1

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 (3070) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +374 -342
  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 +2 -2
  7. data/include/grpc/event_engine/event_engine.h +39 -15
  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/support/alloc.h +1 -2
  27. data/include/grpc/support/atm.h +0 -13
  28. data/include/grpc/support/json.h +1 -2
  29. data/include/grpc/support/log.h +37 -64
  30. data/include/grpc/support/metrics.h +21 -6
  31. data/include/grpc/support/port_platform.h +31 -1
  32. data/include/grpc/support/sync_generic.h +2 -4
  33. data/include/grpc/support/sync_posix.h +1 -2
  34. data/include/grpc/support/time.h +1 -2
  35. data/src/core/call/request_buffer.cc +224 -0
  36. data/src/core/call/request_buffer.h +192 -0
  37. data/src/core/channelz/channel_trace.cc +6 -7
  38. data/src/core/channelz/channel_trace.h +6 -8
  39. data/src/core/channelz/channelz.cc +8 -10
  40. data/src/core/channelz/channelz.h +15 -17
  41. data/src/core/channelz/channelz_registry.cc +10 -11
  42. data/src/core/channelz/channelz_registry.h +4 -5
  43. data/src/core/client_channel/backup_poller.cc +25 -16
  44. data/src/core/client_channel/client_channel.cc +1425 -0
  45. data/src/core/client_channel/client_channel.h +245 -0
  46. data/src/core/client_channel/client_channel_args.h +21 -0
  47. data/src/core/client_channel/client_channel_factory.cc +2 -2
  48. data/src/core/client_channel/client_channel_factory.h +1 -2
  49. data/src/core/client_channel/client_channel_filter.cc +351 -864
  50. data/src/core/client_channel/client_channel_filter.h +24 -79
  51. data/src/core/client_channel/client_channel_internal.h +23 -9
  52. data/src/core/client_channel/client_channel_plugin.cc +3 -18
  53. data/src/core/client_channel/client_channel_service_config.cc +2 -3
  54. data/src/core/client_channel/client_channel_service_config.h +7 -9
  55. data/src/core/client_channel/config_selector.h +21 -22
  56. data/src/core/client_channel/connector.h +3 -3
  57. data/src/core/client_channel/direct_channel.cc +83 -0
  58. data/src/core/client_channel/direct_channel.h +101 -0
  59. data/src/core/client_channel/dynamic_filters.cc +16 -14
  60. data/src/core/client_channel/dynamic_filters.h +9 -10
  61. data/src/core/client_channel/global_subchannel_pool.cc +2 -2
  62. data/src/core/client_channel/global_subchannel_pool.h +2 -3
  63. data/src/core/client_channel/lb_metadata.cc +120 -0
  64. data/src/core/client_channel/lb_metadata.h +55 -0
  65. data/src/core/client_channel/load_balanced_call_destination.cc +273 -0
  66. data/src/core/client_channel/load_balanced_call_destination.h +48 -0
  67. data/src/core/client_channel/local_subchannel_pool.cc +2 -5
  68. data/src/core/client_channel/local_subchannel_pool.h +1 -1
  69. data/src/core/client_channel/retry_filter.cc +8 -17
  70. data/src/core/client_channel/retry_filter.h +6 -15
  71. data/src/core/client_channel/retry_filter_legacy_call_data.cc +209 -319
  72. data/src/core/client_channel/retry_filter_legacy_call_data.h +11 -14
  73. data/src/core/client_channel/retry_interceptor.cc +406 -0
  74. data/src/core/client_channel/retry_interceptor.h +157 -0
  75. data/src/core/client_channel/retry_service_config.cc +10 -13
  76. data/src/core/client_channel/retry_service_config.h +19 -8
  77. data/src/core/client_channel/retry_throttle.cc +34 -20
  78. data/src/core/client_channel/retry_throttle.h +6 -9
  79. data/src/core/client_channel/subchannel.cc +283 -165
  80. data/src/core/client_channel/subchannel.h +48 -40
  81. data/src/core/client_channel/subchannel_interface_internal.h +1 -1
  82. data/src/core/client_channel/subchannel_pool_interface.cc +1 -5
  83. data/src/core/client_channel/subchannel_pool_interface.h +4 -7
  84. data/src/core/client_channel/subchannel_stream_client.cc +43 -59
  85. data/src/core/client_channel/subchannel_stream_client.h +10 -14
  86. data/src/core/config/config_vars.cc +151 -0
  87. data/src/core/config/config_vars.h +128 -0
  88. data/src/core/config/config_vars_non_generated.cc +49 -0
  89. data/src/core/config/core_configuration.cc +111 -0
  90. data/src/core/config/core_configuration.h +242 -0
  91. data/src/core/config/load_config.cc +77 -0
  92. data/src/core/config/load_config.h +54 -0
  93. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +23 -28
  94. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +3 -1
  95. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  96. data/src/core/ext/filters/census/grpc_context.cc +7 -10
  97. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +1 -2
  98. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -1
  99. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +36 -47
  100. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +12 -8
  101. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +17 -20
  102. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +4 -3
  103. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +2 -3
  104. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +7 -10
  105. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +205 -0
  106. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +97 -0
  107. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +80 -0
  108. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +86 -0
  109. data/src/core/ext/filters/http/client/http_client_filter.cc +14 -8
  110. data/src/core/ext/filters/http/client/http_client_filter.h +3 -1
  111. data/src/core/ext/filters/http/client_authority_filter.cc +9 -8
  112. data/src/core/ext/filters/http/client_authority_filter.h +3 -1
  113. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -2
  114. data/src/core/ext/filters/http/message_compress/compression_filter.cc +50 -46
  115. data/src/core/ext/filters/http/message_compress/compression_filter.h +8 -4
  116. data/src/core/ext/filters/http/server/http_server_filter.cc +16 -13
  117. data/src/core/ext/filters/http/server/http_server_filter.h +3 -1
  118. data/src/core/ext/filters/message_size/message_size_filter.cc +33 -33
  119. data/src/core/ext/filters/message_size/message_size_filter.h +12 -10
  120. data/src/core/ext/filters/rbac/rbac_filter.cc +9 -12
  121. data/src/core/ext/filters/rbac/rbac_filter.h +3 -2
  122. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -10
  123. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -5
  124. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -16
  125. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +5 -4
  126. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +2 -3
  127. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +6 -8
  128. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -4
  129. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -2
  130. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +76 -108
  131. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +5 -11
  132. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +985 -371
  133. data/src/core/ext/transport/chttp2/server/chttp2_server.h +222 -13
  134. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +21 -33
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -3
  136. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -7
  137. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  138. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +53 -0
  139. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +72 -0
  140. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +645 -519
  141. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +15 -16
  142. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +2 -3
  143. data/src/core/ext/transport/chttp2/transport/decode_huff.h +4 -4
  144. data/src/core/ext/transport/chttp2/transport/flow_control.cc +8 -13
  145. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -7
  146. data/src/core/ext/transport/chttp2/transport/frame.cc +22 -5
  147. data/src/core/ext/transport/chttp2/transport/frame.h +13 -4
  148. data/src/core/ext/transport/chttp2/transport/frame_data.cc +19 -20
  149. data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -5
  150. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -6
  151. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  152. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +14 -19
  153. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  154. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -18
  155. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -5
  156. data/src/core/ext/transport/chttp2/transport/frame_security.cc +80 -0
  157. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  158. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +36 -20
  159. data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -4
  160. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +28 -7
  161. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -3
  162. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  163. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +19 -21
  164. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +19 -15
  165. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -3
  166. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +4 -5
  167. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -4
  168. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +4 -7
  169. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +23 -27
  170. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -6
  171. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +41 -16
  172. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +29 -10
  173. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -3
  174. data/src/core/ext/transport/chttp2/transport/http2_settings.h +11 -5
  175. data/src/core/ext/transport/chttp2/transport/internal.h +71 -79
  176. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  177. data/src/core/ext/transport/chttp2/transport/parsing.cc +123 -109
  178. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +3 -3
  179. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +3 -3
  180. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -5
  181. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -7
  182. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +33 -18
  183. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +7 -8
  184. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +52 -16
  185. data/src/core/ext/transport/chttp2/transport/stream_lists.h +65 -0
  186. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  187. data/src/core/ext/transport/chttp2/transport/varint.h +1 -3
  188. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -3
  189. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +3 -4
  190. data/src/core/ext/transport/chttp2/transport/writing.cc +145 -120
  191. data/src/core/ext/transport/inproc/inproc_transport.cc +150 -68
  192. data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
  193. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +121 -122
  194. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
  195. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +46 -15
  196. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +40 -18
  197. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +10 -4
  198. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +59 -27
  199. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +36 -18
  200. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +9 -4
  201. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +50 -15
  202. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +44 -22
  203. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +10 -4
  204. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +190 -55
  205. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +162 -84
  206. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +24 -4
  207. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +11 -5
  208. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +14 -4
  209. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +7 -4
  210. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +19 -6
  211. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +18 -8
  212. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +7 -4
  213. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +11 -10
  214. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +7 -1
  215. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +6 -4
  216. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +8 -7
  217. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +7 -1
  218. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +6 -4
  219. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +8 -7
  220. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +7 -1
  221. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +6 -4
  222. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +129 -82
  223. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +39 -27
  224. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +7 -4
  225. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +9 -6
  226. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +10 -4
  227. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +6 -4
  228. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +9 -8
  229. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +7 -1
  230. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +5 -4
  231. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +18 -8
  232. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +13 -6
  233. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +6 -4
  234. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +91 -34
  235. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +114 -48
  236. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +21 -4
  237. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +544 -254
  238. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +265 -149
  239. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +29 -4
  240. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +41 -14
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +31 -17
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +8 -4
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +529 -141
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +270 -143
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +31 -4
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +12 -7
  247. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +11 -5
  248. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +6 -4
  249. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +171 -27
  250. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +54 -27
  251. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +6 -4
  252. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +127 -35
  253. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +125 -63
  254. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +20 -4
  255. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +67 -27
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +60 -26
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +13 -4
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +11 -6
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +11 -5
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +6 -4
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +871 -72
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +346 -75
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +41 -4
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +67 -25
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +57 -27
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +12 -4
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +8 -5
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +10 -4
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +6 -4
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +9 -6
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +10 -4
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +6 -4
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +11 -5
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +14 -4
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +7 -4
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +201 -62
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +120 -53
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +19 -4
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +196 -62
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +95 -53
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +14 -4
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +13 -5
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +11 -5
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +6 -4
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +10 -7
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +10 -4
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +6 -4
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +292 -76
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +156 -80
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +21 -4
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +10 -7
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +14 -4
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +7 -4
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +15 -7
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +15 -5
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +7 -4
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +244 -31
  301. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +79 -21
  302. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +13 -4
  303. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +23 -11
  304. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +17 -7
  305. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +7 -4
  306. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +11 -6
  307. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +11 -5
  308. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +6 -4
  309. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +42 -11
  310. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +35 -17
  311. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +9 -4
  312. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +106 -34
  313. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +69 -37
  314. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +12 -4
  315. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +281 -37
  316. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +81 -27
  317. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +12 -4
  318. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +8 -5
  319. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +10 -4
  320. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +6 -4
  321. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +142 -47
  322. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +90 -47
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +15 -4
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +92 -129
  325. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +66 -57
  326. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +11 -5
  327. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +178 -13
  328. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +46 -14
  329. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +6 -4
  330. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +14 -7
  331. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -6
  332. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +7 -4
  333. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +14 -9
  334. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +11 -5
  335. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +6 -4
  336. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +51 -22
  337. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +58 -24
  338. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +13 -4
  339. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +70 -22
  340. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +71 -29
  341. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +15 -4
  342. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +311 -38
  343. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +141 -63
  344. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +18 -4
  345. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +61 -13
  346. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +33 -19
  347. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +8 -4
  348. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +843 -237
  349. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +539 -270
  350. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +65 -4
  351. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +20 -10
  352. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +22 -8
  353. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +8 -4
  354. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +100 -35
  355. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +95 -45
  356. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +17 -4
  357. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +118 -16
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +43 -12
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +8 -4
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +9 -6
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +10 -4
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +6 -4
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +12 -7
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +17 -7
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +7 -4
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +10 -7
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +10 -4
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +6 -4
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +20 -8
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +13 -7
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +6 -4
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +8 -5
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +10 -4
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +6 -4
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +17 -10
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +18 -8
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +7 -4
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +5 -6
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +3 -2
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +5 -5
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +19 -10
  382. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +19 -9
  383. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +7 -4
  384. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +14 -11
  385. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -4
  386. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +6 -4
  387. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +216 -102
  388. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +124 -57
  389. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +21 -4
  390. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +5 -4
  391. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +7 -1
  392. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +6 -4
  393. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +24 -11
  394. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +33 -11
  395. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +10 -4
  396. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +42 -22
  397. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -13
  398. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +8 -4
  399. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +444 -0
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +135 -0
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +38 -0
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +56 -13
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +29 -13
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +7 -4
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +29 -12
  406. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +20 -10
  407. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +7 -4
  408. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +13 -8
  409. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +17 -7
  410. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +7 -4
  411. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -134
  412. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +209 -121
  413. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +26 -4
  414. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +8 -5
  415. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +10 -4
  416. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +6 -4
  417. 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
  418. 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
  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.h +6 -4
  420. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +31 -14
  421. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +39 -17
  422. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +10 -4
  423. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +6 -5
  424. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +7 -1
  425. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +6 -4
  426. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +22 -11
  427. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +14 -8
  428. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +6 -4
  429. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +8 -5
  430. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +10 -4
  431. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +6 -4
  432. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +105 -0
  433. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +51 -0
  434. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +32 -0
  435. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -4
  436. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +3 -1
  437. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +5 -4
  438. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +170 -31
  439. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +83 -37
  440. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +14 -4
  441. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +25 -12
  442. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +27 -13
  443. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +8 -4
  444. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +214 -63
  445. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +100 -61
  446. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +12 -4
  447. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +14 -6
  448. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +17 -7
  449. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +7 -4
  450. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +58 -20
  451. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +44 -26
  452. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +9 -4
  453. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +5 -4
  454. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +7 -1
  455. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +6 -4
  456. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +373 -58
  457. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +144 -61
  458. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +21 -4
  459. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +18 -8
  460. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +18 -8
  461. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +7 -4
  462. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +67 -25
  463. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +47 -25
  464. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +10 -4
  465. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +10 -7
  466. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +10 -4
  467. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +6 -4
  468. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +16 -6
  469. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +26 -8
  470. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +9 -4
  471. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +9 -6
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +10 -4
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +6 -4
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +10 -9
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +23 -1
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +10 -4
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +16 -8
  478. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +15 -5
  479. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +7 -4
  480. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +13 -5
  481. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +11 -5
  482. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +6 -4
  483. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +9 -6
  484. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +10 -4
  485. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +6 -4
  486. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +8 -5
  487. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +10 -4
  488. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +6 -4
  489. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +16 -9
  490. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +24 -10
  491. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +8 -4
  492. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +5 -4
  493. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +11 -1
  494. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +7 -4
  495. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +51 -10
  496. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +30 -9
  497. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +7 -4
  498. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +14 -6
  499. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +15 -5
  500. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +7 -4
  501. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +30 -12
  502. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +32 -14
  503. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +9 -4
  504. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +24 -10
  505. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +40 -10
  506. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +12 -4
  507. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +30 -17
  508. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +33 -11
  509. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +10 -4
  510. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +12 -7
  511. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +19 -5
  512. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +8 -4
  513. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +5 -4
  514. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +3 -1
  515. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +5 -4
  516. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +6 -5
  517. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +7 -1
  518. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +6 -4
  519. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +8 -7
  520. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +11 -1
  521. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +7 -4
  522. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +11 -10
  523. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +15 -1
  524. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +8 -4
  525. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +14 -9
  526. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +15 -5
  527. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +7 -4
  528. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +5 -4
  529. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +3 -1
  530. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +5 -4
  531. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +8 -7
  532. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +7 -1
  533. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +6 -4
  534. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +12 -7
  535. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +11 -5
  536. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +6 -4
  537. data/src/core/ext/upb-gen/google/api/annotations.upb.h +17 -7
  538. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +5 -2
  539. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +5 -4
  540. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +135 -36
  541. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +121 -56
  542. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +18 -4
  543. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +525 -69
  544. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +202 -68
  545. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +23 -4
  546. data/src/core/ext/upb-gen/google/api/http.upb.h +30 -16
  547. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -8
  548. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +8 -4
  549. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +12 -6
  550. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +10 -4
  551. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +6 -4
  552. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +8 -6
  553. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +7 -1
  554. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +6 -4
  555. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +583 -181
  556. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +376 -215
  557. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +56 -21
  558. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +8 -6
  559. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +7 -1
  560. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +6 -4
  561. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +6 -4
  562. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +7 -1
  563. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +6 -4
  564. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +33 -10
  565. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +32 -14
  566. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +9 -4
  567. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +8 -6
  568. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +7 -1
  569. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +6 -4
  570. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +15 -13
  571. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +39 -1
  572. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +14 -4
  573. data/src/core/ext/upb-gen/google/rpc/status.upb.h +12 -6
  574. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +10 -4
  575. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +6 -4
  576. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +19 -10
  577. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +15 -5
  578. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +7 -4
  579. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +98 -39
  580. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +87 -37
  581. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +17 -4
  582. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +14 -8
  583. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +15 -5
  584. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -4
  585. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +8 -6
  586. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +11 -1
  587. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +7 -4
  588. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +47 -22
  589. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +58 -20
  590. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +14 -4
  591. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +16 -8
  592. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +18 -4
  593. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +8 -4
  594. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +72 -19
  595. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +60 -22
  596. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +14 -4
  597. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +69 -23
  598. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +31 -12
  599. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +8 -4
  600. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +19 -9
  601. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +13 -6
  602. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +6 -4
  603. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +6 -5
  604. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +4 -1
  605. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +5 -4
  606. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +19 -9
  607. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +13 -6
  608. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +6 -4
  609. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +18 -8
  610. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +13 -6
  611. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +6 -4
  612. data/src/core/ext/upb-gen/validate/validate.upb.h +264 -172
  613. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +185 -87
  614. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +29 -5
  615. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +69 -23
  616. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +31 -12
  617. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +8 -4
  618. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +19 -9
  619. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +13 -6
  620. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +6 -4
  621. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +6 -5
  622. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +4 -1
  623. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +5 -4
  624. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +46 -18
  625. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +32 -11
  626. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +9 -4
  627. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +18 -8
  628. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +13 -6
  629. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +6 -4
  630. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +6 -5
  631. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +7 -1
  632. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +6 -4
  633. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +9 -6
  634. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +10 -4
  635. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +6 -4
  636. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +16 -9
  637. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +18 -8
  638. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +7 -4
  639. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +11 -4
  640. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +14 -4
  641. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +7 -4
  642. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +9 -6
  643. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +10 -4
  644. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +6 -4
  645. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +12 -7
  646. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +11 -5
  647. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +6 -4
  648. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +21 -11
  649. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +18 -8
  650. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +7 -4
  651. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +11 -8
  652. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +10 -4
  653. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +6 -4
  654. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +29 -10
  655. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +24 -6
  656. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +9 -4
  657. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +8 -5
  658. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +10 -4
  659. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +6 -4
  660. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +9 -6
  661. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +10 -4
  662. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +6 -4
  663. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +13 -5
  664. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +17 -7
  665. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +7 -4
  666. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +5 -4
  667. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +7 -1
  668. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +6 -4
  669. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +19 -6
  670. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +18 -8
  671. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +7 -4
  672. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +81 -22
  673. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +85 -43
  674. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +15 -4
  675. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +44 -7
  676. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +48 -22
  677. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +11 -4
  678. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +9 -6
  679. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +14 -4
  680. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +7 -4
  681. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +18 -10
  682. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +17 -7
  683. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +7 -4
  684. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +17 -8
  685. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +19 -9
  686. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +7 -4
  687. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +12 -10
  688. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +15 -1
  689. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +8 -4
  690. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +9 -6
  691. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +10 -4
  692. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +6 -4
  693. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +2 -1
  694. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -4
  695. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +2 -1
  696. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -4
  697. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +2 -1
  698. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -4
  699. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +13 -11
  700. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -4
  701. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +2 -1
  702. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -4
  703. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +2 -1
  704. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -4
  705. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +2 -1
  706. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -4
  707. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +2 -1
  708. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -4
  709. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +2 -1
  710. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -4
  711. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +88 -82
  712. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -4
  713. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +2 -1
  714. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -4
  715. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +2 -1
  716. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -4
  717. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +2 -1
  718. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -4
  719. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +63 -61
  720. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -4
  721. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +223 -211
  722. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +10 -4
  723. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -1
  724. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -4
  725. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +419 -393
  726. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +10 -4
  727. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +2 -1
  728. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -4
  729. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +116 -106
  730. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -4
  731. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +2 -1
  732. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -4
  733. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +2 -1
  734. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -4
  735. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +2 -1
  736. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -4
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +201 -147
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +35 -4
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +12 -12
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -4
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +2 -1
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -4
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +2 -1
  744. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -4
  745. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +2 -1
  746. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -4
  747. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +175 -165
  748. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -4
  749. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +199 -188
  750. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -4
  751. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +2 -1
  752. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -4
  753. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +2 -1
  754. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -4
  755. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +270 -256
  756. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -4
  757. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -1
  758. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -4
  759. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +2 -1
  760. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -4
  761. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +46 -0
  762. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +33 -0
  763. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +31 -20
  764. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +20 -4
  765. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -1
  766. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -4
  767. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -1
  768. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -4
  769. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -1
  770. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -4
  771. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +41 -37
  772. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -4
  773. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +124 -94
  774. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +10 -4
  775. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +2 -1
  776. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -4
  777. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +43 -40
  778. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -4
  779. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +60 -66
  780. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -9
  781. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +75 -56
  782. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -4
  783. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -1
  784. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -4
  785. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +2 -1
  786. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -4
  787. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +2 -1
  788. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -4
  789. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +51 -49
  790. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -4
  791. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +119 -97
  792. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +10 -4
  793. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +2 -1
  794. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -4
  795. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +910 -894
  796. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +10 -4
  797. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +2 -1
  798. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -4
  799. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +2 -1
  800. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -4
  801. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +32 -21
  802. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +10 -4
  803. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +20 -18
  804. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -4
  805. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -1
  806. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -4
  807. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +2 -1
  808. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -4
  809. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +2 -1
  810. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -4
  811. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +2 -1
  812. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -4
  813. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +2 -1
  814. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -4
  815. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +17 -19
  816. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -4
  817. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +2 -1
  818. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -4
  819. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +23 -21
  820. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -4
  821. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +147 -143
  822. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -4
  823. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -1
  824. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -4
  825. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -1
  826. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -4
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -1
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -4
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +87 -0
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +48 -0
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +38 -34
  832. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -4
  833. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -1
  834. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -4
  835. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +2 -1
  836. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -4
  837. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +465 -459
  838. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -4
  839. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +2 -1
  840. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -4
  841. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +50 -0
  842. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +33 -0
  843. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -1
  844. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -4
  845. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +96 -88
  846. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +10 -4
  847. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -1
  848. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -4
  849. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +204 -192
  850. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -4
  851. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +2 -1
  852. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -4
  853. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +2 -1
  854. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -4
  855. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +2 -1
  856. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -4
  857. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +150 -136
  858. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +10 -4
  859. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -1
  860. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -4
  861. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +25 -23
  862. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -4
  863. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +2 -1
  864. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -4
  865. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +2 -1
  866. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -4
  867. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +2 -1
  868. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -4
  869. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  870. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  871. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +2 -1
  872. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -4
  873. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +2 -1
  874. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -4
  875. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +2 -1
  876. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -4
  877. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +2 -1
  878. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -4
  879. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +2 -1
  880. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -4
  881. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +2 -1
  882. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -4
  883. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +41 -34
  884. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -4
  885. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +2 -1
  886. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -4
  887. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +2 -1
  888. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -4
  889. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +2 -1
  890. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -4
  891. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -1
  892. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -4
  893. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +2 -1
  894. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -4
  895. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +2 -1
  896. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -4
  897. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +2 -1
  898. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -4
  899. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +2 -1
  900. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -4
  901. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +2 -1
  902. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -4
  903. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +2 -1
  904. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -4
  905. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +2 -1
  906. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -4
  907. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +2 -1
  908. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -4
  909. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +2 -1
  910. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -4
  911. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +2 -1
  912. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -4
  913. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +110 -108
  914. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -4
  915. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +103 -79
  916. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +15 -4
  917. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +2 -1
  918. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -4
  919. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +2 -1
  920. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -4
  921. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +2 -1
  922. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -4
  923. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +485 -458
  924. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -4
  925. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +2 -1
  926. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -4
  927. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +2 -1
  928. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -4
  929. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +2 -1
  930. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -4
  931. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +2 -1
  932. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -4
  933. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +2 -1
  934. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -4
  935. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +2 -1
  936. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -4
  937. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +2 -1
  938. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -4
  939. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +2 -1
  940. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -4
  941. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +2 -1
  942. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -4
  943. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +2 -1
  944. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -4
  945. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +2 -1
  946. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -4
  947. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +2 -1
  948. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -4
  949. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +2 -1
  950. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -4
  951. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +2 -1
  952. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -4
  953. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +2 -1
  954. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -4
  955. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +2 -1
  956. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -4
  957. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +2 -1
  958. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -4
  959. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +2 -1
  960. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -4
  961. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +2 -1
  962. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -4
  963. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +2 -1
  964. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -4
  965. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +2 -1
  966. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -4
  967. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +2 -1
  968. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -4
  969. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +2 -1
  970. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -4
  971. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +2 -1
  972. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -4
  973. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +2 -1
  974. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -4
  975. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +2 -1
  976. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -4
  977. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +2 -1
  978. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -4
  979. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +2 -1
  980. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -4
  981. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  982. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  983. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +2 -1
  984. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -4
  985. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +2 -1
  986. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -4
  987. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +2 -1
  988. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -4
  989. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +2 -1
  990. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -4
  991. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +2 -1
  992. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -4
  993. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +2 -1
  994. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -4
  995. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +2 -1
  996. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -4
  997. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +2 -1
  998. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -4
  999. data/src/core/filter/blackboard.cc +33 -0
  1000. data/src/core/filter/blackboard.h +70 -0
  1001. data/src/core/filter/filter_args.h +112 -0
  1002. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +13 -12
  1003. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h +1 -1
  1004. data/src/core/handshaker/handshaker.cc +127 -159
  1005. data/src/core/handshaker/handshaker.h +58 -52
  1006. data/src/core/handshaker/handshaker_registry.cc +1 -2
  1007. data/src/core/handshaker/handshaker_registry.h +2 -2
  1008. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +119 -159
  1009. data/src/core/handshaker/http_connect/http_connect_handshaker.h +1 -1
  1010. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -37
  1011. data/src/core/handshaker/http_connect/http_proxy_mapper.h +3 -4
  1012. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +57 -0
  1013. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +46 -0
  1014. data/src/core/handshaker/proxy_mapper.h +2 -3
  1015. data/src/core/handshaker/proxy_mapper_registry.cc +2 -2
  1016. data/src/core/handshaker/proxy_mapper_registry.h +2 -3
  1017. data/src/core/handshaker/security/secure_endpoint.cc +95 -82
  1018. data/src/core/handshaker/security/secure_endpoint.h +6 -7
  1019. data/src/core/handshaker/security/security_handshaker.cc +167 -221
  1020. data/src/core/handshaker/security/security_handshaker.h +3 -4
  1021. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +48 -62
  1022. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h +1 -1
  1023. data/src/core/lib/address_utils/parse_address.cc +30 -43
  1024. data/src/core/lib/address_utils/parse_address.h +2 -4
  1025. data/src/core/lib/address_utils/sockaddr_utils.cc +9 -12
  1026. data/src/core/lib/address_utils/sockaddr_utils.h +1 -3
  1027. data/src/core/lib/channel/call_finalization.h +2 -2
  1028. data/src/core/lib/channel/channel_args.cc +17 -23
  1029. data/src/core/lib/channel/channel_args.h +35 -21
  1030. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  1031. data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
  1032. data/src/core/lib/channel/channel_stack.cc +13 -76
  1033. data/src/core/lib/channel/channel_stack.h +26 -61
  1034. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  1035. data/src/core/lib/channel/channel_stack_builder.h +3 -9
  1036. data/src/core/lib/channel/channel_stack_builder_impl.cc +5 -150
  1037. data/src/core/lib/channel/channel_stack_builder_impl.h +14 -4
  1038. data/src/core/lib/channel/connected_channel.cc +47 -689
  1039. data/src/core/lib/channel/promise_based_filter.cc +181 -251
  1040. data/src/core/lib/channel/promise_based_filter.h +149 -559
  1041. data/src/core/lib/channel/status_util.cc +2 -4
  1042. data/src/core/lib/channel/status_util.h +3 -3
  1043. data/src/core/lib/compression/compression.cc +7 -9
  1044. data/src/core/lib/compression/compression_internal.cc +5 -8
  1045. data/src/core/lib/compression/compression_internal.h +3 -5
  1046. data/src/core/lib/compression/message_compress.cc +9 -12
  1047. data/src/core/lib/debug/trace.cc +48 -66
  1048. data/src/core/lib/debug/trace.h +2 -97
  1049. data/src/core/lib/debug/trace_flags.cc +244 -0
  1050. data/src/core/lib/debug/trace_flags.h +132 -0
  1051. data/src/core/lib/debug/trace_impl.h +125 -0
  1052. data/src/core/lib/event_engine/ares_resolver.cc +149 -75
  1053. data/src/core/lib/event_engine/ares_resolver.h +13 -20
  1054. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +13 -16
  1055. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
  1056. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +44 -31
  1057. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +4 -6
  1058. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +1 -1
  1059. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +26 -30
  1060. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -5
  1061. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +3 -4
  1062. data/src/core/lib/event_engine/channel_args_endpoint_config.h +2 -3
  1063. data/src/core/lib/event_engine/common_closures.h +3 -3
  1064. data/src/core/lib/event_engine/default_event_engine.cc +13 -15
  1065. data/src/core/lib/event_engine/default_event_engine.h +4 -4
  1066. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -2
  1067. data/src/core/lib/event_engine/default_event_engine_factory.h +2 -2
  1068. data/src/core/lib/event_engine/event_engine.cc +35 -4
  1069. data/src/core/lib/event_engine/event_engine_context.h +4 -2
  1070. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -2
  1071. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -2
  1072. data/src/core/lib/event_engine/extensions/supports_fd.h +27 -3
  1073. data/src/core/lib/event_engine/extensions/tcp_trace.h +42 -0
  1074. data/src/core/lib/event_engine/forkable.cc +7 -9
  1075. data/src/core/lib/event_engine/forkable.h +2 -14
  1076. data/src/core/lib/event_engine/grpc_polled_fd.h +3 -4
  1077. data/src/core/lib/event_engine/handle_containers.h +2 -3
  1078. data/src/core/lib/event_engine/memory_allocator_factory.h +3 -4
  1079. data/src/core/lib/event_engine/nameser.h +1 -1
  1080. data/src/core/lib/event_engine/poller.h +2 -2
  1081. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +21 -23
  1082. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +8 -9
  1083. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +17 -21
  1084. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +4 -5
  1085. data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -4
  1086. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +4 -5
  1087. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
  1088. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -6
  1089. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -4
  1090. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +1 -2
  1091. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +5 -7
  1092. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -3
  1093. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -4
  1094. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -3
  1095. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +87 -79
  1096. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -12
  1097. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +82 -58
  1098. data/src/core/lib/event_engine/posix_engine/posix_engine.h +18 -16
  1099. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +3 -3
  1100. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +24 -28
  1101. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +14 -13
  1102. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +22 -28
  1103. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -2
  1104. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +44 -38
  1105. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -10
  1106. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  1107. data/src/core/lib/event_engine/posix_engine/timer.h +5 -7
  1108. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -3
  1109. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -2
  1110. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +12 -21
  1111. data/src/core/lib/event_engine/posix_engine/timer_manager.h +5 -7
  1112. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +7 -9
  1113. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +3 -5
  1114. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +5 -6
  1115. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -3
  1116. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +4 -5
  1117. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -3
  1118. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -2
  1119. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -3
  1120. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -2
  1121. data/src/core/lib/event_engine/query_extensions.h +2 -2
  1122. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +3 -5
  1123. data/src/core/lib/event_engine/resolved_address.cc +5 -5
  1124. data/src/core/lib/event_engine/shim.cc +1 -1
  1125. data/src/core/lib/event_engine/slice.cc +3 -6
  1126. data/src/core/lib/event_engine/slice_buffer.cc +1 -2
  1127. data/src/core/lib/event_engine/tcp_socket_utils.cc +9 -18
  1128. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -3
  1129. data/src/core/lib/event_engine/thread_local.h +1 -1
  1130. data/src/core/lib/event_engine/thread_pool/thread_count.cc +5 -7
  1131. data/src/core/lib/event_engine/thread_pool/thread_count.h +6 -7
  1132. data/src/core/lib/event_engine/thread_pool/thread_pool.h +2 -4
  1133. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -3
  1134. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +40 -47
  1135. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +10 -15
  1136. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +50 -23
  1137. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +9 -8
  1138. data/src/core/lib/event_engine/time_util.cc +2 -2
  1139. data/src/core/lib/event_engine/time_util.h +1 -2
  1140. data/src/core/lib/event_engine/utils.cc +19 -5
  1141. data/src/core/lib/event_engine/utils.h +10 -4
  1142. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +126 -101
  1143. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -6
  1144. data/src/core/lib/event_engine/windows/iocp.cc +14 -14
  1145. data/src/core/lib/event_engine/windows/iocp.h +2 -3
  1146. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +4 -6
  1147. data/src/core/lib/event_engine/windows/win_socket.cc +42 -33
  1148. data/src/core/lib/event_engine/windows/win_socket.h +8 -10
  1149. data/src/core/lib/event_engine/windows/windows_endpoint.cc +46 -33
  1150. data/src/core/lib/event_engine/windows/windows_engine.cc +243 -134
  1151. data/src/core/lib/event_engine/windows/windows_engine.h +143 -33
  1152. data/src/core/lib/event_engine/windows/windows_listener.cc +22 -37
  1153. data/src/core/lib/event_engine/windows/windows_listener.h +4 -5
  1154. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +3 -3
  1155. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +3 -5
  1156. data/src/core/lib/event_engine/work_queue/work_queue.h +2 -3
  1157. data/src/core/lib/experiments/config.cc +55 -28
  1158. data/src/core/lib/experiments/config.h +56 -3
  1159. data/src/core/lib/experiments/experiments.cc +376 -323
  1160. data/src/core/lib/experiments/experiments.h +166 -141
  1161. data/src/core/lib/iomgr/buffer_list.cc +6 -6
  1162. data/src/core/lib/iomgr/buffer_list.h +2 -3
  1163. data/src/core/lib/iomgr/call_combiner.cc +39 -66
  1164. data/src/core/lib/iomgr/call_combiner.h +13 -17
  1165. data/src/core/lib/iomgr/cfstream_handle.cc +14 -20
  1166. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  1167. data/src/core/lib/iomgr/closure.cc +2 -2
  1168. data/src/core/lib/iomgr/closure.h +15 -20
  1169. data/src/core/lib/iomgr/combiner.cc +33 -48
  1170. data/src/core/lib/iomgr/combiner.h +2 -5
  1171. data/src/core/lib/iomgr/endpoint.cc +0 -6
  1172. data/src/core/lib/iomgr/endpoint.h +3 -4
  1173. data/src/core/lib/iomgr/endpoint_cfstream.cc +40 -73
  1174. data/src/core/lib/iomgr/endpoint_pair_posix.cc +3 -6
  1175. data/src/core/lib/iomgr/endpoint_pair_windows.cc +6 -8
  1176. data/src/core/lib/iomgr/error.cc +22 -32
  1177. data/src/core/lib/iomgr/error.h +7 -10
  1178. data/src/core/lib/iomgr/error_cfstream.cc +1 -3
  1179. data/src/core/lib/iomgr/ev_apple.cc +16 -24
  1180. data/src/core/lib/iomgr/ev_epoll1_linux.cc +69 -115
  1181. data/src/core/lib/iomgr/ev_poll_posix.cc +53 -53
  1182. data/src/core/lib/iomgr/ev_posix.cc +67 -58
  1183. data/src/core/lib/iomgr/ev_posix.h +9 -12
  1184. data/src/core/lib/iomgr/event_engine_shims/closure.cc +10 -13
  1185. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  1186. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +34 -52
  1187. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +2 -2
  1188. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +9 -13
  1189. data/src/core/lib/iomgr/exec_ctx.cc +10 -14
  1190. data/src/core/lib/iomgr/exec_ctx.h +33 -25
  1191. data/src/core/lib/iomgr/executor.cc +55 -53
  1192. data/src/core/lib/iomgr/executor.h +2 -2
  1193. data/src/core/lib/iomgr/fork_posix.cc +11 -15
  1194. data/src/core/lib/iomgr/fork_windows.cc +3 -2
  1195. data/src/core/lib/iomgr/internal_errqueue.cc +4 -4
  1196. data/src/core/lib/iomgr/iocp_windows.cc +8 -10
  1197. data/src/core/lib/iomgr/iomgr.cc +18 -24
  1198. data/src/core/lib/iomgr/iomgr.h +1 -2
  1199. data/src/core/lib/iomgr/iomgr_internal.cc +1 -2
  1200. data/src/core/lib/iomgr/iomgr_internal.h +1 -2
  1201. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1202. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1203. data/src/core/lib/iomgr/lockfree_event.cc +10 -20
  1204. data/src/core/lib/iomgr/nameser.h +1 -1
  1205. data/src/core/lib/iomgr/polling_entity.cc +13 -7
  1206. data/src/core/lib/iomgr/pollset.h +0 -2
  1207. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -2
  1208. data/src/core/lib/iomgr/pollset_windows.cc +2 -6
  1209. data/src/core/lib/iomgr/port.h +2 -2
  1210. data/src/core/lib/iomgr/resolve_address.cc +3 -5
  1211. data/src/core/lib/iomgr/resolve_address.h +4 -6
  1212. data/src/core/lib/iomgr/resolve_address_impl.h +1 -2
  1213. data/src/core/lib/iomgr/resolve_address_posix.cc +12 -21
  1214. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  1215. data/src/core/lib/iomgr/resolve_address_windows.cc +9 -12
  1216. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  1217. data/src/core/lib/iomgr/resolved_address.h +1 -2
  1218. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -6
  1219. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  1220. data/src/core/lib/iomgr/socket_mutator.cc +2 -3
  1221. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  1222. data/src/core/lib/iomgr/socket_utils.h +1 -2
  1223. data/src/core/lib/iomgr/socket_utils_common_posix.cc +43 -52
  1224. data/src/core/lib/iomgr/socket_utils_linux.cc +1 -3
  1225. data/src/core/lib/iomgr/socket_utils_posix.cc +4 -7
  1226. data/src/core/lib/iomgr/socket_utils_windows.cc +1 -3
  1227. data/src/core/lib/iomgr/socket_windows.cc +7 -11
  1228. data/src/core/lib/iomgr/socket_windows.h +1 -2
  1229. data/src/core/lib/iomgr/tcp_client_cfstream.cc +12 -20
  1230. data/src/core/lib/iomgr/tcp_client_posix.cc +19 -32
  1231. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -13
  1232. data/src/core/lib/iomgr/tcp_posix.cc +86 -156
  1233. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  1234. data/src/core/lib/iomgr/tcp_server.h +2 -2
  1235. data/src/core/lib/iomgr/tcp_server_posix.cc +40 -58
  1236. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -3
  1237. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -11
  1238. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +11 -13
  1239. data/src/core/lib/iomgr/tcp_server_windows.cc +20 -28
  1240. data/src/core/lib/iomgr/tcp_windows.cc +32 -62
  1241. data/src/core/lib/iomgr/timer.h +2 -2
  1242. data/src/core/lib/iomgr/timer_generic.cc +72 -105
  1243. data/src/core/lib/iomgr/timer_heap.cc +3 -4
  1244. data/src/core/lib/iomgr/timer_manager.cc +25 -43
  1245. data/src/core/lib/iomgr/timer_manager.h +1 -2
  1246. data/src/core/lib/iomgr/unix_sockets_posix.cc +4 -6
  1247. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -4
  1248. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +0 -4
  1249. data/src/core/lib/iomgr/vsock.cc +3 -6
  1250. data/src/core/lib/iomgr/vsock.h +3 -4
  1251. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -4
  1252. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1253. data/src/core/lib/promise/activity.cc +4 -4
  1254. data/src/core/lib/promise/activity.h +77 -25
  1255. data/src/core/lib/promise/all_ok.h +54 -11
  1256. data/src/core/lib/promise/arena_promise.h +2 -4
  1257. data/src/core/lib/promise/cancel_callback.h +34 -6
  1258. data/src/core/lib/promise/context.h +19 -10
  1259. data/src/core/lib/promise/detail/basic_seq.h +33 -20
  1260. data/src/core/lib/promise/detail/join_state.h +556 -762
  1261. data/src/core/lib/promise/detail/promise_factory.h +47 -31
  1262. data/src/core/lib/promise/detail/promise_like.h +44 -12
  1263. data/src/core/lib/promise/detail/seq_state.h +1314 -1977
  1264. data/src/core/lib/promise/detail/status.h +36 -15
  1265. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -3
  1266. data/src/core/lib/promise/for_each.h +34 -37
  1267. data/src/core/lib/promise/if.h +23 -19
  1268. data/src/core/lib/promise/interceptor_list.h +21 -35
  1269. data/src/core/lib/promise/latch.h +19 -34
  1270. data/src/core/lib/promise/loop.h +25 -12
  1271. data/src/core/lib/promise/map.h +120 -10
  1272. data/src/core/lib/promise/observable.h +181 -0
  1273. data/src/core/lib/promise/party.cc +291 -148
  1274. data/src/core/lib/promise/party.h +192 -386
  1275. data/src/core/lib/promise/pipe.h +21 -44
  1276. data/src/core/lib/promise/poll.h +115 -38
  1277. data/src/core/lib/promise/prioritized_race.h +2 -2
  1278. data/src/core/lib/promise/promise.h +14 -8
  1279. data/src/core/lib/promise/race.h +12 -7
  1280. data/src/core/lib/promise/seq.h +58 -65
  1281. data/src/core/lib/promise/sleep.cc +3 -3
  1282. data/src/core/lib/promise/sleep.h +5 -5
  1283. data/src/core/lib/promise/status_flag.h +165 -49
  1284. data/src/core/lib/promise/try_join.h +37 -21
  1285. data/src/core/lib/promise/try_seq.h +112 -77
  1286. data/src/core/lib/resource_quota/api.cc +4 -6
  1287. data/src/core/lib/resource_quota/api.h +2 -3
  1288. data/src/core/lib/resource_quota/arena.cc +64 -86
  1289. data/src/core/lib/resource_quota/arena.h +148 -212
  1290. data/src/core/lib/resource_quota/connection_quota.cc +2 -3
  1291. data/src/core/lib/resource_quota/connection_quota.h +9 -6
  1292. data/src/core/lib/resource_quota/memory_quota.cc +44 -45
  1293. data/src/core/lib/resource_quota/memory_quota.h +25 -19
  1294. data/src/core/lib/resource_quota/periodic_update.cc +5 -5
  1295. data/src/core/lib/resource_quota/periodic_update.h +2 -4
  1296. data/src/core/lib/resource_quota/resource_quota.h +8 -9
  1297. data/src/core/lib/resource_quota/thread_quota.cc +2 -3
  1298. data/src/core/lib/resource_quota/thread_quota.h +5 -6
  1299. data/src/core/lib/security/authorization/audit_logging.cc +5 -7
  1300. data/src/core/lib/security/authorization/audit_logging.h +5 -6
  1301. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1302. data/src/core/lib/security/authorization/authorization_policy_provider.h +4 -5
  1303. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +2 -2
  1304. data/src/core/lib/security/authorization/evaluate_args.cc +10 -14
  1305. data/src/core/lib/security/authorization/evaluate_args.h +3 -4
  1306. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -4
  1307. data/src/core/lib/security/authorization/grpc_authorization_engine.h +2 -3
  1308. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +22 -30
  1309. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -3
  1310. data/src/core/lib/security/authorization/matchers.cc +5 -7
  1311. data/src/core/lib/security/authorization/matchers.h +2 -4
  1312. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  1313. data/src/core/lib/security/authorization/rbac_policy.h +3 -5
  1314. data/src/core/lib/security/authorization/stdout_logger.cc +4 -5
  1315. data/src/core/lib/security/authorization/stdout_logger.h +4 -4
  1316. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -9
  1317. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +4 -5
  1318. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -3
  1319. data/src/core/lib/security/context/security_context.cc +48 -48
  1320. data/src/core/lib/security/context/security_context.h +47 -18
  1321. data/src/core/lib/security/credentials/alts/alts_credentials.cc +5 -5
  1322. data/src/core/lib/security/credentials/alts/alts_credentials.h +9 -5
  1323. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -4
  1324. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +1 -2
  1325. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +3 -5
  1326. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +3 -5
  1327. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +4 -5
  1328. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
  1329. data/src/core/lib/security/credentials/call_creds_util.cc +8 -7
  1330. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1331. data/src/core/lib/security/credentials/channel_creds_registry.h +7 -8
  1332. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +15 -14
  1333. data/src/core/lib/security/credentials/composite/composite_credentials.cc +10 -14
  1334. data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -10
  1335. data/src/core/lib/security/credentials/credentials.cc +18 -19
  1336. data/src/core/lib/security/credentials/credentials.h +12 -14
  1337. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +335 -339
  1338. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +60 -48
  1339. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -5
  1340. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1341. data/src/core/lib/security/credentials/external/external_account_credentials.cc +409 -374
  1342. data/src/core/lib/security/credentials/external/external_account_credentials.h +128 -60
  1343. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +90 -52
  1344. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +32 -11
  1345. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +102 -129
  1346. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +22 -24
  1347. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -4
  1348. data/src/core/lib/security/credentials/fake/fake_credentials.h +9 -8
  1349. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +195 -0
  1350. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +90 -0
  1351. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +6 -7
  1352. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -74
  1353. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +8 -6
  1354. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -10
  1355. data/src/core/lib/security/credentials/iam/iam_credentials.h +8 -7
  1356. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1357. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  1358. data/src/core/lib/security/credentials/jwt/json_token.cc +25 -29
  1359. data/src/core/lib/security/credentials/jwt/json_token.h +2 -3
  1360. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +22 -29
  1361. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +10 -10
  1362. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +68 -75
  1363. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -4
  1364. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -2
  1365. data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
  1366. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +195 -296
  1367. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +50 -73
  1368. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +20 -33
  1369. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +12 -14
  1370. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +35 -47
  1371. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +5 -8
  1372. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -4
  1373. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -5
  1374. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +1 -3
  1375. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +102 -42
  1376. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -13
  1377. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +6 -10
  1378. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +9 -11
  1379. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +10 -13
  1380. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -1
  1381. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +6 -10
  1382. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +8 -10
  1383. data/src/core/lib/security/credentials/tls/tls_credentials.cc +20 -23
  1384. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -3
  1385. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -6
  1386. data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
  1387. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +305 -0
  1388. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +181 -0
  1389. data/src/core/lib/security/credentials/xds/xds_credentials.cc +15 -13
  1390. data/src/core/lib/security/credentials/xds/xds_credentials.h +7 -9
  1391. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -27
  1392. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  1393. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +24 -24
  1394. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
  1395. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +4 -7
  1396. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -6
  1397. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +10 -12
  1398. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +4 -6
  1399. data/src/core/lib/security/security_connector/local/local_security_connector.cc +25 -25
  1400. data/src/core/lib/security/security_connector/local/local_security_connector.h +1 -1
  1401. data/src/core/lib/security/security_connector/security_connector.cc +6 -11
  1402. data/src/core/lib/security/security_connector/security_connector.h +8 -11
  1403. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +23 -27
  1404. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -3
  1405. data/src/core/lib/security/security_connector/ssl_utils.cc +34 -35
  1406. data/src/core/lib/security/security_connector/ssl_utils.h +7 -9
  1407. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +37 -50
  1408. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +7 -8
  1409. data/src/core/lib/security/transport/auth_filters.h +7 -3
  1410. data/src/core/lib/security/transport/client_auth_filter.cc +16 -25
  1411. data/src/core/lib/security/transport/server_auth_filter.cc +20 -31
  1412. data/src/core/lib/security/util/json_util.cc +4 -5
  1413. data/src/core/lib/security/util/json_util.h +1 -1
  1414. data/src/core/lib/slice/percent_encoding.cc +2 -5
  1415. data/src/core/lib/slice/slice.cc +4 -7
  1416. data/src/core/lib/slice/slice.h +6 -9
  1417. data/src/core/lib/slice/slice_buffer.cc +5 -7
  1418. data/src/core/lib/slice/slice_buffer.h +3 -4
  1419. data/src/core/lib/slice/slice_internal.h +3 -6
  1420. data/src/core/lib/slice/slice_refcount.h +8 -15
  1421. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  1422. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  1423. data/src/core/lib/surface/byte_buffer.cc +1 -2
  1424. data/src/core/lib/surface/byte_buffer_reader.cc +3 -6
  1425. data/src/core/lib/surface/call.cc +161 -3825
  1426. data/src/core/lib/surface/call.h +63 -157
  1427. data/src/core/lib/surface/call_details.cc +4 -3
  1428. data/src/core/lib/surface/call_log_batch.cc +8 -11
  1429. data/src/core/lib/surface/call_test_only.h +1 -2
  1430. data/src/core/lib/surface/call_utils.cc +231 -0
  1431. data/src/core/lib/surface/call_utils.h +488 -0
  1432. data/src/core/lib/surface/channel.cc +41 -40
  1433. data/src/core/lib/surface/channel.h +21 -19
  1434. data/src/core/lib/surface/channel_create.cc +28 -13
  1435. data/src/core/lib/surface/channel_create.h +5 -5
  1436. data/src/core/lib/surface/channel_init.cc +269 -266
  1437. data/src/core/lib/surface/channel_init.h +173 -119
  1438. data/src/core/lib/surface/client_call.cc +449 -0
  1439. data/src/core/lib/surface/client_call.h +192 -0
  1440. data/src/core/lib/surface/completion_queue.cc +111 -107
  1441. data/src/core/lib/surface/completion_queue.h +4 -13
  1442. data/src/core/lib/surface/completion_queue_factory.cc +1 -3
  1443. data/src/core/lib/surface/connection_context.cc +77 -0
  1444. data/src/core/lib/surface/connection_context.h +156 -0
  1445. data/src/core/lib/surface/event_string.cc +9 -3
  1446. data/src/core/lib/surface/event_string.h +2 -2
  1447. data/src/core/lib/surface/filter_stack_call.cc +1156 -0
  1448. data/src/core/lib/surface/filter_stack_call.h +366 -0
  1449. data/src/core/lib/surface/init.cc +59 -19
  1450. data/src/core/lib/surface/init.h +5 -0
  1451. data/src/core/lib/surface/init_internally.h +13 -2
  1452. data/src/core/lib/surface/lame_client.cc +12 -15
  1453. data/src/core/lib/surface/lame_client.h +6 -5
  1454. data/src/core/lib/surface/legacy_channel.cc +58 -44
  1455. data/src/core/lib/surface/legacy_channel.h +15 -25
  1456. data/src/core/lib/surface/metadata_array.cc +5 -5
  1457. data/src/core/lib/surface/server_call.cc +242 -0
  1458. data/src/core/lib/surface/server_call.h +167 -0
  1459. data/src/core/lib/surface/validate_metadata.cc +3 -4
  1460. data/src/core/lib/surface/validate_metadata.h +2 -5
  1461. data/src/core/lib/surface/version.cc +2 -2
  1462. data/src/core/lib/transport/bdp_estimator.cc +12 -20
  1463. data/src/core/lib/transport/bdp_estimator.h +10 -16
  1464. data/src/core/lib/transport/call_arena_allocator.cc +4 -18
  1465. data/src/core/lib/transport/call_arena_allocator.h +30 -12
  1466. data/src/core/lib/transport/call_destination.h +76 -0
  1467. data/src/core/lib/transport/call_filters.cc +67 -405
  1468. data/src/core/lib/transport/call_filters.h +810 -752
  1469. data/src/core/lib/transport/call_final_info.cc +2 -2
  1470. data/src/core/lib/transport/call_final_info.h +3 -3
  1471. data/src/core/lib/transport/call_spine.cc +51 -65
  1472. data/src/core/lib/transport/call_spine.h +294 -367
  1473. data/src/core/lib/transport/call_state.cc +39 -0
  1474. data/src/core/lib/transport/call_state.h +1154 -0
  1475. data/src/core/lib/transport/connectivity_state.cc +37 -45
  1476. data/src/core/lib/transport/connectivity_state.h +5 -8
  1477. data/src/core/lib/transport/error_utils.cc +3 -4
  1478. data/src/core/lib/transport/error_utils.h +4 -5
  1479. data/src/core/lib/transport/interception_chain.cc +155 -0
  1480. data/src/core/lib/transport/interception_chain.h +262 -0
  1481. data/src/core/lib/transport/message.cc +2 -2
  1482. data/src/core/lib/transport/message.h +5 -0
  1483. data/src/core/lib/transport/metadata.cc +27 -3
  1484. data/src/core/lib/transport/metadata.h +37 -2
  1485. data/src/core/lib/transport/metadata_batch.cc +12 -5
  1486. data/src/core/lib/transport/metadata_batch.h +73 -13
  1487. data/src/core/lib/transport/metadata_compression_traits.h +3 -4
  1488. data/src/core/lib/transport/metadata_info.h +1 -1
  1489. data/src/core/lib/transport/parsed_metadata.h +3 -5
  1490. data/src/core/lib/transport/simple_slice_based_metadata.h +1 -2
  1491. data/src/core/lib/transport/status_conversion.h +1 -1
  1492. data/src/core/lib/transport/timeout_encoding.cc +7 -8
  1493. data/src/core/lib/transport/timeout_encoding.h +2 -4
  1494. data/src/core/lib/transport/transport.cc +7 -12
  1495. data/src/core/lib/transport/transport.h +59 -56
  1496. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1497. data/src/core/lib/transport/transport_op_string.cc +4 -6
  1498. data/src/core/load_balancing/address_filtering.cc +2 -4
  1499. data/src/core/load_balancing/address_filtering.h +4 -5
  1500. data/src/core/load_balancing/backend_metric_data.h +2 -2
  1501. data/src/core/load_balancing/backend_metric_parser.cc +1 -2
  1502. data/src/core/load_balancing/backend_metric_parser.h +1 -3
  1503. data/src/core/load_balancing/child_policy_handler.cc +37 -41
  1504. data/src/core/load_balancing/child_policy_handler.h +4 -5
  1505. data/src/core/load_balancing/delegating_helper.h +6 -7
  1506. data/src/core/load_balancing/endpoint_list.cc +22 -14
  1507. data/src/core/load_balancing/endpoint_list.h +20 -15
  1508. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +12 -6
  1509. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -2
  1510. data/src/core/load_balancing/grpclb/grpclb.cc +154 -188
  1511. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +2 -3
  1512. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -3
  1513. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +5 -7
  1514. data/src/core/load_balancing/grpclb/load_balancer_api.cc +7 -10
  1515. data/src/core/load_balancing/grpclb/load_balancer_api.h +4 -6
  1516. data/src/core/load_balancing/health_check_client.cc +60 -80
  1517. data/src/core/load_balancing/health_check_client.h +3 -3
  1518. data/src/core/load_balancing/health_check_client_internal.h +8 -9
  1519. data/src/core/load_balancing/lb_policy.cc +5 -8
  1520. data/src/core/load_balancing/lb_policy.h +73 -47
  1521. data/src/core/load_balancing/lb_policy_factory.h +5 -6
  1522. data/src/core/load_balancing/lb_policy_registry.cc +5 -7
  1523. data/src/core/load_balancing/lb_policy_registry.h +5 -6
  1524. data/src/core/load_balancing/oob_backend_metric.cc +19 -25
  1525. data/src/core/load_balancing/oob_backend_metric.h +3 -3
  1526. data/src/core/load_balancing/oob_backend_metric_internal.h +8 -9
  1527. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +141 -186
  1528. data/src/core/load_balancing/outlier_detection/outlier_detection.h +6 -8
  1529. data/src/core/load_balancing/pick_first/pick_first.cc +312 -360
  1530. data/src/core/load_balancing/priority/priority.cc +94 -138
  1531. data/src/core/load_balancing/ring_hash/ring_hash.cc +210 -146
  1532. data/src/core/load_balancing/ring_hash/ring_hash.h +10 -18
  1533. data/src/core/load_balancing/rls/rls.cc +341 -346
  1534. data/src/core/load_balancing/round_robin/round_robin.cc +66 -98
  1535. data/src/core/load_balancing/subchannel_interface.h +17 -6
  1536. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +4 -5
  1537. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +2 -3
  1538. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +151 -171
  1539. data/src/core/load_balancing/weighted_target/weighted_target.cc +72 -108
  1540. data/src/core/load_balancing/xds/cds.cc +54 -70
  1541. data/src/core/load_balancing/xds/xds_cluster_impl.cc +179 -156
  1542. data/src/core/load_balancing/xds/xds_cluster_manager.cc +53 -85
  1543. data/src/core/load_balancing/xds/xds_override_host.cc +121 -183
  1544. data/src/core/load_balancing/xds/xds_override_host.h +6 -7
  1545. data/src/core/load_balancing/xds/xds_wrr_locality.cc +39 -49
  1546. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -8
  1547. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +6 -1
  1548. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +91 -66
  1549. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -3
  1550. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -6
  1551. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -6
  1552. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +119 -101
  1553. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +166 -151
  1554. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -18
  1555. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  1556. data/src/core/resolver/dns/dns_resolver_plugin.cc +10 -11
  1557. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1558. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +52 -59
  1559. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -4
  1560. data/src/core/resolver/dns/event_engine/service_config_helper.cc +8 -10
  1561. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  1562. data/src/core/resolver/dns/native/dns_resolver.cc +22 -31
  1563. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1564. data/src/core/resolver/endpoint_addresses.cc +2 -5
  1565. data/src/core/resolver/endpoint_addresses.h +5 -3
  1566. data/src/core/resolver/fake/fake_resolver.cc +8 -10
  1567. data/src/core/resolver/fake/fake_resolver.h +8 -9
  1568. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +24 -26
  1569. data/src/core/resolver/polling_resolver.cc +39 -55
  1570. data/src/core/resolver/polling_resolver.h +8 -9
  1571. data/src/core/resolver/resolver.cc +2 -6
  1572. data/src/core/resolver/resolver.h +4 -10
  1573. data/src/core/resolver/resolver_factory.h +4 -5
  1574. data/src/core/resolver/resolver_registry.cc +8 -10
  1575. data/src/core/resolver/resolver_registry.h +4 -5
  1576. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +8 -9
  1577. data/src/core/resolver/xds/xds_config.cc +95 -0
  1578. data/src/core/resolver/xds/xds_config.h +108 -0
  1579. data/src/core/resolver/xds/xds_dependency_manager.cc +213 -298
  1580. data/src/core/resolver/xds/xds_dependency_manager.h +30 -89
  1581. data/src/core/resolver/xds/xds_resolver.cc +141 -141
  1582. data/src/core/resolver/xds/xds_resolver_attributes.h +7 -4
  1583. data/src/core/server/server.cc +657 -492
  1584. data/src/core/server/server.h +246 -93
  1585. data/src/core/server/server_call_tracer_filter.cc +21 -20
  1586. data/src/core/server/server_call_tracer_filter.h +1 -1
  1587. data/src/core/server/server_config_selector.h +6 -7
  1588. data/src/core/server/server_config_selector_filter.cc +17 -12
  1589. data/src/core/server/server_interface.h +2 -0
  1590. data/src/core/server/xds_channel_stack_modifier.cc +5 -5
  1591. data/src/core/server/xds_channel_stack_modifier.h +6 -7
  1592. data/src/core/server/xds_server_config_fetcher.cc +133 -207
  1593. data/src/core/service_config/service_config.h +4 -6
  1594. data/src/core/service_config/service_config_call_data.h +21 -20
  1595. data/src/core/service_config/service_config_channel_arg_filter.cc +17 -13
  1596. data/src/core/service_config/service_config_impl.cc +9 -11
  1597. data/src/core/service_config/service_config_impl.h +5 -8
  1598. data/src/core/service_config/service_config_parser.cc +4 -8
  1599. data/src/core/service_config/service_config_parser.h +3 -5
  1600. data/src/core/telemetry/call_tracer.cc +386 -0
  1601. data/src/core/telemetry/call_tracer.h +263 -0
  1602. data/src/core/telemetry/histogram_view.cc +69 -0
  1603. data/src/core/telemetry/histogram_view.h +36 -0
  1604. data/src/core/telemetry/metrics.cc +180 -0
  1605. data/src/core/telemetry/metrics.h +569 -0
  1606. data/src/core/telemetry/stats.cc +67 -0
  1607. data/src/core/telemetry/stats.h +62 -0
  1608. data/src/core/telemetry/stats_data.cc +931 -0
  1609. data/src/core/telemetry/stats_data.h +705 -0
  1610. data/src/core/telemetry/tcp_tracer.h +143 -0
  1611. data/src/core/tsi/alts/crypt/aes_gcm.cc +5 -8
  1612. data/src/core/tsi/alts/crypt/gsec.cc +2 -3
  1613. data/src/core/tsi/alts/crypt/gsec.h +3 -4
  1614. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  1615. data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -4
  1616. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  1617. data/src/core/tsi/alts/frame_protector/alts_crypter.h +2 -3
  1618. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +16 -18
  1619. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +1 -2
  1620. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -1
  1621. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  1622. data/src/core/tsi/alts/frame_protector/frame_handler.cc +11 -12
  1623. data/src/core/tsi/alts/frame_protector/frame_handler.h +1 -2
  1624. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +41 -46
  1625. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +2 -4
  1626. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
  1627. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +55 -57
  1628. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
  1629. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +17 -24
  1630. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -4
  1631. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +14 -17
  1632. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +1 -2
  1633. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -12
  1634. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +1 -2
  1635. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +9 -11
  1636. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +3 -5
  1637. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +1 -2
  1638. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +10 -14
  1639. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +1 -2
  1640. data/src/core/tsi/fake_transport_security.cc +27 -32
  1641. data/src/core/tsi/local_transport_security.cc +9 -10
  1642. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -12
  1643. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +8 -10
  1644. data/src/core/tsi/ssl/session_cache/ssl_session.h +4 -5
  1645. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -9
  1646. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +7 -8
  1647. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -4
  1648. data/src/core/tsi/ssl_transport_security.cc +135 -113
  1649. data/src/core/tsi/ssl_transport_security.h +6 -8
  1650. data/src/core/tsi/ssl_transport_security_utils.cc +77 -24
  1651. data/src/core/tsi/ssl_transport_security_utils.h +14 -5
  1652. data/src/core/tsi/ssl_types.h +1 -2
  1653. data/src/core/tsi/transport_security.cc +2 -7
  1654. data/src/core/tsi/transport_security.h +1 -4
  1655. data/src/core/tsi/transport_security_interface.h +3 -8
  1656. data/src/core/util/alloc.cc +69 -0
  1657. data/src/core/util/alloc.h +28 -0
  1658. data/src/core/util/atomic_utils.h +47 -0
  1659. data/src/core/util/avl.h +324 -0
  1660. data/src/core/util/backoff.cc +57 -0
  1661. data/src/core/util/backoff.h +86 -0
  1662. data/src/core/util/bitset.h +224 -0
  1663. data/src/core/util/chunked_vector.h +256 -0
  1664. data/src/core/util/construct_destruct.h +41 -0
  1665. data/src/core/util/cpp_impl_of.h +49 -0
  1666. data/src/core/util/crash.cc +40 -0
  1667. data/src/core/util/crash.h +36 -0
  1668. data/src/core/util/debug_location.h +106 -0
  1669. data/src/core/util/directory_reader.h +48 -0
  1670. data/src/core/util/down_cast.h +48 -0
  1671. data/src/core/util/dual_ref_counted.h +376 -0
  1672. data/src/core/util/dump_args.cc +54 -0
  1673. data/src/core/util/dump_args.h +122 -0
  1674. data/src/core/util/env.h +53 -0
  1675. data/src/core/util/event_log.cc +87 -0
  1676. data/src/core/util/event_log.h +79 -0
  1677. data/src/core/util/examine_stack.cc +43 -0
  1678. data/src/core/util/examine_stack.h +45 -0
  1679. data/src/core/util/fork.cc +241 -0
  1680. data/src/core/util/fork.h +98 -0
  1681. data/src/core/util/gcp_metadata_query.cc +132 -0
  1682. data/src/core/util/gcp_metadata_query.h +86 -0
  1683. data/src/core/util/gethostname.h +26 -0
  1684. data/src/core/util/gethostname_fallback.cc +30 -0
  1685. data/src/core/util/gethostname_host_name_max.cc +39 -0
  1686. data/src/core/util/gethostname_sysconf.cc +39 -0
  1687. data/src/core/util/glob.cc +70 -0
  1688. data/src/core/util/glob.h +29 -0
  1689. data/src/core/util/gpr_time.cc +268 -0
  1690. data/src/core/util/grpc_if_nametoindex.h +29 -0
  1691. data/src/core/util/grpc_if_nametoindex_posix.cc +41 -0
  1692. data/src/core/util/grpc_if_nametoindex_unsupported.cc +36 -0
  1693. data/src/core/util/host_port.cc +114 -0
  1694. data/src/core/util/host_port.h +57 -0
  1695. data/src/core/util/http_client/format_request.cc +134 -0
  1696. data/src/core/util/http_client/format_request.h +37 -0
  1697. data/src/core/util/http_client/httpcli.cc +428 -0
  1698. data/src/core/util/http_client/httpcli.h +279 -0
  1699. data/src/core/util/http_client/httpcli_security_connector.cc +210 -0
  1700. data/src/core/util/http_client/httpcli_ssl_credentials.h +38 -0
  1701. data/src/core/util/http_client/parser.cc +447 -0
  1702. data/src/core/util/http_client/parser.h +126 -0
  1703. data/src/core/util/if_list.h +4530 -0
  1704. data/src/core/util/iphone/cpu.cc +43 -0
  1705. data/src/core/util/json/json.h +29 -0
  1706. data/src/core/util/json/json_args.h +34 -0
  1707. data/src/core/util/json/json_channel_args.h +41 -0
  1708. data/src/core/util/json/json_object_loader.cc +215 -0
  1709. data/src/core/util/json/json_object_loader.h +644 -0
  1710. data/src/core/util/json/json_reader.cc +953 -0
  1711. data/src/core/util/json/json_reader.h +33 -0
  1712. data/src/core/util/json/json_util.cc +101 -0
  1713. data/src/core/util/json/json_util.h +163 -0
  1714. data/src/core/util/json/json_writer.cc +337 -0
  1715. data/src/core/util/json/json_writer.h +33 -0
  1716. data/src/core/util/latent_see.cc +163 -0
  1717. data/src/core/util/latent_see.h +334 -0
  1718. data/src/core/util/linux/cpu.cc +86 -0
  1719. data/src/core/util/linux/env.cc +62 -0
  1720. data/src/core/util/load_file.cc +75 -0
  1721. data/src/core/util/load_file.h +33 -0
  1722. data/src/core/util/log.cc +127 -0
  1723. data/src/core/util/lru_cache.h +122 -0
  1724. data/src/core/util/manual_constructor.h +145 -0
  1725. data/src/core/util/match.h +74 -0
  1726. data/src/core/util/matchers.cc +337 -0
  1727. data/src/core/util/matchers.h +162 -0
  1728. data/src/core/util/memory.h +52 -0
  1729. data/src/core/util/mpscq.cc +108 -0
  1730. data/src/core/util/mpscq.h +98 -0
  1731. data/src/core/util/msys/tmpfile.cc +57 -0
  1732. data/src/core/util/no_destruct.h +95 -0
  1733. data/src/core/util/notification.h +66 -0
  1734. data/src/core/util/orphanable.h +153 -0
  1735. data/src/core/util/overload.h +59 -0
  1736. data/src/core/util/packed_table.h +40 -0
  1737. data/src/core/util/per_cpu.cc +34 -0
  1738. data/src/core/util/per_cpu.h +102 -0
  1739. data/src/core/util/posix/cpu.cc +83 -0
  1740. data/src/core/util/posix/directory_reader.cc +82 -0
  1741. data/src/core/util/posix/env.cc +47 -0
  1742. data/src/core/util/posix/stat.cc +54 -0
  1743. data/src/core/util/posix/string.cc +71 -0
  1744. data/src/core/util/posix/sync.cc +158 -0
  1745. data/src/core/util/posix/thd.cc +243 -0
  1746. data/src/core/util/posix/time.cc +123 -0
  1747. data/src/core/util/posix/tmpfile.cc +71 -0
  1748. data/src/core/util/random_early_detection.cc +33 -0
  1749. data/src/core/util/random_early_detection.h +61 -0
  1750. data/src/core/util/ref_counted.h +403 -0
  1751. data/src/core/util/ref_counted_ptr.h +443 -0
  1752. data/src/core/util/ref_counted_string.cc +42 -0
  1753. data/src/core/util/ref_counted_string.h +159 -0
  1754. data/src/core/util/ring_buffer.h +123 -0
  1755. data/src/core/util/single_set_ptr.h +89 -0
  1756. data/src/core/util/sorted_pack.h +89 -0
  1757. data/src/core/util/spinlock.h +51 -0
  1758. data/src/core/util/stat.h +35 -0
  1759. data/src/core/util/status_helper.cc +431 -0
  1760. data/src/core/util/status_helper.h +160 -0
  1761. data/src/core/util/strerror.cc +40 -0
  1762. data/src/core/util/strerror.h +29 -0
  1763. data/src/core/util/string.cc +341 -0
  1764. data/src/core/util/string.h +110 -0
  1765. data/src/core/util/sync.cc +123 -0
  1766. data/src/core/util/sync.h +199 -0
  1767. data/src/core/util/sync_abseil.cc +107 -0
  1768. data/src/core/util/table.h +486 -0
  1769. data/src/core/util/tchar.cc +49 -0
  1770. data/src/core/util/tchar.h +33 -0
  1771. data/src/core/util/thd.h +193 -0
  1772. data/src/core/util/time.cc +240 -0
  1773. data/src/core/util/time.h +385 -0
  1774. data/src/core/util/time_averaged_stats.cc +60 -0
  1775. data/src/core/util/time_averaged_stats.h +79 -0
  1776. data/src/core/util/time_precise.cc +168 -0
  1777. data/src/core/util/time_precise.h +68 -0
  1778. data/src/core/util/time_util.cc +80 -0
  1779. data/src/core/util/time_util.h +41 -0
  1780. data/src/core/util/tmpfile.h +31 -0
  1781. data/src/core/util/type_list.h +32 -0
  1782. data/src/core/util/unique_ptr_with_bitset.h +86 -0
  1783. data/src/core/util/unique_type_name.h +123 -0
  1784. data/src/core/util/upb_utils.h +43 -0
  1785. data/src/core/util/uri.cc +376 -0
  1786. data/src/core/util/uri.h +105 -0
  1787. data/src/core/util/useful.h +153 -0
  1788. data/src/core/util/uuid_v4.cc +37 -0
  1789. data/src/core/util/uuid_v4.h +35 -0
  1790. data/src/core/util/validation_errors.cc +73 -0
  1791. data/src/core/util/validation_errors.h +144 -0
  1792. data/src/core/util/windows/cpu.cc +34 -0
  1793. data/src/core/util/windows/directory_reader.cc +79 -0
  1794. data/src/core/util/windows/env.cc +56 -0
  1795. data/src/core/util/windows/stat.cc +50 -0
  1796. data/src/core/util/windows/string.cc +68 -0
  1797. data/src/core/util/windows/string_util.cc +53 -0
  1798. data/src/core/util/windows/sync.cc +122 -0
  1799. data/src/core/util/windows/thd.cc +182 -0
  1800. data/src/core/util/windows/time.cc +105 -0
  1801. data/src/core/util/windows/tmpfile.cc +66 -0
  1802. data/src/core/util/work_serializer.cc +538 -0
  1803. data/src/core/util/work_serializer.h +105 -0
  1804. data/src/core/util/xxhash_inline.h +29 -0
  1805. data/src/core/xds/grpc/certificate_provider_store.cc +5 -6
  1806. data/src/core/xds/grpc/certificate_provider_store.h +13 -14
  1807. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +7 -8
  1808. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +9 -10
  1809. data/src/core/xds/grpc/xds_audit_logger_registry.cc +5 -5
  1810. data/src/core/xds/grpc/xds_audit_logger_registry.h +4 -5
  1811. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +8 -166
  1812. data/src/core/xds/grpc/xds_bootstrap_grpc.h +9 -39
  1813. data/src/core/xds/grpc/xds_certificate_provider.cc +4 -5
  1814. data/src/core/xds/grpc/xds_certificate_provider.h +12 -11
  1815. data/src/core/xds/grpc/xds_client_grpc.cc +98 -76
  1816. data/src/core/xds/grpc/xds_client_grpc.h +16 -10
  1817. data/src/core/xds/grpc/xds_cluster.cc +12 -737
  1818. data/src/core/xds/grpc/xds_cluster.h +36 -45
  1819. data/src/core/xds/grpc/xds_cluster_parser.cc +772 -0
  1820. data/src/core/xds/grpc/xds_cluster_parser.h +61 -0
  1821. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +6 -9
  1822. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +5 -6
  1823. data/src/core/xds/grpc/xds_common_types.cc +33 -438
  1824. data/src/core/xds/grpc/xds_common_types.h +10 -28
  1825. data/src/core/xds/grpc/xds_common_types_parser.cc +503 -0
  1826. data/src/core/xds/grpc/xds_common_types_parser.h +76 -0
  1827. data/src/core/xds/grpc/xds_endpoint.cc +0 -420
  1828. data/src/core/xds/grpc/xds_endpoint.h +7 -29
  1829. data/src/core/xds/grpc/xds_endpoint_parser.cc +475 -0
  1830. data/src/core/xds/grpc/xds_endpoint_parser.h +47 -0
  1831. data/src/core/xds/grpc/xds_health_status.cc +0 -2
  1832. data/src/core/xds/grpc/xds_health_status.h +0 -3
  1833. data/src/core/xds/grpc/xds_http_fault_filter.cc +28 -16
  1834. data/src/core/xds/grpc/xds_http_fault_filter.h +11 -7
  1835. data/src/core/xds/grpc/xds_http_filter.h +134 -0
  1836. data/src/core/xds/grpc/xds_http_filter_registry.cc +122 -0
  1837. data/src/core/xds/grpc/xds_http_filter_registry.h +104 -0
  1838. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +141 -0
  1839. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +60 -0
  1840. data/src/core/xds/grpc/xds_http_rbac_filter.cc +64 -49
  1841. data/src/core/xds/grpc/xds_http_rbac_filter.h +11 -7
  1842. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +24 -11
  1843. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +11 -7
  1844. data/src/core/xds/grpc/xds_lb_policy_registry.cc +23 -28
  1845. data/src/core/xds/grpc/xds_lb_policy_registry.h +5 -6
  1846. data/src/core/xds/grpc/xds_listener.cc +19 -986
  1847. data/src/core/xds/grpc/xds_listener.h +2 -35
  1848. data/src/core/xds/grpc/xds_listener_parser.cc +993 -0
  1849. data/src/core/xds/grpc/xds_listener_parser.h +59 -0
  1850. data/src/core/xds/grpc/xds_metadata.cc +62 -0
  1851. data/src/core/xds/grpc/xds_metadata.h +158 -0
  1852. data/src/core/xds/grpc/xds_metadata_parser.cc +184 -0
  1853. data/src/core/xds/grpc/xds_metadata_parser.h +35 -0
  1854. data/src/core/xds/grpc/xds_route_config.cc +3 -919
  1855. data/src/core/xds/grpc/xds_route_config.h +8 -41
  1856. data/src/core/xds/grpc/xds_route_config_parser.cc +962 -0
  1857. data/src/core/xds/grpc/xds_route_config_parser.h +77 -0
  1858. data/src/core/xds/grpc/xds_routing.cc +60 -27
  1859. data/src/core/xds/grpc/xds_routing.h +12 -6
  1860. data/src/core/xds/grpc/xds_server_grpc.cc +160 -0
  1861. data/src/core/xds/grpc/xds_server_grpc.h +63 -0
  1862. data/src/core/xds/grpc/xds_transport_grpc.cc +99 -56
  1863. data/src/core/xds/grpc/xds_transport_grpc.h +34 -23
  1864. data/src/core/xds/xds_client/lrs_client.cc +1292 -0
  1865. data/src/core/xds/xds_client/lrs_client.h +394 -0
  1866. data/src/core/xds/xds_client/xds_api.cc +23 -464
  1867. data/src/core/xds/xds_client/xds_api.h +6 -161
  1868. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +63 -0
  1869. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +59 -0
  1870. data/src/core/xds/xds_client/xds_bootstrap.cc +3 -4
  1871. data/src/core/xds/xds_client/xds_bootstrap.h +3 -3
  1872. data/src/core/xds/xds_client/xds_client.cc +731 -1216
  1873. data/src/core/xds/xds_client/xds_client.h +139 -114
  1874. data/src/core/xds/xds_client/xds_locality.h +102 -0
  1875. data/src/core/xds/xds_client/xds_metrics.h +2 -2
  1876. data/src/core/xds/xds_client/xds_resource_type.h +4 -5
  1877. data/src/core/xds/xds_client/xds_resource_type_impl.h +13 -9
  1878. data/src/core/xds/xds_client/xds_transport.h +29 -14
  1879. data/src/ruby/bin/math_pb.rb +1 -22
  1880. data/src/ruby/ext/grpc/extconf.rb +2 -1
  1881. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -3
  1882. data/src/ruby/ext/grpc/rb_call.c +15 -8
  1883. data/src/ruby/ext/grpc/rb_call_credentials.c +39 -33
  1884. data/src/ruby/ext/grpc/rb_channel.c +42 -37
  1885. data/src/ruby/ext/grpc/rb_channel_args.c +4 -4
  1886. data/src/ruby/ext/grpc/rb_channel_credentials.c +5 -6
  1887. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -2
  1888. data/src/ruby/ext/grpc/rb_completion_queue.c +18 -36
  1889. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  1890. data/src/ruby/ext/grpc/rb_compression_options.c +9 -10
  1891. data/src/ruby/ext/grpc/rb_event_thread.c +9 -9
  1892. data/src/ruby/ext/grpc/rb_grpc.c +16 -16
  1893. data/src/ruby/ext/grpc/rb_grpc.h +8 -1
  1894. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -14
  1895. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -21
  1896. data/src/ruby/ext/grpc/rb_server.c +47 -28
  1897. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  1898. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -2
  1899. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +5 -6
  1900. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +1 -2
  1901. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +4 -4
  1902. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -2
  1903. data/src/ruby/lib/grpc/generic/active_call.rb +8 -5
  1904. data/src/ruby/lib/grpc/logconfig.rb +13 -0
  1905. data/src/ruby/lib/grpc/version.rb +1 -1
  1906. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  1907. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  1908. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  1909. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  1910. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  1911. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  1912. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  1913. data/src/ruby/spec/call_spec.rb +53 -40
  1914. data/src/ruby/spec/channel_spec.rb +4 -2
  1915. data/src/ruby/spec/client_server_spec.rb +148 -507
  1916. data/src/ruby/spec/generic/active_call_spec.rb +64 -86
  1917. data/src/ruby/spec/generic/client_stub_spec.rb +20 -20
  1918. data/src/ruby/spec/logconfig_spec.rb +30 -0
  1919. data/src/ruby/spec/support/services.rb +3 -0
  1920. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -18
  1921. data/third_party/abseil-cpp/absl/base/attributes.h +84 -0
  1922. data/third_party/abseil-cpp/absl/base/config.h +32 -51
  1923. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -16
  1924. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +3 -1
  1925. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +13 -3
  1926. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -12
  1927. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +4 -4
  1928. data/third_party/abseil-cpp/absl/base/macros.h +48 -0
  1929. data/third_party/abseil-cpp/absl/base/no_destructor.h +35 -40
  1930. data/third_party/abseil-cpp/absl/base/nullability.h +33 -7
  1931. data/third_party/abseil-cpp/absl/base/optimization.h +11 -0
  1932. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1933. data/third_party/abseil-cpp/absl/base/prefetch.h +1 -1
  1934. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +68 -12
  1935. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +60 -6
  1936. data/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  1937. data/third_party/abseil-cpp/absl/container/inlined_vector.h +13 -0
  1938. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +20 -11
  1939. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +15 -16
  1940. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +34 -1
  1941. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +68 -1
  1942. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +50 -0
  1943. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +22 -7
  1944. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +26 -8
  1945. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +39 -35
  1946. data/third_party/abseil-cpp/absl/container/internal/layout.h +190 -74
  1947. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +8 -6
  1948. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +334 -71
  1949. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1299 -458
  1950. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +19 -17
  1951. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +4 -3
  1952. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +2 -1
  1953. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +12 -8
  1954. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +1 -1
  1955. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +11 -7
  1956. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +18 -17
  1957. data/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  1958. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  1959. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  1960. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1057 -86
  1961. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +3 -0
  1962. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  1963. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +42 -0
  1964. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +43 -16
  1965. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +8 -7
  1966. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +10 -7
  1967. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  1968. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  1969. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +11 -0
  1970. data/third_party/abseil-cpp/absl/flags/flag.h +2 -0
  1971. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +117 -30
  1972. data/third_party/abseil-cpp/absl/flags/internal/flag.h +192 -30
  1973. data/third_party/abseil-cpp/absl/flags/reflection.cc +10 -0
  1974. data/third_party/abseil-cpp/absl/functional/any_invocable.h +13 -3
  1975. data/third_party/abseil-cpp/absl/functional/bind_front.h +3 -2
  1976. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +7 -7
  1977. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +9 -9
  1978. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -1
  1979. data/third_party/abseil-cpp/absl/hash/internal/hash.h +13 -3
  1980. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +60 -28
  1981. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +4 -0
  1982. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +3 -3
  1983. data/third_party/abseil-cpp/absl/log/globals.h +28 -15
  1984. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +20 -0
  1985. data/third_party/abseil-cpp/absl/log/internal/check_op.h +63 -21
  1986. data/third_party/abseil-cpp/absl/log/internal/conditions.h +2 -2
  1987. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +23 -23
  1988. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +104 -47
  1989. data/third_party/abseil-cpp/absl/log/internal/log_message.h +23 -4
  1990. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -10
  1991. data/third_party/abseil-cpp/absl/log/internal/strip.h +36 -0
  1992. data/third_party/abseil-cpp/absl/log/log.h +5 -1
  1993. data/third_party/abseil-cpp/absl/log/log_sink.h +11 -4
  1994. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +3 -3
  1995. data/third_party/abseil-cpp/absl/meta/type_traits.h +138 -42
  1996. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -3
  1997. data/third_party/abseil-cpp/absl/numeric/int128.h +35 -5
  1998. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +14 -0
  1999. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +18 -0
  2000. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +6 -2
  2001. data/third_party/abseil-cpp/absl/random/beta_distribution.h +8 -8
  2002. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +9 -7
  2003. data/third_party/abseil-cpp/absl/random/distributions.h +11 -11
  2004. data/third_party/abseil-cpp/absl/random/seed_sequences.h +2 -0
  2005. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +61 -2
  2006. data/third_party/abseil-cpp/absl/status/status.cc +0 -4
  2007. data/third_party/abseil-cpp/absl/status/status.h +4 -4
  2008. data/third_party/abseil-cpp/absl/status/statusor.h +108 -142
  2009. data/third_party/abseil-cpp/absl/strings/ascii.cc +32 -71
  2010. data/third_party/abseil-cpp/absl/strings/cord.cc +20 -15
  2011. data/third_party/abseil-cpp/absl/strings/cord.h +68 -7
  2012. data/third_party/abseil-cpp/absl/strings/escaping.cc +96 -21
  2013. data/third_party/abseil-cpp/absl/strings/escaping.h +25 -8
  2014. data/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +1 -0
  2015. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +10 -0
  2016. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +29 -9
  2017. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +2 -2
  2018. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +19 -13
  2019. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +23 -13
  2020. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +24 -24
  2021. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +12 -7
  2022. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +9 -4
  2023. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +5 -2
  2024. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +23 -2
  2025. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +5 -1
  2026. data/third_party/abseil-cpp/absl/strings/numbers.cc +107 -333
  2027. data/third_party/abseil-cpp/absl/strings/numbers.h +12 -151
  2028. data/third_party/abseil-cpp/absl/strings/str_cat.cc +49 -142
  2029. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -85
  2030. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -1
  2031. data/third_party/abseil-cpp/absl/strings/str_join.h +19 -5
  2032. data/third_party/abseil-cpp/absl/strings/str_split.h +2 -2
  2033. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  2034. data/third_party/abseil-cpp/absl/strings/substitute.cc +4 -0
  2035. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -2
  2036. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +5 -0
  2037. data/third_party/abseil-cpp/absl/synchronization/mutex.h +5 -4
  2038. data/third_party/abseil-cpp/absl/time/civil_time.h +2 -2
  2039. data/third_party/abseil-cpp/absl/time/clock.cc +15 -1
  2040. data/third_party/abseil-cpp/absl/time/duration.cc +58 -53
  2041. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  2042. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  2043. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -29
  2044. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  2045. data/third_party/abseil-cpp/absl/time/time.h +73 -29
  2046. data/third_party/abseil-cpp/absl/types/compare.h +505 -0
  2047. data/third_party/abseil-cpp/absl/types/internal/optional.h +2 -2
  2048. data/third_party/abseil-cpp/absl/types/internal/variant.h +55 -67
  2049. data/third_party/abseil-cpp/absl/types/optional.h +15 -18
  2050. data/third_party/abseil-cpp/absl/types/span.h +3 -2
  2051. data/third_party/abseil-cpp/absl/types/variant.h +19 -24
  2052. data/third_party/abseil-cpp/absl/utility/utility.h +3 -41
  2053. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +285 -0
  2054. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.cc +89 -0
  2055. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.cc +84 -0
  2056. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.cc +85 -0
  2057. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +466 -0
  2058. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.cc +281 -0
  2059. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.cc +235 -0
  2060. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.cc +248 -0
  2061. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.cc +214 -0
  2062. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.cc +397 -0
  2063. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.cc +98 -0
  2064. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.cc +241 -0
  2065. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +974 -0
  2066. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +711 -0
  2067. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.cc +206 -0
  2068. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.cc +318 -0
  2069. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.cc +271 -0
  2070. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.cc +476 -0
  2071. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +119 -0
  2072. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.cc +700 -0
  2073. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.cc +310 -0
  2074. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +552 -0
  2075. data/third_party/boringssl-with-bazel/src/crypto/bio/file.cc +334 -0
  2076. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.cc +482 -0
  2077. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.cc +102 -0
  2078. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +133 -0
  2079. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.cc +169 -0
  2080. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.cc +57 -0
  2081. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.cc +465 -0
  2082. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.cc +161 -0
  2083. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.cc +53 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.cc +266 -0
  2085. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +702 -0
  2086. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +904 -0
  2087. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +1 -1
  2088. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.cc +156 -0
  2089. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.cc +224 -0
  2090. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +1 -1
  2091. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.cc +284 -0
  2092. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.cc +838 -0
  2093. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.cc +341 -0
  2094. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.cc +240 -0
  2095. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.cc +93 -0
  2096. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.cc +459 -0
  2097. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.cc +96 -0
  2098. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.cc +599 -0
  2099. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +43 -0
  2100. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.cc +675 -0
  2101. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +1 -1
  2102. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +75 -0
  2103. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +55 -0
  2104. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +62 -0
  2105. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +61 -0
  2106. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +94 -0
  2107. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +41 -0
  2108. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +54 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +151 -0
  2110. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +1 -1
  2111. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +341 -0
  2112. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +183 -0
  2113. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.cc +2154 -0
  2114. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.cc +18 -0
  2115. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +1 -1
  2116. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  2117. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.cc +527 -0
  2118. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.cc +165 -0
  2119. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.cc +348 -0
  2120. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +996 -0
  2121. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +419 -0
  2122. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +1 -1
  2123. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.cc +607 -0
  2124. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.cc +96 -0
  2125. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.cc +510 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +1 -1
  2127. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.cc +401 -0
  2128. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.cc +95 -0
  2129. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +900 -0
  2130. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +1 -1
  2131. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.cc +429 -0
  2132. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +482 -0
  2133. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.cc +146 -0
  2134. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.cc +137 -0
  2135. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +333 -0
  2136. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.cc +271 -0
  2137. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +332 -0
  2138. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.cc +103 -0
  2139. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +225 -0
  2140. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.cc +236 -0
  2141. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.cc +647 -0
  2142. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +239 -0
  2143. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.cc +109 -0
  2144. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +237 -0
  2145. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.cc +146 -0
  2146. data/third_party/boringssl-with-bazel/src/crypto/evp/print.cc +380 -0
  2147. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.cc +211 -0
  2148. data/third_party/boringssl-with-bazel/src/crypto/ex_data.cc +235 -0
  2149. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +127 -0
  2150. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.cc.inc +1281 -0
  2151. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +34 -12
  2152. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +242 -0
  2153. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +274 -0
  2154. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +242 -0
  2155. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.cc.inc +311 -0
  2156. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +541 -0
  2157. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.cc.inc +416 -0
  2158. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.cc.inc +232 -0
  2159. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +867 -0
  2160. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.cc.inc +87 -0
  2161. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +1320 -0
  2162. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +394 -0
  2163. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +339 -0
  2164. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  2165. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +525 -0
  2166. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +740 -0
  2167. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +1074 -0
  2168. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.cc.inc +354 -0
  2169. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +362 -0
  2170. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +499 -0
  2171. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.cc.inc +295 -0
  2172. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.cc.inc +714 -0
  2173. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +1456 -0
  2174. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.cc.inc +322 -0
  2175. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +14 -10
  2176. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +485 -0
  2177. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +1 -3
  2178. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +292 -0
  2179. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.cc.inc +220 -0
  2180. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.cc.inc +267 -0
  2181. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +1 -1
  2182. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +1038 -0
  2183. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +559 -0
  2184. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.cc.inc +104 -0
  2185. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +358 -0
  2186. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.cc.inc +1163 -0
  2187. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +1 -1
  2188. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.cc.inc +736 -0
  2189. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +65 -8
  2190. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.cc.inc +749 -0
  2191. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  2192. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.cc.inc +173 -0
  2193. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.cc.inc +269 -0
  2194. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.cc.inc +255 -0
  2195. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.cc.inc +273 -0
  2196. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.cc.inc +139 -0
  2197. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +316 -0
  2198. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +29 -12
  2199. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.cc +28 -0
  2200. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.cc.inc +112 -0
  2201. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.cc.inc +257 -0
  2202. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.cc.inc +791 -0
  2203. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.cc.inc +302 -0
  2204. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +53 -33
  2205. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.cc.inc +89 -0
  2206. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.cc.inc +221 -0
  2207. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +2 -81
  2208. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +481 -0
  2209. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.cc.inc +242 -0
  2210. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +420 -0
  2211. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +1042 -0
  2212. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1348 -0
  2213. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  2214. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +1042 -0
  2215. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +2 -2
  2216. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +327 -0
  2217. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +11 -8
  2218. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.cc.inc +432 -0
  2219. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.cc.inc +341 -0
  2220. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.cc.inc +515 -0
  2221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +1 -1
  2222. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.cc +1095 -0
  2223. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.cc +2177 -0
  2224. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +1 -1
  2225. data/third_party/boringssl-with-bazel/src/crypto/internal.h +278 -261
  2226. data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +1 -1
  2227. data/third_party/boringssl-with-bazel/src/crypto/keccak/keccak.cc +279 -0
  2228. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
  2229. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.cc +845 -0
  2230. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.cc +351 -0
  2231. data/third_party/boringssl-with-bazel/src/crypto/md4/md4.cc +236 -0
  2232. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +37 -0
  2233. data/third_party/boringssl-with-bazel/src/crypto/md5/md5.cc +285 -0
  2234. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +625 -0
  2235. data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +76 -0
  2236. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.cc +1790 -0
  2237. data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +90 -0
  2238. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +1097 -0
  2239. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +561 -0
  2240. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +4 -1
  2241. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.cc +294 -0
  2242. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +788 -0
  2243. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.cc +87 -0
  2244. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.cc +250 -0
  2245. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.cc +183 -0
  2246. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +1 -1
  2247. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +193 -0
  2248. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +524 -0
  2249. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -2
  2250. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +316 -0
  2251. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +528 -0
  2252. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +1345 -0
  2253. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +1 -1
  2254. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.cc +314 -0
  2255. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.cc +310 -0
  2256. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.cc +850 -0
  2257. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -1
  2258. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.cc +262 -0
  2259. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.cc +65 -0
  2260. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fork_detect.cc +194 -0
  2261. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.cc +44 -0
  2262. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.cc +60 -0
  2263. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getrandom_fillin.h +64 -0
  2264. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.cc +42 -0
  2265. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.cc +178 -0
  2266. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.cc +77 -0
  2267. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +37 -0
  2268. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.cc +46 -0
  2269. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/urandom.cc +328 -0
  2270. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.cc +102 -0
  2271. data/third_party/boringssl-with-bazel/src/crypto/refcount.cc +59 -0
  2272. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +2 -0
  2273. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.cc +324 -0
  2274. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.cc +573 -0
  2275. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_extra.cc +17 -0
  2276. data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
  2277. data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
  2278. data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
  2279. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.cc +79 -0
  2280. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/address.h +123 -0
  2281. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.cc +169 -0
  2282. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.h +58 -0
  2283. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/internal.h +63 -0
  2284. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.cc +161 -0
  2285. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.h +70 -0
  2286. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/params.h +83 -0
  2287. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +307 -0
  2288. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.cc +173 -0
  2289. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.h +85 -0
  2290. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.cc +171 -0
  2291. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.h +50 -0
  2292. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.cc +538 -0
  2293. data/third_party/boringssl-with-bazel/src/crypto/thread_none.cc +51 -0
  2294. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.cc +151 -0
  2295. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +240 -0
  2296. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +1 -1
  2297. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.cc +1656 -0
  2298. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.cc +685 -0
  2299. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.cc +1263 -0
  2300. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.cc +94 -0
  2301. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +139 -0
  2302. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.cc +116 -0
  2303. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.cc +178 -0
  2304. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +584 -0
  2305. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.cc +401 -0
  2306. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
  2307. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.cc +796 -0
  2308. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.cc +405 -0
  2309. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.cc +223 -0
  2310. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.cc +634 -0
  2311. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.cc +137 -0
  2312. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.cc +144 -0
  2313. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +416 -0
  2314. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.cc +488 -0
  2315. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.cc +599 -0
  2316. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.cc +115 -0
  2317. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.cc +156 -0
  2318. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.cc +270 -0
  2319. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.cc +123 -0
  2320. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +213 -0
  2321. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.cc +123 -0
  2322. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.cc +347 -0
  2323. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.cc +555 -0
  2324. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.cc +84 -0
  2325. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.cc +142 -0
  2326. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.cc +150 -0
  2327. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.cc +225 -0
  2328. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.cc +632 -0
  2329. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.cc +173 -0
  2330. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.cc +1395 -0
  2331. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.cc +228 -0
  2332. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.cc +600 -0
  2333. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.cc +291 -0
  2334. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +1642 -0
  2335. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.cc +482 -0
  2336. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.cc +133 -0
  2337. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.cc +360 -0
  2338. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.cc +384 -0
  2339. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +534 -0
  2340. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.cc +212 -0
  2341. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +548 -0
  2342. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +211 -0
  2343. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +1515 -0
  2344. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -1
  2345. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +1 -1
  2346. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +14 -1
  2347. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +1 -1
  2348. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +237 -275
  2349. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +12 -5
  2350. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
  2351. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
  2352. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
  2353. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +14 -9
  2354. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +1 -1
  2355. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -1
  2356. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  2357. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
  2358. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +1 -1
  2359. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +22 -13
  2360. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
  2361. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
  2362. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -0
  2363. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -1
  2364. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  2365. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +1 -1
  2366. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
  2367. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +17 -1
  2368. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
  2369. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
  2370. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +11 -1
  2371. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
  2372. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +9 -7
  2373. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
  2374. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +1 -1
  2375. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
  2376. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +136 -0
  2377. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +246 -0
  2378. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +3 -0
  2379. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
  2380. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +1 -1
  2381. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -1
  2382. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +1 -1
  2383. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +1 -1
  2384. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +3 -4
  2385. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +1 -1
  2386. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
  2387. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +2 -2
  2388. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
  2389. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
  2390. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
  2391. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +1 -1
  2392. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +10 -5
  2393. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +1 -1
  2394. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +2 -2
  2395. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +2 -40
  2396. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
  2397. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +133 -0
  2398. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +54 -13
  2399. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +1 -1
  2400. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +267 -143
  2401. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -0
  2402. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +1 -1
  2403. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +2 -2
  2404. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +1 -1
  2405. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
  2406. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
  2407. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -1
  2408. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -1
  2409. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +2 -2
  2410. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -6
  2411. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +671 -329
  2412. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +116 -113
  2413. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +164 -17
  2414. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +4 -12
  2415. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +99 -42
  2416. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +445 -112
  2417. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +23 -14
  2418. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +387 -359
  2419. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +48 -58
  2420. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +44 -36
  2421. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +183 -165
  2422. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +81 -62
  2423. data/third_party/boringssl-with-bazel/src/ssl/internal.h +970 -329
  2424. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +69 -53
  2425. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +13 -11
  2426. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +23 -3
  2427. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +90 -98
  2428. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +38 -64
  2429. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +8 -5
  2430. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +103 -44
  2431. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +210 -220
  2432. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +70 -12
  2433. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +114 -16
  2434. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +200 -183
  2435. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +74 -36
  2436. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +79 -95
  2437. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -9
  2438. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +91 -16
  2439. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +34 -14
  2440. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +51 -56
  2441. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +22 -25
  2442. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +45 -28
  2443. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +69 -51
  2444. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +279 -134
  2445. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +97 -60
  2446. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +51 -62
  2447. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +40 -48
  2448. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
  2449. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
  2450. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
  2451. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
  2452. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
  2453. data/third_party/upb/upb/base/string_view.h +1 -1
  2454. data/third_party/upb/upb/json/decode.c +60 -13
  2455. data/third_party/upb/upb/json/decode.h +26 -3
  2456. data/third_party/upb/upb/json/encode.c +2 -2
  2457. data/third_party/upb/upb/lex/round_trip.c +10 -0
  2458. data/third_party/upb/upb/mem/arena.c +80 -4
  2459. data/third_party/upb/upb/mem/arena.h +20 -9
  2460. data/third_party/upb/upb/mem/arena.hpp +5 -1
  2461. data/third_party/upb/upb/mem/internal/arena.h +11 -8
  2462. data/third_party/upb/upb/message/accessors.c +6 -7
  2463. data/third_party/upb/upb/message/accessors.h +186 -376
  2464. data/third_party/upb/upb/message/array.c +26 -3
  2465. data/third_party/upb/upb/message/array.h +17 -9
  2466. data/third_party/upb/upb/message/compat.c +5 -5
  2467. data/third_party/upb/upb/message/compat.h +3 -3
  2468. data/third_party/upb/upb/message/copy.c +23 -20
  2469. data/third_party/upb/upb/message/internal/accessors.h +617 -55
  2470. data/third_party/upb/upb/message/internal/array.h +23 -15
  2471. data/third_party/upb/upb/message/internal/compare_unknown.c +289 -0
  2472. data/third_party/upb/upb/message/internal/compare_unknown.h +49 -0
  2473. data/third_party/upb/upb/message/internal/extension.c +12 -12
  2474. data/third_party/upb/upb/message/internal/extension.h +9 -12
  2475. data/third_party/upb/upb/message/internal/map.h +15 -0
  2476. data/third_party/upb/upb/message/internal/map_sorter.h +4 -5
  2477. data/third_party/upb/upb/message/internal/message.c +22 -6
  2478. data/third_party/upb/upb/message/internal/message.h +11 -0
  2479. data/third_party/upb/upb/message/internal/tagged_ptr.h +5 -5
  2480. data/third_party/upb/upb/message/internal/types.h +41 -1
  2481. data/third_party/upb/upb/message/map.c +25 -0
  2482. data/third_party/upb/upb/message/map.h +11 -7
  2483. data/third_party/upb/upb/message/merge.c +38 -0
  2484. data/third_party/upb/upb/message/merge.h +26 -0
  2485. data/third_party/upb/upb/message/message.c +83 -4
  2486. data/third_party/upb/upb/message/message.h +16 -1
  2487. data/third_party/upb/upb/message/tagged_ptr.h +4 -8
  2488. data/third_party/upb/upb/message/value.h +26 -0
  2489. data/third_party/upb/upb/mini_descriptor/build_enum.c +3 -3
  2490. data/third_party/upb/upb/mini_descriptor/build_enum.h +6 -14
  2491. data/third_party/upb/upb/mini_descriptor/decode.c +19 -3
  2492. data/third_party/upb/upb/mini_descriptor/link.c +23 -21
  2493. data/third_party/upb/upb/mini_table/enum.h +2 -4
  2494. data/third_party/upb/upb/mini_table/extension.h +4 -12
  2495. data/third_party/upb/upb/mini_table/extension_registry.c +18 -0
  2496. data/third_party/upb/upb/mini_table/extension_registry.h +17 -0
  2497. data/third_party/upb/upb/mini_table/field.h +12 -38
  2498. data/third_party/upb/upb/mini_table/file.h +6 -19
  2499. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  2500. data/third_party/upb/upb/mini_table/internal/extension.h +18 -9
  2501. data/third_party/upb/upb/mini_table/internal/field.h +23 -23
  2502. data/third_party/upb/upb/mini_table/internal/file.h +7 -7
  2503. data/third_party/upb/upb/mini_table/internal/message.c +21 -1
  2504. data/third_party/upb/upb/mini_table/internal/message.h +80 -36
  2505. data/third_party/upb/upb/mini_table/internal/sub.h +9 -4
  2506. data/third_party/upb/upb/mini_table/message.h +23 -22
  2507. data/third_party/upb/upb/mini_table/sub.h +4 -12
  2508. data/third_party/upb/upb/port/def.inc +108 -12
  2509. data/third_party/upb/upb/port/undef.inc +8 -1
  2510. data/third_party/upb/upb/reflection/common.h +1 -11
  2511. data/third_party/upb/upb/reflection/def.hpp +35 -0
  2512. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  2513. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2514. data/third_party/upb/upb/reflection/enum_def.c +5 -1
  2515. data/third_party/upb/upb/reflection/enum_def.h +1 -0
  2516. data/third_party/upb/upb/reflection/enum_value_def.c +3 -8
  2517. data/third_party/upb/upb/reflection/field_def.c +72 -46
  2518. data/third_party/upb/upb/reflection/field_def.h +4 -0
  2519. data/third_party/upb/upb/reflection/file_def.c +30 -4
  2520. data/third_party/upb/upb/reflection/file_def.h +3 -0
  2521. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2522. data/third_party/upb/upb/reflection/message.c +26 -9
  2523. data/third_party/upb/upb/reflection/message.h +2 -2
  2524. data/third_party/upb/upb/reflection/message_def.c +14 -9
  2525. data/third_party/upb/upb/reflection/method_def.h +8 -7
  2526. data/third_party/upb/upb/reflection/service_def.h +6 -5
  2527. data/third_party/upb/upb/text/encode.c +53 -389
  2528. data/third_party/upb/upb/text/encode.h +1 -11
  2529. data/third_party/upb/upb/text/internal/encode.c +180 -0
  2530. data/third_party/upb/upb/text/internal/encode.h +240 -0
  2531. data/third_party/upb/upb/text/options.h +22 -0
  2532. data/third_party/upb/upb/wire/decode.c +160 -94
  2533. data/third_party/upb/upb/wire/decode.h +15 -2
  2534. data/third_party/upb/upb/wire/encode.c +89 -48
  2535. data/third_party/upb/upb/wire/encode.h +12 -1
  2536. data/third_party/upb/upb/wire/eps_copy_input_stream.h +3 -3
  2537. data/third_party/upb/upb/wire/internal/decode_fast.c +28 -29
  2538. data/third_party/upb/upb/wire/internal/reader.h +3 -3
  2539. data/third_party/upb/upb/wire/reader.c +1 -2
  2540. data/third_party/upb/upb/wire/reader.h +4 -8
  2541. metadata +628 -540
  2542. data/src/core/client_channel/config_selector.cc +0 -60
  2543. data/src/core/ext/gcp/metadata_query.cc +0 -137
  2544. data/src/core/ext/gcp/metadata_query.h +0 -87
  2545. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  2546. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  2547. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +0 -45
  2548. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +0 -67
  2549. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  2550. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -419
  2551. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -81
  2552. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -30
  2553. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -400
  2554. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -106
  2555. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -33
  2556. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -104
  2557. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -32
  2558. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -66
  2559. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -47
  2560. data/src/core/handshaker/security/tsi_error.cc +0 -31
  2561. data/src/core/handshaker/security/tsi_error.h +0 -30
  2562. data/src/core/lib/avl/avl.h +0 -325
  2563. data/src/core/lib/backoff/backoff.cc +0 -47
  2564. data/src/core/lib/backoff/backoff.h +0 -89
  2565. data/src/core/lib/backoff/random_early_detection.cc +0 -33
  2566. data/src/core/lib/backoff/random_early_detection.h +0 -62
  2567. data/src/core/lib/channel/call_tracer.cc +0 -364
  2568. data/src/core/lib/channel/call_tracer.h +0 -226
  2569. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  2570. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  2571. data/src/core/lib/channel/context.h +0 -105
  2572. data/src/core/lib/channel/metrics.cc +0 -334
  2573. data/src/core/lib/channel/metrics.h +0 -365
  2574. data/src/core/lib/channel/tcp_tracer.h +0 -144
  2575. data/src/core/lib/config/config_vars.cc +0 -154
  2576. data/src/core/lib/config/config_vars.h +0 -131
  2577. data/src/core/lib/config/config_vars_non_generated.cc +0 -49
  2578. data/src/core/lib/config/core_configuration.cc +0 -112
  2579. data/src/core/lib/config/core_configuration.h +0 -244
  2580. data/src/core/lib/config/load_config.cc +0 -79
  2581. data/src/core/lib/config/load_config.h +0 -55
  2582. data/src/core/lib/debug/event_log.cc +0 -88
  2583. data/src/core/lib/debug/event_log.h +0 -81
  2584. data/src/core/lib/debug/histogram_view.cc +0 -69
  2585. data/src/core/lib/debug/histogram_view.h +0 -37
  2586. data/src/core/lib/debug/stats.cc +0 -68
  2587. data/src/core/lib/debug/stats.h +0 -64
  2588. data/src/core/lib/debug/stats_data.cc +0 -752
  2589. data/src/core/lib/debug/stats_data.h +0 -579
  2590. data/src/core/lib/event_engine/trace.cc +0 -25
  2591. data/src/core/lib/event_engine/trace.h +0 -48
  2592. data/src/core/lib/gpr/alloc.cc +0 -73
  2593. data/src/core/lib/gpr/alloc.h +0 -28
  2594. data/src/core/lib/gpr/android/log.cc +0 -79
  2595. data/src/core/lib/gpr/atm.cc +0 -35
  2596. data/src/core/lib/gpr/iphone/cpu.cc +0 -44
  2597. data/src/core/lib/gpr/linux/cpu.cc +0 -87
  2598. data/src/core/lib/gpr/linux/log.cc +0 -114
  2599. data/src/core/lib/gpr/log.cc +0 -166
  2600. data/src/core/lib/gpr/msys/tmpfile.cc +0 -59
  2601. data/src/core/lib/gpr/posix/cpu.cc +0 -84
  2602. data/src/core/lib/gpr/posix/log.cc +0 -111
  2603. data/src/core/lib/gpr/posix/string.cc +0 -72
  2604. data/src/core/lib/gpr/posix/sync.cc +0 -161
  2605. data/src/core/lib/gpr/posix/time.cc +0 -125
  2606. data/src/core/lib/gpr/posix/tmpfile.cc +0 -73
  2607. data/src/core/lib/gpr/spinlock.h +0 -53
  2608. data/src/core/lib/gpr/string.cc +0 -344
  2609. data/src/core/lib/gpr/string.h +0 -112
  2610. data/src/core/lib/gpr/sync.cc +0 -126
  2611. data/src/core/lib/gpr/sync_abseil.cc +0 -110
  2612. data/src/core/lib/gpr/time.cc +0 -271
  2613. data/src/core/lib/gpr/time_precise.cc +0 -168
  2614. data/src/core/lib/gpr/time_precise.h +0 -69
  2615. data/src/core/lib/gpr/tmpfile.h +0 -32
  2616. data/src/core/lib/gpr/useful.h +0 -184
  2617. data/src/core/lib/gpr/windows/cpu.cc +0 -35
  2618. data/src/core/lib/gpr/windows/log.cc +0 -116
  2619. data/src/core/lib/gpr/windows/string.cc +0 -69
  2620. data/src/core/lib/gpr/windows/string_util.cc +0 -55
  2621. data/src/core/lib/gpr/windows/sync.cc +0 -124
  2622. data/src/core/lib/gpr/windows/time.cc +0 -108
  2623. data/src/core/lib/gpr/windows/tmpfile.cc +0 -68
  2624. data/src/core/lib/gprpp/atomic_utils.h +0 -47
  2625. data/src/core/lib/gprpp/bitset.h +0 -225
  2626. data/src/core/lib/gprpp/chunked_vector.h +0 -258
  2627. data/src/core/lib/gprpp/construct_destruct.h +0 -40
  2628. data/src/core/lib/gprpp/cpp_impl_of.h +0 -49
  2629. data/src/core/lib/gprpp/crash.cc +0 -42
  2630. data/src/core/lib/gprpp/crash.h +0 -37
  2631. data/src/core/lib/gprpp/debug_location.h +0 -99
  2632. data/src/core/lib/gprpp/directory_reader.h +0 -48
  2633. data/src/core/lib/gprpp/down_cast.h +0 -49
  2634. data/src/core/lib/gprpp/dual_ref_counted.h +0 -365
  2635. data/src/core/lib/gprpp/env.h +0 -53
  2636. data/src/core/lib/gprpp/examine_stack.cc +0 -43
  2637. data/src/core/lib/gprpp/examine_stack.h +0 -45
  2638. data/src/core/lib/gprpp/fork.cc +0 -241
  2639. data/src/core/lib/gprpp/fork.h +0 -98
  2640. data/src/core/lib/gprpp/host_port.cc +0 -116
  2641. data/src/core/lib/gprpp/host_port.h +0 -57
  2642. data/src/core/lib/gprpp/if_list.h +0 -4530
  2643. data/src/core/lib/gprpp/linux/env.cc +0 -62
  2644. data/src/core/lib/gprpp/load_file.cc +0 -77
  2645. data/src/core/lib/gprpp/load_file.h +0 -34
  2646. data/src/core/lib/gprpp/manual_constructor.h +0 -146
  2647. data/src/core/lib/gprpp/match.h +0 -75
  2648. data/src/core/lib/gprpp/memory.h +0 -52
  2649. data/src/core/lib/gprpp/mpscq.cc +0 -108
  2650. data/src/core/lib/gprpp/mpscq.h +0 -100
  2651. data/src/core/lib/gprpp/no_destruct.h +0 -95
  2652. data/src/core/lib/gprpp/notification.h +0 -67
  2653. data/src/core/lib/gprpp/orphanable.h +0 -153
  2654. data/src/core/lib/gprpp/overload.h +0 -59
  2655. data/src/core/lib/gprpp/packed_table.h +0 -40
  2656. data/src/core/lib/gprpp/per_cpu.cc +0 -34
  2657. data/src/core/lib/gprpp/per_cpu.h +0 -103
  2658. data/src/core/lib/gprpp/posix/directory_reader.cc +0 -82
  2659. data/src/core/lib/gprpp/posix/env.cc +0 -47
  2660. data/src/core/lib/gprpp/posix/stat.cc +0 -56
  2661. data/src/core/lib/gprpp/posix/thd.cc +0 -247
  2662. data/src/core/lib/gprpp/ref_counted.h +0 -395
  2663. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -445
  2664. data/src/core/lib/gprpp/ref_counted_string.cc +0 -43
  2665. data/src/core/lib/gprpp/ref_counted_string.h +0 -161
  2666. data/src/core/lib/gprpp/single_set_ptr.h +0 -88
  2667. data/src/core/lib/gprpp/sorted_pack.h +0 -89
  2668. data/src/core/lib/gprpp/stat.h +0 -36
  2669. data/src/core/lib/gprpp/status_helper.cc +0 -453
  2670. data/src/core/lib/gprpp/status_helper.h +0 -190
  2671. data/src/core/lib/gprpp/strerror.cc +0 -41
  2672. data/src/core/lib/gprpp/strerror.h +0 -29
  2673. data/src/core/lib/gprpp/sync.h +0 -200
  2674. data/src/core/lib/gprpp/table.h +0 -452
  2675. data/src/core/lib/gprpp/tchar.cc +0 -49
  2676. data/src/core/lib/gprpp/tchar.h +0 -33
  2677. data/src/core/lib/gprpp/thd.h +0 -195
  2678. data/src/core/lib/gprpp/time.cc +0 -242
  2679. data/src/core/lib/gprpp/time.h +0 -384
  2680. data/src/core/lib/gprpp/time_averaged_stats.cc +0 -60
  2681. data/src/core/lib/gprpp/time_averaged_stats.h +0 -79
  2682. data/src/core/lib/gprpp/time_util.cc +0 -82
  2683. data/src/core/lib/gprpp/time_util.h +0 -41
  2684. data/src/core/lib/gprpp/type_list.h +0 -32
  2685. data/src/core/lib/gprpp/unique_type_name.h +0 -104
  2686. data/src/core/lib/gprpp/uuid_v4.cc +0 -37
  2687. data/src/core/lib/gprpp/uuid_v4.h +0 -36
  2688. data/src/core/lib/gprpp/validation_errors.cc +0 -65
  2689. data/src/core/lib/gprpp/validation_errors.h +0 -134
  2690. data/src/core/lib/gprpp/windows/directory_reader.cc +0 -81
  2691. data/src/core/lib/gprpp/windows/env.cc +0 -56
  2692. data/src/core/lib/gprpp/windows/stat.cc +0 -52
  2693. data/src/core/lib/gprpp/windows/thd.cc +0 -184
  2694. data/src/core/lib/gprpp/work_serializer.cc +0 -558
  2695. data/src/core/lib/gprpp/work_serializer.h +0 -106
  2696. data/src/core/lib/gprpp/xxhash_inline.h +0 -29
  2697. data/src/core/lib/http/format_request.cc +0 -136
  2698. data/src/core/lib/http/format_request.h +0 -37
  2699. data/src/core/lib/http/httpcli.cc +0 -392
  2700. data/src/core/lib/http/httpcli.h +0 -267
  2701. data/src/core/lib/http/httpcli_security_connector.cc +0 -213
  2702. data/src/core/lib/http/httpcli_ssl_credentials.h +0 -38
  2703. data/src/core/lib/http/parser.cc +0 -451
  2704. data/src/core/lib/http/parser.h +0 -129
  2705. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  2706. data/src/core/lib/iomgr/gethostname.h +0 -26
  2707. data/src/core/lib/iomgr/gethostname_fallback.cc +0 -30
  2708. data/src/core/lib/iomgr/gethostname_host_name_max.cc +0 -40
  2709. data/src/core/lib/iomgr/gethostname_sysconf.cc +0 -40
  2710. data/src/core/lib/iomgr/grpc_if_nametoindex.h +0 -30
  2711. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +0 -43
  2712. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +0 -39
  2713. data/src/core/lib/json/json.h +0 -29
  2714. data/src/core/lib/json/json_args.h +0 -34
  2715. data/src/core/lib/json/json_channel_args.h +0 -42
  2716. data/src/core/lib/json/json_object_loader.cc +0 -215
  2717. data/src/core/lib/json/json_object_loader.h +0 -645
  2718. data/src/core/lib/json/json_reader.cc +0 -956
  2719. data/src/core/lib/json/json_reader.h +0 -34
  2720. data/src/core/lib/json/json_util.cc +0 -101
  2721. data/src/core/lib/json/json_util.h +0 -164
  2722. data/src/core/lib/json/json_writer.cc +0 -339
  2723. data/src/core/lib/json/json_writer.h +0 -33
  2724. data/src/core/lib/matchers/matchers.cc +0 -330
  2725. data/src/core/lib/matchers/matchers.h +0 -163
  2726. data/src/core/lib/promise/trace.cc +0 -20
  2727. data/src/core/lib/promise/trace.h +0 -24
  2728. data/src/core/lib/resource_quota/trace.cc +0 -19
  2729. data/src/core/lib/resource_quota/trace.h +0 -24
  2730. data/src/core/lib/slice/slice_refcount.cc +0 -20
  2731. data/src/core/lib/surface/api_trace.cc +0 -25
  2732. data/src/core/lib/surface/api_trace.h +0 -52
  2733. data/src/core/lib/surface/call_trace.h +0 -24
  2734. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  2735. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  2736. data/src/core/lib/transport/batch_builder.cc +0 -172
  2737. data/src/core/lib/transport/batch_builder.h +0 -474
  2738. data/src/core/lib/uri/uri_parser.cc +0 -372
  2739. data/src/core/lib/uri/uri_parser.h +0 -101
  2740. data/src/core/resolver/binder/binder_resolver.cc +0 -154
  2741. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  2742. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  2743. data/src/core/xds/grpc/upb_utils.h +0 -45
  2744. data/src/core/xds/grpc/xds_http_filters.cc +0 -116
  2745. data/src/core/xds/grpc/xds_http_filters.h +0 -182
  2746. data/src/core/xds/xds_client/xds_client_stats.cc +0 -174
  2747. data/src/core/xds/xds_client/xds_client_stats.h +0 -258
  2748. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +0 -44
  2749. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +0 -284
  2750. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -89
  2751. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +0 -84
  2752. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +0 -85
  2753. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +0 -465
  2754. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +0 -279
  2755. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +0 -235
  2756. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +0 -245
  2757. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +0 -214
  2758. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -397
  2759. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +0 -98
  2760. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +0 -241
  2761. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +0 -973
  2762. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +0 -708
  2763. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +0 -212
  2764. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +0 -317
  2765. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +0 -268
  2766. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +0 -475
  2767. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +0 -726
  2768. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +0 -309
  2769. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +0 -544
  2770. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +0 -334
  2771. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +0 -480
  2772. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -102
  2773. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +0 -133
  2774. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +0 -169
  2775. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +0 -57
  2776. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +0 -465
  2777. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +0 -158
  2778. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +0 -53
  2779. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +0 -266
  2780. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +0 -718
  2781. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +0 -913
  2782. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +0 -156
  2783. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -224
  2784. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +0 -284
  2785. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +0 -841
  2786. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -341
  2787. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +0 -228
  2788. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +0 -90
  2789. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +0 -455
  2790. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +0 -94
  2791. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +0 -598
  2792. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +0 -647
  2793. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  2794. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +0 -75
  2795. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -55
  2796. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -62
  2797. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -61
  2798. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +0 -93
  2799. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +0 -41
  2800. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -54
  2801. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -148
  2802. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -292
  2803. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +0 -242
  2804. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +0 -2157
  2805. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +0 -18
  2806. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +0 -523
  2807. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +0 -165
  2808. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -266
  2809. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +0 -990
  2810. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -421
  2811. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +0 -572
  2812. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +0 -96
  2813. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +0 -508
  2814. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +0 -265
  2815. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +0 -91
  2816. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +0 -903
  2817. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +0 -430
  2818. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +0 -483
  2819. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +0 -137
  2820. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +0 -120
  2821. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +0 -338
  2822. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +0 -274
  2823. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +0 -332
  2824. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +0 -100
  2825. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +0 -224
  2826. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +0 -232
  2827. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +0 -646
  2828. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +0 -241
  2829. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +0 -106
  2830. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +0 -236
  2831. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +0 -146
  2832. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +0 -381
  2833. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +0 -209
  2834. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +0 -236
  2835. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -106
  2836. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +0 -1281
  2837. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +0 -242
  2838. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +0 -275
  2839. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c +0 -310
  2840. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -541
  2841. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +0 -428
  2842. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -234
  2843. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +0 -909
  2844. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +0 -87
  2845. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +0 -1276
  2846. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -397
  2847. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +0 -331
  2848. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +0 -532
  2849. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +0 -744
  2850. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -1077
  2851. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +0 -356
  2852. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +0 -363
  2853. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +0 -499
  2854. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +0 -287
  2855. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +0 -717
  2856. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +0 -1463
  2857. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.c +0 -322
  2858. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +0 -489
  2859. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +0 -288
  2860. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +0 -304
  2861. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.c +0 -267
  2862. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +0 -1043
  2863. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -557
  2864. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +0 -104
  2865. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +0 -359
  2866. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +0 -1163
  2867. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +0 -637
  2868. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +0 -749
  2869. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +0 -173
  2870. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +0 -269
  2871. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +0 -255
  2872. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -264
  2873. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +0 -130
  2874. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +0 -372
  2875. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +0 -32
  2876. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +0 -112
  2877. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +0 -256
  2878. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +0 -240
  2879. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +0 -37
  2880. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +0 -284
  2881. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +0 -743
  2882. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +0 -302
  2883. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +0 -90
  2884. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +0 -220
  2885. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +0 -197
  2886. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +0 -68
  2887. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +0 -64
  2888. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -493
  2889. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -328
  2890. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -241
  2891. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +0 -423
  2892. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +0 -1038
  2893. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +0 -1351
  2894. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +0 -119
  2895. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +0 -1064
  2896. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +0 -328
  2897. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +0 -439
  2898. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +0 -359
  2899. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +0 -537
  2900. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +0 -801
  2901. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +0 -2234
  2902. data/third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c +0 -279
  2903. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +0 -844
  2904. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +0 -350
  2905. data/third_party/boringssl-with-bazel/src/crypto/mem.c +0 -609
  2906. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +0 -564
  2907. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -294
  2908. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -790
  2909. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +0 -87
  2910. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -251
  2911. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -183
  2912. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +0 -193
  2913. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -523
  2914. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +0 -316
  2915. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -527
  2916. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +0 -1352
  2917. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +0 -314
  2918. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +0 -308
  2919. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +0 -847
  2920. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +0 -261
  2921. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +0 -57
  2922. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +0 -44
  2923. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +0 -52
  2924. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +0 -34
  2925. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +0 -158
  2926. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +0 -74
  2927. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +0 -38
  2928. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +0 -95
  2929. data/third_party/boringssl-with-bazel/src/crypto/refcount.c +0 -59
  2930. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +0 -324
  2931. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +0 -570
  2932. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +0 -79
  2933. data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
  2934. data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
  2935. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
  2936. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
  2937. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
  2938. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
  2939. data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
  2940. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
  2941. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
  2942. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
  2943. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
  2944. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
  2945. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
  2946. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
  2947. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +0 -534
  2948. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -51
  2949. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -150
  2950. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +0 -236
  2951. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +0 -1668
  2952. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +0 -687
  2953. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +0 -1267
  2954. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +0 -94
  2955. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +0 -136
  2956. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +0 -116
  2957. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -178
  2958. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +0 -585
  2959. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +0 -400
  2960. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +0 -786
  2961. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +0 -401
  2962. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c +0 -221
  2963. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c +0 -634
  2964. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c +0 -135
  2965. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c +0 -141
  2966. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c +0 -416
  2967. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +0 -482
  2968. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +0 -598
  2969. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c +0 -112
  2970. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c +0 -154
  2971. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c +0 -270
  2972. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c +0 -122
  2973. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +0 -211
  2974. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c +0 -121
  2975. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +0 -344
  2976. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c +0 -555
  2977. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c +0 -81
  2978. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c +0 -142
  2979. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c +0 -150
  2980. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c +0 -224
  2981. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c +0 -624
  2982. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c +0 -170
  2983. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +0 -1357
  2984. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -227
  2985. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -609
  2986. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +0 -291
  2987. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +0 -1648
  2988. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +0 -440
  2989. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +0 -133
  2990. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -356
  2991. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +0 -384
  2992. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +0 -527
  2993. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -210
  2994. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +0 -544
  2995. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +0 -209
  2996. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.c +0 -1514
  2997. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
  2998. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_bool.c → a_bool.cc} +0 -0
  2999. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_gentm.c → a_gentm.cc} +0 -0
  3000. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_octet.c → a_octet.cc} +0 -0
  3001. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_strex.c → a_strex.cc} +0 -0
  3002. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_time.c → a_time.cc} +0 -0
  3003. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{a_utctm.c → a_utctm.cc} +0 -0
  3004. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_par.c → asn1_par.cc} +0 -0
  3005. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_int.c → f_int.cc} +0 -0
  3006. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{f_string.c → f_string.cc} +0 -0
  3007. /data/third_party/boringssl-with-bazel/src/crypto/asn1/{tasn_typ.c → tasn_typ.cc} +0 -0
  3008. /data/third_party/boringssl-with-bazel/src/crypto/bio/{errno.c → errno.cc} +0 -0
  3009. /data/third_party/boringssl-with-bazel/src/crypto/bio/{fd.c → fd.cc} +0 -0
  3010. /data/third_party/boringssl-with-bazel/src/crypto/bio/{hexdump.c → hexdump.cc} +0 -0
  3011. /data/third_party/boringssl-with-bazel/src/crypto/bio/{socket.c → socket.cc} +0 -0
  3012. /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{cipher_extra.c → cipher_extra.cc} +0 -0
  3013. /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{derive_key.c → derive_key.cc} +0 -0
  3014. /data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/{tls_cbc.c → tls_cbc.cc} +0 -0
  3015. /data/third_party/boringssl-with-bazel/src/crypto/des/{des.c → des.cc} +0 -0
  3016. /data/third_party/boringssl-with-bazel/src/crypto/dh_extra/{params.c → params.cc} +0 -0
  3017. /data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/{ecdh_extra.c → ecdh_extra.cc} +0 -0
  3018. /data/third_party/boringssl-with-bazel/src/crypto/evp/{evp_asn1.c → evp_asn1.cc} +0 -0
  3019. /data/third_party/boringssl-with-bazel/src/crypto/evp/{sign.c → sign.cc} +0 -0
  3020. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{mode_wrappers.c → mode_wrappers.cc.inc} +0 -0
  3021. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c → bytes.cc.inc} +0 -0
  3022. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c → cmp.cc.inc} +0 -0
  3023. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c → generic.cc.inc} +0 -0
  3024. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{jacobi.c → jacobi.cc.inc} +0 -0
  3025. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c → montgomery_inv.cc.inc} +0 -0
  3026. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c → rsaz_exp.cc.inc} +0 -0
  3027. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c → e_aesccm.cc.inc} +0 -0
  3028. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c → check.cc.inc} +0 -0
  3029. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c → ec_montgomery.cc.inc} +0 -0
  3030. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c → simple.cc.inc} +0 -0
  3031. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cbc.c → cbc.cc.inc} +0 -0
  3032. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cfb.c → cfb.cc.inc} +0 -0
  3033. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ctr.c → ctr.cc.inc} +0 -0
  3034. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ofb.c → ofb.cc.inc} +0 -0
  3035. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c → kdf.cc.inc} +0 -0
  3036. /data/third_party/boringssl-with-bazel/src/crypto/obj/{obj_xref.c → obj_xref.cc} +0 -0
  3037. /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_all.c → pem_all.cc} +0 -0
  3038. /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_x509.c → pem_x509.cc} +0 -0
  3039. /data/third_party/boringssl-with-bazel/src/crypto/pem/{pem_xaux.c → pem_xaux.cc} +0 -0
  3040. /data/third_party/boringssl-with-bazel/src/crypto/rc4/{rc4.c → rc4.cc} +0 -0
  3041. /data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/{rsa_print.c → rsa_print.cc} +0 -0
  3042. /data/third_party/boringssl-with-bazel/src/crypto/{thread.c → thread.cc} +0 -0
  3043. /data/third_party/boringssl-with-bazel/src/crypto/x509/{by_file.c → by_file.cc} +0 -0
  3044. /data/third_party/boringssl-with-bazel/src/crypto/x509/{i2d_pr.c → i2d_pr.cc} +0 -0
  3045. /data/third_party/boringssl-with-bazel/src/crypto/x509/{name_print.c → name_print.cc} +0 -0
  3046. /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_crl.c → t_crl.cc} +0 -0
  3047. /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_req.c → t_req.cc} +0 -0
  3048. /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509.c → t_x509.cc} +0 -0
  3049. /data/third_party/boringssl-with-bazel/src/crypto/x509/{t_x509a.c → t_x509a.cc} +0 -0
  3050. /data/third_party/boringssl-with-bazel/src/crypto/x509/{v3_akeya.c → v3_akeya.cc} +0 -0
  3051. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509.c → x509.cc} +0 -0
  3052. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_cmp.c → x509_cmp.cc} +0 -0
  3053. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_d2.c → x509_d2.cc} +0 -0
  3054. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_def.c → x509_def.cc} +0 -0
  3055. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_ext.c → x509_ext.cc} +0 -0
  3056. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_obj.c → x509_obj.cc} +0 -0
  3057. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_req.c → x509_req.cc} +0 -0
  3058. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_set.c → x509_set.cc} +0 -0
  3059. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_trs.c → x509_trs.cc} +0 -0
  3060. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509_txt.c → x509_txt.cc} +0 -0
  3061. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509cset.c → x509cset.cc} +0 -0
  3062. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509name.c → x509name.cc} +0 -0
  3063. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x509rset.c → x509rset.cc} +0 -0
  3064. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_algor.c → x_algor.cc} +0 -0
  3065. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_attrib.c → x_attrib.cc} +0 -0
  3066. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_exten.c → x_exten.cc} +0 -0
  3067. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_req.c → x_req.cc} +0 -0
  3068. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_sig.c → x_sig.cc} +0 -0
  3069. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_spki.c → x_spki.cc} +0 -0
  3070. /data/third_party/boringssl-with-bazel/src/crypto/x509/{x_val.c → x_val.cc} +0 -0
@@ -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,8 +360,10 @@ 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]");
@@ -391,3787 +372,139 @@ void Call::ResetDeadline() {
391
372
  void Call::Run() {
392
373
  ApplicationCallbackExecCtx callback_exec_ctx;
393
374
  ExecCtx exec_ctx;
375
+ GRPC_TRACE_LOG(call, INFO)
376
+ << "call deadline expired "
377
+ << GRPC_DUMP_ARGS(Timestamp::Now(), send_deadline_);
394
378
  CancelWithError(grpc_error_set_int(
395
379
  absl::DeadlineExceededError("Deadline Exceeded"),
396
380
  StatusIntProperty::kRpcStatus, GRPC_STATUS_DEADLINE_EXCEEDED));
397
381
  InternalUnref("deadline[run]");
398
382
  }
399
383
 
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);
384
+ } // namespace grpc_core
822
385
 
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
- }
386
+ ///////////////////////////////////////////////////////////////////////////////
387
+ // C-based API
831
388
 
832
- void FilterStackCall::ReleaseCall(void* call, grpc_error_handle /*error*/) {
833
- static_cast<FilterStackCall*>(call)->DeleteThis();
389
+ void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
390
+ grpc_core::ExecCtx exec_ctx;
391
+ return grpc_core::Call::FromC(call)->arena()->Alloc(size);
834
392
  }
835
393
 
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));
394
+ void grpc_call_set_completion_queue(grpc_call* call,
395
+ grpc_completion_queue* cq) {
396
+ grpc_core::Call::FromC(call)->SetCompletionQueue(cq);
859
397
  }
860
398
 
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
- }
399
+ void grpc_call_ref(grpc_call* c) { grpc_core::Call::FromC(c)->ExternalRef(); }
885
400
 
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");
401
+ void grpc_call_unref(grpc_call* c) {
402
+ grpc_core::ExecCtx exec_ctx;
403
+ grpc_core::Call::FromC(c)->ExternalUnref();
906
404
  }
907
405
 
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;
406
+ char* grpc_call_get_peer(grpc_call* call) {
407
+ return grpc_core::Call::FromC(call)->GetPeer();
924
408
  }
925
409
 
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());
410
+ grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
411
+ GRPC_TRACE_LOG(api, INFO)
412
+ << "grpc_call_cancel(call=" << call << ", reserved=" << reserved << ")";
413
+ CHECK_EQ(reserved, nullptr);
414
+ if (call == nullptr) {
415
+ return GRPC_CALL_ERROR;
933
416
  }
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);
417
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
418
+ grpc_core::ExecCtx exec_ctx;
419
+ grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
420
+ return GRPC_CALL_OK;
951
421
  }
952
422
 
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
- }
423
+ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
424
+ grpc_status_code status,
425
+ const char* description,
426
+ void* reserved) {
427
+ GRPC_TRACE_LOG(api, INFO)
428
+ << "grpc_call_cancel_with_status(c=" << c << ", status=" << (int)status
429
+ << ", description=" << description << ", reserved=" << reserved << ")";
430
+ CHECK_EQ(reserved, nullptr);
431
+ if (c == nullptr) {
432
+ return GRPC_CALL_ERROR;
987
433
  }
434
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
435
+ grpc_core::ExecCtx exec_ctx;
436
+ grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
437
+ return GRPC_CALL_OK;
988
438
  }
989
439
 
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;
440
+ void grpc_call_cancel_internal(grpc_call* call) {
441
+ grpc_core::Call::FromC(call)->CancelWithError(absl::CancelledError());
1023
442
  }
1024
443
 
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);
444
+ grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
445
+ grpc_call* call) {
446
+ return grpc_core::Call::FromC(call)->incoming_compression_algorithm();
1106
447
  }
1107
448
 
1108
- void FilterStackCall::RecvInitialFilter(grpc_metadata_batch* b) {
1109
- ProcessIncomingInitialMetadata(*b);
1110
- PublishAppMetadata(b, false);
449
+ uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
450
+ return grpc_core::Call::FromC(call)->test_only_message_flags();
1111
451
  }
1112
452
 
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);
453
+ uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
454
+ return grpc_core::Call::FromC(call)
455
+ ->encodings_accepted_by_peer()
456
+ .ToLegacyBitmask();
1149
457
  }
1150
458
 
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);
459
+ grpc_core::Arena* grpc_call_get_arena(grpc_call* call) {
460
+ return grpc_core::Call::FromC(call)->arena();
1158
461
  }
1159
462
 
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);
463
+ grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
464
+ return grpc_core::Call::FromC(call)->call_stack();
1164
465
  }
1165
466
 
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
467
+ grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
468
+ size_t nops, void* tag, void* reserved) {
469
+ GRPC_TRACE_LOG(api, INFO)
470
+ << "grpc_call_start_batch(call=" << call << ", ops=" << ops
471
+ << ", nops=" << (unsigned long)nops << ", tag=" << tag
472
+ << ", reserved=" << reserved << ")";
1186
473
 
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();
474
+ if (reserved != nullptr || call == nullptr) {
475
+ return GRPC_CALL_ERROR;
1200
476
  } else {
1201
- bctl = arena()->New<BatchControl>();
1202
- *pslot = bctl;
477
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
478
+ grpc_core::ExecCtx exec_ctx;
479
+ return grpc_core::Call::FromC(call)->StartBatch(ops, nops, tag, false);
1203
480
  }
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
481
  }
1210
482
 
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
- }
483
+ grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
484
+ const grpc_op* ops,
485
+ size_t nops,
486
+ grpc_closure* closure) {
487
+ return grpc_core::Call::FromC(call)->StartBatch(ops, nops, closure, true);
488
+ }
1225
489
 
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
- }
1231
-
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);
490
+ void grpc_call_tracer_set(grpc_call* call,
491
+ grpc_core::ClientCallTracer* tracer) {
492
+ grpc_core::Arena* arena = grpc_call_get_arena(call);
493
+ return arena->SetContext<grpc_core::CallTracerAnnotationInterface>(tracer);
4166
494
  }
4167
495
 
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);
496
+ void grpc_call_tracer_set_and_manage(grpc_call* call,
497
+ grpc_core::ClientCallTracer* tracer) {
498
+ grpc_core::Arena* arena = grpc_call_get_arena(call);
499
+ arena->ManagedNew<ClientCallTracerWrapper>(tracer);
500
+ return arena->SetContext<grpc_core::CallTracerAnnotationInterface>(tracer);
4171
501
  }
4172
502
 
4173
- void* grpc_call_context_get(grpc_call* call, grpc_context_index elem) {
4174
- return grpc_core::Call::FromC(call)->ContextGet(elem);
503
+ void* grpc_call_tracer_get(grpc_call* call) {
504
+ grpc_core::Arena* arena = grpc_call_get_arena(call);
505
+ auto* call_tracer =
506
+ arena->GetContext<grpc_core::CallTracerAnnotationInterface>();
507
+ return call_tracer;
4175
508
  }
4176
509
 
4177
510
  uint8_t grpc_call_is_client(grpc_call* call) {
@@ -4237,5 +570,8 @@ const char* grpc_call_error_to_string(grpc_call_error error) {
4237
570
 
4238
571
  void grpc_call_run_in_event_engine(const grpc_call* call,
4239
572
  absl::AnyInvocable<void()> cb) {
4240
- grpc_core::Call::FromC(call)->event_engine()->Run(std::move(cb));
573
+ grpc_core::Call::FromC(call)
574
+ ->arena()
575
+ ->GetContext<grpc_event_engine::experimental::EventEngine>()
576
+ ->Run(std::move(cb));
4241
577
  }