grpc 1.35.0 → 1.47.0

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 (2272) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +617 -386
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/event_engine/README.md +38 -0
  7. data/include/grpc/event_engine/endpoint_config.h +43 -0
  8. data/include/grpc/event_engine/event_engine.h +434 -0
  9. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  10. data/include/grpc/event_engine/memory_allocator.h +211 -0
  11. data/include/grpc/event_engine/memory_request.h +57 -0
  12. data/include/grpc/event_engine/port.h +39 -0
  13. data/include/grpc/event_engine/slice.h +286 -0
  14. data/include/grpc/event_engine/slice_buffer.h +112 -0
  15. data/include/grpc/fork.h +1 -1
  16. data/include/grpc/grpc.h +76 -19
  17. data/include/grpc/grpc_posix.h +22 -18
  18. data/include/grpc/grpc_security.h +378 -195
  19. data/include/grpc/grpc_security_constants.h +17 -14
  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 +2 -0
  24. data/include/grpc/impl/codegen/byte_buffer.h +2 -0
  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 +68 -41
  32. data/include/grpc/impl/codegen/log.h +2 -0
  33. data/include/grpc/impl/codegen/port_platform.h +162 -35
  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 +2 -0
  43. data/include/grpc/module.modulemap +14 -14
  44. data/include/grpc/slice.h +1 -12
  45. data/include/grpc/status.h +1 -1
  46. data/include/grpc/support/atm.h +1 -1
  47. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  48. data/include/grpc/support/atm_gcc_sync.h +1 -1
  49. data/include/grpc/support/atm_windows.h +1 -1
  50. data/include/grpc/support/log.h +1 -1
  51. data/include/grpc/support/port_platform.h +1 -1
  52. data/include/grpc/support/sync.h +1 -1
  53. data/include/grpc/support/sync_abseil.h +1 -1
  54. data/include/grpc/support/sync_custom.h +1 -1
  55. data/include/grpc/support/sync_generic.h +1 -1
  56. data/include/grpc/support/sync_posix.h +1 -1
  57. data/include/grpc/support/sync_windows.h +1 -1
  58. data/include/grpc/support/time.h +2 -2
  59. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  60. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +297 -0
  61. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +125 -0
  62. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  63. data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
  64. data/src/core/ext/filters/client_channel/backend_metric.cc +32 -30
  65. data/src/core/ext/filters/client_channel/backend_metric.h +19 -8
  66. data/src/core/ext/filters/client_channel/backup_poller.cc +22 -17
  67. data/src/core/ext/filters/client_channel/backup_poller.h +2 -3
  68. data/src/core/ext/filters/client_channel/channel_connectivity.cc +181 -203
  69. data/src/core/ext/filters/client_channel/client_channel.cc +1429 -3634
  70. data/src/core/ext/filters/client_channel/client_channel.h +583 -56
  71. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -7
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.h +14 -4
  73. data/src/core/ext/filters/client_channel/client_channel_factory.cc +7 -1
  74. data/src/core/ext/filters/client_channel/client_channel_factory.h +26 -19
  75. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -31
  76. data/src/core/ext/filters/client_channel/config_selector.cc +3 -1
  77. data/src/core/ext/filters/client_channel/config_selector.h +37 -15
  78. data/src/core/ext/filters/client_channel/connector.h +28 -22
  79. data/src/core/ext/filters/client_channel/dynamic_filters.cc +35 -21
  80. data/src/core/ext/filters/client_channel/dynamic_filters.h +16 -6
  81. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -163
  82. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +19 -24
  83. data/src/core/ext/filters/client_channel/health/health_check_client.cc +141 -581
  84. data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -158
  85. data/src/core/ext/filters/client_channel/http_proxy.cc +110 -109
  86. data/src/core/ext/filters/client_channel/http_proxy.h +20 -0
  87. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +10 -5
  88. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  89. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  90. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +18 -2
  91. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +21 -27
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +350 -213
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +5 -1
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -4
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +11 -4
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -19
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +10 -7
  101. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
  102. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  103. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
  104. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  105. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +144 -111
  106. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +334 -245
  107. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +865 -0
  108. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +39 -0
  109. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2577 -0
  110. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +205 -195
  111. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +55 -47
  112. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +146 -89
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +418 -275
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +7 -1
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +219 -133
  117. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +84 -76
  118. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +532 -515
  119. data/src/core/ext/filters/client_channel/lb_policy.cc +21 -29
  120. data/src/core/ext/filters/client_channel/lb_policy.h +168 -141
  121. data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -1
  122. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +16 -12
  123. data/src/core/ext/filters/client_channel/lb_policy_registry.h +7 -2
  124. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +31 -67
  125. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +11 -9
  126. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  127. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
  128. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  129. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +151 -0
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +396 -336
  131. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +31 -13
  132. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +33 -26
  133. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +55 -71
  134. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +220 -332
  135. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +52 -30
  136. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +4 -3
  137. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  138. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  139. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +118 -245
  140. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +70 -73
  141. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +14 -8
  142. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +446 -0
  143. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +213 -0
  144. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +113 -0
  145. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +59 -54
  146. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +786 -452
  147. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +46 -263
  148. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +43 -60
  149. data/src/core/ext/filters/client_channel/retry_filter.cc +2695 -0
  150. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  151. data/src/core/ext/filters/client_channel/retry_service_config.cc +313 -0
  152. data/src/core/ext/filters/client_channel/retry_service_config.h +111 -0
  153. data/src/core/ext/filters/client_channel/retry_throttle.cc +14 -66
  154. data/src/core/ext/filters/client_channel/retry_throttle.h +18 -6
  155. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +72 -40
  156. data/src/core/ext/filters/client_channel/subchannel.cc +319 -464
  157. data/src/core/ext/filters/client_channel/subchannel.h +163 -154
  158. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
  159. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  160. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +48 -9
  161. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +26 -12
  162. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +558 -0
  163. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +226 -0
  164. data/src/core/ext/filters/deadline/deadline_filter.cc +45 -43
  165. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  166. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +255 -0
  167. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +62 -0
  168. data/src/core/ext/filters/fault_injection/service_config_parser.cc +179 -0
  169. data/src/core/ext/filters/fault_injection/service_config_parser.h +91 -0
  170. data/src/core/ext/filters/http/client/http_client_filter.cc +92 -538
  171. data/src/core/ext/filters/http/client/http_client_filter.h +27 -4
  172. data/src/core/ext/filters/http/client_authority_filter.cc +42 -111
  173. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  174. data/src/core/ext/filters/http/http_filters_plugin.cc +54 -73
  175. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +68 -157
  176. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -56
  177. data/src/core/ext/filters/http/server/http_server_filter.cc +91 -464
  178. data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
  179. data/src/core/ext/filters/message_size/message_size_filter.cc +78 -90
  180. data/src/core/ext/filters/message_size/message_size_filter.h +13 -6
  181. data/src/core/ext/filters/rbac/rbac_filter.cc +163 -0
  182. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  183. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  184. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  185. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
  186. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  187. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
  188. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
  189. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  190. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +285 -86
  191. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +15 -13
  192. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +778 -235
  193. data/src/core/ext/transport/chttp2/server/chttp2_server.h +13 -2
  194. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -5
  195. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -1
  196. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +2 -0
  197. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +604 -489
  198. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +29 -5
  199. data/src/core/ext/transport/chttp2/transport/context_list.cc +8 -6
  200. data/src/core/ext/transport/chttp2/transport/context_list.h +7 -6
  201. data/src/core/ext/transport/chttp2/transport/flow_control.cc +72 -49
  202. data/src/core/ext/transport/chttp2/transport/flow_control.h +33 -23
  203. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  204. data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -26
  205. data/src/core/ext/transport/chttp2/transport/frame_data.h +15 -11
  206. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +24 -20
  207. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -7
  208. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +22 -17
  209. data/src/core/ext/transport/chttp2/transport/frame_ping.h +11 -6
  210. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +23 -17
  211. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -6
  212. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +63 -20
  213. data/src/core/ext/transport/chttp2/transport/frame_settings.h +11 -6
  214. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +20 -14
  215. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +8 -6
  216. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  217. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +526 -757
  218. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +198 -73
  219. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +89 -0
  220. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +74 -0
  221. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +836 -1200
  222. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +109 -84
  223. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +257 -0
  224. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +132 -0
  225. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  226. data/src/core/ext/transport/chttp2/transport/internal.h +80 -79
  227. data/src/core/ext/transport/chttp2/transport/parsing.cc +192 -299
  228. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +15 -11
  229. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  230. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  231. data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
  232. data/src/core/ext/transport/chttp2/transport/varint.h +41 -28
  233. data/src/core/ext/transport/chttp2/transport/writing.cc +169 -173
  234. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  235. data/src/core/ext/transport/inproc/inproc_transport.cc +190 -216
  236. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  237. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  238. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  239. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  240. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  241. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +444 -0
  242. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2156 -0
  243. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  244. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  245. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  246. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  247. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  248. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  249. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  250. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  251. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  252. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  253. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  254. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  255. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  256. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  257. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  258. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +52 -1
  259. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  260. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +57 -18
  261. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +144 -118
  262. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +761 -386
  263. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +411 -0
  264. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2161 -0
  265. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +50 -29
  266. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +224 -95
  267. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +341 -256
  268. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1943 -800
  269. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
  270. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +50 -24
  271. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +61 -27
  272. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +291 -95
  273. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  274. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  275. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +75 -54
  276. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +398 -190
  277. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -8
  278. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +53 -25
  279. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +252 -143
  280. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1285 -493
  281. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +107 -47
  282. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +562 -172
  283. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
  284. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +46 -24
  285. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +17 -23
  286. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +49 -95
  287. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  288. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  289. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +146 -118
  290. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +853 -415
  291. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +142 -92
  292. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +807 -340
  293. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
  294. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +65 -31
  295. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +235 -89
  296. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1244 -288
  297. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -6
  298. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +36 -17
  299. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +169 -0
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +83 -34
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +30 -10
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +118 -32
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +118 -0
  307. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -37
  308. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +214 -109
  309. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +92 -39
  310. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +449 -131
  311. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
  312. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +389 -188
  313. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
  314. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +42 -21
  315. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +105 -68
  316. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +616 -242
  317. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +106 -75
  318. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +637 -287
  319. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
  320. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +234 -0
  321. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +27 -12
  322. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +96 -49
  323. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  324. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  325. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
  326. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +716 -0
  327. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
  328. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +721 -0
  329. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +131 -100
  330. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +628 -282
  331. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -25
  332. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +338 -115
  333. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +688 -537
  334. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4135 -1819
  335. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -20
  336. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +168 -72
  337. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  338. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  339. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  340. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  341. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  342. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  343. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -15
  344. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +91 -46
  345. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  346. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  347. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  348. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  349. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  350. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  351. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  352. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  353. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  354. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  355. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  356. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  357. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  358. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  359. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
  360. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +85 -0
  361. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
  362. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +375 -0
  363. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
  364. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +433 -0
  365. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  366. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  367. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
  368. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +168 -0
  369. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +301 -202
  370. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1794 -663
  371. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -2
  372. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +7 -4
  373. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +114 -49
  374. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +652 -198
  375. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +43 -31
  376. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +176 -104
  377. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +128 -84
  378. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +673 -259
  379. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  380. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  381. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
  382. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +29 -15
  383. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +99 -73
  384. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +550 -282
  385. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -19
  386. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +121 -62
  387. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
  388. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +631 -0
  389. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  390. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  391. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  392. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +249 -0
  393. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  394. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  395. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +29 -14
  396. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +116 -56
  397. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
  398. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +117 -0
  399. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
  400. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +56 -27
  401. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
  402. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +46 -24
  403. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +37 -21
  404. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +137 -69
  405. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -19
  406. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +137 -65
  407. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
  408. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +170 -0
  409. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
  410. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +170 -83
  411. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
  412. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +273 -145
  413. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
  414. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +268 -132
  415. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  416. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  417. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +10 -1
  418. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +4 -1
  419. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  420. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  421. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +24 -10
  422. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +76 -36
  423. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
  424. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +118 -52
  425. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  426. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  427. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -7
  428. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -19
  429. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  430. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  431. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  432. data/src/core/ext/upb-generated/google/api/annotations.upb.h +24 -1
  433. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +155 -126
  434. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +791 -385
  435. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +167 -118
  436. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +886 -390
  437. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  438. data/src/core/ext/upb-generated/google/api/http.upb.h +236 -115
  439. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  440. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  441. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  442. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +46 -22
  443. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
  444. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2263 -1053
  445. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  446. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +44 -20
  447. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  448. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +29 -15
  449. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  450. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +197 -93
  451. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  452. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +44 -20
  453. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  454. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +296 -149
  455. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  456. data/src/core/ext/upb-generated/google/rpc/status.upb.h +60 -30
  457. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  458. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  459. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  460. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +111 -48
  461. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
  462. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +753 -365
  463. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
  464. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +90 -41
  465. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  466. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +70 -35
  467. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  468. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +448 -232
  469. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  470. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
  471. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  472. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  473. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  474. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +213 -57
  475. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +32 -8
  476. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +62 -18
  477. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  478. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +17 -1
  479. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  480. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -20
  481. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
  482. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +57 -18
  483. data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
  484. data/src/core/ext/upb-generated/validate/validate.upb.h +3021 -1221
  485. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  486. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  487. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  488. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  489. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  490. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  491. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  492. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
  493. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  494. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  495. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
  496. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +79 -0
  497. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
  498. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +200 -0
  499. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
  500. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +115 -0
  501. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  502. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  503. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
  504. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +127 -0
  505. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
  506. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +240 -0
  507. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
  508. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +121 -0
  509. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
  510. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
  511. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  512. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  513. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  514. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  515. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  516. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  517. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  518. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  519. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
  520. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
  521. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  522. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  523. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  524. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  525. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +309 -0
  526. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  527. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  528. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  529. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  530. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  531. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  532. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  533. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  534. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  535. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  536. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  537. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  538. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  539. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  540. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  541. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +22 -12
  542. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  543. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
  544. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  545. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +183 -215
  546. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  547. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +393 -0
  548. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  549. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
  550. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  551. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +497 -498
  552. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +80 -70
  553. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
  554. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  555. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +28 -23
  556. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  557. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  558. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  559. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
  560. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  561. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
  562. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  563. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +225 -224
  564. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +83 -58
  565. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -115
  566. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  567. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
  568. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  569. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
  570. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  571. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  572. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  573. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
  574. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  575. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +182 -187
  576. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  577. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
  578. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  579. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +267 -197
  580. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +61 -31
  581. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +15 -20
  582. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  583. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  584. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  585. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
  586. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  587. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +46 -31
  588. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  589. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  590. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  591. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +69 -80
  592. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  593. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +98 -83
  594. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +23 -13
  595. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
  596. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  597. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
  598. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  599. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +157 -150
  600. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +21 -16
  601. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -150
  602. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  603. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +40 -39
  606. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  607. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  614. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  615. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +85 -67
  616. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +12 -7
  617. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +826 -845
  618. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +166 -151
  619. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
  620. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  621. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  623. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  624. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  625. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  626. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  627. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +32 -39
  628. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  629. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  630. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  631. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  632. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  633. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  634. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  635. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  636. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  637. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  638. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  639. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  640. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  641. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  642. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  643. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -0
  644. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  645. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
  646. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  647. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
  648. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  649. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  650. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  651. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -0
  652. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  653. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +428 -388
  654. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +67 -52
  655. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +22 -22
  656. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  657. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +174 -130
  658. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +26 -16
  659. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +57 -71
  660. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  661. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +217 -212
  662. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  663. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  664. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  665. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
  666. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  667. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +99 -123
  668. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +24 -19
  669. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +19 -26
  670. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  671. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +153 -0
  672. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  673. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  674. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  675. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  676. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  677. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  678. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  679. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +24 -27
  680. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  681. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +54 -0
  682. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  683. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
  684. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  685. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
  686. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  687. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +45 -48
  688. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  689. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +40 -47
  690. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  691. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +58 -0
  692. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  693. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
  694. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  695. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
  696. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  697. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
  698. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  699. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  700. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  701. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
  702. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  703. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  704. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  705. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
  706. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  707. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
  708. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  709. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  710. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  711. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
  712. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  713. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  714. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  715. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
  716. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  717. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  718. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  719. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  720. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  721. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
  722. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  723. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  724. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  725. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
  726. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  727. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +107 -164
  728. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  729. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
  730. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  731. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
  732. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  733. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
  734. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  735. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
  736. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  737. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
  738. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  739. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +9 -14
  740. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  741. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  742. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  743. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  744. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  745. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +10 -18
  746. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  747. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +24 -33
  748. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  749. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +9 -8
  750. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  751. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +10 -13
  752. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  753. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +10 -14
  754. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  755. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +189 -213
  756. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  757. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  758. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  759. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  760. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  761. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  762. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  763. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  764. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  765. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  766. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  767. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -0
  768. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  769. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
  770. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  771. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
  772. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  773. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  774. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  775. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -0
  776. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  777. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
  778. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  779. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
  780. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  781. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  782. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  783. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  784. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  785. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  786. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  787. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  788. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  789. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  790. data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
  791. data/src/core/ext/xds/certificate_provider_store.cc +10 -0
  792. data/src/core/ext/xds/certificate_provider_store.h +13 -4
  793. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +7 -7
  794. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +4 -4
  795. data/src/core/ext/xds/upb_utils.h +67 -0
  796. data/src/core/ext/xds/xds_api.cc +347 -1925
  797. data/src/core/ext/xds/xds_api.h +127 -405
  798. data/src/core/ext/xds/xds_bootstrap.cc +324 -274
  799. data/src/core/ext/xds/xds_bootstrap.h +61 -26
  800. data/src/core/ext/xds/xds_certificate_provider.cc +192 -81
  801. data/src/core/ext/xds/xds_certificate_provider.h +92 -45
  802. data/src/core/ext/xds/xds_channel_args.h +5 -2
  803. data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
  804. data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
  805. data/src/core/ext/xds/xds_client.cc +1166 -867
  806. data/src/core/ext/xds/xds_client.h +172 -160
  807. data/src/core/ext/xds/xds_client_stats.cc +31 -29
  808. data/src/core/ext/xds/xds_client_stats.h +17 -15
  809. data/src/core/ext/xds/xds_cluster.cc +543 -0
  810. data/src/core/ext/xds/xds_cluster.h +111 -0
  811. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  812. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  813. data/src/core/ext/xds/xds_common_types.cc +388 -0
  814. data/src/core/ext/xds/xds_common_types.h +95 -0
  815. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  816. data/src/core/ext/xds/xds_endpoint.h +135 -0
  817. data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
  818. data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
  819. data/src/core/ext/xds/xds_http_filters.cc +122 -0
  820. data/src/core/ext/xds/xds_http_filters.h +133 -0
  821. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  822. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  823. data/src/core/ext/xds/xds_listener.cc +1049 -0
  824. data/src/core/ext/xds/xds_listener.h +220 -0
  825. data/src/core/ext/xds/xds_resource_type.cc +33 -0
  826. data/src/core/ext/xds/xds_resource_type.h +98 -0
  827. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  828. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  829. data/src/core/ext/xds/xds_route_config.h +218 -0
  830. data/src/core/ext/xds/xds_routing.cc +250 -0
  831. data/src/core/ext/xds/xds_routing.h +101 -0
  832. data/src/core/ext/xds/xds_server_config_fetcher.cc +1250 -66
  833. data/src/core/lib/address_utils/parse_address.cc +340 -0
  834. data/src/core/lib/address_utils/parse_address.h +82 -0
  835. data/src/core/lib/address_utils/sockaddr_utils.cc +442 -0
  836. data/src/core/lib/address_utils/sockaddr_utils.h +98 -0
  837. data/src/core/lib/avl/avl.h +454 -88
  838. data/src/core/lib/backoff/backoff.cc +9 -38
  839. data/src/core/lib/backoff/backoff.h +11 -11
  840. data/src/core/lib/channel/call_finalization.h +90 -0
  841. data/src/core/lib/channel/call_tracer.h +94 -0
  842. data/src/core/lib/channel/channel_args.cc +212 -36
  843. data/src/core/lib/channel/channel_args.h +246 -3
  844. data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
  845. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  846. data/src/core/lib/channel/channel_stack.cc +77 -17
  847. data/src/core/lib/channel/channel_stack.h +105 -18
  848. data/src/core/lib/channel/channel_stack_builder.cc +19 -288
  849. data/src/core/lib/channel/channel_stack_builder.h +107 -158
  850. data/src/core/lib/channel/channel_stack_builder_impl.cc +97 -0
  851. data/src/core/lib/channel/channel_stack_builder_impl.h +45 -0
  852. data/src/core/lib/channel/channel_trace.cc +13 -20
  853. data/src/core/lib/channel/channel_trace.h +8 -4
  854. data/src/core/lib/channel/channelz.cc +156 -60
  855. data/src/core/lib/channel/channelz.h +73 -32
  856. data/src/core/lib/channel/channelz_registry.cc +27 -19
  857. data/src/core/lib/channel/channelz_registry.h +11 -10
  858. data/src/core/lib/channel/connected_channel.cc +30 -36
  859. data/src/core/lib/channel/connected_channel.h +3 -2
  860. data/src/core/lib/channel/context.h +14 -0
  861. data/src/core/lib/channel/promise_based_filter.cc +1257 -0
  862. data/src/core/lib/channel/promise_based_filter.h +570 -0
  863. data/src/core/lib/channel/status_util.cc +14 -2
  864. data/src/core/lib/channel/status_util.h +9 -3
  865. data/src/core/lib/compression/compression.cc +22 -114
  866. data/src/core/lib/compression/compression_internal.cc +173 -206
  867. data/src/core/lib/compression/compression_internal.h +64 -69
  868. data/src/core/lib/compression/message_compress.cc +13 -13
  869. data/src/core/lib/compression/message_compress.h +2 -2
  870. data/src/core/lib/config/core_configuration.cc +107 -0
  871. data/src/core/lib/config/core_configuration.h +197 -0
  872. data/src/core/lib/debug/stats.cc +1 -1
  873. data/src/core/lib/debug/stats.h +2 -1
  874. data/src/core/lib/debug/stats_data.cc +17 -20
  875. data/src/core/lib/debug/stats_data.h +19 -21
  876. data/src/core/lib/debug/trace.cc +1 -0
  877. data/src/core/lib/debug/trace.h +4 -3
  878. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +48 -0
  879. data/src/core/lib/event_engine/channel_args_endpoint_config.h +43 -0
  880. data/src/core/lib/event_engine/default_event_engine_factory.cc +33 -0
  881. data/src/core/lib/event_engine/event_engine.cc +62 -0
  882. data/src/core/lib/event_engine/event_engine_factory.h +41 -0
  883. data/src/core/lib/event_engine/handle_containers.h +67 -0
  884. data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
  885. data/src/core/lib/event_engine/iomgr_engine.h +118 -0
  886. data/src/core/lib/event_engine/memory_allocator.cc +74 -0
  887. data/src/core/lib/event_engine/resolved_address.cc +41 -0
  888. data/src/core/lib/event_engine/slice.cc +102 -0
  889. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  890. data/src/core/lib/event_engine/trace.cc +18 -0
  891. data/src/core/lib/event_engine/trace.h +30 -0
  892. data/src/core/lib/gpr/alloc.cc +4 -3
  893. data/src/core/lib/gpr/atm.cc +1 -1
  894. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  895. data/src/core/lib/gpr/env_linux.cc +1 -2
  896. data/src/core/lib/gpr/env_posix.cc +2 -3
  897. data/src/core/lib/gpr/log.cc +13 -3
  898. data/src/core/lib/gpr/log_android.cc +3 -2
  899. data/src/core/lib/gpr/log_linux.cc +7 -4
  900. data/src/core/lib/gpr/log_posix.cc +6 -3
  901. data/src/core/lib/gpr/murmur_hash.cc +4 -2
  902. data/src/core/lib/gpr/string.cc +2 -2
  903. data/src/core/lib/gpr/string.h +2 -2
  904. data/src/core/lib/gpr/sync.cc +2 -2
  905. data/src/core/lib/gpr/sync_abseil.cc +10 -12
  906. data/src/core/lib/gpr/sync_posix.cc +4 -3
  907. data/src/core/lib/gpr/sync_windows.cc +2 -2
  908. data/src/core/lib/gpr/time.cc +5 -3
  909. data/src/core/lib/gpr/time_windows.cc +3 -2
  910. data/src/core/lib/gpr/tls.h +124 -40
  911. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  912. data/src/core/lib/gpr/useful.h +97 -32
  913. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  914. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  915. data/src/core/lib/gprpp/bitset.h +211 -0
  916. data/src/core/lib/gprpp/chunked_vector.h +257 -0
  917. data/src/core/lib/gprpp/construct_destruct.h +40 -0
  918. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  919. data/src/core/lib/gprpp/debug_location.h +2 -0
  920. data/src/core/lib/gprpp/dual_ref_counted.h +27 -31
  921. data/src/core/lib/gprpp/examine_stack.h +0 -1
  922. data/src/core/lib/gprpp/fork.cc +17 -18
  923. data/src/core/lib/gprpp/fork.h +4 -4
  924. data/src/core/lib/gprpp/global_config.h +2 -5
  925. data/src/core/lib/gprpp/global_config_env.cc +16 -15
  926. data/src/core/lib/gprpp/global_config_env.h +5 -3
  927. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  928. data/src/core/lib/gprpp/host_port.cc +2 -0
  929. data/src/core/lib/gprpp/manual_constructor.h +11 -10
  930. data/src/core/lib/gprpp/match.h +75 -0
  931. data/src/core/lib/gprpp/memory.h +8 -6
  932. data/src/core/lib/gprpp/mpscq.cc +9 -9
  933. data/src/core/lib/gprpp/mpscq.h +6 -5
  934. data/src/core/lib/gprpp/orphanable.h +5 -8
  935. data/src/core/lib/gprpp/overload.h +59 -0
  936. data/src/core/lib/gprpp/ref_counted.h +49 -35
  937. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -5
  938. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  939. data/src/core/lib/gprpp/stat.h +0 -2
  940. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  941. data/src/core/lib/gprpp/status_helper.cc +439 -0
  942. data/src/core/lib/gprpp/status_helper.h +185 -0
  943. data/src/core/lib/gprpp/sync.h +109 -44
  944. data/src/core/lib/gprpp/table.h +444 -0
  945. data/src/core/lib/gprpp/thd.h +3 -6
  946. data/src/core/lib/gprpp/thd_posix.cc +9 -7
  947. data/src/core/lib/gprpp/thd_windows.cc +6 -11
  948. data/src/core/lib/gprpp/time.cc +206 -0
  949. data/src/core/lib/gprpp/time.h +297 -0
  950. data/src/core/lib/gprpp/time_util.cc +81 -0
  951. data/src/core/lib/gprpp/time_util.h +42 -0
  952. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  953. data/src/core/lib/http/format_request.cc +58 -25
  954. data/src/core/lib/http/format_request.h +10 -6
  955. data/src/core/lib/http/httpcli.cc +306 -209
  956. data/src/core/lib/http/httpcli.h +215 -85
  957. data/src/core/lib/http/httpcli_security_connector.cc +72 -83
  958. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  959. data/src/core/lib/http/parser.cc +98 -27
  960. data/src/core/lib/http/parser.h +20 -6
  961. data/src/core/lib/iomgr/buffer_list.cc +16 -17
  962. data/src/core/lib/iomgr/buffer_list.h +23 -25
  963. data/src/core/lib/iomgr/call_combiner.cc +55 -23
  964. data/src/core/lib/iomgr/call_combiner.h +12 -14
  965. data/src/core/lib/iomgr/cfstream_handle.cc +6 -6
  966. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  967. data/src/core/lib/iomgr/closure.h +33 -12
  968. data/src/core/lib/iomgr/combiner.cc +46 -36
  969. data/src/core/lib/iomgr/combiner.h +3 -2
  970. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  971. data/src/core/lib/iomgr/endpoint.cc +5 -9
  972. data/src/core/lib/iomgr/endpoint.h +9 -10
  973. data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -58
  974. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  975. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  976. data/src/core/lib/iomgr/endpoint_pair_posix.cc +12 -9
  977. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  978. data/src/core/lib/iomgr/error.cc +270 -99
  979. data/src/core/lib/iomgr/error.h +278 -114
  980. data/src/core/lib/iomgr/error_cfstream.cc +10 -4
  981. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  982. data/src/core/lib/iomgr/error_internal.h +6 -1
  983. data/src/core/lib/iomgr/ev_apple.cc +19 -15
  984. data/src/core/lib/iomgr/ev_apple.h +1 -1
  985. data/src/core/lib/iomgr/ev_epoll1_linux.cc +45 -51
  986. data/src/core/lib/iomgr/ev_poll_posix.cc +73 -73
  987. data/src/core/lib/iomgr/ev_posix.cc +22 -26
  988. data/src/core/lib/iomgr/ev_posix.h +9 -9
  989. data/src/core/lib/iomgr/exec_ctx.cc +29 -98
  990. data/src/core/lib/iomgr/exec_ctx.h +32 -58
  991. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  992. data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
  993. data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
  994. data/src/core/lib/iomgr/executor/threadpool.h +4 -3
  995. data/src/core/lib/iomgr/executor.cc +37 -46
  996. data/src/core/lib/iomgr/executor.h +3 -3
  997. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  998. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  999. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  1000. data/src/core/lib/iomgr/internal_errqueue.cc +41 -49
  1001. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  1002. data/src/core/lib/iomgr/iocp_windows.cc +10 -9
  1003. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  1004. data/src/core/lib/iomgr/iomgr.cc +5 -4
  1005. data/src/core/lib/iomgr/iomgr.h +3 -3
  1006. data/src/core/lib/iomgr/iomgr_fwd.h +25 -0
  1007. data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
  1008. data/src/core/lib/iomgr/iomgr_internal.h +6 -5
  1009. data/src/core/lib/iomgr/iomgr_posix.cc +5 -4
  1010. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -15
  1011. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1012. data/src/core/lib/iomgr/load_file.cc +6 -6
  1013. data/src/core/lib/iomgr/load_file.h +2 -2
  1014. data/src/core/lib/iomgr/lockfree_event.cc +23 -5
  1015. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  1016. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  1017. data/src/core/lib/iomgr/polling_entity.h +6 -0
  1018. data/src/core/lib/iomgr/pollset.cc +5 -5
  1019. data/src/core/lib/iomgr/pollset.h +9 -9
  1020. data/src/core/lib/iomgr/pollset_set.h +1 -2
  1021. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  1022. data/src/core/lib/iomgr/pollset_windows.cc +6 -6
  1023. data/src/core/lib/iomgr/port.h +28 -17
  1024. data/src/core/lib/iomgr/python_util.h +3 -2
  1025. data/src/core/lib/iomgr/resolve_address.cc +17 -23
  1026. data/src/core/lib/iomgr/resolve_address.h +58 -46
  1027. data/src/core/lib/iomgr/resolve_address_impl.h +58 -0
  1028. data/src/core/lib/iomgr/resolve_address_posix.cc +84 -78
  1029. data/src/core/lib/iomgr/resolve_address_posix.h +50 -0
  1030. data/src/core/lib/iomgr/resolve_address_windows.cc +95 -85
  1031. data/src/core/lib/iomgr/resolve_address_windows.h +50 -0
  1032. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1033. data/src/core/lib/iomgr/sockaddr.h +3 -3
  1034. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  1035. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  1036. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  1037. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  1038. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  1039. data/src/core/lib/iomgr/socket_mutator.cc +17 -4
  1040. data/src/core/lib/iomgr/socket_mutator.h +27 -3
  1041. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -44
  1042. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  1043. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  1044. data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
  1045. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  1046. data/src/core/lib/iomgr/tcp_client.cc +1 -1
  1047. data/src/core/lib/iomgr/tcp_client.h +5 -2
  1048. data/src/core/lib/iomgr/tcp_client_cfstream.cc +22 -30
  1049. data/src/core/lib/iomgr/tcp_client_posix.cc +50 -50
  1050. data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
  1051. data/src/core/lib/iomgr/tcp_client_windows.cc +26 -19
  1052. data/src/core/lib/iomgr/tcp_posix.cc +211 -204
  1053. data/src/core/lib/iomgr/tcp_posix.h +17 -12
  1054. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  1055. data/src/core/lib/iomgr/tcp_server.h +16 -14
  1056. data/src/core/lib/iomgr/tcp_server_posix.cc +91 -58
  1057. data/src/core/lib/iomgr/tcp_server_utils_posix.h +34 -29
  1058. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +53 -47
  1059. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +18 -15
  1060. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  1061. data/src/core/lib/iomgr/tcp_server_windows.cc +37 -32
  1062. data/src/core/lib/iomgr/tcp_windows.cc +42 -56
  1063. data/src/core/lib/iomgr/tcp_windows.h +3 -3
  1064. data/src/core/lib/iomgr/timer.cc +3 -2
  1065. data/src/core/lib/iomgr/timer.h +17 -8
  1066. data/src/core/lib/iomgr/timer_generic.cc +118 -129
  1067. data/src/core/lib/iomgr/timer_generic.h +1 -0
  1068. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1069. data/src/core/lib/iomgr/timer_manager.cc +17 -16
  1070. data/src/core/lib/iomgr/unix_sockets_posix.cc +25 -39
  1071. data/src/core/lib/iomgr/unix_sockets_posix.h +6 -10
  1072. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -18
  1073. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  1074. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
  1075. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1076. data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
  1077. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  1078. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  1079. data/src/core/lib/iomgr/work_serializer.h +33 -5
  1080. data/src/core/lib/json/json.h +2 -3
  1081. data/src/core/lib/json/json_reader.cc +106 -59
  1082. data/src/core/lib/json/json_util.cc +78 -3
  1083. data/src/core/lib/json/json_util.h +77 -118
  1084. data/src/core/lib/json/json_writer.cc +6 -4
  1085. data/src/core/lib/matchers/matchers.cc +327 -0
  1086. data/src/core/lib/matchers/matchers.h +160 -0
  1087. data/src/core/lib/profiling/basic_timers.cc +8 -6
  1088. data/src/core/lib/profiling/stap_timers.cc +2 -2
  1089. data/src/core/lib/promise/activity.cc +121 -0
  1090. data/src/core/lib/promise/activity.h +540 -0
  1091. data/src/core/lib/promise/arena_promise.h +198 -0
  1092. data/src/core/lib/promise/call_push_pull.h +148 -0
  1093. data/src/core/lib/promise/context.h +86 -0
  1094. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  1095. data/src/core/lib/promise/detail/promise_factory.h +188 -0
  1096. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1097. data/src/core/lib/promise/detail/status.h +50 -0
  1098. data/src/core/lib/promise/detail/switch.h +1455 -0
  1099. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  1100. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1101. data/src/core/lib/promise/latch.h +103 -0
  1102. data/src/core/lib/promise/loop.h +135 -0
  1103. data/src/core/lib/promise/map.h +88 -0
  1104. data/src/core/lib/promise/poll.h +66 -0
  1105. data/src/core/lib/promise/promise.h +95 -0
  1106. data/src/core/lib/promise/race.h +83 -0
  1107. data/src/core/lib/promise/seq.h +87 -0
  1108. data/src/core/lib/promise/sleep.cc +76 -0
  1109. data/src/core/lib/promise/sleep.h +76 -0
  1110. data/src/core/lib/promise/try_seq.h +157 -0
  1111. data/src/core/lib/resolver/resolver.cc +79 -0
  1112. data/src/core/lib/resolver/resolver.h +135 -0
  1113. data/src/core/lib/resolver/resolver_factory.h +75 -0
  1114. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  1115. data/src/core/lib/resolver/resolver_registry.h +113 -0
  1116. data/src/core/lib/resolver/server_address.cc +176 -0
  1117. data/src/core/lib/resolver/server_address.h +144 -0
  1118. data/src/core/lib/resource_quota/api.cc +96 -0
  1119. data/src/core/lib/resource_quota/api.h +43 -0
  1120. data/src/core/lib/resource_quota/arena.cc +101 -0
  1121. data/src/core/lib/resource_quota/arena.h +141 -0
  1122. data/src/core/lib/resource_quota/memory_quota.cc +520 -0
  1123. data/src/core/lib/resource_quota/memory_quota.h +476 -0
  1124. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1125. data/src/core/lib/resource_quota/resource_quota.h +74 -0
  1126. data/src/core/lib/resource_quota/thread_quota.cc +45 -0
  1127. data/src/core/lib/resource_quota/thread_quota.h +61 -0
  1128. data/src/core/lib/resource_quota/trace.cc +19 -0
  1129. data/src/core/lib/resource_quota/trace.h +24 -0
  1130. data/src/core/lib/security/authorization/authorization_engine.h +13 -53
  1131. data/src/core/lib/security/authorization/authorization_policy_provider.h +40 -0
  1132. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  1133. data/src/core/lib/security/authorization/evaluate_args.cc +143 -79
  1134. data/src/core/lib/security/authorization/evaluate_args.h +50 -17
  1135. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  1136. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  1137. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +109 -0
  1138. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  1139. data/src/core/lib/security/authorization/matchers.cc +227 -0
  1140. data/src/core/lib/security/authorization/matchers.h +211 -0
  1141. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  1142. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  1143. data/src/core/lib/security/context/security_context.cc +15 -10
  1144. data/src/core/lib/security/context/security_context.h +9 -2
  1145. data/src/core/lib/security/credentials/alts/alts_credentials.cc +14 -6
  1146. data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -1
  1147. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  1148. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  1149. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  1150. data/src/core/lib/security/credentials/call_creds_util.cc +89 -0
  1151. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  1152. data/src/core/lib/security/credentials/channel_creds_registry.h +98 -0
  1153. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  1154. data/src/core/lib/security/credentials/composite/composite_credentials.cc +31 -85
  1155. data/src/core/lib/security/credentials/composite/composite_credentials.h +25 -11
  1156. data/src/core/lib/security/credentials/credentials.cc +11 -10
  1157. data/src/core/lib/security/credentials/credentials.h +90 -83
  1158. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +160 -73
  1159. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +23 -13
  1160. data/src/core/lib/security/credentials/external/aws_request_signer.cc +5 -4
  1161. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  1162. data/src/core/lib/security/credentials/external/external_account_credentials.cc +132 -82
  1163. data/src/core/lib/security/credentials/external/external_account_credentials.h +15 -17
  1164. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -6
  1165. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  1166. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +46 -27
  1167. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -7
  1168. data/src/core/lib/security/credentials/fake/fake_credentials.cc +33 -27
  1169. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  1170. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  1171. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +117 -47
  1172. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -4
  1173. data/src/core/lib/security/credentials/iam/iam_credentials.cc +25 -28
  1174. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  1175. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +31 -26
  1176. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  1177. data/src/core/lib/security/credentials/jwt/json_token.cc +7 -12
  1178. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  1179. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +58 -52
  1180. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +27 -15
  1181. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +66 -62
  1182. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
  1183. data/src/core/lib/security/credentials/local/local_credentials.cc +14 -7
  1184. data/src/core/lib/security/credentials/local/local_credentials.h +11 -1
  1185. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +178 -193
  1186. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +62 -34
  1187. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +100 -155
  1188. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  1189. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -19
  1190. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -5
  1191. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +11 -9
  1192. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +19 -15
  1193. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +90 -25
  1194. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +67 -12
  1195. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +234 -0
  1196. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +169 -0
  1197. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +35 -85
  1198. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +75 -151
  1199. data/src/core/lib/security/credentials/tls/tls_credentials.cc +42 -17
  1200. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -1
  1201. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  1202. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  1203. data/src/core/lib/security/credentials/xds/xds_credentials.cc +134 -63
  1204. data/src/core/lib/security/credentials/xds/xds_credentials.h +40 -9
  1205. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -18
  1206. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1207. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +25 -26
  1208. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -3
  1209. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +10 -20
  1210. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -16
  1211. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  1212. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -6
  1213. data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -26
  1214. data/src/core/lib/security/security_connector/security_connector.cc +9 -16
  1215. data/src/core/lib/security/security_connector/security_connector.h +34 -25
  1216. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +29 -25
  1217. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
  1218. data/src/core/lib/security/security_connector/ssl_utils.cc +76 -43
  1219. data/src/core/lib/security/security_connector/ssl_utils.h +17 -21
  1220. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +440 -283
  1221. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +118 -79
  1222. data/src/core/lib/security/transport/auth_filters.h +39 -5
  1223. data/src/core/lib/security/transport/client_auth_filter.cc +96 -355
  1224. data/src/core/lib/security/transport/secure_endpoint.cc +221 -151
  1225. data/src/core/lib/security/transport/secure_endpoint.h +2 -1
  1226. data/src/core/lib/security/transport/security_handshaker.cc +174 -96
  1227. data/src/core/lib/security/transport/security_handshaker.h +3 -2
  1228. data/src/core/lib/security/transport/server_auth_filter.cc +61 -50
  1229. data/src/core/lib/security/transport/tsi_error.cc +5 -6
  1230. data/src/core/lib/security/transport/tsi_error.h +2 -1
  1231. data/src/core/lib/security/util/json_util.cc +8 -10
  1232. data/src/core/lib/security/util/json_util.h +1 -1
  1233. data/src/core/lib/service_config/service_config.h +78 -0
  1234. data/src/core/lib/service_config/service_config_call_data.h +75 -0
  1235. data/src/core/lib/service_config/service_config_impl.cc +237 -0
  1236. data/src/core/lib/service_config/service_config_impl.h +132 -0
  1237. data/src/core/lib/service_config/service_config_parser.cc +101 -0
  1238. data/src/core/lib/service_config/service_config_parser.h +113 -0
  1239. data/src/core/lib/slice/b64.cc +1 -1
  1240. data/src/core/lib/slice/b64.h +2 -0
  1241. data/src/core/lib/slice/percent_encoding.cc +87 -97
  1242. data/src/core/lib/slice/percent_encoding.h +22 -33
  1243. data/src/core/lib/slice/slice.cc +83 -192
  1244. data/src/core/lib/slice/slice.h +389 -0
  1245. data/src/core/lib/slice/slice_api.cc +39 -0
  1246. data/src/core/lib/slice/slice_buffer.cc +59 -29
  1247. data/src/core/lib/slice/slice_buffer.h +106 -0
  1248. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  1249. data/src/core/lib/slice/slice_internal.h +18 -278
  1250. data/src/core/lib/slice/slice_refcount.cc +35 -0
  1251. data/src/core/lib/slice/slice_refcount.h +45 -0
  1252. data/src/core/lib/slice/slice_refcount_base.h +60 -0
  1253. data/src/core/lib/slice/slice_split.cc +103 -0
  1254. data/src/core/lib/slice/slice_split.h +36 -0
  1255. data/src/core/lib/slice/slice_string_helpers.cc +2 -81
  1256. data/src/core/lib/slice/slice_string_helpers.h +1 -15
  1257. data/src/core/lib/surface/api_trace.cc +2 -1
  1258. data/src/core/lib/surface/api_trace.h +1 -0
  1259. data/src/core/lib/surface/builtins.cc +54 -0
  1260. data/src/core/lib/surface/builtins.h +26 -0
  1261. data/src/core/lib/surface/byte_buffer.cc +7 -1
  1262. data/src/core/lib/surface/byte_buffer_reader.cc +5 -5
  1263. data/src/core/lib/surface/call.cc +1186 -1256
  1264. data/src/core/lib/surface/call.h +29 -24
  1265. data/src/core/lib/surface/call_details.cc +4 -4
  1266. data/src/core/lib/surface/call_log_batch.cc +9 -3
  1267. data/src/core/lib/surface/call_test_only.h +4 -1
  1268. data/src/core/lib/surface/channel.cc +221 -315
  1269. data/src/core/lib/surface/channel.h +102 -72
  1270. data/src/core/lib/surface/channel_init.cc +22 -76
  1271. data/src/core/lib/surface/channel_init.h +45 -39
  1272. data/src/core/lib/surface/channel_ping.cc +10 -5
  1273. data/src/core/lib/surface/channel_stack_type.cc +0 -1
  1274. data/src/core/lib/surface/channel_stack_type.h +0 -2
  1275. data/src/core/lib/surface/completion_queue.cc +150 -151
  1276. data/src/core/lib/surface/completion_queue.h +8 -3
  1277. data/src/core/lib/surface/completion_queue_factory.cc +4 -3
  1278. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  1279. data/src/core/lib/surface/event_string.cc +1 -6
  1280. data/src/core/lib/surface/event_string.h +1 -1
  1281. data/src/core/lib/surface/init.cc +82 -90
  1282. data/src/core/lib/surface/init.h +2 -4
  1283. data/src/core/lib/surface/lame_client.cc +80 -92
  1284. data/src/core/lib/surface/lame_client.h +42 -3
  1285. data/src/core/lib/surface/metadata_array.cc +4 -2
  1286. data/src/core/lib/surface/server.cc +201 -220
  1287. data/src/core/lib/surface/server.h +160 -64
  1288. data/src/core/lib/surface/validate_metadata.cc +57 -29
  1289. data/src/core/lib/surface/validate_metadata.h +6 -2
  1290. data/src/core/lib/surface/version.cc +2 -2
  1291. data/src/core/lib/transport/bdp_estimator.cc +14 -13
  1292. data/src/core/lib/transport/bdp_estimator.h +4 -5
  1293. data/src/core/lib/transport/byte_stream.cc +15 -8
  1294. data/src/core/lib/transport/byte_stream.h +14 -9
  1295. data/src/core/lib/transport/connectivity_state.cc +15 -10
  1296. data/src/core/lib/transport/connectivity_state.h +4 -5
  1297. data/src/core/lib/transport/error_utils.cc +71 -30
  1298. data/src/core/lib/transport/error_utils.h +18 -7
  1299. data/src/core/lib/transport/handshaker.cc +227 -0
  1300. data/src/core/lib/transport/handshaker.h +168 -0
  1301. data/src/core/lib/transport/handshaker_factory.h +49 -0
  1302. data/src/core/lib/transport/handshaker_registry.cc +54 -0
  1303. data/src/core/lib/transport/handshaker_registry.h +72 -0
  1304. data/src/core/lib/transport/http_connect_handshaker.cc +401 -0
  1305. data/src/core/lib/transport/http_connect_handshaker.h +42 -0
  1306. data/src/core/lib/transport/metadata_batch.cc +213 -318
  1307. data/src/core/lib/transport/metadata_batch.h +1230 -158
  1308. data/src/core/lib/transport/parsed_metadata.cc +39 -0
  1309. data/src/core/lib/transport/parsed_metadata.h +408 -0
  1310. data/src/core/lib/transport/pid_controller.cc +4 -4
  1311. data/src/core/lib/transport/status_conversion.cc +4 -2
  1312. data/src/core/lib/transport/status_conversion.h +3 -3
  1313. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  1314. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1315. data/src/core/lib/transport/timeout_encoding.cc +203 -70
  1316. data/src/core/lib/transport/timeout_encoding.h +44 -10
  1317. data/src/core/lib/transport/transport.cc +33 -52
  1318. data/src/core/lib/transport/transport.h +137 -10
  1319. data/src/core/lib/transport/transport_impl.h +24 -0
  1320. data/src/core/lib/transport/transport_op_string.cc +21 -44
  1321. data/src/core/lib/uri/uri_parser.cc +248 -66
  1322. data/src/core/lib/uri/uri_parser.h +39 -25
  1323. data/src/core/plugin_registry/grpc_plugin_registry.cc +84 -90
  1324. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1325. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  1326. data/src/core/tsi/alts/crypt/gsec.h +5 -0
  1327. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  1328. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  1329. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +54 -55
  1330. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  1331. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1332. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +56 -42
  1333. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  1334. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  1335. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1336. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1337. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -5
  1338. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1339. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  1340. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  1341. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  1342. data/src/core/tsi/fake_transport_security.cc +26 -9
  1343. data/src/core/tsi/local_transport_security.cc +42 -87
  1344. data/src/core/tsi/local_transport_security.h +1 -4
  1345. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1346. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1347. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -6
  1348. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  1349. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
  1350. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +8 -11
  1351. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -2
  1352. data/src/core/tsi/ssl_transport_security.cc +261 -79
  1353. data/src/core/tsi/ssl_transport_security.h +53 -16
  1354. data/src/core/tsi/transport_security.cc +15 -3
  1355. data/src/core/tsi/transport_security.h +16 -1
  1356. data/src/core/tsi/transport_security_grpc.h +1 -0
  1357. data/src/core/tsi/transport_security_interface.h +28 -0
  1358. data/src/ruby/bin/math_services_pb.rb +1 -1
  1359. data/src/ruby/ext/grpc/extconf.rb +31 -11
  1360. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1361. data/src/ruby/ext/grpc/rb_call.c +5 -5
  1362. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  1363. data/src/ruby/ext/grpc/rb_channel.c +24 -10
  1364. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  1365. data/src/ruby/ext/grpc/rb_channel_credentials.c +15 -5
  1366. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1367. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1368. data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
  1369. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1370. data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
  1371. data/src/ruby/ext/grpc/rb_grpc.c +9 -4
  1372. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1373. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -34
  1374. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -53
  1375. data/src/ruby/ext/grpc/rb_server.c +26 -10
  1376. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1377. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1378. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1379. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1380. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1381. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1382. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1383. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  1384. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1385. data/src/ruby/lib/grpc/version.rb +1 -1
  1386. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1387. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  1388. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
  1389. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1390. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  1391. data/src/ruby/pb/test/client.rb +769 -0
  1392. data/src/ruby/pb/test/server.rb +252 -0
  1393. data/src/ruby/pb/test/xds_client.rb +415 -0
  1394. data/src/ruby/spec/call_spec.rb +1 -1
  1395. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  1396. data/src/ruby/spec/channel_spec.rb +17 -6
  1397. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1398. data/src/ruby/spec/client_server_spec.rb +1 -1
  1399. data/src/ruby/spec/errors_spec.rb +1 -1
  1400. data/src/ruby/spec/generic/active_call_spec.rb +2 -2
  1401. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  1402. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1403. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1404. data/src/ruby/spec/server_spec.rb +22 -0
  1405. data/third_party/abseil-cpp/absl/algorithm/container.h +104 -94
  1406. data/third_party/abseil-cpp/absl/base/attributes.h +88 -35
  1407. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  1408. data/third_party/abseil-cpp/absl/base/config.h +102 -44
  1409. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +25 -36
  1410. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  1411. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1412. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1413. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  1414. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  1415. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  1416. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  1417. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +17 -6
  1418. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1419. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  1420. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1421. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1422. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1423. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +70 -1
  1424. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
  1425. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1426. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1427. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1428. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +17 -3
  1429. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  1430. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1431. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  1432. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  1433. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1434. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1435. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  1436. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1437. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1438. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -7
  1439. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +1 -1
  1440. data/third_party/abseil-cpp/absl/container/inlined_vector.h +110 -100
  1441. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  1442. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  1443. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -103
  1444. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +39 -79
  1445. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  1446. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +469 -429
  1447. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  1448. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  1449. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +21 -2
  1450. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +374 -243
  1451. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +27 -13
  1452. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  1453. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  1454. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  1455. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +15 -17
  1456. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1457. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  1458. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1459. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  1460. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +11 -7
  1461. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  1462. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1463. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  1464. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  1465. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +16 -2
  1466. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1467. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  1468. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  1469. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  1470. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  1471. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +27 -13
  1472. data/third_party/abseil-cpp/absl/hash/internal/hash.h +145 -45
  1473. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1474. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1475. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  1476. data/third_party/abseil-cpp/absl/meta/type_traits.h +47 -3
  1477. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1478. data/third_party/abseil-cpp/absl/numeric/int128.cc +6 -13
  1479. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  1480. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1481. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1482. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1483. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1484. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  1485. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  1486. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1487. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1488. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1489. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1490. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1491. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1492. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1493. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1494. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1495. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1496. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1497. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1498. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1499. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1500. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1501. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1502. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1503. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1504. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1505. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1506. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1507. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1508. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1509. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1510. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1511. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1512. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1513. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1514. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1515. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1516. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1517. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1518. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1519. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1520. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1521. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1522. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1523. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1524. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1525. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1526. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1527. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1528. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1529. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1530. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1531. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1532. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1533. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  1534. data/third_party/abseil-cpp/absl/status/status.cc +27 -28
  1535. data/third_party/abseil-cpp/absl/status/status.h +98 -33
  1536. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  1537. data/third_party/abseil-cpp/absl/status/statusor.h +34 -24
  1538. data/third_party/abseil-cpp/absl/strings/charconv.cc +8 -8
  1539. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1540. data/third_party/abseil-cpp/absl/strings/cord.cc +619 -570
  1541. data/third_party/abseil-cpp/absl/strings/cord.h +346 -101
  1542. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  1543. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +7 -7
  1544. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
  1545. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +478 -31
  1546. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1547. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1548. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1549. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1550. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1551. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1552. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1553. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1554. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1555. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +771 -0
  1556. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1557. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1558. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1559. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1560. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1561. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1562. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1563. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1564. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1565. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1566. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1567. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1568. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  1569. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +22 -0
  1570. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +18 -5
  1571. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +20 -5
  1572. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  1573. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1574. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  1575. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  1576. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  1577. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +76 -73
  1578. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +38 -16
  1579. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1580. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1581. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1582. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1583. data/third_party/abseil-cpp/absl/strings/numbers.cc +133 -5
  1584. data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
  1585. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1586. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  1587. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1588. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  1589. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1590. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  1591. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  1592. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  1593. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1594. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1595. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1596. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
  1597. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  1598. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  1599. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  1600. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +2 -66
  1601. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  1602. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  1603. data/third_party/abseil-cpp/absl/synchronization/mutex.h +82 -65
  1604. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  1605. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1606. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1607. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  1608. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  1609. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  1610. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1611. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1612. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  1613. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  1614. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1615. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -5
  1616. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  1617. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1618. data/third_party/abseil-cpp/absl/time/time.h +93 -60
  1619. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1620. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1621. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  1622. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  1623. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  1624. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1625. data/third_party/boringssl-with-bazel/err_data.c +760 -724
  1626. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +70 -57
  1627. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1628. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1629. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  1630. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1631. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  1632. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1633. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +67 -54
  1634. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1635. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1636. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
  1637. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1638. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
  1639. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
  1640. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1641. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1642. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +75 -63
  1643. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1644. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1645. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1646. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1647. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
  1648. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
  1649. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
  1650. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1651. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1652. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
  1653. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1654. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1655. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1656. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1657. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1658. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1659. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1660. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1661. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1662. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1663. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1664. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1665. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
  1666. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1667. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1668. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1669. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  1670. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1671. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1672. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1673. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  1674. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1675. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1676. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1677. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1678. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1679. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1680. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1681. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
  1682. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  1683. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1684. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1685. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1686. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  1687. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  1688. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1689. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1690. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1691. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  1692. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1693. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +15 -4
  1694. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1695. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1696. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
  1697. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +35 -2
  1698. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1699. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1700. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1701. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
  1702. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
  1703. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1704. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1705. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1706. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1707. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  1708. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  1709. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1710. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  1711. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  1712. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1713. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1714. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1715. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1716. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1717. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1718. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1719. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  1720. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  1721. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  1722. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +50 -33
  1723. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +65 -41
  1724. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1725. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +168 -16
  1726. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  1727. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  1728. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  1729. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +400 -325
  1730. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1731. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1732. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  1733. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1734. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1735. data/third_party/boringssl-with-bazel/src/crypto/mem.c +46 -9
  1736. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  1737. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1738. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1739. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1740. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1741. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1742. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1743. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  1744. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  1745. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1746. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1747. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +96 -49
  1748. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  1749. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1750. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1751. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1752. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  1753. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1754. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1755. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1756. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1757. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1758. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1759. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1760. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1761. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1762. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1763. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
  1764. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  1765. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1766. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1767. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  1768. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1769. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  1770. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
  1771. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1772. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  1773. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  1774. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  1775. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
  1776. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +12 -9
  1777. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1778. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  1779. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  1780. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
  1781. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  1782. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +26 -23
  1783. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +25 -69
  1784. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  1785. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +61 -23
  1786. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  1787. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1788. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  1789. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -16
  1790. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1791. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +15 -13
  1792. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1793. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
  1794. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1795. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  1796. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1797. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  1798. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1799. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +50 -14
  1800. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1801. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +239 -11
  1802. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  1803. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +2 -2
  1804. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1805. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  1806. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1807. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  1808. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  1809. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +29 -18
  1810. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  1811. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +26 -25
  1812. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
  1813. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1814. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  1815. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
  1816. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1817. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
  1818. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1819. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1820. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
  1821. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +2 -2
  1822. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
  1823. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  1824. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  1825. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +69 -4
  1826. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1794 -665
  1827. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
  1828. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +63 -14
  1829. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1830. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  1831. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1832. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1833. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  1834. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1835. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +36 -7
  1836. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1837. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1838. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  1839. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +60 -38
  1840. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +10 -2
  1841. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1842. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1843. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1844. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  1845. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1846. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +67 -106
  1847. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
  1848. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1849. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  1850. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1851. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1852. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1853. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  1854. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  1855. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  1856. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  1857. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1858. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1859. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  1860. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  1861. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +435 -119
  1862. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +48 -36
  1863. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1397 -380
  1864. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  1865. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +192 -52
  1866. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  1867. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1868. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  1869. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
  1870. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  1871. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +92 -44
  1872. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +314 -217
  1873. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +177 -35
  1874. data/third_party/boringssl-with-bazel/src/ssl/internal.h +493 -154
  1875. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1876. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  1877. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1878. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
  1879. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  1880. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  1881. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  1882. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +64 -112
  1883. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1884. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +136 -104
  1885. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1886. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  1887. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +11 -3
  1888. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1889. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  1890. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +79 -34
  1891. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +235 -178
  1892. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  1893. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +269 -118
  1894. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1895. data/third_party/cares/cares/include/ares.h +742 -0
  1896. data/third_party/cares/cares/include/ares_dns.h +112 -0
  1897. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1898. data/third_party/cares/cares/include/ares_version.h +24 -0
  1899. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  1900. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  1901. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1902. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1903. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1904. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1905. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1906. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1907. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1908. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1909. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  1910. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  1911. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  1912. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1913. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  1914. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  1915. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1916. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  1917. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  1918. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1919. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1920. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  1921. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  1922. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  1923. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  1924. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  1925. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  1926. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  1927. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  1928. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  1929. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  1930. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  1931. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  1932. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1933. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1934. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1935. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1936. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1937. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1938. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1939. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1940. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1941. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1942. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  1943. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  1944. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  1945. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  1946. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1947. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  1948. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  1949. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1950. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1951. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  1952. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  1953. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  1954. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  1955. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  1956. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  1957. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1958. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1959. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1960. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1961. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1962. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  1963. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1964. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1965. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1966. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1967. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1968. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1969. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1970. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1971. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1972. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  1973. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  1974. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1975. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  1976. data/third_party/re2/re2/compile.cc +91 -109
  1977. data/third_party/re2/re2/dfa.cc +27 -39
  1978. data/third_party/re2/re2/filtered_re2.cc +18 -2
  1979. data/third_party/re2/re2/filtered_re2.h +10 -5
  1980. data/third_party/re2/re2/nfa.cc +1 -1
  1981. data/third_party/re2/re2/parse.cc +42 -23
  1982. data/third_party/re2/re2/perl_groups.cc +34 -34
  1983. data/third_party/re2/re2/prefilter.cc +3 -2
  1984. data/third_party/re2/re2/prog.cc +182 -4
  1985. data/third_party/re2/re2/prog.h +28 -9
  1986. data/third_party/re2/re2/re2.cc +87 -118
  1987. data/third_party/re2/re2/re2.h +156 -141
  1988. data/third_party/re2/re2/regexp.cc +12 -5
  1989. data/third_party/re2/re2/regexp.h +8 -2
  1990. data/third_party/re2/re2/set.cc +31 -9
  1991. data/third_party/re2/re2/set.h +9 -4
  1992. data/third_party/re2/re2/simplify.cc +11 -3
  1993. data/third_party/re2/re2/tostring.cc +1 -1
  1994. data/third_party/re2/re2/walker-inl.h +1 -1
  1995. data/third_party/re2/util/mutex.h +2 -2
  1996. data/third_party/re2/util/pcre.h +3 -3
  1997. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1998. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1999. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2000. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2001. data/third_party/upb/upb/decode.c +774 -351
  2002. data/third_party/upb/upb/decode.h +66 -12
  2003. data/third_party/upb/upb/decode_fast.c +596 -581
  2004. data/third_party/upb/upb/decode_fast.h +40 -13
  2005. data/third_party/upb/upb/decode_internal.h +211 -0
  2006. data/third_party/upb/upb/def.c +2151 -1068
  2007. data/third_party/upb/upb/def.h +352 -258
  2008. data/third_party/upb/upb/def.hpp +160 -161
  2009. data/third_party/upb/upb/encode.c +291 -165
  2010. data/third_party/upb/upb/encode.h +38 -13
  2011. data/third_party/upb/upb/json_encode.c +267 -204
  2012. data/third_party/upb/upb/json_encode.h +33 -7
  2013. data/third_party/upb/upb/msg.c +274 -102
  2014. data/third_party/upb/upb/msg.h +83 -582
  2015. data/third_party/upb/upb/msg_internal.h +831 -0
  2016. data/third_party/upb/upb/port_def.inc +93 -24
  2017. data/third_party/upb/upb/port_undef.inc +39 -1
  2018. data/third_party/upb/upb/reflection.c +312 -240
  2019. data/third_party/upb/upb/reflection.h +119 -67
  2020. data/third_party/upb/upb/reflection.hpp +37 -0
  2021. data/third_party/upb/upb/table.c +406 -197
  2022. data/third_party/upb/upb/table_internal.h +385 -0
  2023. data/third_party/upb/upb/text_encode.c +141 -90
  2024. data/third_party/upb/upb/text_encode.h +31 -5
  2025. data/third_party/upb/upb/upb.c +164 -66
  2026. data/third_party/upb/upb/upb.h +182 -146
  2027. data/third_party/upb/upb/upb.hpp +50 -23
  2028. data/third_party/upb/upb/upb_internal.h +68 -0
  2029. data/third_party/xxhash/xxhash.h +5580 -0
  2030. data/third_party/zlib/crc32.c +966 -292
  2031. data/third_party/zlib/crc32.h +9441 -436
  2032. data/third_party/zlib/deflate.c +78 -30
  2033. data/third_party/zlib/deflate.h +12 -15
  2034. data/third_party/zlib/gzguts.h +3 -2
  2035. data/third_party/zlib/gzlib.c +5 -3
  2036. data/third_party/zlib/gzread.c +5 -7
  2037. data/third_party/zlib/gzwrite.c +25 -13
  2038. data/third_party/zlib/infback.c +2 -1
  2039. data/third_party/zlib/inffast.c +14 -14
  2040. data/third_party/zlib/inflate.c +39 -8
  2041. data/third_party/zlib/inflate.h +3 -2
  2042. data/third_party/zlib/inftrees.c +3 -3
  2043. data/third_party/zlib/trees.c +27 -48
  2044. data/third_party/zlib/zlib.h +123 -100
  2045. data/third_party/zlib/zutil.c +2 -2
  2046. data/third_party/zlib/zutil.h +12 -9
  2047. metadata +734 -307
  2048. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -388
  2049. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -34
  2050. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
  2051. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -85
  2052. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  2053. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  2054. data/src/core/ext/filters/client_channel/resolver.cc +0 -87
  2055. data/src/core/ext/filters/client_channel/resolver.h +0 -147
  2056. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
  2057. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
  2058. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  2059. data/src/core/ext/filters/client_channel/server_address.cc +0 -161
  2060. data/src/core/ext/filters/client_channel/server_address.h +0 -113
  2061. data/src/core/ext/filters/client_channel/service_config.cc +0 -226
  2062. data/src/core/ext/filters/client_channel/service_config.h +0 -126
  2063. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -86
  2064. data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -89
  2065. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -92
  2066. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
  2067. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -557
  2068. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2069. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  2070. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
  2071. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  2072. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  2073. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  2074. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  2075. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -124
  2076. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -90
  2077. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -212
  2078. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
  2079. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -76
  2080. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
  2081. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2082. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
  2083. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  2084. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  2085. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  2086. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
  2087. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -56
  2088. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -30
  2089. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -56
  2090. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -30
  2091. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -56
  2092. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -29
  2093. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -56
  2094. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
  2095. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -56
  2096. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +0 -28
  2097. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
  2098. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
  2099. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
  2100. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
  2101. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
  2102. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +0 -36
  2103. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
  2104. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
  2105. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
  2106. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
  2107. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
  2108. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  2109. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
  2110. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
  2111. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  2112. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -83
  2113. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  2114. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -82
  2115. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  2116. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -86
  2117. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  2118. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
  2119. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  2120. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
  2121. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
  2122. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
  2123. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
  2124. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
  2125. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
  2126. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
  2127. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
  2128. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
  2129. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
  2130. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
  2131. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
  2132. data/src/core/lib/avl/avl.cc +0 -306
  2133. data/src/core/lib/channel/handshaker.cc +0 -262
  2134. data/src/core/lib/channel/handshaker.h +0 -179
  2135. data/src/core/lib/channel/handshaker_factory.h +0 -42
  2136. data/src/core/lib/channel/handshaker_registry.cc +0 -105
  2137. data/src/core/lib/channel/handshaker_registry.h +0 -54
  2138. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  2139. data/src/core/lib/compression/compression_args.cc +0 -135
  2140. data/src/core/lib/compression/compression_args.h +0 -56
  2141. data/src/core/lib/compression/stream_compression.cc +0 -80
  2142. data/src/core/lib/compression/stream_compression.h +0 -116
  2143. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  2144. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2145. data/src/core/lib/compression/stream_compression_identity.cc +0 -90
  2146. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2147. data/src/core/lib/gpr/arena.h +0 -47
  2148. data/src/core/lib/gpr/tls_gcc.h +0 -52
  2149. data/src/core/lib/gpr/tls_msvc.h +0 -54
  2150. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  2151. data/src/core/lib/gpr/tls_pthread.h +0 -56
  2152. data/src/core/lib/gpr/tls_stdcpp.h +0 -48
  2153. data/src/core/lib/gprpp/arena.cc +0 -103
  2154. data/src/core/lib/gprpp/arena.h +0 -121
  2155. data/src/core/lib/gprpp/atomic.h +0 -104
  2156. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  2157. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1658
  2158. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2159. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2160. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2161. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  2162. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  2163. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  2164. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2165. data/src/core/lib/iomgr/parse_address.cc +0 -322
  2166. data/src/core/lib/iomgr/parse_address.h +0 -77
  2167. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  2168. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  2169. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  2170. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  2171. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  2172. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2173. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  2174. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  2175. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -168
  2176. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2177. data/src/core/lib/iomgr/resource_quota.cc +0 -1016
  2178. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2179. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2180. data/src/core/lib/iomgr/sockaddr_utils.cc +0 -296
  2181. data/src/core/lib/iomgr/sockaddr_utils.h +0 -80
  2182. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  2183. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2184. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -161
  2185. data/src/core/lib/iomgr/tcp_custom.cc +0 -391
  2186. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2187. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -483
  2188. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2189. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2190. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2191. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2192. data/src/core/lib/iomgr/udp_server.cc +0 -747
  2193. data/src/core/lib/iomgr/udp_server.h +0 -103
  2194. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  2195. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  2196. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
  2197. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
  2198. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
  2199. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  2200. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
  2201. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2202. data/src/core/lib/slice/slice_intern.cc +0 -374
  2203. data/src/core/lib/slice/slice_utils.h +0 -200
  2204. data/src/core/lib/surface/init_secure.cc +0 -81
  2205. data/src/core/lib/transport/authority_override.cc +0 -40
  2206. data/src/core/lib/transport/authority_override.h +0 -37
  2207. data/src/core/lib/transport/metadata.cc +0 -689
  2208. data/src/core/lib/transport/metadata.h +0 -446
  2209. data/src/core/lib/transport/static_metadata.cc +0 -1249
  2210. data/src/core/lib/transport/static_metadata.h +0 -604
  2211. data/src/core/lib/transport/status_metadata.cc +0 -62
  2212. data/src/core/lib/transport/status_metadata.h +0 -48
  2213. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  2214. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +0 -93
  2215. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +0 -130
  2216. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  2217. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  2218. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2219. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
  2220. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
  2221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2222. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -237
  2223. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
  2224. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2225. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
  2226. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2227. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -4100
  2228. data/third_party/cares/cares/ares.h +0 -670
  2229. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2230. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2231. data/third_party/cares/cares/ares_create_query.c +0 -206
  2232. data/third_party/cares/cares/ares_data.c +0 -222
  2233. data/third_party/cares/cares/ares_data.h +0 -72
  2234. data/third_party/cares/cares/ares_dns.h +0 -103
  2235. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2236. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2237. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2238. data/third_party/cares/cares/ares_getenv.c +0 -30
  2239. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2240. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2241. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2242. data/third_party/cares/cares/ares_getopt.c +0 -122
  2243. data/third_party/cares/cares/ares_getopt.h +0 -53
  2244. data/third_party/cares/cares/ares_init.c +0 -2615
  2245. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2246. data/third_party/cares/cares/ares_library_init.c +0 -195
  2247. data/third_party/cares/cares/ares_library_init.h +0 -43
  2248. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2249. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2250. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2251. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2252. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2253. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2254. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2255. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2256. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2257. data/third_party/cares/cares/ares_private.h +0 -382
  2258. data/third_party/cares/cares/ares_process.c +0 -1473
  2259. data/third_party/cares/cares/ares_query.c +0 -186
  2260. data/third_party/cares/cares/ares_search.c +0 -323
  2261. data/third_party/cares/cares/ares_send.c +0 -137
  2262. data/third_party/cares/cares/ares_setup.h +0 -217
  2263. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2264. data/third_party/cares/cares/ares_version.h +0 -24
  2265. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2266. data/third_party/cares/cares/inet_ntop.c +0 -207
  2267. data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
  2268. data/third_party/upb/upb/decode.int.h +0 -163
  2269. data/third_party/upb/upb/json_decode.c +0 -1443
  2270. data/third_party/upb/upb/json_decode.h +0 -23
  2271. data/third_party/upb/upb/table.int.h +0 -475
  2272. data/third_party/upb/upb/upb.int.h +0 -29
@@ -0,0 +1,939 @@
1
+ // Copyright 2021 The Abseil Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef ABSL_STRINGS_INTERNAL_CORD_REP_BTREE_H_
16
+ #define ABSL_STRINGS_INTERNAL_CORD_REP_BTREE_H_
17
+
18
+ #include <cassert>
19
+ #include <cstdint>
20
+ #include <iosfwd>
21
+
22
+ #include "absl/base/config.h"
23
+ #include "absl/base/internal/raw_logging.h"
24
+ #include "absl/base/optimization.h"
25
+ #include "absl/strings/internal/cord_internal.h"
26
+ #include "absl/strings/internal/cord_rep_flat.h"
27
+ #include "absl/strings/string_view.h"
28
+ #include "absl/types/span.h"
29
+
30
+ namespace absl {
31
+ ABSL_NAMESPACE_BEGIN
32
+ namespace cord_internal {
33
+
34
+ class CordRepBtreeNavigator;
35
+
36
+ // CordRepBtree is as the name implies a btree implementation of a Cordrep tree.
37
+ // Data is stored at the leaf level only, non leaf nodes contain down pointers
38
+ // only. Allowed types of data edges are FLAT, EXTERNAL and SUBSTRINGs of FLAT
39
+ // or EXTERNAL nodes. The implementation allows for data to be added to either
40
+ // end of the tree only, it does not provide any 'insert' logic. This has the
41
+ // benefit that we can expect good fill ratios: all nodes except the outer
42
+ // 'legs' will have 100% fill ratios for trees built using Append/Prepend
43
+ // methods. Merged trees will typically have a fill ratio well above 50% as in a
44
+ // similar fashion, one side of the merged tree will typically have a 100% fill
45
+ // ratio, and the 'open' end will average 50%. All operations are O(log(n)) or
46
+ // better, and the tree never needs balancing.
47
+ //
48
+ // All methods accepting a CordRep* or CordRepBtree* adopt a reference on that
49
+ // input unless explicitly stated otherwise. All functions returning a CordRep*
50
+ // or CordRepBtree* instance transfer a reference back to the caller.
51
+ // Simplified, callers both 'donate' and 'consume' a reference count on each
52
+ // call, simplifying the API. An example of building a tree:
53
+ //
54
+ // CordRepBtree* tree = CordRepBtree::Create(MakeFlat("Hello"));
55
+ // tree = CordRepBtree::Append(tree, MakeFlat("world"));
56
+ //
57
+ // In the above example, all inputs are consumed, making each call affecting
58
+ // `tree` reference count neutral. The returned `tree` value can be different
59
+ // from the input if the input is shared with other threads, or if the tree
60
+ // grows in height, but callers typically never have to concern themselves with
61
+ // that and trust that all methods DTRT at all times.
62
+ class CordRepBtree : public CordRep {
63
+ public:
64
+ // EdgeType identifies `front` and `back` enum values.
65
+ // Various implementations in CordRepBtree such as `Add` and `Edge` are
66
+ // generic and templated on operating on either of the boundary edges.
67
+ // For more information on the possible edges contained in a CordRepBtree
68
+ // instance see the documentation for `edges_`.
69
+ enum class EdgeType { kFront, kBack };
70
+
71
+ // Convenience constants into `EdgeType`
72
+ static constexpr EdgeType kFront = EdgeType::kFront;
73
+ static constexpr EdgeType kBack = EdgeType::kBack;
74
+
75
+ // Maximum number of edges: based on experiments and performance data, we can
76
+ // pick suitable values resulting in optimum cacheline aligned values. The
77
+ // preferred values are based on 64-bit systems where we aim to align this
78
+ // class onto 64 bytes, i.e.: 6 = 64 bytes, 14 = 128 bytes, etc.
79
+ // TODO(b/192061034): experiment with alternative sizes.
80
+ static constexpr size_t kMaxCapacity = 6;
81
+
82
+ // Reasonable maximum height of the btree. We can expect a fill ratio of at
83
+ // least 50%: trees are always expanded at the front or back. Concatenating
84
+ // trees will then typically fold at the top most node, where the lower nodes
85
+ // are at least at capacity on one side of joined inputs. At a lower fill
86
+ // rate of 4 edges per node, we have capacity for ~16 million leaf nodes.
87
+ // We will fail / abort if an application ever exceeds this height, which
88
+ // should be extremely rare (near impossible) and be an indication of an
89
+ // application error: we do not assume it reasonable for any application to
90
+ // operate correctly with such monster trees.
91
+ // Another compelling reason for the number `12` is that any contextual stack
92
+ // required for navigation or insertion requires 12 words and 12 bytes, which
93
+ // fits inside 2 cache lines with some room to spare, and is reasonable as a
94
+ // local stack variable compared to Cord's current near 400 bytes stack use.
95
+ // The maximum `height` value of a node is then `kMaxDepth - 1` as node height
96
+ // values start with a value of 0 for leaf nodes.
97
+ static constexpr int kMaxDepth = 12;
98
+ static constexpr int kMaxHeight = kMaxDepth - 1;
99
+
100
+ // `Action` defines the action for unwinding changes done at the btree's leaf
101
+ // level that need to be propagated up to the parent node(s). Each operation
102
+ // on a node has an effect / action defined as follows:
103
+ // - kSelf
104
+ // The operation (add / update, etc) was performed directly on the node as
105
+ // the node is private to the current thread (i.e.: not shared directly or
106
+ // indirectly through a refcount > 1). Changes can be propagated directly to
107
+ // all parent nodes as all parent nodes are also then private to the current
108
+ // thread.
109
+ // - kCopied
110
+ // The operation (add / update, etc) was performed on a copy of the original
111
+ // node, as the node is (potentially) directly or indirectly shared with
112
+ // other threads. Changes need to be propagated into the parent nodes where
113
+ // the old down pointer must be unreffed and replaced with this new copy.
114
+ // Such changes to parent nodes may themselves require a copy if the parent
115
+ // node is also shared. A kCopied action can propagate all the way to the
116
+ // top node where we then must unref the `tree` input provided by the
117
+ // caller, and return the new copy.
118
+ // - kPopped
119
+ // The operation (typically add) could not be satisfied due to insufficient
120
+ // capacity in the targeted node, and a new 'leg' was created that needs to
121
+ // be added into the parent node. For example, adding a FLAT inside a leaf
122
+ // node that is at capacity will create a new leaf node containing that
123
+ // FLAT, that needs to be 'popped' up the btree. Such 'pop' actions can
124
+ // cascade up the tree if parent nodes are also at capacity. A 'Popped'
125
+ // action propagating all the way to the top of the tree will result in
126
+ // the tree becoming one level higher than the current tree through a final
127
+ // `CordRepBtree::New(tree, popped)` call, resulting in a new top node
128
+ // referencing the old tree and the new (fully popped upwards) 'leg'.
129
+ enum Action { kSelf, kCopied, kPopped };
130
+
131
+ // Result of an operation on a node. See the `Action` enum for details.
132
+ struct OpResult {
133
+ CordRepBtree* tree;
134
+ Action action;
135
+ };
136
+
137
+ // Return value of the CopyPrefix and CopySuffix methods which can
138
+ // return a node or data edge at any height inside the tree.
139
+ // A height of 0 defines the lowest (leaf) node, a height of -1 identifies
140
+ // `edge` as being a plain data node: EXTERNAL / FLAT or SUBSTRING thereof.
141
+ struct CopyResult {
142
+ CordRep* edge;
143
+ int height;
144
+ };
145
+
146
+ // Logical position inside a node:
147
+ // - index: index of the edge.
148
+ // - n: size or offset value depending on context.
149
+ struct Position {
150
+ size_t index;
151
+ size_t n;
152
+ };
153
+
154
+ // Creates a btree from the given input. Adopts a ref of `rep`.
155
+ // If the input `rep` is itself a btree, i.e., `IsBtree()`, then this
156
+ // function immediately returns `rep->btree()`. If the input is a valid data
157
+ // edge (see IsDataEdge()), then a new leaf node is returned containing `rep`
158
+ // as the sole data edge. Else, the input is assumed to be a (legacy) concat
159
+ // tree, and the input is consumed and transformed into a btree().
160
+ static CordRepBtree* Create(CordRep* rep);
161
+
162
+ // Destroys the provided tree. Should only be called by cord internal API's,
163
+ // typically after a ref_count.Decrement() on the last reference count.
164
+ static void Destroy(CordRepBtree* tree);
165
+
166
+ // Use CordRep::Unref() as we overload for absl::Span<CordRep* const>.
167
+ using CordRep::Unref;
168
+
169
+ // Unrefs all edges in `edges` which are assumed to be 'likely one'.
170
+ static void Unref(absl::Span<CordRep* const> edges);
171
+
172
+ // Appends / Prepends an existing CordRep instance to this tree.
173
+ // The below methods accept three types of input:
174
+ // 1) `rep` is a data node (See `IsDataNode` for valid data edges).
175
+ // `rep` is appended or prepended to this tree 'as is'.
176
+ // 2) `rep` is a BTREE.
177
+ // `rep` is merged into `tree` respecting the Append/Prepend order.
178
+ // 3) `rep` is some other (legacy) type.
179
+ // `rep` is converted in place and added to `tree`
180
+ // Requires `tree` and `rep` to be not null.
181
+ static CordRepBtree* Append(CordRepBtree* tree, CordRep* rep);
182
+ static CordRepBtree* Prepend(CordRepBtree* tree, CordRep* rep);
183
+
184
+ // Append/Prepend the data in `data` to this tree.
185
+ // The `extra` parameter defines how much extra capacity should be allocated
186
+ // for any additional FLAT being allocated. This is an optimization hint from
187
+ // the caller. For example, a caller may need to add 2 string_views of data
188
+ // "abc" and "defghi" which are not consecutive. The caller can in this case
189
+ // invoke `AddData(tree, "abc", 6)`, and any newly added flat is allocated
190
+ // where possible with at least 6 bytes of extra capacity beyond `length`.
191
+ // This helps avoiding data getting fragmented over multiple flats.
192
+ // There is no limit on the size of `data`. If `data` can not be stored inside
193
+ // a single flat, then the function will iteratively add flats until all data
194
+ // has been consumed and appended or prepended to the tree.
195
+ static CordRepBtree* Append(CordRepBtree* tree, string_view data,
196
+ size_t extra = 0);
197
+ static CordRepBtree* Prepend(CordRepBtree* tree, string_view data,
198
+ size_t extra = 0);
199
+
200
+ // Returns a new tree, containing `n` bytes of data from this instance
201
+ // starting at offset `offset`. Where possible, the returned tree shares
202
+ // (re-uses) data edges and nodes with this instance to minimize the
203
+ // combined memory footprint of both trees.
204
+ // Requires `offset + n <= length`. Returns `nullptr` if `n` is zero.
205
+ CordRep* SubTree(size_t offset, size_t n);
206
+
207
+ // Removes `n` trailing bytes from `tree`, and returns the resulting tree
208
+ // or data edge. Returns `tree` if n is zero, and nullptr if n == length.
209
+ // This function is logically identical to:
210
+ // result = tree->SubTree(0, tree->length - n);
211
+ // Unref(tree);
212
+ // return result;
213
+ // However, the actual implementation will as much as possible perform 'in
214
+ // place' modifications on the tree on all nodes and edges that are mutable.
215
+ // For example, in a fully privately owned tree with the last edge being a
216
+ // flat of length 12, RemoveSuffix(1) will simply set the length of that data
217
+ // edge to 11, and reduce the length of all nodes on the edge path by 1.
218
+ static CordRep* RemoveSuffix(CordRepBtree* tree, size_t n);
219
+
220
+ // Returns the character at the given offset.
221
+ char GetCharacter(size_t offset) const;
222
+
223
+ // Returns true if this node holds a single data edge, and if so, sets
224
+ // `fragment` to reference the contained data. `fragment` is an optional
225
+ // output parameter and allowed to be null.
226
+ bool IsFlat(absl::string_view* fragment) const;
227
+
228
+ // Returns true if the data of `n` bytes starting at offset `offset`
229
+ // is contained in a single data edge, and if so, sets fragment to reference
230
+ // the contained data. `fragment` is an optional output parameter and allowed
231
+ // to be null.
232
+ bool IsFlat(size_t offset, size_t n, absl::string_view* fragment) const;
233
+
234
+ // Returns a span (mutable range of bytes) of up to `size` bytes into the
235
+ // last FLAT data edge inside this tree under the following conditions:
236
+ // - none of the nodes down into the FLAT node are shared.
237
+ // - the last data edge in this tree is a non-shared FLAT.
238
+ // - the referenced FLAT has additional capacity available.
239
+ // If all these conditions are met, a non-empty span is returned, and the
240
+ // length of the flat node and involved tree nodes have been increased by
241
+ // `span.length()`. The caller is responsible for immediately assigning values
242
+ // to all uninitialized data reference by the returned span.
243
+ // Requires `this->refcount.IsMutable()`: this function forces the
244
+ // caller to do this fast path check on the top level node, as this is the
245
+ // most commonly shared node of a cord tree.
246
+ Span<char> GetAppendBuffer(size_t size);
247
+
248
+ // Returns the `height` of the tree. The height of a tree is limited to
249
+ // kMaxHeight. `height` is implemented as an `int` as in some places we
250
+ // use negative (-1) values for 'data edges'.
251
+ int height() const { return static_cast<int>(storage[0]); }
252
+
253
+ // Properties: begin, back, end, front/back boundary indexes.
254
+ size_t begin() const { return static_cast<size_t>(storage[1]); }
255
+ size_t back() const { return static_cast<size_t>(storage[2]) - 1; }
256
+ size_t end() const { return static_cast<size_t>(storage[2]); }
257
+ size_t index(EdgeType edge) const {
258
+ return edge == kFront ? begin() : back();
259
+ }
260
+
261
+ // Properties: size and capacity.
262
+ // `capacity` contains the current capacity of this instance, where
263
+ // `kMaxCapacity` contains the maximum capacity of a btree node.
264
+ // For now, `capacity` and `kMaxCapacity` return the same value, but this may
265
+ // change in the future if we see benefit in dynamically sizing 'small' nodes
266
+ // to 'large' nodes for large data trees.
267
+ size_t size() const { return end() - begin(); }
268
+ size_t capacity() const { return kMaxCapacity; }
269
+
270
+ // Edge access
271
+ inline CordRep* Edge(size_t index) const;
272
+ inline CordRep* Edge(EdgeType edge_type) const;
273
+ inline absl::Span<CordRep* const> Edges() const;
274
+ inline absl::Span<CordRep* const> Edges(size_t begin, size_t end) const;
275
+
276
+ // Returns reference to the data edge at `index`.
277
+ // Requires this instance to be a leaf node, and `index` to be valid index.
278
+ inline absl::string_view Data(size_t index) const;
279
+
280
+ static const char* EdgeDataPtr(const CordRep* r);
281
+ static absl::string_view EdgeData(const CordRep* r);
282
+
283
+ // Returns true if the provided rep is a FLAT, EXTERNAL or a SUBSTRING node
284
+ // holding a FLAT or EXTERNAL child rep.
285
+ static bool IsDataEdge(const CordRep* rep);
286
+
287
+ // Diagnostics: returns true if `tree` is valid and internally consistent.
288
+ // If `shallow` is false, then the provided top level node and all child nodes
289
+ // below it are recursively checked. If `shallow` is true, only the provided
290
+ // node in `tree` and the cumulative length, type and height of the direct
291
+ // child nodes of `tree` are checked. The value of `shallow` is ignored if the
292
+ // internal `cord_btree_exhaustive_validation` diagnostics variable is true,
293
+ // in which case the performed validations works as if `shallow` were false.
294
+ // This function is intended for debugging and testing purposes only.
295
+ static bool IsValid(const CordRepBtree* tree, bool shallow = false);
296
+
297
+ // Diagnostics: asserts that the provided tree is valid.
298
+ // `AssertValid()` performs a shallow validation by default. `shallow` can be
299
+ // set to false in which case an exhaustive validation is performed. This
300
+ // function is implemented in terms of calling `IsValid()` and asserting the
301
+ // return value to be true. See `IsValid()` for more information.
302
+ // This function is intended for debugging and testing purposes only.
303
+ static CordRepBtree* AssertValid(CordRepBtree* tree, bool shallow = true);
304
+ static const CordRepBtree* AssertValid(const CordRepBtree* tree,
305
+ bool shallow = true);
306
+
307
+ // Diagnostics: dump the contents of this tree to `stream`.
308
+ // This function is intended for debugging and testing purposes only.
309
+ static void Dump(const CordRep* rep, std::ostream& stream);
310
+ static void Dump(const CordRep* rep, absl::string_view label,
311
+ std::ostream& stream);
312
+ static void Dump(const CordRep* rep, absl::string_view label,
313
+ bool include_contents, std::ostream& stream);
314
+
315
+ // Adds the edge `edge` to this node if possible. `owned` indicates if the
316
+ // current node is potentially shared or not with other threads. Returns:
317
+ // - {kSelf, <this>}
318
+ // The edge was directly added to this node.
319
+ // - {kCopied, <node>}
320
+ // The edge was added to a copy of this node.
321
+ // - {kPopped, New(edge, height())}
322
+ // A new leg with the edge was created as this node has no extra capacity.
323
+ template <EdgeType edge_type>
324
+ inline OpResult AddEdge(bool owned, CordRep* edge, size_t delta);
325
+
326
+ // Replaces the front or back edge with the provided new edge. Returns:
327
+ // - {kSelf, <this>}
328
+ // The edge was directly set in this node. The old edge is unreffed.
329
+ // - {kCopied, <node>}
330
+ // A copy of this node was created with the new edge value.
331
+ // In both cases, the function adopts a reference on `edge`.
332
+ template <EdgeType edge_type>
333
+ OpResult SetEdge(bool owned, CordRep* edge, size_t delta);
334
+
335
+ // Creates a new empty node at the specified height.
336
+ static CordRepBtree* New(int height = 0);
337
+
338
+ // Creates a new node containing `rep`, with the height being computed
339
+ // automatically based on the type of `rep`.
340
+ static CordRepBtree* New(CordRep* rep);
341
+
342
+ // Creates a new node containing both `front` and `back` at height
343
+ // `front.height() + 1`. Requires `back.height() == front.height()`.
344
+ static CordRepBtree* New(CordRepBtree* front, CordRepBtree* back);
345
+
346
+ // Creates a fully balanced tree from the provided tree by rebuilding a new
347
+ // tree from all data edges in the input. This function is automatically
348
+ // invoked internally when the tree exceeds the maximum height.
349
+ static CordRepBtree* Rebuild(CordRepBtree* tree);
350
+
351
+ private:
352
+ CordRepBtree() = default;
353
+ ~CordRepBtree() = default;
354
+
355
+ // Initializes the main properties `tag`, `begin`, `end`, `height`.
356
+ inline void InitInstance(int height, size_t begin = 0, size_t end = 0);
357
+
358
+ // Direct property access begin / end
359
+ void set_begin(size_t begin) { storage[1] = static_cast<uint8_t>(begin); }
360
+ void set_end(size_t end) { storage[2] = static_cast<uint8_t>(end); }
361
+
362
+ // Decreases the value of `begin` by `n`, and returns the new value. Notice
363
+ // how this returns the new value unlike atomic::fetch_add which returns the
364
+ // old value. This is because this is used to prepend edges at 'begin - 1'.
365
+ size_t sub_fetch_begin(size_t n) {
366
+ storage[1] -= static_cast<uint8_t>(n);
367
+ return storage[1];
368
+ }
369
+
370
+ // Increases the value of `end` by `n`, and returns the previous value. This
371
+ // function is typically used to append edges at 'end'.
372
+ size_t fetch_add_end(size_t n) {
373
+ const uint8_t current = storage[2];
374
+ storage[2] = static_cast<uint8_t>(current + n);
375
+ return current;
376
+ }
377
+
378
+ // Returns the index of the last edge starting on, or before `offset`, with
379
+ // `n` containing the relative offset of `offset` inside that edge.
380
+ // Requires `offset` < length.
381
+ Position IndexOf(size_t offset) const;
382
+
383
+ // Returns the index of the last edge starting before `offset`, with `n`
384
+ // containing the relative offset of `offset` inside that edge.
385
+ // This function is useful to find the edges for some span of bytes ending at
386
+ // `offset` (i.e., `n` bytes). For example:
387
+ //
388
+ // Position pos = IndexBefore(n)
389
+ // edges = Edges(begin(), pos.index) // All full edges (may be empty)
390
+ // last = Sub(Edge(pos.index), 0, pos.n) // Last partial edge (may be empty)
391
+ //
392
+ // Requires 0 < `offset` <= length.
393
+ Position IndexBefore(size_t offset) const;
394
+
395
+ // Returns the index of the edge ending at (or on) length `length`, and the
396
+ // number of bytes inside that edge up to `length`. For example, if we have a
397
+ // Node with 2 edges, one of 10 and one of 20 long, then IndexOfLength(27)
398
+ // will return {1, 17}, and IndexOfLength(10) will return {0, 10}.
399
+ Position IndexOfLength(size_t n) const;
400
+
401
+ // Identical to the above function except starting from the position `front`.
402
+ // This function is equivalent to `IndexBefore(front.n + offset)`, with
403
+ // the difference that this function is optimized to start at `front.index`.
404
+ Position IndexBefore(Position front, size_t offset) const;
405
+
406
+ // Returns the index of the edge directly beyond the edge containing offset
407
+ // `offset`, with `n` containing the distance of that edge from `offset`.
408
+ // This function is useful for iteratively finding suffix nodes and remaining
409
+ // partial bytes in left-most suffix nodes as for example in CopySuffix.
410
+ // Requires `offset` < length.
411
+ Position IndexBeyond(size_t offset) const;
412
+
413
+ // Destruction
414
+ static void DestroyLeaf(CordRepBtree* tree, size_t begin, size_t end);
415
+ static void DestroyNonLeaf(CordRepBtree* tree, size_t begin, size_t end);
416
+ static void DestroyTree(CordRepBtree* tree, size_t begin, size_t end);
417
+ static void Delete(CordRepBtree* tree) { delete tree; }
418
+
419
+ // Creates a new leaf node containing as much data as possible from `data`.
420
+ // The data is added either forwards or reversed depending on `edge_type`.
421
+ // Callers must check the length of the returned node to determine if all data
422
+ // was copied or not.
423
+ // See the `Append/Prepend` function for the meaning and purpose of `extra`.
424
+ template <EdgeType edge_type>
425
+ static CordRepBtree* NewLeaf(absl::string_view data, size_t extra);
426
+
427
+ // Creates a raw copy of this Btree node, copying all properties, but
428
+ // without adding any references to existing edges.
429
+ CordRepBtree* CopyRaw() const;
430
+
431
+ // Creates a full copy of this Btree node, adding a reference on all edges.
432
+ CordRepBtree* Copy() const;
433
+
434
+ // Creates a partial copy of this Btree node, copying all edges up to `end`,
435
+ // adding a reference on each copied edge, and sets the length of the newly
436
+ // created copy to `new_length`.
437
+ CordRepBtree* CopyBeginTo(size_t end, size_t new_length) const;
438
+
439
+ // Returns a tree containing the edges [tree->begin(), end) and length
440
+ // of `new_length`. This method consumes a reference on the provided
441
+ // tree, and logically performs the following operation:
442
+ // result = tree->CopyBeginTo(end, new_length);
443
+ // CordRep::Unref(tree);
444
+ // return result;
445
+ static CordRepBtree* ConsumeBeginTo(CordRepBtree* tree, size_t end,
446
+ size_t new_length);
447
+
448
+ // Creates a partial copy of this Btree node, copying all edges starting at
449
+ // `begin`, adding a reference on each copied edge, and sets the length of
450
+ // the newly created copy to `new_length`.
451
+ CordRepBtree* CopyToEndFrom(size_t begin, size_t new_length) const;
452
+
453
+ // Extracts and returns the front edge from the provided tree.
454
+ // This method consumes a reference on the provided tree, and logically
455
+ // performs the following operation:
456
+ // edge = CordRep::Ref(tree->Edge(kFront));
457
+ // CordRep::Unref(tree);
458
+ // return edge;
459
+ static CordRep* ExtractFront(CordRepBtree* tree);
460
+
461
+ // Returns a tree containing the result of appending `right` to `left`.
462
+ static CordRepBtree* MergeTrees(CordRepBtree* left, CordRepBtree* right);
463
+
464
+ // Fallback functions for `Create()`, `Append()` and `Prepend()` which
465
+ // deal with legacy / non conforming input, i.e.: CONCAT trees.
466
+ static CordRepBtree* CreateSlow(CordRep* rep);
467
+ static CordRepBtree* AppendSlow(CordRepBtree*, CordRep* rep);
468
+ static CordRepBtree* PrependSlow(CordRepBtree*, CordRep* rep);
469
+
470
+ // Recursively rebuilds `tree` into `stack`. If 'consume` is set to true, the
471
+ // function will consume a reference on `tree`. `stack` is a null terminated
472
+ // array containing the new tree's state, with the current leaf node at
473
+ // stack[0], and parent nodes above that, or null for 'top of tree'.
474
+ static void Rebuild(CordRepBtree** stack, CordRepBtree* tree, bool consume);
475
+
476
+ // Aligns existing edges to start at index 0, to allow for a new edge to be
477
+ // added to the back of the current edges.
478
+ inline void AlignBegin();
479
+
480
+ // Aligns existing edges to end at `capacity`, to allow for a new edge to be
481
+ // added in front of the current edges.
482
+ inline void AlignEnd();
483
+
484
+ // Adds the provided edge to this node.
485
+ // Requires this node to have capacity for the edge. Realigns / moves
486
+ // existing edges as needed to prepend or append the new edge.
487
+ template <EdgeType edge_type>
488
+ inline void Add(CordRep* rep);
489
+
490
+ // Adds the provided edges to this node.
491
+ // Requires this node to have capacity for the edges. Realigns / moves
492
+ // existing edges as needed to prepend or append the new edges.
493
+ template <EdgeType edge_type>
494
+ inline void Add(absl::Span<CordRep* const>);
495
+
496
+ // Adds data from `data` to this node until either all data has been consumed,
497
+ // or there is no more capacity for additional flat nodes inside this node.
498
+ // Requires the current node to be a leaf node, data to be non empty, and the
499
+ // current node to have capacity for at least one more data edge.
500
+ // Returns any remaining data from `data` that was not added, which is
501
+ // depending on the edge type (front / back) either the remaining prefix of
502
+ // suffix of the input.
503
+ // See the `Append/Prepend` function for the meaning and purpose of `extra`.
504
+ template <EdgeType edge_type>
505
+ absl::string_view AddData(absl::string_view data, size_t extra);
506
+
507
+ // Replace the front or back edge with the provided value.
508
+ // Adopts a reference on `edge` and unrefs the old edge.
509
+ template <EdgeType edge_type>
510
+ inline void SetEdge(CordRep* edge);
511
+
512
+ // Returns a partial copy of the current tree containing the first `n` bytes
513
+ // of data. `CopyResult` contains both the resulting edge and its height. The
514
+ // resulting tree may be less high than the current tree, or even be a single
515
+ // matching data edge if `allow_folding` is set to true.
516
+ // For example, if `n == 1`, then the result will be the single data edge, and
517
+ // height will be set to -1 (one below the owning leaf node). If n == 0, this
518
+ // function returns null. Requires `n <= length`
519
+ CopyResult CopyPrefix(size_t n, bool allow_folding = true);
520
+
521
+ // Returns a partial copy of the current tree containing all data starting
522
+ // after `offset`. `CopyResult` contains both the resulting edge and its
523
+ // height. The resulting tree may be less high than the current tree, or even
524
+ // be a single matching data edge. For example, if `n == length - 1`, then the
525
+ // result will be a single data edge, and height will be set to -1 (one below
526
+ // the owning leaf node).
527
+ // Requires `offset < length`
528
+ CopyResult CopySuffix(size_t offset);
529
+
530
+ // Returns a OpResult value of {this, kSelf} or {Copy(), kCopied}
531
+ // depending on the value of `owned`.
532
+ inline OpResult ToOpResult(bool owned);
533
+
534
+ // Adds `rep` to the specified tree, returning the modified tree.
535
+ template <EdgeType edge_type>
536
+ static CordRepBtree* AddCordRep(CordRepBtree* tree, CordRep* rep);
537
+
538
+ // Adds `data` to the specified tree, returning the modified tree.
539
+ // See the `Append/Prepend` function for the meaning and purpose of `extra`.
540
+ template <EdgeType edge_type>
541
+ static CordRepBtree* AddData(CordRepBtree* tree, absl::string_view data,
542
+ size_t extra = 0);
543
+
544
+ // Merges `src` into `dst` with `src` being added either before (kFront) or
545
+ // after (kBack) `dst`. Requires the height of `dst` to be greater than or
546
+ // equal to the height of `src`.
547
+ template <EdgeType edge_type>
548
+ static CordRepBtree* Merge(CordRepBtree* dst, CordRepBtree* src);
549
+
550
+ // Fallback version of GetAppendBuffer for large trees: GetAppendBuffer()
551
+ // implements an inlined version for trees of limited height (3 levels),
552
+ // GetAppendBufferSlow implements the logic for large trees.
553
+ Span<char> GetAppendBufferSlow(size_t size);
554
+
555
+ // `edges_` contains all edges starting from this instance.
556
+ // These are explicitly `child` edges only, a cord btree (or any cord tree in
557
+ // that respect) does not store `parent` pointers anywhere: multiple trees /
558
+ // parents can reference the same shared child edge. The type of these edges
559
+ // depends on the height of the node. `Leaf nodes` (height == 0) contain `data
560
+ // edges` (external or flat nodes, or sub-strings thereof). All other nodes
561
+ // (height > 0) contain pointers to BTREE nodes with a height of `height - 1`.
562
+ CordRep* edges_[kMaxCapacity];
563
+
564
+ friend class CordRepBtreeTestPeer;
565
+ friend class CordRepBtreeNavigator;
566
+ };
567
+
568
+ inline CordRepBtree* CordRep::btree() {
569
+ assert(IsBtree());
570
+ return static_cast<CordRepBtree*>(this);
571
+ }
572
+
573
+ inline const CordRepBtree* CordRep::btree() const {
574
+ assert(IsBtree());
575
+ return static_cast<const CordRepBtree*>(this);
576
+ }
577
+
578
+ inline void CordRepBtree::InitInstance(int height, size_t begin, size_t end) {
579
+ tag = BTREE;
580
+ storage[0] = static_cast<uint8_t>(height);
581
+ storage[1] = static_cast<uint8_t>(begin);
582
+ storage[2] = static_cast<uint8_t>(end);
583
+ }
584
+
585
+ inline CordRep* CordRepBtree::Edge(size_t index) const {
586
+ assert(index >= begin());
587
+ assert(index < end());
588
+ return edges_[index];
589
+ }
590
+
591
+ inline CordRep* CordRepBtree::Edge(EdgeType edge_type) const {
592
+ return edges_[edge_type == kFront ? begin() : back()];
593
+ }
594
+
595
+ inline absl::Span<CordRep* const> CordRepBtree::Edges() const {
596
+ return {edges_ + begin(), size()};
597
+ }
598
+
599
+ inline absl::Span<CordRep* const> CordRepBtree::Edges(size_t begin,
600
+ size_t end) const {
601
+ assert(begin <= end);
602
+ assert(begin >= this->begin());
603
+ assert(end <= this->end());
604
+ return {edges_ + begin, static_cast<size_t>(end - begin)};
605
+ }
606
+
607
+ inline const char* CordRepBtree::EdgeDataPtr(const CordRep* r) {
608
+ assert(IsDataEdge(r));
609
+ size_t offset = 0;
610
+ if (r->tag == SUBSTRING) {
611
+ offset = r->substring()->start;
612
+ r = r->substring()->child;
613
+ }
614
+ return (r->tag >= FLAT ? r->flat()->Data() : r->external()->base) + offset;
615
+ }
616
+
617
+ inline absl::string_view CordRepBtree::EdgeData(const CordRep* r) {
618
+ return absl::string_view(EdgeDataPtr(r), r->length);
619
+ }
620
+
621
+ inline absl::string_view CordRepBtree::Data(size_t index) const {
622
+ assert(height() == 0);
623
+ return EdgeData(Edge(index));
624
+ }
625
+
626
+ inline bool CordRepBtree::IsDataEdge(const CordRep* rep) {
627
+ // The fast path is that `rep` is an EXTERNAL or FLAT node, making the below
628
+ // if a single, well predicted branch. We then repeat the FLAT or EXTERNAL
629
+ // check in the slow path the SUBSTRING check to optimize for the hot path.
630
+ if (rep->tag == EXTERNAL || rep->tag >= FLAT) return true;
631
+ if (rep->tag == SUBSTRING) rep = rep->substring()->child;
632
+ return rep->tag == EXTERNAL || rep->tag >= FLAT;
633
+ }
634
+
635
+ inline CordRepBtree* CordRepBtree::New(int height) {
636
+ CordRepBtree* tree = new CordRepBtree;
637
+ tree->length = 0;
638
+ tree->InitInstance(height);
639
+ return tree;
640
+ }
641
+
642
+ inline CordRepBtree* CordRepBtree::New(CordRep* rep) {
643
+ CordRepBtree* tree = new CordRepBtree;
644
+ int height = rep->IsBtree() ? rep->btree()->height() + 1 : 0;
645
+ tree->length = rep->length;
646
+ tree->InitInstance(height, /*begin=*/0, /*end=*/1);
647
+ tree->edges_[0] = rep;
648
+ return tree;
649
+ }
650
+
651
+ inline CordRepBtree* CordRepBtree::New(CordRepBtree* front,
652
+ CordRepBtree* back) {
653
+ assert(front->height() == back->height());
654
+ CordRepBtree* tree = new CordRepBtree;
655
+ tree->length = front->length + back->length;
656
+ tree->InitInstance(front->height() + 1, /*begin=*/0, /*end=*/2);
657
+ tree->edges_[0] = front;
658
+ tree->edges_[1] = back;
659
+ return tree;
660
+ }
661
+
662
+ inline void CordRepBtree::DestroyTree(CordRepBtree* tree, size_t begin,
663
+ size_t end) {
664
+ if (tree->height() == 0) {
665
+ DestroyLeaf(tree, begin, end);
666
+ } else {
667
+ DestroyNonLeaf(tree, begin, end);
668
+ }
669
+ }
670
+
671
+ inline void CordRepBtree::Destroy(CordRepBtree* tree) {
672
+ DestroyTree(tree, tree->begin(), tree->end());
673
+ }
674
+
675
+ inline void CordRepBtree::Unref(absl::Span<CordRep* const> edges) {
676
+ for (CordRep* edge : edges) {
677
+ if (ABSL_PREDICT_FALSE(!edge->refcount.Decrement())) {
678
+ CordRep::Destroy(edge);
679
+ }
680
+ }
681
+ }
682
+
683
+ inline CordRepBtree* CordRepBtree::CopyRaw() const {
684
+ auto* tree = static_cast<CordRepBtree*>(::operator new(sizeof(CordRepBtree)));
685
+ memcpy(static_cast<void*>(tree), this, sizeof(CordRepBtree));
686
+ new (&tree->refcount) RefcountAndFlags;
687
+ return tree;
688
+ }
689
+
690
+ inline CordRepBtree* CordRepBtree::Copy() const {
691
+ CordRepBtree* tree = CopyRaw();
692
+ for (CordRep* rep : Edges()) CordRep::Ref(rep);
693
+ return tree;
694
+ }
695
+
696
+ inline CordRepBtree* CordRepBtree::CopyToEndFrom(size_t begin,
697
+ size_t new_length) const {
698
+ assert(begin >= this->begin());
699
+ assert(begin <= this->end());
700
+ CordRepBtree* tree = CopyRaw();
701
+ tree->length = new_length;
702
+ tree->set_begin(begin);
703
+ for (CordRep* edge : tree->Edges()) CordRep::Ref(edge);
704
+ return tree;
705
+ }
706
+
707
+ inline CordRepBtree* CordRepBtree::CopyBeginTo(size_t end,
708
+ size_t new_length) const {
709
+ assert(end <= capacity());
710
+ assert(end >= this->begin());
711
+ CordRepBtree* tree = CopyRaw();
712
+ tree->length = new_length;
713
+ tree->set_end(end);
714
+ for (CordRep* edge : tree->Edges()) CordRep::Ref(edge);
715
+ return tree;
716
+ }
717
+
718
+ inline void CordRepBtree::AlignBegin() {
719
+ // The below code itself does not need to be fast as typically we have
720
+ // mono-directional append/prepend calls, and `begin` / `end` are typically
721
+ // adjusted no more than once. But we want to avoid potential register clobber
722
+ // effects, making the compiler emit register save/store/spills, and minimize
723
+ // the size of code.
724
+ const size_t delta = begin();
725
+ if (ABSL_PREDICT_FALSE(delta != 0)) {
726
+ const size_t new_end = end() - delta;
727
+ set_begin(0);
728
+ set_end(new_end);
729
+ // TODO(mvels): we can write this using 2 loads / 2 stores depending on
730
+ // total size for the kMaxCapacity = 6 case. I.e., we can branch (switch) on
731
+ // size, and then do overlapping load/store of up to 4 pointers (inlined as
732
+ // XMM, YMM or ZMM load/store) and up to 2 pointers (XMM / YMM), which is a)
733
+ // compact and b) not clobbering any registers.
734
+ ABSL_INTERNAL_ASSUME(new_end <= kMaxCapacity);
735
+ #ifdef __clang__
736
+ #pragma unroll 1
737
+ #endif
738
+ for (size_t i = 0; i < new_end; ++i) {
739
+ edges_[i] = edges_[i + delta];
740
+ }
741
+ }
742
+ }
743
+
744
+ inline void CordRepBtree::AlignEnd() {
745
+ // See comments in `AlignBegin` for motivation on the hand-rolled for loops.
746
+ const size_t delta = capacity() - end();
747
+ if (delta != 0) {
748
+ const size_t new_begin = begin() + delta;
749
+ const size_t new_end = end() + delta;
750
+ set_begin(new_begin);
751
+ set_end(new_end);
752
+ ABSL_INTERNAL_ASSUME(new_end <= kMaxCapacity);
753
+ #ifdef __clang__
754
+ #pragma unroll 1
755
+ #endif
756
+ for (size_t i = new_end - 1; i >= new_begin; --i) {
757
+ edges_[i] = edges_[i - delta];
758
+ }
759
+ }
760
+ }
761
+
762
+ template <>
763
+ inline void CordRepBtree::Add<CordRepBtree::kBack>(CordRep* rep) {
764
+ AlignBegin();
765
+ edges_[fetch_add_end(1)] = rep;
766
+ }
767
+
768
+ template <>
769
+ inline void CordRepBtree::Add<CordRepBtree::kBack>(
770
+ absl::Span<CordRep* const> edges) {
771
+ AlignBegin();
772
+ size_t new_end = end();
773
+ for (CordRep* edge : edges) edges_[new_end++] = edge;
774
+ set_end(new_end);
775
+ }
776
+
777
+ template <>
778
+ inline void CordRepBtree::Add<CordRepBtree::kFront>(CordRep* rep) {
779
+ AlignEnd();
780
+ edges_[sub_fetch_begin(1)] = rep;
781
+ }
782
+
783
+ template <>
784
+ inline void CordRepBtree::Add<CordRepBtree::kFront>(
785
+ absl::Span<CordRep* const> edges) {
786
+ AlignEnd();
787
+ size_t new_begin = begin() - edges.size();
788
+ set_begin(new_begin);
789
+ for (CordRep* edge : edges) edges_[new_begin++] = edge;
790
+ }
791
+
792
+ template <CordRepBtree::EdgeType edge_type>
793
+ inline void CordRepBtree::SetEdge(CordRep* edge) {
794
+ const int idx = edge_type == kFront ? begin() : back();
795
+ CordRep::Unref(edges_[idx]);
796
+ edges_[idx] = edge;
797
+ }
798
+
799
+ inline CordRepBtree::OpResult CordRepBtree::ToOpResult(bool owned) {
800
+ return owned ? OpResult{this, kSelf} : OpResult{Copy(), kCopied};
801
+ }
802
+
803
+ inline CordRepBtree::Position CordRepBtree::IndexOf(size_t offset) const {
804
+ assert(offset < length);
805
+ size_t index = begin();
806
+ while (offset >= edges_[index]->length) offset -= edges_[index++]->length;
807
+ return {index, offset};
808
+ }
809
+
810
+ inline CordRepBtree::Position CordRepBtree::IndexBefore(size_t offset) const {
811
+ assert(offset > 0);
812
+ assert(offset <= length);
813
+ size_t index = begin();
814
+ while (offset > edges_[index]->length) offset -= edges_[index++]->length;
815
+ return {index, offset};
816
+ }
817
+
818
+ inline CordRepBtree::Position CordRepBtree::IndexBefore(Position front,
819
+ size_t offset) const {
820
+ size_t index = front.index;
821
+ offset = offset + front.n;
822
+ while (offset > edges_[index]->length) offset -= edges_[index++]->length;
823
+ return {index, offset};
824
+ }
825
+
826
+ inline CordRepBtree::Position CordRepBtree::IndexOfLength(size_t n) const {
827
+ assert(n <= length);
828
+ size_t index = back();
829
+ size_t strip = length - n;
830
+ while (strip >= edges_[index]->length) strip -= edges_[index--]->length;
831
+ return {index, edges_[index]->length - strip};
832
+ }
833
+
834
+ inline CordRepBtree::Position CordRepBtree::IndexBeyond(
835
+ const size_t offset) const {
836
+ // We need to find the edge which `starting offset` is beyond (>=)`offset`.
837
+ // For this we can't use the `offset -= length` logic of IndexOf. Instead, we
838
+ // track the offset of the `current edge` in `off`, which we increase as we
839
+ // iterate over the edges until we find the matching edge.
840
+ size_t off = 0;
841
+ size_t index = begin();
842
+ while (offset > off) off += edges_[index++]->length;
843
+ return {index, off - offset};
844
+ }
845
+
846
+ inline CordRepBtree* CordRepBtree::Create(CordRep* rep) {
847
+ if (IsDataEdge(rep)) return New(rep);
848
+ return CreateSlow(rep);
849
+ }
850
+
851
+ inline Span<char> CordRepBtree::GetAppendBuffer(size_t size) {
852
+ assert(refcount.IsMutable());
853
+ CordRepBtree* tree = this;
854
+ const int height = this->height();
855
+ CordRepBtree* n1 = tree;
856
+ CordRepBtree* n2 = tree;
857
+ CordRepBtree* n3 = tree;
858
+ switch (height) {
859
+ case 3:
860
+ tree = tree->Edge(kBack)->btree();
861
+ if (!tree->refcount.IsMutable()) return {};
862
+ n2 = tree;
863
+ ABSL_FALLTHROUGH_INTENDED;
864
+ case 2:
865
+ tree = tree->Edge(kBack)->btree();
866
+ if (!tree->refcount.IsMutable()) return {};
867
+ n1 = tree;
868
+ ABSL_FALLTHROUGH_INTENDED;
869
+ case 1:
870
+ tree = tree->Edge(kBack)->btree();
871
+ if (!tree->refcount.IsMutable()) return {};
872
+ ABSL_FALLTHROUGH_INTENDED;
873
+ case 0:
874
+ CordRep* edge = tree->Edge(kBack);
875
+ if (!edge->refcount.IsMutable()) return {};
876
+ if (edge->tag < FLAT) return {};
877
+ size_t avail = edge->flat()->Capacity() - edge->length;
878
+ if (avail == 0) return {};
879
+ size_t delta = (std::min)(size, avail);
880
+ Span<char> span = {edge->flat()->Data() + edge->length, delta};
881
+ edge->length += delta;
882
+ switch (height) {
883
+ case 3:
884
+ n3->length += delta;
885
+ ABSL_FALLTHROUGH_INTENDED;
886
+ case 2:
887
+ n2->length += delta;
888
+ ABSL_FALLTHROUGH_INTENDED;
889
+ case 1:
890
+ n1->length += delta;
891
+ ABSL_FALLTHROUGH_INTENDED;
892
+ case 0:
893
+ tree->length += delta;
894
+ return span;
895
+ }
896
+ break;
897
+ }
898
+ return GetAppendBufferSlow(size);
899
+ }
900
+
901
+ extern template CordRepBtree* CordRepBtree::AddCordRep<CordRepBtree::kBack>(
902
+ CordRepBtree* tree, CordRep* rep);
903
+
904
+ extern template CordRepBtree* CordRepBtree::AddCordRep<CordRepBtree::kFront>(
905
+ CordRepBtree* tree, CordRep* rep);
906
+
907
+ inline CordRepBtree* CordRepBtree::Append(CordRepBtree* tree, CordRep* rep) {
908
+ if (ABSL_PREDICT_TRUE(IsDataEdge(rep))) {
909
+ return CordRepBtree::AddCordRep<kBack>(tree, rep);
910
+ }
911
+ return AppendSlow(tree, rep);
912
+ }
913
+
914
+ inline CordRepBtree* CordRepBtree::Prepend(CordRepBtree* tree, CordRep* rep) {
915
+ if (ABSL_PREDICT_TRUE(IsDataEdge(rep))) {
916
+ return CordRepBtree::AddCordRep<kFront>(tree, rep);
917
+ }
918
+ return PrependSlow(tree, rep);
919
+ }
920
+
921
+ #ifdef NDEBUG
922
+
923
+ inline CordRepBtree* CordRepBtree::AssertValid(CordRepBtree* tree,
924
+ bool /* shallow */) {
925
+ return tree;
926
+ }
927
+
928
+ inline const CordRepBtree* CordRepBtree::AssertValid(const CordRepBtree* tree,
929
+ bool /* shallow */) {
930
+ return tree;
931
+ }
932
+
933
+ #endif
934
+
935
+ } // namespace cord_internal
936
+ ABSL_NAMESPACE_END
937
+ } // namespace absl
938
+
939
+ #endif // ABSL_STRINGS_INTERNAL_CORD_REP_BTREE_H_