grpc 1.32.0 → 1.52.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 (2668) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1741 -3302
  3. data/etc/roots.pem +592 -899
  4. data/include/grpc/byte_buffer.h +76 -1
  5. data/include/grpc/byte_buffer_reader.h +19 -1
  6. data/include/grpc/compression.h +3 -3
  7. data/include/grpc/event_engine/README.md +38 -0
  8. data/include/grpc/event_engine/endpoint_config.h +49 -0
  9. data/include/grpc/event_engine/event_engine.h +467 -0
  10. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  11. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  12. data/include/grpc/event_engine/memory_allocator.h +211 -0
  13. data/include/grpc/event_engine/memory_request.h +57 -0
  14. data/include/grpc/event_engine/port.h +39 -0
  15. data/include/grpc/event_engine/slice.h +306 -0
  16. data/include/grpc/event_engine/slice_buffer.h +147 -0
  17. data/include/grpc/fork.h +25 -1
  18. data/include/grpc/grpc.h +93 -38
  19. data/include/grpc/grpc_posix.h +22 -18
  20. data/include/grpc/grpc_security.h +536 -302
  21. data/include/grpc/grpc_security_constants.h +17 -14
  22. data/include/grpc/impl/codegen/atm.h +4 -70
  23. data/include/grpc/impl/codegen/atm_gcc_atomic.h +4 -66
  24. data/include/grpc/impl/codegen/atm_gcc_sync.h +4 -60
  25. data/include/grpc/impl/codegen/atm_windows.h +4 -103
  26. data/include/grpc/impl/codegen/byte_buffer.h +4 -76
  27. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -17
  28. data/include/grpc/impl/codegen/compression_types.h +5 -83
  29. data/include/grpc/impl/codegen/connectivity_state.h +5 -19
  30. data/include/grpc/impl/codegen/fork.h +4 -23
  31. data/include/grpc/impl/codegen/gpr_types.h +5 -34
  32. data/include/grpc/impl/codegen/grpc_types.h +5 -762
  33. data/include/grpc/impl/codegen/log.h +4 -87
  34. data/include/grpc/impl/codegen/port_platform.h +3 -669
  35. data/include/grpc/impl/codegen/propagation_bits.h +4 -27
  36. data/include/grpc/impl/codegen/slice.h +4 -102
  37. data/include/grpc/impl/codegen/status.h +4 -129
  38. data/include/grpc/impl/codegen/sync.h +4 -40
  39. data/include/grpc/impl/codegen/sync_abseil.h +4 -11
  40. data/include/grpc/impl/codegen/sync_custom.h +4 -13
  41. data/include/grpc/impl/codegen/sync_generic.h +4 -23
  42. data/include/grpc/impl/codegen/sync_posix.h +4 -27
  43. data/include/grpc/impl/codegen/sync_windows.h +4 -11
  44. data/include/grpc/impl/compression_types.h +109 -0
  45. data/include/grpc/impl/connectivity_state.h +47 -0
  46. data/include/grpc/impl/grpc_types.h +824 -0
  47. data/include/grpc/impl/propagation_bits.h +54 -0
  48. data/include/grpc/impl/slice_type.h +112 -0
  49. data/include/grpc/load_reporting.h +1 -1
  50. data/include/grpc/module.modulemap +19 -15
  51. data/include/grpc/slice.h +1 -12
  52. data/include/grpc/slice_buffer.h +3 -3
  53. data/include/grpc/status.h +131 -1
  54. data/include/grpc/support/atm.h +70 -1
  55. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  56. data/include/grpc/support/atm_gcc_sync.h +58 -1
  57. data/include/grpc/support/atm_windows.h +105 -1
  58. data/include/grpc/support/log.h +87 -1
  59. data/include/grpc/support/log_windows.h +1 -1
  60. data/include/grpc/support/port_platform.h +767 -1
  61. data/include/grpc/support/string_util.h +1 -1
  62. data/include/grpc/support/sync.h +38 -5
  63. data/include/grpc/support/sync_abseil.h +11 -1
  64. data/include/grpc/support/sync_custom.h +13 -1
  65. data/include/grpc/support/sync_generic.h +24 -1
  66. data/include/grpc/support/sync_posix.h +27 -1
  67. data/include/grpc/support/sync_windows.h +15 -1
  68. data/include/grpc/support/time.h +32 -9
  69. data/src/core/ext/filters/census/grpc_context.cc +20 -17
  70. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +315 -0
  71. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +142 -0
  72. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  73. data/src/core/ext/filters/channel_idle/idle_filter_state.h +68 -0
  74. data/src/core/ext/filters/client_channel/backend_metric.cc +36 -34
  75. data/src/core/ext/filters/client_channel/backend_metric.h +19 -8
  76. data/src/core/ext/filters/client_channel/backup_poller.cc +49 -44
  77. data/src/core/ext/filters/client_channel/backup_poller.h +23 -24
  78. data/src/core/ext/filters/client_channel/channel_connectivity.cc +205 -204
  79. data/src/core/ext/filters/client_channel/client_channel.cc +2262 -3309
  80. data/src/core/ext/filters/client_channel/client_channel.h +605 -60
  81. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +21 -24
  82. data/src/core/ext/filters/client_channel/client_channel_channelz.h +32 -22
  83. data/src/core/ext/filters/client_channel/client_channel_factory.cc +19 -42
  84. data/src/core/ext/filters/client_channel/client_channel_factory.h +25 -26
  85. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +33 -61
  86. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  87. data/src/core/ext/filters/client_channel/client_channel_service_config.h +111 -0
  88. data/src/core/ext/filters/client_channel/config_selector.cc +2 -4
  89. data/src/core/ext/filters/client_channel/config_selector.h +81 -23
  90. data/src/core/ext/filters/client_channel/connector.h +32 -27
  91. data/src/core/ext/filters/client_channel/dynamic_filters.cc +175 -0
  92. data/src/core/ext/filters/client_channel/dynamic_filters.h +108 -0
  93. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -163
  94. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +37 -42
  95. data/src/core/ext/filters/client_channel/health/health_check_client.cc +140 -578
  96. data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -158
  97. data/src/core/ext/filters/client_channel/http_proxy.cc +152 -170
  98. data/src/core/ext/filters/client_channel/http_proxy.h +43 -19
  99. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  100. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +56 -39
  101. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +13 -9
  102. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  103. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +45 -19
  104. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +16 -11
  105. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +64 -143
  106. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +38 -21
  107. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +732 -590
  108. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +27 -31
  109. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +16 -4
  110. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +8 -6
  111. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +19 -20
  112. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +29 -23
  113. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +47 -39
  114. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +28 -27
  115. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +415 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  117. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1129 -0
  118. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +94 -0
  119. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +249 -230
  120. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +520 -484
  121. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +890 -0
  122. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +47 -0
  123. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2526 -0
  124. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +285 -259
  125. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +181 -174
  126. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +297 -262
  127. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +558 -213
  128. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  129. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +64 -0
  130. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  131. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +794 -0
  132. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +699 -0
  133. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1224 -0
  134. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
  135. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
  136. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  137. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +31 -67
  138. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +29 -27
  139. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +148 -0
  140. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +691 -361
  141. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +64 -78
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +57 -51
  143. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +130 -146
  144. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +715 -314
  145. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +102 -63
  146. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  147. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +22 -21
  148. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  149. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +20 -20
  150. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +129 -250
  151. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +75 -90
  152. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +26 -9
  153. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +471 -0
  154. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +269 -0
  155. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +121 -0
  156. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +87 -85
  157. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +1004 -407
  158. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +30 -0
  159. data/src/core/ext/filters/client_channel/retry_filter.cc +2661 -0
  160. data/src/core/ext/filters/client_channel/retry_filter.h +31 -0
  161. data/src/core/ext/filters/client_channel/retry_service_config.cc +282 -0
  162. data/src/core/ext/filters/client_channel/retry_service_config.h +105 -0
  163. data/src/core/ext/filters/client_channel/retry_throttle.cc +42 -94
  164. data/src/core/ext/filters/client_channel/retry_throttle.h +47 -32
  165. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +78 -46
  166. data/src/core/ext/filters/client_channel/subchannel.cc +443 -653
  167. data/src/core/ext/filters/client_channel/subchannel.h +191 -218
  168. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  169. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +28 -59
  170. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +57 -48
  171. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +470 -0
  172. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
  173. data/src/core/ext/filters/deadline/deadline_filter.cc +165 -133
  174. data/src/core/ext/filters/deadline/deadline_filter.h +18 -15
  175. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +280 -0
  176. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +71 -0
  177. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  178. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +112 -0
  179. data/src/core/ext/filters/http/client/http_client_filter.cc +126 -564
  180. data/src/core/ext/filters/http/client/http_client_filter.h +52 -22
  181. data/src/core/ext/filters/http/client_authority_filter.cc +70 -139
  182. data/src/core/ext/filters/http/client_authority_filter.h +46 -24
  183. data/src/core/ext/filters/http/http_filters_plugin.cc +65 -89
  184. data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
  185. data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
  186. data/src/core/ext/filters/http/server/http_server_filter.cc +121 -488
  187. data/src/core/ext/filters/http/server/http_server_filter.h +55 -21
  188. data/src/core/ext/filters/message_size/message_size_filter.cc +162 -188
  189. data/src/core/ext/filters/message_size/message_size_filter.h +42 -17
  190. data/src/core/ext/filters/rbac/rbac_filter.cc +174 -0
  191. data/src/core/ext/filters/rbac/rbac_filter.h +84 -0
  192. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +819 -0
  193. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +86 -0
  194. data/src/core/ext/filters/server_config_selector/server_config_selector.h +83 -0
  195. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +159 -0
  196. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +33 -0
  197. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
  198. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  199. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  200. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  201. data/src/core/ext/transport/chttp2/alpn/alpn.cc +20 -19
  202. data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
  203. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +326 -144
  204. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +42 -34
  205. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +892 -280
  206. data/src/core/ext/transport/chttp2/server/chttp2_server.h +30 -21
  207. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +35 -33
  208. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +33 -31
  209. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +32 -30
  210. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
  211. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +1021 -1350
  212. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +49 -25
  213. data/src/core/ext/transport/chttp2/transport/context_list.cc +27 -25
  214. data/src/core/ext/transport/chttp2/transport/context_list.h +32 -31
  215. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
  216. data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
  217. data/src/core/ext/transport/chttp2/transport/flow_control.cc +361 -285
  218. data/src/core/ext/transport/chttp2/transport/flow_control.h +259 -320
  219. data/src/core/ext/transport/chttp2/transport/frame.h +19 -23
  220. data/src/core/ext/transport/chttp2/transport/frame_data.cc +91 -239
  221. data/src/core/ext/transport/chttp2/transport/frame_data.h +41 -63
  222. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +61 -56
  223. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +28 -25
  224. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +44 -39
  225. data/src/core/ext/transport/chttp2/transport/frame_ping.h +30 -25
  226. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +48 -39
  227. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +28 -24
  228. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +60 -60
  229. data/src/core/ext/transport/chttp2/transport/frame_settings.h +33 -27
  230. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +46 -44
  231. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +26 -24
  232. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +47 -0
  233. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +520 -800
  234. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +204 -94
  235. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +89 -0
  236. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +80 -0
  237. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +859 -1276
  238. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +129 -104
  239. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +246 -0
  240. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +137 -0
  241. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  242. data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -35
  243. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  244. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  245. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  246. data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
  247. data/src/core/ext/transport/chttp2/transport/internal.h +270 -341
  248. data/src/core/ext/transport/chttp2/transport/parsing.cc +416 -384
  249. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +32 -32
  250. data/src/core/ext/transport/chttp2/transport/stream_map.cc +24 -24
  251. data/src/core/ext/transport/chttp2/transport/stream_map.h +32 -31
  252. data/src/core/ext/transport/chttp2/transport/varint.cc +29 -24
  253. data/src/core/ext/transport/chttp2/transport/varint.h +70 -54
  254. data/src/core/ext/transport/chttp2/transport/writing.cc +235 -250
  255. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -22
  256. data/src/core/ext/transport/inproc/inproc_transport.cc +371 -413
  257. data/src/core/ext/transport/inproc/inproc_transport.h +22 -23
  258. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  259. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +502 -0
  260. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  261. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +569 -0
  262. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +125 -0
  263. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +516 -0
  264. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  265. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  266. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  267. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +159 -0
  268. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +64 -0
  269. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +189 -0
  270. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  271. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +128 -0
  272. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  273. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +106 -0
  274. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  275. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +101 -0
  276. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  277. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +613 -0
  278. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  279. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +107 -0
  280. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  281. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +53 -1
  282. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  283. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +63 -13
  284. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +154 -108
  285. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +891 -291
  286. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +413 -0
  287. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2251 -0
  288. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +50 -29
  289. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +250 -82
  290. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +374 -210
  291. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2308 -620
  292. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
  293. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +58 -20
  294. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +61 -27
  295. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +317 -91
  296. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  297. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1437 -0
  298. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +81 -48
  299. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +470 -140
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -8
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +63 -22
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +255 -143
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1431 -409
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +110 -43
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +611 -133
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
  307. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +52 -19
  308. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +47 -0
  309. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +107 -0
  310. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  311. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +159 -0
  312. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +169 -95
  313. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +986 -291
  314. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +142 -92
  315. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +866 -295
  316. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
  317. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +72 -26
  318. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +245 -74
  319. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1438 -215
  320. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -6
  321. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +42 -12
  322. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  323. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +177 -0
  324. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
  325. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +89 -29
  326. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +56 -0
  327. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +182 -0
  328. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  329. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +122 -0
  330. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -37
  331. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +234 -94
  332. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +92 -39
  333. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +486 -112
  334. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
  335. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +419 -163
  336. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
  337. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +50 -17
  338. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +138 -57
  339. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +812 -172
  340. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +115 -67
  341. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +704 -225
  342. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
  343. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +238 -0
  344. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +30 -12
  345. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +131 -39
  346. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  347. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +140 -0
  348. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
  349. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +748 -0
  350. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
  351. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +757 -0
  352. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +145 -98
  353. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +736 -241
  354. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +48 -25
  355. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +304 -106
  356. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +781 -458
  357. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4982 -1397
  358. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -19
  359. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +189 -57
  360. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +241 -0
  361. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1191 -0
  362. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  363. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +92 -0
  364. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  365. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +107 -0
  366. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -15
  367. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +104 -37
  368. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  369. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +138 -0
  370. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  371. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +254 -0
  372. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  373. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  374. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  375. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +98 -0
  376. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  377. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +221 -0
  378. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +33 -0
  379. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +43 -0
  380. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  381. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +226 -0
  382. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  383. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +150 -0
  384. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
  385. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +89 -0
  386. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
  387. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +395 -0
  388. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
  389. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +445 -0
  390. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +71 -0
  391. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +237 -0
  392. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
  393. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +172 -0
  394. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  395. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  396. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +331 -172
  397. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2090 -484
  398. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  399. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  400. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  401. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -0
  402. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  403. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  404. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -2
  405. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +8 -4
  406. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +116 -50
  407. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +718 -187
  408. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +43 -27
  409. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +196 -74
  410. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +137 -51
  411. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +833 -158
  412. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  413. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +168 -0
  414. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
  415. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +35 -10
  416. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +214 -63
  417. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1189 -200
  418. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -19
  419. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +138 -56
  420. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
  421. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +651 -0
  422. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  423. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +116 -0
  424. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  425. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +265 -0
  426. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  427. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +230 -0
  428. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +29 -14
  429. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +127 -45
  430. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
  431. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +121 -0
  432. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
  433. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +62 -22
  434. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
  435. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +52 -19
  436. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +37 -21
  437. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +156 -55
  438. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -18
  439. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +150 -51
  440. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
  441. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +178 -0
  442. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
  443. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +186 -68
  444. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
  445. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +309 -110
  446. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
  447. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +295 -106
  448. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  449. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +213 -0
  450. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +10 -1
  451. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +5 -1
  452. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  453. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +143 -0
  454. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +24 -10
  455. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +87 -26
  456. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
  457. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +134 -37
  458. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  459. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  460. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  461. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  462. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -7
  463. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +54 -14
  464. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  465. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +131 -0
  466. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  467. data/src/core/ext/upb-generated/google/api/annotations.upb.h +25 -1
  468. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +271 -0
  469. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +1280 -0
  470. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +167 -118
  471. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +965 -338
  472. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  473. data/src/core/ext/upb-generated/google/api/http.upb.h +252 -100
  474. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  475. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +115 -0
  476. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  477. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +52 -17
  478. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +375 -283
  479. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2467 -972
  480. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  481. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +50 -15
  482. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  483. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +35 -10
  484. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  485. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +213 -78
  486. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  487. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +50 -15
  488. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  489. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +356 -118
  490. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  491. data/src/core/ext/upb-generated/google/rpc/status.upb.h +66 -25
  492. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  493. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +335 -0
  494. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  495. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +119 -44
  496. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
  497. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +817 -316
  498. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
  499. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +105 -33
  500. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  501. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +81 -25
  502. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  503. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +495 -186
  504. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  505. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +216 -0
  506. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  507. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +792 -0
  508. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  509. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +229 -42
  510. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +55 -0
  511. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +112 -0
  512. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  513. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +18 -1
  514. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  515. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +70 -15
  516. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
  517. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +63 -13
  518. data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
  519. data/src/core/ext/upb-generated/validate/validate.upb.h +3054 -1023
  520. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  521. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +290 -0
  522. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  523. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +112 -0
  524. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  525. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  526. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  527. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +306 -0
  528. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  529. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +103 -0
  530. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
  531. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +83 -0
  532. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  533. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  534. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
  535. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +208 -0
  536. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
  537. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +119 -0
  538. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  539. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +107 -0
  540. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
  541. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +131 -0
  542. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
  543. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +248 -0
  544. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
  545. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +125 -0
  546. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +74 -0
  547. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +200 -0
  548. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +46 -0
  549. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +113 -0
  550. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  551. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  552. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  553. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  554. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  555. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  556. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  557. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  558. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  559. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +914 -0
  560. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  561. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  562. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  563. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +151 -0
  564. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  565. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +226 -0
  566. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  567. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  568. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  569. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  570. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +45 -0
  571. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +107 -0
  572. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  573. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  574. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  575. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  576. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +102 -0
  577. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +55 -0
  578. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  579. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  580. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  581. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  582. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +56 -0
  583. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  584. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  585. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  586. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  587. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  588. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  589. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  590. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  591. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  592. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  593. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  594. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +48 -0
  595. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  596. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +38 -0
  597. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +222 -0
  599. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  600. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +397 -0
  601. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  602. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +98 -0
  603. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +559 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +155 -0
  606. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +51 -0
  607. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +138 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +112 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  614. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +54 -0
  615. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  616. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +270 -0
  617. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +150 -0
  618. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +168 -0
  619. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +65 -0
  620. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +53 -0
  621. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +47 -0
  623. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +35 -0
  624. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  625. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  626. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +235 -0
  627. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  628. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +228 -0
  629. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +75 -0
  630. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +53 -0
  631. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  632. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +300 -0
  633. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +110 -0
  634. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +41 -0
  635. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  636. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  637. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  638. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +57 -0
  639. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  640. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +70 -0
  641. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  642. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  643. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  644. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +99 -0
  645. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  646. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +128 -0
  647. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +60 -0
  648. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +136 -0
  649. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  650. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +48 -0
  651. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  652. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +220 -0
  653. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +65 -0
  654. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +190 -0
  655. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  656. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  657. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  658. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +71 -0
  659. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  660. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  661. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  662. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -0
  663. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  664. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
  665. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  666. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +194 -0
  667. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +75 -0
  668. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +112 -0
  669. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  670. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +939 -0
  671. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +305 -0
  672. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +77 -0
  673. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  674. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +199 -0
  675. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +90 -0
  676. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  677. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  678. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  679. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  680. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +57 -0
  681. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  682. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  683. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  684. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  685. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  686. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  687. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  688. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  689. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  690. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  691. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  692. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +61 -0
  693. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  694. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  695. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  696. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  697. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  698. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -0
  699. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  700. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
  701. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  702. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
  703. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  704. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +80 -0
  705. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  706. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -0
  707. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  708. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  709. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  710. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +562 -0
  711. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +130 -0
  712. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  713. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  714. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  715. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  716. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +213 -0
  717. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +65 -0
  718. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +91 -0
  719. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  720. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +254 -0
  721. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +65 -0
  722. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  723. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  724. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +58 -0
  725. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  726. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +197 -0
  727. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +100 -0
  728. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +76 -0
  729. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  730. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +153 -0
  731. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  732. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  733. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  734. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  735. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  736. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  737. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  738. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +61 -0
  739. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  740. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +54 -0
  741. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  742. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +52 -0
  743. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  744. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +51 -0
  745. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  746. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +71 -0
  747. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  748. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +65 -0
  749. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  750. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +58 -0
  751. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  752. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +75 -0
  753. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  754. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +78 -0
  755. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  756. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +85 -0
  757. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  758. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  759. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  760. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +36 -0
  761. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  762. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  763. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  764. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +54 -0
  765. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  766. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +48 -0
  767. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  768. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  769. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  770. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  771. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  772. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +44 -0
  773. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  774. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  775. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  776. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  777. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  778. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  779. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  780. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  781. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  782. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +52 -0
  783. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  784. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  785. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  786. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +34 -0
  787. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  788. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +331 -0
  789. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  790. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +35 -0
  791. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  792. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +32 -0
  793. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  794. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +54 -0
  795. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  796. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +35 -0
  797. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  798. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +45 -0
  799. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  800. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +37 -0
  801. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  802. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  803. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  804. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  805. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  806. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +62 -0
  807. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  808. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +47 -0
  809. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  810. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +34 -0
  811. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  812. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +46 -0
  813. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  814. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +39 -0
  815. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  816. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +283 -0
  817. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  818. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  819. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  820. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  821. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  822. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  823. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  824. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  825. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  826. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  827. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  828. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -0
  829. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  830. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  831. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  832. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
  833. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  834. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
  835. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  836. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  837. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  838. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -0
  839. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  840. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
  841. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  842. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
  843. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  844. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  845. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  846. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  847. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  848. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  849. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  850. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  851. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  852. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  853. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  854. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  855. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  856. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  857. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  858. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  859. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  860. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  861. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  862. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  863. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  864. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +37 -0
  865. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  866. data/src/core/ext/xds/certificate_provider_store.cc +159 -0
  867. data/src/core/ext/xds/certificate_provider_store.h +138 -0
  868. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +150 -0
  869. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +77 -0
  870. data/src/core/ext/xds/upb_utils.h +45 -0
  871. data/src/core/ext/xds/xds_api.cc +314 -2078
  872. data/src/core/ext/xds/xds_api.h +141 -308
  873. data/src/core/ext/xds/xds_bootstrap.cc +10 -345
  874. data/src/core/ext/xds/xds_bootstrap.h +43 -48
  875. data/src/core/ext/xds/xds_bootstrap_grpc.cc +361 -0
  876. data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
  877. data/src/core/ext/xds/xds_certificate_provider.cc +416 -0
  878. data/src/core/ext/xds/xds_certificate_provider.h +183 -0
  879. data/src/core/ext/xds/xds_channel_args.h +11 -5
  880. data/src/core/ext/xds/xds_channel_stack_modifier.cc +119 -0
  881. data/src/core/ext/xds/xds_channel_stack_modifier.h +65 -0
  882. data/src/core/ext/xds/xds_client.cc +1442 -1516
  883. data/src/core/ext/xds/xds_client.h +212 -144
  884. data/src/core/ext/xds/xds_client_grpc.cc +236 -0
  885. data/src/core/ext/xds/xds_client_grpc.h +79 -0
  886. data/src/core/ext/xds/xds_client_stats.cc +103 -59
  887. data/src/core/ext/xds/xds_client_stats.h +71 -40
  888. data/src/core/ext/xds/xds_cluster.cc +707 -0
  889. data/src/core/ext/xds/xds_cluster.h +137 -0
  890. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +132 -0
  891. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +97 -0
  892. data/src/core/ext/xds/xds_common_types.cc +502 -0
  893. data/src/core/ext/xds/xds_common_types.h +108 -0
  894. data/src/core/ext/xds/xds_endpoint.cc +474 -0
  895. data/src/core/ext/xds/xds_endpoint.h +139 -0
  896. data/src/core/ext/xds/xds_health_status.cc +80 -0
  897. data/src/core/ext/xds/xds_health_status.h +82 -0
  898. data/src/core/ext/xds/xds_http_fault_filter.cc +236 -0
  899. data/src/core/ext/xds/xds_http_fault_filter.h +58 -0
  900. data/src/core/ext/xds/xds_http_filters.cc +121 -0
  901. data/src/core/ext/xds/xds_http_filters.h +181 -0
  902. data/src/core/ext/xds/xds_http_rbac_filter.cc +506 -0
  903. data/src/core/ext/xds/xds_http_rbac_filter.h +58 -0
  904. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  905. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  906. data/src/core/ext/xds/xds_lb_policy_registry.cc +239 -0
  907. data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
  908. data/src/core/ext/xds/xds_listener.cc +1130 -0
  909. data/src/core/ext/xds/xds_listener.h +226 -0
  910. data/src/core/ext/xds/xds_resource_type.h +104 -0
  911. data/src/core/ext/xds/xds_resource_type_impl.h +88 -0
  912. data/src/core/ext/xds/xds_route_config.cc +1138 -0
  913. data/src/core/ext/xds/xds_route_config.h +252 -0
  914. data/src/core/ext/xds/xds_routing.cc +264 -0
  915. data/src/core/ext/xds/xds_routing.h +106 -0
  916. data/src/core/ext/xds/xds_server_config_fetcher.cc +1363 -0
  917. data/src/core/ext/xds/xds_transport.h +86 -0
  918. data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
  919. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  920. data/src/core/lib/address_utils/parse_address.cc +340 -0
  921. data/src/core/lib/address_utils/parse_address.h +86 -0
  922. data/src/core/lib/address_utils/sockaddr_utils.cc +444 -0
  923. data/src/core/lib/address_utils/sockaddr_utils.h +100 -0
  924. data/src/core/lib/avl/avl.h +476 -88
  925. data/src/core/lib/backoff/backoff.cc +26 -57
  926. data/src/core/lib/backoff/backoff.h +30 -30
  927. data/src/core/lib/channel/call_finalization.h +88 -0
  928. data/src/core/lib/channel/call_tracer.h +103 -0
  929. data/src/core/lib/channel/channel_args.cc +309 -64
  930. data/src/core/lib/channel/channel_args.h +454 -44
  931. data/src/core/lib/channel/channel_args_preconditioning.cc +43 -0
  932. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  933. data/src/core/lib/channel/channel_fwd.h +26 -0
  934. data/src/core/lib/channel/channel_stack.cc +125 -62
  935. data/src/core/lib/channel/channel_stack.h +226 -136
  936. data/src/core/lib/channel/channel_stack_builder.cc +35 -307
  937. data/src/core/lib/channel/channel_stack_builder.h +112 -158
  938. data/src/core/lib/channel/channel_stack_builder_impl.cc +113 -0
  939. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  940. data/src/core/lib/channel/channel_trace.cc +36 -43
  941. data/src/core/lib/channel/channel_trace.h +27 -23
  942. data/src/core/lib/channel/channelz.cc +201 -151
  943. data/src/core/lib/channel/channelz.h +121 -81
  944. data/src/core/lib/channel/channelz_registry.cc +59 -51
  945. data/src/core/lib/channel/channelz_registry.h +31 -28
  946. data/src/core/lib/channel/connected_channel.cc +745 -81
  947. data/src/core/lib/channel/connected_channel.h +21 -23
  948. data/src/core/lib/channel/context.h +32 -18
  949. data/src/core/lib/channel/promise_based_filter.cc +2249 -0
  950. data/src/core/lib/channel/promise_based_filter.h +857 -0
  951. data/src/core/lib/channel/status_util.cc +76 -19
  952. data/src/core/lib/channel/status_util.h +45 -22
  953. data/src/core/lib/compression/compression.cc +46 -129
  954. data/src/core/lib/compression/compression_internal.cc +191 -229
  955. data/src/core/lib/compression/compression_internal.h +87 -90
  956. data/src/core/lib/compression/message_compress.cc +41 -39
  957. data/src/core/lib/compression/message_compress.h +28 -29
  958. data/src/core/lib/config/core_configuration.cc +111 -0
  959. data/src/core/lib/config/core_configuration.h +243 -0
  960. data/src/core/lib/debug/event_log.cc +88 -0
  961. data/src/core/lib/debug/event_log.h +81 -0
  962. data/src/core/lib/debug/histogram_view.cc +69 -0
  963. data/src/core/lib/debug/histogram_view.h +37 -0
  964. data/src/core/lib/debug/stats.cc +48 -152
  965. data/src/core/lib/debug/stats.h +49 -55
  966. data/src/core/lib/debug/stats_data.cc +291 -637
  967. data/src/core/lib/debug/stats_data.h +264 -527
  968. data/src/core/lib/debug/trace.cc +19 -20
  969. data/src/core/lib/debug/trace.h +34 -32
  970. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +40 -0
  971. data/src/core/lib/event_engine/channel_args_endpoint_config.h +49 -0
  972. data/src/core/lib/event_engine/common_closures.h +71 -0
  973. data/src/core/lib/event_engine/default_event_engine.cc +94 -0
  974. data/src/core/lib/event_engine/default_event_engine.h +49 -0
  975. data/src/core/lib/event_engine/default_event_engine_factory.cc +48 -0
  976. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  977. data/src/core/lib/event_engine/executor/executor.h +38 -0
  978. data/src/core/lib/event_engine/forkable.cc +101 -0
  979. data/src/core/lib/event_engine/forkable.h +61 -0
  980. data/src/core/lib/event_engine/handle_containers.h +67 -0
  981. data/src/core/lib/event_engine/memory_allocator.cc +74 -0
  982. data/src/core/lib/event_engine/poller.h +62 -0
  983. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +614 -0
  984. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  985. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +900 -0
  986. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  987. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  988. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  989. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
  990. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  991. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  992. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  993. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  994. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1308 -0
  995. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +684 -0
  996. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +570 -0
  997. data/src/core/lib/event_engine/posix_engine/posix_engine.h +245 -0
  998. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  999. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
  1000. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
  1001. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
  1002. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  1003. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  1004. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  1005. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  1006. data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
  1007. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  1008. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  1009. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
  1010. data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
  1011. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  1012. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  1013. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  1014. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  1015. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  1016. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  1017. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  1018. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  1019. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  1020. data/src/core/lib/event_engine/resolved_address.cc +41 -0
  1021. data/src/core/lib/event_engine/slice.cc +103 -0
  1022. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  1023. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  1024. data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
  1025. data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
  1026. data/src/core/lib/event_engine/thread_pool.cc +277 -0
  1027. data/src/core/lib/event_engine/thread_pool.h +137 -0
  1028. data/src/core/lib/event_engine/time_util.cc +30 -0
  1029. data/src/core/lib/event_engine/time_util.h +32 -0
  1030. data/src/core/lib/event_engine/trace.cc +18 -0
  1031. data/src/core/lib/event_engine/trace.h +30 -0
  1032. data/src/core/lib/event_engine/utils.cc +44 -0
  1033. data/src/core/lib/event_engine/utils.h +36 -0
  1034. data/src/core/lib/event_engine/windows/iocp.cc +156 -0
  1035. data/src/core/lib/event_engine/windows/iocp.h +69 -0
  1036. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  1037. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  1038. data/src/core/lib/event_engine/windows/windows_engine.cc +165 -0
  1039. data/src/core/lib/event_engine/windows/windows_engine.h +124 -0
  1040. data/src/core/lib/experiments/config.cc +146 -0
  1041. data/src/core/lib/experiments/config.h +43 -0
  1042. data/src/core/lib/experiments/experiments.cc +75 -0
  1043. data/src/core/lib/experiments/experiments.h +58 -0
  1044. data/src/core/lib/gpr/alloc.cc +26 -30
  1045. data/src/core/lib/gpr/alloc.h +18 -18
  1046. data/src/core/lib/gpr/atm.cc +18 -18
  1047. data/src/core/lib/gpr/cpu_iphone.cc +34 -26
  1048. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  1049. data/src/core/lib/gpr/cpu_posix.cc +24 -23
  1050. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  1051. data/src/core/lib/gpr/log.cc +91 -36
  1052. data/src/core/lib/gpr/log_android.cc +25 -22
  1053. data/src/core/lib/gpr/log_linux.cc +46 -27
  1054. data/src/core/lib/gpr/log_posix.cc +41 -23
  1055. data/src/core/lib/gpr/log_windows.cc +43 -29
  1056. data/src/core/lib/gpr/spinlock.h +28 -20
  1057. data/src/core/lib/gpr/string.cc +48 -46
  1058. data/src/core/lib/gpr/string.h +62 -63
  1059. data/src/core/lib/gpr/string_posix.cc +24 -24
  1060. data/src/core/lib/gpr/string_util_windows.cc +25 -52
  1061. data/src/core/lib/gpr/string_windows.cc +24 -24
  1062. data/src/core/lib/gpr/sync.cc +31 -31
  1063. data/src/core/lib/gpr/sync_abseil.cc +29 -43
  1064. data/src/core/lib/gpr/sync_posix.cc +26 -37
  1065. data/src/core/lib/gpr/sync_windows.cc +31 -29
  1066. data/src/core/lib/gpr/time.cc +51 -45
  1067. data/src/core/lib/gpr/time_posix.cc +41 -45
  1068. data/src/core/lib/gpr/time_precise.cc +26 -23
  1069. data/src/core/lib/gpr/time_precise.h +25 -22
  1070. data/src/core/lib/gpr/time_windows.cc +38 -31
  1071. data/src/core/lib/gpr/tmpfile.h +22 -22
  1072. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  1073. data/src/core/lib/gpr/tmpfile_posix.cc +23 -22
  1074. data/src/core/lib/gpr/tmpfile_windows.cc +28 -29
  1075. data/src/core/lib/gpr/useful.h +169 -50
  1076. data/src/core/lib/gpr/wrap_memcpy.cc +25 -24
  1077. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  1078. data/src/core/lib/gprpp/bitset.h +225 -0
  1079. data/src/core/lib/gprpp/chunked_vector.h +257 -0
  1080. data/src/core/lib/gprpp/construct_destruct.h +40 -0
  1081. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  1082. data/src/core/lib/gprpp/crash.cc +33 -0
  1083. data/src/core/lib/gprpp/crash.h +34 -0
  1084. data/src/core/lib/gprpp/debug_location.h +59 -25
  1085. data/src/core/lib/gprpp/dual_ref_counted.h +327 -0
  1086. data/src/core/lib/gprpp/env.h +53 -0
  1087. data/src/core/lib/gprpp/env_linux.cc +80 -0
  1088. data/src/core/lib/gprpp/env_posix.cc +47 -0
  1089. data/src/core/lib/gprpp/env_windows.cc +56 -0
  1090. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  1091. data/src/core/lib/gprpp/examine_stack.h +45 -0
  1092. data/src/core/lib/gprpp/fork.cc +50 -60
  1093. data/src/core/lib/gprpp/fork.h +26 -34
  1094. data/src/core/lib/gprpp/global_config.h +20 -23
  1095. data/src/core/lib/gprpp/global_config_custom.h +18 -18
  1096. data/src/core/lib/gprpp/global_config_env.cc +38 -36
  1097. data/src/core/lib/gprpp/global_config_env.h +28 -26
  1098. data/src/core/lib/gprpp/global_config_generic.h +18 -22
  1099. data/src/core/lib/gprpp/host_port.cc +28 -26
  1100. data/src/core/lib/gprpp/host_port.h +29 -28
  1101. data/src/core/lib/gprpp/load_file.cc +75 -0
  1102. data/src/core/lib/gprpp/load_file.h +33 -0
  1103. data/src/core/lib/gprpp/manual_constructor.h +25 -91
  1104. data/src/core/lib/gprpp/match.h +75 -0
  1105. data/src/core/lib/gprpp/memory.h +26 -24
  1106. data/src/core/lib/gprpp/mpscq.cc +26 -26
  1107. data/src/core/lib/gprpp/mpscq.h +24 -23
  1108. data/src/core/lib/gprpp/no_destruct.h +95 -0
  1109. data/src/core/lib/gprpp/notification.h +67 -0
  1110. data/src/core/lib/gprpp/orphanable.h +27 -34
  1111. data/src/core/lib/gprpp/overload.h +59 -0
  1112. data/src/core/lib/gprpp/packed_table.h +40 -0
  1113. data/src/core/lib/gprpp/per_cpu.h +46 -0
  1114. data/src/core/lib/gprpp/ref_counted.h +142 -105
  1115. data/src/core/lib/gprpp/ref_counted_ptr.h +187 -41
  1116. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  1117. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  1118. data/src/core/lib/gprpp/stat.h +36 -0
  1119. data/src/core/lib/gprpp/stat_posix.cc +55 -0
  1120. data/src/core/lib/gprpp/stat_windows.cc +50 -0
  1121. data/src/core/lib/gprpp/status_helper.cc +455 -0
  1122. data/src/core/lib/gprpp/status_helper.h +189 -0
  1123. data/src/core/lib/gprpp/strerror.cc +41 -0
  1124. data/src/core/lib/gprpp/strerror.h +29 -0
  1125. data/src/core/lib/gprpp/sync.h +129 -64
  1126. data/src/core/lib/gprpp/table.h +452 -0
  1127. data/src/core/lib/gprpp/tchar.cc +49 -0
  1128. data/src/core/lib/gprpp/tchar.h +33 -0
  1129. data/src/core/lib/gprpp/thd.h +24 -27
  1130. data/src/core/lib/gprpp/thd_posix.cc +76 -70
  1131. data/src/core/lib/gprpp/thd_windows.cc +32 -35
  1132. data/src/core/lib/gprpp/time.cc +240 -0
  1133. data/src/core/lib/gprpp/time.h +366 -0
  1134. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  1135. data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
  1136. data/src/core/lib/gprpp/time_util.cc +81 -0
  1137. data/src/core/lib/gprpp/time_util.h +42 -0
  1138. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  1139. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  1140. data/src/core/lib/gprpp/validation_errors.h +127 -0
  1141. data/src/core/lib/gprpp/work_serializer.cc +247 -0
  1142. data/src/core/lib/gprpp/work_serializer.h +86 -0
  1143. data/src/core/lib/handshaker/proxy_mapper.h +53 -0
  1144. data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
  1145. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  1146. data/src/core/lib/http/format_request.cc +81 -47
  1147. data/src/core/lib/http/format_request.h +29 -25
  1148. data/src/core/lib/http/httpcli.cc +321 -234
  1149. data/src/core/lib/http/httpcli.h +254 -109
  1150. data/src/core/lib/http/httpcli_security_connector.cc +104 -106
  1151. data/src/core/lib/http/httpcli_ssl_credentials.h +39 -0
  1152. data/src/core/lib/http/parser.cc +208 -129
  1153. data/src/core/lib/http/parser.h +53 -36
  1154. data/src/core/lib/iomgr/block_annotate.h +21 -21
  1155. data/src/core/lib/iomgr/buffer_list.cc +165 -146
  1156. data/src/core/lib/iomgr/buffer_list.h +128 -108
  1157. data/src/core/lib/iomgr/call_combiner.cc +61 -58
  1158. data/src/core/lib/iomgr/call_combiner.h +31 -34
  1159. data/src/core/lib/iomgr/cfstream_handle.cc +38 -41
  1160. data/src/core/lib/iomgr/cfstream_handle.h +23 -23
  1161. data/src/core/lib/iomgr/closure.h +110 -54
  1162. data/src/core/lib/iomgr/combiner.cc +51 -59
  1163. data/src/core/lib/iomgr/combiner.h +21 -20
  1164. data/src/core/lib/iomgr/dualstack_socket_posix.cc +22 -21
  1165. data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
  1166. data/src/core/lib/iomgr/endpoint.cc +22 -26
  1167. data/src/core/lib/iomgr/endpoint.h +53 -54
  1168. data/src/core/lib/iomgr/endpoint_cfstream.cc +78 -99
  1169. data/src/core/lib/iomgr/endpoint_cfstream.h +31 -31
  1170. data/src/core/lib/iomgr/endpoint_pair.h +19 -18
  1171. data/src/core/lib/iomgr/endpoint_pair_posix.cc +39 -30
  1172. data/src/core/lib/iomgr/endpoint_pair_windows.cc +25 -25
  1173. data/src/core/lib/iomgr/error.cc +145 -752
  1174. data/src/core/lib/iomgr/error.h +119 -227
  1175. data/src/core/lib/iomgr/error_cfstream.cc +25 -24
  1176. data/src/core/lib/iomgr/error_cfstream.h +21 -21
  1177. data/src/core/lib/iomgr/ev_apple.cc +40 -36
  1178. data/src/core/lib/iomgr/ev_apple.h +18 -18
  1179. data/src/core/lib/iomgr/ev_epoll1_linux.cc +313 -297
  1180. data/src/core/lib/iomgr/ev_epoll1_linux.h +19 -19
  1181. data/src/core/lib/iomgr/ev_poll_posix.cc +359 -332
  1182. data/src/core/lib/iomgr/ev_poll_posix.h +20 -20
  1183. data/src/core/lib/iomgr/ev_posix.cc +100 -134
  1184. data/src/core/lib/iomgr/ev_posix.h +100 -94
  1185. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  1186. data/src/core/lib/iomgr/exec_ctx.cc +48 -139
  1187. data/src/core/lib/iomgr/exec_ctx.h +175 -221
  1188. data/src/core/lib/iomgr/executor.cc +50 -68
  1189. data/src/core/lib/iomgr/executor.h +28 -31
  1190. data/src/core/lib/iomgr/fork_posix.cc +25 -22
  1191. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  1192. data/src/core/lib/iomgr/gethostname.h +18 -18
  1193. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  1194. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  1195. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  1196. data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
  1197. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +22 -21
  1198. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +22 -21
  1199. data/src/core/lib/iomgr/internal_errqueue.cc +44 -50
  1200. data/src/core/lib/iomgr/internal_errqueue.h +81 -86
  1201. data/src/core/lib/iomgr/iocp_windows.cc +32 -31
  1202. data/src/core/lib/iomgr/iocp_windows.h +19 -19
  1203. data/src/core/lib/iomgr/iomgr.cc +31 -24
  1204. data/src/core/lib/iomgr/iomgr.h +35 -35
  1205. data/src/core/lib/iomgr/iomgr_fwd.h +26 -0
  1206. data/src/core/lib/iomgr/iomgr_internal.cc +25 -29
  1207. data/src/core/lib/iomgr/iomgr_internal.h +31 -30
  1208. data/src/core/lib/iomgr/iomgr_posix.cc +25 -23
  1209. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +64 -33
  1210. data/src/core/lib/iomgr/iomgr_windows.cc +27 -26
  1211. data/src/core/lib/iomgr/load_file.cc +26 -29
  1212. data/src/core/lib/iomgr/load_file.h +22 -22
  1213. data/src/core/lib/iomgr/lockfree_event.cc +131 -125
  1214. data/src/core/lib/iomgr/lockfree_event.h +21 -21
  1215. data/src/core/lib/iomgr/nameser.h +84 -84
  1216. data/src/core/lib/iomgr/polling_entity.cc +26 -22
  1217. data/src/core/lib/iomgr/polling_entity.h +33 -27
  1218. data/src/core/lib/iomgr/pollset.cc +22 -22
  1219. data/src/core/lib/iomgr/pollset.h +62 -62
  1220. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  1221. data/src/core/lib/iomgr/pollset_set.h +23 -25
  1222. data/src/core/lib/iomgr/pollset_set_windows.cc +19 -18
  1223. data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
  1224. data/src/core/lib/iomgr/pollset_windows.cc +36 -35
  1225. data/src/core/lib/iomgr/pollset_windows.h +22 -22
  1226. data/src/core/lib/iomgr/port.h +58 -44
  1227. data/src/core/lib/iomgr/python_util.h +26 -25
  1228. data/src/core/lib/iomgr/resolve_address.cc +39 -39
  1229. data/src/core/lib/iomgr/resolve_address.h +100 -65
  1230. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  1231. data/src/core/lib/iomgr/resolve_address_posix.cc +136 -109
  1232. data/src/core/lib/iomgr/resolve_address_posix.h +63 -0
  1233. data/src/core/lib/iomgr/resolve_address_windows.cc +133 -90
  1234. data/src/core/lib/iomgr/resolve_address_windows.h +63 -0
  1235. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1236. data/src/core/lib/iomgr/sockaddr.h +24 -24
  1237. data/src/core/lib/iomgr/sockaddr_posix.h +20 -18
  1238. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +64 -0
  1239. data/src/core/lib/iomgr/sockaddr_windows.h +20 -18
  1240. data/src/core/lib/iomgr/socket_factory_posix.cc +25 -24
  1241. data/src/core/lib/iomgr/socket_factory_posix.h +31 -30
  1242. data/src/core/lib/iomgr/socket_mutator.cc +39 -24
  1243. data/src/core/lib/iomgr/socket_mutator.h +54 -30
  1244. data/src/core/lib/iomgr/socket_utils.h +24 -24
  1245. data/src/core/lib/iomgr/socket_utils_common_posix.cc +108 -142
  1246. data/src/core/lib/iomgr/socket_utils_linux.cc +22 -21
  1247. data/src/core/lib/iomgr/socket_utils_posix.cc +105 -21
  1248. data/src/core/lib/iomgr/socket_utils_posix.h +198 -106
  1249. data/src/core/lib/iomgr/socket_utils_windows.cc +22 -21
  1250. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  1251. data/src/core/lib/iomgr/socket_windows.h +56 -58
  1252. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  1253. data/src/core/lib/iomgr/systemd_utils.h +33 -0
  1254. data/src/core/lib/iomgr/tcp_client.cc +28 -24
  1255. data/src/core/lib/iomgr/tcp_client.h +48 -34
  1256. data/src/core/lib/iomgr/tcp_client_cfstream.cc +53 -58
  1257. data/src/core/lib/iomgr/tcp_client_posix.cc +249 -130
  1258. data/src/core/lib/iomgr/tcp_client_posix.h +55 -51
  1259. data/src/core/lib/iomgr/tcp_client_windows.cc +70 -62
  1260. data/src/core/lib/iomgr/tcp_posix.cc +685 -497
  1261. data/src/core/lib/iomgr/tcp_posix.h +46 -39
  1262. data/src/core/lib/iomgr/tcp_server.cc +36 -27
  1263. data/src/core/lib/iomgr/tcp_server.h +84 -73
  1264. data/src/core/lib/iomgr/tcp_server_posix.cc +216 -164
  1265. data/src/core/lib/iomgr/tcp_server_utils_posix.h +88 -80
  1266. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +140 -99
  1267. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +55 -52
  1268. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +23 -23
  1269. data/src/core/lib/iomgr/tcp_server_windows.cc +129 -132
  1270. data/src/core/lib/iomgr/tcp_windows.cc +136 -135
  1271. data/src/core/lib/iomgr/tcp_windows.h +32 -33
  1272. data/src/core/lib/iomgr/timer.cc +20 -19
  1273. data/src/core/lib/iomgr/timer.h +81 -72
  1274. data/src/core/lib/iomgr/timer_generic.cc +237 -257
  1275. data/src/core/lib/iomgr/timer_generic.h +20 -19
  1276. data/src/core/lib/iomgr/timer_heap.cc +27 -28
  1277. data/src/core/lib/iomgr/timer_heap.h +19 -19
  1278. data/src/core/lib/iomgr/timer_manager.cc +48 -47
  1279. data/src/core/lib/iomgr/timer_manager.h +25 -25
  1280. data/src/core/lib/iomgr/unix_sockets_posix.cc +48 -52
  1281. data/src/core/lib/iomgr/unix_sockets_posix.h +25 -24
  1282. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +32 -29
  1283. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +26 -26
  1284. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +24 -23
  1285. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +37 -35
  1286. data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
  1287. data/src/core/lib/iomgr/wakeup_fd_posix.cc +37 -33
  1288. data/src/core/lib/iomgr/wakeup_fd_posix.h +58 -58
  1289. data/src/core/lib/json/json.h +32 -26
  1290. data/src/core/lib/json/json_args.h +34 -0
  1291. data/src/core/lib/json/json_channel_args.h +42 -0
  1292. data/src/core/lib/json/json_object_loader.cc +217 -0
  1293. data/src/core/lib/json/json_object_loader.h +634 -0
  1294. data/src/core/lib/json/json_reader.cc +193 -118
  1295. data/src/core/lib/json/json_util.cc +106 -0
  1296. data/src/core/lib/json/json_util.h +163 -0
  1297. data/src/core/lib/json/json_writer.cc +64 -61
  1298. data/src/core/lib/load_balancing/lb_policy.cc +93 -0
  1299. data/src/core/lib/load_balancing/lb_policy.h +438 -0
  1300. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  1301. data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
  1302. data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
  1303. data/src/core/lib/load_balancing/subchannel_interface.h +133 -0
  1304. data/src/core/lib/matchers/matchers.cc +331 -0
  1305. data/src/core/lib/matchers/matchers.h +162 -0
  1306. data/src/core/lib/promise/activity.cc +134 -0
  1307. data/src/core/lib/promise/activity.h +612 -0
  1308. data/src/core/lib/promise/arena_promise.h +231 -0
  1309. data/src/core/lib/promise/context.h +93 -0
  1310. data/src/core/lib/promise/detail/basic_seq.h +497 -0
  1311. data/src/core/lib/promise/detail/promise_factory.h +236 -0
  1312. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1313. data/src/core/lib/promise/detail/status.h +78 -0
  1314. data/src/core/lib/promise/detail/switch.h +1455 -0
  1315. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +56 -0
  1316. data/src/core/lib/promise/for_each.h +155 -0
  1317. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1318. data/src/core/lib/promise/latch.h +97 -0
  1319. data/src/core/lib/promise/loop.h +138 -0
  1320. data/src/core/lib/promise/map.h +88 -0
  1321. data/src/core/lib/promise/map_pipe.h +88 -0
  1322. data/src/core/lib/promise/pipe.cc +19 -0
  1323. data/src/core/lib/promise/pipe.h +505 -0
  1324. data/src/core/lib/promise/poll.h +85 -0
  1325. data/src/core/lib/promise/promise.h +96 -0
  1326. data/src/core/lib/promise/race.h +83 -0
  1327. data/src/core/lib/promise/seq.h +107 -0
  1328. data/src/core/lib/promise/sleep.cc +90 -0
  1329. data/src/core/lib/promise/sleep.h +84 -0
  1330. data/src/core/lib/promise/try_concurrently.h +342 -0
  1331. data/src/core/lib/promise/try_seq.h +175 -0
  1332. data/src/core/lib/resolver/resolver.cc +37 -0
  1333. data/src/core/lib/resolver/resolver.h +138 -0
  1334. data/src/core/lib/resolver/resolver_factory.h +77 -0
  1335. data/src/core/lib/resolver/resolver_registry.cc +149 -0
  1336. data/src/core/lib/resolver/resolver_registry.h +123 -0
  1337. data/src/core/lib/resolver/server_address.cc +181 -0
  1338. data/src/core/lib/resolver/server_address.h +145 -0
  1339. data/src/core/lib/resource_quota/api.cc +104 -0
  1340. data/src/core/lib/resource_quota/api.h +49 -0
  1341. data/src/core/lib/resource_quota/arena.cc +138 -0
  1342. data/src/core/lib/resource_quota/arena.h +252 -0
  1343. data/src/core/lib/resource_quota/memory_quota.cc +699 -0
  1344. data/src/core/lib/resource_quota/memory_quota.h +592 -0
  1345. data/src/core/lib/resource_quota/periodic_update.cc +78 -0
  1346. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  1347. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1348. data/src/core/lib/resource_quota/resource_quota.h +74 -0
  1349. data/src/core/lib/resource_quota/thread_quota.cc +45 -0
  1350. data/src/core/lib/resource_quota/thread_quota.h +61 -0
  1351. data/src/core/lib/resource_quota/trace.cc +19 -0
  1352. data/src/core/lib/resource_quota/trace.h +24 -0
  1353. data/src/core/lib/security/authorization/authorization_engine.h +13 -53
  1354. data/src/core/lib/security/authorization/authorization_policy_provider.h +47 -0
  1355. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +49 -0
  1356. data/src/core/lib/security/authorization/evaluate_args.cc +152 -84
  1357. data/src/core/lib/security/authorization/evaluate_args.h +55 -19
  1358. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +64 -0
  1359. data/src/core/lib/security/authorization/grpc_authorization_engine.h +69 -0
  1360. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +122 -0
  1361. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +61 -0
  1362. data/src/core/lib/security/authorization/matchers.cc +241 -0
  1363. data/src/core/lib/security/authorization/matchers.h +218 -0
  1364. data/src/core/lib/security/authorization/rbac_policy.cc +445 -0
  1365. data/src/core/lib/security/authorization/rbac_policy.h +178 -0
  1366. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +66 -0
  1367. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  1368. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  1369. data/src/core/lib/security/context/security_context.cc +45 -37
  1370. data/src/core/lib/security/context/security_context.h +65 -34
  1371. data/src/core/lib/security/credentials/alts/alts_credentials.cc +36 -27
  1372. data/src/core/lib/security/credentials/alts/alts_credentials.h +68 -54
  1373. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +20 -20
  1374. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
  1375. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +19 -19
  1376. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +20 -19
  1377. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +20 -19
  1378. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +20 -22
  1379. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  1380. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
  1381. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +19 -22
  1382. data/src/core/lib/security/credentials/call_creds_util.cc +97 -0
  1383. data/src/core/lib/security/credentials/call_creds_util.h +43 -0
  1384. data/src/core/lib/security/credentials/channel_creds_registry.h +103 -0
  1385. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +80 -0
  1386. data/src/core/lib/security/credentials/composite/composite_credentials.cc +56 -114
  1387. data/src/core/lib/security/credentials/composite/composite_credentials.h +62 -37
  1388. data/src/core/lib/security/credentials/credentials.cc +37 -39
  1389. data/src/core/lib/security/credentials/credentials.h +148 -134
  1390. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +546 -0
  1391. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +100 -0
  1392. data/src/core/lib/security/credentials/external/aws_request_signer.cc +224 -0
  1393. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  1394. data/src/core/lib/security/credentials/external/external_account_credentials.cc +561 -0
  1395. data/src/core/lib/security/credentials/external/external_account_credentials.h +129 -0
  1396. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +138 -0
  1397. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +55 -0
  1398. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +242 -0
  1399. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +71 -0
  1400. data/src/core/lib/security/credentials/fake/fake_credentials.cc +64 -63
  1401. data/src/core/lib/security/credentials/fake/fake_credentials.h +68 -60
  1402. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +24 -27
  1403. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +240 -142
  1404. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +38 -26
  1405. data/src/core/lib/security/credentials/iam/iam_credentials.cc +51 -48
  1406. data/src/core/lib/security/credentials/iam/iam_credentials.h +43 -27
  1407. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +73 -0
  1408. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +61 -0
  1409. data/src/core/lib/security/credentials/jwt/json_token.cc +48 -39
  1410. data/src/core/lib/security/credentials/jwt/json_token.h +34 -33
  1411. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +83 -75
  1412. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +62 -36
  1413. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +179 -147
  1414. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +49 -47
  1415. data/src/core/lib/security/credentials/local/local_credentials.cc +37 -30
  1416. data/src/core/lib/security/credentials/local/local_credentials.h +39 -23
  1417. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +269 -287
  1418. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +105 -56
  1419. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +123 -177
  1420. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +98 -45
  1421. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +55 -59
  1422. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +48 -26
  1423. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +340 -0
  1424. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +216 -0
  1425. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +471 -0
  1426. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +206 -0
  1427. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +241 -0
  1428. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +168 -0
  1429. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +83 -206
  1430. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +93 -299
  1431. data/src/core/lib/security/credentials/tls/tls_credentials.cc +79 -58
  1432. data/src/core/lib/security/credentials/tls/tls_credentials.h +33 -24
  1433. data/src/core/lib/security/credentials/tls/tls_utils.cc +127 -0
  1434. data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
  1435. data/src/core/lib/security/credentials/xds/xds_credentials.cc +235 -0
  1436. data/src/core/lib/security/credentials/xds/xds_credentials.h +114 -0
  1437. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +77 -67
  1438. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +50 -48
  1439. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +94 -104
  1440. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +23 -26
  1441. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +120 -0
  1442. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +103 -0
  1443. data/src/core/lib/security/security_connector/load_system_roots.h +22 -18
  1444. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +23 -20
  1445. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +175 -0
  1446. data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
  1447. data/src/core/lib/security/security_connector/local/local_security_connector.cc +90 -65
  1448. data/src/core/lib/security/security_connector/local/local_security_connector.h +47 -44
  1449. data/src/core/lib/security/security_connector/security_connector.cc +48 -52
  1450. data/src/core/lib/security/security_connector/security_connector.h +90 -66
  1451. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +78 -66
  1452. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +43 -43
  1453. data/src/core/lib/security/security_connector/ssl_utils.cc +124 -83
  1454. data/src/core/lib/security/security_connector/ssl_utils.h +74 -75
  1455. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  1456. data/src/core/lib/security/security_connector/ssl_utils_config.h +19 -20
  1457. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +672 -450
  1458. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +231 -128
  1459. data/src/core/lib/security/transport/auth_filters.h +64 -23
  1460. data/src/core/lib/security/transport/client_auth_filter.cc +143 -383
  1461. data/src/core/lib/security/transport/secure_endpoint.cc +314 -200
  1462. data/src/core/lib/security/transport/secure_endpoint.h +27 -25
  1463. data/src/core/lib/security/transport/security_handshaker.cc +267 -168
  1464. data/src/core/lib/security/transport/security_handshaker.h +27 -21
  1465. data/src/core/lib/security/transport/server_auth_filter.cc +122 -89
  1466. data/src/core/lib/security/transport/tsi_error.cc +24 -22
  1467. data/src/core/lib/security/transport/tsi_error.h +20 -19
  1468. data/src/core/lib/security/util/json_util.cc +29 -31
  1469. data/src/core/lib/security/util/json_util.h +20 -21
  1470. data/src/core/lib/service_config/service_config.h +89 -0
  1471. data/src/core/lib/service_config/service_config_call_data.h +82 -0
  1472. data/src/core/lib/service_config/service_config_impl.cc +191 -0
  1473. data/src/core/lib/service_config/service_config_impl.h +125 -0
  1474. data/src/core/lib/service_config/service_config_parser.cc +81 -0
  1475. data/src/core/lib/service_config/service_config_parser.h +105 -0
  1476. data/src/core/lib/slice/b64.cc +26 -26
  1477. data/src/core/lib/slice/b64.h +31 -29
  1478. data/src/core/lib/slice/percent_encoding.cc +95 -114
  1479. data/src/core/lib/slice/percent_encoding.h +43 -54
  1480. data/src/core/lib/slice/slice.cc +140 -234
  1481. data/src/core/lib/slice/slice.h +435 -0
  1482. data/src/core/lib/slice/slice_buffer.cc +145 -81
  1483. data/src/core/lib/slice/slice_buffer.h +162 -0
  1484. data/src/core/lib/slice/slice_internal.h +37 -305
  1485. data/src/core/lib/slice/slice_refcount.h +60 -0
  1486. data/src/core/lib/slice/slice_string_helpers.cc +17 -116
  1487. data/src/core/lib/slice/slice_string_helpers.h +20 -38
  1488. data/src/core/lib/surface/api_trace.cc +19 -18
  1489. data/src/core/lib/surface/api_trace.h +23 -22
  1490. data/src/core/lib/surface/builtins.cc +54 -0
  1491. data/src/core/lib/surface/builtins.h +26 -0
  1492. data/src/core/lib/surface/byte_buffer.cc +26 -21
  1493. data/src/core/lib/surface/byte_buffer_reader.cc +25 -25
  1494. data/src/core/lib/surface/call.cc +2509 -1450
  1495. data/src/core/lib/surface/call.h +114 -58
  1496. data/src/core/lib/surface/call_details.cc +28 -29
  1497. data/src/core/lib/surface/call_log_batch.cc +26 -20
  1498. data/src/core/lib/surface/call_test_only.h +31 -28
  1499. data/src/core/lib/surface/call_trace.cc +113 -0
  1500. data/src/core/lib/surface/call_trace.h +30 -0
  1501. data/src/core/lib/surface/channel.cc +251 -365
  1502. data/src/core/lib/surface/channel.h +148 -102
  1503. data/src/core/lib/surface/channel_init.cc +39 -93
  1504. data/src/core/lib/surface/channel_init.h +63 -57
  1505. data/src/core/lib/surface/channel_ping.cc +28 -23
  1506. data/src/core/lib/surface/channel_stack_type.cc +21 -18
  1507. data/src/core/lib/surface/channel_stack_type.h +20 -20
  1508. data/src/core/lib/surface/completion_queue.cc +337 -363
  1509. data/src/core/lib/surface/completion_queue.h +56 -53
  1510. data/src/core/lib/surface/completion_queue_factory.cc +37 -31
  1511. data/src/core/lib/surface/completion_queue_factory.h +19 -20
  1512. data/src/core/lib/surface/event_string.cc +18 -23
  1513. data/src/core/lib/surface/event_string.h +19 -19
  1514. data/src/core/lib/surface/init.cc +143 -162
  1515. data/src/core/lib/surface/init.h +20 -22
  1516. data/src/core/lib/surface/init_internally.cc +25 -0
  1517. data/src/core/lib/surface/init_internally.h +37 -0
  1518. data/src/core/lib/surface/lame_client.cc +101 -138
  1519. data/src/core/lib/surface/lame_client.h +63 -20
  1520. data/src/core/lib/surface/metadata_array.cc +20 -19
  1521. data/src/core/lib/surface/server.cc +304 -304
  1522. data/src/core/lib/surface/server.h +189 -62
  1523. data/src/core/lib/surface/validate_metadata.cc +74 -57
  1524. data/src/core/lib/surface/validate_metadata.h +27 -20
  1525. data/src/core/lib/surface/version.cc +21 -21
  1526. data/src/core/lib/transport/bdp_estimator.cc +29 -30
  1527. data/src/core/lib/transport/bdp_estimator.h +23 -24
  1528. data/src/core/lib/transport/connectivity_state.cc +33 -29
  1529. data/src/core/lib/transport/connectivity_state.h +34 -33
  1530. data/src/core/lib/transport/error_utils.cc +90 -73
  1531. data/src/core/lib/transport/error_utils.h +39 -28
  1532. data/src/core/lib/transport/handshaker.cc +228 -0
  1533. data/src/core/lib/transport/handshaker.h +172 -0
  1534. data/src/core/lib/transport/handshaker_factory.h +74 -0
  1535. data/src/core/lib/transport/handshaker_registry.cc +61 -0
  1536. data/src/core/lib/transport/handshaker_registry.h +69 -0
  1537. data/src/core/lib/transport/http2_errors.h +20 -20
  1538. data/src/core/lib/transport/http_connect_handshaker.cc +400 -0
  1539. data/src/core/lib/transport/http_connect_handshaker.h +42 -0
  1540. data/src/core/lib/transport/metadata_batch.cc +218 -316
  1541. data/src/core/lib/transport/metadata_batch.h +1322 -177
  1542. data/src/core/lib/transport/parsed_metadata.cc +35 -0
  1543. data/src/core/lib/transport/parsed_metadata.h +410 -0
  1544. data/src/core/lib/transport/pid_controller.cc +24 -24
  1545. data/src/core/lib/transport/pid_controller.h +24 -24
  1546. data/src/core/lib/transport/status_conversion.cc +25 -25
  1547. data/src/core/lib/transport/status_conversion.h +23 -23
  1548. data/src/core/lib/transport/tcp_connect_handshaker.cc +246 -0
  1549. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1550. data/src/core/lib/transport/timeout_encoding.cc +229 -96
  1551. data/src/core/lib/transport/timeout_encoding.h +62 -28
  1552. data/src/core/lib/transport/transport.cc +118 -91
  1553. data/src/core/lib/transport/transport.h +276 -153
  1554. data/src/core/lib/transport/transport_fwd.h +20 -0
  1555. data/src/core/lib/transport/transport_impl.h +56 -32
  1556. data/src/core/lib/transport/transport_op_string.cc +46 -68
  1557. data/src/core/lib/uri/uri_parser.cc +312 -248
  1558. data/src/core/lib/uri/uri_parser.h +90 -40
  1559. data/src/core/plugin_registry/grpc_plugin_registry.cc +108 -118
  1560. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +66 -0
  1561. data/src/core/tsi/alts/crypt/aes_gcm.cc +26 -23
  1562. data/src/core/tsi/alts/crypt/gsec.cc +31 -30
  1563. data/src/core/tsi/alts/crypt/gsec.h +339 -334
  1564. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  1565. data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
  1566. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  1567. data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
  1568. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +85 -83
  1569. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
  1570. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  1571. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
  1572. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  1573. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  1574. data/src/core/tsi/alts/frame_protector/frame_handler.cc +44 -42
  1575. data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
  1576. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +167 -148
  1577. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +103 -104
  1578. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +27 -18
  1579. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
  1580. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +131 -108
  1581. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +59 -59
  1582. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +23 -22
  1583. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +23 -22
  1584. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +37 -37
  1585. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +22 -24
  1586. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +104 -103
  1587. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +47 -46
  1588. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
  1589. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  1590. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
  1591. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
  1592. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +33 -32
  1593. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
  1594. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +62 -59
  1595. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
  1596. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +73 -64
  1597. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
  1598. data/src/core/tsi/fake_transport_security.cc +177 -121
  1599. data/src/core/tsi/fake_transport_security.h +33 -27
  1600. data/src/core/tsi/local_transport_security.cc +84 -120
  1601. data/src/core/tsi/local_transport_security.h +33 -37
  1602. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +146 -0
  1603. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1604. data/src/core/tsi/ssl/session_cache/ssl_session.h +21 -21
  1605. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +22 -20
  1606. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +38 -72
  1607. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +37 -28
  1608. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +29 -22
  1609. data/src/core/tsi/ssl_transport_security.cc +495 -453
  1610. data/src/core/tsi/ssl_transport_security.h +239 -198
  1611. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  1612. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  1613. data/src/core/tsi/ssl_types.h +25 -25
  1614. data/src/core/tsi/transport_security.cc +69 -43
  1615. data/src/core/tsi/transport_security.h +50 -34
  1616. data/src/core/tsi/transport_security_grpc.cc +23 -22
  1617. data/src/core/tsi/transport_security_grpc.h +43 -39
  1618. data/src/core/tsi/transport_security_interface.h +368 -328
  1619. data/src/ruby/bin/math_services_pb.rb +1 -1
  1620. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
  1621. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -0
  1622. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  1623. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  1624. data/src/ruby/ext/grpc/ext-export.gcc +1 -1
  1625. data/src/ruby/ext/grpc/extconf.rb +122 -24
  1626. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1627. data/src/ruby/ext/grpc/rb_call.c +6 -5
  1628. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  1629. data/src/ruby/ext/grpc/rb_channel.c +25 -10
  1630. data/src/ruby/ext/grpc/rb_channel_args.c +3 -2
  1631. data/src/ruby/ext/grpc/rb_channel_credentials.c +15 -5
  1632. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1633. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1634. data/src/ruby/ext/grpc/rb_compression_options.c +7 -6
  1635. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1636. data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
  1637. data/src/ruby/ext/grpc/rb_grpc.c +10 -4
  1638. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1639. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +108 -84
  1640. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +178 -142
  1641. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  1642. data/src/ruby/ext/grpc/rb_server.c +26 -10
  1643. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1644. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1645. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1646. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1647. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1648. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1649. data/src/ruby/lib/grpc/errors.rb +1 -1
  1650. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1651. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1652. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  1653. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1654. data/src/ruby/lib/grpc/version.rb +1 -1
  1655. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1656. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  1657. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +39 -0
  1658. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1659. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +23 -5
  1660. data/src/ruby/pb/test/client.rb +769 -0
  1661. data/src/ruby/pb/test/server.rb +252 -0
  1662. data/src/ruby/pb/test/xds_client.rb +415 -0
  1663. data/src/ruby/spec/call_spec.rb +1 -1
  1664. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  1665. data/src/ruby/spec/channel_spec.rb +21 -48
  1666. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1667. data/src/ruby/spec/client_server_spec.rb +21 -9
  1668. data/src/ruby/spec/errors_spec.rb +1 -1
  1669. data/src/ruby/spec/generic/active_call_spec.rb +14 -5
  1670. data/src/ruby/spec/generic/client_stub_spec.rb +27 -27
  1671. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1672. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  1673. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
  1674. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1675. data/src/ruby/spec/server_spec.rb +22 -0
  1676. data/src/ruby/spec/user_agent_spec.rb +1 -1
  1677. data/third_party/abseil-cpp/absl/algorithm/container.h +164 -117
  1678. data/third_party/abseil-cpp/absl/base/attributes.h +211 -70
  1679. data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
  1680. data/third_party/abseil-cpp/absl/base/casts.h +61 -65
  1681. data/third_party/abseil-cpp/absl/base/config.h +320 -78
  1682. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +417 -335
  1683. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  1684. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  1685. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +12 -4
  1686. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  1687. data/third_party/abseil-cpp/absl/base/internal/endian.h +78 -62
  1688. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
  1689. data/third_party/abseil-cpp/absl/base/internal/invoke.h +58 -4
  1690. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  1691. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
  1692. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  1693. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +56 -47
  1694. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +29 -16
  1695. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +39 -40
  1696. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +44 -31
  1697. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1698. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +13 -8
  1699. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1700. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1701. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1702. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  1703. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  1704. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +96 -5
  1705. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  1706. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +11 -7
  1707. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1708. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1709. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  1710. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1711. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +23 -10
  1712. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +18 -9
  1713. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  1714. data/third_party/abseil-cpp/absl/base/log_severity.h +55 -4
  1715. data/third_party/abseil-cpp/absl/base/macros.h +47 -109
  1716. data/third_party/abseil-cpp/absl/base/optimization.h +77 -6
  1717. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  1718. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  1719. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1720. data/third_party/abseil-cpp/absl/base/thread_annotations.h +97 -42
  1721. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1722. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1723. data/third_party/abseil-cpp/absl/container/fixed_array.h +46 -32
  1724. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +613 -0
  1725. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +18 -11
  1726. data/third_party/abseil-cpp/absl/container/inlined_vector.h +155 -137
  1727. data/third_party/abseil-cpp/absl/container/internal/common.h +12 -7
  1728. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
  1729. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +59 -57
  1730. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +23 -6
  1731. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  1732. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +83 -114
  1733. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +99 -97
  1734. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  1735. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +495 -434
  1736. data/third_party/abseil-cpp/absl/container/internal/layout.h +11 -9
  1737. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +198 -0
  1738. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +25 -2
  1739. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +852 -369
  1740. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -87
  1741. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +93 -29
  1742. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -11
  1743. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +7 -2
  1744. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +17 -5
  1745. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +21 -7
  1746. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +42 -24
  1747. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1748. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  1749. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +14 -4
  1750. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +236 -0
  1751. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  1752. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -10
  1753. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +33 -8
  1754. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +35 -25
  1755. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1756. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +19 -1
  1757. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1758. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +160 -27
  1759. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1760. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  1761. data/third_party/abseil-cpp/absl/functional/bind_front.h +193 -0
  1762. data/third_party/abseil-cpp/absl/functional/function_ref.h +7 -3
  1763. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  1764. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1765. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  1766. data/third_party/abseil-cpp/absl/hash/hash.h +110 -13
  1767. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  1768. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  1769. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +27 -13
  1770. data/third_party/abseil-cpp/absl/hash/internal/hash.h +426 -123
  1771. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1772. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1773. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1774. data/third_party/abseil-cpp/absl/meta/type_traits.h +49 -11
  1775. data/third_party/abseil-cpp/absl/numeric/bits.h +178 -0
  1776. data/third_party/abseil-cpp/absl/numeric/int128.cc +18 -37
  1777. data/third_party/abseil-cpp/absl/numeric/int128.h +161 -87
  1778. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1779. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1780. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1781. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1782. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  1783. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  1784. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +245 -0
  1785. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1786. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1787. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1788. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1789. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1790. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1791. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1792. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1793. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
  1794. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +269 -0
  1795. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1796. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1797. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1798. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
  1799. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1800. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1801. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1802. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1803. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1804. data/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
  1805. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
  1806. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1807. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
  1808. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1809. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1810. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1811. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1812. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1813. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1814. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
  1815. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1816. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1817. data/third_party/abseil-cpp/absl/random/internal/traits.h +149 -0
  1818. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1819. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
  1820. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
  1821. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +261 -0
  1822. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1823. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1824. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1825. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1826. data/third_party/abseil-cpp/absl/random/seed_sequences.h +111 -0
  1827. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1828. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1829. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +272 -0
  1830. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +86 -0
  1831. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  1832. data/third_party/abseil-cpp/absl/status/status.cc +205 -36
  1833. data/third_party/abseil-cpp/absl/status/status.h +586 -122
  1834. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  1835. data/third_party/abseil-cpp/absl/status/statusor.cc +103 -0
  1836. data/third_party/abseil-cpp/absl/status/statusor.h +776 -0
  1837. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  1838. data/third_party/abseil-cpp/absl/strings/charconv.cc +10 -10
  1839. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1840. data/third_party/abseil-cpp/absl/strings/cord.cc +592 -1283
  1841. data/third_party/abseil-cpp/absl/strings/cord.h +840 -319
  1842. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  1843. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  1844. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  1845. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  1846. data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
  1847. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1848. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1849. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1850. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +9 -9
  1851. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  1852. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +77 -0
  1853. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +561 -57
  1854. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1228 -0
  1855. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +924 -0
  1856. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
  1857. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
  1858. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
  1859. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
  1860. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +62 -0
  1861. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1862. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  1863. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  1864. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +187 -0
  1865. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +773 -0
  1866. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1867. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1868. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1869. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1870. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1871. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1872. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +418 -0
  1873. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1874. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
  1875. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1876. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
  1877. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  1878. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  1879. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1880. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
  1881. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +159 -65
  1882. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +19 -6
  1883. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +63 -24
  1884. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +28 -16
  1885. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +36 -13
  1886. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +188 -155
  1887. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
  1888. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
  1889. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +6 -13
  1890. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +82 -77
  1891. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +55 -29
  1892. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  1893. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1894. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +72 -0
  1895. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  1896. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1897. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1898. data/third_party/abseil-cpp/absl/strings/numbers.cc +135 -7
  1899. data/third_party/abseil-cpp/absl/strings/numbers.h +69 -32
  1900. data/third_party/abseil-cpp/absl/strings/str_cat.cc +8 -8
  1901. data/third_party/abseil-cpp/absl/strings/str_cat.h +21 -14
  1902. data/third_party/abseil-cpp/absl/strings/str_format.h +290 -15
  1903. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  1904. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1905. data/third_party/abseil-cpp/absl/strings/str_split.h +40 -6
  1906. data/third_party/abseil-cpp/absl/strings/string_view.cc +18 -34
  1907. data/third_party/abseil-cpp/absl/strings/string_view.h +146 -57
  1908. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  1909. data/third_party/abseil-cpp/absl/strings/substitute.cc +7 -6
  1910. data/third_party/abseil-cpp/absl/strings/substitute.h +119 -83
  1911. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1912. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1913. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +12 -9
  1914. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  1915. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1916. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +4 -3
  1917. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +29 -28
  1918. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -6
  1919. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +6 -11
  1920. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +2 -83
  1921. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +14 -12
  1922. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +209 -151
  1923. data/third_party/abseil-cpp/absl/synchronization/mutex.h +106 -72
  1924. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  1925. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -11
  1926. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1927. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1928. data/third_party/abseil-cpp/absl/time/duration.cc +98 -65
  1929. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  1930. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +42 -32
  1931. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +97 -22
  1932. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  1933. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1934. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  1935. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1936. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  1937. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  1938. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +219 -150
  1939. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  1940. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +15 -8
  1941. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1942. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  1943. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +1 -1
  1944. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1945. data/third_party/abseil-cpp/absl/time/time.h +122 -86
  1946. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1947. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1948. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  1949. data/third_party/abseil-cpp/absl/types/internal/variant.h +8 -8
  1950. data/third_party/abseil-cpp/absl/types/optional.h +26 -23
  1951. data/third_party/abseil-cpp/absl/types/span.h +52 -38
  1952. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  1953. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1954. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1955. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1956. data/third_party/boringssl-with-bazel/err_data.c +763 -721
  1957. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +70 -57
  1958. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1959. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1960. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  1961. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1962. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  1963. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1964. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +67 -54
  1965. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1966. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1967. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
  1968. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1969. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
  1970. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
  1971. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1972. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1973. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +74 -68
  1974. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1975. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1976. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1977. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
  1978. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
  1979. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
  1980. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1981. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1982. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
  1983. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1984. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1985. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1986. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1987. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1988. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1989. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1990. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1991. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1992. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1993. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1994. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1995. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1996. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
  1997. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1998. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1999. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  2000. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  2001. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  2002. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  2003. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  2004. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  2005. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  2006. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  2007. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  2008. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  2009. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  2010. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  2011. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
  2012. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  2013. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +30 -43
  2014. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  2015. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  2016. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  2017. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  2018. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
  2019. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  2020. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  2021. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  2022. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  2023. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  2024. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  2025. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  2026. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +15 -4
  2027. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  2028. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  2029. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
  2030. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +208 -37
  2031. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  2032. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  2033. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
  2034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +11 -0
  2035. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  2036. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  2037. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  2038. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  2039. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  2040. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  2041. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  2042. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  2043. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  2044. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  2045. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  2046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  2047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  2048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  2049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  2050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  2051. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  2052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  2053. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  2054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  2055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +80 -43
  2056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +120 -62
  2057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  2058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +176 -18
  2059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  2060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  2061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  2062. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +401 -239
  2063. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  2064. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  2065. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  2066. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  2067. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  2068. data/third_party/boringssl-with-bazel/src/crypto/mem.c +46 -9
  2069. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  2070. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  2071. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  2072. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  2073. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  2074. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  2075. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  2076. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  2077. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  2078. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  2079. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  2080. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +96 -49
  2081. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  2082. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  2083. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  2085. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  2086. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  2087. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  2088. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  2089. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  2090. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  2091. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  2092. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  2093. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  2094. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  2095. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +118 -49
  2096. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +267 -95
  2097. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +210 -34
  2098. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  2099. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  2100. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +7 -5
  2101. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  2102. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  2103. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  2104. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  2105. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  2106. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  2107. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +13 -8
  2108. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -180
  2110. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  2111. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  2112. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +11 -33
  2113. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +29 -23
  2114. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  2115. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +2 -1
  2116. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  2117. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -27
  2118. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +5 -3
  2119. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  2120. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +29 -26
  2121. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +54 -104
  2122. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  2123. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +74 -25
  2124. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -12
  2125. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  2127. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -26
  2128. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  2129. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +17 -15
  2130. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  2131. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +49 -59
  2132. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  2133. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  2134. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  2135. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  2136. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  2137. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +49 -11
  2138. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  2139. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  2140. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +239 -11
  2141. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  2142. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +7 -5
  2143. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  2144. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  2145. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  2146. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  2147. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  2148. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +43 -32
  2149. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  2150. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -28
  2151. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
  2152. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  2153. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  2154. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  2155. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  2156. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  2157. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
  2158. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  2159. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  2160. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +15 -14
  2161. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +57 -10
  2162. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
  2163. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  2164. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
  2165. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +76 -9
  2166. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1794 -666
  2167. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
  2168. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +67 -15
  2169. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  2170. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +7 -1
  2171. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  2172. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  2173. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  2174. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  2175. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +42 -7
  2176. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  2177. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  2178. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
  2179. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  2180. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +66 -32
  2181. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -2
  2182. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  2183. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  2184. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  2185. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  2186. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  2187. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +70 -106
  2188. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
  2189. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  2190. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  2191. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  2192. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  2193. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  2194. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  2195. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  2196. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +194 -146
  2197. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  2198. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  2199. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  2200. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  2201. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  2202. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  2203. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +499 -122
  2204. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +52 -36
  2205. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +42 -14
  2206. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1554 -427
  2207. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  2208. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +642 -452
  2209. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  2210. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  2211. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  2212. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  2213. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
  2214. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +333 -22
  2215. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +99 -51
  2216. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +315 -219
  2217. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +178 -36
  2218. data/third_party/boringssl-with-bazel/src/ssl/internal.h +533 -159
  2219. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  2220. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  2221. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  2222. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +49 -9
  2223. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  2224. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +10 -11
  2225. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  2226. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +129 -110
  2227. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  2228. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +147 -118
  2229. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  2230. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  2231. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +11 -3
  2232. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  2233. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  2234. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +80 -36
  2235. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +285 -190
  2236. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  2237. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +381 -136
  2238. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  2239. data/third_party/cares/cares/include/ares.h +742 -0
  2240. data/third_party/cares/cares/include/ares_dns.h +112 -0
  2241. data/third_party/cares/cares/include/ares_version.h +24 -0
  2242. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  2243. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  2244. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  2245. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  2246. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  2247. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  2248. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  2249. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  2250. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  2251. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  2252. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  2253. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  2254. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  2255. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  2256. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  2257. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  2258. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  2259. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  2260. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  2261. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  2262. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  2263. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  2264. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  2265. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  2266. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  2267. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  2268. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  2269. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  2270. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  2271. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  2272. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  2273. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  2274. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  2275. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  2276. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  2277. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  2278. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  2279. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  2280. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  2281. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  2282. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  2283. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  2284. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  2285. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  2286. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  2287. data/third_party/re2/re2/bitstate.cc +3 -3
  2288. data/third_party/re2/re2/compile.cc +91 -109
  2289. data/third_party/re2/re2/dfa.cc +40 -52
  2290. data/third_party/re2/re2/filtered_re2.cc +18 -2
  2291. data/third_party/re2/re2/filtered_re2.h +10 -5
  2292. data/third_party/re2/re2/nfa.cc +5 -5
  2293. data/third_party/re2/re2/onepass.cc +2 -2
  2294. data/third_party/re2/re2/parse.cc +42 -23
  2295. data/third_party/re2/re2/perl_groups.cc +34 -34
  2296. data/third_party/re2/re2/prefilter.cc +3 -2
  2297. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  2298. data/third_party/re2/re2/prefilter_tree.h +3 -2
  2299. data/third_party/re2/re2/prog.cc +193 -6
  2300. data/third_party/re2/re2/prog.h +45 -14
  2301. data/third_party/re2/re2/re2.cc +93 -129
  2302. data/third_party/re2/re2/re2.h +156 -141
  2303. data/third_party/re2/re2/regexp.cc +13 -7
  2304. data/third_party/re2/re2/regexp.h +8 -2
  2305. data/third_party/re2/re2/set.cc +31 -9
  2306. data/third_party/re2/re2/set.h +9 -4
  2307. data/third_party/re2/re2/simplify.cc +11 -3
  2308. data/third_party/re2/re2/stringpiece.h +10 -7
  2309. data/third_party/re2/re2/tostring.cc +1 -1
  2310. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  2311. data/third_party/re2/re2/unicode_groups.cc +319 -151
  2312. data/third_party/re2/re2/walker-inl.h +4 -3
  2313. data/third_party/re2/util/mutex.h +6 -6
  2314. data/third_party/re2/util/pcre.h +3 -3
  2315. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  2316. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  2317. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2318. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2319. data/third_party/upb/upb/arena.c +277 -0
  2320. data/third_party/upb/upb/arena.h +225 -0
  2321. data/third_party/upb/upb/array.c +114 -0
  2322. data/third_party/upb/upb/array.h +83 -0
  2323. data/third_party/upb/upb/collections.h +36 -0
  2324. data/third_party/upb/upb/decode.c +979 -379
  2325. data/third_party/upb/upb/decode.h +80 -6
  2326. data/third_party/upb/upb/decode_fast.c +1055 -0
  2327. data/third_party/upb/upb/decode_fast.h +153 -0
  2328. data/third_party/upb/upb/def.c +3269 -0
  2329. data/third_party/upb/upb/def.h +416 -0
  2330. data/third_party/upb/upb/def.hpp +441 -0
  2331. data/third_party/upb/upb/encode.c +439 -246
  2332. data/third_party/upb/upb/encode.h +66 -6
  2333. data/third_party/upb/upb/extension_registry.c +93 -0
  2334. data/third_party/upb/upb/extension_registry.h +84 -0
  2335. data/third_party/upb/upb/internal/decode.h +211 -0
  2336. data/third_party/upb/upb/internal/table.h +385 -0
  2337. data/third_party/upb/upb/internal/upb.h +68 -0
  2338. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  2339. data/third_party/upb/upb/json_decode.c +1512 -0
  2340. data/third_party/upb/upb/json_decode.h +47 -0
  2341. data/third_party/upb/upb/json_encode.c +780 -0
  2342. data/third_party/upb/upb/json_encode.h +65 -0
  2343. data/third_party/upb/upb/map.c +108 -0
  2344. data/third_party/upb/upb/map.h +117 -0
  2345. data/third_party/upb/upb/message_value.h +66 -0
  2346. data/third_party/upb/upb/mini_table.c +1147 -0
  2347. data/third_party/upb/upb/mini_table.h +189 -0
  2348. data/third_party/upb/upb/mini_table.hpp +112 -0
  2349. data/third_party/upb/upb/msg.c +291 -100
  2350. data/third_party/upb/upb/msg.h +48 -450
  2351. data/third_party/upb/upb/msg_internal.h +837 -0
  2352. data/third_party/upb/upb/port_def.inc +166 -83
  2353. data/third_party/upb/upb/port_undef.inc +43 -8
  2354. data/third_party/upb/upb/reflection.c +323 -0
  2355. data/third_party/upb/upb/reflection.h +110 -0
  2356. data/third_party/upb/upb/reflection.hpp +37 -0
  2357. data/third_party/upb/upb/status.c +86 -0
  2358. data/third_party/upb/upb/status.h +66 -0
  2359. data/third_party/upb/upb/table.c +422 -376
  2360. data/third_party/upb/upb/table_internal.h +36 -0
  2361. data/third_party/upb/upb/text_encode.c +473 -0
  2362. data/third_party/upb/upb/text_encode.h +64 -0
  2363. data/third_party/upb/upb/upb.c +56 -267
  2364. data/third_party/upb/upb/upb.h +115 -239
  2365. data/third_party/upb/upb/upb.hpp +51 -24
  2366. data/third_party/xxhash/xxhash.h +5580 -0
  2367. data/third_party/zlib/compress.c +3 -3
  2368. data/third_party/zlib/crc32.c +975 -292
  2369. data/third_party/zlib/crc32.h +9441 -436
  2370. data/third_party/zlib/deflate.c +183 -129
  2371. data/third_party/zlib/deflate.h +12 -15
  2372. data/third_party/zlib/gzguts.h +3 -2
  2373. data/third_party/zlib/gzlib.c +6 -4
  2374. data/third_party/zlib/gzread.c +8 -12
  2375. data/third_party/zlib/gzwrite.c +26 -14
  2376. data/third_party/zlib/infback.c +12 -8
  2377. data/third_party/zlib/inffast.c +14 -14
  2378. data/third_party/zlib/inflate.c +44 -10
  2379. data/third_party/zlib/inflate.h +3 -2
  2380. data/third_party/zlib/inftrees.c +3 -3
  2381. data/third_party/zlib/inftrees.h +1 -1
  2382. data/third_party/zlib/trees.c +85 -107
  2383. data/third_party/zlib/uncompr.c +2 -2
  2384. data/third_party/zlib/zconf.h +16 -3
  2385. data/third_party/zlib/zlib.h +129 -106
  2386. data/third_party/zlib/zutil.c +11 -9
  2387. data/third_party/zlib/zutil.h +13 -9
  2388. metadata +1180 -323
  2389. data/include/grpc/impl/codegen/gpr_slice.h +0 -69
  2390. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -389
  2391. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -34
  2392. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
  2393. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -85
  2394. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -946
  2395. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -537
  2396. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -32
  2397. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1141
  2398. data/src/core/ext/filters/client_channel/lb_policy.cc +0 -138
  2399. data/src/core/ext/filters/client_channel/lb_policy.h +0 -425
  2400. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -47
  2401. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -181
  2402. data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -65
  2403. data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
  2404. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -89
  2405. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -50
  2406. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
  2407. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  2408. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  2409. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  2410. data/src/core/ext/filters/client_channel/resolver.cc +0 -85
  2411. data/src/core/ext/filters/client_channel/resolver.h +0 -144
  2412. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
  2413. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -196
  2414. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  2415. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -442
  2416. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -126
  2417. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -354
  2418. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -142
  2419. data/src/core/ext/filters/client_channel/server_address.cc +0 -81
  2420. data/src/core/ext/filters/client_channel/server_address.h +0 -128
  2421. data/src/core/ext/filters/client_channel/service_config.cc +0 -221
  2422. data/src/core/ext/filters/client_channel/service_config.h +0 -123
  2423. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -68
  2424. data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -87
  2425. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -89
  2426. data/src/core/ext/filters/client_channel/subchannel_interface.h +0 -94
  2427. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
  2428. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -546
  2429. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
  2430. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -399
  2431. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +0 -31
  2432. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -557
  2433. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2434. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  2435. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
  2436. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  2437. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  2438. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  2439. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  2440. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -112
  2441. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -79
  2442. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -200
  2443. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
  2444. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -69
  2445. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
  2446. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2447. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
  2448. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  2449. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  2450. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  2451. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
  2452. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -49
  2453. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -30
  2454. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -49
  2455. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -30
  2456. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -49
  2457. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -29
  2458. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -49
  2459. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
  2460. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -49
  2461. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  2462. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -29
  2463. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  2464. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -117
  2465. data/src/core/ext/xds/xds_channel.h +0 -46
  2466. data/src/core/ext/xds/xds_channel_secure.cc +0 -103
  2467. data/src/core/lib/avl/avl.cc +0 -306
  2468. data/src/core/lib/channel/handshaker.cc +0 -262
  2469. data/src/core/lib/channel/handshaker.h +0 -179
  2470. data/src/core/lib/channel/handshaker_factory.h +0 -42
  2471. data/src/core/lib/channel/handshaker_registry.cc +0 -105
  2472. data/src/core/lib/channel/handshaker_registry.h +0 -54
  2473. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  2474. data/src/core/lib/compression/compression_args.cc +0 -134
  2475. data/src/core/lib/compression/compression_args.h +0 -56
  2476. data/src/core/lib/compression/stream_compression.cc +0 -80
  2477. data/src/core/lib/compression/stream_compression.h +0 -116
  2478. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  2479. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2480. data/src/core/lib/compression/stream_compression_identity.cc +0 -92
  2481. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2482. data/src/core/lib/gpr/arena.h +0 -47
  2483. data/src/core/lib/gpr/env.h +0 -40
  2484. data/src/core/lib/gpr/env_linux.cc +0 -76
  2485. data/src/core/lib/gpr/env_posix.cc +0 -47
  2486. data/src/core/lib/gpr/env_windows.cc +0 -74
  2487. data/src/core/lib/gpr/murmur_hash.cc +0 -80
  2488. data/src/core/lib/gpr/murmur_hash.h +0 -29
  2489. data/src/core/lib/gpr/string_windows.h +0 -32
  2490. data/src/core/lib/gpr/tls.h +0 -68
  2491. data/src/core/lib/gpr/tls_gcc.h +0 -52
  2492. data/src/core/lib/gpr/tls_msvc.h +0 -52
  2493. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  2494. data/src/core/lib/gpr/tls_pthread.h +0 -56
  2495. data/src/core/lib/gprpp/arena.cc +0 -103
  2496. data/src/core/lib/gprpp/arena.h +0 -120
  2497. data/src/core/lib/gprpp/atomic.h +0 -104
  2498. data/src/core/lib/gprpp/map.h +0 -53
  2499. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  2500. data/src/core/lib/iomgr/error_internal.h +0 -61
  2501. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1650
  2502. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2503. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -183
  2504. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -175
  2505. data/src/core/lib/iomgr/executor/threadpool.cc +0 -137
  2506. data/src/core/lib/iomgr/executor/threadpool.h +0 -149
  2507. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2508. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2509. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  2510. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  2511. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  2512. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2513. data/src/core/lib/iomgr/parse_address.cc +0 -238
  2514. data/src/core/lib/iomgr/parse_address.h +0 -53
  2515. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
  2516. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  2517. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  2518. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  2519. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  2520. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2521. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  2522. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  2523. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -168
  2524. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2525. data/src/core/lib/iomgr/resource_quota.cc +0 -1016
  2526. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2527. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2528. data/src/core/lib/iomgr/sockaddr_utils.cc +0 -296
  2529. data/src/core/lib/iomgr/sockaddr_utils.h +0 -80
  2530. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  2531. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2532. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -160
  2533. data/src/core/lib/iomgr/tcp_custom.cc +0 -386
  2534. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2535. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -477
  2536. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2537. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  2538. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  2539. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2540. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2541. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2542. data/src/core/lib/iomgr/udp_server.cc +0 -748
  2543. data/src/core/lib/iomgr/udp_server.h +0 -104
  2544. data/src/core/lib/iomgr/work_serializer.cc +0 -155
  2545. data/src/core/lib/iomgr/work_serializer.h +0 -65
  2546. data/src/core/lib/profiling/basic_timers.cc +0 -293
  2547. data/src/core/lib/profiling/stap_timers.cc +0 -50
  2548. data/src/core/lib/profiling/timers.h +0 -94
  2549. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  2550. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  2551. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -42
  2552. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -68
  2553. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -93
  2554. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  2555. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -56
  2556. data/src/core/lib/security/authorization/mock_cel/statusor.h +0 -50
  2557. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2558. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +0 -171
  2559. data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -44
  2560. data/src/core/lib/slice/slice_intern.cc +0 -375
  2561. data/src/core/lib/slice/slice_utils.h +0 -200
  2562. data/src/core/lib/surface/init_secure.cc +0 -81
  2563. data/src/core/lib/transport/authority_override.cc +0 -38
  2564. data/src/core/lib/transport/authority_override.h +0 -32
  2565. data/src/core/lib/transport/byte_stream.cc +0 -158
  2566. data/src/core/lib/transport/byte_stream.h +0 -165
  2567. data/src/core/lib/transport/metadata.cc +0 -679
  2568. data/src/core/lib/transport/metadata.h +0 -446
  2569. data/src/core/lib/transport/static_metadata.cc +0 -1249
  2570. data/src/core/lib/transport/static_metadata.h +0 -604
  2571. data/src/core/lib/transport/status_metadata.cc +0 -61
  2572. data/src/core/lib/transport/status_metadata.h +0 -48
  2573. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  2574. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
  2575. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +0 -93
  2576. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +0 -130
  2577. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -49
  2578. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -261
  2579. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  2580. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2581. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
  2582. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
  2583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2584. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -192
  2585. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
  2586. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2587. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
  2588. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2589. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  2590. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  2591. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -3895
  2592. data/third_party/cares/cares/ares.h +0 -670
  2593. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2594. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2595. data/third_party/cares/cares/ares_create_query.c +0 -206
  2596. data/third_party/cares/cares/ares_data.c +0 -222
  2597. data/third_party/cares/cares/ares_data.h +0 -72
  2598. data/third_party/cares/cares/ares_dns.h +0 -103
  2599. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2600. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2601. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2602. data/third_party/cares/cares/ares_getenv.c +0 -30
  2603. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2604. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2605. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2606. data/third_party/cares/cares/ares_getopt.c +0 -122
  2607. data/third_party/cares/cares/ares_getopt.h +0 -53
  2608. data/third_party/cares/cares/ares_init.c +0 -2615
  2609. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2610. data/third_party/cares/cares/ares_library_init.c +0 -195
  2611. data/third_party/cares/cares/ares_library_init.h +0 -43
  2612. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2613. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2614. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2615. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2616. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2617. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2618. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2619. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2620. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2621. data/third_party/cares/cares/ares_private.h +0 -382
  2622. data/third_party/cares/cares/ares_process.c +0 -1473
  2623. data/third_party/cares/cares/ares_query.c +0 -186
  2624. data/third_party/cares/cares/ares_search.c +0 -323
  2625. data/third_party/cares/cares/ares_send.c +0 -137
  2626. data/third_party/cares/cares/ares_setup.h +0 -217
  2627. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2628. data/third_party/cares/cares/ares_version.h +0 -24
  2629. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2630. data/third_party/cares/cares/inet_ntop.c +0 -207
  2631. data/third_party/upb/upb/port.c +0 -26
  2632. data/third_party/upb/upb/table.int.h +0 -466
  2633. /data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  2634. /data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  2635. /data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  2636. /data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  2637. /data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  2638. /data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  2639. /data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  2640. /data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  2641. /data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  2642. /data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  2643. /data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  2644. /data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  2645. /data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  2646. /data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  2647. /data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  2648. /data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  2649. /data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  2650. /data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  2651. /data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  2652. /data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  2653. /data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  2654. /data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  2655. /data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  2656. /data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  2657. /data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  2658. /data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  2659. /data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  2660. /data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  2661. /data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  2662. /data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  2663. /data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  2664. /data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  2665. /data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  2666. /data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  2667. /data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  2668. /data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
@@ -1,516 +1,107 @@
1
- /*
2
- *
3
- * Copyright 2018 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
1
+ //
2
+ // Copyright 2018 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
18
16
 
19
17
  #include <grpc/support/port_platform.h>
20
18
 
19
+ #include "src/core/ext/xds/xds_api.h"
20
+
21
+ #include <stdint.h>
22
+ #include <stdlib.h>
23
+
21
24
  #include <algorithm>
22
- #include <cctype>
23
- #include <cstdint>
24
- #include <cstdlib>
25
+ #include <set>
25
26
  #include <string>
27
+ #include <vector>
26
28
 
27
29
  #include "absl/strings/str_cat.h"
28
- #include "absl/strings/str_format.h"
29
- #include "absl/strings/str_join.h"
30
- #include "absl/strings/str_split.h"
31
-
32
- #include "upb/upb.hpp"
33
-
34
- #include <grpc/impl/codegen/log.h>
35
- #include <grpc/support/alloc.h>
36
- #include <grpc/support/string_util.h>
37
-
38
- #include "src/core/ext/xds/xds_api.h"
39
- #include "src/core/lib/gpr/env.h"
40
- #include "src/core/lib/gpr/string.h"
41
- #include "src/core/lib/gpr/useful.h"
42
- #include "src/core/lib/iomgr/error.h"
43
- #include "src/core/lib/iomgr/sockaddr_utils.h"
44
-
45
- #include "envoy/config/cluster/v3/cluster.upb.h"
46
- #include "envoy/config/core/v3/address.upb.h"
30
+ #include "absl/strings/strip.h"
47
31
  #include "envoy/config/core/v3/base.upb.h"
48
- #include "envoy/config/core/v3/config_source.upb.h"
49
- #include "envoy/config/core/v3/health_check.upb.h"
50
- #include "envoy/config/endpoint/v3/endpoint.upb.h"
51
- #include "envoy/config/endpoint/v3/endpoint_components.upb.h"
52
32
  #include "envoy/config/endpoint/v3/load_report.upb.h"
53
- #include "envoy/config/listener/v3/api_listener.upb.h"
54
- #include "envoy/config/listener/v3/listener.upb.h"
55
- #include "envoy/config/route/v3/route.upb.h"
56
- #include "envoy/config/route/v3/route_components.upb.h"
57
- #include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
58
- #include "envoy/service/cluster/v3/cds.upb.h"
59
33
  #include "envoy/service/discovery/v3/discovery.upb.h"
60
- #include "envoy/service/endpoint/v3/eds.upb.h"
61
- #include "envoy/service/listener/v3/lds.upb.h"
34
+ #include "envoy/service/discovery/v3/discovery.upbdefs.h"
62
35
  #include "envoy/service/load_stats/v3/lrs.upb.h"
63
- #include "envoy/service/route/v3/rds.upb.h"
64
- #include "envoy/type/matcher/v3/regex.upb.h"
65
- #include "envoy/type/v3/percent.upb.h"
66
- #include "envoy/type/v3/range.upb.h"
36
+ #include "envoy/service/load_stats/v3/lrs.upbdefs.h"
37
+ #include "envoy/service/status/v3/csds.upb.h"
67
38
  #include "google/protobuf/any.upb.h"
68
39
  #include "google/protobuf/duration.upb.h"
69
40
  #include "google/protobuf/struct.upb.h"
70
- #include "google/protobuf/wrappers.upb.h"
41
+ #include "google/protobuf/timestamp.upb.h"
71
42
  #include "google/rpc/status.upb.h"
43
+ #include "upb/def.h"
44
+ #include "upb/text_encode.h"
72
45
  #include "upb/upb.h"
46
+ #include "upb/upb.hpp"
73
47
 
74
- namespace grpc_core {
75
-
76
- //
77
- // XdsApi::Route::Matchers::PathMatcher
78
- //
79
-
80
- XdsApi::Route::Matchers::PathMatcher::PathMatcher(const PathMatcher& other)
81
- : type(other.type) {
82
- if (type == PathMatcherType::REGEX) {
83
- regex_matcher = absl::make_unique<RE2>(other.regex_matcher->pattern());
84
- } else {
85
- string_matcher = other.string_matcher;
86
- }
87
- }
88
-
89
- XdsApi::Route::Matchers::PathMatcher& XdsApi::Route::Matchers::PathMatcher::
90
- operator=(const PathMatcher& other) {
91
- type = other.type;
92
- if (type == PathMatcherType::REGEX) {
93
- regex_matcher = absl::make_unique<RE2>(other.regex_matcher->pattern());
94
- } else {
95
- string_matcher = other.string_matcher;
96
- }
97
- return *this;
98
- }
99
-
100
- bool XdsApi::Route::Matchers::PathMatcher::operator==(
101
- const PathMatcher& other) const {
102
- if (type != other.type) return false;
103
- if (type == PathMatcherType::REGEX) {
104
- // Should never be null.
105
- if (regex_matcher == nullptr || other.regex_matcher == nullptr) {
106
- return false;
107
- }
108
- return regex_matcher->pattern() == other.regex_matcher->pattern();
109
- }
110
- return string_matcher == other.string_matcher;
111
- }
112
-
113
- std::string XdsApi::Route::Matchers::PathMatcher::ToString() const {
114
- std::string path_type_string;
115
- switch (type) {
116
- case PathMatcherType::PATH:
117
- path_type_string = "path match";
118
- break;
119
- case PathMatcherType::PREFIX:
120
- path_type_string = "prefix match";
121
- break;
122
- case PathMatcherType::REGEX:
123
- path_type_string = "regex match";
124
- break;
125
- default:
126
- break;
127
- }
128
- return absl::StrFormat("Path %s:%s", path_type_string,
129
- type == PathMatcherType::REGEX
130
- ? regex_matcher->pattern()
131
- : string_matcher);
132
- }
133
-
134
- //
135
- // XdsApi::Route::Matchers::HeaderMatcher
136
- //
137
-
138
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcher(
139
- const HeaderMatcher& other)
140
- : name(other.name), type(other.type), invert_match(other.invert_match) {
141
- switch (type) {
142
- case HeaderMatcherType::REGEX:
143
- regex_match = absl::make_unique<RE2>(other.regex_match->pattern());
144
- break;
145
- case HeaderMatcherType::RANGE:
146
- range_start = other.range_start;
147
- range_end = other.range_end;
148
- break;
149
- case HeaderMatcherType::PRESENT:
150
- present_match = other.present_match;
151
- break;
152
- default:
153
- string_matcher = other.string_matcher;
154
- }
155
- }
156
-
157
- XdsApi::Route::Matchers::HeaderMatcher& XdsApi::Route::Matchers::HeaderMatcher::
158
- operator=(const HeaderMatcher& other) {
159
- name = other.name;
160
- type = other.type;
161
- invert_match = other.invert_match;
162
- switch (type) {
163
- case HeaderMatcherType::REGEX:
164
- regex_match = absl::make_unique<RE2>(other.regex_match->pattern());
165
- break;
166
- case HeaderMatcherType::RANGE:
167
- range_start = other.range_start;
168
- range_end = other.range_end;
169
- break;
170
- case HeaderMatcherType::PRESENT:
171
- present_match = other.present_match;
172
- break;
173
- default:
174
- string_matcher = other.string_matcher;
175
- }
176
- return *this;
177
- }
178
-
179
- bool XdsApi::Route::Matchers::HeaderMatcher::operator==(
180
- const HeaderMatcher& other) const {
181
- if (name != other.name) return false;
182
- if (type != other.type) return false;
183
- if (invert_match != other.invert_match) return false;
184
- switch (type) {
185
- case HeaderMatcherType::REGEX:
186
- return regex_match->pattern() != other.regex_match->pattern();
187
- case HeaderMatcherType::RANGE:
188
- return range_start != other.range_start && range_end != other.range_end;
189
- case HeaderMatcherType::PRESENT:
190
- return present_match != other.present_match;
191
- default:
192
- return string_matcher != other.string_matcher;
193
- }
194
- }
195
-
196
- std::string XdsApi::Route::Matchers::HeaderMatcher::ToString() const {
197
- switch (type) {
198
- case HeaderMatcherType::EXACT:
199
- return absl::StrFormat("Header exact match:%s %s:%s",
200
- invert_match ? " not" : "", name, string_matcher);
201
- case HeaderMatcherType::REGEX:
202
- return absl::StrFormat("Header regex match:%s %s:%s",
203
- invert_match ? " not" : "", name,
204
- regex_match->pattern());
205
- case HeaderMatcherType::RANGE:
206
- return absl::StrFormat("Header range match:%s %s:[%d, %d)",
207
- invert_match ? " not" : "", name, range_start,
208
- range_end);
209
- case HeaderMatcherType::PRESENT:
210
- return absl::StrFormat("Header present match:%s %s:%s",
211
- invert_match ? " not" : "", name,
212
- present_match ? "true" : "false");
213
- case HeaderMatcherType::PREFIX:
214
- return absl::StrFormat("Header prefix match:%s %s:%s",
215
- invert_match ? " not" : "", name, string_matcher);
216
- case HeaderMatcherType::SUFFIX:
217
- return absl::StrFormat("Header suffix match:%s %s:%s",
218
- invert_match ? " not" : "", name, string_matcher);
219
- default:
220
- return "";
221
- }
222
- }
223
-
224
- //
225
- // XdsApi::Route
226
- //
227
-
228
- std::string XdsApi::Route::Matchers::ToString() const {
229
- std::vector<std::string> contents;
230
- contents.push_back(path_matcher.ToString());
231
- for (const auto& header_it : header_matchers) {
232
- contents.push_back(header_it.ToString());
233
- }
234
- if (fraction_per_million.has_value()) {
235
- contents.push_back(absl::StrFormat("Fraction Per Million %d",
236
- fraction_per_million.value()));
237
- }
238
- return absl::StrJoin(contents, "\n");
239
- }
240
-
241
- std::string XdsApi::Route::ClusterWeight::ToString() const {
242
- return absl::StrFormat("{cluster=%s, weight=%d}", name, weight);
243
- }
244
-
245
- std::string XdsApi::Route::ToString() const {
246
- std::vector<std::string> contents;
247
- contents.push_back(matchers.ToString());
248
- if (!cluster_name.empty()) {
249
- contents.push_back(absl::StrFormat("Cluster name: %s", cluster_name));
250
- }
251
- for (const auto& weighted_it : weighted_clusters) {
252
- contents.push_back(weighted_it.ToString());
253
- }
254
- return absl::StrJoin(contents, "\n");
255
- }
256
-
257
- //
258
- // XdsApi::RdsUpdate
259
- //
260
-
261
- std::string XdsApi::RdsUpdate::ToString() const {
262
- std::vector<std::string> vhosts;
263
- for (const VirtualHost& vhost : virtual_hosts) {
264
- vhosts.push_back(
265
- absl::StrCat("vhost={\n"
266
- " domains=[",
267
- absl::StrJoin(vhost.domains, ", "),
268
- "]\n"
269
- " routes=[\n"));
270
- for (const XdsApi::Route& route : vhost.routes) {
271
- vhosts.push_back(" {\n");
272
- vhosts.push_back(route.ToString());
273
- vhosts.push_back("\n }\n");
274
- }
275
- vhosts.push_back(" ]\n");
276
- vhosts.push_back("]\n");
277
- }
278
- return absl::StrJoin(vhosts, "");
279
- }
280
-
281
- namespace {
282
-
283
- // Better match type has smaller value.
284
- enum MatchType {
285
- EXACT_MATCH,
286
- SUFFIX_MATCH,
287
- PREFIX_MATCH,
288
- UNIVERSE_MATCH,
289
- INVALID_MATCH,
290
- };
291
-
292
- // Returns true if match succeeds.
293
- bool DomainMatch(MatchType match_type, std::string domain_pattern,
294
- std::string expected_host_name) {
295
- // Normalize the args to lower-case. Domain matching is case-insensitive.
296
- std::transform(domain_pattern.begin(), domain_pattern.end(),
297
- domain_pattern.begin(),
298
- [](unsigned char c) { return std::tolower(c); });
299
- std::transform(expected_host_name.begin(), expected_host_name.end(),
300
- expected_host_name.begin(),
301
- [](unsigned char c) { return std::tolower(c); });
302
- if (match_type == EXACT_MATCH) {
303
- return domain_pattern == expected_host_name;
304
- } else if (match_type == SUFFIX_MATCH) {
305
- // Asterisk must match at least one char.
306
- if (expected_host_name.size() < domain_pattern.size()) return false;
307
- absl::string_view pattern_suffix(domain_pattern.c_str() + 1);
308
- absl::string_view host_suffix(expected_host_name.c_str() +
309
- expected_host_name.size() -
310
- pattern_suffix.size());
311
- return pattern_suffix == host_suffix;
312
- } else if (match_type == PREFIX_MATCH) {
313
- // Asterisk must match at least one char.
314
- if (expected_host_name.size() < domain_pattern.size()) return false;
315
- absl::string_view pattern_prefix(domain_pattern.c_str(),
316
- domain_pattern.size() - 1);
317
- absl::string_view host_prefix(expected_host_name.c_str(),
318
- pattern_prefix.size());
319
- return pattern_prefix == host_prefix;
320
- } else {
321
- return match_type == UNIVERSE_MATCH;
322
- }
323
- }
324
-
325
- MatchType DomainPatternMatchType(const std::string& domain_pattern) {
326
- if (domain_pattern.empty()) return INVALID_MATCH;
327
- if (domain_pattern.find('*') == std::string::npos) return EXACT_MATCH;
328
- if (domain_pattern == "*") return UNIVERSE_MATCH;
329
- if (domain_pattern[0] == '*') return SUFFIX_MATCH;
330
- if (domain_pattern[domain_pattern.size() - 1] == '*') return PREFIX_MATCH;
331
- return INVALID_MATCH;
332
- }
333
-
334
- } // namespace
335
-
336
- const XdsApi::RdsUpdate::VirtualHost*
337
- XdsApi::RdsUpdate::FindVirtualHostForDomain(const std::string& domain) const {
338
- // Find the best matched virtual host.
339
- // The search order for 4 groups of domain patterns:
340
- // 1. Exact match.
341
- // 2. Suffix match (e.g., "*ABC").
342
- // 3. Prefix match (e.g., "ABC*").
343
- // 4. Universe match (i.e., "*").
344
- // Within each group, longest match wins.
345
- // If the same best matched domain pattern appears in multiple virtual hosts,
346
- // the first matched virtual host wins.
347
- const VirtualHost* target_vhost = nullptr;
348
- MatchType best_match_type = INVALID_MATCH;
349
- size_t longest_match = 0;
350
- // Check each domain pattern in each virtual host to determine the best
351
- // matched virtual host.
352
- for (const VirtualHost& vhost : virtual_hosts) {
353
- for (const std::string& domain_pattern : vhost.domains) {
354
- // Check the match type first. Skip the pattern if it's not better than
355
- // current match.
356
- const MatchType match_type = DomainPatternMatchType(domain_pattern);
357
- // This should be caught by RouteConfigParse().
358
- GPR_ASSERT(match_type != INVALID_MATCH);
359
- if (match_type > best_match_type) continue;
360
- if (match_type == best_match_type &&
361
- domain_pattern.size() <= longest_match) {
362
- continue;
363
- }
364
- // Skip if match fails.
365
- if (!DomainMatch(match_type, domain_pattern, domain)) continue;
366
- // Choose this match.
367
- target_vhost = &vhost;
368
- best_match_type = match_type;
369
- longest_match = domain_pattern.size();
370
- if (best_match_type == EXACT_MATCH) break;
371
- }
372
- if (best_match_type == EXACT_MATCH) break;
373
- }
374
- return target_vhost;
375
- }
376
-
377
- //
378
- // XdsApi::PriorityListUpdate
379
- //
380
-
381
- bool XdsApi::PriorityListUpdate::operator==(
382
- const XdsApi::PriorityListUpdate& other) const {
383
- if (priorities_.size() != other.priorities_.size()) return false;
384
- for (size_t i = 0; i < priorities_.size(); ++i) {
385
- if (priorities_[i].localities != other.priorities_[i].localities) {
386
- return false;
387
- }
388
- }
389
- return true;
390
- }
391
-
392
- void XdsApi::PriorityListUpdate::Add(
393
- XdsApi::PriorityListUpdate::LocalityMap::Locality locality) {
394
- // Pad the missing priorities in case the localities are not ordered by
395
- // priority.
396
- if (!Contains(locality.priority)) priorities_.resize(locality.priority + 1);
397
- LocalityMap& locality_map = priorities_[locality.priority];
398
- locality_map.localities.emplace(locality.name, std::move(locality));
399
- }
400
-
401
- const XdsApi::PriorityListUpdate::LocalityMap* XdsApi::PriorityListUpdate::Find(
402
- uint32_t priority) const {
403
- if (!Contains(priority)) return nullptr;
404
- return &priorities_[priority];
405
- }
406
-
407
- bool XdsApi::PriorityListUpdate::Contains(
408
- const RefCountedPtr<XdsLocalityName>& name) {
409
- for (size_t i = 0; i < priorities_.size(); ++i) {
410
- const LocalityMap& locality_map = priorities_[i];
411
- if (locality_map.Contains(name)) return true;
412
- }
413
- return false;
414
- }
415
-
416
- //
417
- // XdsApi::DropConfig
418
- //
419
-
420
- bool XdsApi::DropConfig::ShouldDrop(const std::string** category_name) const {
421
- for (size_t i = 0; i < drop_category_list_.size(); ++i) {
422
- const auto& drop_category = drop_category_list_[i];
423
- // Generate a random number in [0, 1000000).
424
- const uint32_t random = static_cast<uint32_t>(rand()) % 1000000;
425
- if (random < drop_category.parts_per_million) {
426
- *category_name = &drop_category.name;
427
- return true;
428
- }
429
- }
430
- return false;
431
- }
432
-
433
- //
434
- // XdsApi
435
- //
436
-
437
- const char* XdsApi::kLdsTypeUrl =
438
- "type.googleapis.com/envoy.config.listener.v3.Listener";
439
- const char* XdsApi::kRdsTypeUrl =
440
- "type.googleapis.com/envoy.config.route.v3.RouteConfiguration";
441
- const char* XdsApi::kCdsTypeUrl =
442
- "type.googleapis.com/envoy.config.cluster.v3.Cluster";
443
- const char* XdsApi::kEdsTypeUrl =
444
- "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment";
445
-
446
- namespace {
447
-
448
- const char* kLdsV2TypeUrl = "type.googleapis.com/envoy.api.v2.Listener";
449
- const char* kRdsV2TypeUrl =
450
- "type.googleapis.com/envoy.api.v2.RouteConfiguration";
451
- const char* kCdsV2TypeUrl = "type.googleapis.com/envoy.api.v2.Cluster";
452
- const char* kEdsV2TypeUrl =
453
- "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment";
454
-
455
- bool IsLds(absl::string_view type_url) {
456
- return type_url == XdsApi::kLdsTypeUrl || type_url == kLdsV2TypeUrl;
457
- }
458
-
459
- bool IsRds(absl::string_view type_url) {
460
- return type_url == XdsApi::kRdsTypeUrl || type_url == kRdsV2TypeUrl;
461
- }
48
+ #include <grpc/status.h>
49
+ #include <grpc/support/log.h>
50
+ #include <grpc/support/time.h>
462
51
 
463
- bool IsCds(absl::string_view type_url) {
464
- return type_url == XdsApi::kCdsTypeUrl || type_url == kCdsV2TypeUrl;
465
- }
52
+ #include "src/core/ext/xds/upb_utils.h"
53
+ #include "src/core/ext/xds/xds_client.h"
54
+ #include "src/core/lib/json/json.h"
466
55
 
467
- bool IsEds(absl::string_view type_url) {
468
- return type_url == XdsApi::kEdsTypeUrl || type_url == kEdsV2TypeUrl;
469
- }
56
+ // IWYU pragma: no_include "upb/msg_internal.h"
470
57
 
471
- } // namespace
58
+ namespace grpc_core {
472
59
 
473
60
  XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
474
- const XdsBootstrap* bootstrap)
61
+ const XdsBootstrap::Node* node, upb::SymbolTable* symtab,
62
+ std::string user_agent_name, std::string user_agent_version)
475
63
  : client_(client),
476
64
  tracer_(tracer),
477
- use_v3_(bootstrap != nullptr && bootstrap->server().ShouldUseV3()),
478
- bootstrap_(bootstrap),
479
- build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
480
- grpc_version_string())),
481
- user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING)) {}
65
+ node_(node),
66
+ symtab_(symtab),
67
+ user_agent_name_(std::move(user_agent_name)),
68
+ user_agent_version_(std::move(user_agent_version)) {}
482
69
 
483
70
  namespace {
484
71
 
485
- // Works for both std::string and absl::string_view.
486
- template <typename T>
487
- inline upb_strview StdStringToUpbString(const T& str) {
488
- return upb_strview_make(str.data(), str.size());
489
- }
72
+ struct XdsApiContext {
73
+ XdsClient* client;
74
+ TraceFlag* tracer;
75
+ upb_DefPool* symtab;
76
+ upb_Arena* arena;
77
+ };
490
78
 
491
- void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
492
- const Json& value);
79
+ void PopulateMetadataValue(const XdsApiContext& context,
80
+ google_protobuf_Value* value_pb, const Json& value);
493
81
 
494
- void PopulateListValue(upb_arena* arena, google_protobuf_ListValue* list_value,
82
+ void PopulateListValue(const XdsApiContext& context,
83
+ google_protobuf_ListValue* list_value,
495
84
  const Json::Array& values) {
496
85
  for (const auto& value : values) {
497
- auto* value_pb = google_protobuf_ListValue_add_values(list_value, arena);
498
- PopulateMetadataValue(arena, value_pb, value);
86
+ auto* value_pb =
87
+ google_protobuf_ListValue_add_values(list_value, context.arena);
88
+ PopulateMetadataValue(context, value_pb, value);
499
89
  }
500
90
  }
501
91
 
502
- void PopulateMetadata(upb_arena* arena, google_protobuf_Struct* metadata_pb,
92
+ void PopulateMetadata(const XdsApiContext& context,
93
+ google_protobuf_Struct* metadata_pb,
503
94
  const Json::Object& metadata) {
504
95
  for (const auto& p : metadata) {
505
- google_protobuf_Value* value = google_protobuf_Value_new(arena);
506
- PopulateMetadataValue(arena, value, p.second);
96
+ google_protobuf_Value* value = google_protobuf_Value_new(context.arena);
97
+ PopulateMetadataValue(context, value, p.second);
507
98
  google_protobuf_Struct_fields_set(
508
- metadata_pb, StdStringToUpbString(p.first), value, arena);
99
+ metadata_pb, StdStringToUpbString(p.first), value, context.arena);
509
100
  }
510
101
  }
511
102
 
512
- void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
513
- const Json& value) {
103
+ void PopulateMetadataValue(const XdsApiContext& context,
104
+ google_protobuf_Value* value_pb, const Json& value) {
514
105
  switch (value.type()) {
515
106
  case Json::Type::JSON_NULL:
516
107
  google_protobuf_Value_set_null_value(value_pb, 0);
@@ -531,331 +122,103 @@ void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
531
122
  break;
532
123
  case Json::Type::OBJECT: {
533
124
  google_protobuf_Struct* struct_value =
534
- google_protobuf_Value_mutable_struct_value(value_pb, arena);
535
- PopulateMetadata(arena, struct_value, value.object_value());
125
+ google_protobuf_Value_mutable_struct_value(value_pb, context.arena);
126
+ PopulateMetadata(context, struct_value, value.object_value());
536
127
  break;
537
128
  }
538
129
  case Json::Type::ARRAY: {
539
130
  google_protobuf_ListValue* list_value =
540
- google_protobuf_Value_mutable_list_value(value_pb, arena);
541
- PopulateListValue(arena, list_value, value.array_value());
131
+ google_protobuf_Value_mutable_list_value(value_pb, context.arena);
132
+ PopulateListValue(context, list_value, value.array_value());
542
133
  break;
543
134
  }
544
135
  }
545
136
  }
546
137
 
547
- // Helper functions to manually do protobuf string encoding, so that we
548
- // can populate the node build_version field that was removed in v3.
549
- std::string EncodeVarint(uint64_t val) {
550
- std::string data;
551
- do {
552
- uint8_t byte = val & 0x7fU;
553
- val >>= 7;
554
- if (val) byte |= 0x80U;
555
- data += byte;
556
- } while (val);
557
- return data;
558
- }
559
- std::string EncodeTag(uint32_t field_number, uint8_t wire_type) {
560
- return EncodeVarint((field_number << 3) | wire_type);
561
- }
562
- std::string EncodeStringField(uint32_t field_number, const std::string& str) {
563
- static const uint8_t kDelimitedWireType = 2;
564
- return EncodeTag(field_number, kDelimitedWireType) +
565
- EncodeVarint(str.size()) + str;
566
- }
567
-
568
- void PopulateBuildVersion(upb_arena* arena, envoy_config_core_v3_Node* node_msg,
569
- const std::string& build_version) {
570
- std::string encoded_build_version = EncodeStringField(5, build_version);
571
- // TODO(roth): This should use upb_msg_addunknown(), but that API is
572
- // broken in the current version of upb, so we're using the internal
573
- // API for now. Change this once we upgrade to a version of upb that
574
- // fixes this bug.
575
- _upb_msg_addunknown(node_msg, encoded_build_version.data(),
576
- encoded_build_version.size(), arena);
577
- }
578
-
579
- void PopulateNode(upb_arena* arena, const XdsBootstrap* bootstrap,
580
- const std::string& build_version,
138
+ void PopulateNode(const XdsApiContext& context, const XdsBootstrap::Node* node,
581
139
  const std::string& user_agent_name,
582
- const std::string& server_name,
140
+ const std::string& user_agent_version,
583
141
  envoy_config_core_v3_Node* node_msg) {
584
- const XdsBootstrap::Node* node = bootstrap->node();
585
142
  if (node != nullptr) {
586
- if (!node->id.empty()) {
143
+ if (!node->id().empty()) {
587
144
  envoy_config_core_v3_Node_set_id(node_msg,
588
- StdStringToUpbString(node->id));
145
+ StdStringToUpbString(node->id()));
589
146
  }
590
- if (!node->cluster.empty()) {
147
+ if (!node->cluster().empty()) {
591
148
  envoy_config_core_v3_Node_set_cluster(
592
- node_msg, StdStringToUpbString(node->cluster));
593
- }
594
- if (!node->metadata.object_value().empty()) {
595
- google_protobuf_Struct* metadata =
596
- envoy_config_core_v3_Node_mutable_metadata(node_msg, arena);
597
- PopulateMetadata(arena, metadata, node->metadata.object_value());
149
+ node_msg, StdStringToUpbString(node->cluster()));
598
150
  }
599
- if (!server_name.empty()) {
151
+ if (!node->metadata().empty()) {
600
152
  google_protobuf_Struct* metadata =
601
- envoy_config_core_v3_Node_mutable_metadata(node_msg, arena);
602
- google_protobuf_Value* value = google_protobuf_Value_new(arena);
603
- google_protobuf_Value_set_string_value(value,
604
- StdStringToUpbString(server_name));
605
- google_protobuf_Struct_fields_set(
606
- metadata, upb_strview_makez("PROXYLESS_CLIENT_HOSTNAME"), value,
607
- arena);
153
+ envoy_config_core_v3_Node_mutable_metadata(node_msg, context.arena);
154
+ PopulateMetadata(context, metadata, node->metadata());
608
155
  }
609
- if (!node->locality_region.empty() || !node->locality_zone.empty() ||
610
- !node->locality_subzone.empty()) {
156
+ if (!node->locality_region().empty() || !node->locality_zone().empty() ||
157
+ !node->locality_sub_zone().empty()) {
611
158
  envoy_config_core_v3_Locality* locality =
612
- envoy_config_core_v3_Node_mutable_locality(node_msg, arena);
613
- if (!node->locality_region.empty()) {
159
+ envoy_config_core_v3_Node_mutable_locality(node_msg, context.arena);
160
+ if (!node->locality_region().empty()) {
614
161
  envoy_config_core_v3_Locality_set_region(
615
- locality, StdStringToUpbString(node->locality_region));
162
+ locality, StdStringToUpbString(node->locality_region()));
616
163
  }
617
- if (!node->locality_zone.empty()) {
164
+ if (!node->locality_zone().empty()) {
618
165
  envoy_config_core_v3_Locality_set_zone(
619
- locality, StdStringToUpbString(node->locality_zone));
166
+ locality, StdStringToUpbString(node->locality_zone()));
620
167
  }
621
- if (!node->locality_subzone.empty()) {
168
+ if (!node->locality_sub_zone().empty()) {
622
169
  envoy_config_core_v3_Locality_set_sub_zone(
623
- locality, StdStringToUpbString(node->locality_subzone));
170
+ locality, StdStringToUpbString(node->locality_sub_zone()));
624
171
  }
625
172
  }
626
173
  }
627
- if (!bootstrap->server().ShouldUseV3()) {
628
- PopulateBuildVersion(arena, node_msg, build_version);
629
- }
630
174
  envoy_config_core_v3_Node_set_user_agent_name(
631
175
  node_msg, StdStringToUpbString(user_agent_name));
632
176
  envoy_config_core_v3_Node_set_user_agent_version(
633
- node_msg, upb_strview_makez(grpc_version_string()));
177
+ node_msg, StdStringToUpbString(user_agent_version));
634
178
  envoy_config_core_v3_Node_add_client_features(
635
- node_msg, upb_strview_makez("envoy.lb.does_not_support_overprovisioning"),
636
- arena);
637
- }
638
-
639
- inline absl::string_view UpbStringToAbsl(const upb_strview& str) {
640
- return absl::string_view(str.data, str.size);
641
- }
642
-
643
- inline std::string UpbStringToStdString(const upb_strview& str) {
644
- return std::string(str.data, str.size);
645
- }
646
-
647
- inline void AddStringField(const char* name, const upb_strview& value,
648
- std::vector<std::string>* fields,
649
- bool add_if_empty = false) {
650
- if (value.size > 0 || add_if_empty) {
651
- fields->emplace_back(
652
- absl::StrCat(name, ": \"", UpbStringToAbsl(value), "\""));
653
- }
654
- }
655
-
656
- inline void AddUInt32ValueField(const char* name,
657
- const google_protobuf_UInt32Value* value,
658
- std::vector<std::string>* fields) {
659
- if (value != nullptr) {
660
- fields->emplace_back(absl::StrCat(
661
- name, " { value: ", google_protobuf_UInt32Value_value(value), " }"));
662
- }
663
- }
664
-
665
- inline void AddLocalityField(int indent_level,
666
- const envoy_config_core_v3_Locality* locality,
667
- std::vector<std::string>* fields) {
668
- std::string indent =
669
- absl::StrJoin(std::vector<std::string>(indent_level, " "), "");
670
- // region
671
- std::string field = absl::StrCat(indent, "region");
672
- AddStringField(field.c_str(), envoy_config_core_v3_Locality_region(locality),
673
- fields);
674
- // zone
675
- field = absl::StrCat(indent, "zone");
676
- AddStringField(field.c_str(), envoy_config_core_v3_Locality_zone(locality),
677
- fields);
678
- // sub_zone
679
- field = absl::StrCat(indent, "sub_zone");
680
- AddStringField(field.c_str(),
681
- envoy_config_core_v3_Locality_sub_zone(locality), fields);
682
- }
683
-
684
- void AddNodeLogFields(const envoy_config_core_v3_Node* node,
685
- const std::string& build_version,
686
- std::vector<std::string>* fields) {
687
- fields->emplace_back("node {");
688
- // id
689
- AddStringField(" id", envoy_config_core_v3_Node_id(node), fields);
690
- // metadata
691
- const google_protobuf_Struct* metadata =
692
- envoy_config_core_v3_Node_metadata(node);
693
- if (metadata != nullptr) {
694
- fields->emplace_back(" metadata {");
695
- size_t entry_idx = UPB_MAP_BEGIN;
696
- while (true) {
697
- const google_protobuf_Struct_FieldsEntry* entry =
698
- google_protobuf_Struct_fields_next(metadata, &entry_idx);
699
- if (entry == nullptr) break;
700
- fields->emplace_back(" field {");
701
- // key
702
- AddStringField(" key", google_protobuf_Struct_FieldsEntry_key(entry),
703
- fields);
704
- // value
705
- const google_protobuf_Value* value =
706
- google_protobuf_Struct_FieldsEntry_value(entry);
707
- if (value != nullptr) {
708
- std::string value_str;
709
- if (google_protobuf_Value_has_string_value(value)) {
710
- value_str = absl::StrCat(
711
- "string_value: \"",
712
- UpbStringToAbsl(google_protobuf_Value_string_value(value)), "\"");
713
- } else if (google_protobuf_Value_has_null_value(value)) {
714
- value_str = "null_value: NULL_VALUE";
715
- } else if (google_protobuf_Value_has_number_value(value)) {
716
- value_str = absl::StrCat("double_value: ",
717
- google_protobuf_Value_number_value(value));
718
- } else if (google_protobuf_Value_has_bool_value(value)) {
719
- value_str = absl::StrCat("bool_value: ",
720
- google_protobuf_Value_bool_value(value));
721
- } else if (google_protobuf_Value_has_struct_value(value)) {
722
- value_str = "struct_value: <not printed>";
723
- } else if (google_protobuf_Value_has_list_value(value)) {
724
- value_str = "list_value: <not printed>";
725
- } else {
726
- value_str = "<unknown>";
727
- }
728
- fields->emplace_back(absl::StrCat(" value { ", value_str, " }"));
729
- }
730
- fields->emplace_back(" }");
731
- }
732
- fields->emplace_back(" }");
733
- }
734
- // locality
735
- const envoy_config_core_v3_Locality* locality =
736
- envoy_config_core_v3_Node_locality(node);
737
- if (locality != nullptr) {
738
- fields->emplace_back(" locality {");
739
- AddLocalityField(2, locality, fields);
740
- fields->emplace_back(" }");
741
- }
742
- // build_version (doesn't exist in v3 proto; this is a horrible hack)
743
- if (!build_version.empty()) {
744
- fields->emplace_back(
745
- absl::StrCat(" build_version: \"", build_version, "\""));
746
- }
747
- // user_agent_name
748
- AddStringField(" user_agent_name",
749
- envoy_config_core_v3_Node_user_agent_name(node), fields);
750
- // user_agent_version
751
- AddStringField(" user_agent_version",
752
- envoy_config_core_v3_Node_user_agent_version(node), fields);
753
- // client_features
754
- size_t num_client_features;
755
- const upb_strview* client_features =
756
- envoy_config_core_v3_Node_client_features(node, &num_client_features);
757
- for (size_t i = 0; i < num_client_features; ++i) {
758
- AddStringField(" client_features", client_features[i], fields);
759
- }
760
- fields->emplace_back("}");
179
+ node_msg,
180
+ upb_StringView_FromString("envoy.lb.does_not_support_overprovisioning"),
181
+ context.arena);
761
182
  }
762
183
 
763
184
  void MaybeLogDiscoveryRequest(
764
- XdsClient* client, TraceFlag* tracer,
765
- const envoy_service_discovery_v3_DiscoveryRequest* request,
766
- const std::string& build_version) {
767
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
185
+ const XdsApiContext& context,
186
+ const envoy_service_discovery_v3_DiscoveryRequest* request) {
187
+ if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
768
188
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
769
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
770
- // the raw proto instead of doing this manually.
771
- std::vector<std::string> fields;
772
- // version_info
773
- AddStringField(
774
- "version_info",
775
- envoy_service_discovery_v3_DiscoveryRequest_version_info(request),
776
- &fields);
777
- // node
778
- const envoy_config_core_v3_Node* node =
779
- envoy_service_discovery_v3_DiscoveryRequest_node(request);
780
- if (node != nullptr) AddNodeLogFields(node, build_version, &fields);
781
- // resource_names
782
- size_t num_resource_names;
783
- const upb_strview* resource_names =
784
- envoy_service_discovery_v3_DiscoveryRequest_resource_names(
785
- request, &num_resource_names);
786
- for (size_t i = 0; i < num_resource_names; ++i) {
787
- AddStringField("resource_names", resource_names[i], &fields);
788
- }
789
- // type_url
790
- AddStringField(
791
- "type_url",
792
- envoy_service_discovery_v3_DiscoveryRequest_type_url(request), &fields);
793
- // response_nonce
794
- AddStringField(
795
- "response_nonce",
796
- envoy_service_discovery_v3_DiscoveryRequest_response_nonce(request),
797
- &fields);
798
- // error_detail
799
- const struct google_rpc_Status* error_detail =
800
- envoy_service_discovery_v3_DiscoveryRequest_error_detail(request);
801
- if (error_detail != nullptr) {
802
- fields.emplace_back("error_detail {");
803
- // code
804
- int32_t code = google_rpc_Status_code(error_detail);
805
- if (code != 0) fields.emplace_back(absl::StrCat(" code: ", code));
806
- // message
807
- AddStringField(" message", google_rpc_Status_message(error_detail),
808
- &fields);
809
- fields.emplace_back("}");
810
- }
811
- gpr_log(GPR_DEBUG, "[xds_client %p] constructed ADS request: %s", client,
812
- absl::StrJoin(fields, "\n").c_str());
189
+ const upb_MessageDef* msg_type =
190
+ envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(context.symtab);
191
+ char buf[10240];
192
+ upb_TextEncode(request, msg_type, nullptr, 0, buf, sizeof(buf));
193
+ gpr_log(GPR_DEBUG, "[xds_client %p] constructed ADS request: %s",
194
+ context.client, buf);
813
195
  }
814
196
  }
815
197
 
816
- grpc_slice SerializeDiscoveryRequest(
817
- upb_arena* arena, envoy_service_discovery_v3_DiscoveryRequest* request) {
198
+ std::string SerializeDiscoveryRequest(
199
+ const XdsApiContext& context,
200
+ envoy_service_discovery_v3_DiscoveryRequest* request) {
818
201
  size_t output_length;
819
202
  char* output = envoy_service_discovery_v3_DiscoveryRequest_serialize(
820
- request, arena, &output_length);
821
- return grpc_slice_from_copied_buffer(output, output_length);
822
- }
823
-
824
- absl::string_view TypeUrlExternalToInternal(bool use_v3,
825
- const std::string& type_url) {
826
- if (!use_v3) {
827
- if (type_url == XdsApi::kLdsTypeUrl) {
828
- return kLdsV2TypeUrl;
829
- }
830
- if (type_url == XdsApi::kRdsTypeUrl) {
831
- return kRdsV2TypeUrl;
832
- }
833
- if (type_url == XdsApi::kCdsTypeUrl) {
834
- return kCdsV2TypeUrl;
835
- }
836
- if (type_url == XdsApi::kEdsTypeUrl) {
837
- return kEdsV2TypeUrl;
838
- }
839
- }
840
- return type_url;
203
+ request, context.arena, &output_length);
204
+ return std::string(output, output_length);
841
205
  }
842
206
 
843
207
  } // namespace
844
208
 
845
- grpc_slice XdsApi::CreateAdsRequest(
846
- const std::string& type_url,
847
- const std::set<absl::string_view>& resource_names,
848
- const std::string& version, const std::string& nonce, grpc_error* error,
849
- bool populate_node) {
209
+ std::string XdsApi::CreateAdsRequest(
210
+ absl::string_view type_url, absl::string_view version,
211
+ absl::string_view nonce, const std::vector<std::string>& resource_names,
212
+ absl::Status status, bool populate_node) {
850
213
  upb::Arena arena;
214
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
851
215
  // Create a request.
852
216
  envoy_service_discovery_v3_DiscoveryRequest* request =
853
217
  envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
854
218
  // Set type_url.
855
- absl::string_view real_type_url =
856
- TypeUrlExternalToInternal(use_v3_, type_url);
219
+ std::string type_url_str = absl::StrCat("type.googleapis.com/", type_url);
857
220
  envoy_service_discovery_v3_DiscoveryRequest_set_type_url(
858
- request, StdStringToUpbString(real_type_url));
221
+ request, StdStringToUpbString(type_url_str));
859
222
  // Set version_info.
860
223
  if (!version.empty()) {
861
224
  envoy_service_discovery_v3_DiscoveryRequest_set_version_info(
@@ -867,1357 +230,152 @@ grpc_slice XdsApi::CreateAdsRequest(
867
230
  request, StdStringToUpbString(nonce));
868
231
  }
869
232
  // Set error_detail if it's a NACK.
870
- if (error != GRPC_ERROR_NONE) {
871
- grpc_slice error_description_slice;
872
- GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
873
- &error_description_slice));
874
- upb_strview error_description_strview =
875
- upb_strview_make(reinterpret_cast<const char*>(
876
- GPR_SLICE_START_PTR(error_description_slice)),
877
- GPR_SLICE_LENGTH(error_description_slice));
233
+ std::string error_string_storage;
234
+ if (!status.ok()) {
878
235
  google_rpc_Status* error_detail =
879
236
  envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
880
237
  request, arena.ptr());
881
- google_rpc_Status_set_message(error_detail, error_description_strview);
882
- GRPC_ERROR_UNREF(error);
238
+ // Hard-code INVALID_ARGUMENT as the status code.
239
+ // TODO(roth): If at some point we decide we care about this value,
240
+ // we could attach a status code to the individual errors where we
241
+ // generate them in the parsing code, and then use that here.
242
+ google_rpc_Status_set_code(error_detail, GRPC_STATUS_INVALID_ARGUMENT);
243
+ // Error description comes from the status that was passed in.
244
+ error_string_storage = std::string(status.message());
245
+ upb_StringView error_description =
246
+ StdStringToUpbString(error_string_storage);
247
+ google_rpc_Status_set_message(error_detail, error_description);
883
248
  }
884
249
  // Populate node.
885
250
  if (populate_node) {
886
251
  envoy_config_core_v3_Node* node_msg =
887
252
  envoy_service_discovery_v3_DiscoveryRequest_mutable_node(request,
888
253
  arena.ptr());
889
- PopulateNode(arena.ptr(), bootstrap_, build_version_, user_agent_name_, "",
254
+ PopulateNode(context, node_, user_agent_name_, user_agent_version_,
890
255
  node_msg);
256
+ envoy_config_core_v3_Node_add_client_features(
257
+ node_msg, upb_StringView_FromString("xds.config.resource-in-sotw"),
258
+ context.arena);
891
259
  }
892
260
  // Add resource_names.
893
- for (const auto& resource_name : resource_names) {
261
+ for (const std::string& resource_name : resource_names) {
894
262
  envoy_service_discovery_v3_DiscoveryRequest_add_resource_names(
895
263
  request, StdStringToUpbString(resource_name), arena.ptr());
896
264
  }
897
- MaybeLogDiscoveryRequest(client_, tracer_, request, build_version_);
898
- return SerializeDiscoveryRequest(arena.ptr(), request);
265
+ MaybeLogDiscoveryRequest(context, request);
266
+ return SerializeDiscoveryRequest(context, request);
899
267
  }
900
268
 
901
269
  namespace {
902
270
 
903
271
  void MaybeLogDiscoveryResponse(
904
- XdsClient* client, TraceFlag* tracer,
272
+ const XdsApiContext& context,
905
273
  const envoy_service_discovery_v3_DiscoveryResponse* response) {
906
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
907
- gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
908
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
909
- // the raw proto instead of doing this manually.
910
- std::vector<std::string> fields;
911
- // version_info
912
- AddStringField(
913
- "version_info",
914
- envoy_service_discovery_v3_DiscoveryResponse_version_info(response),
915
- &fields);
916
- // resources
917
- size_t num_resources;
918
- envoy_service_discovery_v3_DiscoveryResponse_resources(response,
919
- &num_resources);
920
- fields.emplace_back(
921
- absl::StrCat("resources: <", num_resources, " element(s)>"));
922
- // type_url
923
- AddStringField(
924
- "type_url",
925
- envoy_service_discovery_v3_DiscoveryResponse_type_url(response),
926
- &fields);
927
- // nonce
928
- AddStringField("nonce",
929
- envoy_service_discovery_v3_DiscoveryResponse_nonce(response),
930
- &fields);
931
- gpr_log(GPR_DEBUG, "[xds_client %p] received response: %s", client,
932
- absl::StrJoin(fields, "\n").c_str());
933
- }
934
- }
935
-
936
- void MaybeLogRouteConfiguration(
937
- XdsClient* client, TraceFlag* tracer,
938
- const envoy_config_route_v3_RouteConfiguration* route_config) {
939
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
940
- gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
941
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
942
- // the raw proto instead of doing this manually.
943
- std::vector<std::string> fields;
944
- // name
945
- AddStringField("name",
946
- envoy_config_route_v3_RouteConfiguration_name(route_config),
947
- &fields);
948
- // virtual_hosts
949
- size_t num_virtual_hosts;
950
- const envoy_config_route_v3_VirtualHost* const* virtual_hosts =
951
- envoy_config_route_v3_RouteConfiguration_virtual_hosts(
952
- route_config, &num_virtual_hosts);
953
- for (size_t i = 0; i < num_virtual_hosts; ++i) {
954
- const auto* virtual_host = virtual_hosts[i];
955
- fields.push_back("virtual_hosts {");
956
- // name
957
- AddStringField(" name",
958
- envoy_config_route_v3_VirtualHost_name(virtual_host),
959
- &fields);
960
- // domains
961
- size_t num_domains;
962
- const upb_strview* const domains =
963
- envoy_config_route_v3_VirtualHost_domains(virtual_host, &num_domains);
964
- for (size_t j = 0; j < num_domains; ++j) {
965
- AddStringField(" domains", domains[j], &fields);
966
- }
967
- // routes
968
- size_t num_routes;
969
- const envoy_config_route_v3_Route* const* routes =
970
- envoy_config_route_v3_VirtualHost_routes(virtual_host, &num_routes);
971
- for (size_t j = 0; j < num_routes; ++j) {
972
- const auto* route = routes[j];
973
- fields.push_back(" route {");
974
- // name
975
- AddStringField(" name", envoy_config_route_v3_Route_name(route),
976
- &fields);
977
- // match
978
- const envoy_config_route_v3_RouteMatch* match =
979
- envoy_config_route_v3_Route_match(route);
980
- if (match != nullptr) {
981
- fields.emplace_back(" match {");
982
- // path matching
983
- if (envoy_config_route_v3_RouteMatch_has_prefix(match)) {
984
- AddStringField(" prefix",
985
- envoy_config_route_v3_RouteMatch_prefix(match),
986
- &fields,
987
- /*add_if_empty=*/true);
988
- } else if (envoy_config_route_v3_RouteMatch_has_path(match)) {
989
- AddStringField(" path",
990
- envoy_config_route_v3_RouteMatch_path(match),
991
- &fields,
992
- /*add_if_empty=*/true);
993
- } else if (envoy_config_route_v3_RouteMatch_has_safe_regex(match)) {
994
- fields.emplace_back(" safe_regex: <not printed>");
995
- } else {
996
- fields.emplace_back(" <unknown path matching type>");
997
- }
998
- // header matching
999
- size_t num_headers;
1000
- envoy_config_route_v3_RouteMatch_headers(match, &num_headers);
1001
- if (num_headers > 0) {
1002
- fields.emplace_back(
1003
- absl::StrCat(" headers: <", num_headers, " element(s)>"));
1004
- }
1005
- fields.emplace_back(" }");
1006
- }
1007
- // action
1008
- if (envoy_config_route_v3_Route_has_route(route)) {
1009
- const envoy_config_route_v3_RouteAction* action =
1010
- envoy_config_route_v3_Route_route(route);
1011
- fields.emplace_back(" route {");
1012
- if (envoy_config_route_v3_RouteAction_has_cluster(action)) {
1013
- AddStringField(" cluster",
1014
- envoy_config_route_v3_RouteAction_cluster(action),
1015
- &fields);
1016
- } else if (envoy_config_route_v3_RouteAction_has_cluster_header(
1017
- action)) {
1018
- AddStringField(
1019
- " cluster_header",
1020
- envoy_config_route_v3_RouteAction_cluster_header(action),
1021
- &fields);
1022
- } else if (envoy_config_route_v3_RouteAction_has_weighted_clusters(
1023
- action)) {
1024
- const envoy_config_route_v3_WeightedCluster* weighted_clusters =
1025
- envoy_config_route_v3_RouteAction_weighted_clusters(action);
1026
- fields.emplace_back(" weighted_clusters {");
1027
- size_t num_cluster_weights;
1028
- const envoy_config_route_v3_WeightedCluster_ClusterWeight* const*
1029
- cluster_weights =
1030
- envoy_config_route_v3_WeightedCluster_clusters(
1031
- weighted_clusters, &num_cluster_weights);
1032
- for (size_t i = 0; i < num_cluster_weights; ++i) {
1033
- const envoy_config_route_v3_WeightedCluster_ClusterWeight*
1034
- cluster_weight = cluster_weights[i];
1035
- fields.emplace_back(" clusters {");
1036
- AddStringField(
1037
- " name",
1038
- envoy_config_route_v3_WeightedCluster_ClusterWeight_name(
1039
- cluster_weight),
1040
- &fields);
1041
- AddUInt32ValueField(
1042
- " weight",
1043
- envoy_config_route_v3_WeightedCluster_ClusterWeight_weight(
1044
- cluster_weight),
1045
- &fields);
1046
- fields.emplace_back(" }");
1047
- }
1048
- AddUInt32ValueField(
1049
- " total_weight",
1050
- envoy_config_route_v3_WeightedCluster_total_weight(
1051
- weighted_clusters),
1052
- &fields);
1053
- fields.emplace_back(" }");
1054
- }
1055
- fields.emplace_back(" }");
1056
- } else if (envoy_config_route_v3_Route_has_redirect(route)) {
1057
- fields.emplace_back(" redirect: <not printed>");
1058
- } else if (envoy_config_route_v3_Route_has_direct_response(route)) {
1059
- fields.emplace_back(" direct_response: <not printed>");
1060
- } else if (envoy_config_route_v3_Route_has_filter_action(route)) {
1061
- fields.emplace_back(" filter_action: <not printed>");
1062
- }
1063
- fields.push_back(" }");
1064
- }
1065
- fields.push_back("}");
1066
- }
1067
- gpr_log(GPR_DEBUG, "[xds_client %p] RouteConfiguration: %s", client,
1068
- absl::StrJoin(fields, "\n").c_str());
1069
- }
1070
- }
1071
-
1072
- void MaybeLogCluster(XdsClient* client, TraceFlag* tracer,
1073
- const envoy_config_cluster_v3_Cluster* cluster) {
1074
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
1075
- gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1076
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
1077
- // the raw proto instead of doing this manually.
1078
- std::vector<std::string> fields;
1079
- // name
1080
- AddStringField("name", envoy_config_cluster_v3_Cluster_name(cluster),
1081
- &fields);
1082
- // type
1083
- if (envoy_config_cluster_v3_Cluster_has_type(cluster)) {
1084
- fields.emplace_back(absl::StrCat(
1085
- "type: ", envoy_config_cluster_v3_Cluster_type(cluster)));
1086
- } else if (envoy_config_cluster_v3_Cluster_has_cluster_type(cluster)) {
1087
- fields.emplace_back("cluster_type: <not printed>");
1088
- } else {
1089
- fields.emplace_back("<unknown type>");
1090
- }
1091
- // eds_cluster_config
1092
- const envoy_config_cluster_v3_Cluster_EdsClusterConfig* eds_cluster_config =
1093
- envoy_config_cluster_v3_Cluster_eds_cluster_config(cluster);
1094
- if (eds_cluster_config != nullptr) {
1095
- fields.emplace_back("eds_cluster_config {");
1096
- // eds_config
1097
- const struct envoy_config_core_v3_ConfigSource* eds_config =
1098
- envoy_config_cluster_v3_Cluster_EdsClusterConfig_eds_config(
1099
- eds_cluster_config);
1100
- if (eds_config != nullptr) {
1101
- if (envoy_config_core_v3_ConfigSource_has_ads(eds_config)) {
1102
- fields.emplace_back(" eds_config { ads {} }");
1103
- } else {
1104
- fields.emplace_back(" eds_config: <non-ADS type>");
1105
- }
1106
- }
1107
- // service_name
1108
- AddStringField(
1109
- " service_name",
1110
- envoy_config_cluster_v3_Cluster_EdsClusterConfig_service_name(
1111
- eds_cluster_config),
1112
- &fields);
1113
- fields.emplace_back("}");
1114
- }
1115
- // lb_policy
1116
- fields.emplace_back(absl::StrCat(
1117
- "lb_policy: ", envoy_config_cluster_v3_Cluster_lb_policy(cluster)));
1118
- // lrs_server
1119
- const envoy_config_core_v3_ConfigSource* lrs_server =
1120
- envoy_config_cluster_v3_Cluster_lrs_server(cluster);
1121
- if (lrs_server != nullptr) {
1122
- if (envoy_config_core_v3_ConfigSource_has_self(lrs_server)) {
1123
- fields.emplace_back("lrs_server { self {} }");
1124
- } else {
1125
- fields.emplace_back("lrs_server: <non-self type>");
1126
- }
1127
- }
1128
- gpr_log(GPR_DEBUG, "[xds_client %p] Cluster: %s", client,
1129
- absl::StrJoin(fields, "\n").c_str());
1130
- }
1131
- }
1132
-
1133
- void MaybeLogClusterLoadAssignment(
1134
- XdsClient* client, TraceFlag* tracer,
1135
- const envoy_config_endpoint_v3_ClusterLoadAssignment* cla) {
1136
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
274
+ if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
1137
275
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1138
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
1139
- // the raw proto instead of doing this manually.
1140
- std::vector<std::string> fields;
1141
- // cluster_name
1142
- AddStringField(
1143
- "cluster_name",
1144
- envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name(cla),
1145
- &fields);
1146
- // endpoints
1147
- size_t num_localities;
1148
- const struct envoy_config_endpoint_v3_LocalityLbEndpoints* const*
1149
- locality_endpoints =
1150
- envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(
1151
- cla, &num_localities);
1152
- for (size_t i = 0; i < num_localities; ++i) {
1153
- const auto* locality_endpoint = locality_endpoints[i];
1154
- fields.emplace_back("endpoints {");
1155
- // locality
1156
- const auto* locality =
1157
- envoy_config_endpoint_v3_LocalityLbEndpoints_locality(
1158
- locality_endpoint);
1159
- if (locality != nullptr) {
1160
- fields.emplace_back(" locality {");
1161
- AddLocalityField(2, locality, &fields);
1162
- fields.emplace_back(" }");
1163
- }
1164
- // lb_endpoints
1165
- size_t num_lb_endpoints;
1166
- const envoy_config_endpoint_v3_LbEndpoint* const* lb_endpoints =
1167
- envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(
1168
- locality_endpoint, &num_lb_endpoints);
1169
- for (size_t j = 0; j < num_lb_endpoints; ++j) {
1170
- const auto* lb_endpoint = lb_endpoints[j];
1171
- fields.emplace_back(" lb_endpoints {");
1172
- // health_status
1173
- uint32_t health_status =
1174
- envoy_config_endpoint_v3_LbEndpoint_health_status(lb_endpoint);
1175
- if (health_status > 0) {
1176
- fields.emplace_back(
1177
- absl::StrCat(" health_status: ", health_status));
1178
- }
1179
- // endpoint
1180
- const envoy_config_endpoint_v3_Endpoint* endpoint =
1181
- envoy_config_endpoint_v3_LbEndpoint_endpoint(lb_endpoint);
1182
- if (endpoint != nullptr) {
1183
- fields.emplace_back(" endpoint {");
1184
- // address
1185
- const auto* address =
1186
- envoy_config_endpoint_v3_Endpoint_address(endpoint);
1187
- if (address != nullptr) {
1188
- fields.emplace_back(" address {");
1189
- // socket_address
1190
- const auto* socket_address =
1191
- envoy_config_core_v3_Address_socket_address(address);
1192
- if (socket_address != nullptr) {
1193
- fields.emplace_back(" socket_address {");
1194
- // address
1195
- AddStringField(
1196
- " address",
1197
- envoy_config_core_v3_SocketAddress_address(socket_address),
1198
- &fields);
1199
- // port_value
1200
- if (envoy_config_core_v3_SocketAddress_has_port_value(
1201
- socket_address)) {
1202
- fields.emplace_back(
1203
- absl::StrCat(" port_value: ",
1204
- envoy_config_core_v3_SocketAddress_port_value(
1205
- socket_address)));
1206
- } else {
1207
- fields.emplace_back(" <non-numeric port>");
1208
- }
1209
- fields.emplace_back(" }");
1210
- } else {
1211
- fields.emplace_back(" <non-socket address>");
1212
- }
1213
- fields.emplace_back(" }");
1214
- }
1215
- fields.emplace_back(" }");
1216
- }
1217
- fields.emplace_back(" }");
1218
- }
1219
- // load_balancing_weight
1220
- AddUInt32ValueField(
1221
- " load_balancing_weight",
1222
- envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancing_weight(
1223
- locality_endpoint),
1224
- &fields);
1225
- // priority
1226
- uint32_t priority = envoy_config_endpoint_v3_LocalityLbEndpoints_priority(
1227
- locality_endpoint);
1228
- if (priority > 0) {
1229
- fields.emplace_back(absl::StrCat(" priority: ", priority));
1230
- }
1231
- fields.emplace_back("}");
1232
- }
1233
- // policy
1234
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* policy =
1235
- envoy_config_endpoint_v3_ClusterLoadAssignment_policy(cla);
1236
- if (policy != nullptr) {
1237
- fields.emplace_back("policy {");
1238
- // drop_overloads
1239
- size_t num_drop_overloads;
1240
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* const*
1241
- drop_overloads =
1242
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_drop_overloads(
1243
- policy, &num_drop_overloads);
1244
- for (size_t i = 0; i < num_drop_overloads; ++i) {
1245
- auto* drop_overload = drop_overloads[i];
1246
- fields.emplace_back(" drop_overloads {");
1247
- // category
1248
- AddStringField(
1249
- " category",
1250
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_category(
1251
- drop_overload),
1252
- &fields);
1253
- // drop_percentage
1254
- const auto* drop_percentage =
1255
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_drop_percentage(
1256
- drop_overload);
1257
- if (drop_percentage != nullptr) {
1258
- fields.emplace_back(" drop_percentage {");
1259
- fields.emplace_back(absl::StrCat(
1260
- " numerator: ",
1261
- envoy_type_v3_FractionalPercent_numerator(drop_percentage)));
1262
- fields.emplace_back(absl::StrCat(
1263
- " denominator: ",
1264
- envoy_type_v3_FractionalPercent_denominator(drop_percentage)));
1265
- fields.emplace_back(" }");
1266
- }
1267
- fields.emplace_back(" }");
1268
- }
1269
- // overprovisioning_factor
1270
- fields.emplace_back("}");
1271
- }
1272
- gpr_log(GPR_DEBUG, "[xds_client %p] ClusterLoadAssignment: %s", client,
1273
- absl::StrJoin(fields, "\n").c_str());
1274
- }
1275
- }
1276
-
1277
- grpc_error* RoutePathMatchParse(const envoy_config_route_v3_RouteMatch* match,
1278
- XdsApi::Route* route, bool* ignore_route) {
1279
- if (envoy_config_route_v3_RouteMatch_has_prefix(match)) {
1280
- absl::string_view prefix =
1281
- UpbStringToAbsl(envoy_config_route_v3_RouteMatch_prefix(match));
1282
- // Empty prefix "" is accepted.
1283
- if (prefix.size() > 0) {
1284
- // Prefix "/" is accepted.
1285
- if (prefix[0] != '/') {
1286
- // Prefix which does not start with a / will never match anything, so
1287
- // ignore this route.
1288
- *ignore_route = true;
1289
- return GRPC_ERROR_NONE;
1290
- }
1291
- std::vector<absl::string_view> prefix_elements =
1292
- absl::StrSplit(prefix.substr(1), absl::MaxSplits('/', 2));
1293
- if (prefix_elements.size() > 2) {
1294
- // Prefix cannot have more than 2 slashes.
1295
- *ignore_route = true;
1296
- return GRPC_ERROR_NONE;
1297
- } else if (prefix_elements.size() == 2 && prefix_elements[0].empty()) {
1298
- // Prefix contains empty string between the 2 slashes
1299
- *ignore_route = true;
1300
- return GRPC_ERROR_NONE;
1301
- }
1302
- }
1303
- route->matchers.path_matcher.type =
1304
- XdsApi::Route::Matchers::PathMatcher::PathMatcherType::PREFIX;
1305
- route->matchers.path_matcher.string_matcher = std::string(prefix);
1306
- } else if (envoy_config_route_v3_RouteMatch_has_path(match)) {
1307
- absl::string_view path =
1308
- UpbStringToAbsl(envoy_config_route_v3_RouteMatch_path(match));
1309
- if (path.size() == 0) {
1310
- // Path that is empty will never match anything, so ignore this route.
1311
- *ignore_route = true;
1312
- return GRPC_ERROR_NONE;
1313
- }
1314
- if (path[0] != '/') {
1315
- // Path which does not start with a / will never match anything, so
1316
- // ignore this route.
1317
- *ignore_route = true;
1318
- return GRPC_ERROR_NONE;
1319
- }
1320
- std::vector<absl::string_view> path_elements =
1321
- absl::StrSplit(path.substr(1), absl::MaxSplits('/', 2));
1322
- if (path_elements.size() != 2) {
1323
- // Path not in the required format of /service/method will never match
1324
- // anything, so ignore this route.
1325
- *ignore_route = true;
1326
- return GRPC_ERROR_NONE;
1327
- } else if (path_elements[0].empty()) {
1328
- // Path contains empty service name will never match anything, so ignore
1329
- // this route.
1330
- *ignore_route = true;
1331
- return GRPC_ERROR_NONE;
1332
- } else if (path_elements[1].empty()) {
1333
- // Path contains empty method name will never match anything, so ignore
1334
- // this route.
1335
- *ignore_route = true;
1336
- return GRPC_ERROR_NONE;
1337
- }
1338
- route->matchers.path_matcher.type =
1339
- XdsApi::Route::Matchers::PathMatcher::PathMatcherType::PATH;
1340
- route->matchers.path_matcher.string_matcher = std::string(path);
1341
- } else if (envoy_config_route_v3_RouteMatch_has_safe_regex(match)) {
1342
- const envoy_type_matcher_v3_RegexMatcher* regex_matcher =
1343
- envoy_config_route_v3_RouteMatch_safe_regex(match);
1344
- GPR_ASSERT(regex_matcher != nullptr);
1345
- std::string matcher = UpbStringToStdString(
1346
- envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
1347
- std::unique_ptr<RE2> regex = absl::make_unique<RE2>(std::move(matcher));
1348
- if (!regex->ok()) {
1349
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1350
- "Invalid regex string specified in path matcher.");
1351
- }
1352
- route->matchers.path_matcher.type =
1353
- XdsApi::Route::Matchers::PathMatcher::PathMatcherType::REGEX;
1354
- route->matchers.path_matcher.regex_matcher = std::move(regex);
1355
- } else {
1356
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1357
- "Invalid route path specifier specified.");
1358
- }
1359
- return GRPC_ERROR_NONE;
1360
- }
1361
-
1362
- grpc_error* RouteHeaderMatchersParse(
1363
- const envoy_config_route_v3_RouteMatch* match, XdsApi::Route* route) {
1364
- size_t size;
1365
- const envoy_config_route_v3_HeaderMatcher* const* headers =
1366
- envoy_config_route_v3_RouteMatch_headers(match, &size);
1367
- for (size_t i = 0; i < size; ++i) {
1368
- const envoy_config_route_v3_HeaderMatcher* header = headers[i];
1369
- XdsApi::Route::Matchers::HeaderMatcher header_matcher;
1370
- header_matcher.name =
1371
- UpbStringToStdString(envoy_config_route_v3_HeaderMatcher_name(header));
1372
- if (envoy_config_route_v3_HeaderMatcher_has_exact_match(header)) {
1373
- header_matcher.type =
1374
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::EXACT;
1375
- header_matcher.string_matcher = UpbStringToStdString(
1376
- envoy_config_route_v3_HeaderMatcher_exact_match(header));
1377
- } else if (envoy_config_route_v3_HeaderMatcher_has_safe_regex_match(
1378
- header)) {
1379
- const envoy_type_matcher_v3_RegexMatcher* regex_matcher =
1380
- envoy_config_route_v3_HeaderMatcher_safe_regex_match(header);
1381
- GPR_ASSERT(regex_matcher != nullptr);
1382
- const std::string matcher = UpbStringToStdString(
1383
- envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
1384
- std::unique_ptr<RE2> regex = absl::make_unique<RE2>(matcher);
1385
- if (!regex->ok()) {
1386
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1387
- "Invalid regex string specified in header matcher.");
1388
- }
1389
- header_matcher.type =
1390
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::REGEX;
1391
- header_matcher.regex_match = std::move(regex);
1392
- } else if (envoy_config_route_v3_HeaderMatcher_has_range_match(header)) {
1393
- header_matcher.type =
1394
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::RANGE;
1395
- const envoy_type_v3_Int64Range* range_matcher =
1396
- envoy_config_route_v3_HeaderMatcher_range_match(header);
1397
- header_matcher.range_start =
1398
- envoy_type_v3_Int64Range_start(range_matcher);
1399
- header_matcher.range_end = envoy_type_v3_Int64Range_end(range_matcher);
1400
- if (header_matcher.range_end < header_matcher.range_start) {
1401
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1402
- "Invalid range header matcher specifier specified: end "
1403
- "cannot be smaller than start.");
1404
- }
1405
- } else if (envoy_config_route_v3_HeaderMatcher_has_present_match(header)) {
1406
- header_matcher.type =
1407
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::PRESENT;
1408
- header_matcher.present_match =
1409
- envoy_config_route_v3_HeaderMatcher_present_match(header);
1410
- } else if (envoy_config_route_v3_HeaderMatcher_has_prefix_match(header)) {
1411
- header_matcher.type =
1412
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::PREFIX;
1413
- header_matcher.string_matcher = UpbStringToStdString(
1414
- envoy_config_route_v3_HeaderMatcher_prefix_match(header));
1415
- } else if (envoy_config_route_v3_HeaderMatcher_has_suffix_match(header)) {
1416
- header_matcher.type =
1417
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::SUFFIX;
1418
- header_matcher.string_matcher = UpbStringToStdString(
1419
- envoy_config_route_v3_HeaderMatcher_suffix_match(header));
1420
- } else {
1421
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1422
- "Invalid route header matcher specified.");
1423
- }
1424
- header_matcher.invert_match =
1425
- envoy_config_route_v3_HeaderMatcher_invert_match(header);
1426
- route->matchers.header_matchers.emplace_back(std::move(header_matcher));
1427
- }
1428
- return GRPC_ERROR_NONE;
1429
- }
1430
-
1431
- grpc_error* RouteRuntimeFractionParse(
1432
- const envoy_config_route_v3_RouteMatch* match, XdsApi::Route* route) {
1433
- const envoy_config_core_v3_RuntimeFractionalPercent* runtime_fraction =
1434
- envoy_config_route_v3_RouteMatch_runtime_fraction(match);
1435
- if (runtime_fraction != nullptr) {
1436
- const envoy_type_v3_FractionalPercent* fraction =
1437
- envoy_config_core_v3_RuntimeFractionalPercent_default_value(
1438
- runtime_fraction);
1439
- if (fraction != nullptr) {
1440
- uint32_t numerator = envoy_type_v3_FractionalPercent_numerator(fraction);
1441
- const auto denominator =
1442
- static_cast<envoy_type_v3_FractionalPercent_DenominatorType>(
1443
- envoy_type_v3_FractionalPercent_denominator(fraction));
1444
- // Normalize to million.
1445
- switch (denominator) {
1446
- case envoy_type_v3_FractionalPercent_HUNDRED:
1447
- numerator *= 10000;
1448
- break;
1449
- case envoy_type_v3_FractionalPercent_TEN_THOUSAND:
1450
- numerator *= 100;
1451
- break;
1452
- case envoy_type_v3_FractionalPercent_MILLION:
1453
- break;
1454
- default:
1455
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1456
- "Unknown denominator type");
1457
- }
1458
- route->matchers.fraction_per_million = numerator;
1459
- }
1460
- }
1461
- return GRPC_ERROR_NONE;
1462
- }
1463
-
1464
- grpc_error* RouteActionParse(const envoy_config_route_v3_Route* route_msg,
1465
- XdsApi::Route* route, bool* ignore_route) {
1466
- if (!envoy_config_route_v3_Route_has_route(route_msg)) {
1467
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1468
- "No RouteAction found in route.");
1469
- }
1470
- const envoy_config_route_v3_RouteAction* route_action =
1471
- envoy_config_route_v3_Route_route(route_msg);
1472
- // Get the cluster or weighted_clusters in the RouteAction.
1473
- if (envoy_config_route_v3_RouteAction_has_cluster(route_action)) {
1474
- route->cluster_name = UpbStringToStdString(
1475
- envoy_config_route_v3_RouteAction_cluster(route_action));
1476
- if (route->cluster_name.size() == 0) {
1477
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1478
- "RouteAction cluster contains empty cluster name.");
1479
- }
1480
- } else if (envoy_config_route_v3_RouteAction_has_weighted_clusters(
1481
- route_action)) {
1482
- const envoy_config_route_v3_WeightedCluster* weighted_cluster =
1483
- envoy_config_route_v3_RouteAction_weighted_clusters(route_action);
1484
- uint32_t total_weight = 100;
1485
- const google_protobuf_UInt32Value* weight =
1486
- envoy_config_route_v3_WeightedCluster_total_weight(weighted_cluster);
1487
- if (weight != nullptr) {
1488
- total_weight = google_protobuf_UInt32Value_value(weight);
1489
- }
1490
- size_t clusters_size;
1491
- const envoy_config_route_v3_WeightedCluster_ClusterWeight* const* clusters =
1492
- envoy_config_route_v3_WeightedCluster_clusters(weighted_cluster,
1493
- &clusters_size);
1494
- uint32_t sum_of_weights = 0;
1495
- for (size_t j = 0; j < clusters_size; ++j) {
1496
- const envoy_config_route_v3_WeightedCluster_ClusterWeight*
1497
- cluster_weight = clusters[j];
1498
- XdsApi::Route::ClusterWeight cluster;
1499
- cluster.name = UpbStringToStdString(
1500
- envoy_config_route_v3_WeightedCluster_ClusterWeight_name(
1501
- cluster_weight));
1502
- if (cluster.name.empty()) {
1503
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1504
- "RouteAction weighted_cluster cluster contains empty cluster "
1505
- "name.");
1506
- }
1507
- const google_protobuf_UInt32Value* weight =
1508
- envoy_config_route_v3_WeightedCluster_ClusterWeight_weight(
1509
- cluster_weight);
1510
- if (weight == nullptr) {
1511
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1512
- "RouteAction weighted_cluster cluster missing weight");
1513
- }
1514
- cluster.weight = google_protobuf_UInt32Value_value(weight);
1515
- sum_of_weights += cluster.weight;
1516
- route->weighted_clusters.emplace_back(std::move(cluster));
1517
- }
1518
- if (total_weight != sum_of_weights) {
1519
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1520
- "RouteAction weighted_cluster has incorrect total weight");
1521
- }
1522
- if (route->weighted_clusters.empty()) {
1523
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1524
- "RouteAction weighted_cluster has no valid clusters specified.");
1525
- }
1526
- } else {
1527
- // No cluster or weighted_clusters found in RouteAction, ignore this route.
1528
- *ignore_route = true;
1529
- return GRPC_ERROR_NONE;
276
+ const upb_MessageDef* msg_type =
277
+ envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(context.symtab);
278
+ char buf[10240];
279
+ upb_TextEncode(response, msg_type, nullptr, 0, buf, sizeof(buf));
280
+ gpr_log(GPR_DEBUG, "[xds_client %p] received response: %s", context.client,
281
+ buf);
1530
282
  }
1531
- return GRPC_ERROR_NONE;
1532
- }
1533
-
1534
- grpc_error* RouteConfigParse(
1535
- XdsClient* client, TraceFlag* tracer,
1536
- const envoy_config_route_v3_RouteConfiguration* route_config,
1537
- XdsApi::RdsUpdate* rds_update) {
1538
- MaybeLogRouteConfiguration(client, tracer, route_config);
1539
- // Get the virtual hosts.
1540
- size_t size;
1541
- const envoy_config_route_v3_VirtualHost* const* virtual_hosts =
1542
- envoy_config_route_v3_RouteConfiguration_virtual_hosts(route_config,
1543
- &size);
1544
- for (size_t i = 0; i < size; ++i) {
1545
- rds_update->virtual_hosts.emplace_back();
1546
- XdsApi::RdsUpdate::VirtualHost& vhost = rds_update->virtual_hosts.back();
1547
- // Parse domains.
1548
- size_t domain_size;
1549
- upb_strview const* domains = envoy_config_route_v3_VirtualHost_domains(
1550
- virtual_hosts[i], &domain_size);
1551
- for (size_t j = 0; j < domain_size; ++j) {
1552
- std::string domain_pattern = UpbStringToStdString(domains[j]);
1553
- const MatchType match_type = DomainPatternMatchType(domain_pattern);
1554
- if (match_type == INVALID_MATCH) {
1555
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid domain pattern.");
1556
- }
1557
- vhost.domains.emplace_back(std::move(domain_pattern));
1558
- }
1559
- if (vhost.domains.empty()) {
1560
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("VirtualHost has no domains");
1561
- }
1562
- // Parse routes.
1563
- size_t num_routes;
1564
- const envoy_config_route_v3_Route* const* routes =
1565
- envoy_config_route_v3_VirtualHost_routes(virtual_hosts[i], &num_routes);
1566
- if (num_routes < 1) {
1567
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1568
- "No route found in the virtual host.");
1569
- }
1570
- // Loop over the whole list of routes
1571
- for (size_t j = 0; j < num_routes; ++j) {
1572
- const envoy_config_route_v3_RouteMatch* match =
1573
- envoy_config_route_v3_Route_match(routes[j]);
1574
- size_t query_parameters_size;
1575
- static_cast<void>(envoy_config_route_v3_RouteMatch_query_parameters(
1576
- match, &query_parameters_size));
1577
- if (query_parameters_size > 0) {
1578
- continue;
1579
- }
1580
- XdsApi::Route route;
1581
- bool ignore_route = false;
1582
- grpc_error* error = RoutePathMatchParse(match, &route, &ignore_route);
1583
- if (error != GRPC_ERROR_NONE) return error;
1584
- if (ignore_route) continue;
1585
- error = RouteHeaderMatchersParse(match, &route);
1586
- if (error != GRPC_ERROR_NONE) return error;
1587
- error = RouteRuntimeFractionParse(match, &route);
1588
- if (error != GRPC_ERROR_NONE) return error;
1589
- error = RouteActionParse(routes[j], &route, &ignore_route);
1590
- if (error != GRPC_ERROR_NONE) return error;
1591
- if (ignore_route) continue;
1592
- const google_protobuf_BoolValue* case_sensitive =
1593
- envoy_config_route_v3_RouteMatch_case_sensitive(match);
1594
- if (case_sensitive != nullptr &&
1595
- !google_protobuf_BoolValue_value(case_sensitive)) {
1596
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1597
- "case_sensitive if set must be set to true.");
1598
- }
1599
- vhost.routes.emplace_back(std::move(route));
1600
- }
1601
- if (vhost.routes.empty()) {
1602
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No valid routes specified.");
1603
- }
1604
- }
1605
- return GRPC_ERROR_NONE;
1606
- }
1607
-
1608
- grpc_error* LdsResponseParse(
1609
- XdsClient* client, TraceFlag* tracer,
1610
- const envoy_service_discovery_v3_DiscoveryResponse* response,
1611
- const std::string& expected_server_name,
1612
- absl::optional<XdsApi::LdsUpdate>* lds_update, upb_arena* arena) {
1613
- // Get the resources from the response.
1614
- size_t size;
1615
- const google_protobuf_Any* const* resources =
1616
- envoy_service_discovery_v3_DiscoveryResponse_resources(response, &size);
1617
- for (size_t i = 0; i < size; ++i) {
1618
- // Check the type_url of the resource.
1619
- absl::string_view type_url =
1620
- UpbStringToAbsl(google_protobuf_Any_type_url(resources[i]));
1621
- if (!IsLds(type_url)) {
1622
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not LDS.");
1623
- }
1624
- // Decode the listener.
1625
- const upb_strview encoded_listener =
1626
- google_protobuf_Any_value(resources[i]);
1627
- const envoy_config_listener_v3_Listener* listener =
1628
- envoy_config_listener_v3_Listener_parse(encoded_listener.data,
1629
- encoded_listener.size, arena);
1630
- if (listener == nullptr) {
1631
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode listener.");
1632
- }
1633
- // Check listener name. Ignore unexpected listeners.
1634
- absl::string_view name =
1635
- UpbStringToAbsl(envoy_config_listener_v3_Listener_name(listener));
1636
- if (name != expected_server_name) continue;
1637
- // Get api_listener and decode it to http_connection_manager.
1638
- const envoy_config_listener_v3_ApiListener* api_listener =
1639
- envoy_config_listener_v3_Listener_api_listener(listener);
1640
- if (api_listener == nullptr) {
1641
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1642
- "Listener has no ApiListener.");
1643
- }
1644
- const upb_strview encoded_api_listener = google_protobuf_Any_value(
1645
- envoy_config_listener_v3_ApiListener_api_listener(api_listener));
1646
- const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*
1647
- http_connection_manager =
1648
- envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_parse(
1649
- encoded_api_listener.data, encoded_api_listener.size, arena);
1650
- if (http_connection_manager == nullptr) {
1651
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1652
- "Could not parse HttpConnectionManager config from ApiListener");
1653
- }
1654
- // Found inlined route_config. Parse it to find the cluster_name.
1655
- if (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_route_config(
1656
- http_connection_manager)) {
1657
- const envoy_config_route_v3_RouteConfiguration* route_config =
1658
- envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config(
1659
- http_connection_manager);
1660
- XdsApi::RdsUpdate rds_update;
1661
- grpc_error* error =
1662
- RouteConfigParse(client, tracer, route_config, &rds_update);
1663
- if (error != GRPC_ERROR_NONE) return error;
1664
- lds_update->emplace();
1665
- (*lds_update)->rds_update = std::move(rds_update);
1666
- return GRPC_ERROR_NONE;
1667
- }
1668
- // Validate that RDS must be used to get the route_config dynamically.
1669
- if (!envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_rds(
1670
- http_connection_manager)) {
1671
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1672
- "HttpConnectionManager neither has inlined route_config nor RDS.");
1673
- }
1674
- const envoy_extensions_filters_network_http_connection_manager_v3_Rds* rds =
1675
- envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(
1676
- http_connection_manager);
1677
- // Check that the ConfigSource specifies ADS.
1678
- const envoy_config_core_v3_ConfigSource* config_source =
1679
- envoy_extensions_filters_network_http_connection_manager_v3_Rds_config_source(
1680
- rds);
1681
- if (config_source == nullptr) {
1682
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1683
- "HttpConnectionManager missing config_source for RDS.");
1684
- }
1685
- if (!envoy_config_core_v3_ConfigSource_has_ads(config_source)) {
1686
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1687
- "HttpConnectionManager ConfigSource for RDS does not specify ADS.");
1688
- }
1689
- // Get the route_config_name.
1690
- lds_update->emplace();
1691
- (*lds_update)->route_config_name = UpbStringToStdString(
1692
- envoy_extensions_filters_network_http_connection_manager_v3_Rds_route_config_name(
1693
- rds));
1694
- return GRPC_ERROR_NONE;
1695
- }
1696
- return GRPC_ERROR_NONE;
1697
- }
1698
-
1699
- grpc_error* RdsResponseParse(
1700
- XdsClient* client, TraceFlag* tracer,
1701
- const envoy_service_discovery_v3_DiscoveryResponse* response,
1702
- const std::set<absl::string_view>& expected_route_configuration_names,
1703
- absl::optional<XdsApi::RdsUpdate>* rds_update, upb_arena* arena) {
1704
- // Get the resources from the response.
1705
- size_t size;
1706
- const google_protobuf_Any* const* resources =
1707
- envoy_service_discovery_v3_DiscoveryResponse_resources(response, &size);
1708
- for (size_t i = 0; i < size; ++i) {
1709
- // Check the type_url of the resource.
1710
- absl::string_view type_url =
1711
- UpbStringToAbsl(google_protobuf_Any_type_url(resources[i]));
1712
- if (!IsRds(type_url)) {
1713
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not RDS.");
1714
- }
1715
- // Decode the route_config.
1716
- const upb_strview encoded_route_config =
1717
- google_protobuf_Any_value(resources[i]);
1718
- const envoy_config_route_v3_RouteConfiguration* route_config =
1719
- envoy_config_route_v3_RouteConfiguration_parse(
1720
- encoded_route_config.data, encoded_route_config.size, arena);
1721
- if (route_config == nullptr) {
1722
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode route_config.");
1723
- }
1724
- // Check route_config_name. Ignore unexpected route_config.
1725
- absl::string_view route_config_name = UpbStringToAbsl(
1726
- envoy_config_route_v3_RouteConfiguration_name(route_config));
1727
- if (expected_route_configuration_names.find(route_config_name) ==
1728
- expected_route_configuration_names.end()) {
1729
- continue;
1730
- }
1731
- // Parse the route_config.
1732
- XdsApi::RdsUpdate local_rds_update;
1733
- grpc_error* error =
1734
- RouteConfigParse(client, tracer, route_config, &local_rds_update);
1735
- if (error != GRPC_ERROR_NONE) return error;
1736
- rds_update->emplace(std::move(local_rds_update));
1737
- return GRPC_ERROR_NONE;
1738
- }
1739
- return GRPC_ERROR_NONE;
1740
- }
1741
-
1742
- grpc_error* CdsResponseParse(
1743
- XdsClient* client, TraceFlag* tracer,
1744
- const envoy_service_discovery_v3_DiscoveryResponse* response,
1745
- const std::set<absl::string_view>& expected_cluster_names,
1746
- XdsApi::CdsUpdateMap* cds_update_map, upb_arena* arena) {
1747
- // Get the resources from the response.
1748
- size_t size;
1749
- const google_protobuf_Any* const* resources =
1750
- envoy_service_discovery_v3_DiscoveryResponse_resources(response, &size);
1751
- // Parse all the resources in the CDS response.
1752
- for (size_t i = 0; i < size; ++i) {
1753
- XdsApi::CdsUpdate cds_update;
1754
- // Check the type_url of the resource.
1755
- absl::string_view type_url =
1756
- UpbStringToAbsl(google_protobuf_Any_type_url(resources[i]));
1757
- if (!IsCds(type_url)) {
1758
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not CDS.");
1759
- }
1760
- // Decode the cluster.
1761
- const upb_strview encoded_cluster = google_protobuf_Any_value(resources[i]);
1762
- const envoy_config_cluster_v3_Cluster* cluster =
1763
- envoy_config_cluster_v3_Cluster_parse(encoded_cluster.data,
1764
- encoded_cluster.size, arena);
1765
- if (cluster == nullptr) {
1766
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode cluster.");
1767
- }
1768
- MaybeLogCluster(client, tracer, cluster);
1769
- // Ignore unexpected cluster names.
1770
- std::string cluster_name =
1771
- UpbStringToStdString(envoy_config_cluster_v3_Cluster_name(cluster));
1772
- if (expected_cluster_names.find(cluster_name) ==
1773
- expected_cluster_names.end()) {
1774
- continue;
1775
- }
1776
- // Fail on duplicate resources.
1777
- if (cds_update_map->find(cluster_name) != cds_update_map->end()) {
1778
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1779
- absl::StrCat("duplicate resource name \"", cluster_name, "\"")
1780
- .c_str());
1781
- }
1782
- // Check the cluster_discovery_type.
1783
- if (!envoy_config_cluster_v3_Cluster_has_type(cluster)) {
1784
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType not found.");
1785
- }
1786
- if (envoy_config_cluster_v3_Cluster_type(cluster) !=
1787
- envoy_config_cluster_v3_Cluster_EDS) {
1788
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType is not EDS.");
1789
- }
1790
- // Check the EDS config source.
1791
- const envoy_config_cluster_v3_Cluster_EdsClusterConfig* eds_cluster_config =
1792
- envoy_config_cluster_v3_Cluster_eds_cluster_config(cluster);
1793
- const envoy_config_core_v3_ConfigSource* eds_config =
1794
- envoy_config_cluster_v3_Cluster_EdsClusterConfig_eds_config(
1795
- eds_cluster_config);
1796
- if (!envoy_config_core_v3_ConfigSource_has_ads(eds_config)) {
1797
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1798
- "EDS ConfigSource is not ADS.");
1799
- }
1800
- // Record EDS service_name (if any).
1801
- upb_strview service_name =
1802
- envoy_config_cluster_v3_Cluster_EdsClusterConfig_service_name(
1803
- eds_cluster_config);
1804
- if (service_name.size != 0) {
1805
- cds_update.eds_service_name = UpbStringToStdString(service_name);
1806
- }
1807
- // Check the LB policy.
1808
- if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) !=
1809
- envoy_config_cluster_v3_Cluster_ROUND_ROBIN) {
1810
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1811
- "LB policy is not ROUND_ROBIN.");
1812
- }
1813
- // Record LRS server name (if any).
1814
- const envoy_config_core_v3_ConfigSource* lrs_server =
1815
- envoy_config_cluster_v3_Cluster_lrs_server(cluster);
1816
- if (lrs_server != nullptr) {
1817
- if (!envoy_config_core_v3_ConfigSource_has_self(lrs_server)) {
1818
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1819
- "LRS ConfigSource is not self.");
1820
- }
1821
- cds_update.lrs_load_reporting_server_name.emplace("");
1822
- }
1823
- cds_update_map->emplace(std::move(cluster_name), std::move(cds_update));
1824
- }
1825
- return GRPC_ERROR_NONE;
1826
- }
1827
-
1828
- grpc_error* ServerAddressParseAndAppend(
1829
- const envoy_config_endpoint_v3_LbEndpoint* lb_endpoint,
1830
- ServerAddressList* list) {
1831
- // If health_status is not HEALTHY or UNKNOWN, skip this endpoint.
1832
- const int32_t health_status =
1833
- envoy_config_endpoint_v3_LbEndpoint_health_status(lb_endpoint);
1834
- if (health_status != envoy_config_core_v3_UNKNOWN &&
1835
- health_status != envoy_config_core_v3_HEALTHY) {
1836
- return GRPC_ERROR_NONE;
1837
- }
1838
- // Find the ip:port.
1839
- const envoy_config_endpoint_v3_Endpoint* endpoint =
1840
- envoy_config_endpoint_v3_LbEndpoint_endpoint(lb_endpoint);
1841
- const envoy_config_core_v3_Address* address =
1842
- envoy_config_endpoint_v3_Endpoint_address(endpoint);
1843
- const envoy_config_core_v3_SocketAddress* socket_address =
1844
- envoy_config_core_v3_Address_socket_address(address);
1845
- std::string address_str = UpbStringToStdString(
1846
- envoy_config_core_v3_SocketAddress_address(socket_address));
1847
- uint32_t port = envoy_config_core_v3_SocketAddress_port_value(socket_address);
1848
- if (GPR_UNLIKELY(port >> 16) != 0) {
1849
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid port.");
1850
- }
1851
- // Populate grpc_resolved_address.
1852
- grpc_resolved_address addr;
1853
- grpc_string_to_sockaddr(&addr, address_str.c_str(), port);
1854
- // Append the address to the list.
1855
- list->emplace_back(addr, nullptr);
1856
- return GRPC_ERROR_NONE;
1857
- }
1858
-
1859
- grpc_error* LocalityParse(
1860
- const envoy_config_endpoint_v3_LocalityLbEndpoints* locality_lb_endpoints,
1861
- XdsApi::PriorityListUpdate::LocalityMap::Locality* output_locality) {
1862
- // Parse LB weight.
1863
- const google_protobuf_UInt32Value* lb_weight =
1864
- envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancing_weight(
1865
- locality_lb_endpoints);
1866
- // If LB weight is not specified, it means this locality is assigned no load.
1867
- // TODO(juanlishen): When we support CDS to configure the inter-locality
1868
- // policy, we should change the LB weight handling.
1869
- output_locality->lb_weight =
1870
- lb_weight != nullptr ? google_protobuf_UInt32Value_value(lb_weight) : 0;
1871
- if (output_locality->lb_weight == 0) return GRPC_ERROR_NONE;
1872
- // Parse locality name.
1873
- const envoy_config_core_v3_Locality* locality =
1874
- envoy_config_endpoint_v3_LocalityLbEndpoints_locality(
1875
- locality_lb_endpoints);
1876
- std::string region =
1877
- UpbStringToStdString(envoy_config_core_v3_Locality_region(locality));
1878
- std::string zone =
1879
- UpbStringToStdString(envoy_config_core_v3_Locality_region(locality));
1880
- std::string sub_zone =
1881
- UpbStringToStdString(envoy_config_core_v3_Locality_sub_zone(locality));
1882
- output_locality->name = MakeRefCounted<XdsLocalityName>(
1883
- std::move(region), std::move(zone), std::move(sub_zone));
1884
- // Parse the addresses.
1885
- size_t size;
1886
- const envoy_config_endpoint_v3_LbEndpoint* const* lb_endpoints =
1887
- envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(
1888
- locality_lb_endpoints, &size);
1889
- for (size_t i = 0; i < size; ++i) {
1890
- grpc_error* error = ServerAddressParseAndAppend(
1891
- lb_endpoints[i], &output_locality->serverlist);
1892
- if (error != GRPC_ERROR_NONE) return error;
1893
- }
1894
- // Parse the priority.
1895
- output_locality->priority =
1896
- envoy_config_endpoint_v3_LocalityLbEndpoints_priority(
1897
- locality_lb_endpoints);
1898
- return GRPC_ERROR_NONE;
1899
- }
1900
-
1901
- grpc_error* DropParseAndAppend(
1902
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload*
1903
- drop_overload,
1904
- XdsApi::DropConfig* drop_config) {
1905
- // Get the category.
1906
- std::string category = UpbStringToStdString(
1907
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_category(
1908
- drop_overload));
1909
- if (category.size() == 0) {
1910
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty drop category name");
1911
- }
1912
- // Get the drop rate (per million).
1913
- const envoy_type_v3_FractionalPercent* drop_percentage =
1914
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_drop_percentage(
1915
- drop_overload);
1916
- uint32_t numerator =
1917
- envoy_type_v3_FractionalPercent_numerator(drop_percentage);
1918
- const auto denominator =
1919
- static_cast<envoy_type_v3_FractionalPercent_DenominatorType>(
1920
- envoy_type_v3_FractionalPercent_denominator(drop_percentage));
1921
- // Normalize to million.
1922
- switch (denominator) {
1923
- case envoy_type_v3_FractionalPercent_HUNDRED:
1924
- numerator *= 10000;
1925
- break;
1926
- case envoy_type_v3_FractionalPercent_TEN_THOUSAND:
1927
- numerator *= 100;
1928
- break;
1929
- case envoy_type_v3_FractionalPercent_MILLION:
1930
- break;
1931
- default:
1932
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unknown denominator type");
1933
- }
1934
- // Cap numerator to 1000000.
1935
- numerator = GPR_MIN(numerator, 1000000);
1936
- drop_config->AddCategory(std::move(category), numerator);
1937
- return GRPC_ERROR_NONE;
1938
- }
1939
-
1940
- grpc_error* EdsResponseParse(
1941
- XdsClient* client, TraceFlag* tracer,
1942
- const envoy_service_discovery_v3_DiscoveryResponse* response,
1943
- const std::set<absl::string_view>& expected_eds_service_names,
1944
- XdsApi::EdsUpdateMap* eds_update_map, upb_arena* arena) {
1945
- // Get the resources from the response.
1946
- size_t size;
1947
- const google_protobuf_Any* const* resources =
1948
- envoy_service_discovery_v3_DiscoveryResponse_resources(response, &size);
1949
- for (size_t i = 0; i < size; ++i) {
1950
- XdsApi::EdsUpdate eds_update;
1951
- // Check the type_url of the resource.
1952
- absl::string_view type_url =
1953
- UpbStringToAbsl(google_protobuf_Any_type_url(resources[i]));
1954
- if (!IsEds(type_url)) {
1955
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not EDS.");
1956
- }
1957
- // Get the cluster_load_assignment.
1958
- upb_strview encoded_cluster_load_assignment =
1959
- google_protobuf_Any_value(resources[i]);
1960
- envoy_config_endpoint_v3_ClusterLoadAssignment* cluster_load_assignment =
1961
- envoy_config_endpoint_v3_ClusterLoadAssignment_parse(
1962
- encoded_cluster_load_assignment.data,
1963
- encoded_cluster_load_assignment.size, arena);
1964
- if (cluster_load_assignment == nullptr) {
1965
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1966
- "Can't parse cluster_load_assignment.");
1967
- }
1968
- MaybeLogClusterLoadAssignment(client, tracer, cluster_load_assignment);
1969
- // Check the EDS service name. Ignore unexpected names.
1970
- std::string eds_service_name = UpbStringToStdString(
1971
- envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name(
1972
- cluster_load_assignment));
1973
- if (expected_eds_service_names.find(eds_service_name) ==
1974
- expected_eds_service_names.end()) {
1975
- continue;
1976
- }
1977
- // Fail on duplicate resources.
1978
- if (eds_update_map->find(eds_service_name) != eds_update_map->end()) {
1979
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1980
- absl::StrCat("duplicate resource name \"", eds_service_name, "\"")
1981
- .c_str());
1982
- }
1983
- // Get the endpoints.
1984
- size_t locality_size;
1985
- const envoy_config_endpoint_v3_LocalityLbEndpoints* const* endpoints =
1986
- envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(
1987
- cluster_load_assignment, &locality_size);
1988
- for (size_t j = 0; j < locality_size; ++j) {
1989
- XdsApi::PriorityListUpdate::LocalityMap::Locality locality;
1990
- grpc_error* error = LocalityParse(endpoints[j], &locality);
1991
- if (error != GRPC_ERROR_NONE) return error;
1992
- // Filter out locality with weight 0.
1993
- if (locality.lb_weight == 0) continue;
1994
- eds_update.priority_list_update.Add(locality);
1995
- }
1996
- for (uint32_t priority = 0;
1997
- priority < eds_update.priority_list_update.size(); ++priority) {
1998
- auto* locality_map = eds_update.priority_list_update.Find(priority);
1999
- if (locality_map == nullptr || locality_map->size() == 0) {
2000
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
2001
- "EDS update includes sparse priority list");
2002
- }
2003
- }
2004
- // Get the drop config.
2005
- eds_update.drop_config = MakeRefCounted<XdsApi::DropConfig>();
2006
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* policy =
2007
- envoy_config_endpoint_v3_ClusterLoadAssignment_policy(
2008
- cluster_load_assignment);
2009
- if (policy != nullptr) {
2010
- size_t drop_size;
2011
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* const*
2012
- drop_overload =
2013
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_drop_overloads(
2014
- policy, &drop_size);
2015
- for (size_t j = 0; j < drop_size; ++j) {
2016
- grpc_error* error =
2017
- DropParseAndAppend(drop_overload[j], eds_update.drop_config.get());
2018
- if (error != GRPC_ERROR_NONE) return error;
2019
- }
2020
- }
2021
- eds_update_map->emplace(std::move(eds_service_name), std::move(eds_update));
2022
- }
2023
- return GRPC_ERROR_NONE;
2024
- }
2025
-
2026
- std::string TypeUrlInternalToExternal(absl::string_view type_url) {
2027
- if (type_url == kLdsV2TypeUrl) {
2028
- return XdsApi::kLdsTypeUrl;
2029
- } else if (type_url == kRdsV2TypeUrl) {
2030
- return XdsApi::kRdsTypeUrl;
2031
- } else if (type_url == kCdsV2TypeUrl) {
2032
- return XdsApi::kCdsTypeUrl;
2033
- } else if (type_url == kEdsV2TypeUrl) {
2034
- return XdsApi::kEdsTypeUrl;
2035
- }
2036
- return std::string(type_url);
2037
283
  }
2038
284
 
2039
285
  } // namespace
2040
286
 
2041
- XdsApi::AdsParseResult XdsApi::ParseAdsResponse(
2042
- const grpc_slice& encoded_response, const std::string& expected_server_name,
2043
- const std::set<absl::string_view>& expected_route_configuration_names,
2044
- const std::set<absl::string_view>& expected_cluster_names,
2045
- const std::set<absl::string_view>& expected_eds_service_names) {
2046
- AdsParseResult result;
287
+ absl::Status XdsApi::ParseAdsResponse(absl::string_view encoded_response,
288
+ AdsResponseParserInterface* parser) {
2047
289
  upb::Arena arena;
290
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
2048
291
  // Decode the response.
2049
292
  const envoy_service_discovery_v3_DiscoveryResponse* response =
2050
293
  envoy_service_discovery_v3_DiscoveryResponse_parse(
2051
- reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(encoded_response)),
2052
- GRPC_SLICE_LENGTH(encoded_response), arena.ptr());
2053
- // If decoding fails, output an empty type_url and return.
294
+ encoded_response.data(), encoded_response.size(), arena.ptr());
295
+ // If decoding fails, report a fatal error and return.
2054
296
  if (response == nullptr) {
2055
- result.parse_error =
2056
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode DiscoveryResponse.");
2057
- return result;
2058
- }
2059
- MaybeLogDiscoveryResponse(client_, tracer_, response);
2060
- // Record the type_url, the version_info, and the nonce of the response.
2061
- result.type_url = TypeUrlInternalToExternal(UpbStringToAbsl(
2062
- envoy_service_discovery_v3_DiscoveryResponse_type_url(response)));
2063
- result.version = UpbStringToStdString(
297
+ return absl::InvalidArgumentError("Can't decode DiscoveryResponse.");
298
+ }
299
+ MaybeLogDiscoveryResponse(context, response);
300
+ // Report the type_url, version, nonce, and number of resources to the parser.
301
+ AdsResponseParserInterface::AdsResponseFields fields;
302
+ fields.type_url = std::string(absl::StripPrefix(
303
+ UpbStringToAbsl(
304
+ envoy_service_discovery_v3_DiscoveryResponse_type_url(response)),
305
+ "type.googleapis.com/"));
306
+ fields.version = UpbStringToStdString(
2064
307
  envoy_service_discovery_v3_DiscoveryResponse_version_info(response));
2065
- result.nonce = UpbStringToStdString(
308
+ fields.nonce = UpbStringToStdString(
2066
309
  envoy_service_discovery_v3_DiscoveryResponse_nonce(response));
2067
- // Parse the response according to the resource type.
2068
- if (IsLds(result.type_url)) {
2069
- result.parse_error =
2070
- LdsResponseParse(client_, tracer_, response, expected_server_name,
2071
- &result.lds_update, arena.ptr());
2072
- } else if (IsRds(result.type_url)) {
2073
- result.parse_error = RdsResponseParse(client_, tracer_, response,
2074
- expected_route_configuration_names,
2075
- &result.rds_update, arena.ptr());
2076
- } else if (IsCds(result.type_url)) {
2077
- result.parse_error =
2078
- CdsResponseParse(client_, tracer_, response, expected_cluster_names,
2079
- &result.cds_update_map, arena.ptr());
2080
- } else if (IsEds(result.type_url)) {
2081
- result.parse_error =
2082
- EdsResponseParse(client_, tracer_, response, expected_eds_service_names,
2083
- &result.eds_update_map, arena.ptr());
310
+ size_t num_resources;
311
+ const google_protobuf_Any* const* resources =
312
+ envoy_service_discovery_v3_DiscoveryResponse_resources(response,
313
+ &num_resources);
314
+ fields.num_resources = num_resources;
315
+ absl::Status status = parser->ProcessAdsResponseFields(std::move(fields));
316
+ if (!status.ok()) return status;
317
+ // Process each resource.
318
+ for (size_t i = 0; i < num_resources; ++i) {
319
+ absl::string_view type_url = absl::StripPrefix(
320
+ UpbStringToAbsl(google_protobuf_Any_type_url(resources[i])),
321
+ "type.googleapis.com/");
322
+ absl::string_view serialized_resource =
323
+ UpbStringToAbsl(google_protobuf_Any_value(resources[i]));
324
+ // Unwrap Resource messages, if so wrapped.
325
+ absl::string_view resource_name;
326
+ if (type_url == "envoy.service.discovery.v3.Resource") {
327
+ const auto* resource_wrapper = envoy_service_discovery_v3_Resource_parse(
328
+ serialized_resource.data(), serialized_resource.size(), arena.ptr());
329
+ if (resource_wrapper == nullptr) {
330
+ parser->ResourceWrapperParsingFailed(i);
331
+ continue;
332
+ }
333
+ const auto* resource =
334
+ envoy_service_discovery_v3_Resource_resource(resource_wrapper);
335
+ type_url = absl::StripPrefix(
336
+ UpbStringToAbsl(google_protobuf_Any_type_url(resource)),
337
+ "type.googleapis.com/");
338
+ serialized_resource =
339
+ UpbStringToAbsl(google_protobuf_Any_value(resource));
340
+ resource_name = UpbStringToAbsl(
341
+ envoy_service_discovery_v3_Resource_name(resource_wrapper));
342
+ }
343
+ parser->ParseResource(context.arena, i, type_url, resource_name,
344
+ serialized_resource);
2084
345
  }
2085
- return result;
346
+ return absl::OkStatus();
2086
347
  }
2087
348
 
2088
349
  namespace {
2089
350
 
2090
351
  void MaybeLogLrsRequest(
2091
- XdsClient* client, TraceFlag* tracer,
2092
- const envoy_service_load_stats_v3_LoadStatsRequest* request,
2093
- const std::string& build_version) {
2094
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
352
+ const XdsApiContext& context,
353
+ const envoy_service_load_stats_v3_LoadStatsRequest* request) {
354
+ if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
2095
355
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
2096
- // TODO(roth): When we can upgrade upb, use upb textformat code to dump
2097
- // the raw proto instead of doing this manually.
2098
- std::vector<std::string> fields;
2099
- // node
2100
- const auto* node =
2101
- envoy_service_load_stats_v3_LoadStatsRequest_node(request);
2102
- if (node != nullptr) {
2103
- AddNodeLogFields(node, build_version, &fields);
2104
- }
2105
- // cluster_stats
2106
- size_t num_cluster_stats;
2107
- const struct envoy_config_endpoint_v3_ClusterStats* const* cluster_stats =
2108
- envoy_service_load_stats_v3_LoadStatsRequest_cluster_stats(
2109
- request, &num_cluster_stats);
2110
- for (size_t i = 0; i < num_cluster_stats; ++i) {
2111
- const auto* cluster_stat = cluster_stats[i];
2112
- fields.emplace_back("cluster_stats {");
2113
- // cluster_name
2114
- AddStringField(
2115
- " cluster_name",
2116
- envoy_config_endpoint_v3_ClusterStats_cluster_name(cluster_stat),
2117
- &fields);
2118
- // cluster_service_name
2119
- AddStringField(" cluster_service_name",
2120
- envoy_config_endpoint_v3_ClusterStats_cluster_service_name(
2121
- cluster_stat),
2122
- &fields);
2123
- // upstream_locality_stats
2124
- size_t num_stats;
2125
- const envoy_config_endpoint_v3_UpstreamLocalityStats* const* stats =
2126
- envoy_config_endpoint_v3_ClusterStats_upstream_locality_stats(
2127
- cluster_stat, &num_stats);
2128
- for (size_t j = 0; j < num_stats; ++j) {
2129
- const auto* stat = stats[j];
2130
- fields.emplace_back(" upstream_locality_stats {");
2131
- // locality
2132
- const auto* locality =
2133
- envoy_config_endpoint_v3_UpstreamLocalityStats_locality(stat);
2134
- if (locality != nullptr) {
2135
- fields.emplace_back(" locality {");
2136
- AddLocalityField(3, locality, &fields);
2137
- fields.emplace_back(" }");
2138
- }
2139
- // total_successful_requests
2140
- fields.emplace_back(absl::StrCat(
2141
- " total_successful_requests: ",
2142
- envoy_config_endpoint_v3_UpstreamLocalityStats_total_successful_requests(
2143
- stat)));
2144
- // total_requests_in_progress
2145
- fields.emplace_back(absl::StrCat(
2146
- " total_requests_in_progress: ",
2147
- envoy_config_endpoint_v3_UpstreamLocalityStats_total_requests_in_progress(
2148
- stat)));
2149
- // total_error_requests
2150
- fields.emplace_back(absl::StrCat(
2151
- " total_error_requests: ",
2152
- envoy_config_endpoint_v3_UpstreamLocalityStats_total_error_requests(
2153
- stat)));
2154
- // total_issued_requests
2155
- fields.emplace_back(absl::StrCat(
2156
- " total_issued_requests: ",
2157
- envoy_config_endpoint_v3_UpstreamLocalityStats_total_issued_requests(
2158
- stat)));
2159
- fields.emplace_back(" }");
2160
- }
2161
- // total_dropped_requests
2162
- fields.emplace_back(absl::StrCat(
2163
- " total_dropped_requests: ",
2164
- envoy_config_endpoint_v3_ClusterStats_total_dropped_requests(
2165
- cluster_stat)));
2166
- // dropped_requests
2167
- size_t num_drops;
2168
- const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* const*
2169
- drops = envoy_config_endpoint_v3_ClusterStats_dropped_requests(
2170
- cluster_stat, &num_drops);
2171
- for (size_t j = 0; j < num_drops; ++j) {
2172
- const auto* drop = drops[j];
2173
- fields.emplace_back(" dropped_requests {");
2174
- // category
2175
- AddStringField(
2176
- " category",
2177
- envoy_config_endpoint_v3_ClusterStats_DroppedRequests_category(
2178
- drop),
2179
- &fields);
2180
- // dropped_count
2181
- fields.emplace_back(absl::StrCat(
2182
- " dropped_count: ",
2183
- envoy_config_endpoint_v3_ClusterStats_DroppedRequests_dropped_count(
2184
- drop)));
2185
- fields.emplace_back(" }");
2186
- }
2187
- // load_report_interval
2188
- const auto* load_report_interval =
2189
- envoy_config_endpoint_v3_ClusterStats_load_report_interval(
2190
- cluster_stat);
2191
- if (load_report_interval != nullptr) {
2192
- fields.emplace_back(" load_report_interval {");
2193
- fields.emplace_back(absl::StrCat(
2194
- " seconds: ",
2195
- google_protobuf_Duration_seconds(load_report_interval)));
2196
- fields.emplace_back(
2197
- absl::StrCat(" nanos: ",
2198
- google_protobuf_Duration_nanos(load_report_interval)));
2199
- fields.emplace_back(" }");
2200
- }
2201
- fields.emplace_back("}");
2202
- }
2203
- gpr_log(GPR_DEBUG, "[xds_client %p] constructed LRS request: %s", client,
2204
- absl::StrJoin(fields, "\n").c_str());
356
+ const upb_MessageDef* msg_type =
357
+ envoy_service_load_stats_v3_LoadStatsRequest_getmsgdef(context.symtab);
358
+ char buf[10240];
359
+ upb_TextEncode(request, msg_type, nullptr, 0, buf, sizeof(buf));
360
+ gpr_log(GPR_DEBUG, "[xds_client %p] constructed LRS request: %s",
361
+ context.client, buf);
2205
362
  }
2206
363
  }
2207
364
 
2208
- grpc_slice SerializeLrsRequest(
2209
- const envoy_service_load_stats_v3_LoadStatsRequest* request,
2210
- upb_arena* arena) {
365
+ std::string SerializeLrsRequest(
366
+ const XdsApiContext& context,
367
+ const envoy_service_load_stats_v3_LoadStatsRequest* request) {
2211
368
  size_t output_length;
2212
369
  char* output = envoy_service_load_stats_v3_LoadStatsRequest_serialize(
2213
- request, arena, &output_length);
2214
- return grpc_slice_from_copied_buffer(output, output_length);
370
+ request, context.arena, &output_length);
371
+ return std::string(output, output_length);
2215
372
  }
2216
373
 
2217
374
  } // namespace
2218
375
 
2219
- grpc_slice XdsApi::CreateLrsInitialRequest(const std::string& server_name) {
376
+ std::string XdsApi::CreateLrsInitialRequest() {
2220
377
  upb::Arena arena;
378
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
2221
379
  // Create a request.
2222
380
  envoy_service_load_stats_v3_LoadStatsRequest* request =
2223
381
  envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -2225,25 +383,26 @@ grpc_slice XdsApi::CreateLrsInitialRequest(const std::string& server_name) {
2225
383
  envoy_config_core_v3_Node* node_msg =
2226
384
  envoy_service_load_stats_v3_LoadStatsRequest_mutable_node(request,
2227
385
  arena.ptr());
2228
- PopulateNode(arena.ptr(), bootstrap_, build_version_, user_agent_name_,
2229
- server_name, node_msg);
386
+ PopulateNode(context, node_, user_agent_name_, user_agent_version_, node_msg);
2230
387
  envoy_config_core_v3_Node_add_client_features(
2231
- node_msg, upb_strview_makez("envoy.lrs.supports_send_all_clusters"),
388
+ node_msg,
389
+ upb_StringView_FromString("envoy.lrs.supports_send_all_clusters"),
2232
390
  arena.ptr());
2233
- MaybeLogLrsRequest(client_, tracer_, request, build_version_);
2234
- return SerializeLrsRequest(request, arena.ptr());
391
+ MaybeLogLrsRequest(context, request);
392
+ return SerializeLrsRequest(context, request);
2235
393
  }
2236
394
 
2237
395
  namespace {
2238
396
 
2239
397
  void LocalityStatsPopulate(
398
+ const XdsApiContext& context,
2240
399
  envoy_config_endpoint_v3_UpstreamLocalityStats* output,
2241
400
  const XdsLocalityName& locality_name,
2242
- const XdsClusterLocalityStats::Snapshot& snapshot, upb_arena* arena) {
401
+ const XdsClusterLocalityStats::Snapshot& snapshot) {
2243
402
  // Set locality.
2244
403
  envoy_config_core_v3_Locality* locality =
2245
- envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_locality(output,
2246
- arena);
404
+ envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_locality(
405
+ output, context.arena);
2247
406
  if (!locality_name.region().empty()) {
2248
407
  envoy_config_core_v3_Locality_set_region(
2249
408
  locality, StdStringToUpbString(locality_name.region()));
@@ -2271,7 +430,7 @@ void LocalityStatsPopulate(
2271
430
  const XdsClusterLocalityStats::BackendMetric& metric_value = p.second;
2272
431
  envoy_config_endpoint_v3_EndpointLoadMetricStats* load_metric =
2273
432
  envoy_config_endpoint_v3_UpstreamLocalityStats_add_load_metric_stats(
2274
- output, arena);
433
+ output, context.arena);
2275
434
  envoy_config_endpoint_v3_EndpointLoadMetricStats_set_metric_name(
2276
435
  load_metric, StdStringToUpbString(metric_name));
2277
436
  envoy_config_endpoint_v3_EndpointLoadMetricStats_set_num_requests_finished_with_metric(
@@ -2283,9 +442,10 @@ void LocalityStatsPopulate(
2283
442
 
2284
443
  } // namespace
2285
444
 
2286
- grpc_slice XdsApi::CreateLrsRequest(
445
+ std::string XdsApi::CreateLrsRequest(
2287
446
  ClusterLoadReportMap cluster_load_report_map) {
2288
447
  upb::Arena arena;
448
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
2289
449
  // Create a request.
2290
450
  envoy_service_load_stats_v3_LoadStatsRequest* request =
2291
451
  envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -2312,12 +472,11 @@ grpc_slice XdsApi::CreateLrsRequest(
2312
472
  envoy_config_endpoint_v3_UpstreamLocalityStats* locality_stats =
2313
473
  envoy_config_endpoint_v3_ClusterStats_add_upstream_locality_stats(
2314
474
  cluster_stats, arena.ptr());
2315
- LocalityStatsPopulate(locality_stats, locality_name, snapshot,
2316
- arena.ptr());
475
+ LocalityStatsPopulate(context, locality_stats, locality_name, snapshot);
2317
476
  }
2318
477
  // Add dropped requests.
2319
478
  uint64_t total_dropped_requests = 0;
2320
- for (const auto& p : load_report.dropped_requests) {
479
+ for (const auto& p : load_report.dropped_requests.categorized_drops) {
2321
480
  const std::string& category = p.first;
2322
481
  const uint64_t count = p.second;
2323
482
  envoy_config_endpoint_v3_ClusterStats_DroppedRequests* dropped_requests =
@@ -2329,35 +488,34 @@ grpc_slice XdsApi::CreateLrsRequest(
2329
488
  dropped_requests, count);
2330
489
  total_dropped_requests += count;
2331
490
  }
491
+ total_dropped_requests += load_report.dropped_requests.uncategorized_drops;
2332
492
  // Set total dropped requests.
2333
493
  envoy_config_endpoint_v3_ClusterStats_set_total_dropped_requests(
2334
494
  cluster_stats, total_dropped_requests);
2335
495
  // Set real load report interval.
2336
- gpr_timespec timespec =
2337
- grpc_millis_to_timespec(load_report.load_report_interval, GPR_TIMESPAN);
496
+ gpr_timespec timespec = load_report.load_report_interval.as_timespec();
2338
497
  google_protobuf_Duration* load_report_interval =
2339
498
  envoy_config_endpoint_v3_ClusterStats_mutable_load_report_interval(
2340
499
  cluster_stats, arena.ptr());
2341
500
  google_protobuf_Duration_set_seconds(load_report_interval, timespec.tv_sec);
2342
501
  google_protobuf_Duration_set_nanos(load_report_interval, timespec.tv_nsec);
2343
502
  }
2344
- MaybeLogLrsRequest(client_, tracer_, request, build_version_);
2345
- return SerializeLrsRequest(request, arena.ptr());
503
+ MaybeLogLrsRequest(context, request);
504
+ return SerializeLrsRequest(context, request);
2346
505
  }
2347
506
 
2348
- grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
2349
- bool* send_all_clusters,
2350
- std::set<std::string>* cluster_names,
2351
- grpc_millis* load_reporting_interval) {
507
+ absl::Status XdsApi::ParseLrsResponse(absl::string_view encoded_response,
508
+ bool* send_all_clusters,
509
+ std::set<std::string>* cluster_names,
510
+ Duration* load_reporting_interval) {
2352
511
  upb::Arena arena;
2353
512
  // Decode the response.
2354
513
  const envoy_service_load_stats_v3_LoadStatsResponse* decoded_response =
2355
514
  envoy_service_load_stats_v3_LoadStatsResponse_parse(
2356
- reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(encoded_response)),
2357
- GRPC_SLICE_LENGTH(encoded_response), arena.ptr());
515
+ encoded_response.data(), encoded_response.size(), arena.ptr());
2358
516
  // Parse the response.
2359
517
  if (decoded_response == nullptr) {
2360
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode response.");
518
+ return absl::UnavailableError("Can't decode response.");
2361
519
  }
2362
520
  // Check send_all_clusters.
2363
521
  if (envoy_service_load_stats_v3_LoadStatsResponse_send_all_clusters(
@@ -2366,7 +524,7 @@ grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
2366
524
  } else {
2367
525
  // Store the cluster names.
2368
526
  size_t size;
2369
- const upb_strview* clusters =
527
+ const upb_StringView* clusters =
2370
528
  envoy_service_load_stats_v3_LoadStatsResponse_clusters(decoded_response,
2371
529
  &size);
2372
530
  for (size_t i = 0; i < size; ++i) {
@@ -2377,12 +535,90 @@ grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
2377
535
  const google_protobuf_Duration* load_reporting_interval_duration =
2378
536
  envoy_service_load_stats_v3_LoadStatsResponse_load_reporting_interval(
2379
537
  decoded_response);
2380
- gpr_timespec timespec{
538
+ *load_reporting_interval = Duration::FromSecondsAndNanoseconds(
2381
539
  google_protobuf_Duration_seconds(load_reporting_interval_duration),
2382
- google_protobuf_Duration_nanos(load_reporting_interval_duration),
2383
- GPR_TIMESPAN};
2384
- *load_reporting_interval = gpr_time_to_millis(timespec);
2385
- return GRPC_ERROR_NONE;
540
+ google_protobuf_Duration_nanos(load_reporting_interval_duration));
541
+ return absl::OkStatus();
542
+ }
543
+
544
+ namespace {
545
+
546
+ google_protobuf_Timestamp* EncodeTimestamp(const XdsApiContext& context,
547
+ Timestamp value) {
548
+ google_protobuf_Timestamp* timestamp =
549
+ google_protobuf_Timestamp_new(context.arena);
550
+ gpr_timespec timespec = value.as_timespec(GPR_CLOCK_REALTIME);
551
+ google_protobuf_Timestamp_set_seconds(timestamp, timespec.tv_sec);
552
+ google_protobuf_Timestamp_set_nanos(timestamp, timespec.tv_nsec);
553
+ return timestamp;
554
+ }
555
+
556
+ } // namespace
557
+
558
+ std::string XdsApi::AssembleClientConfig(
559
+ const ResourceTypeMetadataMap& resource_type_metadata_map) {
560
+ upb::Arena arena;
561
+ // Create the ClientConfig for resource metadata from XdsClient
562
+ auto* client_config = envoy_service_status_v3_ClientConfig_new(arena.ptr());
563
+ // Fill-in the node information
564
+ auto* node = envoy_service_status_v3_ClientConfig_mutable_node(client_config,
565
+ arena.ptr());
566
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
567
+ PopulateNode(context, node_, user_agent_name_, user_agent_version_, node);
568
+ // Dump each resource.
569
+ std::vector<std::string> type_url_storage;
570
+ for (const auto& p : resource_type_metadata_map) {
571
+ absl::string_view type_url = p.first;
572
+ const ResourceMetadataMap& resource_metadata_map = p.second;
573
+ type_url_storage.emplace_back(
574
+ absl::StrCat("type.googleapis.com/", type_url));
575
+ for (const auto& q : resource_metadata_map) {
576
+ absl::string_view resource_name = q.first;
577
+ const ResourceMetadata& metadata = *q.second;
578
+ auto* entry =
579
+ envoy_service_status_v3_ClientConfig_add_generic_xds_configs(
580
+ client_config, context.arena);
581
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_type_url(
582
+ entry, StdStringToUpbString(type_url_storage.back()));
583
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_name(
584
+ entry, StdStringToUpbString(resource_name));
585
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_client_status(
586
+ entry, metadata.client_status);
587
+ if (!metadata.serialized_proto.empty()) {
588
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_version_info(
589
+ entry, StdStringToUpbString(metadata.version));
590
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_updated(
591
+ entry, EncodeTimestamp(context, metadata.update_time));
592
+ auto* any_field =
593
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(
594
+ entry, context.arena);
595
+ google_protobuf_Any_set_type_url(
596
+ any_field, StdStringToUpbString(type_url_storage.back()));
597
+ google_protobuf_Any_set_value(
598
+ any_field, StdStringToUpbString(metadata.serialized_proto));
599
+ }
600
+ if (metadata.client_status == XdsApi::ResourceMetadata::NACKED) {
601
+ auto* update_failure_state =
602
+ envoy_admin_v3_UpdateFailureState_new(context.arena);
603
+ envoy_admin_v3_UpdateFailureState_set_details(
604
+ update_failure_state,
605
+ StdStringToUpbString(metadata.failed_details));
606
+ envoy_admin_v3_UpdateFailureState_set_version_info(
607
+ update_failure_state,
608
+ StdStringToUpbString(metadata.failed_version));
609
+ envoy_admin_v3_UpdateFailureState_set_last_update_attempt(
610
+ update_failure_state,
611
+ EncodeTimestamp(context, metadata.failed_update_time));
612
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_state(
613
+ entry, update_failure_state);
614
+ }
615
+ }
616
+ }
617
+ // Serialize the upb message to bytes
618
+ size_t output_length;
619
+ char* output = envoy_service_status_v3_ClientConfig_serialize(
620
+ client_config, arena.ptr(), &output_length);
621
+ return std::string(output, output_length);
2386
622
  }
2387
623
 
2388
624
  } // namespace grpc_core