grpc 1.30.0 → 1.46.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (2443) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1497 -18376
  3. data/etc/roots.pem +592 -899
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/compression.h +1 -1
  7. data/include/grpc/event_engine/README.md +38 -0
  8. data/include/grpc/event_engine/endpoint_config.h +43 -0
  9. data/include/grpc/event_engine/event_engine.h +399 -0
  10. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  11. data/include/grpc/event_engine/memory_allocator.h +226 -0
  12. data/include/grpc/event_engine/memory_request.h +57 -0
  13. data/include/grpc/event_engine/port.h +39 -0
  14. data/include/grpc/fork.h +1 -1
  15. data/include/grpc/grpc.h +90 -25
  16. data/include/grpc/grpc_posix.h +22 -18
  17. data/include/grpc/grpc_security.h +563 -315
  18. data/include/grpc/grpc_security_constants.h +20 -14
  19. data/include/grpc/impl/codegen/README.md +22 -0
  20. data/include/grpc/impl/codegen/atm.h +5 -3
  21. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  22. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  23. data/include/grpc/impl/codegen/atm_windows.h +6 -0
  24. data/include/grpc/impl/codegen/byte_buffer.h +3 -1
  25. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  26. data/include/grpc/impl/codegen/compression_types.h +2 -2
  27. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  28. data/include/grpc/impl/codegen/fork.h +2 -0
  29. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  30. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  31. data/include/grpc/impl/codegen/grpc_types.h +84 -53
  32. data/include/grpc/impl/codegen/log.h +2 -2
  33. data/include/grpc/impl/codegen/port_platform.h +100 -97
  34. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  35. data/include/grpc/impl/codegen/slice.h +6 -1
  36. data/include/grpc/impl/codegen/status.h +2 -0
  37. data/include/grpc/impl/codegen/sync.h +8 -5
  38. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  39. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  40. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  41. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  42. data/include/grpc/impl/codegen/sync_windows.h +6 -0
  43. data/include/grpc/module.modulemap +14 -14
  44. data/include/grpc/slice.h +1 -12
  45. data/include/grpc/slice_buffer.h +3 -3
  46. data/include/grpc/status.h +1 -1
  47. data/include/grpc/support/atm.h +1 -1
  48. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  49. data/include/grpc/support/atm_gcc_sync.h +1 -1
  50. data/include/grpc/support/atm_windows.h +1 -1
  51. data/include/grpc/support/log.h +1 -1
  52. data/include/grpc/support/port_platform.h +1 -1
  53. data/include/grpc/support/sync.h +4 -4
  54. data/include/grpc/support/sync_abseil.h +1 -1
  55. data/include/grpc/support/sync_custom.h +1 -1
  56. data/include/grpc/support/sync_generic.h +1 -1
  57. data/include/grpc/support/sync_posix.h +1 -1
  58. data/include/grpc/support/sync_windows.h +1 -1
  59. data/include/grpc/support/time.h +9 -9
  60. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  61. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  62. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  63. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  64. data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
  65. data/src/core/ext/filters/client_channel/backend_metric.cc +33 -35
  66. data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
  67. data/src/core/ext/filters/client_channel/backup_poller.cc +20 -14
  68. data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
  69. data/src/core/ext/filters/client_channel/channel_connectivity.cc +158 -202
  70. data/src/core/ext/filters/client_channel/client_channel.cc +2284 -3096
  71. data/src/core/ext/filters/client_channel/client_channel.h +566 -63
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
  73. data/src/core/ext/filters/client_channel/client_channel_channelz.h +2 -5
  74. data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
  75. data/src/core/ext/filters/client_channel/client_channel_factory.h +18 -19
  76. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -22
  77. data/src/core/ext/filters/client_channel/config_selector.cc +59 -0
  78. data/src/core/ext/filters/client_channel/config_selector.h +145 -0
  79. data/src/core/ext/filters/client_channel/connector.h +20 -20
  80. data/src/core/ext/filters/client_channel/dynamic_filters.cc +189 -0
  81. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  82. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -143
  83. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +16 -24
  84. data/src/core/ext/filters/client_channel/health/health_check_client.cc +129 -572
  85. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -158
  86. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +60 -62
  87. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
  88. data/src/core/ext/filters/client_channel/http_proxy.cc +113 -117
  89. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  90. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +52 -38
  91. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +12 -9
  92. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +16 -9
  93. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -24
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +519 -388
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -14
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -4
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +4 -3
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -5
  101. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +20 -21
  102. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  103. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -75
  104. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +307 -211
  105. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +804 -0
  106. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
  107. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2542 -0
  108. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +84 -84
  109. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +32 -49
  110. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +138 -96
  111. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +443 -156
  112. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +872 -0
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +710 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1215 -0
  117. data/src/core/ext/filters/client_channel/lb_policy.cc +23 -29
  118. data/src/core/ext/filters/client_channel/lb_policy.h +178 -142
  119. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
  120. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +13 -10
  121. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  122. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  123. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
  124. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +133 -0
  125. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +304 -339
  126. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -42
  127. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  128. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +31 -24
  129. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +58 -72
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +524 -230
  131. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +44 -26
  132. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  133. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  134. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +98 -247
  135. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +60 -62
  136. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +10 -7
  137. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +400 -0
  138. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  139. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  140. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +71 -63
  141. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +983 -101
  142. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  143. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +57 -314
  144. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +40 -62
  145. data/src/core/ext/filters/client_channel/retry_filter.cc +2655 -0
  146. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  147. data/src/core/ext/filters/client_channel/retry_service_config.cc +314 -0
  148. data/src/core/ext/filters/client_channel/retry_service_config.h +102 -0
  149. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -60
  150. data/src/core/ext/filters/client_channel/retry_throttle.h +15 -7
  151. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +157 -0
  152. data/src/core/ext/filters/client_channel/subchannel.cc +284 -397
  153. data/src/core/ext/filters/client_channel/subchannel.h +116 -161
  154. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  155. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +38 -9
  156. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +27 -12
  157. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  158. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  159. data/src/core/ext/filters/deadline/deadline_filter.cc +120 -114
  160. data/src/core/ext/filters/deadline/deadline_filter.h +9 -12
  161. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +258 -0
  162. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +62 -0
  163. data/src/core/ext/filters/fault_injection/service_config_parser.cc +179 -0
  164. data/src/core/ext/filters/fault_injection/service_config_parser.h +91 -0
  165. data/src/core/ext/filters/http/client/http_client_filter.cc +84 -539
  166. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  167. data/src/core/ext/filters/http/client_authority_filter.cc +39 -103
  168. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  169. data/src/core/ext/filters/http/http_filters_plugin.cc +55 -69
  170. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +67 -157
  171. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +103 -75
  172. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  173. data/src/core/ext/filters/http/server/http_server_filter.cc +89 -295
  174. data/src/core/ext/filters/message_size/message_size_filter.cc +101 -130
  175. data/src/core/ext/filters/message_size/message_size_filter.h +17 -3
  176. data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
  177. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  178. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  179. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  180. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
  181. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  182. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
  183. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
  184. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  185. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +335 -46
  186. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +22 -5
  187. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1005 -355
  188. data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
  189. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +11 -9
  190. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  191. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  192. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +807 -778
  193. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +24 -5
  194. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -6
  195. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -6
  196. data/src/core/ext/transport/chttp2/transport/flow_control.cc +89 -67
  197. data/src/core/ext/transport/chttp2/transport/flow_control.h +52 -38
  198. data/src/core/ext/transport/chttp2/transport/frame_data.cc +30 -30
  199. data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
  200. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +25 -25
  201. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +7 -6
  202. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +19 -20
  203. data/src/core/ext/transport/chttp2/transport/frame_ping.h +8 -6
  204. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +23 -22
  205. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +7 -6
  206. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +55 -22
  207. data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -7
  208. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +25 -25
  209. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
  210. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  211. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +516 -749
  212. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +183 -71
  213. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
  214. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +71 -0
  215. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +814 -1196
  216. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +101 -83
  217. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +239 -0
  218. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +115 -0
  219. data/src/core/ext/transport/chttp2/transport/internal.h +79 -78
  220. data/src/core/ext/transport/chttp2/transport/parsing.cc +177 -327
  221. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
  222. data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
  223. data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
  224. data/src/core/ext/transport/chttp2/transport/writing.cc +145 -190
  225. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  226. data/src/core/ext/transport/inproc/inproc_transport.cc +262 -237
  227. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  228. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  229. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  230. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  231. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  232. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +444 -0
  233. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2156 -0
  234. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  235. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  236. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  237. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  238. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  239. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  240. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  241. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  242. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  243. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  244. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  245. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  246. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  247. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  248. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  249. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +53 -2
  250. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  251. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +59 -14
  252. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +270 -0
  253. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +1240 -0
  254. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +411 -0
  255. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2161 -0
  256. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +95 -0
  257. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +382 -0
  258. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +543 -0
  259. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2961 -0
  260. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +48 -0
  261. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +103 -0
  262. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -0
  263. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +545 -0
  264. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  265. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  266. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +145 -0
  267. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +636 -0
  268. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +49 -0
  269. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +116 -0
  270. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +419 -0
  271. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1783 -0
  272. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +163 -0
  273. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +778 -0
  274. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +47 -0
  275. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +100 -0
  276. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +47 -0
  277. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +103 -0
  278. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  279. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  280. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +269 -0
  281. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +1277 -0
  282. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +220 -0
  283. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1219 -0
  284. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +49 -0
  285. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +122 -0
  286. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +322 -0
  287. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1686 -0
  288. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +40 -0
  289. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +84 -0
  290. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  291. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +169 -0
  292. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +47 -0
  293. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +144 -0
  294. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +56 -0
  295. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +178 -0
  296. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  297. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +118 -0
  298. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +106 -0
  299. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +348 -0
  300. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +144 -0
  301. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +623 -0
  302. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +129 -0
  303. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +568 -0
  304. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +46 -0
  305. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +94 -0
  306. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +165 -0
  307. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +886 -0
  308. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +186 -0
  309. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +941 -0
  310. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
  311. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +234 -0
  312. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +56 -0
  313. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +154 -0
  314. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  315. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  316. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
  317. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +716 -0
  318. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
  319. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +721 -0
  320. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +209 -0
  321. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +1008 -0
  322. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +101 -0
  323. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +443 -0
  324. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1051 -0
  325. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5956 -0
  326. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +79 -0
  327. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +255 -0
  328. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  329. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  330. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  331. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  332. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  333. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  334. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +63 -0
  335. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +167 -0
  336. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  337. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  338. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  339. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  340. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  341. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  342. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  343. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  344. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  345. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  346. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  347. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  348. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  349. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  350. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
  351. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +85 -0
  352. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
  353. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +375 -0
  354. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
  355. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +433 -0
  356. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  357. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  358. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
  359. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +168 -0
  360. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +463 -0
  361. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2606 -0
  362. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +28 -0
  363. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +38 -0
  364. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +175 -0
  365. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +880 -0
  366. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +88 -0
  367. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +308 -0
  368. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +191 -0
  369. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +1035 -0
  370. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  371. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  372. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +38 -0
  373. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +70 -0
  374. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +165 -0
  375. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +755 -0
  376. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +68 -0
  377. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +210 -0
  378. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
  379. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +631 -0
  380. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  381. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  382. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  383. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +249 -0
  384. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  385. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  386. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +62 -0
  387. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +188 -0
  388. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
  389. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +117 -0
  390. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +48 -0
  391. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +113 -0
  392. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +47 -0
  393. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +100 -0
  394. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +80 -0
  395. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +234 -0
  396. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +67 -0
  397. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +218 -0
  398. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
  399. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +170 -0
  400. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +78 -0
  401. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +294 -0
  402. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +107 -0
  403. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +429 -0
  404. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +107 -0
  405. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +419 -0
  406. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  407. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  408. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +26 -0
  409. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +39 -0
  410. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  411. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  412. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +54 -0
  413. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +139 -0
  414. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +66 -0
  415. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +196 -0
  416. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  417. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  418. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +43 -0
  419. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +97 -0
  420. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  421. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  422. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  423. data/src/core/ext/upb-generated/google/api/annotations.upb.h +25 -2
  424. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +271 -0
  425. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +1236 -0
  426. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +283 -0
  427. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +1338 -0
  428. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  429. data/src/core/ext/upb-generated/google/api/http.upb.h +241 -100
  430. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  431. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  432. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  433. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +48 -18
  434. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
  435. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2368 -969
  436. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  437. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +46 -16
  438. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  439. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +31 -11
  440. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  441. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +203 -101
  442. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  443. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +46 -16
  444. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  445. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +313 -112
  446. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  447. data/src/core/ext/upb-generated/google/rpc/status.upb.h +63 -26
  448. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  449. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  450. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  451. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
  452. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
  453. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +777 -337
  454. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
  455. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +99 -34
  456. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  457. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +74 -27
  458. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  459. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +460 -184
  460. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  461. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
  462. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  463. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  464. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  465. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +217 -43
  466. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +55 -0
  467. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +108 -0
  468. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  469. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +18 -2
  470. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  471. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +66 -16
  472. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +53 -0
  473. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +99 -0
  474. data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
  475. data/src/core/ext/upb-generated/validate/validate.upb.h +3024 -1084
  476. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  477. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  478. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  479. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  480. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  481. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  482. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  483. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
  484. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  485. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  486. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
  487. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +79 -0
  488. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
  489. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +200 -0
  490. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
  491. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +115 -0
  492. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  493. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  494. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
  495. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +127 -0
  496. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
  497. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +240 -0
  498. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
  499. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +121 -0
  500. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
  501. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
  502. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  503. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  504. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  505. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  506. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  507. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  508. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
  509. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
  510. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  511. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  512. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  513. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  514. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +309 -0
  515. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  516. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  517. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  518. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  519. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  520. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  521. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  522. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  523. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  524. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  525. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  526. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  527. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  528. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  529. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  530. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +48 -0
  531. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  532. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +38 -0
  533. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  534. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +222 -0
  535. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  536. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +393 -0
  537. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  538. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +98 -0
  539. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  540. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +557 -0
  541. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +155 -0
  542. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +51 -0
  543. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  544. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +138 -0
  545. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  546. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  547. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  548. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +112 -0
  549. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  550. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +54 -0
  551. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  552. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +267 -0
  553. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +150 -0
  554. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +168 -0
  555. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +65 -0
  556. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +53 -0
  557. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  558. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +47 -0
  559. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +35 -0
  560. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  561. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  562. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +235 -0
  563. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  564. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +228 -0
  565. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +75 -0
  566. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +53 -0
  567. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  568. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +298 -0
  569. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +110 -0
  570. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +41 -0
  571. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  572. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  573. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  574. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +57 -0
  575. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  576. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +70 -0
  577. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  578. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  579. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  580. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +99 -0
  581. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  582. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +128 -0
  583. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +60 -0
  584. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +136 -0
  585. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  586. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +48 -0
  587. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  588. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +197 -0
  589. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
  590. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +190 -0
  591. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  592. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  593. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  594. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +63 -0
  595. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  596. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  597. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -0
  599. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  600. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
  601. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  602. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  603. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
  606. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +896 -0
  607. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +77 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  614. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  615. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  616. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +57 -0
  617. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  618. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  619. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  620. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  621. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  623. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  624. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  625. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  626. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  627. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  628. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  629. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  630. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  631. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  632. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -0
  633. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  634. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
  635. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  636. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
  637. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  638. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  639. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  640. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -0
  641. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  642. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +551 -0
  643. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +130 -0
  644. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  645. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  646. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +210 -0
  647. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +65 -0
  648. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +91 -0
  649. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  650. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +254 -0
  651. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +65 -0
  652. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  653. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  654. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +58 -0
  655. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  656. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +128 -0
  657. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
  658. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +76 -0
  659. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  660. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +153 -0
  661. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  662. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  663. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  664. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  665. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  666. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  667. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  668. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +61 -0
  669. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  670. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +54 -0
  671. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  672. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +52 -0
  673. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  674. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +51 -0
  675. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  676. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +70 -0
  677. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  678. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +65 -0
  679. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  680. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +58 -0
  681. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  682. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +75 -0
  683. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  684. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +78 -0
  685. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  686. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +85 -0
  687. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  688. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  689. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  690. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +36 -0
  691. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  692. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  693. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  694. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +54 -0
  695. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  696. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +48 -0
  697. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  698. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  699. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  700. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +44 -0
  701. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  702. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  703. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  704. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  705. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  706. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  707. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  708. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  709. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  710. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +52 -0
  711. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  712. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  713. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  714. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +34 -0
  715. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  716. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -0
  717. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  718. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +35 -0
  719. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  720. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +32 -0
  721. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  722. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +54 -0
  723. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  724. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +35 -0
  725. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  726. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +45 -0
  727. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  728. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +37 -0
  729. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  730. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  731. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  732. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  733. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  734. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +62 -0
  735. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  736. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +47 -0
  737. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  738. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +34 -0
  739. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  740. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +46 -0
  741. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  742. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +39 -0
  743. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  744. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +283 -0
  745. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  746. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  747. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  748. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  749. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  750. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  751. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  752. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  753. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  754. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  755. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  756. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -0
  757. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  758. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
  759. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  760. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
  761. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  762. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  763. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  764. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -0
  765. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  766. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
  767. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  768. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
  769. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  770. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  771. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  772. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  773. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  774. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  775. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  776. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  777. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  778. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  779. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  780. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  781. data/src/core/ext/xds/certificate_provider_store.cc +95 -0
  782. data/src/core/ext/xds/certificate_provider_store.h +121 -0
  783. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  784. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  785. data/src/core/ext/xds/upb_utils.h +67 -0
  786. data/src/core/ext/xds/xds_api.cc +730 -0
  787. data/src/core/ext/xds/xds_api.h +191 -0
  788. data/src/core/ext/xds/xds_bootstrap.cc +570 -0
  789. data/src/core/ext/xds/xds_bootstrap.h +143 -0
  790. data/src/core/ext/xds/xds_certificate_provider.cc +407 -0
  791. data/src/core/ext/xds/xds_certificate_provider.h +159 -0
  792. data/src/core/ext/xds/xds_channel_args.h +32 -0
  793. data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
  794. data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
  795. data/src/core/ext/xds/xds_client.cc +2512 -0
  796. data/src/core/ext/xds/xds_client.h +348 -0
  797. data/src/core/ext/xds/xds_client_stats.cc +160 -0
  798. data/src/core/ext/xds/xds_client_stats.h +241 -0
  799. data/src/core/ext/xds/xds_cluster.cc +453 -0
  800. data/src/core/ext/xds/xds_cluster.h +108 -0
  801. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  802. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  803. data/src/core/ext/xds/xds_common_types.cc +388 -0
  804. data/src/core/ext/xds/xds_common_types.h +95 -0
  805. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  806. data/src/core/ext/xds/xds_endpoint.h +135 -0
  807. data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
  808. data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
  809. data/src/core/ext/xds/xds_http_filters.cc +122 -0
  810. data/src/core/ext/xds/xds_http_filters.h +133 -0
  811. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  812. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  813. data/src/core/ext/xds/xds_listener.cc +1039 -0
  814. data/src/core/ext/xds/xds_listener.h +220 -0
  815. data/src/core/ext/xds/xds_resource_type.cc +33 -0
  816. data/src/core/ext/xds/xds_resource_type.h +98 -0
  817. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  818. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  819. data/src/core/ext/xds/xds_route_config.h +218 -0
  820. data/src/core/ext/xds/xds_routing.cc +250 -0
  821. data/src/core/ext/xds/xds_routing.h +101 -0
  822. data/src/core/ext/xds/xds_server_config_fetcher.cc +1314 -0
  823. data/src/core/lib/address_utils/parse_address.cc +340 -0
  824. data/src/core/lib/address_utils/parse_address.h +82 -0
  825. data/src/core/lib/address_utils/sockaddr_utils.cc +409 -0
  826. data/src/core/lib/address_utils/sockaddr_utils.h +95 -0
  827. data/src/core/lib/avl/avl.h +452 -88
  828. data/src/core/lib/backoff/backoff.cc +9 -38
  829. data/src/core/lib/backoff/backoff.h +11 -11
  830. data/src/core/lib/channel/call_finalization.h +86 -0
  831. data/src/core/lib/channel/call_tracer.h +88 -0
  832. data/src/core/lib/channel/channel_args.cc +182 -24
  833. data/src/core/lib/channel/channel_args.h +214 -2
  834. data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
  835. data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
  836. data/src/core/lib/channel/channel_stack.cc +37 -15
  837. data/src/core/lib/channel/channel_stack.h +57 -16
  838. data/src/core/lib/channel/channel_stack_builder.cc +24 -283
  839. data/src/core/lib/channel/channel_stack_builder.h +118 -157
  840. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  841. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  842. data/src/core/lib/channel/channel_trace.cc +14 -18
  843. data/src/core/lib/channel/channel_trace.h +3 -2
  844. data/src/core/lib/channel/channelz.cc +191 -137
  845. data/src/core/lib/channel/channelz.h +76 -53
  846. data/src/core/lib/channel/channelz_registry.cc +37 -19
  847. data/src/core/lib/channel/channelz_registry.h +4 -2
  848. data/src/core/lib/channel/connected_channel.cc +14 -10
  849. data/src/core/lib/channel/connected_channel.h +2 -2
  850. data/src/core/lib/channel/context.h +14 -0
  851. data/src/core/lib/channel/handshaker.cc +14 -54
  852. data/src/core/lib/channel/handshaker.h +10 -28
  853. data/src/core/lib/channel/handshaker_factory.h +10 -2
  854. data/src/core/lib/channel/handshaker_registry.cc +15 -70
  855. data/src/core/lib/channel/handshaker_registry.h +29 -12
  856. data/src/core/lib/channel/promise_based_filter.cc +1002 -0
  857. data/src/core/lib/channel/promise_based_filter.h +437 -0
  858. data/src/core/lib/channel/status_util.cc +12 -2
  859. data/src/core/lib/channel/status_util.h +11 -2
  860. data/src/core/lib/compression/compression.cc +22 -110
  861. data/src/core/lib/compression/compression_internal.cc +139 -202
  862. data/src/core/lib/compression/compression_internal.h +67 -71
  863. data/src/core/lib/compression/message_compress.cc +13 -13
  864. data/src/core/lib/compression/message_compress.h +2 -2
  865. data/src/core/lib/config/core_configuration.cc +104 -0
  866. data/src/core/lib/config/core_configuration.h +196 -0
  867. data/src/core/lib/debug/stats.cc +1 -1
  868. data/src/core/lib/debug/stats.h +4 -3
  869. data/src/core/lib/debug/stats_data.cc +17 -19
  870. data/src/core/lib/debug/stats_data.h +6 -8
  871. data/src/core/lib/debug/trace.cc +1 -0
  872. data/src/core/lib/debug/trace.h +4 -3
  873. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +46 -0
  874. data/src/core/lib/event_engine/channel_args_endpoint_config.h +42 -0
  875. data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
  876. data/src/core/lib/event_engine/event_engine.cc +52 -0
  877. data/src/core/lib/event_engine/event_engine_factory.h +36 -0
  878. data/src/core/lib/event_engine/memory_allocator.cc +66 -0
  879. data/src/core/lib/event_engine/resolved_address.cc +39 -0
  880. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  881. data/src/core/lib/event_engine/sockaddr.h +44 -0
  882. data/src/core/lib/gpr/alloc.cc +7 -5
  883. data/src/core/lib/gpr/atm.cc +1 -1
  884. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  885. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  886. data/src/core/lib/gpr/env_linux.cc +1 -2
  887. data/src/core/lib/gpr/env_posix.cc +2 -3
  888. data/src/core/lib/gpr/log.cc +61 -19
  889. data/src/core/lib/gpr/log_android.cc +3 -2
  890. data/src/core/lib/gpr/log_linux.cc +30 -13
  891. data/src/core/lib/gpr/log_posix.cc +25 -10
  892. data/src/core/lib/gpr/log_windows.cc +18 -4
  893. data/src/core/lib/gpr/murmur_hash.cc +5 -3
  894. data/src/core/lib/gpr/spinlock.h +10 -2
  895. data/src/core/lib/gpr/string.cc +35 -33
  896. data/src/core/lib/gpr/string.h +11 -10
  897. data/src/core/lib/gpr/sync.cc +6 -6
  898. data/src/core/lib/gpr/sync_abseil.cc +10 -12
  899. data/src/core/lib/gpr/sync_posix.cc +6 -11
  900. data/src/core/lib/gpr/sync_windows.cc +2 -2
  901. data/src/core/lib/gpr/time.cc +17 -15
  902. data/src/core/lib/gpr/time_precise.cc +5 -2
  903. data/src/core/lib/gpr/time_precise.h +6 -2
  904. data/src/core/lib/gpr/time_windows.cc +3 -2
  905. data/src/core/lib/gpr/tls.h +126 -36
  906. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  907. data/src/core/lib/gpr/useful.h +97 -31
  908. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  909. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  910. data/src/core/lib/gprpp/bitset.h +207 -0
  911. data/src/core/lib/gprpp/capture.h +76 -0
  912. data/src/core/lib/gprpp/chunked_vector.h +253 -0
  913. data/src/core/lib/gprpp/construct_destruct.h +39 -0
  914. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  915. data/src/core/lib/gprpp/debug_location.h +2 -0
  916. data/src/core/lib/gprpp/dual_ref_counted.h +330 -0
  917. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  918. data/src/core/lib/gprpp/examine_stack.h +46 -0
  919. data/src/core/lib/gprpp/fork.cc +16 -14
  920. data/src/core/lib/gprpp/fork.h +4 -4
  921. data/src/core/lib/gprpp/global_config.h +1 -2
  922. data/src/core/lib/gprpp/global_config_env.cc +18 -16
  923. data/src/core/lib/gprpp/global_config_env.h +2 -2
  924. data/src/core/lib/gprpp/global_config_generic.h +2 -2
  925. data/src/core/lib/gprpp/manual_constructor.h +12 -10
  926. data/src/core/lib/gprpp/match.h +73 -0
  927. data/src/core/lib/gprpp/memory.h +9 -3
  928. data/src/core/lib/gprpp/mpscq.cc +9 -9
  929. data/src/core/lib/gprpp/mpscq.h +6 -5
  930. data/src/core/lib/gprpp/orphanable.h +11 -15
  931. data/src/core/lib/gprpp/overload.h +59 -0
  932. data/src/core/lib/gprpp/ref_counted.h +125 -86
  933. data/src/core/lib/gprpp/ref_counted_ptr.h +166 -7
  934. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  935. data/src/core/lib/gprpp/stat.h +38 -0
  936. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  937. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  938. data/src/core/lib/gprpp/status_helper.cc +435 -0
  939. data/src/core/lib/gprpp/status_helper.h +181 -0
  940. data/src/core/lib/gprpp/sync.h +106 -43
  941. data/src/core/lib/gprpp/table.h +434 -0
  942. data/src/core/lib/gprpp/thd.h +3 -3
  943. data/src/core/lib/gprpp/thd_posix.cc +47 -42
  944. data/src/core/lib/gprpp/thd_windows.cc +7 -12
  945. data/src/core/lib/gprpp/time.cc +198 -0
  946. data/src/core/lib/gprpp/time.h +292 -0
  947. data/src/core/lib/gprpp/time_util.cc +77 -0
  948. data/src/core/lib/gprpp/time_util.h +42 -0
  949. data/src/core/lib/http/format_request.cc +29 -25
  950. data/src/core/lib/http/format_request.h +8 -6
  951. data/src/core/lib/http/httpcli.cc +304 -211
  952. data/src/core/lib/http/httpcli.h +183 -86
  953. data/src/core/lib/http/httpcli_security_connector.cc +75 -85
  954. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  955. data/src/core/lib/http/parser.cc +145 -54
  956. data/src/core/lib/http/parser.h +20 -6
  957. data/src/core/lib/iomgr/buffer_list.cc +16 -17
  958. data/src/core/lib/iomgr/buffer_list.h +23 -25
  959. data/src/core/lib/iomgr/call_combiner.cc +60 -25
  960. data/src/core/lib/iomgr/call_combiner.h +12 -14
  961. data/src/core/lib/iomgr/cfstream_handle.cc +7 -6
  962. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  963. data/src/core/lib/iomgr/closure.h +33 -12
  964. data/src/core/lib/iomgr/combiner.cc +48 -37
  965. data/src/core/lib/iomgr/combiner.h +3 -2
  966. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  967. data/src/core/lib/iomgr/endpoint.cc +6 -6
  968. data/src/core/lib/iomgr/endpoint.h +10 -9
  969. data/src/core/lib/iomgr/endpoint_cfstream.cc +56 -60
  970. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  971. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  972. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
  973. data/src/core/lib/iomgr/endpoint_pair_posix.cc +19 -17
  974. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  975. data/src/core/lib/iomgr/error.cc +287 -111
  976. data/src/core/lib/iomgr/error.h +278 -114
  977. data/src/core/lib/iomgr/error_cfstream.cc +17 -10
  978. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  979. data/src/core/lib/iomgr/error_internal.h +7 -2
  980. data/src/core/lib/iomgr/ev_apple.cc +19 -15
  981. data/src/core/lib/iomgr/ev_apple.h +1 -1
  982. data/src/core/lib/iomgr/ev_epoll1_linux.cc +64 -64
  983. data/src/core/lib/iomgr/ev_poll_posix.cc +82 -79
  984. data/src/core/lib/iomgr/ev_posix.cc +21 -22
  985. data/src/core/lib/iomgr/ev_posix.h +9 -9
  986. data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
  987. data/src/core/lib/iomgr/event_engine/closure.h +42 -0
  988. data/src/core/lib/iomgr/event_engine/endpoint.cc +172 -0
  989. data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
  990. data/src/core/lib/iomgr/event_engine/iomgr.cc +85 -0
  991. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  992. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  993. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  994. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +47 -0
  995. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +37 -0
  996. data/src/core/lib/iomgr/event_engine/resolver.cc +133 -0
  997. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  998. data/src/core/lib/iomgr/event_engine/tcp.cc +296 -0
  999. data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
  1000. data/src/core/lib/iomgr/exec_ctx.cc +30 -99
  1001. data/src/core/lib/iomgr/exec_ctx.h +42 -63
  1002. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  1003. data/src/core/lib/iomgr/executor/mpmcqueue.h +11 -15
  1004. data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
  1005. data/src/core/lib/iomgr/executor/threadpool.h +8 -7
  1006. data/src/core/lib/iomgr/executor.cc +37 -45
  1007. data/src/core/lib/iomgr/executor.h +4 -4
  1008. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  1009. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  1010. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  1011. data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
  1012. data/src/core/lib/iomgr/iocp_windows.cc +10 -9
  1013. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  1014. data/src/core/lib/iomgr/iomgr.cc +6 -4
  1015. data/src/core/lib/iomgr/iomgr.h +3 -3
  1016. data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
  1017. data/src/core/lib/iomgr/iomgr_internal.h +6 -5
  1018. data/src/core/lib/iomgr/iomgr_posix.cc +5 -4
  1019. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -15
  1020. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1021. data/src/core/lib/iomgr/load_file.cc +6 -6
  1022. data/src/core/lib/iomgr/load_file.h +2 -2
  1023. data/src/core/lib/iomgr/lockfree_event.cc +38 -15
  1024. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  1025. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  1026. data/src/core/lib/iomgr/polling_entity.h +6 -0
  1027. data/src/core/lib/iomgr/pollset.cc +5 -5
  1028. data/src/core/lib/iomgr/pollset.h +9 -9
  1029. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  1030. data/src/core/lib/iomgr/pollset_windows.cc +6 -6
  1031. data/src/core/lib/iomgr/port.h +9 -37
  1032. data/src/core/lib/iomgr/python_util.h +6 -5
  1033. data/src/core/lib/iomgr/resolve_address.cc +10 -24
  1034. data/src/core/lib/iomgr/resolve_address.h +48 -43
  1035. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  1036. data/src/core/lib/iomgr/resolve_address_posix.cc +91 -83
  1037. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  1038. data/src/core/lib/iomgr/resolve_address_windows.cc +106 -89
  1039. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  1040. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1041. data/src/core/lib/iomgr/sockaddr.h +2 -1
  1042. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  1043. data/src/core/lib/iomgr/socket_factory_posix.cc +8 -7
  1044. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  1045. data/src/core/lib/iomgr/socket_mutator.cc +20 -6
  1046. data/src/core/lib/iomgr/socket_mutator.h +27 -3
  1047. data/src/core/lib/iomgr/socket_utils_common_posix.cc +124 -99
  1048. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  1049. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  1050. data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
  1051. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  1052. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  1053. data/src/core/lib/iomgr/tcp_client.cc +4 -4
  1054. data/src/core/lib/iomgr/tcp_client.h +5 -2
  1055. data/src/core/lib/iomgr/tcp_client_cfstream.cc +19 -37
  1056. data/src/core/lib/iomgr/tcp_client_posix.cc +51 -67
  1057. data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
  1058. data/src/core/lib/iomgr/tcp_client_windows.cc +21 -21
  1059. data/src/core/lib/iomgr/tcp_posix.cc +256 -209
  1060. data/src/core/lib/iomgr/tcp_posix.h +17 -12
  1061. data/src/core/lib/iomgr/tcp_server.cc +9 -10
  1062. data/src/core/lib/iomgr/tcp_server.h +21 -17
  1063. data/src/core/lib/iomgr/tcp_server_posix.cc +98 -86
  1064. data/src/core/lib/iomgr/tcp_server_utils_posix.h +36 -32
  1065. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +28 -27
  1066. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +14 -19
  1067. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  1068. data/src/core/lib/iomgr/tcp_server_windows.cc +38 -41
  1069. data/src/core/lib/iomgr/tcp_windows.cc +56 -57
  1070. data/src/core/lib/iomgr/tcp_windows.h +3 -3
  1071. data/src/core/lib/iomgr/timer.cc +3 -2
  1072. data/src/core/lib/iomgr/timer.h +17 -8
  1073. data/src/core/lib/iomgr/timer_generic.cc +129 -139
  1074. data/src/core/lib/iomgr/timer_generic.h +1 -0
  1075. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1076. data/src/core/lib/iomgr/timer_manager.cc +19 -18
  1077. data/src/core/lib/iomgr/unix_sockets_posix.cc +33 -41
  1078. data/src/core/lib/iomgr/unix_sockets_posix.h +9 -6
  1079. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +15 -11
  1080. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  1081. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
  1082. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +8 -9
  1083. data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
  1084. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  1085. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  1086. data/src/core/lib/iomgr/work_serializer.h +33 -5
  1087. data/src/core/lib/json/json.h +13 -3
  1088. data/src/core/lib/json/json_reader.cc +112 -70
  1089. data/src/core/lib/json/json_util.cc +126 -0
  1090. data/src/core/lib/json/json_util.h +154 -0
  1091. data/src/core/lib/json/json_writer.cc +2 -4
  1092. data/src/core/lib/matchers/matchers.cc +327 -0
  1093. data/src/core/lib/matchers/matchers.h +160 -0
  1094. data/src/core/lib/profiling/basic_timers.cc +8 -6
  1095. data/src/core/lib/profiling/stap_timers.cc +2 -2
  1096. data/src/core/lib/promise/activity.cc +121 -0
  1097. data/src/core/lib/promise/activity.h +540 -0
  1098. data/src/core/lib/promise/arena_promise.h +188 -0
  1099. data/src/core/lib/promise/call_push_pull.h +144 -0
  1100. data/src/core/lib/promise/context.h +86 -0
  1101. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  1102. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  1103. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1104. data/src/core/lib/promise/detail/status.h +50 -0
  1105. data/src/core/lib/promise/detail/switch.h +1455 -0
  1106. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  1107. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1108. data/src/core/lib/promise/latch.h +104 -0
  1109. data/src/core/lib/promise/loop.h +134 -0
  1110. data/src/core/lib/promise/map.h +88 -0
  1111. data/src/core/lib/promise/poll.h +66 -0
  1112. data/src/core/lib/promise/promise.h +95 -0
  1113. data/src/core/lib/promise/race.h +84 -0
  1114. data/src/core/lib/promise/seq.h +89 -0
  1115. data/src/core/lib/promise/sleep.cc +74 -0
  1116. data/src/core/lib/promise/sleep.h +66 -0
  1117. data/src/core/lib/promise/try_seq.h +157 -0
  1118. data/src/core/lib/resolver/resolver.cc +79 -0
  1119. data/src/core/lib/resolver/resolver.h +135 -0
  1120. data/src/core/lib/resolver/resolver_factory.h +76 -0
  1121. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  1122. data/src/core/lib/resolver/resolver_registry.h +113 -0
  1123. data/src/core/lib/resolver/server_address.cc +170 -0
  1124. data/src/core/lib/resolver/server_address.h +144 -0
  1125. data/src/core/lib/resource_quota/api.cc +83 -0
  1126. data/src/core/lib/resource_quota/api.h +40 -0
  1127. data/src/core/lib/resource_quota/arena.cc +107 -0
  1128. data/src/core/lib/resource_quota/arena.h +142 -0
  1129. data/src/core/lib/resource_quota/memory_quota.cc +478 -0
  1130. data/src/core/lib/resource_quota/memory_quota.h +457 -0
  1131. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1132. data/src/core/lib/resource_quota/resource_quota.h +66 -0
  1133. data/src/core/lib/resource_quota/thread_quota.cc +43 -0
  1134. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  1135. data/src/core/lib/resource_quota/trace.cc +19 -0
  1136. data/src/core/lib/resource_quota/trace.h +24 -0
  1137. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  1138. data/src/core/lib/security/authorization/authorization_policy_provider.h +40 -0
  1139. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  1140. data/src/core/lib/security/authorization/evaluate_args.cc +212 -0
  1141. data/src/core/lib/security/authorization/evaluate_args.h +92 -0
  1142. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  1143. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  1144. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
  1145. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  1146. data/src/core/lib/security/authorization/matchers.cc +227 -0
  1147. data/src/core/lib/security/authorization/matchers.h +211 -0
  1148. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  1149. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  1150. data/src/core/lib/security/context/security_context.cc +19 -13
  1151. data/src/core/lib/security/context/security_context.h +12 -3
  1152. data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -6
  1153. data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -1
  1154. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  1155. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  1156. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  1157. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  1158. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  1159. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  1160. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  1161. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  1162. data/src/core/lib/security/credentials/composite/composite_credentials.cc +28 -86
  1163. data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
  1164. data/src/core/lib/security/credentials/credentials.cc +18 -17
  1165. data/src/core/lib/security/credentials/credentials.h +92 -90
  1166. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +419 -0
  1167. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +82 -0
  1168. data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -0
  1169. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  1170. data/src/core/lib/security/credentials/external/external_account_credentials.cc +544 -0
  1171. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  1172. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
  1173. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  1174. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +230 -0
  1175. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +61 -0
  1176. data/src/core/lib/security/credentials/fake/fake_credentials.cc +26 -29
  1177. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  1178. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -7
  1179. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +169 -82
  1180. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
  1181. data/src/core/lib/security/credentials/iam/iam_credentials.cc +23 -29
  1182. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  1183. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +63 -0
  1184. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  1185. data/src/core/lib/security/credentials/jwt/json_token.cc +10 -12
  1186. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  1187. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +61 -53
  1188. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +31 -18
  1189. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +70 -62
  1190. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
  1191. data/src/core/lib/security/credentials/local/local_credentials.cc +8 -7
  1192. data/src/core/lib/security/credentials/local/local_credentials.h +11 -1
  1193. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +216 -251
  1194. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +67 -38
  1195. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +100 -158
  1196. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  1197. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +36 -22
  1198. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +26 -6
  1199. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +348 -0
  1200. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +217 -0
  1201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +454 -0
  1202. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +195 -0
  1203. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
  1204. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
  1205. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +62 -184
  1206. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +98 -294
  1207. data/src/core/lib/security/credentials/tls/tls_credentials.cc +40 -21
  1208. data/src/core/lib/security/credentials/tls/tls_credentials.h +9 -3
  1209. data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
  1210. data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
  1211. data/src/core/lib/security/credentials/xds/xds_credentials.cc +237 -0
  1212. data/src/core/lib/security/credentials/xds/xds_credentials.h +100 -0
  1213. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +23 -19
  1214. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1215. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +37 -43
  1216. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  1217. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +111 -0
  1218. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +92 -0
  1219. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  1220. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  1221. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -6
  1222. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  1223. data/src/core/lib/security/security_connector/local/local_security_connector.cc +35 -27
  1224. data/src/core/lib/security/security_connector/security_connector.cc +14 -18
  1225. data/src/core/lib/security/security_connector/security_connector.h +38 -27
  1226. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +43 -32
  1227. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +6 -2
  1228. data/src/core/lib/security/security_connector/ssl_utils.cc +119 -65
  1229. data/src/core/lib/security/security_connector/ssl_utils.h +40 -40
  1230. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +646 -423
  1231. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +187 -104
  1232. data/src/core/lib/security/transport/auth_filters.h +37 -8
  1233. data/src/core/lib/security/transport/client_auth_filter.cc +102 -358
  1234. data/src/core/lib/security/transport/secure_endpoint.cc +214 -149
  1235. data/src/core/lib/security/transport/secure_endpoint.h +2 -1
  1236. data/src/core/lib/security/transport/security_handshaker.cc +172 -94
  1237. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  1238. data/src/core/lib/security/transport/server_auth_filter.cc +58 -47
  1239. data/src/core/lib/security/transport/tsi_error.cc +5 -6
  1240. data/src/core/lib/security/transport/tsi_error.h +2 -1
  1241. data/src/core/lib/security/util/json_util.cc +10 -13
  1242. data/src/core/lib/security/util/json_util.h +2 -1
  1243. data/src/core/lib/service_config/service_config.h +82 -0
  1244. data/src/core/lib/service_config/service_config_call_data.h +72 -0
  1245. data/src/core/lib/service_config/service_config_impl.cc +230 -0
  1246. data/src/core/lib/service_config/service_config_impl.h +125 -0
  1247. data/src/core/lib/service_config/service_config_parser.cc +93 -0
  1248. data/src/core/lib/service_config/service_config_parser.h +106 -0
  1249. data/src/core/lib/slice/percent_encoding.cc +84 -97
  1250. data/src/core/lib/slice/percent_encoding.h +23 -28
  1251. data/src/core/lib/slice/slice.cc +111 -181
  1252. data/src/core/lib/slice/slice.h +384 -0
  1253. data/src/core/lib/slice/slice_api.cc +39 -0
  1254. data/src/core/lib/slice/slice_buffer.cc +12 -8
  1255. data/src/core/lib/slice/slice_internal.h +17 -277
  1256. data/src/core/lib/slice/slice_refcount.cc +35 -0
  1257. data/src/core/lib/slice/slice_refcount.h +46 -0
  1258. data/src/core/lib/slice/slice_refcount_base.h +61 -0
  1259. data/src/core/lib/slice/slice_split.cc +100 -0
  1260. data/src/core/lib/slice/slice_split.h +40 -0
  1261. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  1262. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  1263. data/src/core/lib/surface/api_trace.cc +2 -1
  1264. data/src/core/lib/surface/api_trace.h +1 -0
  1265. data/src/core/lib/surface/builtins.cc +49 -0
  1266. data/src/core/lib/surface/builtins.h +26 -0
  1267. data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
  1268. data/src/core/lib/surface/call.cc +1171 -1248
  1269. data/src/core/lib/surface/call.h +16 -24
  1270. data/src/core/lib/surface/call_details.cc +10 -10
  1271. data/src/core/lib/surface/call_log_batch.cc +2 -2
  1272. data/src/core/lib/surface/channel.cc +96 -135
  1273. data/src/core/lib/surface/channel.h +31 -22
  1274. data/src/core/lib/surface/channel_init.cc +22 -76
  1275. data/src/core/lib/surface/channel_init.h +44 -40
  1276. data/src/core/lib/surface/channel_ping.cc +2 -3
  1277. data/src/core/lib/surface/channel_stack_type.cc +2 -1
  1278. data/src/core/lib/surface/completion_queue.cc +154 -162
  1279. data/src/core/lib/surface/completion_queue.h +18 -17
  1280. data/src/core/lib/surface/completion_queue_factory.cc +3 -3
  1281. data/src/core/lib/surface/completion_queue_factory.h +1 -0
  1282. data/src/core/lib/surface/event_string.cc +1 -0
  1283. data/src/core/lib/surface/init.cc +121 -83
  1284. data/src/core/lib/surface/init.h +10 -4
  1285. data/src/core/lib/surface/lame_client.cc +80 -72
  1286. data/src/core/lib/surface/lame_client.h +5 -0
  1287. data/src/core/lib/surface/metadata_array.cc +2 -2
  1288. data/src/core/lib/surface/server.cc +1142 -1373
  1289. data/src/core/lib/surface/server.h +467 -71
  1290. data/src/core/lib/surface/validate_metadata.cc +55 -24
  1291. data/src/core/lib/surface/validate_metadata.h +6 -2
  1292. data/src/core/lib/surface/version.cc +2 -2
  1293. data/src/core/lib/transport/bdp_estimator.cc +11 -12
  1294. data/src/core/lib/transport/bdp_estimator.h +4 -3
  1295. data/src/core/lib/transport/byte_stream.cc +11 -5
  1296. data/src/core/lib/transport/byte_stream.h +12 -11
  1297. data/src/core/lib/transport/connectivity_state.cc +27 -19
  1298. data/src/core/lib/transport/connectivity_state.h +28 -14
  1299. data/src/core/lib/transport/error_utils.cc +73 -21
  1300. data/src/core/lib/transport/error_utils.h +17 -4
  1301. data/src/core/lib/transport/metadata_batch.h +1355 -152
  1302. data/src/core/lib/transport/parsed_metadata.cc +37 -0
  1303. data/src/core/lib/transport/parsed_metadata.h +401 -0
  1304. data/src/core/lib/transport/pid_controller.cc +4 -4
  1305. data/src/core/lib/transport/status_conversion.cc +2 -2
  1306. data/src/core/lib/transport/status_conversion.h +1 -1
  1307. data/src/core/lib/transport/timeout_encoding.cc +208 -71
  1308. data/src/core/lib/transport/timeout_encoding.h +40 -10
  1309. data/src/core/lib/transport/transport.cc +18 -36
  1310. data/src/core/lib/transport/transport.h +129 -15
  1311. data/src/core/lib/transport/transport_impl.h +14 -0
  1312. data/src/core/lib/transport/transport_op_string.cc +13 -35
  1313. data/src/core/lib/uri/uri_parser.cc +305 -254
  1314. data/src/core/lib/uri/uri_parser.h +92 -38
  1315. data/src/core/plugin_registry/grpc_plugin_registry.cc +76 -68
  1316. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1317. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  1318. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  1319. data/src/core/tsi/alts/crypt/gsec.h +5 -0
  1320. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  1321. data/src/core/tsi/alts/frame_protector/frame_handler.cc +18 -17
  1322. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +77 -68
  1323. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  1324. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1325. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +103 -64
  1326. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  1327. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  1328. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1329. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1330. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +5 -5
  1331. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1332. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  1333. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  1334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  1335. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +6 -6
  1336. data/src/core/tsi/fake_transport_security.cc +32 -12
  1337. data/src/core/tsi/local_transport_security.cc +46 -87
  1338. data/src/core/tsi/local_transport_security.h +6 -10
  1339. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1340. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1341. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  1342. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  1343. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
  1344. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +9 -9
  1345. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
  1346. data/src/core/tsi/ssl_transport_security.cc +422 -129
  1347. data/src/core/tsi/ssl_transport_security.h +68 -16
  1348. data/src/core/tsi/transport_security.cc +25 -11
  1349. data/src/core/tsi/transport_security.h +16 -1
  1350. data/src/core/tsi/transport_security_grpc.h +1 -0
  1351. data/src/core/tsi/transport_security_interface.h +34 -1
  1352. data/src/ruby/bin/math_services_pb.rb +5 -5
  1353. data/src/ruby/ext/grpc/extconf.rb +34 -11
  1354. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1355. data/src/ruby/ext/grpc/rb_call.c +8 -7
  1356. data/src/ruby/ext/grpc/rb_call.h +4 -0
  1357. data/src/ruby/ext/grpc/rb_call_credentials.c +62 -17
  1358. data/src/ruby/ext/grpc/rb_channel.c +24 -10
  1359. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  1360. data/src/ruby/ext/grpc/rb_channel_credentials.c +24 -5
  1361. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1362. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1363. data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
  1364. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1365. data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
  1366. data/src/ruby/ext/grpc/rb_grpc.c +9 -4
  1367. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1368. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +76 -48
  1369. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +130 -88
  1370. data/src/ruby/ext/grpc/rb_server.c +26 -10
  1371. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1372. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1373. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1374. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1375. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1376. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1377. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1378. data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
  1379. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  1380. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1381. data/src/ruby/lib/grpc/version.rb +1 -1
  1382. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1383. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +3 -3
  1384. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +40 -0
  1385. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1386. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +50 -16
  1387. data/src/ruby/pb/test/client.rb +769 -0
  1388. data/src/ruby/pb/test/server.rb +252 -0
  1389. data/src/ruby/pb/test/xds_client.rb +415 -0
  1390. data/src/ruby/spec/call_spec.rb +1 -1
  1391. data/src/ruby/spec/channel_credentials_spec.rb +42 -0
  1392. data/src/ruby/spec/channel_spec.rb +17 -6
  1393. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1394. data/src/ruby/spec/client_server_spec.rb +1 -1
  1395. data/src/ruby/spec/errors_spec.rb +1 -1
  1396. data/src/ruby/spec/generic/active_call_spec.rb +21 -10
  1397. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  1398. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1399. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  1400. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
  1401. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  1402. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  1403. data/src/ruby/spec/pb/codegen/package_option_spec.rb +27 -7
  1404. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1405. data/src/ruby/spec/server_spec.rb +22 -0
  1406. data/src/ruby/spec/support/services.rb +10 -4
  1407. data/src/ruby/spec/user_agent_spec.rb +74 -0
  1408. data/third_party/abseil-cpp/absl/algorithm/container.h +1774 -0
  1409. data/third_party/abseil-cpp/absl/base/attributes.h +169 -55
  1410. data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
  1411. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  1412. data/third_party/abseil-cpp/absl/base/config.h +150 -49
  1413. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +417 -335
  1414. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
  1415. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  1416. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1417. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1418. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  1419. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  1420. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  1421. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
  1422. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
  1423. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
  1424. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
  1425. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +36 -31
  1426. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1427. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -3
  1428. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1429. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1430. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1431. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +97 -5
  1432. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  1433. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
  1434. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1435. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1436. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  1437. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1438. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +17 -3
  1439. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +7 -7
  1440. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1441. data/third_party/abseil-cpp/absl/base/macros.h +47 -109
  1442. data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
  1443. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  1444. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  1445. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1446. data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
  1447. data/third_party/abseil-cpp/absl/container/fixed_array.h +527 -0
  1448. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  1449. data/third_party/abseil-cpp/absl/container/inlined_vector.h +141 -134
  1450. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  1451. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
  1452. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  1453. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +163 -0
  1454. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  1455. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  1456. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +190 -0
  1457. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +281 -0
  1458. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  1459. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  1460. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +469 -429
  1461. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  1462. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +198 -0
  1463. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +67 -0
  1464. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +2034 -0
  1465. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  1466. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  1467. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1959 -0
  1468. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  1469. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +383 -0
  1470. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +138 -0
  1471. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +199 -0
  1472. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  1473. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +87 -0
  1474. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1475. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  1476. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +253 -0
  1477. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1478. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  1479. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  1480. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +364 -0
  1481. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +153 -0
  1482. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +191 -0
  1483. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  1484. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +142 -0
  1485. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  1486. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +38 -0
  1487. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  1488. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1489. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1574 -0
  1490. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1491. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  1492. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  1493. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  1494. data/third_party/abseil-cpp/absl/functional/function_ref.h +142 -0
  1495. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1496. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  1497. data/third_party/abseil-cpp/absl/hash/hash.h +347 -0
  1498. data/third_party/abseil-cpp/absl/hash/internal/city.cc +349 -0
  1499. data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
  1500. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +69 -0
  1501. data/third_party/abseil-cpp/absl/hash/internal/hash.h +1096 -0
  1502. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1503. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1504. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1505. data/third_party/abseil-cpp/absl/meta/type_traits.h +49 -11
  1506. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1507. data/third_party/abseil-cpp/absl/numeric/int128.cc +16 -37
  1508. data/third_party/abseil-cpp/absl/numeric/int128.h +159 -85
  1509. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1510. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1511. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1512. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1513. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  1514. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  1515. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1516. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1517. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1518. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1519. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1520. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1521. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1522. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1523. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1524. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1525. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1526. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1527. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1528. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1529. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1530. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1531. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1532. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1533. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1534. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1535. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1536. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1537. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1538. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1539. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1540. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1541. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1542. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1543. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1544. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1545. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1546. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1547. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1548. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1549. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1550. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1551. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1552. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1553. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1554. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1555. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1556. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1557. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1558. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1559. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1560. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1561. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +69 -0
  1562. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  1563. data/third_party/abseil-cpp/absl/status/status.cc +444 -0
  1564. data/third_party/abseil-cpp/absl/status/status.h +882 -0
  1565. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  1566. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  1567. data/third_party/abseil-cpp/absl/status/statusor.cc +103 -0
  1568. data/third_party/abseil-cpp/absl/status/statusor.h +770 -0
  1569. data/third_party/abseil-cpp/absl/strings/charconv.cc +10 -10
  1570. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1571. data/third_party/abseil-cpp/absl/strings/cord.cc +2047 -0
  1572. data/third_party/abseil-cpp/absl/strings/cord.h +1521 -0
  1573. data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
  1574. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1575. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1576. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1577. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +9 -9
  1578. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
  1579. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +620 -0
  1580. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1581. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1582. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1583. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1584. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1585. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1586. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1587. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1588. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1589. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +771 -0
  1590. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1591. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1592. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1593. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1594. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1595. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1596. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1597. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1598. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1599. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1600. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1601. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1602. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
  1603. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +158 -64
  1604. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +19 -6
  1605. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +30 -22
  1606. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -14
  1607. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +37 -13
  1608. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +183 -153
  1609. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
  1610. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
  1611. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  1612. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +82 -77
  1613. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +51 -27
  1614. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1615. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1616. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1617. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1618. data/third_party/abseil-cpp/absl/strings/numbers.cc +133 -5
  1619. data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
  1620. data/third_party/abseil-cpp/absl/strings/str_cat.cc +8 -8
  1621. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  1622. data/third_party/abseil-cpp/absl/strings/str_format.h +290 -15
  1623. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1624. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1625. data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
  1626. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1627. data/third_party/abseil-cpp/absl/strings/string_view.h +143 -55
  1628. data/third_party/abseil-cpp/absl/strings/substitute.cc +7 -6
  1629. data/third_party/abseil-cpp/absl/strings/substitute.h +109 -81
  1630. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  1631. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  1632. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +67 -0
  1633. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +101 -0
  1634. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  1635. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  1636. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1637. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
  1638. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  1639. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -0
  1640. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  1641. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  1642. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +428 -0
  1643. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
  1644. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
  1645. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -0
  1646. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  1647. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  1648. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -11
  1649. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1650. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1651. data/third_party/abseil-cpp/absl/time/duration.cc +93 -61
  1652. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  1653. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +33 -27
  1654. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +97 -22
  1655. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  1656. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1657. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  1658. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1659. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  1660. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  1661. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +219 -150
  1662. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  1663. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +15 -8
  1664. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1665. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  1666. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +1 -1
  1667. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1668. data/third_party/abseil-cpp/absl/time/time.h +107 -75
  1669. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1670. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1671. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1672. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  1673. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  1674. data/third_party/abseil-cpp/absl/types/span.h +51 -38
  1675. data/third_party/abseil-cpp/absl/types/variant.h +866 -0
  1676. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1677. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1678. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1679. data/third_party/boringssl-with-bazel/err_data.c +775 -721
  1680. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +72 -59
  1681. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1682. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1683. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
  1684. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1685. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
  1686. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1687. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +70 -57
  1688. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1689. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1690. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
  1691. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1692. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +6 -6
  1693. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +23 -11
  1694. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1695. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1696. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +74 -68
  1697. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1698. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +25 -29
  1699. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1700. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +6 -1
  1701. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  1702. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
  1703. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
  1704. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
  1705. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1706. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1707. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
  1708. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1709. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1710. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1711. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1712. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1713. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1714. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1715. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1716. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1717. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1718. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1719. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1720. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1721. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
  1722. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1723. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1724. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1725. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  1726. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1727. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1728. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1729. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
  1730. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1731. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1732. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1733. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1734. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1735. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1736. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1737. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
  1738. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  1739. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +30 -43
  1740. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  1741. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  1742. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1743. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  1744. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  1745. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1746. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
  1747. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +161 -2
  1748. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  1749. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1750. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  1751. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1752. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1753. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  1754. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1755. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +26 -5
  1756. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1757. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1758. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
  1759. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +208 -37
  1760. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1761. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1762. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1763. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
  1764. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +11 -0
  1765. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1766. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1767. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1768. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1769. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -5
  1770. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  1771. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  1772. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  1773. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  1774. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  1775. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  1776. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1777. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  1778. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  1779. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1780. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1781. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1782. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1783. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1784. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1785. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1786. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  1787. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  1788. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  1789. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  1790. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +80 -43
  1791. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +120 -62
  1792. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1793. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +238 -18
  1794. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  1795. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  1796. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  1797. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +618 -0
  1798. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1799. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1800. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  1801. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1802. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1803. data/third_party/boringssl-with-bazel/src/crypto/mem.c +75 -24
  1804. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  1805. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1806. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1807. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1808. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1809. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1810. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1811. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  1812. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  1813. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -1
  1814. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1815. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +132 -54
  1816. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  1817. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1818. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1819. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1820. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  1821. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1822. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1823. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1824. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1825. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1826. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1827. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1828. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1829. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1830. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +110 -70
  1831. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +348 -423
  1832. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +217 -79
  1833. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  1834. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1835. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +11 -1
  1836. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +5 -21
  1837. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1838. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1839. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  1840. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1841. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  1842. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +13 -8
  1843. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1844. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -180
  1845. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  1846. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  1847. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  1848. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +24 -39
  1849. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +29 -23
  1850. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1851. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +2 -1
  1852. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +52 -89
  1853. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +67 -12
  1854. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -4
  1855. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  1856. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +29 -26
  1857. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +82 -113
  1858. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  1859. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +99 -25
  1860. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -12
  1861. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1862. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  1863. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -26
  1864. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1865. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +52 -28
  1866. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1867. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +49 -59
  1868. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1869. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
  1870. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1871. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +25 -0
  1872. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1873. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +75 -15
  1874. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1875. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  1876. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +244 -11
  1877. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  1878. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +7 -5
  1879. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1880. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  1881. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1882. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  1883. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  1884. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +43 -32
  1885. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  1886. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -28
  1887. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
  1888. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1889. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  1890. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  1891. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1892. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  1893. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
  1894. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1895. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1896. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +15 -14
  1897. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +128 -42
  1898. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
  1899. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  1900. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
  1901. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  1902. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +119 -0
  1903. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1801 -673
  1904. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
  1905. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +67 -15
  1906. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1907. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +7 -1
  1908. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1909. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1910. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  1911. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1912. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +42 -7
  1913. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1914. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1915. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
  1916. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  1917. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +66 -32
  1918. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -2
  1919. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1920. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1921. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1922. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  1923. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1924. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +108 -75
  1925. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
  1926. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1927. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  1928. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1929. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1930. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1931. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  1932. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  1933. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +194 -146
  1934. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  1935. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  1936. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1937. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1938. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  1939. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  1940. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +570 -144
  1941. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +53 -38
  1942. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +43 -24
  1943. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2041 -829
  1944. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  1945. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +642 -452
  1946. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  1947. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  1948. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1949. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  1950. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
  1951. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +336 -25
  1952. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +108 -53
  1953. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +317 -221
  1954. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +187 -36
  1955. data/third_party/boringssl-with-bazel/src/ssl/internal.h +554 -173
  1956. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1957. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  1958. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1959. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +55 -15
  1960. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -12
  1961. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +10 -11
  1962. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  1963. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +167 -110
  1964. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1965. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +147 -138
  1966. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1967. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  1968. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +16 -8
  1969. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1970. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +47 -28
  1971. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +80 -36
  1972. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +316 -211
  1973. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  1974. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +398 -145
  1975. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1976. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  1977. data/third_party/cares/cares/include/ares.h +742 -0
  1978. data/third_party/cares/cares/include/ares_dns.h +112 -0
  1979. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1980. data/third_party/cares/cares/include/ares_version.h +24 -0
  1981. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  1982. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  1983. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1984. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1985. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1986. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1987. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1988. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1989. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1990. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1991. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  1992. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  1993. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  1994. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1995. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  1996. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  1997. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1998. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  1999. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  2000. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  2001. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  2002. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  2003. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  2004. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  2005. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  2006. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  2007. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  2008. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  2009. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  2010. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  2011. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  2012. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  2013. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  2014. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  2015. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  2016. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  2017. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  2018. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  2019. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  2020. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  2021. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  2022. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  2023. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  2024. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  2025. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  2026. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  2027. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  2028. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  2029. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  2030. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  2031. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  2032. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  2033. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  2034. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  2035. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  2036. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  2037. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  2038. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  2039. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  2040. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  2041. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  2042. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  2043. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  2044. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  2045. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  2046. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  2047. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  2048. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  2049. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  2050. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  2051. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  2052. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  2053. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  2054. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  2055. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  2056. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  2057. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  2058. data/third_party/re2/re2/bitmap256.h +117 -0
  2059. data/third_party/re2/re2/bitstate.cc +385 -0
  2060. data/third_party/re2/re2/compile.cc +1261 -0
  2061. data/third_party/re2/re2/dfa.cc +2118 -0
  2062. data/third_party/re2/re2/filtered_re2.cc +137 -0
  2063. data/third_party/re2/re2/filtered_re2.h +114 -0
  2064. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  2065. data/third_party/re2/re2/nfa.cc +713 -0
  2066. data/third_party/re2/re2/onepass.cc +623 -0
  2067. data/third_party/re2/re2/parse.cc +2483 -0
  2068. data/third_party/re2/re2/perl_groups.cc +119 -0
  2069. data/third_party/re2/re2/pod_array.h +55 -0
  2070. data/third_party/re2/re2/prefilter.cc +711 -0
  2071. data/third_party/re2/re2/prefilter.h +108 -0
  2072. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  2073. data/third_party/re2/re2/prefilter_tree.h +139 -0
  2074. data/third_party/re2/re2/prog.cc +1166 -0
  2075. data/third_party/re2/re2/prog.h +455 -0
  2076. data/third_party/re2/re2/re2.cc +1331 -0
  2077. data/third_party/re2/re2/re2.h +1017 -0
  2078. data/third_party/re2/re2/regexp.cc +987 -0
  2079. data/third_party/re2/re2/regexp.h +665 -0
  2080. data/third_party/re2/re2/set.cc +176 -0
  2081. data/third_party/re2/re2/set.h +85 -0
  2082. data/third_party/re2/re2/simplify.cc +665 -0
  2083. data/third_party/re2/re2/sparse_array.h +392 -0
  2084. data/third_party/re2/re2/sparse_set.h +264 -0
  2085. data/third_party/re2/re2/stringpiece.cc +65 -0
  2086. data/third_party/re2/re2/stringpiece.h +210 -0
  2087. data/third_party/re2/re2/tostring.cc +351 -0
  2088. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  2089. data/third_party/re2/re2/unicode_casefold.h +78 -0
  2090. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  2091. data/third_party/re2/re2/unicode_groups.h +67 -0
  2092. data/third_party/re2/re2/walker-inl.h +246 -0
  2093. data/third_party/re2/util/benchmark.h +156 -0
  2094. data/third_party/re2/util/flags.h +26 -0
  2095. data/third_party/re2/util/logging.h +109 -0
  2096. data/third_party/re2/util/malloc_counter.h +19 -0
  2097. data/third_party/re2/util/mix.h +41 -0
  2098. data/third_party/re2/util/mutex.h +148 -0
  2099. data/third_party/re2/util/pcre.cc +1025 -0
  2100. data/third_party/re2/util/pcre.h +681 -0
  2101. data/third_party/re2/util/rune.cc +260 -0
  2102. data/third_party/re2/util/strutil.cc +149 -0
  2103. data/third_party/re2/util/strutil.h +21 -0
  2104. data/third_party/re2/util/test.h +50 -0
  2105. data/third_party/re2/util/utf.h +44 -0
  2106. data/third_party/re2/util/util.h +42 -0
  2107. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  2108. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  2109. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2110. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2111. data/third_party/upb/upb/decode.c +997 -481
  2112. data/third_party/upb/upb/decode.h +79 -6
  2113. data/third_party/upb/upb/decode_fast.c +1055 -0
  2114. data/third_party/upb/upb/decode_fast.h +153 -0
  2115. data/third_party/upb/upb/decode_internal.h +211 -0
  2116. data/third_party/upb/upb/def.c +3261 -0
  2117. data/third_party/upb/upb/def.h +409 -0
  2118. data/third_party/upb/upb/def.hpp +438 -0
  2119. data/third_party/upb/upb/encode.c +459 -233
  2120. data/third_party/upb/upb/encode.h +56 -6
  2121. data/third_party/upb/upb/json_encode.c +776 -0
  2122. data/third_party/upb/upb/json_encode.h +62 -0
  2123. data/third_party/upb/upb/msg.c +387 -70
  2124. data/third_party/upb/upb/msg.h +90 -45
  2125. data/third_party/upb/upb/msg_internal.h +831 -0
  2126. data/third_party/upb/upb/port_def.inc +195 -84
  2127. data/third_party/upb/upb/port_undef.inc +48 -7
  2128. data/third_party/upb/upb/reflection.c +480 -0
  2129. data/third_party/upb/upb/reflection.h +220 -0
  2130. data/third_party/upb/upb/reflection.hpp +37 -0
  2131. data/third_party/upb/upb/table.c +441 -428
  2132. data/third_party/upb/upb/table_internal.h +385 -0
  2133. data/third_party/upb/upb/text_encode.c +472 -0
  2134. data/third_party/upb/upb/text_encode.h +64 -0
  2135. data/third_party/upb/upb/upb.c +255 -154
  2136. data/third_party/upb/upb/upb.h +235 -226
  2137. data/third_party/upb/upb/upb.hpp +115 -0
  2138. data/third_party/upb/upb/upb_internal.h +68 -0
  2139. data/third_party/xxhash/xxhash.h +5580 -0
  2140. data/third_party/zlib/crc32.c +966 -292
  2141. data/third_party/zlib/crc32.h +9441 -436
  2142. data/third_party/zlib/deflate.c +78 -30
  2143. data/third_party/zlib/deflate.h +12 -15
  2144. data/third_party/zlib/gzguts.h +3 -2
  2145. data/third_party/zlib/gzlib.c +5 -3
  2146. data/third_party/zlib/gzread.c +5 -7
  2147. data/third_party/zlib/gzwrite.c +25 -13
  2148. data/third_party/zlib/infback.c +2 -1
  2149. data/third_party/zlib/inffast.c +14 -14
  2150. data/third_party/zlib/inflate.c +39 -8
  2151. data/third_party/zlib/inflate.h +3 -2
  2152. data/third_party/zlib/inftrees.c +3 -3
  2153. data/third_party/zlib/trees.c +27 -48
  2154. data/third_party/zlib/zlib.h +123 -100
  2155. data/third_party/zlib/zutil.c +2 -2
  2156. data/third_party/zlib/zutil.h +12 -9
  2157. metadata +1175 -359
  2158. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
  2159. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -121
  2160. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
  2161. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  2162. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -834
  2163. data/src/core/ext/filters/client_channel/parse_address.cc +0 -238
  2164. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  2165. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
  2166. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -177
  2167. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  2168. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  2169. data/src/core/ext/filters/client_channel/resolver.cc +0 -85
  2170. data/src/core/ext/filters/client_channel/resolver.h +0 -144
  2171. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
  2172. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
  2173. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  2174. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -348
  2175. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -123
  2176. data/src/core/ext/filters/client_channel/server_address.cc +0 -48
  2177. data/src/core/ext/filters/client_channel/server_address.h +0 -90
  2178. data/src/core/ext/filters/client_channel/service_config.cc +0 -221
  2179. data/src/core/ext/filters/client_channel/service_config.h +0 -123
  2180. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -68
  2181. data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -87
  2182. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -89
  2183. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
  2184. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
  2185. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -342
  2186. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -88
  2187. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  2188. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +0 -26
  2189. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  2190. data/src/core/ext/filters/client_channel/xds/xds_client.cc +0 -2367
  2191. data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -309
  2192. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -115
  2193. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +0 -211
  2194. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
  2195. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -556
  2196. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2197. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  2198. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
  2199. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  2200. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  2201. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  2202. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  2203. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -112
  2204. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -79
  2205. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -225
  2206. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
  2207. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -75
  2208. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
  2209. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2210. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -246
  2211. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  2212. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  2213. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  2214. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  2215. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
  2216. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  2217. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
  2218. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  2219. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
  2220. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  2221. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
  2222. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +0 -28
  2223. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  2224. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  2225. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  2226. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -35
  2227. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  2228. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -55
  2229. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  2230. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  2231. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
  2232. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  2233. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  2234. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +0 -35
  2235. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
  2236. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  2237. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
  2238. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  2239. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  2240. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  2241. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
  2242. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  2243. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  2244. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  2245. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
  2246. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -36
  2247. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  2248. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  2249. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
  2250. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +0 -34
  2251. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
  2252. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  2253. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  2254. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -31
  2255. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  2256. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  2257. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  2258. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  2259. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
  2260. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  2261. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  2262. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  2263. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  2264. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -31
  2265. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  2266. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  2267. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  2268. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  2269. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  2270. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  2271. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  2272. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  2273. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
  2274. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +0 -30
  2275. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  2276. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  2277. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  2278. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  2279. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
  2280. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  2281. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  2282. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  2283. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  2284. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +0 -28
  2285. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  2286. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  2287. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  2288. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  2289. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
  2290. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -33
  2291. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  2292. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  2293. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  2294. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -24
  2295. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  2296. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  2297. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
  2298. data/src/core/ext/upb-generated/envoy/type/http.upb.c +0 -17
  2299. data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -36
  2300. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  2301. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
  2302. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  2303. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  2304. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  2305. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  2306. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -39
  2307. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  2308. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
  2309. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  2310. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -29
  2311. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  2312. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  2313. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  2314. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  2315. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -30
  2316. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  2317. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -144
  2318. data/src/core/lib/avl/avl.cc +0 -306
  2319. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  2320. data/src/core/lib/compression/compression_args.cc +0 -134
  2321. data/src/core/lib/compression/compression_args.h +0 -56
  2322. data/src/core/lib/compression/stream_compression.cc +0 -80
  2323. data/src/core/lib/compression/stream_compression.h +0 -116
  2324. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  2325. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2326. data/src/core/lib/compression/stream_compression_identity.cc +0 -92
  2327. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2328. data/src/core/lib/gpr/arena.h +0 -47
  2329. data/src/core/lib/gpr/tls_gcc.h +0 -52
  2330. data/src/core/lib/gpr/tls_msvc.h +0 -52
  2331. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  2332. data/src/core/lib/gpr/tls_pthread.h +0 -56
  2333. data/src/core/lib/gprpp/arena.cc +0 -103
  2334. data/src/core/lib/gprpp/arena.h +0 -120
  2335. data/src/core/lib/gprpp/atomic.h +0 -104
  2336. data/src/core/lib/gprpp/map.h +0 -53
  2337. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  2338. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1656
  2339. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2340. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2341. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2342. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  2343. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  2344. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -105
  2345. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2346. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
  2347. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  2348. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  2349. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  2350. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  2351. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2352. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  2353. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  2354. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -173
  2355. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2356. data/src/core/lib/iomgr/resource_quota.cc +0 -1013
  2357. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2358. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2359. data/src/core/lib/iomgr/sockaddr_utils.cc +0 -293
  2360. data/src/core/lib/iomgr/sockaddr_utils.h +0 -79
  2361. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  2362. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2363. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -163
  2364. data/src/core/lib/iomgr/tcp_custom.cc +0 -370
  2365. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2366. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -485
  2367. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2368. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2369. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2370. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2371. data/src/core/lib/iomgr/udp_server.cc +0 -747
  2372. data/src/core/lib/iomgr/udp_server.h +0 -101
  2373. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2374. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  2375. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  2376. data/src/core/lib/slice/slice_hash_table.h +0 -199
  2377. data/src/core/lib/slice/slice_intern.cc +0 -375
  2378. data/src/core/lib/slice/slice_utils.h +0 -200
  2379. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  2380. data/src/core/lib/surface/init_secure.cc +0 -81
  2381. data/src/core/lib/transport/metadata.cc +0 -679
  2382. data/src/core/lib/transport/metadata.h +0 -446
  2383. data/src/core/lib/transport/metadata_batch.cc +0 -392
  2384. data/src/core/lib/transport/static_metadata.cc +0 -1230
  2385. data/src/core/lib/transport/static_metadata.h +0 -597
  2386. data/src/core/lib/transport/status_metadata.cc +0 -61
  2387. data/src/core/lib/transport/status_metadata.h +0 -48
  2388. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  2389. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
  2390. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  2391. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2392. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
  2393. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
  2394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2395. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
  2396. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2397. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
  2398. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2399. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  2400. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  2401. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -3870
  2402. data/third_party/cares/cares/ares.h +0 -670
  2403. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2404. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2405. data/third_party/cares/cares/ares_create_query.c +0 -206
  2406. data/third_party/cares/cares/ares_data.c +0 -222
  2407. data/third_party/cares/cares/ares_data.h +0 -72
  2408. data/third_party/cares/cares/ares_dns.h +0 -103
  2409. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2410. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2411. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2412. data/third_party/cares/cares/ares_getenv.c +0 -30
  2413. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2414. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2415. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2416. data/third_party/cares/cares/ares_getopt.c +0 -122
  2417. data/third_party/cares/cares/ares_getopt.h +0 -53
  2418. data/third_party/cares/cares/ares_init.c +0 -2615
  2419. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2420. data/third_party/cares/cares/ares_library_init.c +0 -195
  2421. data/third_party/cares/cares/ares_library_init.h +0 -43
  2422. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2423. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2424. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2425. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2426. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2427. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2428. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2429. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2430. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2431. data/third_party/cares/cares/ares_private.h +0 -382
  2432. data/third_party/cares/cares/ares_process.c +0 -1473
  2433. data/third_party/cares/cares/ares_query.c +0 -186
  2434. data/third_party/cares/cares/ares_search.c +0 -323
  2435. data/third_party/cares/cares/ares_send.c +0 -137
  2436. data/third_party/cares/cares/ares_setup.h +0 -217
  2437. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2438. data/third_party/cares/cares/ares_version.h +0 -24
  2439. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2440. data/third_party/cares/cares/inet_ntop.c +0 -207
  2441. data/third_party/upb/upb/generated_util.h +0 -105
  2442. data/third_party/upb/upb/port.c +0 -26
  2443. data/third_party/upb/upb/table.int.h +0 -507
@@ -18,12 +18,20 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
+ #include "src/core/lib/surface/call.h"
22
+
21
23
  #include <assert.h>
22
24
  #include <limits.h>
23
25
  #include <stdio.h>
24
26
  #include <stdlib.h>
25
27
  #include <string.h>
26
28
 
29
+ #include <atomic>
30
+ #include <string>
31
+
32
+ #include "absl/strings/str_cat.h"
33
+ #include "absl/strings/str_format.h"
34
+
27
35
  #include <grpc/compression.h>
28
36
  #include <grpc/grpc.h>
29
37
  #include <grpc/slice.h>
@@ -32,202 +40,357 @@
32
40
  #include <grpc/support/string_util.h>
33
41
 
34
42
  #include "src/core/lib/channel/channel_stack.h"
35
- #include "src/core/lib/compression/algorithm_metadata.h"
43
+ #include "src/core/lib/channel/context.h"
44
+ #include "src/core/lib/compression/compression_internal.h"
36
45
  #include "src/core/lib/debug/stats.h"
37
46
  #include "src/core/lib/gpr/alloc.h"
38
47
  #include "src/core/lib/gpr/string.h"
39
48
  #include "src/core/lib/gpr/time_precise.h"
40
49
  #include "src/core/lib/gpr/useful.h"
41
- #include "src/core/lib/gprpp/arena.h"
42
50
  #include "src/core/lib/gprpp/manual_constructor.h"
43
51
  #include "src/core/lib/gprpp/ref_counted.h"
44
52
  #include "src/core/lib/iomgr/timer.h"
45
53
  #include "src/core/lib/profiling/timers.h"
54
+ #include "src/core/lib/resource_quota/arena.h"
55
+ #include "src/core/lib/slice/slice_internal.h"
56
+ #include "src/core/lib/slice/slice_split.h"
46
57
  #include "src/core/lib/slice/slice_string_helpers.h"
47
- #include "src/core/lib/slice/slice_utils.h"
48
58
  #include "src/core/lib/surface/api_trace.h"
49
- #include "src/core/lib/surface/call.h"
50
59
  #include "src/core/lib/surface/call_test_only.h"
51
60
  #include "src/core/lib/surface/channel.h"
52
61
  #include "src/core/lib/surface/completion_queue.h"
53
62
  #include "src/core/lib/surface/server.h"
54
63
  #include "src/core/lib/surface/validate_metadata.h"
55
64
  #include "src/core/lib/transport/error_utils.h"
56
- #include "src/core/lib/transport/metadata.h"
57
- #include "src/core/lib/transport/static_metadata.h"
58
- #include "src/core/lib/transport/status_metadata.h"
59
65
  #include "src/core/lib/transport/transport.h"
60
66
 
61
- /** The maximum number of concurrent batches possible.
62
- Based upon the maximum number of individually queueable ops in the batch
63
- api:
64
- - initial metadata send
65
- - message send
66
- - status/close send (depending on client/server)
67
- - initial metadata recv
68
- - message recv
69
- - status/close recv (depending on client/server) */
70
- #define MAX_CONCURRENT_BATCHES 6
71
-
72
- #define MAX_SEND_EXTRA_METADATA_COUNT 3
73
-
74
- // Used to create arena for the first call.
75
- #define ESTIMATED_MDELEM_COUNT 16
76
-
77
- struct batch_control {
78
- batch_control() = default;
79
-
80
- grpc_call* call = nullptr;
81
- grpc_transport_stream_op_batch op;
82
- /* Share memory for cq_completion and notify_tag as they are never needed
83
- simultaneously. Each byte used in this data structure count as six bytes
84
- per call, so any savings we can make are worthwhile,
85
-
86
- We use notify_tag to determine whether or not to send notification to the
87
- completion queue. Once we've made that determination, we can reuse the
88
- memory for cq_completion. */
89
- union {
90
- grpc_cq_completion cq_completion;
91
- struct {
92
- /* Any given op indicates completion by either (a) calling a closure or
93
- (b) sending a notification on the call's completion queue. If
94
- \a is_closure is true, \a tag indicates a closure to be invoked;
95
- otherwise, \a tag indicates the tag to be used in the notification to
96
- be sent to the completion queue. */
97
- void* tag;
98
- bool is_closure;
99
- } notify_tag;
100
- } completion_data;
101
- grpc_closure start_batch;
102
- grpc_closure finish_batch;
103
- grpc_core::Atomic<intptr_t> steps_to_complete;
104
- gpr_atm batch_error = reinterpret_cast<gpr_atm>(GRPC_ERROR_NONE);
105
- void set_num_steps_to_complete(uintptr_t steps) {
106
- steps_to_complete.Store(steps, grpc_core::MemoryOrder::RELEASE);
67
+ grpc_core::TraceFlag grpc_call_error_trace(false, "call_error");
68
+ grpc_core::TraceFlag grpc_compression_trace(false, "compression");
69
+
70
+ namespace grpc_core {
71
+
72
+ class Call : public CppImplOf<Call, grpc_call> {
73
+ public:
74
+ Arena* arena() { return arena_; }
75
+ bool is_client() const { return is_client_; }
76
+
77
+ virtual void ContextSet(grpc_context_index elem, void* value,
78
+ void (*destroy)(void* value)) = 0;
79
+ virtual void* ContextGet(grpc_context_index elem) const = 0;
80
+ virtual bool Completed() = 0;
81
+ void CancelWithStatus(grpc_status_code status, const char* description);
82
+ virtual void CancelWithError(grpc_error_handle error) = 0;
83
+ virtual void SetCompletionQueue(grpc_completion_queue* cq) = 0;
84
+ virtual char* GetPeer() = 0;
85
+ virtual grpc_call_error StartBatch(const grpc_op* ops, size_t nops,
86
+ void* notify_tag,
87
+ bool is_notify_tag_closure) = 0;
88
+ virtual bool failed_before_recv_message() const = 0;
89
+ virtual bool is_trailers_only() const = 0;
90
+ virtual void ExternalRef() = 0;
91
+ virtual void ExternalUnref() = 0;
92
+ virtual void InternalRef(const char* reason) = 0;
93
+ virtual void InternalUnref(const char* reason) = 0;
94
+
95
+ virtual grpc_compression_algorithm test_only_compression_algorithm() = 0;
96
+ virtual uint32_t test_only_message_flags() = 0;
97
+ virtual uint32_t test_only_encodings_accepted_by_peer() = 0;
98
+ virtual grpc_compression_algorithm compression_for_level(
99
+ grpc_compression_level level) = 0;
100
+
101
+ // This should return nullptr for the promise stack (and alternative means
102
+ // for that functionality be invented)
103
+ virtual grpc_call_stack* call_stack() = 0;
104
+
105
+ protected:
106
+ Call(Arena* arena, bool is_client, Timestamp send_deadline)
107
+ : arena_(arena), send_deadline_(send_deadline), is_client_(is_client) {
108
+ GPR_DEBUG_ASSERT(arena_ != nullptr);
109
+ }
110
+ ~Call() = default;
111
+
112
+ struct ParentCall {
113
+ Mutex child_list_mu;
114
+ Call* first_child ABSL_GUARDED_BY(child_list_mu) = nullptr;
115
+ };
116
+
117
+ struct ChildCall {
118
+ explicit ChildCall(Call* parent) : parent(parent) {}
119
+ Call* parent;
120
+ /** siblings: children of the same parent form a list, and this list is
121
+ protected under
122
+ parent->mu */
123
+ Call* sibling_next = nullptr;
124
+ Call* sibling_prev = nullptr;
125
+ };
126
+
127
+ ParentCall* GetOrCreateParentCall();
128
+ ParentCall* parent_call();
129
+
130
+ absl::Status InitParent(Call* parent, uint32_t propagation_mask);
131
+ void PublishToParent(Call* parent);
132
+ void MaybeUnpublishFromParent();
133
+ void PropagateCancellationToChildren();
134
+
135
+ Timestamp send_deadline() const { return send_deadline_; }
136
+ void set_send_deadline(Timestamp send_deadline) {
137
+ send_deadline_ = send_deadline;
138
+ }
139
+
140
+ private:
141
+ Arena* const arena_;
142
+ std::atomic<ParentCall*> parent_call_{nullptr};
143
+ ChildCall* child_ = nullptr;
144
+ Timestamp send_deadline_;
145
+ const bool is_client_;
146
+ // flag indicating that cancellation is inherited
147
+ bool cancellation_is_inherited_ = false;
148
+ };
149
+
150
+ class FilterStackCall final : public Call {
151
+ public:
152
+ ~FilterStackCall() {
153
+ for (int i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
154
+ if (context_[i].destroy) {
155
+ context_[i].destroy(context_[i].value);
156
+ }
157
+ }
158
+ gpr_free(static_cast<void*>(const_cast<char*>(final_info_.error_string)));
107
159
  }
108
- bool completed_batch_step() {
109
- return steps_to_complete.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1;
160
+
161
+ bool Completed() override {
162
+ return gpr_atm_acq_load(&received_final_op_atm_) != 0;
110
163
  }
111
- };
112
164
 
113
- struct parent_call {
114
- parent_call() { gpr_mu_init(&child_list_mu); }
115
- ~parent_call() { gpr_mu_destroy(&child_list_mu); }
165
+ // TODO(ctiller): return absl::StatusOr<SomeSmartPointer<Call>>?
166
+ static grpc_error_handle Create(grpc_call_create_args* args,
167
+ grpc_call** out_call);
116
168
 
117
- gpr_mu child_list_mu;
118
- grpc_call* first_child = nullptr;
119
- };
169
+ static Call* FromTopElem(grpc_call_element* elem) {
170
+ return FromCallStack(grpc_call_stack_from_top_element(elem));
171
+ }
120
172
 
121
- struct child_call {
122
- child_call(grpc_call* parent) : parent(parent) {}
123
- grpc_call* parent;
124
- /** siblings: children of the same parent form a list, and this list is
125
- protected under
126
- parent->mu */
127
- grpc_call* sibling_next = nullptr;
128
- grpc_call* sibling_prev = nullptr;
129
- };
173
+ grpc_call_stack* call_stack() override {
174
+ return reinterpret_cast<grpc_call_stack*>(
175
+ reinterpret_cast<char*>(this) +
176
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(*this)));
177
+ }
130
178
 
131
- #define RECV_NONE ((gpr_atm)0)
132
- #define RECV_INITIAL_METADATA_FIRST ((gpr_atm)1)
133
-
134
- struct grpc_call {
135
- grpc_call(grpc_core::Arena* arena, const grpc_call_create_args& args)
136
- : arena(arena),
137
- cq(args.cq),
138
- channel(args.channel),
139
- is_client(args.server_transport_data == nullptr),
140
- stream_op_payload(context) {
141
- for (int i = 0; i < 2; i++) {
142
- for (int j = 0; j < 2; j++) {
143
- metadata_batch[i][j].deadline = GRPC_MILLIS_INF_FUTURE;
144
- }
145
- }
179
+ grpc_call_element* call_elem(size_t idx) {
180
+ return grpc_call_stack_element(call_stack(), idx);
181
+ }
182
+
183
+ CallCombiner* call_combiner() { return &call_combiner_; }
184
+
185
+ void CancelWithError(grpc_error_handle error) override;
186
+ void SetCompletionQueue(grpc_completion_queue* cq) override;
187
+ char* GetPeer() override;
188
+ grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
189
+ bool is_notify_tag_closure) override;
190
+ void ExternalRef() override { ext_ref_.Ref(); }
191
+ void ExternalUnref() override;
192
+ void InternalRef(const char* reason) override {
193
+ GRPC_CALL_STACK_REF(call_stack(), reason);
194
+ }
195
+ void InternalUnref(const char* reason) override {
196
+ GRPC_CALL_STACK_UNREF(call_stack(), reason);
197
+ }
198
+
199
+ void ContextSet(grpc_context_index elem, void* value,
200
+ void (*destroy)(void* value)) override;
201
+ void* ContextGet(grpc_context_index elem) const override {
202
+ return context_[elem].value;
203
+ }
204
+
205
+ grpc_compression_algorithm compression_for_level(
206
+ grpc_compression_level level) override {
207
+ return encodings_accepted_by_peer_.CompressionAlgorithmForLevel(level);
208
+ }
209
+
210
+ bool is_trailers_only() const override {
211
+ bool result = is_trailers_only_;
212
+ GPR_DEBUG_ASSERT(!result || recv_initial_metadata_.TransportSize() == 0);
213
+ return result;
214
+ }
215
+
216
+ bool failed_before_recv_message() const override {
217
+ return call_failed_before_recv_message_;
146
218
  }
147
219
 
148
- ~grpc_call() {
149
- gpr_free(static_cast<void*>(const_cast<char*>(final_info.error_string)));
220
+ grpc_compression_algorithm test_only_compression_algorithm() override {
221
+ return incoming_compression_algorithm_;
150
222
  }
151
223
 
152
- grpc_core::RefCount ext_ref;
153
- grpc_core::Arena* arena;
154
- grpc_core::CallCombiner call_combiner;
155
- grpc_completion_queue* cq;
156
- grpc_polling_entity pollent;
157
- grpc_channel* channel;
158
- gpr_cycle_counter start_time = gpr_get_cycle_counter();
159
- /* parent_call* */ gpr_atm parent_call_atm = 0;
160
- child_call* child = nullptr;
224
+ uint32_t test_only_message_flags() override {
225
+ return test_only_last_message_flags_;
226
+ }
227
+
228
+ uint32_t test_only_encodings_accepted_by_peer() override {
229
+ return encodings_accepted_by_peer_.ToLegacyBitmask();
230
+ }
231
+
232
+ static size_t InitialSizeEstimate() {
233
+ return sizeof(FilterStackCall) +
234
+ sizeof(BatchControl) * kMaxConcurrentBatches;
235
+ }
236
+
237
+ private:
238
+ // The maximum number of concurrent batches possible.
239
+ // Based upon the maximum number of individually queueable ops in the batch
240
+ // api:
241
+ // - initial metadata send
242
+ // - message send
243
+ // - status/close send (depending on client/server)
244
+ // - initial metadata recv
245
+ // - message recv
246
+ // - status/close recv (depending on client/server)
247
+ static constexpr size_t kMaxConcurrentBatches = 6;
248
+
249
+ static constexpr gpr_atm kRecvNone = 0;
250
+ static constexpr gpr_atm kRecvInitialMetadataFirst = 1;
251
+
252
+ struct BatchControl {
253
+ FilterStackCall* call_ = nullptr;
254
+ grpc_transport_stream_op_batch op_;
255
+ /* Share memory for cq_completion and notify_tag as they are never needed
256
+ simultaneously. Each byte used in this data structure count as six bytes
257
+ per call, so any savings we can make are worthwhile,
258
+
259
+ We use notify_tag to determine whether or not to send notification to the
260
+ completion queue. Once we've made that determination, we can reuse the
261
+ memory for cq_completion. */
262
+ union {
263
+ grpc_cq_completion cq_completion;
264
+ struct {
265
+ /* Any given op indicates completion by either (a) calling a closure or
266
+ (b) sending a notification on the call's completion queue. If
267
+ \a is_closure is true, \a tag indicates a closure to be invoked;
268
+ otherwise, \a tag indicates the tag to be used in the notification to
269
+ be sent to the completion queue. */
270
+ void* tag;
271
+ bool is_closure;
272
+ } notify_tag;
273
+ } completion_data_;
274
+ grpc_closure start_batch_;
275
+ grpc_closure finish_batch_;
276
+ std::atomic<intptr_t> steps_to_complete_{0};
277
+ AtomicError batch_error_;
278
+ void set_num_steps_to_complete(uintptr_t steps) {
279
+ steps_to_complete_.store(steps, std::memory_order_release);
280
+ }
281
+ bool completed_batch_step() {
282
+ return steps_to_complete_.fetch_sub(1, std::memory_order_acq_rel) == 1;
283
+ }
284
+
285
+ void PostCompletion();
286
+ void FinishStep();
287
+ void ContinueReceivingSlices();
288
+ void ReceivingSliceReady(grpc_error_handle error);
289
+ void ProcessDataAfterMetadata();
290
+ void ReceivingStreamReady(grpc_error_handle error);
291
+ void ValidateFilteredMetadata();
292
+ void ReceivingInitialMetadataReady(grpc_error_handle error);
293
+ void ReceivingTrailingMetadataReady(grpc_error_handle error);
294
+ void FinishBatch(grpc_error_handle error);
295
+ };
296
+
297
+ FilterStackCall(Arena* arena, const grpc_call_create_args& args)
298
+ : Call(arena, args.server_transport_data == nullptr, args.send_deadline),
299
+ cq_(args.cq),
300
+ channel_(args.channel),
301
+ stream_op_payload_(context_) {}
302
+
303
+ static void ReleaseCall(void* call, grpc_error_handle);
304
+ static void DestroyCall(void* call, grpc_error_handle);
305
+
306
+ static FilterStackCall* FromCallStack(grpc_call_stack* call_stack) {
307
+ return reinterpret_cast<FilterStackCall*>(
308
+ reinterpret_cast<char*>(call_stack) -
309
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)));
310
+ }
311
+
312
+ void ExecuteBatch(grpc_transport_stream_op_batch* batch,
313
+ grpc_closure* start_batch_closure);
314
+ void SetFinalStatus(grpc_error_handle error);
315
+ BatchControl* ReuseOrAllocateBatchControl(const grpc_op* ops);
316
+ void HandleCompressionAlgorithmDisabled(
317
+ grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
318
+ void HandleCompressionAlgorithmNotAccepted(
319
+ grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
320
+ bool PrepareApplicationMetadata(size_t count, grpc_metadata* metadata,
321
+ bool is_trailing);
322
+ void PublishAppMetadata(grpc_metadata_batch* b, bool is_trailing);
323
+ void RecvInitialFilter(grpc_metadata_batch* b);
324
+ void RecvTrailingFilter(grpc_metadata_batch* b,
325
+ grpc_error_handle batch_error);
326
+
327
+ RefCount ext_ref_;
328
+ CallCombiner call_combiner_;
329
+ grpc_completion_queue* cq_;
330
+ grpc_polling_entity pollent_;
331
+ grpc_channel* channel_;
332
+ gpr_cycle_counter start_time_ = gpr_get_cycle_counter();
161
333
 
162
- /* client or server call */
163
- bool is_client;
164
334
  /** has grpc_call_unref been called */
165
- bool destroy_called = false;
166
- /** flag indicating that cancellation is inherited */
167
- bool cancellation_is_inherited = false;
335
+ bool destroy_called_ = false;
336
+ // Trailers-only response status
337
+ bool is_trailers_only_ = false;
168
338
  /** which ops are in-flight */
169
- bool sent_initial_metadata = false;
170
- bool sending_message = false;
171
- bool sent_final_op = false;
172
- bool received_initial_metadata = false;
173
- bool receiving_message = false;
174
- bool requested_final_op = false;
175
- gpr_atm any_ops_sent_atm = 0;
176
- gpr_atm received_final_op_atm = 0;
177
-
178
- batch_control* active_batches[MAX_CONCURRENT_BATCHES] = {};
179
- grpc_transport_stream_op_batch_payload stream_op_payload;
339
+ bool sent_initial_metadata_ = false;
340
+ bool sending_message_ = false;
341
+ bool sent_final_op_ = false;
342
+ bool received_initial_metadata_ = false;
343
+ bool receiving_message_ = false;
344
+ bool requested_final_op_ = false;
345
+ gpr_atm any_ops_sent_atm_ = 0;
346
+ gpr_atm received_final_op_atm_ = 0;
347
+
348
+ BatchControl* active_batches_[kMaxConcurrentBatches] = {};
349
+ grpc_transport_stream_op_batch_payload stream_op_payload_;
180
350
 
181
351
  /* first idx: is_receiving, second idx: is_trailing */
182
- grpc_metadata_batch metadata_batch[2][2] = {};
352
+ grpc_metadata_batch send_initial_metadata_{arena()};
353
+ grpc_metadata_batch send_trailing_metadata_{arena()};
354
+ grpc_metadata_batch recv_initial_metadata_{arena()};
355
+ grpc_metadata_batch recv_trailing_metadata_{arena()};
183
356
 
184
357
  /* Buffered read metadata waiting to be returned to the application.
185
358
  Element 0 is initial metadata, element 1 is trailing metadata. */
186
- grpc_metadata_array* buffered_metadata[2] = {};
187
-
188
- grpc_metadata compression_md;
359
+ grpc_metadata_array* buffered_metadata_[2] = {};
189
360
 
190
361
  // A char* indicating the peer name.
191
- gpr_atm peer_string = 0;
362
+ gpr_atm peer_string_ = 0;
192
363
 
193
364
  /* Call data useful used for reporting. Only valid after the call has
194
365
  * completed */
195
- grpc_call_final_info final_info;
366
+ grpc_call_final_info final_info_;
196
367
 
197
368
  /* Compression algorithm for *incoming* data */
198
- grpc_message_compression_algorithm incoming_message_compression_algorithm =
199
- GRPC_MESSAGE_COMPRESS_NONE;
200
- /* Stream compression algorithm for *incoming* data */
201
- grpc_stream_compression_algorithm incoming_stream_compression_algorithm =
202
- GRPC_STREAM_COMPRESS_NONE;
369
+ grpc_compression_algorithm incoming_compression_algorithm_ =
370
+ GRPC_COMPRESS_NONE;
203
371
  /* Supported encodings (compression algorithms), a bitset.
204
372
  * Always support no compression. */
205
- uint32_t encodings_accepted_by_peer = 1 << GRPC_MESSAGE_COMPRESS_NONE;
206
- /* Supported stream encodings (stream compression algorithms), a bitset */
207
- uint32_t stream_encodings_accepted_by_peer = 0;
373
+ CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE};
208
374
 
209
375
  /* Contexts for various subsystems (security, tracing, ...). */
210
- grpc_call_context_element context[GRPC_CONTEXT_COUNT] = {};
211
-
212
- /* for the client, extra metadata is initial metadata; for the
213
- server, it's trailing metadata */
214
- grpc_linked_mdelem send_extra_metadata[MAX_SEND_EXTRA_METADATA_COUNT];
215
- int send_extra_metadata_count;
216
- grpc_millis send_deadline;
376
+ grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
217
377
 
218
- grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> sending_stream;
378
+ ManualConstructor<SliceBufferByteStream> sending_stream_;
219
379
 
220
- grpc_core::OrphanablePtr<grpc_core::ByteStream> receiving_stream;
221
- grpc_byte_buffer** receiving_buffer = nullptr;
222
- grpc_slice receiving_slice = grpc_empty_slice();
223
- grpc_closure receiving_slice_ready;
224
- grpc_closure receiving_stream_ready;
225
- grpc_closure receiving_initial_metadata_ready;
226
- grpc_closure receiving_trailing_metadata_ready;
227
- uint32_t test_only_last_message_flags = 0;
228
- gpr_atm cancelled = 0;
380
+ OrphanablePtr<ByteStream> receiving_stream_;
381
+ bool call_failed_before_recv_message_ = false;
382
+ grpc_byte_buffer** receiving_buffer_ = nullptr;
383
+ grpc_slice receiving_slice_ = grpc_empty_slice();
384
+ grpc_closure receiving_slice_ready_;
385
+ grpc_closure receiving_stream_ready_;
386
+ grpc_closure receiving_initial_metadata_ready_;
387
+ grpc_closure receiving_trailing_metadata_ready_;
388
+ uint32_t test_only_last_message_flags_ = 0;
389
+ // Status about operation of call
390
+ bool sent_server_trailing_metadata_ = false;
391
+ gpr_atm cancelled_with_error_ = 0;
229
392
 
230
- grpc_closure release_call;
393
+ grpc_closure release_call_;
231
394
 
232
395
  union {
233
396
  struct {
@@ -238,10 +401,10 @@ struct grpc_call {
238
401
  struct {
239
402
  int* cancelled;
240
403
  // backpointer to owning server if this is a server side call.
241
- grpc_server* server;
404
+ Server* core_server;
242
405
  } server;
243
- } final_op;
244
- gpr_atm status_error = 0;
406
+ } final_op_;
407
+ AtomicError status_error_;
245
408
 
246
409
  /* recv_state can contain one of the following values:
247
410
  RECV_NONE : : no initial metadata and messages received
@@ -259,221 +422,180 @@ struct grpc_call {
259
422
 
260
423
  For 1, 4: See receiving_initial_metadata_ready() function
261
424
  For 2, 3: See receiving_stream_ready() function */
262
- gpr_atm recv_state = 0;
425
+ gpr_atm recv_state_ = 0;
263
426
  };
264
427
 
265
- grpc_core::TraceFlag grpc_call_error_trace(false, "call_error");
266
- grpc_core::TraceFlag grpc_compression_trace(false, "compression");
267
-
268
- #define CALL_STACK_FROM_CALL(call) \
269
- (grpc_call_stack*)((char*)(call) + \
270
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
271
- #define CALL_FROM_CALL_STACK(call_stack) \
272
- (grpc_call*)(((char*)(call_stack)) - \
273
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
274
-
275
- #define CALL_ELEM_FROM_CALL(call, idx) \
276
- grpc_call_stack_element(CALL_STACK_FROM_CALL(call), idx)
277
- #define CALL_FROM_TOP_ELEM(top_elem) \
278
- CALL_FROM_CALL_STACK(grpc_call_stack_from_top_element(top_elem))
279
-
280
- static void execute_batch(grpc_call* call, grpc_transport_stream_op_batch* op,
281
- grpc_closure* start_batch_closure);
282
-
283
- static void cancel_with_status(grpc_call* c, grpc_status_code status,
284
- const char* description);
285
- static void cancel_with_error(grpc_call* c, grpc_error* error);
286
- static void destroy_call(void* call_stack, grpc_error* error);
287
- static void receiving_slice_ready(void* bctlp, grpc_error* error);
288
- static void set_final_status(grpc_call* call, grpc_error* error);
289
- static void process_data_after_md(batch_control* bctl);
290
- static void post_batch_completion(batch_control* bctl);
291
-
292
- static void add_init_error(grpc_error** composite, grpc_error* new_err) {
293
- if (new_err == GRPC_ERROR_NONE) return;
294
- if (*composite == GRPC_ERROR_NONE)
295
- *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
296
- *composite = grpc_error_add_child(*composite, new_err);
297
- }
298
-
299
- void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
300
- return call->arena->Alloc(size);
301
- }
302
-
303
- static parent_call* get_or_create_parent_call(grpc_call* call) {
304
- parent_call* p = (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
428
+ Call::ParentCall* Call::GetOrCreateParentCall() {
429
+ ParentCall* p = parent_call_.load(std::memory_order_acquire);
305
430
  if (p == nullptr) {
306
- p = call->arena->New<parent_call>();
307
- if (!gpr_atm_rel_cas(&call->parent_call_atm, (gpr_atm) nullptr,
308
- (gpr_atm)p)) {
309
- p->~parent_call();
310
- p = (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
431
+ p = arena_->New<ParentCall>();
432
+ ParentCall* expected = nullptr;
433
+ if (!parent_call_.compare_exchange_strong(expected, p,
434
+ std::memory_order_release,
435
+ std::memory_order_relaxed)) {
436
+ p->~ParentCall();
437
+ p = expected;
311
438
  }
312
439
  }
313
440
  return p;
314
441
  }
315
442
 
316
- static parent_call* get_parent_call(grpc_call* call) {
317
- return (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
443
+ Call::ParentCall* Call::parent_call() {
444
+ return parent_call_.load(std::memory_order_acquire);
318
445
  }
319
446
 
320
- size_t grpc_call_get_initial_size_estimate() {
321
- return sizeof(grpc_call) + sizeof(batch_control) * MAX_CONCURRENT_BATCHES +
322
- sizeof(grpc_linked_mdelem) * ESTIMATED_MDELEM_COUNT;
447
+ absl::Status Call::InitParent(Call* parent, uint32_t propagation_mask) {
448
+ child_ = arena()->New<ChildCall>(parent);
449
+
450
+ parent->InternalRef("child");
451
+ GPR_ASSERT(is_client_);
452
+ GPR_ASSERT(!parent->is_client_);
453
+
454
+ if (propagation_mask & GRPC_PROPAGATE_DEADLINE) {
455
+ send_deadline_ = std::min(send_deadline_, parent->send_deadline_);
456
+ }
457
+ /* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
458
+ * GRPC_PROPAGATE_STATS_CONTEXT */
459
+ /* TODO(ctiller): This should change to use the appropriate census start_op
460
+ * call. */
461
+ if (propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
462
+ if (0 == (propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
463
+ return absl::UnknownError(
464
+ "Census tracing propagation requested without Census context "
465
+ "propagation");
466
+ }
467
+ ContextSet(GRPC_CONTEXT_TRACING, parent->ContextGet(GRPC_CONTEXT_TRACING),
468
+ nullptr);
469
+ } else if (propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
470
+ return absl::UnknownError(
471
+ "Census context propagation requested without Census tracing "
472
+ "propagation");
473
+ }
474
+ if (propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
475
+ cancellation_is_inherited_ = true;
476
+ }
477
+ return absl::OkStatus();
478
+ }
479
+
480
+ void Call::PublishToParent(Call* parent) {
481
+ ChildCall* cc = child_;
482
+ ParentCall* pc = parent->GetOrCreateParentCall();
483
+ MutexLock lock(&pc->child_list_mu);
484
+ if (pc->first_child == nullptr) {
485
+ pc->first_child = this;
486
+ cc->sibling_next = cc->sibling_prev = this;
487
+ } else {
488
+ cc->sibling_next = pc->first_child;
489
+ cc->sibling_prev = pc->first_child->child_->sibling_prev;
490
+ cc->sibling_next->child_->sibling_prev =
491
+ cc->sibling_prev->child_->sibling_next = this;
492
+ }
493
+ if (parent->Completed()) {
494
+ CancelWithError(GRPC_ERROR_CANCELLED);
495
+ }
323
496
  }
324
497
 
325
- grpc_error* grpc_call_create(const grpc_call_create_args* args,
326
- grpc_call** out_call) {
498
+ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
499
+ grpc_call** out_call) {
327
500
  GPR_TIMER_SCOPE("grpc_call_create", 0);
328
501
 
329
502
  GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
330
503
 
331
- grpc_core::Arena* arena;
332
- grpc_call* call;
333
- grpc_error* error = GRPC_ERROR_NONE;
504
+ auto add_init_error = [](grpc_error_handle* composite,
505
+ grpc_error_handle new_err) {
506
+ if (new_err == GRPC_ERROR_NONE) return;
507
+ if (*composite == GRPC_ERROR_NONE) {
508
+ *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
509
+ }
510
+ *composite = grpc_error_add_child(*composite, new_err);
511
+ };
512
+
513
+ Arena* arena;
514
+ FilterStackCall* call;
515
+ grpc_error_handle error = GRPC_ERROR_NONE;
334
516
  grpc_channel_stack* channel_stack =
335
517
  grpc_channel_get_channel_stack(args->channel);
336
518
  size_t initial_size = grpc_channel_get_call_size_estimate(args->channel);
337
519
  GRPC_STATS_INC_CALL_INITIAL_SIZE(initial_size);
338
- size_t call_and_stack_size =
339
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)) +
340
- channel_stack->call_stack_size;
341
520
  size_t call_alloc_size =
342
- call_and_stack_size + (args->parent ? sizeof(child_call) : 0);
521
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)) +
522
+ channel_stack->call_stack_size;
343
523
 
344
- std::pair<grpc_core::Arena*, void*> arena_with_call =
345
- grpc_core::Arena::CreateWithAlloc(initial_size, call_alloc_size);
524
+ std::pair<Arena*, void*> arena_with_call = Arena::CreateWithAlloc(
525
+ initial_size, call_alloc_size, &*args->channel->allocator);
346
526
  arena = arena_with_call.first;
347
- call = new (arena_with_call.second) grpc_call(arena, *args);
348
- *out_call = call;
527
+ call = new (arena_with_call.second) FilterStackCall(arena, *args);
528
+ GPR_DEBUG_ASSERT(FromC(call->c_ptr()) == call);
529
+ GPR_DEBUG_ASSERT(FromCallStack(call->call_stack()) == call);
530
+ *out_call = call->c_ptr();
349
531
  grpc_slice path = grpc_empty_slice();
350
- if (call->is_client) {
351
- call->final_op.client.status_details = nullptr;
352
- call->final_op.client.status = nullptr;
353
- call->final_op.client.error_string = nullptr;
532
+ if (call->is_client()) {
533
+ call->final_op_.client.status_details = nullptr;
534
+ call->final_op_.client.status = nullptr;
535
+ call->final_op_.client.error_string = nullptr;
354
536
  GRPC_STATS_INC_CLIENT_CALLS_CREATED();
355
- GPR_ASSERT(args->add_initial_metadata_count <
356
- MAX_SEND_EXTRA_METADATA_COUNT);
357
- for (size_t i = 0; i < args->add_initial_metadata_count; i++) {
358
- call->send_extra_metadata[i].md = args->add_initial_metadata[i];
359
- if (grpc_slice_eq_static_interned(
360
- GRPC_MDKEY(args->add_initial_metadata[i]), GRPC_MDSTR_PATH)) {
361
- path = grpc_slice_ref_internal(
362
- GRPC_MDVALUE(args->add_initial_metadata[i]));
363
- }
537
+ path = grpc_slice_ref_internal(args->path->c_slice());
538
+ call->send_initial_metadata_.Set(HttpPathMetadata(),
539
+ std::move(*args->path));
540
+ if (args->authority.has_value()) {
541
+ call->send_initial_metadata_.Set(HttpAuthorityMetadata(),
542
+ std::move(*args->authority));
364
543
  }
365
- call->send_extra_metadata_count =
366
- static_cast<int>(args->add_initial_metadata_count);
367
544
  } else {
368
545
  GRPC_STATS_INC_SERVER_CALLS_CREATED();
369
- call->final_op.server.cancelled = nullptr;
370
- call->final_op.server.server = args->server;
371
- GPR_ASSERT(args->add_initial_metadata_count == 0);
372
- call->send_extra_metadata_count = 0;
546
+ call->final_op_.server.cancelled = nullptr;
547
+ call->final_op_.server.core_server = args->server;
373
548
  }
374
549
 
375
- grpc_millis send_deadline = args->send_deadline;
376
- bool immediately_cancel = false;
377
-
378
- if (args->parent != nullptr) {
379
- call->child = new (reinterpret_cast<char*>(arena_with_call.second) +
380
- call_and_stack_size) child_call(args->parent);
381
-
382
- GRPC_CALL_INTERNAL_REF(args->parent, "child");
383
- GPR_ASSERT(call->is_client);
384
- GPR_ASSERT(!args->parent->is_client);
385
-
386
- if (args->propagation_mask & GRPC_PROPAGATE_DEADLINE) {
387
- send_deadline = GPR_MIN(send_deadline, args->parent->send_deadline);
388
- }
389
- /* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
390
- * GRPC_PROPAGATE_STATS_CONTEXT */
391
- /* TODO(ctiller): This should change to use the appropriate census start_op
392
- * call. */
393
- if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
394
- if (0 == (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
395
- add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
396
- "Census tracing propagation requested "
397
- "without Census context propagation"));
398
- }
399
- grpc_call_context_set(call, GRPC_CONTEXT_TRACING,
400
- args->parent->context[GRPC_CONTEXT_TRACING].value,
401
- nullptr);
402
- } else if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
403
- add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
404
- "Census context propagation requested "
405
- "without Census tracing propagation"));
406
- }
407
- if (args->propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
408
- call->cancellation_is_inherited = 1;
409
- if (gpr_atm_acq_load(&args->parent->received_final_op_atm)) {
410
- immediately_cancel = true;
411
- }
412
- }
550
+ Call* parent = Call::FromC(args->parent);
551
+ if (parent != nullptr) {
552
+ add_init_error(&error, absl_status_to_grpc_error(call->InitParent(
553
+ parent, args->propagation_mask)));
413
554
  }
414
- call->send_deadline = send_deadline;
415
555
  /* initial refcount dropped by grpc_call_unref */
416
- grpc_call_element_args call_args = {CALL_STACK_FROM_CALL(call),
417
- args->server_transport_data,
418
- call->context,
419
- path,
420
- call->start_time,
421
- send_deadline,
422
- call->arena,
423
- &call->call_combiner};
424
- add_init_error(&error, grpc_call_stack_init(channel_stack, 1, destroy_call,
556
+ grpc_call_element_args call_args = {
557
+ call->call_stack(), args->server_transport_data,
558
+ call->context_, path,
559
+ call->start_time_, call->send_deadline(),
560
+ call->arena(), &call->call_combiner_};
561
+ add_init_error(&error, grpc_call_stack_init(channel_stack, 1, DestroyCall,
425
562
  call, &call_args));
426
563
  // Publish this call to parent only after the call stack has been initialized.
427
- if (args->parent != nullptr) {
428
- child_call* cc = call->child;
429
- parent_call* pc = get_or_create_parent_call(args->parent);
430
- gpr_mu_lock(&pc->child_list_mu);
431
- if (pc->first_child == nullptr) {
432
- pc->first_child = call;
433
- cc->sibling_next = cc->sibling_prev = call;
434
- } else {
435
- cc->sibling_next = pc->first_child;
436
- cc->sibling_prev = pc->first_child->child->sibling_prev;
437
- cc->sibling_next->child->sibling_prev =
438
- cc->sibling_prev->child->sibling_next = call;
439
- }
440
- gpr_mu_unlock(&pc->child_list_mu);
564
+ if (parent != nullptr) {
565
+ call->PublishToParent(parent);
441
566
  }
442
567
 
443
568
  if (error != GRPC_ERROR_NONE) {
444
- cancel_with_error(call, GRPC_ERROR_REF(error));
445
- }
446
- if (immediately_cancel) {
447
- cancel_with_error(call, GRPC_ERROR_CANCELLED);
569
+ call->CancelWithError(GRPC_ERROR_REF(error));
448
570
  }
449
571
  if (args->cq != nullptr) {
450
572
  GPR_ASSERT(args->pollset_set_alternative == nullptr &&
451
573
  "Only one of 'cq' and 'pollset_set_alternative' should be "
452
574
  "non-nullptr.");
453
575
  GRPC_CQ_INTERNAL_REF(args->cq, "bind");
454
- call->pollent =
576
+ call->pollent_ =
455
577
  grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq));
456
578
  }
457
579
  if (args->pollset_set_alternative != nullptr) {
458
- call->pollent = grpc_polling_entity_create_from_pollset_set(
580
+ call->pollent_ = grpc_polling_entity_create_from_pollset_set(
459
581
  args->pollset_set_alternative);
460
582
  }
461
- if (!grpc_polling_entity_is_empty(&call->pollent)) {
462
- grpc_call_stack_set_pollset_or_pollset_set(CALL_STACK_FROM_CALL(call),
463
- &call->pollent);
583
+ if (!grpc_polling_entity_is_empty(&call->pollent_)) {
584
+ grpc_call_stack_set_pollset_or_pollset_set(call->call_stack(),
585
+ &call->pollent_);
464
586
  }
465
587
 
466
- if (call->is_client) {
467
- grpc_core::channelz::ChannelNode* channelz_channel =
468
- grpc_channel_get_channelz_node(call->channel);
588
+ if (call->is_client()) {
589
+ channelz::ChannelNode* channelz_channel =
590
+ grpc_channel_get_channelz_node(call->channel_);
469
591
  if (channelz_channel != nullptr) {
470
592
  channelz_channel->RecordCallStarted();
471
593
  }
472
- } else {
473
- grpc_core::channelz::ServerNode* channelz_server =
474
- grpc_server_get_channelz_node(call->final_op.server.server);
475
- if (channelz_server != nullptr) {
476
- channelz_server->RecordCallStarted();
594
+ } else if (call->final_op_.server.core_server != nullptr) {
595
+ channelz::ServerNode* channelz_node =
596
+ call->final_op_.server.core_server->channelz_node();
597
+ if (channelz_node != nullptr) {
598
+ channelz_node->RecordCallStarted();
477
599
  }
478
600
  }
479
601
 
@@ -482,618 +604,380 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
482
604
  return error;
483
605
  }
484
606
 
485
- void grpc_call_set_completion_queue(grpc_call* call,
486
- grpc_completion_queue* cq) {
607
+ void FilterStackCall::SetCompletionQueue(grpc_completion_queue* cq) {
487
608
  GPR_ASSERT(cq);
488
609
 
489
- if (grpc_polling_entity_pollset_set(&call->pollent) != nullptr) {
610
+ if (grpc_polling_entity_pollset_set(&pollent_) != nullptr) {
490
611
  gpr_log(GPR_ERROR, "A pollset_set is already registered for this call.");
491
612
  abort();
492
613
  }
493
- call->cq = cq;
614
+ cq_ = cq;
494
615
  GRPC_CQ_INTERNAL_REF(cq, "bind");
495
- call->pollent = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
496
- grpc_call_stack_set_pollset_or_pollset_set(CALL_STACK_FROM_CALL(call),
497
- &call->pollent);
498
- }
499
-
500
- #ifndef NDEBUG
501
- #define REF_REASON reason
502
- #define REF_ARG , const char* reason
503
- #else
504
- #define REF_REASON ""
505
- #define REF_ARG
506
- #endif
507
- void grpc_call_internal_ref(grpc_call* c REF_ARG) {
508
- GRPC_CALL_STACK_REF(CALL_STACK_FROM_CALL(c), REF_REASON);
509
- }
510
- void grpc_call_internal_unref(grpc_call* c REF_ARG) {
511
- GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON);
616
+ pollent_ = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
617
+ grpc_call_stack_set_pollset_or_pollset_set(call_stack(), &pollent_);
512
618
  }
513
619
 
514
- static void release_call(void* call, grpc_error* /*error*/) {
515
- grpc_call* c = static_cast<grpc_call*>(call);
516
- grpc_channel* channel = c->channel;
517
- grpc_core::Arena* arena = c->arena;
518
- c->~grpc_call();
620
+ void FilterStackCall::ReleaseCall(void* call, grpc_error_handle /*error*/) {
621
+ auto* c = static_cast<FilterStackCall*>(call);
622
+ grpc_channel* channel = c->channel_;
623
+ Arena* arena = c->arena();
624
+ c->~FilterStackCall();
519
625
  grpc_channel_update_call_size_estimate(channel, arena->Destroy());
520
626
  GRPC_CHANNEL_INTERNAL_UNREF(channel, "call");
521
627
  }
522
628
 
523
- static void destroy_call(void* call, grpc_error* /*error*/) {
629
+ void FilterStackCall::DestroyCall(void* call, grpc_error_handle /*error*/) {
524
630
  GPR_TIMER_SCOPE("destroy_call", 0);
525
- size_t i;
526
- int ii;
527
- grpc_call* c = static_cast<grpc_call*>(call);
528
- for (i = 0; i < 2; i++) {
529
- grpc_metadata_batch_destroy(
530
- &c->metadata_batch[1 /* is_receiving */][i /* is_initial */]);
531
- }
532
- c->receiving_stream.reset();
533
- parent_call* pc = get_parent_call(c);
631
+ auto* c = static_cast<FilterStackCall*>(call);
632
+ c->recv_initial_metadata_.Clear();
633
+ c->recv_trailing_metadata_.Clear();
634
+ c->receiving_stream_.reset();
635
+ ParentCall* pc = c->parent_call();
534
636
  if (pc != nullptr) {
535
- pc->~parent_call();
536
- }
537
- for (ii = 0; ii < c->send_extra_metadata_count; ii++) {
538
- GRPC_MDELEM_UNREF(c->send_extra_metadata[ii].md);
539
- }
540
- for (i = 0; i < GRPC_CONTEXT_COUNT; i++) {
541
- if (c->context[i].destroy) {
542
- c->context[i].destroy(c->context[i].value);
543
- }
637
+ pc->~ParentCall();
544
638
  }
545
- if (c->cq) {
546
- GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
639
+ if (c->cq_) {
640
+ GRPC_CQ_INTERNAL_UNREF(c->cq_, "bind");
547
641
  }
548
642
 
549
- grpc_error* status_error =
550
- reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&c->status_error));
551
- grpc_error_get_status(status_error, c->send_deadline,
552
- &c->final_info.final_status, nullptr, nullptr,
553
- &(c->final_info.error_string));
554
- GRPC_ERROR_UNREF(status_error);
555
- c->final_info.stats.latency =
556
- gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time);
557
- grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info,
558
- GRPC_CLOSURE_INIT(&c->release_call, release_call, c,
643
+ grpc_error_handle status_error = c->status_error_.get();
644
+ grpc_error_get_status(status_error, c->send_deadline(),
645
+ &c->final_info_.final_status, nullptr, nullptr,
646
+ &(c->final_info_.error_string));
647
+ c->status_error_.set(GRPC_ERROR_NONE);
648
+ c->final_info_.stats.latency =
649
+ gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time_);
650
+ grpc_call_stack_destroy(c->call_stack(), &c->final_info_,
651
+ GRPC_CLOSURE_INIT(&c->release_call_, ReleaseCall, c,
559
652
  grpc_schedule_on_exec_ctx));
560
653
  }
561
654
 
562
- void grpc_call_ref(grpc_call* c) { c->ext_ref.Ref(); }
563
-
564
- void grpc_call_unref(grpc_call* c) {
565
- if (GPR_LIKELY(!c->ext_ref.Unref())) return;
566
-
567
- GPR_TIMER_SCOPE("grpc_call_unref", 0);
568
-
569
- child_call* cc = c->child;
570
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
571
- grpc_core::ExecCtx exec_ctx;
572
-
573
- GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c));
655
+ void Call::MaybeUnpublishFromParent() {
656
+ ChildCall* cc = child_;
657
+ if (cc == nullptr) return;
574
658
 
575
- if (cc) {
576
- parent_call* pc = get_parent_call(cc->parent);
577
- gpr_mu_lock(&pc->child_list_mu);
578
- if (c == pc->first_child) {
659
+ ParentCall* pc = cc->parent->parent_call();
660
+ {
661
+ MutexLock lock(&pc->child_list_mu);
662
+ if (this == pc->first_child) {
579
663
  pc->first_child = cc->sibling_next;
580
- if (c == pc->first_child) {
664
+ if (this == pc->first_child) {
581
665
  pc->first_child = nullptr;
582
666
  }
583
667
  }
584
- cc->sibling_prev->child->sibling_next = cc->sibling_next;
585
- cc->sibling_next->child->sibling_prev = cc->sibling_prev;
586
- gpr_mu_unlock(&pc->child_list_mu);
587
- GRPC_CALL_INTERNAL_UNREF(cc->parent, "child");
668
+ cc->sibling_prev->child_->sibling_next = cc->sibling_next;
669
+ cc->sibling_next->child_->sibling_prev = cc->sibling_prev;
588
670
  }
671
+ cc->parent->InternalUnref("child");
672
+ }
673
+
674
+ void FilterStackCall::ExternalUnref() {
675
+ if (GPR_LIKELY(!ext_ref_.Unref())) return;
676
+
677
+ GPR_TIMER_SCOPE("grpc_call_unref", 0);
678
+
679
+ ApplicationCallbackExecCtx callback_exec_ctx;
680
+ ExecCtx exec_ctx;
589
681
 
590
- GPR_ASSERT(!c->destroy_called);
591
- c->destroy_called = 1;
592
- bool cancel = gpr_atm_acq_load(&c->any_ops_sent_atm) != 0 &&
593
- gpr_atm_acq_load(&c->received_final_op_atm) == 0;
682
+ GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (this));
683
+
684
+ MaybeUnpublishFromParent();
685
+
686
+ GPR_ASSERT(!destroy_called_);
687
+ destroy_called_ = true;
688
+ bool cancel = gpr_atm_acq_load(&any_ops_sent_atm_) != 0 &&
689
+ gpr_atm_acq_load(&received_final_op_atm_) == 0;
594
690
  if (cancel) {
595
- cancel_with_error(c, GRPC_ERROR_CANCELLED);
691
+ CancelWithError(GRPC_ERROR_CANCELLED);
596
692
  } else {
597
693
  // Unset the call combiner cancellation closure. This has the
598
694
  // effect of scheduling the previously set cancellation closure, if
599
695
  // any, so that it can release any internal references it may be
600
- // holding to the call stack. Also flush the closures on exec_ctx so that
601
- // filters that schedule cancel notification closures on exec_ctx do not
602
- // need to take a ref of the call stack to guarantee closure liveness.
603
- c->call_combiner.SetNotifyOnCancel(nullptr);
604
- grpc_core::ExecCtx::Get()->Flush();
696
+ // holding to the call stack.
697
+ call_combiner_.SetNotifyOnCancel(nullptr);
605
698
  }
606
- GRPC_CALL_INTERNAL_UNREF(c, "destroy");
607
- }
608
-
609
- grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
610
- GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
611
- GPR_ASSERT(!reserved);
612
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
613
- grpc_core::ExecCtx exec_ctx;
614
- cancel_with_error(call, GRPC_ERROR_CANCELLED);
615
- return GRPC_CALL_OK;
699
+ InternalUnref("destroy");
616
700
  }
617
701
 
618
- // This is called via the call combiner to start sending a batch down
619
- // the filter stack.
620
- static void execute_batch_in_call_combiner(void* arg, grpc_error* /*ignored*/) {
621
- GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0);
622
- grpc_transport_stream_op_batch* batch =
623
- static_cast<grpc_transport_stream_op_batch*>(arg);
624
- grpc_call* call = static_cast<grpc_call*>(batch->handler_private.extra_arg);
625
- grpc_call_element* elem = CALL_ELEM_FROM_CALL(call, 0);
626
- GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
627
- elem->filter->start_transport_stream_op_batch(elem, batch);
702
+ char* FilterStackCall::GetPeer() {
703
+ char* peer_string = reinterpret_cast<char*>(gpr_atm_acq_load(&peer_string_));
704
+ if (peer_string != nullptr) return gpr_strdup(peer_string);
705
+ peer_string = grpc_channel_get_target(channel_);
706
+ if (peer_string != nullptr) return peer_string;
707
+ return gpr_strdup("unknown");
628
708
  }
629
709
 
630
710
  // start_batch_closure points to a caller-allocated closure to be used
631
711
  // for entering the call combiner.
632
- static void execute_batch(grpc_call* call,
633
- grpc_transport_stream_op_batch* batch,
634
- grpc_closure* start_batch_closure) {
635
- batch->handler_private.extra_arg = call;
712
+ void FilterStackCall::ExecuteBatch(grpc_transport_stream_op_batch* batch,
713
+ grpc_closure* start_batch_closure) {
714
+ // This is called via the call combiner to start sending a batch down
715
+ // the filter stack.
716
+ auto execute_batch_in_call_combiner = [](void* arg, grpc_error_handle) {
717
+ GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0);
718
+ grpc_transport_stream_op_batch* batch =
719
+ static_cast<grpc_transport_stream_op_batch*>(arg);
720
+ auto* call =
721
+ static_cast<FilterStackCall*>(batch->handler_private.extra_arg);
722
+ grpc_call_element* elem = call->call_elem(0);
723
+ GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
724
+ elem->filter->start_transport_stream_op_batch(elem, batch);
725
+ };
726
+ batch->handler_private.extra_arg = this;
636
727
  GRPC_CLOSURE_INIT(start_batch_closure, execute_batch_in_call_combiner, batch,
637
728
  grpc_schedule_on_exec_ctx);
638
- GRPC_CALL_COMBINER_START(&call->call_combiner, start_batch_closure,
729
+ GRPC_CALL_COMBINER_START(call_combiner(), start_batch_closure,
639
730
  GRPC_ERROR_NONE, "executing batch");
640
731
  }
641
732
 
642
- char* grpc_call_get_peer(grpc_call* call) {
643
- char* peer_string = (char*)gpr_atm_acq_load(&call->peer_string);
644
- if (peer_string != nullptr) return gpr_strdup(peer_string);
645
- peer_string = grpc_channel_get_target(call->channel);
646
- if (peer_string != nullptr) return peer_string;
647
- return gpr_strdup("unknown");
648
- }
649
-
650
- grpc_call* grpc_call_from_top_element(grpc_call_element* elem) {
651
- return CALL_FROM_TOP_ELEM(elem);
652
- }
653
-
654
- /*******************************************************************************
655
- * CANCELLATION
656
- */
657
-
658
- grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
659
- grpc_status_code status,
660
- const char* description,
661
- void* reserved) {
662
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
663
- grpc_core::ExecCtx exec_ctx;
664
- GRPC_API_TRACE(
665
- "grpc_call_cancel_with_status("
666
- "c=%p, status=%d, description=%s, reserved=%p)",
667
- 4, (c, (int)status, description, reserved));
668
- GPR_ASSERT(reserved == nullptr);
669
- cancel_with_status(c, status, description);
670
- return GRPC_CALL_OK;
671
- }
672
-
673
- struct cancel_state {
674
- grpc_call* call;
733
+ namespace {
734
+ struct CancelState {
735
+ FilterStackCall* call;
675
736
  grpc_closure start_batch;
676
737
  grpc_closure finish_batch;
677
738
  };
739
+ } // namespace
740
+
678
741
  // The on_complete callback used when sending a cancel_stream batch down
679
742
  // the filter stack. Yields the call combiner when the batch is done.
680
- static void done_termination(void* arg, grpc_error* /*error*/) {
681
- cancel_state* state = static_cast<cancel_state*>(arg);
682
- GRPC_CALL_COMBINER_STOP(&state->call->call_combiner,
743
+ static void done_termination(void* arg, grpc_error_handle /*error*/) {
744
+ CancelState* state = static_cast<CancelState*>(arg);
745
+ GRPC_CALL_COMBINER_STOP(state->call->call_combiner(),
683
746
  "on_complete for cancel_stream op");
684
- GRPC_CALL_INTERNAL_UNREF(state->call, "termination");
685
- gpr_free(state);
747
+ state->call->InternalUnref("termination");
748
+ delete state;
686
749
  }
687
750
 
688
- static void cancel_with_error(grpc_call* c, grpc_error* error) {
689
- if (!gpr_atm_rel_cas(&c->cancelled, 0, 1)) {
751
+ void FilterStackCall::CancelWithError(grpc_error_handle error) {
752
+ if (!gpr_atm_rel_cas(&cancelled_with_error_, 0, 1)) {
690
753
  GRPC_ERROR_UNREF(error);
691
754
  return;
692
755
  }
693
- GRPC_CALL_INTERNAL_REF(c, "termination");
756
+ InternalRef("termination");
694
757
  // Inform the call combiner of the cancellation, so that it can cancel
695
758
  // any in-flight asynchronous actions that may be holding the call
696
759
  // combiner. This ensures that the cancel_stream batch can be sent
697
760
  // down the filter stack in a timely manner.
698
- c->call_combiner.Cancel(GRPC_ERROR_REF(error));
699
- cancel_state* state = static_cast<cancel_state*>(gpr_malloc(sizeof(*state)));
700
- state->call = c;
761
+ call_combiner_.Cancel(GRPC_ERROR_REF(error));
762
+ CancelState* state = new CancelState;
763
+ state->call = this;
701
764
  GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state,
702
765
  grpc_schedule_on_exec_ctx);
703
766
  grpc_transport_stream_op_batch* op =
704
767
  grpc_make_transport_stream_op(&state->finish_batch);
705
768
  op->cancel_stream = true;
706
769
  op->payload->cancel_stream.cancel_error = error;
707
- execute_batch(c, op, &state->start_batch);
708
- }
709
-
710
- void grpc_call_cancel_internal(grpc_call* call) {
711
- cancel_with_error(call, GRPC_ERROR_CANCELLED);
770
+ ExecuteBatch(op, &state->start_batch);
712
771
  }
713
772
 
714
- static grpc_error* error_from_status(grpc_status_code status,
715
- const char* description) {
773
+ void Call::CancelWithStatus(grpc_status_code status, const char* description) {
716
774
  // copying 'description' is needed to ensure the grpc_call_cancel_with_status
717
775
  // guarantee that can be short-lived.
718
- return grpc_error_set_int(
776
+ CancelWithError(grpc_error_set_int(
719
777
  grpc_error_set_str(GRPC_ERROR_CREATE_FROM_COPIED_STRING(description),
720
- GRPC_ERROR_STR_GRPC_MESSAGE,
721
- grpc_slice_from_copied_string(description)),
722
- GRPC_ERROR_INT_GRPC_STATUS, status);
723
- }
724
-
725
- static void cancel_with_status(grpc_call* c, grpc_status_code status,
726
- const char* description) {
727
- cancel_with_error(c, error_from_status(status, description));
778
+ GRPC_ERROR_STR_GRPC_MESSAGE, description),
779
+ GRPC_ERROR_INT_GRPC_STATUS, status));
728
780
  }
729
781
 
730
- static void set_final_status(grpc_call* call, grpc_error* error) {
782
+ void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
731
783
  if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
732
- gpr_log(GPR_DEBUG, "set_final_status %s", call->is_client ? "CLI" : "SVR");
733
- gpr_log(GPR_DEBUG, "%s", grpc_error_string(error));
734
- }
735
- if (call->is_client) {
736
- grpc_error_get_status(error, call->send_deadline,
737
- call->final_op.client.status,
738
- call->final_op.client.status_details, nullptr,
739
- call->final_op.client.error_string);
740
- // explicitly take a ref
741
- grpc_slice_ref_internal(*call->final_op.client.status_details);
742
- gpr_atm_rel_store(&call->status_error, reinterpret_cast<gpr_atm>(error));
743
- grpc_core::channelz::ChannelNode* channelz_channel =
744
- grpc_channel_get_channelz_node(call->channel);
784
+ gpr_log(GPR_DEBUG, "set_final_status %s", is_client() ? "CLI" : "SVR");
785
+ gpr_log(GPR_DEBUG, "%s", grpc_error_std_string(error).c_str());
786
+ }
787
+ if (is_client()) {
788
+ std::string status_details;
789
+ grpc_error_get_status(error, send_deadline(), final_op_.client.status,
790
+ &status_details, nullptr,
791
+ final_op_.client.error_string);
792
+ *final_op_.client.status_details =
793
+ grpc_slice_from_cpp_string(std::move(status_details));
794
+ status_error_.set(error);
795
+ GRPC_ERROR_UNREF(error);
796
+ channelz::ChannelNode* channelz_channel =
797
+ grpc_channel_get_channelz_node(channel_);
745
798
  if (channelz_channel != nullptr) {
746
- if (*call->final_op.client.status != GRPC_STATUS_OK) {
799
+ if (*final_op_.client.status != GRPC_STATUS_OK) {
747
800
  channelz_channel->RecordCallFailed();
748
801
  } else {
749
802
  channelz_channel->RecordCallSucceeded();
750
803
  }
751
804
  }
752
805
  } else {
753
- *call->final_op.server.cancelled =
754
- error != GRPC_ERROR_NONE ||
755
- reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&call->status_error)) !=
756
- GRPC_ERROR_NONE;
757
- grpc_core::channelz::ServerNode* channelz_server =
758
- grpc_server_get_channelz_node(call->final_op.server.server);
759
- if (channelz_server != nullptr) {
760
- if (*call->final_op.server.cancelled) {
761
- channelz_server->RecordCallFailed();
806
+ *final_op_.server.cancelled =
807
+ error != GRPC_ERROR_NONE || !sent_server_trailing_metadata_;
808
+ channelz::ServerNode* channelz_node =
809
+ final_op_.server.core_server->channelz_node();
810
+ if (channelz_node != nullptr) {
811
+ if (*final_op_.server.cancelled || !status_error_.ok()) {
812
+ channelz_node->RecordCallFailed();
762
813
  } else {
763
- channelz_server->RecordCallSucceeded();
814
+ channelz_node->RecordCallSucceeded();
764
815
  }
765
816
  }
766
817
  GRPC_ERROR_UNREF(error);
767
818
  }
768
819
  }
769
820
 
770
- /*******************************************************************************
771
- * COMPRESSION
772
- */
773
-
774
- static void set_incoming_message_compression_algorithm(
775
- grpc_call* call, grpc_message_compression_algorithm algo) {
776
- GPR_ASSERT(algo < GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT);
777
- call->incoming_message_compression_algorithm = algo;
778
- }
779
-
780
- static void set_incoming_stream_compression_algorithm(
781
- grpc_call* call, grpc_stream_compression_algorithm algo) {
782
- GPR_ASSERT(algo < GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT);
783
- call->incoming_stream_compression_algorithm = algo;
784
- }
785
-
786
- grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
787
- grpc_call* call) {
788
- grpc_compression_algorithm algorithm = GRPC_COMPRESS_NONE;
789
- grpc_compression_algorithm_from_message_stream_compression_algorithm(
790
- &algorithm, call->incoming_message_compression_algorithm,
791
- call->incoming_stream_compression_algorithm);
792
- return algorithm;
793
- }
794
-
795
- static grpc_compression_algorithm compression_algorithm_for_level_locked(
796
- grpc_call* call, grpc_compression_level level) {
797
- return grpc_compression_algorithm_for_level(level,
798
- call->encodings_accepted_by_peer);
799
- }
821
+ bool FilterStackCall::PrepareApplicationMetadata(size_t count,
822
+ grpc_metadata* metadata,
823
+ bool is_trailing) {
824
+ grpc_metadata_batch* batch =
825
+ is_trailing ? &send_trailing_metadata_ : &send_initial_metadata_;
826
+ for (size_t i = 0; i < count; i++) {
827
+ grpc_metadata* md = &metadata[i];
828
+ if (!GRPC_LOG_IF_ERROR("validate_metadata",
829
+ grpc_validate_header_key_is_legal(md->key))) {
830
+ return false;
831
+ } else if (!grpc_is_binary_header_internal(md->key) &&
832
+ !GRPC_LOG_IF_ERROR(
833
+ "validate_metadata",
834
+ grpc_validate_header_nonbin_value_is_legal(md->value))) {
835
+ return false;
836
+ } else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
837
+ // HTTP2 hpack encoding has a maximum limit.
838
+ return false;
839
+ } else if (grpc_slice_str_cmp(md->key, "content-length") == 0) {
840
+ // Filter "content-length metadata"
841
+ continue;
842
+ }
843
+ batch->Append(StringViewFromSlice(md->key),
844
+ Slice(grpc_slice_ref_internal(md->value)),
845
+ [md](absl::string_view error, const Slice& value) {
846
+ gpr_log(GPR_DEBUG, "Append error: %s",
847
+ absl::StrCat("key=", StringViewFromSlice(md->key),
848
+ " error=", error,
849
+ " value=", value.as_string_view())
850
+ .c_str());
851
+ });
852
+ }
800
853
 
801
- uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
802
- uint32_t flags;
803
- flags = call->test_only_last_message_flags;
804
- return flags;
854
+ return true;
805
855
  }
806
856
 
807
- static void destroy_encodings_accepted_by_peer(void* /*p*/) { return; }
857
+ namespace {
858
+ class PublishToAppEncoder {
859
+ public:
860
+ explicit PublishToAppEncoder(grpc_metadata_array* dest) : dest_(dest) {}
808
861
 
809
- static void set_encodings_accepted_by_peer(grpc_call* /*call*/,
810
- grpc_mdelem mdel,
811
- uint32_t* encodings_accepted_by_peer,
812
- bool stream_encoding) {
813
- size_t i;
814
- uint32_t algorithm;
815
- grpc_slice_buffer accept_encoding_parts;
816
- grpc_slice accept_encoding_slice;
817
- void* accepted_user_data;
818
-
819
- accepted_user_data =
820
- grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer);
821
- if (accepted_user_data != nullptr) {
822
- *encodings_accepted_by_peer =
823
- static_cast<uint32_t>(((uintptr_t)accepted_user_data) - 1);
824
- return;
862
+ void Encode(const Slice& key, const Slice& value) {
863
+ Append(key.c_slice(), value.c_slice());
825
864
  }
826
865
 
827
- *encodings_accepted_by_peer = 0;
866
+ // Catch anything that is not explicitly handled, and do not publish it to the
867
+ // application. If new metadata is added to a batch that needs to be
868
+ // published, it should be called out here.
869
+ template <typename Which>
870
+ void Encode(Which, const typename Which::ValueType&) {}
828
871
 
829
- accept_encoding_slice = GRPC_MDVALUE(mdel);
830
- grpc_slice_buffer_init(&accept_encoding_parts);
831
- grpc_slice_split_without_space(accept_encoding_slice, ",",
832
- &accept_encoding_parts);
833
-
834
- GPR_BITSET(encodings_accepted_by_peer, GRPC_COMPRESS_NONE);
835
- for (i = 0; i < accept_encoding_parts.count; i++) {
836
- int r;
837
- grpc_slice accept_encoding_entry_slice = accept_encoding_parts.slices[i];
838
- if (!stream_encoding) {
839
- r = grpc_message_compression_algorithm_parse(
840
- accept_encoding_entry_slice,
841
- reinterpret_cast<grpc_message_compression_algorithm*>(&algorithm));
842
- } else {
843
- r = grpc_stream_compression_algorithm_parse(
844
- accept_encoding_entry_slice,
845
- reinterpret_cast<grpc_stream_compression_algorithm*>(&algorithm));
846
- }
847
- if (r) {
848
- GPR_BITSET(encodings_accepted_by_peer, algorithm);
849
- } else {
850
- char* accept_encoding_entry_str =
851
- grpc_slice_to_c_string(accept_encoding_entry_slice);
852
- gpr_log(GPR_DEBUG,
853
- "Unknown entry in accept encoding metadata: '%s'. Ignoring.",
854
- accept_encoding_entry_str);
855
- gpr_free(accept_encoding_entry_str);
856
- }
872
+ void Encode(UserAgentMetadata, const Slice& slice) {
873
+ Append(UserAgentMetadata::key(), slice);
857
874
  }
858
875
 
859
- grpc_slice_buffer_destroy_internal(&accept_encoding_parts);
860
-
861
- grpc_mdelem_set_user_data(
862
- mdel, destroy_encodings_accepted_by_peer,
863
- (void*)((static_cast<uintptr_t>(*encodings_accepted_by_peer)) + 1));
864
- }
865
-
866
- uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
867
- uint32_t encodings_accepted_by_peer;
868
- encodings_accepted_by_peer = call->encodings_accepted_by_peer;
869
- return encodings_accepted_by_peer;
870
- }
871
-
872
- grpc_stream_compression_algorithm
873
- grpc_call_test_only_get_incoming_stream_encodings(grpc_call* call) {
874
- return call->incoming_stream_compression_algorithm;
875
- }
876
-
877
- static grpc_linked_mdelem* linked_from_md(const grpc_metadata* md) {
878
- return (grpc_linked_mdelem*)&md->internal_data;
879
- }
876
+ void Encode(HostMetadata, const Slice& slice) {
877
+ Append(HostMetadata::key(), slice);
878
+ }
880
879
 
881
- static grpc_metadata* get_md_elem(grpc_metadata* metadata,
882
- grpc_metadata* additional_metadata, int i,
883
- int count) {
884
- grpc_metadata* res =
885
- i < count ? &metadata[i] : &additional_metadata[i - count];
886
- GPR_ASSERT(res);
887
- return res;
888
- }
880
+ void Encode(GrpcPreviousRpcAttemptsMetadata, uint32_t count) {
881
+ Append(GrpcPreviousRpcAttemptsMetadata::key(), count);
882
+ }
889
883
 
890
- static int prepare_application_metadata(grpc_call* call, int count,
891
- grpc_metadata* metadata,
892
- int is_trailing,
893
- int prepend_extra_metadata,
894
- grpc_metadata* additional_metadata,
895
- int additional_metadata_count) {
896
- int total_count = count + additional_metadata_count;
897
- int i;
898
- grpc_metadata_batch* batch =
899
- &call->metadata_batch[0 /* is_receiving */][is_trailing];
900
- for (i = 0; i < total_count; i++) {
901
- const grpc_metadata* md =
902
- get_md_elem(metadata, additional_metadata, i, count);
903
- grpc_linked_mdelem* l = linked_from_md(md);
904
- GPR_ASSERT(sizeof(grpc_linked_mdelem) == sizeof(md->internal_data));
905
- if (!GRPC_LOG_IF_ERROR("validate_metadata",
906
- grpc_validate_header_key_is_legal(md->key))) {
907
- break;
908
- } else if (!grpc_is_binary_header_internal(md->key) &&
909
- !GRPC_LOG_IF_ERROR(
910
- "validate_metadata",
911
- grpc_validate_header_nonbin_value_is_legal(md->value))) {
912
- break;
913
- } else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
914
- // HTTP2 hpack encoding has a maximum limit.
915
- break;
916
- }
917
- l->md = grpc_mdelem_from_grpc_metadata(const_cast<grpc_metadata*>(md));
918
- }
919
- if (i != total_count) {
920
- for (int j = 0; j < i; j++) {
921
- const grpc_metadata* md =
922
- get_md_elem(metadata, additional_metadata, j, count);
923
- grpc_linked_mdelem* l = linked_from_md(md);
924
- GRPC_MDELEM_UNREF(l->md);
925
- }
926
- return 0;
884
+ void Encode(GrpcRetryPushbackMsMetadata, Duration count) {
885
+ Append(GrpcRetryPushbackMsMetadata::key(), count.millis());
927
886
  }
928
- if (prepend_extra_metadata) {
929
- if (call->send_extra_metadata_count == 0) {
930
- prepend_extra_metadata = 0;
931
- } else {
932
- for (i = 0; i < call->send_extra_metadata_count; i++) {
933
- GRPC_LOG_IF_ERROR("prepare_application_metadata",
934
- grpc_metadata_batch_link_tail(
935
- batch, &call->send_extra_metadata[i]));
936
- }
937
- }
887
+
888
+ void Encode(LbTokenMetadata, const Slice& slice) {
889
+ Append(LbTokenMetadata::key(), slice);
938
890
  }
939
- for (i = 0; i < total_count; i++) {
940
- grpc_metadata* md = get_md_elem(metadata, additional_metadata, i, count);
941
- grpc_linked_mdelem* l = linked_from_md(md);
942
- grpc_error* error = grpc_metadata_batch_link_tail(batch, l);
943
- if (error != GRPC_ERROR_NONE) {
944
- GRPC_MDELEM_UNREF(l->md);
945
- }
946
- GRPC_LOG_IF_ERROR("prepare_application_metadata", error);
891
+
892
+ private:
893
+ void Append(absl::string_view key, int64_t value) {
894
+ Append(StaticSlice::FromStaticString(key).c_slice(),
895
+ Slice::FromInt64(value).c_slice());
947
896
  }
948
- call->send_extra_metadata_count = 0;
949
897
 
950
- return 1;
951
- }
898
+ void Append(absl::string_view key, const Slice& value) {
899
+ Append(StaticSlice::FromStaticString(key).c_slice(), value.c_slice());
900
+ }
952
901
 
953
- static grpc_message_compression_algorithm decode_message_compression(
954
- grpc_mdelem md) {
955
- grpc_message_compression_algorithm algorithm =
956
- grpc_message_compression_algorithm_from_slice(GRPC_MDVALUE(md));
957
- if (algorithm == GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT) {
958
- char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
959
- gpr_log(GPR_ERROR,
960
- "Invalid incoming message compression algorithm: '%s'. "
961
- "Interpreting incoming data as uncompressed.",
962
- md_c_str);
963
- gpr_free(md_c_str);
964
- return GRPC_MESSAGE_COMPRESS_NONE;
965
- }
966
- return algorithm;
967
- }
902
+ void Append(grpc_slice key, grpc_slice value) {
903
+ auto* mdusr = &dest_->metadata[dest_->count++];
904
+ mdusr->key = key;
905
+ mdusr->value = value;
906
+ }
968
907
 
969
- static grpc_stream_compression_algorithm decode_stream_compression(
970
- grpc_mdelem md) {
971
- grpc_stream_compression_algorithm algorithm =
972
- grpc_stream_compression_algorithm_from_slice(GRPC_MDVALUE(md));
973
- if (algorithm == GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT) {
974
- char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
975
- gpr_log(GPR_ERROR,
976
- "Invalid incoming stream compression algorithm: '%s'. Interpreting "
977
- "incoming data as uncompressed.",
978
- md_c_str);
979
- gpr_free(md_c_str);
980
- return GRPC_STREAM_COMPRESS_NONE;
981
- }
982
- return algorithm;
983
- }
908
+ grpc_metadata_array* const dest_;
909
+ };
910
+ } // namespace
984
911
 
985
- static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
986
- int is_trailing) {
987
- if (b->list.count == 0) return;
988
- if (!call->is_client && is_trailing) return;
989
- if (is_trailing && call->buffered_metadata[1] == nullptr) return;
912
+ void FilterStackCall::PublishAppMetadata(grpc_metadata_batch* b,
913
+ bool is_trailing) {
914
+ if (b->count() == 0) return;
915
+ if (!is_client() && is_trailing) return;
916
+ if (is_trailing && buffered_metadata_[1] == nullptr) return;
990
917
  GPR_TIMER_SCOPE("publish_app_metadata", 0);
991
918
  grpc_metadata_array* dest;
992
- grpc_metadata* mdusr;
993
- dest = call->buffered_metadata[is_trailing];
994
- if (dest->count + b->list.count > dest->capacity) {
919
+ dest = buffered_metadata_[is_trailing];
920
+ if (dest->count + b->count() > dest->capacity) {
995
921
  dest->capacity =
996
- GPR_MAX(dest->capacity + b->list.count, dest->capacity * 3 / 2);
922
+ std::max(dest->capacity + b->count(), dest->capacity * 3 / 2);
997
923
  dest->metadata = static_cast<grpc_metadata*>(
998
924
  gpr_realloc(dest->metadata, sizeof(grpc_metadata) * dest->capacity));
999
925
  }
1000
- for (grpc_linked_mdelem* l = b->list.head; l != nullptr; l = l->next) {
1001
- mdusr = &dest->metadata[dest->count++];
1002
- /* we pass back borrowed slices that are valid whilst the call is valid */
1003
- mdusr->key = GRPC_MDKEY(l->md);
1004
- mdusr->value = GRPC_MDVALUE(l->md);
1005
- }
926
+ PublishToAppEncoder encoder(dest);
927
+ b->Encode(&encoder);
1006
928
  }
1007
929
 
1008
- static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
1009
- if (b->idx.named.content_encoding != nullptr) {
1010
- GPR_TIMER_SCOPE("incoming_stream_compression_algorithm", 0);
1011
- set_incoming_stream_compression_algorithm(
1012
- call, decode_stream_compression(b->idx.named.content_encoding->md));
1013
- grpc_metadata_batch_remove(b, GRPC_BATCH_CONTENT_ENCODING);
1014
- }
1015
- if (b->idx.named.grpc_encoding != nullptr) {
1016
- GPR_TIMER_SCOPE("incoming_message_compression_algorithm", 0);
1017
- set_incoming_message_compression_algorithm(
1018
- call, decode_message_compression(b->idx.named.grpc_encoding->md));
1019
- grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_ENCODING);
1020
- }
1021
- uint32_t message_encodings_accepted_by_peer = 1u;
1022
- uint32_t stream_encodings_accepted_by_peer = 1u;
1023
- if (b->idx.named.grpc_accept_encoding != nullptr) {
1024
- GPR_TIMER_SCOPE("encodings_accepted_by_peer", 0);
1025
- set_encodings_accepted_by_peer(call, b->idx.named.grpc_accept_encoding->md,
1026
- &message_encodings_accepted_by_peer, false);
1027
- grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_ACCEPT_ENCODING);
1028
- }
1029
- if (b->idx.named.accept_encoding != nullptr) {
1030
- GPR_TIMER_SCOPE("stream_encodings_accepted_by_peer", 0);
1031
- set_encodings_accepted_by_peer(call, b->idx.named.accept_encoding->md,
1032
- &stream_encodings_accepted_by_peer, true);
1033
- grpc_metadata_batch_remove(b, GRPC_BATCH_ACCEPT_ENCODING);
1034
- }
1035
- call->encodings_accepted_by_peer =
1036
- grpc_compression_bitset_from_message_stream_compression_bitset(
1037
- message_encodings_accepted_by_peer,
1038
- stream_encodings_accepted_by_peer);
1039
- publish_app_metadata(call, b, false);
930
+ void FilterStackCall::RecvInitialFilter(grpc_metadata_batch* b) {
931
+ incoming_compression_algorithm_ =
932
+ b->Take(GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE);
933
+ encodings_accepted_by_peer_ =
934
+ b->Take(GrpcAcceptEncodingMetadata())
935
+ .value_or(CompressionAlgorithmSet{GRPC_COMPRESS_NONE});
936
+ PublishAppMetadata(b, false);
1040
937
  }
1041
938
 
1042
- static void recv_trailing_filter(void* args, grpc_metadata_batch* b,
1043
- grpc_error* batch_error) {
1044
- grpc_call* call = static_cast<grpc_call*>(args);
939
+ void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b,
940
+ grpc_error_handle batch_error) {
1045
941
  if (batch_error != GRPC_ERROR_NONE) {
1046
- set_final_status(call, batch_error);
1047
- } else if (b->idx.named.grpc_status != nullptr) {
1048
- grpc_status_code status_code =
1049
- grpc_get_status_code_from_metadata(b->idx.named.grpc_status->md);
1050
- grpc_error* error = GRPC_ERROR_NONE;
1051
- if (status_code != GRPC_STATUS_OK) {
1052
- char* peer_msg = nullptr;
1053
- char* peer = grpc_call_get_peer(call);
1054
- gpr_asprintf(&peer_msg, "Error received from peer %s", peer);
1055
- error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(peer_msg),
1056
- GRPC_ERROR_INT_GRPC_STATUS,
1057
- static_cast<intptr_t>(status_code));
1058
- gpr_free(peer);
1059
- gpr_free(peer_msg);
1060
- }
1061
- if (b->idx.named.grpc_message != nullptr) {
1062
- error = grpc_error_set_str(
1063
- error, GRPC_ERROR_STR_GRPC_MESSAGE,
1064
- grpc_slice_ref_internal(GRPC_MDVALUE(b->idx.named.grpc_message->md)));
1065
- grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_MESSAGE);
1066
- } else if (error != GRPC_ERROR_NONE) {
1067
- error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
1068
- grpc_empty_slice());
1069
- }
1070
- set_final_status(call, GRPC_ERROR_REF(error));
1071
- grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_STATUS);
1072
- GRPC_ERROR_UNREF(error);
1073
- } else if (!call->is_client) {
1074
- set_final_status(call, GRPC_ERROR_NONE);
942
+ SetFinalStatus(batch_error);
1075
943
  } else {
1076
- gpr_log(GPR_DEBUG,
1077
- "Received trailing metadata with no error and no status");
1078
- set_final_status(
1079
- call, grpc_error_set_int(
1080
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("No status received"),
1081
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNKNOWN));
1082
- }
1083
- publish_app_metadata(call, b, true);
1084
- }
1085
-
1086
- grpc_core::Arena* grpc_call_get_arena(grpc_call* call) { return call->arena; }
1087
-
1088
- grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
1089
- return CALL_STACK_FROM_CALL(call);
944
+ absl::optional<grpc_status_code> grpc_status =
945
+ b->Take(GrpcStatusMetadata());
946
+ if (grpc_status.has_value()) {
947
+ grpc_status_code status_code = *grpc_status;
948
+ grpc_error_handle error = GRPC_ERROR_NONE;
949
+ if (status_code != GRPC_STATUS_OK) {
950
+ char* peer = GetPeer();
951
+ error = grpc_error_set_int(
952
+ GRPC_ERROR_CREATE_FROM_CPP_STRING(
953
+ absl::StrCat("Error received from peer ", peer)),
954
+ GRPC_ERROR_INT_GRPC_STATUS, static_cast<intptr_t>(status_code));
955
+ gpr_free(peer);
956
+ }
957
+ auto grpc_message = b->Take(GrpcMessageMetadata());
958
+ if (grpc_message.has_value()) {
959
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
960
+ grpc_message->as_string_view());
961
+ } else if (error != GRPC_ERROR_NONE) {
962
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
963
+ }
964
+ SetFinalStatus(GRPC_ERROR_REF(error));
965
+ GRPC_ERROR_UNREF(error);
966
+ } else if (!is_client()) {
967
+ SetFinalStatus(GRPC_ERROR_NONE);
968
+ } else {
969
+ gpr_log(GPR_DEBUG,
970
+ "Received trailing metadata with no error and no status");
971
+ SetFinalStatus(grpc_error_set_int(
972
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("No status received"),
973
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNKNOWN));
974
+ }
975
+ }
976
+ PublishAppMetadata(b, true);
1090
977
  }
1091
978
 
1092
- /*******************************************************************************
1093
- * BATCH API IMPLEMENTATION
1094
- */
1095
-
1096
- static bool are_write_flags_valid(uint32_t flags) {
979
+ namespace {
980
+ bool AreWriteFlagsValid(uint32_t flags) {
1097
981
  /* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
1098
982
  const uint32_t allowed_write_positions =
1099
983
  (GRPC_WRITE_USED_MASK | GRPC_WRITE_INTERNAL_USED_MASK);
@@ -1101,16 +985,13 @@ static bool are_write_flags_valid(uint32_t flags) {
1101
985
  return !(flags & invalid_positions);
1102
986
  }
1103
987
 
1104
- static bool are_initial_metadata_flags_valid(uint32_t flags, bool is_client) {
988
+ bool AreInitialMetadataFlagsValid(uint32_t flags) {
1105
989
  /* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
1106
990
  uint32_t invalid_positions = ~GRPC_INITIAL_METADATA_USED_MASK;
1107
- if (!is_client) {
1108
- invalid_positions |= GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
1109
- }
1110
991
  return !(flags & invalid_positions);
1111
992
  }
1112
993
 
1113
- static size_t batch_slot_for_op(grpc_op_type type) {
994
+ size_t BatchSlotForOp(grpc_op_type type) {
1114
995
  switch (type) {
1115
996
  case GRPC_OP_SEND_INITIAL_METADATA:
1116
997
  return 0;
@@ -1129,141 +1010,135 @@ static size_t batch_slot_for_op(grpc_op_type type) {
1129
1010
  }
1130
1011
  GPR_UNREACHABLE_CODE(return 123456789);
1131
1012
  }
1013
+ } // namespace
1132
1014
 
1133
- static batch_control* reuse_or_allocate_batch_control(grpc_call* call,
1134
- const grpc_op* ops) {
1135
- size_t slot_idx = batch_slot_for_op(ops[0].op);
1136
- batch_control** pslot = &call->active_batches[slot_idx];
1137
- batch_control* bctl;
1015
+ FilterStackCall::BatchControl* FilterStackCall::ReuseOrAllocateBatchControl(
1016
+ const grpc_op* ops) {
1017
+ size_t slot_idx = BatchSlotForOp(ops[0].op);
1018
+ BatchControl** pslot = &active_batches_[slot_idx];
1019
+ BatchControl* bctl;
1138
1020
  if (*pslot != nullptr) {
1139
1021
  bctl = *pslot;
1140
- if (bctl->call != nullptr) {
1022
+ if (bctl->call_ != nullptr) {
1141
1023
  return nullptr;
1142
1024
  }
1143
- bctl->~batch_control();
1144
- bctl->op = {};
1025
+ bctl->~BatchControl();
1026
+ bctl->op_ = {};
1027
+ new (&bctl->batch_error_) AtomicError();
1145
1028
  } else {
1146
- bctl = call->arena->New<batch_control>();
1029
+ bctl = arena()->New<BatchControl>();
1147
1030
  *pslot = bctl;
1148
1031
  }
1149
- bctl->call = call;
1150
- bctl->op.payload = &call->stream_op_payload;
1032
+ bctl->call_ = this;
1033
+ bctl->op_.payload = &stream_op_payload_;
1151
1034
  return bctl;
1152
1035
  }
1153
1036
 
1154
- static void finish_batch_completion(void* user_data,
1155
- grpc_cq_completion* /*storage*/) {
1156
- batch_control* bctl = static_cast<batch_control*>(user_data);
1157
- grpc_call* call = bctl->call;
1158
- bctl->call = nullptr;
1159
- GRPC_CALL_INTERNAL_UNREF(call, "completion");
1160
- }
1161
-
1162
- static void reset_batch_errors(batch_control* bctl) {
1163
- GRPC_ERROR_UNREF(
1164
- reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)));
1165
- gpr_atm_rel_store(&bctl->batch_error,
1166
- reinterpret_cast<gpr_atm>(GRPC_ERROR_NONE));
1037
+ void Call::PropagateCancellationToChildren() {
1038
+ ParentCall* pc = parent_call();
1039
+ if (pc != nullptr) {
1040
+ Call* child;
1041
+ MutexLock lock(&pc->child_list_mu);
1042
+ child = pc->first_child;
1043
+ if (child != nullptr) {
1044
+ do {
1045
+ Call* next_child_call = child->child_->sibling_next;
1046
+ if (child->cancellation_is_inherited_) {
1047
+ child->InternalRef("propagate_cancel");
1048
+ child->CancelWithError(GRPC_ERROR_CANCELLED);
1049
+ child->InternalUnref("propagate_cancel");
1050
+ }
1051
+ child = next_child_call;
1052
+ } while (child != pc->first_child);
1053
+ }
1054
+ }
1167
1055
  }
1168
1056
 
1169
- static void post_batch_completion(batch_control* bctl) {
1170
- grpc_call* next_child_call;
1171
- grpc_call* call = bctl->call;
1172
- grpc_error* error = GRPC_ERROR_REF(
1173
- reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)));
1057
+ void FilterStackCall::BatchControl::PostCompletion() {
1058
+ FilterStackCall* call = call_;
1059
+ grpc_error_handle error = GRPC_ERROR_REF(batch_error_.get());
1174
1060
 
1175
- if (bctl->op.send_initial_metadata) {
1176
- grpc_metadata_batch_destroy(
1177
- &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]);
1061
+ if (op_.send_initial_metadata) {
1062
+ call->send_initial_metadata_.Clear();
1178
1063
  }
1179
- if (bctl->op.send_message) {
1180
- if (bctl->op.payload->send_message.stream_write_closed &&
1064
+ if (op_.send_message) {
1065
+ if (op_.payload->send_message.stream_write_closed &&
1181
1066
  error == GRPC_ERROR_NONE) {
1182
1067
  error = grpc_error_add_child(
1183
1068
  error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1184
1069
  "Attempt to send message after stream was closed."));
1185
1070
  }
1186
- call->sending_message = false;
1071
+ call->sending_message_ = false;
1187
1072
  }
1188
- if (bctl->op.send_trailing_metadata) {
1189
- grpc_metadata_batch_destroy(
1190
- &call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */]);
1073
+ if (op_.send_trailing_metadata) {
1074
+ call->send_trailing_metadata_.Clear();
1191
1075
  }
1192
- if (bctl->op.recv_trailing_metadata) {
1076
+ if (op_.recv_trailing_metadata) {
1193
1077
  /* propagate cancellation to any interested children */
1194
- gpr_atm_rel_store(&call->received_final_op_atm, 1);
1195
- parent_call* pc = get_parent_call(call);
1196
- if (pc != nullptr) {
1197
- grpc_call* child;
1198
- gpr_mu_lock(&pc->child_list_mu);
1199
- child = pc->first_child;
1200
- if (child != nullptr) {
1201
- do {
1202
- next_child_call = child->child->sibling_next;
1203
- if (child->cancellation_is_inherited) {
1204
- GRPC_CALL_INTERNAL_REF(child, "propagate_cancel");
1205
- cancel_with_error(child, GRPC_ERROR_CANCELLED);
1206
- GRPC_CALL_INTERNAL_UNREF(child, "propagate_cancel");
1207
- }
1208
- child = next_child_call;
1209
- } while (child != pc->first_child);
1210
- }
1211
- gpr_mu_unlock(&pc->child_list_mu);
1212
- }
1078
+ gpr_atm_rel_store(&call->received_final_op_atm_, 1);
1079
+ call->PropagateCancellationToChildren();
1213
1080
  GRPC_ERROR_UNREF(error);
1214
1081
  error = GRPC_ERROR_NONE;
1215
1082
  }
1216
- if (error != GRPC_ERROR_NONE && bctl->op.recv_message &&
1217
- *call->receiving_buffer != nullptr) {
1218
- grpc_byte_buffer_destroy(*call->receiving_buffer);
1219
- *call->receiving_buffer = nullptr;
1083
+ if (error != GRPC_ERROR_NONE && op_.recv_message &&
1084
+ *call->receiving_buffer_ != nullptr) {
1085
+ grpc_byte_buffer_destroy(*call->receiving_buffer_);
1086
+ *call->receiving_buffer_ = nullptr;
1220
1087
  }
1221
- reset_batch_errors(bctl);
1088
+ batch_error_.set(GRPC_ERROR_NONE);
1222
1089
 
1223
- if (bctl->completion_data.notify_tag.is_closure) {
1090
+ if (completion_data_.notify_tag.is_closure) {
1224
1091
  /* unrefs error */
1225
- bctl->call = nullptr;
1226
- grpc_core::Closure::Run(DEBUG_LOCATION,
1227
- (grpc_closure*)bctl->completion_data.notify_tag.tag,
1228
- error);
1229
- GRPC_CALL_INTERNAL_UNREF(call, "completion");
1092
+ call_ = nullptr;
1093
+ Closure::Run(DEBUG_LOCATION,
1094
+ static_cast<grpc_closure*>(completion_data_.notify_tag.tag),
1095
+ error);
1096
+ call->InternalUnref("completion");
1230
1097
  } else {
1231
1098
  /* unrefs error */
1232
- grpc_cq_end_op(bctl->call->cq, bctl->completion_data.notify_tag.tag, error,
1233
- finish_batch_completion, bctl,
1234
- &bctl->completion_data.cq_completion);
1099
+ grpc_cq_end_op(
1100
+ call->cq_, completion_data_.notify_tag.tag, error,
1101
+ [](void* user_data, grpc_cq_completion* /*storage*/) {
1102
+ BatchControl* bctl = static_cast<BatchControl*>(user_data);
1103
+ Call* call = bctl->call_;
1104
+ bctl->call_ = nullptr;
1105
+ call->InternalUnref("completion");
1106
+ },
1107
+ this, &completion_data_.cq_completion);
1235
1108
  }
1236
1109
  }
1237
1110
 
1238
- static void finish_batch_step(batch_control* bctl) {
1239
- if (GPR_UNLIKELY(bctl->completed_batch_step())) {
1240
- post_batch_completion(bctl);
1111
+ void FilterStackCall::BatchControl::FinishStep() {
1112
+ if (GPR_UNLIKELY(completed_batch_step())) {
1113
+ PostCompletion();
1241
1114
  }
1242
1115
  }
1243
1116
 
1244
- static void continue_receiving_slices(batch_control* bctl) {
1245
- grpc_error* error;
1246
- grpc_call* call = bctl->call;
1117
+ void FilterStackCall::BatchControl::ContinueReceivingSlices() {
1118
+ grpc_error_handle error;
1119
+ FilterStackCall* call = call_;
1247
1120
  for (;;) {
1248
- size_t remaining = call->receiving_stream->length() -
1249
- (*call->receiving_buffer)->data.raw.slice_buffer.length;
1121
+ size_t remaining = call->receiving_stream_->length() -
1122
+ (*call->receiving_buffer_)->data.raw.slice_buffer.length;
1250
1123
  if (remaining == 0) {
1251
- call->receiving_message = 0;
1252
- call->receiving_stream.reset();
1253
- finish_batch_step(bctl);
1124
+ call->receiving_message_ = false;
1125
+ call->receiving_stream_.reset();
1126
+ FinishStep();
1254
1127
  return;
1255
1128
  }
1256
- if (call->receiving_stream->Next(remaining, &call->receiving_slice_ready)) {
1257
- error = call->receiving_stream->Pull(&call->receiving_slice);
1129
+ if (call->receiving_stream_->Next(remaining,
1130
+ &call->receiving_slice_ready_)) {
1131
+ error = call->receiving_stream_->Pull(&call->receiving_slice_);
1258
1132
  if (error == GRPC_ERROR_NONE) {
1259
- grpc_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer,
1260
- call->receiving_slice);
1133
+ grpc_slice_buffer_add(
1134
+ &(*call->receiving_buffer_)->data.raw.slice_buffer,
1135
+ call->receiving_slice_);
1261
1136
  } else {
1262
- call->receiving_stream.reset();
1263
- grpc_byte_buffer_destroy(*call->receiving_buffer);
1264
- *call->receiving_buffer = nullptr;
1265
- call->receiving_message = 0;
1266
- finish_batch_step(bctl);
1137
+ call->receiving_stream_.reset();
1138
+ grpc_byte_buffer_destroy(*call->receiving_buffer_);
1139
+ *call->receiving_buffer_ = nullptr;
1140
+ call->receiving_message_ = false;
1141
+ FinishStep();
1267
1142
  GRPC_ERROR_UNREF(error);
1268
1143
  return;
1269
1144
  }
@@ -1273,18 +1148,18 @@ static void continue_receiving_slices(batch_control* bctl) {
1273
1148
  }
1274
1149
  }
1275
1150
 
1276
- static void receiving_slice_ready(void* bctlp, grpc_error* error) {
1277
- batch_control* bctl = static_cast<batch_control*>(bctlp);
1278
- grpc_call* call = bctl->call;
1151
+ void FilterStackCall::BatchControl::ReceivingSliceReady(
1152
+ grpc_error_handle error) {
1153
+ FilterStackCall* call = call_;
1279
1154
  bool release_error = false;
1280
1155
 
1281
1156
  if (error == GRPC_ERROR_NONE) {
1282
1157
  grpc_slice slice;
1283
- error = call->receiving_stream->Pull(&slice);
1158
+ error = call->receiving_stream_->Pull(&slice);
1284
1159
  if (error == GRPC_ERROR_NONE) {
1285
- grpc_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer,
1160
+ grpc_slice_buffer_add(&(*call->receiving_buffer_)->data.raw.slice_buffer,
1286
1161
  slice);
1287
- continue_receiving_slices(bctl);
1162
+ ContinueReceivingSlices();
1288
1163
  } else {
1289
1164
  /* Error returned by ByteStream::Pull() needs to be released manually */
1290
1165
  release_error = true;
@@ -1295,200 +1170,133 @@ static void receiving_slice_ready(void* bctlp, grpc_error* error) {
1295
1170
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
1296
1171
  GRPC_LOG_IF_ERROR("receiving_slice_ready", GRPC_ERROR_REF(error));
1297
1172
  }
1298
- call->receiving_stream.reset();
1299
- grpc_byte_buffer_destroy(*call->receiving_buffer);
1300
- *call->receiving_buffer = nullptr;
1301
- call->receiving_message = 0;
1302
- finish_batch_step(bctl);
1173
+ call->receiving_stream_.reset();
1174
+ grpc_byte_buffer_destroy(*call->receiving_buffer_);
1175
+ *call->receiving_buffer_ = nullptr;
1176
+ call->receiving_message_ = false;
1177
+ FinishStep();
1303
1178
  if (release_error) {
1304
1179
  GRPC_ERROR_UNREF(error);
1305
1180
  }
1306
1181
  }
1307
1182
  }
1308
1183
 
1309
- static void process_data_after_md(batch_control* bctl) {
1310
- grpc_call* call = bctl->call;
1311
- if (call->receiving_stream == nullptr) {
1312
- *call->receiving_buffer = nullptr;
1313
- call->receiving_message = 0;
1314
- finish_batch_step(bctl);
1184
+ void FilterStackCall::BatchControl::ProcessDataAfterMetadata() {
1185
+ FilterStackCall* call = call_;
1186
+ if (call->receiving_stream_ == nullptr) {
1187
+ *call->receiving_buffer_ = nullptr;
1188
+ call->receiving_message_ = false;
1189
+ FinishStep();
1315
1190
  } else {
1316
- call->test_only_last_message_flags = call->receiving_stream->flags();
1317
- if ((call->receiving_stream->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
1318
- (call->incoming_message_compression_algorithm >
1319
- GRPC_MESSAGE_COMPRESS_NONE)) {
1320
- grpc_compression_algorithm algo;
1321
- GPR_ASSERT(
1322
- grpc_compression_algorithm_from_message_stream_compression_algorithm(
1323
- &algo, call->incoming_message_compression_algorithm,
1324
- (grpc_stream_compression_algorithm)0));
1325
- *call->receiving_buffer =
1326
- grpc_raw_compressed_byte_buffer_create(nullptr, 0, algo);
1191
+ call->test_only_last_message_flags_ = call->receiving_stream_->flags();
1192
+ if ((call->receiving_stream_->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
1193
+ (call->incoming_compression_algorithm_ != GRPC_COMPRESS_NONE)) {
1194
+ *call->receiving_buffer_ = grpc_raw_compressed_byte_buffer_create(
1195
+ nullptr, 0, call->incoming_compression_algorithm_);
1327
1196
  } else {
1328
- *call->receiving_buffer = grpc_raw_byte_buffer_create(nullptr, 0);
1197
+ *call->receiving_buffer_ = grpc_raw_byte_buffer_create(nullptr, 0);
1329
1198
  }
1330
- GRPC_CLOSURE_INIT(&call->receiving_slice_ready, receiving_slice_ready, bctl,
1331
- grpc_schedule_on_exec_ctx);
1332
- continue_receiving_slices(bctl);
1199
+ GRPC_CLOSURE_INIT(
1200
+ &call->receiving_slice_ready_,
1201
+ [](void* bctl, grpc_error_handle error) {
1202
+ static_cast<BatchControl*>(bctl)->ReceivingSliceReady(error);
1203
+ },
1204
+ this, grpc_schedule_on_exec_ctx);
1205
+ ContinueReceivingSlices();
1333
1206
  }
1334
1207
  }
1335
1208
 
1336
- static void receiving_stream_ready(void* bctlp, grpc_error* error) {
1337
- batch_control* bctl = static_cast<batch_control*>(bctlp);
1338
- grpc_call* call = bctl->call;
1209
+ void FilterStackCall::BatchControl::ReceivingStreamReady(
1210
+ grpc_error_handle error) {
1211
+ FilterStackCall* call = call_;
1339
1212
  if (error != GRPC_ERROR_NONE) {
1340
- call->receiving_stream.reset();
1341
- if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1342
- GRPC_ERROR_NONE) {
1343
- gpr_atm_rel_store(&bctl->batch_error,
1344
- reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1213
+ call->receiving_stream_.reset();
1214
+ if (batch_error_.ok()) {
1215
+ batch_error_.set(error);
1345
1216
  }
1346
- cancel_with_error(call, GRPC_ERROR_REF(error));
1217
+ call->CancelWithError(GRPC_ERROR_REF(error));
1347
1218
  }
1348
- /* If recv_state is RECV_NONE, we will save the batch_control
1219
+ /* If recv_state is kRecvNone, we will save the batch_control
1349
1220
  * object with rel_cas, and will not use it after the cas. Its corresponding
1350
1221
  * acq_load is in receiving_initial_metadata_ready() */
1351
- if (error != GRPC_ERROR_NONE || call->receiving_stream == nullptr ||
1352
- !gpr_atm_rel_cas(&call->recv_state, RECV_NONE, (gpr_atm)bctlp)) {
1353
- process_data_after_md(bctl);
1222
+ if (error != GRPC_ERROR_NONE || call->receiving_stream_ == nullptr ||
1223
+ !gpr_atm_rel_cas(&call->recv_state_, kRecvNone,
1224
+ reinterpret_cast<gpr_atm>(this))) {
1225
+ ProcessDataAfterMetadata();
1354
1226
  }
1355
1227
  }
1356
1228
 
1357
- // The recv_message_ready callback used when sending a batch containing
1358
- // a recv_message op down the filter stack. Yields the call combiner
1359
- // before processing the received message.
1360
- static void receiving_stream_ready_in_call_combiner(void* bctlp,
1361
- grpc_error* error) {
1362
- batch_control* bctl = static_cast<batch_control*>(bctlp);
1363
- grpc_call* call = bctl->call;
1364
- GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready");
1365
- receiving_stream_ready(bctlp, error);
1366
- }
1367
-
1368
- static void GPR_ATTRIBUTE_NOINLINE
1369
- handle_both_stream_and_msg_compression_set(grpc_call* call) {
1370
- char* error_msg = nullptr;
1371
- gpr_asprintf(&error_msg,
1372
- "Incoming stream has both stream compression (%d) and message "
1373
- "compression (%d).",
1374
- call->incoming_stream_compression_algorithm,
1375
- call->incoming_message_compression_algorithm);
1376
- gpr_log(GPR_ERROR, "%s", error_msg);
1377
- cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg);
1378
- gpr_free(error_msg);
1379
- }
1380
-
1381
- static void GPR_ATTRIBUTE_NOINLINE
1382
- handle_error_parsing_compression_algorithm(grpc_call* call) {
1383
- char* error_msg = nullptr;
1384
- gpr_asprintf(&error_msg,
1385
- "Error in incoming message compression (%d) or stream "
1386
- "compression (%d).",
1387
- call->incoming_stream_compression_algorithm,
1388
- call->incoming_message_compression_algorithm);
1389
- cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg);
1390
- gpr_free(error_msg);
1391
- }
1392
-
1393
- static void GPR_ATTRIBUTE_NOINLINE handle_invalid_compression(
1394
- grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1395
- char* error_msg = nullptr;
1396
- gpr_asprintf(&error_msg, "Invalid compression algorithm value '%d'.",
1397
- compression_algorithm);
1398
- gpr_log(GPR_ERROR, "%s", error_msg);
1399
- cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg);
1400
- gpr_free(error_msg);
1401
- }
1402
-
1403
- static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_disabled(
1404
- grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1405
- char* error_msg = nullptr;
1229
+ void FilterStackCall::HandleCompressionAlgorithmDisabled(
1230
+ grpc_compression_algorithm compression_algorithm) {
1406
1231
  const char* algo_name = nullptr;
1407
1232
  grpc_compression_algorithm_name(compression_algorithm, &algo_name);
1408
- gpr_asprintf(&error_msg, "Compression algorithm '%s' is disabled.",
1409
- algo_name);
1410
- gpr_log(GPR_ERROR, "%s", error_msg);
1411
- cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg);
1412
- gpr_free(error_msg);
1233
+ std::string error_msg =
1234
+ absl::StrFormat("Compression algorithm '%s' is disabled.", algo_name);
1235
+ gpr_log(GPR_ERROR, "%s", error_msg.c_str());
1236
+ CancelWithStatus(GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
1413
1237
  }
1414
1238
 
1415
- static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_not_accepted(
1416
- grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1239
+ void FilterStackCall::HandleCompressionAlgorithmNotAccepted(
1240
+ grpc_compression_algorithm compression_algorithm) {
1417
1241
  const char* algo_name = nullptr;
1418
1242
  grpc_compression_algorithm_name(compression_algorithm, &algo_name);
1419
1243
  gpr_log(GPR_ERROR,
1420
- "Compression algorithm ('%s') not present in the bitset of "
1421
- "accepted encodings ('0x%x')",
1422
- algo_name, call->encodings_accepted_by_peer);
1423
- }
1424
-
1425
- static void validate_filtered_metadata(batch_control* bctl) {
1426
- grpc_compression_algorithm compression_algorithm;
1427
- grpc_call* call = bctl->call;
1428
- if (GPR_UNLIKELY(call->incoming_stream_compression_algorithm !=
1429
- GRPC_STREAM_COMPRESS_NONE &&
1430
- call->incoming_message_compression_algorithm !=
1431
- GRPC_MESSAGE_COMPRESS_NONE)) {
1432
- handle_both_stream_and_msg_compression_set(call);
1433
- } else if (
1434
- GPR_UNLIKELY(
1435
- grpc_compression_algorithm_from_message_stream_compression_algorithm(
1436
- &compression_algorithm,
1437
- call->incoming_message_compression_algorithm,
1438
- call->incoming_stream_compression_algorithm) == 0)) {
1439
- handle_error_parsing_compression_algorithm(call);
1440
- } else {
1441
- const grpc_compression_options compression_options =
1442
- grpc_channel_compression_options(call->channel);
1443
- if (GPR_UNLIKELY(compression_algorithm >= GRPC_COMPRESS_ALGORITHMS_COUNT)) {
1444
- handle_invalid_compression(call, compression_algorithm);
1445
- } else if (GPR_UNLIKELY(
1446
- grpc_compression_options_is_algorithm_enabled_internal(
1447
- &compression_options, compression_algorithm) == 0)) {
1448
- /* check if algorithm is supported by current channel config */
1449
- handle_compression_algorithm_disabled(call, compression_algorithm);
1450
- }
1451
- /* GRPC_COMPRESS_NONE is always set. */
1452
- GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer != 0);
1453
- if (GPR_UNLIKELY(!GPR_BITGET(call->encodings_accepted_by_peer,
1454
- compression_algorithm))) {
1455
- if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
1456
- handle_compression_algorithm_not_accepted(call, compression_algorithm);
1457
- }
1244
+ "Compression algorithm ('%s') not present in the "
1245
+ "accepted encodings (%s)",
1246
+ algo_name, encodings_accepted_by_peer_.ToString().c_str());
1247
+ }
1248
+
1249
+ void FilterStackCall::BatchControl::ValidateFilteredMetadata() {
1250
+ FilterStackCall* call = call_;
1251
+
1252
+ const grpc_compression_options compression_options =
1253
+ grpc_channel_compression_options(call->channel_);
1254
+ const grpc_compression_algorithm compression_algorithm =
1255
+ call->incoming_compression_algorithm_;
1256
+ if (GPR_UNLIKELY(!CompressionAlgorithmSet::FromUint32(
1257
+ compression_options.enabled_algorithms_bitset)
1258
+ .IsSet(compression_algorithm))) {
1259
+ /* check if algorithm is supported by current channel config */
1260
+ call->HandleCompressionAlgorithmDisabled(compression_algorithm);
1261
+ }
1262
+ /* GRPC_COMPRESS_NONE is always set. */
1263
+ GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE));
1264
+ if (GPR_UNLIKELY(
1265
+ !call->encodings_accepted_by_peer_.IsSet(compression_algorithm))) {
1266
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
1267
+ call->HandleCompressionAlgorithmNotAccepted(compression_algorithm);
1458
1268
  }
1459
1269
  }
1460
1270
  }
1461
1271
 
1462
- static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1463
- batch_control* bctl = static_cast<batch_control*>(bctlp);
1464
- grpc_call* call = bctl->call;
1272
+ void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
1273
+ grpc_error_handle error) {
1274
+ FilterStackCall* call = call_;
1465
1275
 
1466
- GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_initial_metadata_ready");
1276
+ GRPC_CALL_COMBINER_STOP(call->call_combiner(), "recv_initial_metadata_ready");
1467
1277
 
1468
1278
  if (error == GRPC_ERROR_NONE) {
1469
- grpc_metadata_batch* md =
1470
- &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1471
- recv_initial_filter(call, md);
1279
+ grpc_metadata_batch* md = &call->recv_initial_metadata_;
1280
+ call->RecvInitialFilter(md);
1472
1281
 
1473
1282
  /* TODO(ctiller): this could be moved into recv_initial_filter now */
1474
1283
  GPR_TIMER_SCOPE("validate_filtered_metadata", 0);
1475
- validate_filtered_metadata(bctl);
1284
+ ValidateFilteredMetadata();
1476
1285
 
1477
- if (md->deadline != GRPC_MILLIS_INF_FUTURE && !call->is_client) {
1478
- call->send_deadline = md->deadline;
1286
+ absl::optional<Timestamp> deadline = md->get(GrpcTimeoutMetadata());
1287
+ if (deadline.has_value() && !call->is_client()) {
1288
+ call_->set_send_deadline(*deadline);
1479
1289
  }
1480
1290
  } else {
1481
- if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1482
- GRPC_ERROR_NONE) {
1483
- gpr_atm_rel_store(&bctl->batch_error,
1484
- reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1291
+ if (batch_error_.ok()) {
1292
+ batch_error_.set(error);
1485
1293
  }
1486
- cancel_with_error(call, GRPC_ERROR_REF(error));
1294
+ call->CancelWithError(GRPC_ERROR_REF(error));
1487
1295
  }
1488
1296
 
1489
1297
  grpc_closure* saved_rsr_closure = nullptr;
1490
1298
  while (true) {
1491
- gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state);
1299
+ gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state_);
1492
1300
  /* Should only receive initial metadata once */
1493
1301
  GPR_ASSERT(rsr_bctlp != 1);
1494
1302
  if (rsr_bctlp == 0) {
@@ -1497,97 +1305,100 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1497
1305
  * no_barrier_cas is used, as this function won't access the batch_control
1498
1306
  * object saved by receiving_stream_ready() if the initial metadata is
1499
1307
  * received first. */
1500
- if (gpr_atm_no_barrier_cas(&call->recv_state, RECV_NONE,
1501
- RECV_INITIAL_METADATA_FIRST)) {
1308
+ if (gpr_atm_no_barrier_cas(&call->recv_state_, kRecvNone,
1309
+ kRecvInitialMetadataFirst)) {
1502
1310
  break;
1503
1311
  }
1504
1312
  } else {
1505
1313
  /* Already received messages */
1506
- saved_rsr_closure =
1507
- GRPC_CLOSURE_CREATE(receiving_stream_ready, (batch_control*)rsr_bctlp,
1508
- grpc_schedule_on_exec_ctx);
1314
+ saved_rsr_closure = GRPC_CLOSURE_CREATE(
1315
+ [](void* bctl, grpc_error_handle error) {
1316
+ static_cast<BatchControl*>(bctl)->ReceivingStreamReady(error);
1317
+ },
1318
+ reinterpret_cast<BatchControl*>(rsr_bctlp),
1319
+ grpc_schedule_on_exec_ctx);
1509
1320
  /* No need to modify recv_state */
1510
1321
  break;
1511
1322
  }
1512
1323
  }
1513
1324
  if (saved_rsr_closure != nullptr) {
1514
- grpc_core::Closure::Run(DEBUG_LOCATION, saved_rsr_closure,
1515
- GRPC_ERROR_REF(error));
1325
+ Closure::Run(DEBUG_LOCATION, saved_rsr_closure, GRPC_ERROR_REF(error));
1516
1326
  }
1517
1327
 
1518
- finish_batch_step(bctl);
1328
+ FinishStep();
1519
1329
  }
1520
1330
 
1521
- static void receiving_trailing_metadata_ready(void* bctlp, grpc_error* error) {
1522
- batch_control* bctl = static_cast<batch_control*>(bctlp);
1523
- grpc_call* call = bctl->call;
1524
- GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_trailing_metadata_ready");
1525
- grpc_metadata_batch* md =
1526
- &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1527
- recv_trailing_filter(call, md, GRPC_ERROR_REF(error));
1528
- finish_batch_step(bctl);
1331
+ void FilterStackCall::BatchControl::ReceivingTrailingMetadataReady(
1332
+ grpc_error_handle error) {
1333
+ GRPC_CALL_COMBINER_STOP(call_->call_combiner(),
1334
+ "recv_trailing_metadata_ready");
1335
+ grpc_metadata_batch* md = &call_->recv_trailing_metadata_;
1336
+ call_->RecvTrailingFilter(md, GRPC_ERROR_REF(error));
1337
+ FinishStep();
1529
1338
  }
1530
1339
 
1531
- static void finish_batch(void* bctlp, grpc_error* error) {
1532
- batch_control* bctl = static_cast<batch_control*>(bctlp);
1533
- grpc_call* call = bctl->call;
1534
- GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete");
1535
- if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1536
- GRPC_ERROR_NONE) {
1537
- gpr_atm_rel_store(&bctl->batch_error,
1538
- reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1340
+ void FilterStackCall::BatchControl::FinishBatch(grpc_error_handle error) {
1341
+ GRPC_CALL_COMBINER_STOP(call_->call_combiner(), "on_complete");
1342
+ if (batch_error_.ok()) {
1343
+ batch_error_.set(error);
1539
1344
  }
1540
1345
  if (error != GRPC_ERROR_NONE) {
1541
- cancel_with_error(call, GRPC_ERROR_REF(error));
1346
+ call_->CancelWithError(GRPC_ERROR_REF(error));
1542
1347
  }
1543
- finish_batch_step(bctl);
1348
+ FinishStep();
1544
1349
  }
1545
1350
 
1546
- static void free_no_op_completion(void* /*p*/, grpc_cq_completion* completion) {
1547
- gpr_free(completion);
1548
- }
1549
-
1550
- static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1551
- size_t nops, void* notify_tag,
1552
- int is_notify_tag_closure) {
1351
+ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
1352
+ void* notify_tag,
1353
+ bool is_notify_tag_closure) {
1553
1354
  GPR_TIMER_SCOPE("call_start_batch", 0);
1554
1355
 
1555
1356
  size_t i;
1556
1357
  const grpc_op* op;
1557
- batch_control* bctl;
1358
+ BatchControl* bctl;
1558
1359
  bool has_send_ops = false;
1559
1360
  int num_recv_ops = 0;
1560
1361
  grpc_call_error error = GRPC_CALL_OK;
1561
1362
  grpc_transport_stream_op_batch* stream_op;
1562
1363
  grpc_transport_stream_op_batch_payload* stream_op_payload;
1364
+ uint32_t seen_ops = 0;
1365
+
1366
+ for (i = 0; i < nops; i++) {
1367
+ if (seen_ops & (1u << ops[i].op)) {
1368
+ return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1369
+ }
1370
+ seen_ops |= (1u << ops[i].op);
1371
+ }
1563
1372
 
1564
1373
  GRPC_CALL_LOG_BATCH(GPR_INFO, ops, nops);
1565
1374
 
1566
1375
  if (nops == 0) {
1567
1376
  if (!is_notify_tag_closure) {
1568
- GPR_ASSERT(grpc_cq_begin_op(call->cq, notify_tag));
1569
- grpc_cq_end_op(call->cq, notify_tag, GRPC_ERROR_NONE,
1570
- free_no_op_completion, nullptr,
1571
- static_cast<grpc_cq_completion*>(
1572
- gpr_malloc(sizeof(grpc_cq_completion))));
1377
+ GPR_ASSERT(grpc_cq_begin_op(cq_, notify_tag));
1378
+ grpc_cq_end_op(
1379
+ cq_, notify_tag, GRPC_ERROR_NONE,
1380
+ [](void*, grpc_cq_completion* completion) { gpr_free(completion); },
1381
+ nullptr,
1382
+ static_cast<grpc_cq_completion*>(
1383
+ gpr_malloc(sizeof(grpc_cq_completion))));
1573
1384
  } else {
1574
- grpc_core::Closure::Run(DEBUG_LOCATION, (grpc_closure*)notify_tag,
1575
- GRPC_ERROR_NONE);
1385
+ Closure::Run(DEBUG_LOCATION, static_cast<grpc_closure*>(notify_tag),
1386
+ GRPC_ERROR_NONE);
1576
1387
  }
1577
1388
  error = GRPC_CALL_OK;
1578
1389
  goto done;
1579
1390
  }
1580
1391
 
1581
- bctl = reuse_or_allocate_batch_control(call, ops);
1392
+ bctl = ReuseOrAllocateBatchControl(ops);
1582
1393
  if (bctl == nullptr) {
1583
1394
  return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1584
1395
  }
1585
- bctl->completion_data.notify_tag.tag = notify_tag;
1586
- bctl->completion_data.notify_tag.is_closure =
1396
+ bctl->completion_data_.notify_tag.tag = notify_tag;
1397
+ bctl->completion_data_.notify_tag.is_closure =
1587
1398
  static_cast<uint8_t>(is_notify_tag_closure != 0);
1588
1399
 
1589
- stream_op = &bctl->op;
1590
- stream_op_payload = &call->stream_op_payload;
1400
+ stream_op = &bctl->op_;
1401
+ stream_op_payload = &stream_op_payload_;
1591
1402
 
1592
1403
  /* rewrite batch ops into a transport op */
1593
1404
  for (i = 0; i < nops; i++) {
@@ -1599,11 +1410,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1599
1410
  switch (op->op) {
1600
1411
  case GRPC_OP_SEND_INITIAL_METADATA: {
1601
1412
  /* Flag validation: currently allow no flags */
1602
- if (!are_initial_metadata_flags_valid(op->flags, call->is_client)) {
1413
+ if (!AreInitialMetadataFlagsValid(op->flags)) {
1603
1414
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1604
1415
  goto done_with_error;
1605
1416
  }
1606
- if (call->sent_initial_metadata) {
1417
+ if (sent_initial_metadata_) {
1607
1418
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1608
1419
  goto done_with_error;
1609
1420
  }
@@ -1612,11 +1423,6 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1612
1423
  // GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, we shouldn't override that
1613
1424
  // with the compression algorithm mapped from compression level.
1614
1425
  /* process compression level */
1615
- grpc_metadata& compression_md = call->compression_md;
1616
- compression_md.key = grpc_empty_slice();
1617
- compression_md.value = grpc_empty_slice();
1618
- compression_md.flags = 0;
1619
- size_t additional_metadata_count = 0;
1620
1426
  grpc_compression_level effective_compression_level =
1621
1427
  GRPC_COMPRESS_LEVEL_NONE;
1622
1428
  bool level_set = false;
@@ -1626,55 +1432,52 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1626
1432
  level_set = true;
1627
1433
  } else {
1628
1434
  const grpc_compression_options copts =
1629
- grpc_channel_compression_options(call->channel);
1435
+ grpc_channel_compression_options(channel_);
1630
1436
  if (copts.default_level.is_set) {
1631
1437
  level_set = true;
1632
1438
  effective_compression_level = copts.default_level.level;
1633
1439
  }
1634
1440
  }
1635
1441
  // Currently, only server side supports compression level setting.
1636
- if (level_set && !call->is_client) {
1442
+ if (level_set && !is_client()) {
1637
1443
  const grpc_compression_algorithm calgo =
1638
- compression_algorithm_for_level_locked(
1639
- call, effective_compression_level);
1444
+ encodings_accepted_by_peer_.CompressionAlgorithmForLevel(
1445
+ effective_compression_level);
1640
1446
  // The following metadata will be checked and removed by the message
1641
1447
  // compression filter. It will be used as the call's compression
1642
1448
  // algorithm.
1643
- compression_md.key = GRPC_MDSTR_GRPC_INTERNAL_ENCODING_REQUEST;
1644
- compression_md.value = grpc_compression_algorithm_slice(calgo);
1645
- additional_metadata_count++;
1449
+ send_initial_metadata_.Set(GrpcInternalEncodingRequest(), calgo);
1646
1450
  }
1647
- if (op->data.send_initial_metadata.count + additional_metadata_count >
1648
- INT_MAX) {
1451
+ if (op->data.send_initial_metadata.count > INT_MAX) {
1649
1452
  error = GRPC_CALL_ERROR_INVALID_METADATA;
1650
1453
  goto done_with_error;
1651
1454
  }
1652
1455
  stream_op->send_initial_metadata = true;
1653
- call->sent_initial_metadata = true;
1654
- if (!prepare_application_metadata(
1655
- call, static_cast<int>(op->data.send_initial_metadata.count),
1656
- op->data.send_initial_metadata.metadata, 0, call->is_client,
1657
- &compression_md, static_cast<int>(additional_metadata_count))) {
1456
+ sent_initial_metadata_ = true;
1457
+ if (!PrepareApplicationMetadata(op->data.send_initial_metadata.count,
1458
+ op->data.send_initial_metadata.metadata,
1459
+ false)) {
1658
1460
  error = GRPC_CALL_ERROR_INVALID_METADATA;
1659
1461
  goto done_with_error;
1660
1462
  }
1463
+ // Ignore any te metadata key value pairs specified.
1464
+ send_initial_metadata_.Remove(TeMetadata());
1661
1465
  /* TODO(ctiller): just make these the same variable? */
1662
- if (call->is_client) {
1663
- call->metadata_batch[0][0].deadline = call->send_deadline;
1466
+ if (is_client() && send_deadline() != Timestamp::InfFuture()) {
1467
+ send_initial_metadata_.Set(GrpcTimeoutMetadata(), send_deadline());
1664
1468
  }
1665
1469
  stream_op_payload->send_initial_metadata.send_initial_metadata =
1666
- &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */];
1470
+ &send_initial_metadata_;
1667
1471
  stream_op_payload->send_initial_metadata.send_initial_metadata_flags =
1668
1472
  op->flags;
1669
- if (call->is_client) {
1670
- stream_op_payload->send_initial_metadata.peer_string =
1671
- &call->peer_string;
1473
+ if (is_client()) {
1474
+ stream_op_payload->send_initial_metadata.peer_string = &peer_string_;
1672
1475
  }
1673
1476
  has_send_ops = true;
1674
1477
  break;
1675
1478
  }
1676
1479
  case GRPC_OP_SEND_MESSAGE: {
1677
- if (!are_write_flags_valid(op->flags)) {
1480
+ if (!AreWriteFlagsValid(op->flags)) {
1678
1481
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1679
1482
  goto done_with_error;
1680
1483
  }
@@ -1682,7 +1485,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1682
1485
  error = GRPC_CALL_ERROR_INVALID_MESSAGE;
1683
1486
  goto done_with_error;
1684
1487
  }
1685
- if (call->sending_message) {
1488
+ if (sending_message_) {
1686
1489
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1687
1490
  goto done_with_error;
1688
1491
  }
@@ -1695,11 +1498,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1695
1498
  flags |= GRPC_WRITE_INTERNAL_COMPRESS;
1696
1499
  }
1697
1500
  stream_op->send_message = true;
1698
- call->sending_message = true;
1699
- call->sending_stream.Init(
1501
+ sending_message_ = true;
1502
+ sending_stream_.Init(
1700
1503
  &op->data.send_message.send_message->data.raw.slice_buffer, flags);
1701
1504
  stream_op_payload->send_message.send_message.reset(
1702
- call->sending_stream.get());
1505
+ sending_stream_.get());
1703
1506
  has_send_ops = true;
1704
1507
  break;
1705
1508
  }
@@ -1709,18 +1512,18 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1709
1512
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1710
1513
  goto done_with_error;
1711
1514
  }
1712
- if (!call->is_client) {
1515
+ if (!is_client()) {
1713
1516
  error = GRPC_CALL_ERROR_NOT_ON_SERVER;
1714
1517
  goto done_with_error;
1715
1518
  }
1716
- if (call->sent_final_op) {
1519
+ if (sent_final_op_) {
1717
1520
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1718
1521
  goto done_with_error;
1719
1522
  }
1720
1523
  stream_op->send_trailing_metadata = true;
1721
- call->sent_final_op = true;
1524
+ sent_final_op_ = true;
1722
1525
  stream_op_payload->send_trailing_metadata.send_trailing_metadata =
1723
- &call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */];
1526
+ &send_trailing_metadata_;
1724
1527
  has_send_ops = true;
1725
1528
  break;
1726
1529
  }
@@ -1730,11 +1533,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1730
1533
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1731
1534
  goto done_with_error;
1732
1535
  }
1733
- if (call->is_client) {
1536
+ if (is_client()) {
1734
1537
  error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
1735
1538
  goto done_with_error;
1736
1539
  }
1737
- if (call->sent_final_op) {
1540
+ if (sent_final_op_) {
1738
1541
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1739
1542
  goto done_with_error;
1740
1543
  }
@@ -1744,12 +1547,16 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1744
1547
  goto done_with_error;
1745
1548
  }
1746
1549
  stream_op->send_trailing_metadata = true;
1747
- call->sent_final_op = true;
1748
- GPR_ASSERT(call->send_extra_metadata_count == 0);
1749
- call->send_extra_metadata_count = 1;
1750
- call->send_extra_metadata[0].md = grpc_get_reffed_status_elem(
1751
- op->data.send_status_from_server.status);
1752
- grpc_error* status_error =
1550
+ sent_final_op_ = true;
1551
+
1552
+ if (!PrepareApplicationMetadata(
1553
+ op->data.send_status_from_server.trailing_metadata_count,
1554
+ op->data.send_status_from_server.trailing_metadata, true)) {
1555
+ error = GRPC_CALL_ERROR_INVALID_METADATA;
1556
+ goto done_with_error;
1557
+ }
1558
+
1559
+ grpc_error_handle status_error =
1753
1560
  op->data.send_status_from_server.status == GRPC_STATUS_OK
1754
1561
  ? GRPC_ERROR_NONE
1755
1562
  : grpc_error_set_int(
@@ -1759,38 +1566,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1759
1566
  static_cast<intptr_t>(
1760
1567
  op->data.send_status_from_server.status));
1761
1568
  if (op->data.send_status_from_server.status_details != nullptr) {
1762
- call->send_extra_metadata[1].md = grpc_mdelem_from_slices(
1763
- GRPC_MDSTR_GRPC_MESSAGE,
1764
- grpc_slice_ref_internal(
1765
- *op->data.send_status_from_server.status_details));
1766
- call->send_extra_metadata_count++;
1569
+ send_trailing_metadata_.Set(
1570
+ GrpcMessageMetadata(),
1571
+ Slice(grpc_slice_copy(
1572
+ *op->data.send_status_from_server.status_details)));
1767
1573
  if (status_error != GRPC_ERROR_NONE) {
1768
- char* msg = grpc_slice_to_c_string(
1769
- GRPC_MDVALUE(call->send_extra_metadata[1].md));
1770
- status_error =
1771
- grpc_error_set_str(status_error, GRPC_ERROR_STR_GRPC_MESSAGE,
1772
- grpc_slice_from_copied_string(msg));
1773
- gpr_free(msg);
1574
+ status_error = grpc_error_set_str(
1575
+ status_error, GRPC_ERROR_STR_GRPC_MESSAGE,
1576
+ StringViewFromSlice(
1577
+ *op->data.send_status_from_server.status_details));
1774
1578
  }
1775
1579
  }
1776
1580
 
1777
- gpr_atm_rel_store(&call->status_error,
1778
- reinterpret_cast<gpr_atm>(status_error));
1779
- if (!prepare_application_metadata(
1780
- call,
1781
- static_cast<int>(
1782
- op->data.send_status_from_server.trailing_metadata_count),
1783
- op->data.send_status_from_server.trailing_metadata, 1, 1,
1784
- nullptr, 0)) {
1785
- for (int n = 0; n < call->send_extra_metadata_count; n++) {
1786
- GRPC_MDELEM_UNREF(call->send_extra_metadata[n].md);
1787
- }
1788
- call->send_extra_metadata_count = 0;
1789
- error = GRPC_CALL_ERROR_INVALID_METADATA;
1790
- goto done_with_error;
1791
- }
1581
+ status_error_.set(status_error);
1582
+ GRPC_ERROR_UNREF(status_error);
1583
+
1584
+ send_trailing_metadata_.Set(GrpcStatusMetadata(),
1585
+ op->data.send_status_from_server.status);
1586
+
1587
+ // Ignore any te metadata key value pairs specified.
1588
+ send_trailing_metadata_.Remove(TeMetadata());
1792
1589
  stream_op_payload->send_trailing_metadata.send_trailing_metadata =
1793
- &call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */];
1590
+ &send_trailing_metadata_;
1591
+ stream_op_payload->send_trailing_metadata.sent =
1592
+ &sent_server_trailing_metadata_;
1794
1593
  has_send_ops = true;
1795
1594
  break;
1796
1595
  }
@@ -1800,24 +1599,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1800
1599
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1801
1600
  goto done_with_error;
1802
1601
  }
1803
- if (call->received_initial_metadata) {
1602
+ if (received_initial_metadata_) {
1804
1603
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1805
1604
  goto done_with_error;
1806
1605
  }
1807
- call->received_initial_metadata = true;
1808
- call->buffered_metadata[0] =
1606
+ received_initial_metadata_ = true;
1607
+ buffered_metadata_[0] =
1809
1608
  op->data.recv_initial_metadata.recv_initial_metadata;
1810
- GRPC_CLOSURE_INIT(&call->receiving_initial_metadata_ready,
1811
- receiving_initial_metadata_ready, bctl,
1812
- grpc_schedule_on_exec_ctx);
1609
+ GRPC_CLOSURE_INIT(
1610
+ &receiving_initial_metadata_ready_,
1611
+ [](void* bctl, grpc_error_handle error) {
1612
+ static_cast<BatchControl*>(bctl)->ReceivingInitialMetadataReady(
1613
+ error);
1614
+ },
1615
+ bctl, grpc_schedule_on_exec_ctx);
1813
1616
  stream_op->recv_initial_metadata = true;
1814
1617
  stream_op_payload->recv_initial_metadata.recv_initial_metadata =
1815
- &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1618
+ &recv_initial_metadata_;
1816
1619
  stream_op_payload->recv_initial_metadata.recv_initial_metadata_ready =
1817
- &call->receiving_initial_metadata_ready;
1818
- if (!call->is_client) {
1819
- stream_op_payload->recv_initial_metadata.peer_string =
1820
- &call->peer_string;
1620
+ &receiving_initial_metadata_ready_;
1621
+ if (is_client()) {
1622
+ stream_op_payload->recv_initial_metadata.trailing_metadata_available =
1623
+ &is_trailers_only_;
1624
+ } else {
1625
+ stream_op_payload->recv_initial_metadata.peer_string = &peer_string_;
1821
1626
  }
1822
1627
  ++num_recv_ops;
1823
1628
  break;
@@ -1828,19 +1633,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1828
1633
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1829
1634
  goto done_with_error;
1830
1635
  }
1831
- if (call->receiving_message) {
1636
+ if (receiving_message_) {
1832
1637
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1833
1638
  goto done_with_error;
1834
1639
  }
1835
- call->receiving_message = true;
1640
+ receiving_message_ = true;
1836
1641
  stream_op->recv_message = true;
1837
- call->receiving_buffer = op->data.recv_message.recv_message;
1838
- stream_op_payload->recv_message.recv_message = &call->receiving_stream;
1839
- GRPC_CLOSURE_INIT(&call->receiving_stream_ready,
1840
- receiving_stream_ready_in_call_combiner, bctl,
1841
- grpc_schedule_on_exec_ctx);
1642
+ receiving_buffer_ = op->data.recv_message.recv_message;
1643
+ stream_op_payload->recv_message.recv_message = &receiving_stream_;
1644
+ stream_op_payload->recv_message.call_failed_before_recv_message =
1645
+ &call_failed_before_recv_message_;
1646
+ GRPC_CLOSURE_INIT(
1647
+ &receiving_stream_ready_,
1648
+ [](void* bctlp, grpc_error_handle error) {
1649
+ auto* bctl = static_cast<BatchControl*>(bctlp);
1650
+ auto* call = bctl->call_;
1651
+ // Yields the call combiner before processing the received
1652
+ // message.
1653
+ GRPC_CALL_COMBINER_STOP(call->call_combiner(),
1654
+ "recv_message_ready");
1655
+ bctl->ReceivingStreamReady(error);
1656
+ },
1657
+ bctl, grpc_schedule_on_exec_ctx);
1842
1658
  stream_op_payload->recv_message.recv_message_ready =
1843
- &call->receiving_stream_ready;
1659
+ &receiving_stream_ready_;
1844
1660
  ++num_recv_ops;
1845
1661
  break;
1846
1662
  }
@@ -1850,32 +1666,36 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1850
1666
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1851
1667
  goto done_with_error;
1852
1668
  }
1853
- if (!call->is_client) {
1669
+ if (!is_client()) {
1854
1670
  error = GRPC_CALL_ERROR_NOT_ON_SERVER;
1855
1671
  goto done_with_error;
1856
1672
  }
1857
- if (call->requested_final_op) {
1673
+ if (requested_final_op_) {
1858
1674
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1859
1675
  goto done_with_error;
1860
1676
  }
1861
- call->requested_final_op = true;
1862
- call->buffered_metadata[1] =
1677
+ requested_final_op_ = true;
1678
+ buffered_metadata_[1] =
1863
1679
  op->data.recv_status_on_client.trailing_metadata;
1864
- call->final_op.client.status = op->data.recv_status_on_client.status;
1865
- call->final_op.client.status_details =
1680
+ final_op_.client.status = op->data.recv_status_on_client.status;
1681
+ final_op_.client.status_details =
1866
1682
  op->data.recv_status_on_client.status_details;
1867
- call->final_op.client.error_string =
1683
+ final_op_.client.error_string =
1868
1684
  op->data.recv_status_on_client.error_string;
1869
1685
  stream_op->recv_trailing_metadata = true;
1870
1686
  stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
1871
- &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1687
+ &recv_trailing_metadata_;
1872
1688
  stream_op_payload->recv_trailing_metadata.collect_stats =
1873
- &call->final_info.stats.transport_stream_stats;
1874
- GRPC_CLOSURE_INIT(&call->receiving_trailing_metadata_ready,
1875
- receiving_trailing_metadata_ready, bctl,
1876
- grpc_schedule_on_exec_ctx);
1689
+ &final_info_.stats.transport_stream_stats;
1690
+ GRPC_CLOSURE_INIT(
1691
+ &receiving_trailing_metadata_ready_,
1692
+ [](void* bctl, grpc_error_handle error) {
1693
+ static_cast<BatchControl*>(bctl)->ReceivingTrailingMetadataReady(
1694
+ error);
1695
+ },
1696
+ bctl, grpc_schedule_on_exec_ctx);
1877
1697
  stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1878
- &call->receiving_trailing_metadata_ready;
1698
+ &receiving_trailing_metadata_ready_;
1879
1699
  ++num_recv_ops;
1880
1700
  break;
1881
1701
  }
@@ -1885,47 +1705,54 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1885
1705
  error = GRPC_CALL_ERROR_INVALID_FLAGS;
1886
1706
  goto done_with_error;
1887
1707
  }
1888
- if (call->is_client) {
1708
+ if (is_client()) {
1889
1709
  error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
1890
1710
  goto done_with_error;
1891
1711
  }
1892
- if (call->requested_final_op) {
1712
+ if (requested_final_op_) {
1893
1713
  error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1894
1714
  goto done_with_error;
1895
1715
  }
1896
- call->requested_final_op = true;
1897
- call->final_op.server.cancelled =
1898
- op->data.recv_close_on_server.cancelled;
1716
+ requested_final_op_ = true;
1717
+ final_op_.server.cancelled = op->data.recv_close_on_server.cancelled;
1899
1718
  stream_op->recv_trailing_metadata = true;
1900
1719
  stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
1901
- &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1720
+ &recv_trailing_metadata_;
1902
1721
  stream_op_payload->recv_trailing_metadata.collect_stats =
1903
- &call->final_info.stats.transport_stream_stats;
1904
- GRPC_CLOSURE_INIT(&call->receiving_trailing_metadata_ready,
1905
- receiving_trailing_metadata_ready, bctl,
1906
- grpc_schedule_on_exec_ctx);
1722
+ &final_info_.stats.transport_stream_stats;
1723
+ GRPC_CLOSURE_INIT(
1724
+ &receiving_trailing_metadata_ready_,
1725
+ [](void* bctl, grpc_error_handle error) {
1726
+ static_cast<BatchControl*>(bctl)->ReceivingTrailingMetadataReady(
1727
+ error);
1728
+ },
1729
+ bctl, grpc_schedule_on_exec_ctx);
1907
1730
  stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1908
- &call->receiving_trailing_metadata_ready;
1731
+ &receiving_trailing_metadata_ready_;
1909
1732
  ++num_recv_ops;
1910
1733
  break;
1911
1734
  }
1912
1735
  }
1913
1736
  }
1914
1737
 
1915
- GRPC_CALL_INTERNAL_REF(call, "completion");
1738
+ InternalRef("completion");
1916
1739
  if (!is_notify_tag_closure) {
1917
- GPR_ASSERT(grpc_cq_begin_op(call->cq, notify_tag));
1740
+ GPR_ASSERT(grpc_cq_begin_op(cq_, notify_tag));
1918
1741
  }
1919
1742
  bctl->set_num_steps_to_complete((has_send_ops ? 1 : 0) + num_recv_ops);
1920
1743
 
1921
1744
  if (has_send_ops) {
1922
- GRPC_CLOSURE_INIT(&bctl->finish_batch, finish_batch, bctl,
1923
- grpc_schedule_on_exec_ctx);
1924
- stream_op->on_complete = &bctl->finish_batch;
1745
+ GRPC_CLOSURE_INIT(
1746
+ &bctl->finish_batch_,
1747
+ [](void* bctl, grpc_error_handle error) {
1748
+ static_cast<BatchControl*>(bctl)->FinishBatch(error);
1749
+ },
1750
+ bctl, grpc_schedule_on_exec_ctx);
1751
+ stream_op->on_complete = &bctl->finish_batch_;
1925
1752
  }
1926
1753
 
1927
- gpr_atm_rel_store(&call->any_ops_sent_atm, 1);
1928
- execute_batch(call, stream_op, &bctl->start_batch);
1754
+ gpr_atm_rel_store(&any_ops_sent_atm_, 1);
1755
+ ExecuteBatch(stream_op, &bctl->start_batch_);
1929
1756
 
1930
1757
  done:
1931
1758
  return error;
@@ -1933,76 +1760,172 @@ done:
1933
1760
  done_with_error:
1934
1761
  /* reverse any mutations that occurred */
1935
1762
  if (stream_op->send_initial_metadata) {
1936
- call->sent_initial_metadata = false;
1937
- grpc_metadata_batch_clear(&call->metadata_batch[0][0]);
1763
+ sent_initial_metadata_ = false;
1764
+ send_initial_metadata_.Clear();
1938
1765
  }
1939
1766
  if (stream_op->send_message) {
1940
- call->sending_message = false;
1941
- call->sending_stream->Orphan();
1767
+ sending_message_ = false;
1768
+ // No need to invoke call->sending_stream->Orphan() explicitly.
1769
+ // stream_op_payload->send_message.send_message.reset() calls Deletor
1770
+ // of call->sending_stream which in-turn invokes the Orphan() method.
1771
+ stream_op_payload->send_message.send_message.reset();
1942
1772
  }
1943
1773
  if (stream_op->send_trailing_metadata) {
1944
- call->sent_final_op = false;
1945
- grpc_metadata_batch_clear(&call->metadata_batch[0][1]);
1774
+ sent_final_op_ = false;
1775
+ send_trailing_metadata_.Clear();
1946
1776
  }
1947
1777
  if (stream_op->recv_initial_metadata) {
1948
- call->received_initial_metadata = false;
1778
+ received_initial_metadata_ = false;
1949
1779
  }
1950
1780
  if (stream_op->recv_message) {
1951
- call->receiving_message = false;
1781
+ receiving_message_ = false;
1952
1782
  }
1953
1783
  if (stream_op->recv_trailing_metadata) {
1954
- call->requested_final_op = false;
1784
+ requested_final_op_ = false;
1955
1785
  }
1956
1786
  goto done;
1957
1787
  }
1958
1788
 
1789
+ void FilterStackCall::ContextSet(grpc_context_index elem, void* value,
1790
+ void (*destroy)(void*)) {
1791
+ if (context_[elem].destroy) {
1792
+ context_[elem].destroy(context_[elem].value);
1793
+ }
1794
+ context_[elem].value = value;
1795
+ context_[elem].destroy = destroy;
1796
+ }
1797
+
1798
+ } // namespace grpc_core
1799
+
1800
+ void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
1801
+ grpc_core::ExecCtx exec_ctx;
1802
+ return grpc_core::Call::FromC(call)->arena()->Alloc(size);
1803
+ }
1804
+
1805
+ size_t grpc_call_get_initial_size_estimate() {
1806
+ return grpc_core::FilterStackCall::InitialSizeEstimate();
1807
+ }
1808
+
1809
+ grpc_error_handle grpc_call_create(grpc_call_create_args* args,
1810
+ grpc_call** out_call) {
1811
+ return grpc_core::FilterStackCall::Create(args, out_call);
1812
+ }
1813
+
1814
+ void grpc_call_set_completion_queue(grpc_call* call,
1815
+ grpc_completion_queue* cq) {
1816
+ grpc_core::Call::FromC(call)->SetCompletionQueue(cq);
1817
+ }
1818
+
1819
+ void grpc_call_ref(grpc_call* c) { grpc_core::Call::FromC(c)->ExternalRef(); }
1820
+
1821
+ void grpc_call_unref(grpc_call* c) {
1822
+ grpc_core::Call::FromC(c)->ExternalUnref();
1823
+ }
1824
+
1825
+ char* grpc_call_get_peer(grpc_call* call) {
1826
+ return grpc_core::Call::FromC(call)->GetPeer();
1827
+ }
1828
+
1829
+ grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
1830
+ return grpc_core::FilterStackCall::FromTopElem(surface_element)->c_ptr();
1831
+ }
1832
+
1833
+ grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
1834
+ GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
1835
+ GPR_ASSERT(reserved == nullptr);
1836
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1837
+ grpc_core::ExecCtx exec_ctx;
1838
+ grpc_core::Call::FromC(call)->CancelWithError(GRPC_ERROR_CANCELLED);
1839
+ return GRPC_CALL_OK;
1840
+ }
1841
+
1842
+ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
1843
+ grpc_status_code status,
1844
+ const char* description,
1845
+ void* reserved) {
1846
+ GRPC_API_TRACE(
1847
+ "grpc_call_cancel_with_status("
1848
+ "c=%p, status=%d, description=%s, reserved=%p)",
1849
+ 4, (c, (int)status, description, reserved));
1850
+ GPR_ASSERT(reserved == nullptr);
1851
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1852
+ grpc_core::ExecCtx exec_ctx;
1853
+ grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
1854
+ return GRPC_CALL_OK;
1855
+ }
1856
+
1857
+ void grpc_call_cancel_internal(grpc_call* call) {
1858
+ grpc_core::Call::FromC(call)->CancelWithError(GRPC_ERROR_CANCELLED);
1859
+ }
1860
+
1861
+ grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
1862
+ grpc_call* call) {
1863
+ return grpc_core::Call::FromC(call)->test_only_compression_algorithm();
1864
+ }
1865
+
1866
+ uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
1867
+ return grpc_core::Call::FromC(call)->test_only_message_flags();
1868
+ }
1869
+
1870
+ uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
1871
+ return grpc_core::Call::FromC(call)->test_only_encodings_accepted_by_peer();
1872
+ }
1873
+
1874
+ grpc_core::Arena* grpc_call_get_arena(grpc_call* call) {
1875
+ return grpc_core::Call::FromC(call)->arena();
1876
+ }
1877
+
1878
+ grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
1879
+ return grpc_core::Call::FromC(call)->call_stack();
1880
+ }
1881
+
1959
1882
  grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
1960
1883
  size_t nops, void* tag, void* reserved) {
1961
- grpc_call_error err;
1962
-
1963
1884
  GRPC_API_TRACE(
1964
1885
  "grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, "
1965
1886
  "reserved=%p)",
1966
1887
  5, (call, ops, (unsigned long)nops, tag, reserved));
1967
1888
 
1968
1889
  if (reserved != nullptr) {
1969
- err = GRPC_CALL_ERROR;
1890
+ return GRPC_CALL_ERROR;
1970
1891
  } else {
1971
1892
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1972
1893
  grpc_core::ExecCtx exec_ctx;
1973
- err = call_start_batch(call, ops, nops, tag, 0);
1894
+ return grpc_core::Call::FromC(call)->StartBatch(ops, nops, tag, false);
1974
1895
  }
1975
-
1976
- return err;
1977
1896
  }
1978
1897
 
1979
1898
  grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
1980
1899
  const grpc_op* ops,
1981
1900
  size_t nops,
1982
1901
  grpc_closure* closure) {
1983
- return call_start_batch(call, ops, nops, closure, 1);
1902
+ return grpc_core::Call::FromC(call)->StartBatch(ops, nops, closure, true);
1984
1903
  }
1985
1904
 
1986
1905
  void grpc_call_context_set(grpc_call* call, grpc_context_index elem,
1987
1906
  void* value, void (*destroy)(void* value)) {
1988
- if (call->context[elem].destroy) {
1989
- call->context[elem].destroy(call->context[elem].value);
1990
- }
1991
- call->context[elem].value = value;
1992
- call->context[elem].destroy = destroy;
1907
+ return grpc_core::Call::FromC(call)->ContextSet(elem, value, destroy);
1993
1908
  }
1994
1909
 
1995
1910
  void* grpc_call_context_get(grpc_call* call, grpc_context_index elem) {
1996
- return call->context[elem].value;
1911
+ return grpc_core::Call::FromC(call)->ContextGet(elem);
1997
1912
  }
1998
1913
 
1999
- uint8_t grpc_call_is_client(grpc_call* call) { return call->is_client; }
1914
+ uint8_t grpc_call_is_client(grpc_call* call) {
1915
+ return grpc_core::Call::FromC(call)->is_client();
1916
+ }
2000
1917
 
2001
1918
  grpc_compression_algorithm grpc_call_compression_for_level(
2002
1919
  grpc_call* call, grpc_compression_level level) {
2003
- grpc_compression_algorithm algo =
2004
- compression_algorithm_for_level_locked(call, level);
2005
- return algo;
1920
+ return grpc_core::Call::FromC(call)->compression_for_level(level);
1921
+ }
1922
+
1923
+ bool grpc_call_is_trailers_only(const grpc_call* call) {
1924
+ return grpc_core::Call::FromC(call)->is_trailers_only();
1925
+ }
1926
+
1927
+ int grpc_call_failed_before_recv_message(const grpc_call* c) {
1928
+ return grpc_core::Call::FromC(c)->failed_before_recv_message();
2006
1929
  }
2007
1930
 
2008
1931
  const char* grpc_call_error_to_string(grpc_call_error error) {