grpc 1.42.0 → 1.46.3

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

Potentially problematic release.


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

Files changed (1531) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +425 -234
  3. data/include/grpc/event_engine/event_engine.h +37 -13
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
  5. data/include/grpc/event_engine/memory_allocator.h +27 -11
  6. data/include/grpc/event_engine/memory_request.h +57 -0
  7. data/include/grpc/grpc.h +40 -14
  8. data/include/grpc/grpc_posix.h +20 -19
  9. data/include/grpc/grpc_security.h +312 -195
  10. data/include/grpc/grpc_security_constants.h +1 -14
  11. data/include/grpc/impl/codegen/compression_types.h +0 -2
  12. data/include/grpc/impl/codegen/grpc_types.h +24 -21
  13. data/include/grpc/impl/codegen/port_platform.h +7 -3
  14. data/include/grpc/impl/codegen/slice.h +4 -1
  15. data/include/grpc/slice.h +0 -11
  16. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  17. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  18. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
  19. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +5 -5
  20. data/src/core/ext/filters/client_channel/backend_metric.cc +9 -10
  21. data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
  22. data/src/core/ext/filters/client_channel/backup_poller.cc +12 -8
  23. data/src/core/ext/filters/client_channel/channel_connectivity.cc +5 -5
  24. data/src/core/ext/filters/client_channel/client_channel.cc +367 -243
  25. data/src/core/ext/filters/client_channel/client_channel.h +45 -41
  26. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +6 -13
  27. data/src/core/ext/filters/client_channel/config_selector.h +4 -4
  28. data/src/core/ext/filters/client_channel/connector.h +1 -1
  29. data/src/core/ext/filters/client_channel/dynamic_filters.cc +5 -6
  30. data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -2
  31. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
  32. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -15
  33. data/src/core/ext/filters/client_channel/health/health_check_client.cc +126 -582
  34. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
  35. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +22 -27
  36. data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
  37. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
  39. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
  40. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +4 -7
  41. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -81
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  44. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
  45. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
  46. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +15 -15
  47. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  48. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +50 -32
  49. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +199 -150
  50. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +123 -76
  51. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +162 -122
  52. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
  53. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
  54. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +98 -63
  55. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +104 -145
  56. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
  57. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +147 -70
  58. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +19 -10
  59. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +323 -470
  60. data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
  61. data/src/core/ext/filters/client_channel/lb_policy.h +94 -62
  62. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +10 -16
  63. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +287 -313
  64. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
  65. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
  66. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +31 -50
  67. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +136 -226
  68. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
  69. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  70. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +92 -255
  71. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -17
  72. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
  73. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +84 -68
  74. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  75. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  76. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +40 -39
  77. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +476 -412
  78. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -11
  79. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +13 -7
  80. data/src/core/ext/filters/client_channel/retry_filter.cc +253 -171
  81. data/src/core/ext/filters/client_channel/retry_service_config.cc +16 -18
  82. data/src/core/ext/filters/client_channel/retry_service_config.h +18 -12
  83. data/src/core/ext/filters/client_channel/retry_throttle.cc +9 -23
  84. data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
  85. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +8 -7
  86. data/src/core/ext/filters/client_channel/subchannel.cc +52 -59
  87. data/src/core/ext/filters/client_channel/subchannel.h +7 -7
  88. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  89. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  90. data/src/core/ext/filters/deadline/deadline_filter.cc +15 -14
  91. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  92. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +155 -400
  93. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
  94. data/src/core/ext/filters/fault_injection/service_config_parser.cc +11 -13
  95. data/src/core/ext/filters/fault_injection/service_config_parser.h +10 -4
  96. data/src/core/ext/filters/http/client/http_client_filter.cc +81 -544
  97. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  98. data/src/core/ext/filters/http/client_authority_filter.cc +31 -95
  99. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  100. data/src/core/ext/filters/http/http_filters_plugin.cc +22 -22
  101. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +43 -140
  102. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +15 -27
  103. data/src/core/ext/filters/http/server/http_server_filter.cc +36 -251
  104. data/src/core/ext/filters/message_size/message_size_filter.cc +27 -35
  105. data/src/core/ext/filters/message_size/message_size_filter.h +10 -3
  106. data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
  107. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  108. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  109. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  110. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
  111. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  112. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
  113. data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → filters/server_config_selector/server_config_selector_filter.h} +9 -7
  114. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +239 -20
  115. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
  116. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +286 -108
  117. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +327 -303
  118. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +9 -4
  119. data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
  120. data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
  121. data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -10
  122. data/src/core/ext/transport/chttp2/transport/flow_control.h +5 -5
  123. data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
  124. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
  125. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -0
  126. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +361 -240
  128. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +87 -145
  129. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
  130. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  131. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +74 -149
  132. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
  133. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
  134. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
  135. data/src/core/ext/transport/chttp2/transport/internal.h +16 -43
  136. data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -9
  137. data/src/core/ext/transport/chttp2/transport/writing.cc +81 -136
  138. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  139. data/src/core/ext/transport/inproc/inproc_transport.cc +42 -81
  140. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  141. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  142. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  143. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  144. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  145. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +247 -209
  146. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1249 -684
  147. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  148. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  149. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  150. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  151. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  152. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  153. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  154. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  155. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  156. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  157. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  158. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  159. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  160. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  161. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +43 -0
  162. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +51 -0
  163. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +30 -4
  164. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +50 -17
  165. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +143 -116
  166. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +670 -385
  167. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +239 -199
  168. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1270 -663
  169. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +49 -28
  170. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +201 -90
  171. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +320 -271
  172. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1671 -826
  173. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +20 -7
  174. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +43 -23
  175. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +60 -27
  176. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +273 -98
  177. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  178. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +74 -53
  180. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +355 -189
  181. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +21 -7
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +46 -24
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +213 -176
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1069 -581
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +105 -45
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +526 -166
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +19 -6
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +39 -23
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +16 -22
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +42 -100
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +145 -117
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +769 -409
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +141 -92
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +737 -348
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +21 -8
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +58 -30
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +203 -125
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +993 -396
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +17 -4
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +29 -16
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +27 -13
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +84 -48
  205. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +22 -9
  206. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +76 -33
  207. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +26 -13
  208. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +94 -48
  209. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +21 -8
  210. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +47 -25
  211. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +51 -35
  212. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +195 -108
  213. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +74 -55
  214. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +350 -189
  215. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +70 -53
  216. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +358 -187
  217. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +19 -6
  218. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -20
  219. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +98 -71
  220. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +504 -258
  221. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +104 -79
  222. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +561 -300
  223. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +31 -16
  224. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +105 -48
  225. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +24 -10
  226. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +66 -39
  227. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  228. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  229. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +82 -61
  230. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +414 -234
  231. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +86 -65
  232. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +407 -236
  233. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +127 -103
  234. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +563 -293
  235. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +53 -34
  236. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +272 -141
  237. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +663 -572
  238. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3643 -1900
  239. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +38 -19
  240. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +149 -71
  241. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  242. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  243. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  244. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  245. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  246. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  247. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +27 -13
  248. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +78 -45
  249. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  250. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  251. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  252. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  253. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  254. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  255. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  256. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  257. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  258. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  259. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  260. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  261. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  262. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  263. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +17 -4
  264. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +35 -23
  265. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +45 -28
  266. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +188 -111
  267. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +51 -36
  268. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +261 -131
  269. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  270. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  271. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +26 -13
  272. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +87 -42
  273. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +283 -223
  274. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1554 -733
  275. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +9 -0
  276. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +6 -3
  277. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +105 -60
  278. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +555 -234
  279. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +41 -26
  280. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +157 -86
  281. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +126 -83
  282. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +623 -262
  283. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  284. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  285. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +15 -2
  286. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +22 -14
  287. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +91 -72
  288. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +475 -255
  289. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +31 -17
  290. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +108 -61
  291. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +73 -56
  292. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +348 -185
  293. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  294. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  295. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +34 -18
  296. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -80
  297. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  298. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  299. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +28 -14
  300. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +100 -56
  301. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +21 -8
  302. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +51 -30
  303. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +20 -7
  304. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +49 -26
  305. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +19 -6
  306. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +39 -23
  307. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +35 -20
  308. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +118 -68
  309. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +31 -17
  310. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +124 -64
  311. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +26 -12
  312. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +86 -52
  313. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +37 -22
  314. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +151 -82
  315. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +50 -31
  316. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +230 -144
  317. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +53 -36
  318. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +236 -130
  319. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  320. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  321. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +9 -0
  322. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +3 -0
  323. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  324. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  325. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +23 -9
  326. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +63 -35
  327. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +30 -15
  328. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +99 -51
  329. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  330. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  331. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +19 -6
  332. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +41 -18
  333. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  334. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  335. data/src/core/ext/upb-generated/google/api/annotations.upb.c +22 -0
  336. data/src/core/ext/upb-generated/google/api/annotations.upb.h +23 -0
  337. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +154 -125
  338. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +721 -381
  339. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +158 -126
  340. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +796 -401
  341. data/src/core/ext/upb-generated/google/api/http.upb.c +43 -28
  342. data/src/core/ext/upb-generated/google/api/http.upb.h +217 -114
  343. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  344. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  345. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +18 -5
  346. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +39 -21
  347. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +373 -282
  348. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2077 -1029
  349. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +18 -5
  350. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +37 -19
  351. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +15 -2
  352. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +22 -14
  353. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +47 -31
  354. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +178 -92
  355. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +18 -5
  356. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +37 -19
  357. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +57 -36
  358. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +241 -148
  359. data/src/core/ext/upb-generated/google/rpc/status.upb.c +21 -8
  360. data/src/core/ext/upb-generated/google/rpc/status.upb.h +53 -29
  361. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  362. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  363. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +32 -18
  364. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +104 -47
  365. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +135 -107
  366. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +686 -358
  367. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +27 -12
  368. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +77 -40
  369. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +22 -8
  370. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +57 -34
  371. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +81 -61
  372. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +399 -237
  373. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +34 -19
  374. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +116 -62
  375. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  376. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  377. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +75 -13
  378. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +194 -56
  379. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -5
  380. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -17
  381. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +21 -0
  382. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +16 -0
  383. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +31 -5
  384. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +57 -19
  385. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +30 -4
  386. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +50 -17
  387. data/src/core/ext/upb-generated/validate/validate.upb.c +406 -310
  388. data/src/core/ext/upb-generated/validate/validate.upb.h +2730 -1164
  389. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  390. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  391. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  392. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  393. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  394. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  395. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +64 -17
  396. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +175 -67
  397. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  398. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  399. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +17 -4
  400. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +31 -18
  401. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +30 -16
  402. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +99 -54
  403. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +25 -11
  404. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +54 -29
  405. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  406. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  407. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +22 -9
  408. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +56 -29
  409. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +33 -19
  410. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +131 -69
  411. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +22 -9
  412. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +59 -29
  413. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +36 -21
  414. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +102 -45
  415. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  416. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  417. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  418. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  419. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  420. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  421. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +20 -7
  422. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +43 -23
  423. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  424. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  425. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  426. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  427. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +16 -61
  428. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
  429. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  430. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  431. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  432. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  433. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  434. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  435. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  436. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  437. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  438. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  439. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  440. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  441. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  442. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  443. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +10 -8
  444. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  445. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
  446. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  447. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +22 -52
  448. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  449. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +250 -281
  450. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
  451. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
  452. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  453. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +387 -426
  454. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
  455. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
  456. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  457. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +25 -23
  458. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  459. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  460. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  461. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
  462. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  463. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
  464. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  465. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +87 -133
  466. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
  467. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -116
  468. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  469. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
  470. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  471. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
  472. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  473. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  474. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  475. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
  476. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  477. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +179 -187
  478. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  479. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
  480. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  481. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +252 -254
  482. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
  483. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +14 -16
  484. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  485. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +16 -20
  486. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
  487. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
  488. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  489. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +20 -22
  490. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  491. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +15 -18
  492. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
  493. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +20 -28
  494. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  495. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +21 -33
  496. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
  497. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
  498. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  499. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
  500. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  501. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +54 -62
  502. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
  503. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -166
  504. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  505. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +21 -23
  506. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
  507. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +17 -21
  508. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  509. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  510. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  511. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +19 -35
  512. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  513. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +19 -37
  514. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
  515. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  516. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  517. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +38 -38
  518. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
  519. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +828 -914
  520. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
  521. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
  522. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  523. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  524. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  525. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  526. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  527. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  528. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  529. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +17 -21
  530. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  531. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  532. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  533. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  534. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  535. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  536. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  537. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  538. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  539. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  540. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  541. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  542. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  543. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  544. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  545. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +17 -18
  546. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  547. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +19 -29
  548. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  549. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +20 -26
  550. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  551. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  552. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  553. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +19 -20
  554. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  555. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +199 -215
  556. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
  557. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
  558. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  559. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +171 -157
  560. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
  561. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +21 -27
  562. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  563. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +219 -216
  564. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  565. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  566. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  567. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
  568. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  569. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +19 -33
  570. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
  571. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +18 -22
  572. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  573. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +22 -32
  574. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
  575. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  576. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  577. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +15 -23
  578. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
  579. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  580. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  581. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +17 -21
  582. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  583. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +17 -19
  584. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  585. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
  586. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  587. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
  588. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  589. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +17 -23
  590. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  591. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +17 -21
  592. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  593. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +16 -21
  594. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  595. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
  596. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  597. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
  598. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  599. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
  600. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  601. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  602. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  603. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
  604. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  605. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  606. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  607. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
  608. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  609. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
  610. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  611. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  612. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  613. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
  614. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  615. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  616. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  617. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
  618. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  619. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  620. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  621. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  622. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  623. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
  624. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  625. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  626. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  627. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
  628. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  629. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +5 -62
  630. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  631. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
  632. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  633. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
  634. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  635. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
  636. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  637. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
  638. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  639. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
  640. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  641. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +6 -11
  642. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  643. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  644. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  645. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  646. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  647. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +6 -15
  648. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  649. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +7 -12
  650. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  651. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +6 -6
  652. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  653. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +6 -11
  654. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  655. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +6 -11
  656. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  657. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +8 -57
  658. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  659. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  660. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  661. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  662. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  663. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  664. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  665. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +6 -17
  666. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
  667. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  668. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  669. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +7 -12
  670. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  671. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +9 -16
  672. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  673. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +6 -13
  674. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  675. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  676. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  677. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +8 -13
  678. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  679. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +8 -15
  680. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  681. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +8 -13
  682. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  683. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  684. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  685. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  686. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  687. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  688. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  689. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +7 -12
  690. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
  691. data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
  692. data/src/core/ext/xds/certificate_provider_store.cc +8 -0
  693. data/src/core/ext/xds/certificate_provider_store.h +10 -1
  694. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
  695. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  696. data/src/core/ext/xds/upb_utils.h +67 -0
  697. data/src/core/ext/xds/xds_api.cc +182 -3417
  698. data/src/core/ext/xds/xds_api.h +60 -613
  699. data/src/core/ext/xds/xds_bootstrap.cc +222 -123
  700. data/src/core/ext/xds/xds_bootstrap.h +33 -15
  701. data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
  702. data/src/core/ext/xds/xds_certificate_provider.h +10 -2
  703. data/src/core/ext/xds/xds_channel_stack_modifier.cc +16 -20
  704. data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -3
  705. data/src/core/ext/xds/xds_client.cc +805 -1084
  706. data/src/core/ext/xds/xds_client.h +118 -150
  707. data/src/core/ext/xds/xds_client_stats.cc +15 -15
  708. data/src/core/ext/xds/xds_client_stats.h +5 -4
  709. data/src/core/ext/xds/xds_cluster.cc +453 -0
  710. data/src/core/ext/xds/xds_cluster.h +108 -0
  711. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  712. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  713. data/src/core/ext/xds/xds_common_types.cc +388 -0
  714. data/src/core/ext/xds/xds_common_types.h +95 -0
  715. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  716. data/src/core/ext/xds/xds_endpoint.h +135 -0
  717. data/src/core/ext/xds/xds_http_fault_filter.cc +7 -7
  718. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  719. data/src/core/ext/xds/xds_http_filters.cc +11 -5
  720. data/src/core/ext/xds/xds_http_filters.h +4 -4
  721. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  722. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  723. data/src/core/ext/xds/xds_listener.cc +1039 -0
  724. data/src/core/ext/xds/xds_listener.h +220 -0
  725. data/src/core/ext/xds/xds_resource_type.cc +33 -0
  726. data/src/core/ext/xds/xds_resource_type.h +98 -0
  727. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  728. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  729. data/src/core/ext/xds/xds_route_config.h +218 -0
  730. data/src/core/ext/xds/xds_routing.cc +250 -0
  731. data/src/core/ext/xds/xds_routing.h +101 -0
  732. data/src/core/ext/xds/xds_server_config_fetcher.cc +1056 -286
  733. data/src/core/lib/address_utils/parse_address.cc +20 -0
  734. data/src/core/lib/address_utils/parse_address.h +5 -0
  735. data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
  736. data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
  737. data/src/core/lib/avl/avl.h +452 -88
  738. data/src/core/lib/backoff/backoff.cc +9 -38
  739. data/src/core/lib/backoff/backoff.h +11 -11
  740. data/src/core/lib/channel/call_finalization.h +86 -0
  741. data/src/core/lib/channel/call_tracer.h +4 -1
  742. data/src/core/lib/channel/channel_args.cc +166 -28
  743. data/src/core/lib/channel/channel_args.h +214 -10
  744. data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
  745. data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
  746. data/src/core/lib/channel/channel_stack.cc +10 -3
  747. data/src/core/lib/channel/channel_stack.h +39 -6
  748. data/src/core/lib/channel/channel_stack_builder.cc +23 -272
  749. data/src/core/lib/channel/channel_stack_builder.h +118 -149
  750. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  751. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  752. data/src/core/lib/channel/channel_trace.cc +3 -6
  753. data/src/core/lib/channel/channelz.cc +2 -1
  754. data/src/core/lib/channel/connected_channel.cc +9 -4
  755. data/src/core/lib/channel/connected_channel.h +2 -1
  756. data/src/core/lib/channel/context.h +11 -0
  757. data/src/core/lib/channel/handshaker.cc +1 -1
  758. data/src/core/lib/channel/handshaker.h +1 -1
  759. data/src/core/lib/channel/promise_based_filter.cc +1002 -0
  760. data/src/core/lib/channel/promise_based_filter.h +437 -0
  761. data/src/core/lib/compression/compression.cc +20 -112
  762. data/src/core/lib/compression/compression_internal.cc +137 -203
  763. data/src/core/lib/compression/compression_internal.h +64 -69
  764. data/src/core/lib/compression/message_compress.cc +11 -11
  765. data/src/core/lib/compression/message_compress.h +2 -2
  766. data/src/core/lib/config/core_configuration.cc +11 -3
  767. data/src/core/lib/config/core_configuration.h +50 -0
  768. data/src/core/lib/debug/stats_data.cc +2 -6
  769. data/src/core/lib/debug/stats_data.h +18 -21
  770. data/src/core/lib/debug/trace.h +2 -2
  771. data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
  772. data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
  773. data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
  774. data/src/core/lib/event_engine/event_engine.cc +21 -19
  775. data/src/core/lib/event_engine/event_engine_factory.h +36 -0
  776. data/src/core/lib/event_engine/memory_allocator.cc +66 -0
  777. data/src/core/lib/event_engine/resolved_address.cc +39 -0
  778. data/src/core/lib/gpr/sync_posix.cc +1 -0
  779. data/src/core/lib/gpr/time.cc +2 -1
  780. data/src/core/lib/gpr/tls.h +7 -0
  781. data/src/core/lib/gpr/useful.h +18 -0
  782. data/src/core/lib/gprpp/bitset.h +19 -0
  783. data/src/core/lib/gprpp/capture.h +76 -0
  784. data/src/core/lib/gprpp/chunked_vector.h +45 -3
  785. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  786. data/src/core/lib/gprpp/debug_location.h +2 -0
  787. data/src/core/lib/gprpp/global_config_env.cc +7 -7
  788. data/src/core/lib/gprpp/global_config_env.h +2 -2
  789. data/src/core/lib/gprpp/manual_constructor.h +2 -3
  790. data/src/core/lib/gprpp/orphanable.h +1 -1
  791. data/src/core/lib/gprpp/ref_counted.h +3 -1
  792. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
  793. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  794. data/src/core/lib/gprpp/status_helper.cc +48 -40
  795. data/src/core/lib/gprpp/status_helper.h +6 -19
  796. data/src/core/lib/gprpp/table.h +24 -1
  797. data/src/core/lib/gprpp/time.cc +198 -0
  798. data/src/core/lib/gprpp/time.h +292 -0
  799. data/src/core/lib/http/format_request.cc +28 -25
  800. data/src/core/lib/http/format_request.h +7 -6
  801. data/src/core/lib/http/httpcli.cc +310 -238
  802. data/src/core/lib/http/httpcli.h +183 -88
  803. data/src/core/lib/http/httpcli_security_connector.cc +64 -75
  804. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  805. data/src/core/lib/http/parser.cc +80 -9
  806. data/src/core/lib/http/parser.h +15 -2
  807. data/src/core/lib/iomgr/buffer_list.cc +9 -9
  808. data/src/core/lib/iomgr/buffer_list.h +18 -18
  809. data/src/core/lib/iomgr/call_combiner.cc +17 -7
  810. data/src/core/lib/iomgr/closure.h +29 -9
  811. data/src/core/lib/iomgr/combiner.cc +25 -3
  812. data/src/core/lib/iomgr/endpoint.h +0 -1
  813. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
  814. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  815. data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
  816. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
  817. data/src/core/lib/iomgr/error.cc +13 -10
  818. data/src/core/lib/iomgr/error.h +0 -2
  819. data/src/core/lib/iomgr/ev_apple.cc +6 -5
  820. data/src/core/lib/iomgr/ev_epoll1_linux.cc +8 -7
  821. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -7
  822. data/src/core/lib/iomgr/ev_posix.cc +9 -10
  823. data/src/core/lib/iomgr/ev_posix.h +1 -1
  824. data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
  825. data/src/core/lib/iomgr/event_engine/iomgr.cc +8 -27
  826. data/src/core/lib/iomgr/event_engine/pollset.cc +2 -3
  827. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
  828. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
  829. data/src/core/lib/iomgr/event_engine/resolver.cc +68 -49
  830. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  831. data/src/core/lib/iomgr/event_engine/tcp.cc +11 -8
  832. data/src/core/lib/iomgr/event_engine/timer.cc +7 -7
  833. data/src/core/lib/iomgr/exec_ctx.cc +25 -97
  834. data/src/core/lib/iomgr/exec_ctx.h +18 -34
  835. data/src/core/lib/iomgr/executor.cc +22 -16
  836. data/src/core/lib/iomgr/executor.h +1 -1
  837. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  838. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  839. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  840. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  841. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  842. data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
  843. data/src/core/lib/iomgr/polling_entity.h +6 -0
  844. data/src/core/lib/iomgr/pollset.cc +1 -1
  845. data/src/core/lib/iomgr/pollset.h +4 -4
  846. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  847. data/src/core/lib/iomgr/port.h +6 -11
  848. data/src/core/lib/iomgr/resolve_address.cc +5 -24
  849. data/src/core/lib/iomgr/resolve_address.h +47 -44
  850. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  851. data/src/core/lib/iomgr/resolve_address_posix.cc +83 -67
  852. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  853. data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
  854. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  855. data/src/core/lib/iomgr/resolved_address.h +39 -0
  856. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  857. data/src/core/lib/iomgr/socket_utils_common_posix.cc +0 -17
  858. data/src/core/lib/iomgr/tcp_client.cc +3 -5
  859. data/src/core/lib/iomgr/tcp_client.h +4 -5
  860. data/src/core/lib/iomgr/tcp_client_cfstream.cc +2 -10
  861. data/src/core/lib/iomgr/tcp_client_posix.cc +10 -26
  862. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  863. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -11
  864. data/src/core/lib/iomgr/tcp_posix.cc +120 -66
  865. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  866. data/src/core/lib/iomgr/tcp_server.cc +4 -6
  867. data/src/core/lib/iomgr/tcp_server.h +6 -8
  868. data/src/core/lib/iomgr/tcp_server_posix.cc +43 -38
  869. data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
  870. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
  871. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
  872. data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
  873. data/src/core/lib/iomgr/tcp_windows.cc +19 -17
  874. data/src/core/lib/iomgr/tcp_windows.h +1 -2
  875. data/src/core/lib/iomgr/timer.cc +2 -2
  876. data/src/core/lib/iomgr/timer.h +11 -6
  877. data/src/core/lib/iomgr/timer_generic.cc +96 -77
  878. data/src/core/lib/iomgr/timer_manager.cc +15 -14
  879. data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
  880. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
  881. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
  882. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  883. data/src/core/lib/iomgr/work_serializer.h +16 -4
  884. data/src/core/lib/json/json_reader.cc +83 -35
  885. data/src/core/lib/json/json_util.cc +5 -5
  886. data/src/core/lib/json/json_util.h +5 -5
  887. data/src/core/lib/matchers/matchers.cc +1 -1
  888. data/src/core/lib/promise/activity.cc +121 -0
  889. data/src/core/lib/promise/activity.h +540 -0
  890. data/src/core/lib/promise/arena_promise.h +188 -0
  891. data/src/core/lib/promise/call_push_pull.h +144 -0
  892. data/src/core/lib/promise/context.h +86 -0
  893. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  894. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  895. data/src/core/lib/promise/detail/promise_like.h +85 -0
  896. data/src/core/lib/promise/detail/status.h +50 -0
  897. data/src/core/lib/promise/detail/switch.h +1455 -0
  898. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  899. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  900. data/src/core/lib/promise/latch.h +104 -0
  901. data/src/core/lib/promise/loop.h +134 -0
  902. data/src/core/lib/promise/map.h +88 -0
  903. data/src/core/lib/promise/poll.h +66 -0
  904. data/src/core/lib/promise/promise.h +95 -0
  905. data/src/core/lib/promise/race.h +84 -0
  906. data/src/core/lib/promise/seq.h +89 -0
  907. data/src/core/lib/promise/sleep.cc +74 -0
  908. data/src/core/lib/promise/sleep.h +66 -0
  909. data/src/core/lib/promise/try_seq.h +157 -0
  910. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
  911. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
  912. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -31
  913. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  914. data/src/core/lib/resolver/resolver_registry.h +113 -0
  915. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
  916. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
  917. data/src/core/lib/resource_quota/api.cc +83 -0
  918. data/src/core/lib/resource_quota/api.h +40 -0
  919. data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
  920. data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
  921. data/src/core/lib/resource_quota/memory_quota.cc +478 -0
  922. data/src/core/lib/resource_quota/memory_quota.h +457 -0
  923. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  924. data/src/core/lib/resource_quota/resource_quota.h +66 -0
  925. data/src/core/lib/resource_quota/thread_quota.cc +43 -0
  926. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  927. data/src/core/lib/resource_quota/trace.cc +19 -0
  928. data/src/core/{ext/filters/max_age/max_age_filter.h → lib/resource_quota/trace.h} +6 -8
  929. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  930. data/src/core/lib/security/authorization/evaluate_args.cc +37 -38
  931. data/src/core/lib/security/authorization/evaluate_args.h +3 -2
  932. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  933. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  934. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
  935. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  936. data/src/core/lib/security/authorization/matchers.cc +227 -0
  937. data/src/core/lib/security/authorization/matchers.h +211 -0
  938. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  939. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  940. data/src/core/lib/security/context/security_context.cc +4 -2
  941. data/src/core/lib/security/context/security_context.h +9 -2
  942. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  943. data/src/core/lib/security/credentials/alts/alts_credentials.h +10 -0
  944. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  945. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  946. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  947. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  948. data/src/core/lib/security/credentials/composite/composite_credentials.cc +24 -83
  949. data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
  950. data/src/core/lib/security/credentials/credentials.cc +2 -3
  951. data/src/core/lib/security/credentials/credentials.h +74 -80
  952. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +48 -33
  953. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  954. data/src/core/lib/security/credentials/external/external_account_credentials.cc +52 -35
  955. data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -9
  956. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
  957. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +33 -14
  958. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
  959. data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -27
  960. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  961. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +21 -16
  962. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
  963. data/src/core/lib/security/credentials/iam/iam_credentials.cc +21 -28
  964. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  965. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +25 -26
  966. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  967. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
  968. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +33 -45
  969. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -12
  970. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +54 -43
  971. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  972. data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
  973. data/src/core/lib/security/credentials/local/local_credentials.h +10 -0
  974. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +157 -174
  975. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +60 -33
  976. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +96 -152
  977. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  978. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +7 -14
  979. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -3
  980. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
  981. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +56 -8
  982. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
  983. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
  984. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +33 -87
  985. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +73 -149
  986. data/src/core/lib/security/credentials/tls/tls_credentials.cc +30 -16
  987. data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
  988. data/src/core/lib/security/credentials/xds/xds_credentials.cc +51 -58
  989. data/src/core/lib/security/credentials/xds/xds_credentials.h +37 -6
  990. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +11 -17
  991. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  992. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -16
  993. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  994. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -18
  995. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +11 -16
  996. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
  997. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -19
  998. data/src/core/lib/security/security_connector/security_connector.cc +3 -15
  999. data/src/core/lib/security/security_connector/security_connector.h +25 -21
  1000. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +10 -13
  1001. data/src/core/lib/security/security_connector/ssl_utils.cc +38 -32
  1002. data/src/core/lib/security/security_connector/ssl_utils.h +14 -18
  1003. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +365 -206
  1004. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +70 -47
  1005. data/src/core/lib/security/transport/auth_filters.h +38 -5
  1006. data/src/core/lib/security/transport/client_auth_filter.cc +97 -360
  1007. data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
  1008. data/src/core/lib/security/transport/secure_endpoint.h +1 -1
  1009. data/src/core/lib/security/transport/security_handshaker.cc +22 -12
  1010. data/src/core/lib/security/transport/server_auth_filter.cc +41 -35
  1011. data/src/core/lib/service_config/service_config.h +82 -0
  1012. data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
  1013. data/src/core/{ext/service_config/service_config.cc → lib/service_config/service_config_impl.cc} +20 -17
  1014. data/src/core/{ext/service_config/service_config.h → lib/service_config/service_config_impl.h} +16 -18
  1015. data/src/core/{ext → lib}/service_config/service_config_parser.cc +31 -27
  1016. data/src/core/{ext → lib}/service_config/service_config_parser.h +39 -30
  1017. data/src/core/lib/slice/percent_encoding.cc +30 -86
  1018. data/src/core/lib/slice/percent_encoding.h +5 -11
  1019. data/src/core/lib/slice/slice.cc +78 -181
  1020. data/src/core/lib/slice/slice.h +384 -0
  1021. data/src/core/lib/slice/slice_buffer.cc +4 -0
  1022. data/src/core/lib/slice/slice_internal.h +12 -31
  1023. data/src/core/lib/slice/slice_refcount.cc +18 -0
  1024. data/src/core/lib/slice/slice_refcount.h +8 -83
  1025. data/src/core/lib/slice/slice_refcount_base.h +21 -133
  1026. data/src/core/lib/surface/builtins.cc +6 -6
  1027. data/src/core/lib/surface/call.cc +1132 -1221
  1028. data/src/core/lib/surface/call.h +5 -19
  1029. data/src/core/lib/surface/channel.cc +68 -99
  1030. data/src/core/lib/surface/channel.h +12 -23
  1031. data/src/core/lib/surface/channel_init.cc +2 -3
  1032. data/src/core/lib/surface/channel_init.h +3 -7
  1033. data/src/core/lib/surface/completion_queue.cc +12 -11
  1034. data/src/core/lib/surface/init.cc +78 -10
  1035. data/src/core/lib/surface/init.h +0 -2
  1036. data/src/core/lib/surface/lame_client.cc +26 -19
  1037. data/src/core/lib/surface/server.cc +46 -85
  1038. data/src/core/lib/surface/server.h +14 -16
  1039. data/src/core/lib/surface/validate_metadata.cc +2 -2
  1040. data/src/core/lib/surface/version.cc +2 -2
  1041. data/src/core/lib/transport/bdp_estimator.cc +10 -11
  1042. data/src/core/lib/transport/bdp_estimator.h +2 -2
  1043. data/src/core/lib/transport/byte_stream.cc +6 -0
  1044. data/src/core/lib/transport/error_utils.cc +5 -3
  1045. data/src/core/lib/transport/error_utils.h +2 -1
  1046. data/src/core/lib/transport/metadata_batch.h +1131 -792
  1047. data/src/core/lib/transport/parsed_metadata.cc +37 -0
  1048. data/src/core/lib/transport/parsed_metadata.h +228 -90
  1049. data/src/core/lib/transport/pid_controller.cc +4 -4
  1050. data/src/core/lib/transport/status_conversion.cc +2 -2
  1051. data/src/core/lib/transport/status_conversion.h +1 -1
  1052. data/src/core/lib/transport/timeout_encoding.cc +204 -67
  1053. data/src/core/lib/transport/timeout_encoding.h +40 -10
  1054. data/src/core/lib/transport/transport.cc +7 -27
  1055. data/src/core/lib/transport/transport.h +103 -4
  1056. data/src/core/lib/transport/transport_impl.h +14 -0
  1057. data/src/core/lib/transport/transport_op_string.cc +5 -47
  1058. data/src/core/lib/uri/uri_parser.cc +237 -63
  1059. data/src/core/lib/uri/uri_parser.h +39 -23
  1060. data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -92
  1061. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1062. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +28 -23
  1063. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1064. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +21 -13
  1065. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1066. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1067. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1068. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1069. data/src/core/tsi/local_transport_security.cc +16 -24
  1070. data/src/core/tsi/local_transport_security.h +1 -4
  1071. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1072. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1073. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  1074. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
  1075. data/src/core/tsi/ssl_transport_security.cc +210 -53
  1076. data/src/core/tsi/ssl_transport_security.h +47 -8
  1077. data/src/core/tsi/transport_security_interface.h +2 -0
  1078. data/src/ruby/ext/grpc/extconf.rb +10 -3
  1079. data/src/ruby/ext/grpc/rb_channel.c +5 -2
  1080. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +26 -34
  1081. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +39 -51
  1082. data/src/ruby/ext/grpc/rb_server.c +7 -4
  1083. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1084. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1085. data/src/ruby/lib/grpc/version.rb +1 -1
  1086. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1087. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  1088. data/src/ruby/pb/test/client.rb +769 -0
  1089. data/src/ruby/pb/test/server.rb +252 -0
  1090. data/src/ruby/pb/test/xds_client.rb +415 -0
  1091. data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
  1092. data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
  1093. data/third_party/abseil-cpp/absl/base/config.h +67 -37
  1094. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
  1095. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1096. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
  1097. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
  1098. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
  1099. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
  1100. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
  1101. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  1102. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1103. data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
  1104. data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
  1105. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  1106. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
  1107. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
  1108. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
  1109. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  1110. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
  1111. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
  1112. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
  1113. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  1114. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  1115. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
  1116. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1117. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1118. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  1119. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
  1120. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  1121. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1122. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  1123. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
  1124. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1125. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  1126. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  1127. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
  1128. data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
  1129. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
  1130. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
  1131. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  1132. data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
  1133. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
  1134. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  1135. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1136. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1137. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
  1138. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
  1139. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1140. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1141. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1142. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1143. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1144. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1145. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1146. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1147. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1148. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1149. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1150. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1151. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1152. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1153. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1154. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1155. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1156. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1157. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1158. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1159. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1160. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1161. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1162. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1163. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1164. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1165. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1166. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1167. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1168. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1169. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1170. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1171. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1172. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1173. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1174. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1175. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1176. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1177. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1178. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1179. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1180. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1181. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1182. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1183. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1184. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1185. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
  1186. data/third_party/abseil-cpp/absl/status/status.cc +9 -17
  1187. data/third_party/abseil-cpp/absl/status/status.h +19 -15
  1188. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  1189. data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
  1190. data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
  1191. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1192. data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
  1193. data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
  1194. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
  1195. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
  1196. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
  1197. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1198. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1199. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1200. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1201. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1202. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1203. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1204. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1205. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
  1206. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
  1207. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
  1208. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
  1209. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1210. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1211. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1212. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1213. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1214. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1215. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1216. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1217. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1218. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1219. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
  1220. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
  1221. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
  1222. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1223. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  1224. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
  1225. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
  1226. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
  1227. data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
  1228. data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
  1229. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1230. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  1231. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1232. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  1233. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  1234. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  1235. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1236. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1237. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
  1238. data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
  1239. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  1240. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  1241. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1242. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1243. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  1244. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1245. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
  1246. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  1247. data/third_party/abseil-cpp/absl/time/time.h +67 -36
  1248. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1249. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1250. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  1251. data/third_party/boringssl-with-bazel/err_data.c +681 -677
  1252. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
  1253. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
  1254. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
  1255. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
  1256. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1257. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1258. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
  1259. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
  1260. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  1261. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
  1262. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  1263. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
  1264. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1265. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  1266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  1267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  1268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
  1269. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  1270. data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
  1271. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  1272. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1273. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1274. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  1275. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1276. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
  1277. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  1278. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
  1279. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
  1280. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
  1281. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  1282. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1283. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
  1284. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1285. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
  1286. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
  1287. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
  1288. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
  1289. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
  1290. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
  1291. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
  1292. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1293. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  1294. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
  1295. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1296. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1297. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
  1298. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
  1299. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  1300. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -13
  1301. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  1302. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1303. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
  1304. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +29 -11
  1305. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
  1306. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
  1307. data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
  1308. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  1309. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
  1310. data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
  1311. data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
  1312. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1313. data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
  1314. data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
  1315. data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
  1316. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1317. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1318. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1319. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1320. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1321. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1322. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1323. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1324. data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
  1325. data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
  1326. data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
  1327. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1328. data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
  1329. data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
  1330. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1331. data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
  1332. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  1333. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1334. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1335. data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
  1336. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  1337. data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
  1338. data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
  1339. data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
  1340. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  1341. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  1342. data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
  1343. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  1344. data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
  1345. data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
  1346. data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
  1347. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1348. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1349. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1350. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1351. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1352. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1353. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1354. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1355. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1356. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1357. data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
  1358. data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
  1359. data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
  1360. data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
  1361. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1362. data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
  1363. data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
  1364. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1365. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1366. data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
  1367. data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
  1368. data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
  1369. data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
  1370. data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
  1371. data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
  1372. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1373. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1374. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1375. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1376. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1377. data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
  1378. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1379. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1380. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1381. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1382. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1383. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1384. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1385. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1386. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1387. data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
  1388. data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
  1389. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1390. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  1391. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1392. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1393. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  1394. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  1395. data/third_party/upb/upb/decode.c +732 -378
  1396. data/third_party/upb/upb/decode.h +43 -17
  1397. data/third_party/upb/upb/decode_fast.c +303 -301
  1398. data/third_party/upb/upb/decode_fast.h +18 -18
  1399. data/third_party/upb/upb/decode_internal.h +73 -55
  1400. data/third_party/upb/upb/def.c +2074 -981
  1401. data/third_party/upb/upb/def.h +332 -260
  1402. data/third_party/upb/upb/def.hpp +139 -169
  1403. data/third_party/upb/upb/encode.c +267 -174
  1404. data/third_party/upb/upb/encode.h +15 -17
  1405. data/third_party/upb/upb/json_encode.c +776 -0
  1406. data/third_party/upb/upb/json_encode.h +62 -0
  1407. data/third_party/upb/upb/msg.c +152 -121
  1408. data/third_party/upb/upb/msg.h +39 -33
  1409. data/third_party/upb/upb/msg_internal.h +395 -251
  1410. data/third_party/upb/upb/port_def.inc +8 -0
  1411. data/third_party/upb/upb/port_undef.inc +1 -0
  1412. data/third_party/upb/upb/reflection.c +292 -212
  1413. data/third_party/upb/upb/reflection.h +91 -67
  1414. data/third_party/upb/upb/reflection.hpp +6 -6
  1415. data/third_party/upb/upb/table.c +231 -147
  1416. data/third_party/upb/upb/table_internal.h +129 -95
  1417. data/third_party/upb/upb/text_encode.c +114 -91
  1418. data/third_party/upb/upb/text_encode.h +10 -10
  1419. data/third_party/upb/upb/upb.c +118 -71
  1420. data/third_party/upb/upb/upb.h +157 -151
  1421. data/third_party/upb/upb/upb.hpp +31 -28
  1422. data/third_party/upb/upb/upb_internal.h +21 -11
  1423. data/third_party/xxhash/xxhash.h +607 -352
  1424. data/third_party/zlib/crc32.c +966 -292
  1425. data/third_party/zlib/crc32.h +9441 -436
  1426. data/third_party/zlib/deflate.c +78 -30
  1427. data/third_party/zlib/deflate.h +12 -15
  1428. data/third_party/zlib/gzguts.h +3 -2
  1429. data/third_party/zlib/gzlib.c +5 -3
  1430. data/third_party/zlib/gzread.c +5 -7
  1431. data/third_party/zlib/gzwrite.c +25 -13
  1432. data/third_party/zlib/infback.c +2 -1
  1433. data/third_party/zlib/inffast.c +14 -14
  1434. data/third_party/zlib/inflate.c +39 -8
  1435. data/third_party/zlib/inflate.h +3 -2
  1436. data/third_party/zlib/inftrees.c +3 -3
  1437. data/third_party/zlib/trees.c +27 -48
  1438. data/third_party/zlib/zlib.h +123 -100
  1439. data/third_party/zlib/zutil.c +2 -2
  1440. data/third_party/zlib/zutil.h +12 -9
  1441. metadata +505 -221
  1442. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  1443. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
  1444. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -195
  1445. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  1446. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
  1447. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
  1448. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -119
  1449. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -95
  1450. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -189
  1451. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -53
  1452. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -83
  1453. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
  1454. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  1455. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  1456. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  1457. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  1458. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
  1459. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -62
  1460. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -27
  1461. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -62
  1462. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
  1463. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -62
  1464. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
  1465. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -62
  1466. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
  1467. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -62
  1468. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
  1469. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  1470. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -73
  1471. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  1472. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -72
  1473. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  1474. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -80
  1475. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  1476. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
  1477. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  1478. data/src/core/lib/avl/avl.cc +0 -306
  1479. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  1480. data/src/core/lib/compression/compression_args.cc +0 -138
  1481. data/src/core/lib/compression/compression_args.h +0 -56
  1482. data/src/core/lib/compression/stream_compression.cc +0 -81
  1483. data/src/core/lib/compression/stream_compression.h +0 -117
  1484. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  1485. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  1486. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  1487. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  1488. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
  1489. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  1490. data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
  1491. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  1492. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  1493. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  1494. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  1495. data/src/core/lib/iomgr/pollset_custom.cc +0 -105
  1496. data/src/core/lib/iomgr/pollset_custom.h +0 -37
  1497. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
  1498. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  1499. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
  1500. data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
  1501. data/src/core/lib/iomgr/resource_quota.cc +0 -1106
  1502. data/src/core/lib/iomgr/resource_quota.h +0 -226
  1503. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  1504. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -152
  1505. data/src/core/lib/iomgr/tcp_custom.cc +0 -377
  1506. data/src/core/lib/iomgr/tcp_custom.h +0 -86
  1507. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -467
  1508. data/src/core/lib/iomgr/timer_custom.cc +0 -96
  1509. data/src/core/lib/iomgr/timer_custom.h +0 -43
  1510. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -171
  1511. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
  1512. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  1513. data/src/core/lib/slice/slice_intern.cc +0 -367
  1514. data/src/core/lib/slice/slice_utils.h +0 -200
  1515. data/src/core/lib/slice/static_slice.cc +0 -529
  1516. data/src/core/lib/slice/static_slice.h +0 -331
  1517. data/src/core/lib/surface/init_secure.cc +0 -103
  1518. data/src/core/lib/transport/metadata.cc +0 -714
  1519. data/src/core/lib/transport/metadata.h +0 -449
  1520. data/src/core/lib/transport/metadata_batch.cc +0 -94
  1521. data/src/core/lib/transport/static_metadata.cc +0 -1117
  1522. data/src/core/lib/transport/static_metadata.h +0 -340
  1523. data/src/core/lib/transport/status_metadata.cc +0 -63
  1524. data/src/core/lib/transport/status_metadata.h +0 -48
  1525. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  1526. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  1527. data/third_party/cares/cares/ares_getopt.c +0 -122
  1528. data/third_party/cares/cares/ares_getopt.h +0 -53
  1529. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  1530. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  1531. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
@@ -13,11 +13,11 @@
13
13
  * names of its contributors may be used to endorse or promote products
14
14
  * derived from this software without specific prior written permission.
15
15
  *
16
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
- * DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
20
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
16
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
20
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
21
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
22
  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
23
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
@@ -39,25 +39,25 @@
39
39
 
40
40
  /* Maps descriptor type -> elem_size_lg2. */
41
41
  static const uint8_t desctype_to_elem_size_lg2[] = {
42
- -1, /* invalid descriptor type */
43
- 3, /* DOUBLE */
44
- 2, /* FLOAT */
45
- 3, /* INT64 */
46
- 3, /* UINT64 */
47
- 2, /* INT32 */
48
- 3, /* FIXED64 */
49
- 2, /* FIXED32 */
50
- 0, /* BOOL */
51
- UPB_SIZE(3, 4), /* STRING */
52
- UPB_SIZE(2, 3), /* GROUP */
53
- UPB_SIZE(2, 3), /* MESSAGE */
54
- UPB_SIZE(3, 4), /* BYTES */
55
- 2, /* UINT32 */
56
- 2, /* ENUM */
57
- 2, /* SFIXED32 */
58
- 3, /* SFIXED64 */
59
- 2, /* SINT32 */
60
- 3, /* SINT64 */
42
+ -1, /* invalid descriptor type */
43
+ 3, /* DOUBLE */
44
+ 2, /* FLOAT */
45
+ 3, /* INT64 */
46
+ 3, /* UINT64 */
47
+ 2, /* INT32 */
48
+ 3, /* FIXED64 */
49
+ 2, /* FIXED32 */
50
+ 0, /* BOOL */
51
+ UPB_SIZE(3, 4), /* STRING */
52
+ UPB_SIZE(2, 3), /* GROUP */
53
+ UPB_SIZE(2, 3), /* MESSAGE */
54
+ UPB_SIZE(3, 4), /* BYTES */
55
+ 2, /* UINT32 */
56
+ 2, /* ENUM */
57
+ 2, /* SFIXED32 */
58
+ 3, /* SFIXED64 */
59
+ 2, /* SINT32 */
60
+ 3, /* SINT64 */
61
61
  };
62
62
 
63
63
  /* Maps descriptor type -> upb map size. */
@@ -72,8 +72,8 @@ static const uint8_t desctype_to_mapsize[] = {
72
72
  4, /* FIXED32 */
73
73
  1, /* BOOL */
74
74
  UPB_MAPTYPE_STRING, /* STRING */
75
- sizeof(void *), /* GROUP */
76
- sizeof(void *), /* MESSAGE */
75
+ sizeof(void*), /* GROUP */
76
+ sizeof(void*), /* MESSAGE */
77
77
  UPB_MAPTYPE_STRING, /* BYTES */
78
78
  4, /* UINT32 */
79
79
  4, /* ENUM */
@@ -83,66 +83,80 @@ static const uint8_t desctype_to_mapsize[] = {
83
83
  8, /* SINT64 */
84
84
  };
85
85
 
86
- static const unsigned fixed32_ok = (1 << UPB_DTYPE_FLOAT) |
87
- (1 << UPB_DTYPE_FIXED32) |
88
- (1 << UPB_DTYPE_SFIXED32);
86
+ static const unsigned FIXED32_OK_MASK = (1 << kUpb_FieldType_Float) |
87
+ (1 << kUpb_FieldType_Fixed32) |
88
+ (1 << kUpb_FieldType_SFixed32);
89
89
 
90
- static const unsigned fixed64_ok = (1 << UPB_DTYPE_DOUBLE) |
91
- (1 << UPB_DTYPE_FIXED64) |
92
- (1 << UPB_DTYPE_SFIXED64);
90
+ static const unsigned FIXED64_OK_MASK = (1 << kUpb_FieldType_Double) |
91
+ (1 << kUpb_FieldType_Fixed64) |
92
+ (1 << kUpb_FieldType_SFixed64);
93
+
94
+ /* Three fake field types for MessageSet. */
95
+ #define TYPE_MSGSET_ITEM 19
96
+ #define TYPE_MSGSET_TYPE_ID 20
97
+ #define TYPE_COUNT 20
93
98
 
94
99
  /* Op: an action to be performed for a wire-type/field-type combination. */
95
- #define OP_SCALAR_LG2(n) (n) /* n in [0, 2, 3] => op in [0, 2, 3] */
100
+ #define OP_UNKNOWN -1 /* Unknown field. */
101
+ #define OP_MSGSET_ITEM -2
102
+ #define OP_MSGSET_TYPEID -3
103
+ #define OP_SCALAR_LG2(n) (n) /* n in [0, 2, 3] => op in [0, 2, 3] */
104
+ #define OP_ENUM 1
96
105
  #define OP_STRING 4
97
106
  #define OP_BYTES 5
98
107
  #define OP_SUBMSG 6
99
- /* Ops above are scalar-only. Repeated fields can use any op. */
100
- #define OP_FIXPCK_LG2(n) (n + 5) /* n in [2, 3] => op in [7, 8] */
101
- #define OP_VARPCK_LG2(n) (n + 9) /* n in [0, 2, 3] => op in [9, 11, 12] */
102
-
103
- static const int8_t varint_ops[19] = {
104
- -1, /* field not found */
105
- -1, /* DOUBLE */
106
- -1, /* FLOAT */
108
+ /* Scalar fields use only ops above. Repeated fields can use any op. */
109
+ #define OP_FIXPCK_LG2(n) (n + 5) /* n in [2, 3] => op in [7, 8] */
110
+ #define OP_VARPCK_LG2(n) (n + 9) /* n in [0, 2, 3] => op in [9, 11, 12] */
111
+ #define OP_PACKED_ENUM 13
112
+
113
+ static const int8_t varint_ops[] = {
114
+ OP_UNKNOWN, /* field not found */
115
+ OP_UNKNOWN, /* DOUBLE */
116
+ OP_UNKNOWN, /* FLOAT */
107
117
  OP_SCALAR_LG2(3), /* INT64 */
108
118
  OP_SCALAR_LG2(3), /* UINT64 */
109
119
  OP_SCALAR_LG2(2), /* INT32 */
110
- -1, /* FIXED64 */
111
- -1, /* FIXED32 */
120
+ OP_UNKNOWN, /* FIXED64 */
121
+ OP_UNKNOWN, /* FIXED32 */
112
122
  OP_SCALAR_LG2(0), /* BOOL */
113
- -1, /* STRING */
114
- -1, /* GROUP */
115
- -1, /* MESSAGE */
116
- -1, /* BYTES */
123
+ OP_UNKNOWN, /* STRING */
124
+ OP_UNKNOWN, /* GROUP */
125
+ OP_UNKNOWN, /* MESSAGE */
126
+ OP_UNKNOWN, /* BYTES */
117
127
  OP_SCALAR_LG2(2), /* UINT32 */
118
- OP_SCALAR_LG2(2), /* ENUM */
119
- -1, /* SFIXED32 */
120
- -1, /* SFIXED64 */
128
+ OP_ENUM, /* ENUM */
129
+ OP_UNKNOWN, /* SFIXED32 */
130
+ OP_UNKNOWN, /* SFIXED64 */
121
131
  OP_SCALAR_LG2(2), /* SINT32 */
122
132
  OP_SCALAR_LG2(3), /* SINT64 */
133
+ OP_UNKNOWN, /* MSGSET_ITEM */
134
+ OP_MSGSET_TYPEID, /* MSGSET TYPEID */
123
135
  };
124
136
 
125
- static const int8_t delim_ops[37] = {
137
+ static const int8_t delim_ops[] = {
126
138
  /* For non-repeated field type. */
127
- -1, /* field not found */
128
- -1, /* DOUBLE */
129
- -1, /* FLOAT */
130
- -1, /* INT64 */
131
- -1, /* UINT64 */
132
- -1, /* INT32 */
133
- -1, /* FIXED64 */
134
- -1, /* FIXED32 */
135
- -1, /* BOOL */
136
- OP_STRING, /* STRING */
137
- -1, /* GROUP */
138
- OP_SUBMSG, /* MESSAGE */
139
- OP_BYTES, /* BYTES */
140
- -1, /* UINT32 */
141
- -1, /* ENUM */
142
- -1, /* SFIXED32 */
143
- -1, /* SFIXED64 */
144
- -1, /* SINT32 */
145
- -1, /* SINT64 */
139
+ OP_UNKNOWN, /* field not found */
140
+ OP_UNKNOWN, /* DOUBLE */
141
+ OP_UNKNOWN, /* FLOAT */
142
+ OP_UNKNOWN, /* INT64 */
143
+ OP_UNKNOWN, /* UINT64 */
144
+ OP_UNKNOWN, /* INT32 */
145
+ OP_UNKNOWN, /* FIXED64 */
146
+ OP_UNKNOWN, /* FIXED32 */
147
+ OP_UNKNOWN, /* BOOL */
148
+ OP_STRING, /* STRING */
149
+ OP_UNKNOWN, /* GROUP */
150
+ OP_SUBMSG, /* MESSAGE */
151
+ OP_BYTES, /* BYTES */
152
+ OP_UNKNOWN, /* UINT32 */
153
+ OP_UNKNOWN, /* ENUM */
154
+ OP_UNKNOWN, /* SFIXED32 */
155
+ OP_UNKNOWN, /* SFIXED64 */
156
+ OP_UNKNOWN, /* SINT32 */
157
+ OP_UNKNOWN, /* SINT64 */
158
+ OP_UNKNOWN, /* MSGSET_ITEM */
159
+ OP_UNKNOWN, /* MSGSET TYPEID */
146
160
  /* For repeated field type. */
147
161
  OP_FIXPCK_LG2(3), /* REPEATED DOUBLE */
148
162
  OP_FIXPCK_LG2(2), /* REPEATED FLOAT */
@@ -157,11 +171,12 @@ static const int8_t delim_ops[37] = {
157
171
  OP_SUBMSG, /* REPEATED MESSAGE */
158
172
  OP_BYTES, /* REPEATED BYTES */
159
173
  OP_VARPCK_LG2(2), /* REPEATED UINT32 */
160
- OP_VARPCK_LG2(2), /* REPEATED ENUM */
174
+ OP_PACKED_ENUM, /* REPEATED ENUM */
161
175
  OP_FIXPCK_LG2(2), /* REPEATED SFIXED32 */
162
176
  OP_FIXPCK_LG2(3), /* REPEATED SFIXED64 */
163
177
  OP_VARPCK_LG2(2), /* REPEATED SINT32 */
164
178
  OP_VARPCK_LG2(3), /* REPEATED SINT64 */
179
+ /* Omitting MSGSET_*, because we never emit a repeated msgset type */
165
180
  };
166
181
 
167
182
  typedef union {
@@ -171,61 +186,39 @@ typedef union {
171
186
  uint32_t size;
172
187
  } wireval;
173
188
 
174
- static const char *decode_msg(upb_decstate *d, const char *ptr, upb_msg *msg,
175
- const upb_msglayout *layout);
176
-
177
- UPB_NORETURN static void decode_err(upb_decstate *d) { UPB_LONGJMP(d->err, 1); }
189
+ static const char* decode_msg(upb_Decoder* d, const char* ptr, upb_Message* msg,
190
+ const upb_MiniTable* layout);
178
191
 
179
- // We don't want to mark this NORETURN, see comment in .h.
180
- // Unfortunately this code to suppress the warning doesn't appear to be working.
181
- #ifdef __clang__
182
- #pragma clang diagnostic push
183
- #pragma clang diagnostic ignored "-Wunknown-warning-option"
184
- #pragma clang diagnostic ignored "-Wsuggest-attribute"
185
- #endif
192
+ UPB_NORETURN static void* decode_err(upb_Decoder* d, upb_DecodeStatus status) {
193
+ assert(status != kUpb_DecodeStatus_Ok);
194
+ UPB_LONGJMP(d->err, status);
195
+ }
186
196
 
187
- const char *fastdecode_err(upb_decstate *d) {
188
- longjmp(d->err, 1);
197
+ const char* fastdecode_err(upb_Decoder* d, int status) {
198
+ assert(status != kUpb_DecodeStatus_Ok);
199
+ UPB_LONGJMP(d->err, status);
189
200
  return NULL;
190
201
  }
191
-
192
- #ifdef __clang__
193
- #pragma clang diagnostic pop
194
- #endif
195
-
196
- const uint8_t upb_utf8_offsets[] = {
197
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
198
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
199
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
200
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
201
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
202
- 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
203
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
204
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
205
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
206
- 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
207
- 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0,
208
- };
209
-
210
- static void decode_verifyutf8(upb_decstate *d, const char *buf, int len) {
211
- if (!decode_verifyutf8_inl(buf, len)) decode_err(d);
202
+ static void decode_verifyutf8(upb_Decoder* d, const char* buf, int len) {
203
+ if (!decode_verifyutf8_inl(buf, len))
204
+ decode_err(d, kUpb_DecodeStatus_BadUtf8);
212
205
  }
213
206
 
214
- static bool decode_reserve(upb_decstate *d, upb_array *arr, size_t elem) {
207
+ static bool decode_reserve(upb_Decoder* d, upb_Array* arr, size_t elem) {
215
208
  bool need_realloc = arr->size - arr->len < elem;
216
209
  if (need_realloc && !_upb_array_realloc(arr, arr->len + elem, &d->arena)) {
217
- decode_err(d);
210
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
218
211
  }
219
212
  return need_realloc;
220
213
  }
221
214
 
222
215
  typedef struct {
223
- const char *ptr;
216
+ const char* ptr;
224
217
  uint64_t val;
225
218
  } decode_vret;
226
219
 
227
220
  UPB_NOINLINE
228
- static decode_vret decode_longvarint64(const char *ptr, uint64_t val) {
221
+ static decode_vret decode_longvarint64(const char* ptr, uint64_t val) {
229
222
  decode_vret ret = {NULL, 0};
230
223
  uint64_t byte;
231
224
  int i;
@@ -242,120 +235,92 @@ static decode_vret decode_longvarint64(const char *ptr, uint64_t val) {
242
235
  }
243
236
 
244
237
  UPB_FORCEINLINE
245
- static const char *decode_varint64(upb_decstate *d, const char *ptr,
246
- uint64_t *val) {
238
+ static const char* decode_varint64(upb_Decoder* d, const char* ptr,
239
+ uint64_t* val) {
247
240
  uint64_t byte = (uint8_t)*ptr;
248
241
  if (UPB_LIKELY((byte & 0x80) == 0)) {
249
242
  *val = byte;
250
243
  return ptr + 1;
251
244
  } else {
252
245
  decode_vret res = decode_longvarint64(ptr, byte);
253
- if (!res.ptr) decode_err(d);
246
+ if (!res.ptr) return decode_err(d, kUpb_DecodeStatus_Malformed);
254
247
  *val = res.val;
255
248
  return res.ptr;
256
249
  }
257
250
  }
258
251
 
259
252
  UPB_FORCEINLINE
260
- static const char *decode_tag(upb_decstate *d, const char *ptr,
261
- uint32_t *val) {
253
+ static const char* decode_tag(upb_Decoder* d, const char* ptr, uint32_t* val) {
262
254
  uint64_t byte = (uint8_t)*ptr;
263
255
  if (UPB_LIKELY((byte & 0x80) == 0)) {
264
256
  *val = byte;
265
257
  return ptr + 1;
266
258
  } else {
267
- const char *start = ptr;
259
+ const char* start = ptr;
268
260
  decode_vret res = decode_longvarint64(ptr, byte);
269
- ptr = res.ptr;
261
+ if (!res.ptr || res.ptr - start > 5 || res.val > UINT32_MAX) {
262
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
263
+ }
270
264
  *val = res.val;
271
- if (!ptr || *val > UINT32_MAX || ptr - start > 5) decode_err(d);
272
- return ptr;
265
+ return res.ptr;
273
266
  }
274
267
  }
275
268
 
276
- static void decode_munge(int type, wireval *val) {
269
+ static void decode_munge_int32(wireval* val) {
270
+ if (!_upb_IsLittleEndian()) {
271
+ /* The next stage will memcpy(dst, &val, 4) */
272
+ val->uint32_val = val->uint64_val;
273
+ }
274
+ }
275
+
276
+ static void decode_munge(int type, wireval* val) {
277
277
  switch (type) {
278
- case UPB_DESCRIPTOR_TYPE_BOOL:
278
+ case kUpb_FieldType_Bool:
279
279
  val->bool_val = val->uint64_val != 0;
280
280
  break;
281
- case UPB_DESCRIPTOR_TYPE_SINT32: {
282
- uint32_t n = val->uint32_val;
281
+ case kUpb_FieldType_SInt32: {
282
+ uint32_t n = val->uint64_val;
283
283
  val->uint32_val = (n >> 1) ^ -(int32_t)(n & 1);
284
284
  break;
285
285
  }
286
- case UPB_DESCRIPTOR_TYPE_SINT64: {
286
+ case kUpb_FieldType_SInt64: {
287
287
  uint64_t n = val->uint64_val;
288
288
  val->uint64_val = (n >> 1) ^ -(int64_t)(n & 1);
289
289
  break;
290
290
  }
291
- case UPB_DESCRIPTOR_TYPE_INT32:
292
- case UPB_DESCRIPTOR_TYPE_UINT32:
293
- if (!_upb_isle()) {
294
- /* The next stage will memcpy(dst, &val, 4) */
295
- val->uint32_val = val->uint64_val;
296
- }
291
+ case kUpb_FieldType_Int32:
292
+ case kUpb_FieldType_UInt32:
293
+ case kUpb_FieldType_Enum:
294
+ decode_munge_int32(val);
297
295
  break;
298
296
  }
299
297
  }
300
298
 
301
- static const upb_msglayout_field *upb_find_field(const upb_msglayout *l,
302
- uint32_t field_number,
303
- int *last_field_index) {
304
- static upb_msglayout_field none = {0, 0, 0, 0, 0, 0};
305
-
306
- if (l == NULL) return &none;
307
-
308
- size_t idx = ((size_t)field_number) - 1; // 0 wraps to SIZE_MAX
309
- if (idx < l->dense_below) {
310
- goto found;
311
- }
312
-
313
- /* Resume scanning from last_field_index since fields are usually in order. */
314
- int last = *last_field_index;
315
- for (idx = last; idx < l->field_count; idx++) {
316
- if (l->fields[idx].number == field_number) {
317
- goto found;
318
- }
319
- }
320
-
321
- for (idx = 0; idx < last; idx++) {
322
- if (l->fields[idx].number == field_number) {
323
- goto found;
324
- }
325
- }
326
-
327
- return &none; /* Unknown field. */
328
-
329
- found:
330
- UPB_ASSERT(l->fields[idx].number == field_number);
331
- *last_field_index = idx;
332
- return &l->fields[idx];
333
- }
334
-
335
- static upb_msg *decode_newsubmsg(upb_decstate *d,
336
- upb_msglayout const *const *submsgs,
337
- const upb_msglayout_field *field) {
338
- const upb_msglayout *subl = submsgs[field->submsg_index];
339
- return _upb_msg_new_inl(subl, &d->arena);
299
+ static upb_Message* decode_newsubmsg(upb_Decoder* d,
300
+ const upb_MiniTable_Sub* subs,
301
+ const upb_MiniTable_Field* field) {
302
+ const upb_MiniTable* subl = subs[field->submsg_index].submsg;
303
+ return _upb_Message_New_inl(subl, &d->arena);
340
304
  }
341
305
 
342
306
  UPB_NOINLINE
343
- const char *decode_isdonefallback(upb_decstate *d, const char *ptr,
307
+ const char* decode_isdonefallback(upb_Decoder* d, const char* ptr,
344
308
  int overrun) {
345
- ptr = decode_isdonefallback_inl(d, ptr, overrun);
309
+ int status;
310
+ ptr = decode_isdonefallback_inl(d, ptr, overrun, &status);
346
311
  if (ptr == NULL) {
347
- decode_err(d);
312
+ return decode_err(d, status);
348
313
  }
349
314
  return ptr;
350
315
  }
351
316
 
352
- static const char *decode_readstr(upb_decstate *d, const char *ptr, int size,
353
- upb_strview *str) {
354
- if (d->alias) {
317
+ static const char* decode_readstr(upb_Decoder* d, const char* ptr, int size,
318
+ upb_StringView* str) {
319
+ if (d->options & kUpb_DecodeOption_AliasString) {
355
320
  str->data = ptr;
356
321
  } else {
357
- char *data = upb_arena_malloc(&d->arena, size);
358
- if (!data) decode_err(d);
322
+ char* data = upb_Arena_Malloc(&d->arena, size);
323
+ if (!data) return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
359
324
  memcpy(data, ptr, size);
360
325
  str->data = data;
361
326
  }
@@ -364,61 +329,226 @@ static const char *decode_readstr(upb_decstate *d, const char *ptr, int size,
364
329
  }
365
330
 
366
331
  UPB_FORCEINLINE
367
- static const char *decode_tosubmsg(upb_decstate *d, const char *ptr,
368
- upb_msg *submsg,
369
- upb_msglayout const *const *submsgs,
370
- const upb_msglayout_field *field, int size) {
371
- const upb_msglayout *subl = submsgs[field->submsg_index];
332
+ static const char* decode_tosubmsg2(upb_Decoder* d, const char* ptr,
333
+ upb_Message* submsg,
334
+ const upb_MiniTable* subl, int size) {
372
335
  int saved_delta = decode_pushlimit(d, ptr, size);
373
- if (--d->depth < 0) decode_err(d);
374
- if (!decode_isdone(d, &ptr)) {
375
- ptr = decode_msg(d, ptr, submsg, subl);
376
- }
377
- if (d->end_group != DECODE_NOGROUP) decode_err(d);
336
+ if (--d->depth < 0) return decode_err(d, kUpb_DecodeStatus_MaxDepthExceeded);
337
+ ptr = decode_msg(d, ptr, submsg, subl);
338
+ if (d->end_group != DECODE_NOGROUP)
339
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
378
340
  decode_poplimit(d, ptr, saved_delta);
379
341
  d->depth++;
380
342
  return ptr;
381
343
  }
382
344
 
383
345
  UPB_FORCEINLINE
384
- static const char *decode_group(upb_decstate *d, const char *ptr,
385
- upb_msg *submsg, const upb_msglayout *subl,
346
+ static const char* decode_tosubmsg(upb_Decoder* d, const char* ptr,
347
+ upb_Message* submsg,
348
+ const upb_MiniTable_Sub* subs,
349
+ const upb_MiniTable_Field* field, int size) {
350
+ return decode_tosubmsg2(d, ptr, submsg, subs[field->submsg_index].submsg,
351
+ size);
352
+ }
353
+
354
+ UPB_FORCEINLINE
355
+ static const char* decode_group(upb_Decoder* d, const char* ptr,
356
+ upb_Message* submsg, const upb_MiniTable* subl,
386
357
  uint32_t number) {
387
- if (--d->depth < 0) decode_err(d);
358
+ if (--d->depth < 0) return decode_err(d, kUpb_DecodeStatus_MaxDepthExceeded);
388
359
  if (decode_isdone(d, &ptr)) {
389
- decode_err(d);
360
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
390
361
  }
391
362
  ptr = decode_msg(d, ptr, submsg, subl);
392
- if (d->end_group != number) decode_err(d);
363
+ if (d->end_group != number) return decode_err(d, kUpb_DecodeStatus_Malformed);
393
364
  d->end_group = DECODE_NOGROUP;
394
365
  d->depth++;
395
366
  return ptr;
396
367
  }
397
368
 
398
369
  UPB_FORCEINLINE
399
- static const char *decode_togroup(upb_decstate *d, const char *ptr,
400
- upb_msg *submsg,
401
- upb_msglayout const *const *submsgs,
402
- const upb_msglayout_field *field) {
403
- const upb_msglayout *subl = submsgs[field->submsg_index];
370
+ static const char* decode_togroup(upb_Decoder* d, const char* ptr,
371
+ upb_Message* submsg,
372
+ const upb_MiniTable_Sub* subs,
373
+ const upb_MiniTable_Field* field) {
374
+ const upb_MiniTable* subl = subs[field->submsg_index].submsg;
404
375
  return decode_group(d, ptr, submsg, subl, field->number);
405
376
  }
406
377
 
407
- static const char *decode_toarray(upb_decstate *d, const char *ptr,
408
- upb_msg *msg,
409
- upb_msglayout const *const *submsgs,
410
- const upb_msglayout_field *field, wireval *val,
411
- int op) {
412
- upb_array **arrp = UPB_PTR_AT(msg, field->offset, void);
413
- upb_array *arr = *arrp;
414
- void *mem;
378
+ static char* encode_varint32(uint32_t val, char* ptr) {
379
+ do {
380
+ uint8_t byte = val & 0x7fU;
381
+ val >>= 7;
382
+ if (val) byte |= 0x80U;
383
+ *(ptr++) = byte;
384
+ } while (val);
385
+ return ptr;
386
+ }
387
+
388
+ static void upb_Decode_AddUnknownVarints(upb_Decoder* d, upb_Message* msg,
389
+ uint32_t val1, uint32_t val2) {
390
+ char buf[20];
391
+ char* end = buf;
392
+ end = encode_varint32(val1, end);
393
+ end = encode_varint32(val2, end);
394
+
395
+ if (!_upb_Message_AddUnknown(msg, buf, end - buf, &d->arena)) {
396
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
397
+ }
398
+ }
399
+
400
+ UPB_NOINLINE
401
+ static bool decode_checkenum_slow(upb_Decoder* d, const char* ptr,
402
+ upb_Message* msg, const upb_MiniTable_Enum* e,
403
+ const upb_MiniTable_Field* field,
404
+ uint32_t v) {
405
+ // OPT: binary search long lists?
406
+ int n = e->value_count;
407
+ for (int i = 0; i < n; i++) {
408
+ if ((uint32_t)e->values[i] == v) return true;
409
+ }
410
+
411
+ // Unrecognized enum goes into unknown fields.
412
+ // For packed fields the tag could be arbitrarily far in the past, so we
413
+ // just re-encode the tag and value here.
414
+ uint32_t tag = ((uint32_t)field->number << 3) | kUpb_WireType_Varint;
415
+ upb_Decode_AddUnknownVarints(d, msg, tag, v);
416
+ return false;
417
+ }
418
+
419
+ UPB_FORCEINLINE
420
+ static bool decode_checkenum(upb_Decoder* d, const char* ptr, upb_Message* msg,
421
+ const upb_MiniTable_Enum* e,
422
+ const upb_MiniTable_Field* field, wireval* val) {
423
+ uint32_t v = val->uint32_val;
424
+
425
+ if (UPB_LIKELY(v < 64) && UPB_LIKELY(((1ULL << v) & e->mask))) return true;
426
+
427
+ return decode_checkenum_slow(d, ptr, msg, e, field, v);
428
+ }
429
+
430
+ UPB_NOINLINE
431
+ static const char* decode_enum_toarray(upb_Decoder* d, const char* ptr,
432
+ upb_Message* msg, upb_Array* arr,
433
+ const upb_MiniTable_Sub* subs,
434
+ const upb_MiniTable_Field* field,
435
+ wireval* val) {
436
+ const upb_MiniTable_Enum* e = subs[field->submsg_index].subenum;
437
+ if (!decode_checkenum(d, ptr, msg, e, field, val)) return ptr;
438
+ void* mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->len * 4, void);
439
+ arr->len++;
440
+ memcpy(mem, val, 4);
441
+ return ptr;
442
+ }
443
+
444
+ UPB_FORCEINLINE
445
+ static const char* decode_fixed_packed(upb_Decoder* d, const char* ptr,
446
+ upb_Array* arr, wireval* val,
447
+ const upb_MiniTable_Field* field,
448
+ int lg2) {
449
+ int mask = (1 << lg2) - 1;
450
+ size_t count = val->size >> lg2;
451
+ if ((val->size & mask) != 0) {
452
+ // Length isn't a round multiple of elem size.
453
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
454
+ }
455
+ decode_reserve(d, arr, count);
456
+ void* mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
457
+ arr->len += count;
458
+ // Note: if/when the decoder supports multi-buffer input, we will need to
459
+ // handle buffer seams here.
460
+ if (_upb_IsLittleEndian()) {
461
+ memcpy(mem, ptr, val->size);
462
+ ptr += val->size;
463
+ } else {
464
+ const char* end = ptr + val->size;
465
+ char* dst = mem;
466
+ while (ptr < end) {
467
+ if (lg2 == 2) {
468
+ uint32_t val;
469
+ memcpy(&val, ptr, sizeof(val));
470
+ val = _upb_BigEndian_Swap32(val);
471
+ memcpy(dst, &val, sizeof(val));
472
+ } else {
473
+ UPB_ASSERT(lg2 == 3);
474
+ uint64_t val;
475
+ memcpy(&val, ptr, sizeof(val));
476
+ val = _upb_BigEndian_Swap64(val);
477
+ memcpy(dst, &val, sizeof(val));
478
+ }
479
+ ptr += 1 << lg2;
480
+ dst += 1 << lg2;
481
+ }
482
+ }
483
+
484
+ return ptr;
485
+ }
486
+
487
+ UPB_FORCEINLINE
488
+ static const char* decode_varint_packed(upb_Decoder* d, const char* ptr,
489
+ upb_Array* arr, wireval* val,
490
+ const upb_MiniTable_Field* field,
491
+ int lg2) {
492
+ int scale = 1 << lg2;
493
+ int saved_limit = decode_pushlimit(d, ptr, val->size);
494
+ char* out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
495
+ while (!decode_isdone(d, &ptr)) {
496
+ wireval elem;
497
+ ptr = decode_varint64(d, ptr, &elem.uint64_val);
498
+ decode_munge(field->descriptortype, &elem);
499
+ if (decode_reserve(d, arr, 1)) {
500
+ out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
501
+ }
502
+ arr->len++;
503
+ memcpy(out, &elem, scale);
504
+ out += scale;
505
+ }
506
+ decode_poplimit(d, ptr, saved_limit);
507
+ return ptr;
508
+ }
509
+
510
+ UPB_NOINLINE
511
+ static const char* decode_enum_packed(upb_Decoder* d, const char* ptr,
512
+ upb_Message* msg, upb_Array* arr,
513
+ const upb_MiniTable_Sub* subs,
514
+ const upb_MiniTable_Field* field,
515
+ wireval* val) {
516
+ const upb_MiniTable_Enum* e = subs[field->submsg_index].subenum;
517
+ int saved_limit = decode_pushlimit(d, ptr, val->size);
518
+ char* out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len * 4, void);
519
+ while (!decode_isdone(d, &ptr)) {
520
+ wireval elem;
521
+ ptr = decode_varint64(d, ptr, &elem.uint64_val);
522
+ decode_munge_int32(&elem);
523
+ if (!decode_checkenum(d, ptr, msg, e, field, &elem)) {
524
+ continue;
525
+ }
526
+ if (decode_reserve(d, arr, 1)) {
527
+ out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len * 4, void);
528
+ }
529
+ arr->len++;
530
+ memcpy(out, &elem, 4);
531
+ out += 4;
532
+ }
533
+ decode_poplimit(d, ptr, saved_limit);
534
+ return ptr;
535
+ }
536
+
537
+ static const char* decode_toarray(upb_Decoder* d, const char* ptr,
538
+ upb_Message* msg,
539
+ const upb_MiniTable_Sub* subs,
540
+ const upb_MiniTable_Field* field,
541
+ wireval* val, int op) {
542
+ upb_Array** arrp = UPB_PTR_AT(msg, field->offset, void);
543
+ upb_Array* arr = *arrp;
544
+ void* mem;
415
545
 
416
546
  if (arr) {
417
547
  decode_reserve(d, arr, 1);
418
548
  } else {
419
549
  size_t lg2 = desctype_to_elem_size_lg2[field->descriptortype];
420
- arr = _upb_array_new(&d->arena, 4, lg2);
421
- if (!arr) decode_err(d);
550
+ arr = _upb_Array_New(&d->arena, 4, lg2);
551
+ if (!arr) return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
422
552
  *arrp = arr;
423
553
  }
424
554
 
@@ -436,111 +566,107 @@ static const char *decode_toarray(upb_decstate *d, const char *ptr,
436
566
  /* Fallthrough. */
437
567
  case OP_BYTES: {
438
568
  /* Append bytes. */
439
- upb_strview *str = (upb_strview*)_upb_array_ptr(arr) + arr->len;
569
+ upb_StringView* str = (upb_StringView*)_upb_array_ptr(arr) + arr->len;
440
570
  arr->len++;
441
571
  return decode_readstr(d, ptr, val->size, str);
442
572
  }
443
573
  case OP_SUBMSG: {
444
574
  /* Append submessage / group. */
445
- upb_msg *submsg = decode_newsubmsg(d, submsgs, field);
446
- *UPB_PTR_AT(_upb_array_ptr(arr), arr->len * sizeof(void *), upb_msg *) =
575
+ upb_Message* submsg = decode_newsubmsg(d, subs, field);
576
+ *UPB_PTR_AT(_upb_array_ptr(arr), arr->len * sizeof(void*), upb_Message*) =
447
577
  submsg;
448
578
  arr->len++;
449
- if (UPB_UNLIKELY(field->descriptortype == UPB_DTYPE_GROUP)) {
450
- return decode_togroup(d, ptr, submsg, submsgs, field);
579
+ if (UPB_UNLIKELY(field->descriptortype == kUpb_FieldType_Group)) {
580
+ return decode_togroup(d, ptr, submsg, subs, field);
451
581
  } else {
452
- return decode_tosubmsg(d, ptr, submsg, submsgs, field, val->size);
582
+ return decode_tosubmsg(d, ptr, submsg, subs, field, val->size);
453
583
  }
454
584
  }
455
585
  case OP_FIXPCK_LG2(2):
456
- case OP_FIXPCK_LG2(3): {
457
- /* Fixed packed. */
458
- int lg2 = op - OP_FIXPCK_LG2(0);
459
- int mask = (1 << lg2) - 1;
460
- size_t count = val->size >> lg2;
461
- if ((val->size & mask) != 0) {
462
- decode_err(d); /* Length isn't a round multiple of elem size. */
463
- }
464
- decode_reserve(d, arr, count);
465
- mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
466
- arr->len += count;
467
- memcpy(mem, ptr, val->size); /* XXX: ptr boundary. */
468
- return ptr + val->size;
469
- }
586
+ case OP_FIXPCK_LG2(3):
587
+ return decode_fixed_packed(d, ptr, arr, val, field,
588
+ op - OP_FIXPCK_LG2(0));
470
589
  case OP_VARPCK_LG2(0):
471
590
  case OP_VARPCK_LG2(2):
472
- case OP_VARPCK_LG2(3): {
473
- /* Varint packed. */
474
- int lg2 = op - OP_VARPCK_LG2(0);
475
- int scale = 1 << lg2;
476
- int saved_limit = decode_pushlimit(d, ptr, val->size);
477
- char *out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
478
- while (!decode_isdone(d, &ptr)) {
479
- wireval elem;
480
- ptr = decode_varint64(d, ptr, &elem.uint64_val);
481
- decode_munge(field->descriptortype, &elem);
482
- if (decode_reserve(d, arr, 1)) {
483
- out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
484
- }
485
- arr->len++;
486
- memcpy(out, &elem, scale);
487
- out += scale;
488
- }
489
- decode_poplimit(d, ptr, saved_limit);
490
- return ptr;
491
- }
591
+ case OP_VARPCK_LG2(3):
592
+ return decode_varint_packed(d, ptr, arr, val, field,
593
+ op - OP_VARPCK_LG2(0));
594
+ case OP_ENUM:
595
+ return decode_enum_toarray(d, ptr, msg, arr, subs, field, val);
596
+ case OP_PACKED_ENUM:
597
+ return decode_enum_packed(d, ptr, msg, arr, subs, field, val);
492
598
  default:
493
599
  UPB_UNREACHABLE();
494
600
  }
495
601
  }
496
602
 
497
- static const char *decode_tomap(upb_decstate *d, const char *ptr, upb_msg *msg,
498
- upb_msglayout const *const *submsgs,
499
- const upb_msglayout_field *field, wireval *val) {
500
- upb_map **map_p = UPB_PTR_AT(msg, field->offset, upb_map *);
501
- upb_map *map = *map_p;
502
- upb_map_entry ent;
503
- const upb_msglayout *entry = submsgs[field->submsg_index];
603
+ static const char* decode_tomap(upb_Decoder* d, const char* ptr,
604
+ upb_Message* msg, const upb_MiniTable_Sub* subs,
605
+ const upb_MiniTable_Field* field,
606
+ wireval* val) {
607
+ upb_Map** map_p = UPB_PTR_AT(msg, field->offset, upb_Map*);
608
+ upb_Map* map = *map_p;
609
+ upb_MapEntry ent;
610
+ const upb_MiniTable* entry = subs[field->submsg_index].submsg;
504
611
 
505
612
  if (!map) {
506
613
  /* Lazily create map. */
507
- const upb_msglayout_field *key_field = &entry->fields[0];
508
- const upb_msglayout_field *val_field = &entry->fields[1];
614
+ const upb_MiniTable_Field* key_field = &entry->fields[0];
615
+ const upb_MiniTable_Field* val_field = &entry->fields[1];
509
616
  char key_size = desctype_to_mapsize[key_field->descriptortype];
510
617
  char val_size = desctype_to_mapsize[val_field->descriptortype];
511
618
  UPB_ASSERT(key_field->offset == 0);
512
- UPB_ASSERT(val_field->offset == sizeof(upb_strview));
513
- map = _upb_map_new(&d->arena, key_size, val_size);
619
+ UPB_ASSERT(val_field->offset == sizeof(upb_StringView));
620
+ map = _upb_Map_New(&d->arena, key_size, val_size);
514
621
  *map_p = map;
515
622
  }
516
623
 
517
624
  /* Parse map entry. */
518
625
  memset(&ent, 0, sizeof(ent));
519
626
 
520
- if (entry->fields[1].descriptortype == UPB_DESCRIPTOR_TYPE_MESSAGE ||
521
- entry->fields[1].descriptortype == UPB_DESCRIPTOR_TYPE_GROUP) {
627
+ if (entry->fields[1].descriptortype == kUpb_FieldType_Message ||
628
+ entry->fields[1].descriptortype == kUpb_FieldType_Group) {
522
629
  /* Create proactively to handle the case where it doesn't appear. */
523
- ent.v.val = upb_value_ptr(_upb_msg_new(entry->submsgs[0], &d->arena));
630
+ ent.v.val =
631
+ upb_value_ptr(_upb_Message_New(entry->subs[0].submsg, &d->arena));
524
632
  }
525
633
 
526
- ptr = decode_tosubmsg(d, ptr, &ent.k, submsgs, field, val->size);
527
- _upb_map_set(map, &ent.k, map->key_size, &ent.v, map->val_size, &d->arena);
634
+ const char* start = ptr;
635
+ ptr = decode_tosubmsg(d, ptr, &ent.k, subs, field, val->size);
636
+ // check if ent had any unknown fields
637
+ size_t size;
638
+ upb_Message_GetUnknown(&ent.k, &size);
639
+ if (size != 0) {
640
+ uint32_t tag = ((uint32_t)field->number << 3) | kUpb_WireType_Delimited;
641
+ upb_Decode_AddUnknownVarints(d, msg, tag, (uint32_t)(ptr - start));
642
+ if (!_upb_Message_AddUnknown(msg, start, ptr - start, &d->arena)) {
643
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
644
+ }
645
+ } else {
646
+ _upb_Map_Set(map, &ent.k, map->key_size, &ent.v, map->val_size, &d->arena);
647
+ }
528
648
  return ptr;
529
649
  }
530
650
 
531
- static const char *decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg,
532
- upb_msglayout const *const *submsgs,
533
- const upb_msglayout_field *field, wireval *val,
651
+ static const char* decode_tomsg(upb_Decoder* d, const char* ptr,
652
+ upb_Message* msg, const upb_MiniTable_Sub* subs,
653
+ const upb_MiniTable_Field* field, wireval* val,
534
654
  int op) {
535
- void *mem = UPB_PTR_AT(msg, field->offset, void);
655
+ void* mem = UPB_PTR_AT(msg, field->offset, void);
536
656
  int type = field->descriptortype;
537
657
 
658
+ if (UPB_UNLIKELY(op == OP_ENUM) &&
659
+ !decode_checkenum(d, ptr, msg, subs[field->submsg_index].subenum, field,
660
+ val)) {
661
+ return ptr;
662
+ }
663
+
538
664
  /* Set presence if necessary. */
539
665
  if (field->presence > 0) {
540
666
  _upb_sethas_field(msg, field);
541
667
  } else if (field->presence < 0) {
542
668
  /* Oneof case */
543
- uint32_t *oneof_case = _upb_oneofcase_field(msg, field);
669
+ uint32_t* oneof_case = _upb_oneofcase_field(msg, field);
544
670
  if (op == OP_SUBMSG && *oneof_case != field->number) {
545
671
  memset(mem, 0, sizeof(void*));
546
672
  }
@@ -550,16 +676,16 @@ static const char *decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg,
550
676
  /* Store into message. */
551
677
  switch (op) {
552
678
  case OP_SUBMSG: {
553
- upb_msg **submsgp = mem;
554
- upb_msg *submsg = *submsgp;
679
+ upb_Message** submsgp = mem;
680
+ upb_Message* submsg = *submsgp;
555
681
  if (!submsg) {
556
- submsg = decode_newsubmsg(d, submsgs, field);
682
+ submsg = decode_newsubmsg(d, subs, field);
557
683
  *submsgp = submsg;
558
684
  }
559
- if (UPB_UNLIKELY(type == UPB_DTYPE_GROUP)) {
560
- ptr = decode_togroup(d, ptr, submsg, submsgs, field);
685
+ if (UPB_UNLIKELY(type == kUpb_FieldType_Group)) {
686
+ ptr = decode_togroup(d, ptr, submsg, subs, field);
561
687
  } else {
562
- ptr = decode_tosubmsg(d, ptr, submsg, submsgs, field, val->size);
688
+ ptr = decode_tosubmsg(d, ptr, submsg, subs, field, val->size);
563
689
  }
564
690
  break;
565
691
  }
@@ -571,6 +697,7 @@ static const char *decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg,
571
697
  case OP_SCALAR_LG2(3):
572
698
  memcpy(mem, val, 8);
573
699
  break;
700
+ case OP_ENUM:
574
701
  case OP_SCALAR_LG2(2):
575
702
  memcpy(mem, val, 4);
576
703
  break;
@@ -584,9 +711,27 @@ static const char *decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg,
584
711
  return ptr;
585
712
  }
586
713
 
714
+ UPB_NOINLINE
715
+ const char* decode_checkrequired(upb_Decoder* d, const char* ptr,
716
+ const upb_Message* msg,
717
+ const upb_MiniTable* l) {
718
+ assert(l->required_count);
719
+ if (UPB_LIKELY((d->options & kUpb_DecodeOption_CheckRequired) == 0)) {
720
+ return ptr;
721
+ }
722
+ uint64_t msg_head;
723
+ memcpy(&msg_head, msg, 8);
724
+ msg_head = _upb_BigEndian_Swap64(msg_head);
725
+ if (upb_MiniTable_requiredmask(l) & ~msg_head) {
726
+ d->missing_required = true;
727
+ }
728
+ return ptr;
729
+ }
730
+
587
731
  UPB_FORCEINLINE
588
- static bool decode_tryfastdispatch(upb_decstate *d, const char **ptr,
589
- upb_msg *msg, const upb_msglayout *layout) {
732
+ static bool decode_tryfastdispatch(upb_Decoder* d, const char** ptr,
733
+ upb_Message* msg,
734
+ const upb_MiniTable* layout) {
590
735
  #if UPB_FASTTABLE
591
736
  if (layout && layout->table_mask != (unsigned char)-1) {
592
737
  uint16_t tag = fastdecode_loadtag(*ptr);
@@ -598,174 +743,383 @@ static bool decode_tryfastdispatch(upb_decstate *d, const char **ptr,
598
743
  return false;
599
744
  }
600
745
 
746
+ static const char* decode_msgset(upb_Decoder* d, const char* ptr,
747
+ upb_Message* msg,
748
+ const upb_MiniTable* layout) {
749
+ // We create a temporary upb_MiniTable here and abuse its fields as temporary
750
+ // storage, to avoid creating lots of MessageSet-specific parsing code-paths:
751
+ // 1. We store 'layout' in item_layout.subs. We will need this later as
752
+ // a key to look up extensions for this MessageSet.
753
+ // 2. We use item_layout.fields as temporary storage to store the extension
754
+ // we
755
+ // found when parsing the type id.
756
+ upb_MiniTable item_layout = {
757
+ .subs = (const upb_MiniTable_Sub[]){{.submsg = layout}},
758
+ .fields = NULL,
759
+ .size = 0,
760
+ .field_count = 0,
761
+ .ext = kUpb_ExtMode_IsMessageSet_ITEM,
762
+ .dense_below = 0,
763
+ .table_mask = -1};
764
+ return decode_group(d, ptr, msg, &item_layout, 1);
765
+ }
766
+
767
+ static const upb_MiniTable_Field* decode_findfield(upb_Decoder* d,
768
+ const upb_MiniTable* l,
769
+ uint32_t field_number,
770
+ int* last_field_index) {
771
+ static upb_MiniTable_Field none = {0, 0, 0, 0, 0, 0};
772
+ if (l == NULL) return &none;
773
+
774
+ size_t idx = ((size_t)field_number) - 1; // 0 wraps to SIZE_MAX
775
+ if (idx < l->dense_below) {
776
+ /* Fastest case: index into dense fields. */
777
+ goto found;
778
+ }
779
+
780
+ if (l->dense_below < l->field_count) {
781
+ /* Linear search non-dense fields. Resume scanning from last_field_index
782
+ * since fields are usually in order. */
783
+ int last = *last_field_index;
784
+ for (idx = last; idx < l->field_count; idx++) {
785
+ if (l->fields[idx].number == field_number) {
786
+ goto found;
787
+ }
788
+ }
789
+
790
+ for (idx = l->dense_below; idx < last; idx++) {
791
+ if (l->fields[idx].number == field_number) {
792
+ goto found;
793
+ }
794
+ }
795
+ }
796
+
797
+ if (d->extreg) {
798
+ switch (l->ext) {
799
+ case kUpb_ExtMode_Extendable: {
800
+ const upb_MiniTable_Extension* ext =
801
+ _upb_extreg_get(d->extreg, l, field_number);
802
+ if (ext) return &ext->field;
803
+ break;
804
+ }
805
+ case kUpb_ExtMode_IsMessageSet:
806
+ if (field_number == _UPB_MSGSET_ITEM) {
807
+ static upb_MiniTable_Field item = {0, 0, 0, 0, TYPE_MSGSET_ITEM, 0};
808
+ return &item;
809
+ }
810
+ break;
811
+ case kUpb_ExtMode_IsMessageSet_ITEM:
812
+ switch (field_number) {
813
+ case _UPB_MSGSET_TYPEID: {
814
+ static upb_MiniTable_Field type_id = {
815
+ 0, 0, 0, 0, TYPE_MSGSET_TYPE_ID, 0};
816
+ return &type_id;
817
+ }
818
+ case _UPB_MSGSET_MESSAGE:
819
+ if (l->fields) {
820
+ // We saw type_id previously and succeeded in looking up msg.
821
+ return l->fields;
822
+ } else {
823
+ // TODO: out of order MessageSet.
824
+ // This is a very rare case: all serializers will emit in-order
825
+ // MessageSets. To hit this case there has to be some kind of
826
+ // re-ordering proxy. We should eventually handle this case, but
827
+ // not today.
828
+ }
829
+ break;
830
+ }
831
+ }
832
+ }
833
+
834
+ return &none; /* Unknown field. */
835
+
836
+ found:
837
+ UPB_ASSERT(l->fields[idx].number == field_number);
838
+ *last_field_index = idx;
839
+ return &l->fields[idx];
840
+ }
841
+
842
+ UPB_FORCEINLINE
843
+ static const char* decode_wireval(upb_Decoder* d, const char* ptr,
844
+ const upb_MiniTable_Field* field,
845
+ int wire_type, wireval* val, int* op) {
846
+ switch (wire_type) {
847
+ case kUpb_WireType_Varint:
848
+ ptr = decode_varint64(d, ptr, &val->uint64_val);
849
+ *op = varint_ops[field->descriptortype];
850
+ decode_munge(field->descriptortype, val);
851
+ return ptr;
852
+ case kUpb_WireType_32Bit:
853
+ memcpy(&val->uint32_val, ptr, 4);
854
+ val->uint32_val = _upb_BigEndian_Swap32(val->uint32_val);
855
+ *op = OP_SCALAR_LG2(2);
856
+ if (((1 << field->descriptortype) & FIXED32_OK_MASK) == 0) {
857
+ *op = OP_UNKNOWN;
858
+ }
859
+ return ptr + 4;
860
+ case kUpb_WireType_64Bit:
861
+ memcpy(&val->uint64_val, ptr, 8);
862
+ val->uint64_val = _upb_BigEndian_Swap64(val->uint64_val);
863
+ *op = OP_SCALAR_LG2(3);
864
+ if (((1 << field->descriptortype) & FIXED64_OK_MASK) == 0) {
865
+ *op = OP_UNKNOWN;
866
+ }
867
+ return ptr + 8;
868
+ case kUpb_WireType_Delimited: {
869
+ int ndx = field->descriptortype;
870
+ uint64_t size;
871
+ if (upb_FieldMode_Get(field) == kUpb_FieldMode_Array) ndx += TYPE_COUNT;
872
+ ptr = decode_varint64(d, ptr, &size);
873
+ if (size >= INT32_MAX || ptr - d->end + (int32_t)size > d->limit) {
874
+ break; /* Length overflow. */
875
+ }
876
+ *op = delim_ops[ndx];
877
+ val->size = size;
878
+ return ptr;
879
+ }
880
+ case kUpb_WireType_StartGroup:
881
+ val->uint32_val = field->number;
882
+ if (field->descriptortype == kUpb_FieldType_Group) {
883
+ *op = OP_SUBMSG;
884
+ } else if (field->descriptortype == TYPE_MSGSET_ITEM) {
885
+ *op = OP_MSGSET_ITEM;
886
+ } else {
887
+ *op = OP_UNKNOWN;
888
+ }
889
+ return ptr;
890
+ default:
891
+ break;
892
+ }
893
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
894
+ }
895
+
896
+ UPB_FORCEINLINE
897
+ static const char* decode_known(upb_Decoder* d, const char* ptr,
898
+ upb_Message* msg, const upb_MiniTable* layout,
899
+ const upb_MiniTable_Field* field, int op,
900
+ wireval* val) {
901
+ const upb_MiniTable_Sub* subs = layout->subs;
902
+ uint8_t mode = field->mode;
903
+
904
+ if (UPB_UNLIKELY(mode & kUpb_LabelFlags_IsExtension)) {
905
+ const upb_MiniTable_Extension* ext_layout =
906
+ (const upb_MiniTable_Extension*)field;
907
+ upb_Message_Extension* ext =
908
+ _upb_Message_Getorcreateext(msg, ext_layout, &d->arena);
909
+ if (UPB_UNLIKELY(!ext)) return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
910
+ msg = &ext->data;
911
+ subs = &ext->ext->sub;
912
+ }
913
+
914
+ switch (mode & kUpb_FieldMode_Mask) {
915
+ case kUpb_FieldMode_Array:
916
+ return decode_toarray(d, ptr, msg, subs, field, val, op);
917
+ case kUpb_FieldMode_Map:
918
+ return decode_tomap(d, ptr, msg, subs, field, val);
919
+ case kUpb_FieldMode_Scalar:
920
+ return decode_tomsg(d, ptr, msg, subs, field, val, op);
921
+ default:
922
+ UPB_UNREACHABLE();
923
+ }
924
+ }
925
+
926
+ static const char* decode_reverse_skip_varint(const char* ptr, uint32_t val) {
927
+ uint32_t seen = 0;
928
+ do {
929
+ ptr--;
930
+ seen <<= 7;
931
+ seen |= *ptr & 0x7f;
932
+ } while (seen != val);
933
+ return ptr;
934
+ }
935
+
936
+ static const char* decode_unknown(upb_Decoder* d, const char* ptr,
937
+ upb_Message* msg, int field_number,
938
+ int wire_type, wireval val) {
939
+ if (field_number == 0) return decode_err(d, kUpb_DecodeStatus_Malformed);
940
+
941
+ // Since unknown fields are the uncommon case, we do a little extra work here
942
+ // to walk backwards through the buffer to find the field start. This frees
943
+ // up a register in the fast paths (when the field is known), which leads to
944
+ // significant speedups in benchmarks.
945
+ const char* start = ptr;
946
+
947
+ if (wire_type == kUpb_WireType_Delimited) ptr += val.size;
948
+ if (msg) {
949
+ switch (wire_type) {
950
+ case kUpb_WireType_Varint:
951
+ case kUpb_WireType_Delimited:
952
+ start--;
953
+ while (start[-1] & 0x80) start--;
954
+ break;
955
+ case kUpb_WireType_32Bit:
956
+ start -= 4;
957
+ break;
958
+ case kUpb_WireType_64Bit:
959
+ start -= 8;
960
+ break;
961
+ default:
962
+ break;
963
+ }
964
+
965
+ assert(start == d->debug_valstart);
966
+ uint32_t tag = ((uint32_t)field_number << 3) | wire_type;
967
+ start = decode_reverse_skip_varint(start, tag);
968
+ assert(start == d->debug_tagstart);
969
+
970
+ if (wire_type == kUpb_WireType_StartGroup) {
971
+ d->unknown = start;
972
+ d->unknown_msg = msg;
973
+ ptr = decode_group(d, ptr, NULL, NULL, field_number);
974
+ start = d->unknown;
975
+ d->unknown_msg = NULL;
976
+ d->unknown = NULL;
977
+ }
978
+ if (!_upb_Message_AddUnknown(msg, start, ptr - start, &d->arena)) {
979
+ return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
980
+ }
981
+ } else if (wire_type == kUpb_WireType_StartGroup) {
982
+ ptr = decode_group(d, ptr, NULL, NULL, field_number);
983
+ }
984
+ return ptr;
985
+ }
986
+
601
987
  UPB_NOINLINE
602
- static const char *decode_msg(upb_decstate *d, const char *ptr, upb_msg *msg,
603
- const upb_msglayout *layout) {
988
+ static const char* decode_msg(upb_Decoder* d, const char* ptr, upb_Message* msg,
989
+ const upb_MiniTable* layout) {
604
990
  int last_field_index = 0;
605
- while (true) {
991
+
992
+ #if UPB_FASTTABLE
993
+ // The first time we want to skip fast dispatch, because we may have just been
994
+ // invoked by the fast parser to handle a case that it bailed on.
995
+ if (!decode_isdone(d, &ptr)) goto nofast;
996
+ #endif
997
+
998
+ while (!decode_isdone(d, &ptr)) {
606
999
  uint32_t tag;
607
- const upb_msglayout_field *field;
1000
+ const upb_MiniTable_Field* field;
608
1001
  int field_number;
609
1002
  int wire_type;
610
- const char *field_start = ptr;
611
1003
  wireval val;
612
1004
  int op;
613
1005
 
1006
+ if (decode_tryfastdispatch(d, &ptr, msg, layout)) break;
1007
+
1008
+ #if UPB_FASTTABLE
1009
+ nofast:
1010
+ #endif
1011
+
1012
+ #ifndef NDEBUG
1013
+ d->debug_tagstart = ptr;
1014
+ #endif
1015
+
614
1016
  UPB_ASSERT(ptr < d->limit_ptr);
615
1017
  ptr = decode_tag(d, ptr, &tag);
616
1018
  field_number = tag >> 3;
617
1019
  wire_type = tag & 7;
618
1020
 
619
- field = upb_find_field(layout, field_number, &last_field_index);
1021
+ #ifndef NDEBUG
1022
+ d->debug_valstart = ptr;
1023
+ #endif
620
1024
 
621
- switch (wire_type) {
622
- case UPB_WIRE_TYPE_VARINT:
623
- ptr = decode_varint64(d, ptr, &val.uint64_val);
624
- op = varint_ops[field->descriptortype];
625
- decode_munge(field->descriptortype, &val);
626
- break;
627
- case UPB_WIRE_TYPE_32BIT:
628
- memcpy(&val.uint32_val, ptr, 4);
629
- val.uint32_val = _upb_be_swap32(val.uint32_val);
630
- ptr += 4;
631
- op = OP_SCALAR_LG2(2);
632
- if (((1 << field->descriptortype) & fixed32_ok) == 0) goto unknown;
633
- break;
634
- case UPB_WIRE_TYPE_64BIT:
635
- memcpy(&val.uint64_val, ptr, 8);
636
- val.uint64_val = _upb_be_swap64(val.uint64_val);
637
- ptr += 8;
638
- op = OP_SCALAR_LG2(3);
639
- if (((1 << field->descriptortype) & fixed64_ok) == 0) goto unknown;
640
- break;
641
- case UPB_WIRE_TYPE_DELIMITED: {
642
- int ndx = field->descriptortype;
643
- uint64_t size;
644
- if (_upb_getmode(field) == _UPB_MODE_ARRAY) ndx += 18;
645
- ptr = decode_varint64(d, ptr, &size);
646
- if (size >= INT32_MAX ||
647
- ptr - d->end + (int32_t)size > d->limit) {
648
- decode_err(d); /* Length overflow. */
649
- }
650
- op = delim_ops[ndx];
651
- val.size = size;
652
- break;
653
- }
654
- case UPB_WIRE_TYPE_START_GROUP:
655
- val.uint32_val = field_number;
656
- op = OP_SUBMSG;
657
- if (field->descriptortype != UPB_DTYPE_GROUP) goto unknown;
658
- break;
659
- case UPB_WIRE_TYPE_END_GROUP:
660
- d->end_group = field_number;
661
- return ptr;
662
- default:
663
- decode_err(d);
1025
+ if (wire_type == kUpb_WireType_EndGroup) {
1026
+ d->end_group = field_number;
1027
+ return ptr;
664
1028
  }
665
1029
 
1030
+ field = decode_findfield(d, layout, field_number, &last_field_index);
1031
+ ptr = decode_wireval(d, ptr, field, wire_type, &val, &op);
1032
+
666
1033
  if (op >= 0) {
667
- /* Parse, using op for dispatch. */
668
- switch (_upb_getmode(field)) {
669
- case _UPB_MODE_ARRAY:
670
- ptr = decode_toarray(d, ptr, msg, layout->submsgs, field, &val, op);
1034
+ ptr = decode_known(d, ptr, msg, layout, field, op, &val);
1035
+ } else {
1036
+ switch (op) {
1037
+ case OP_UNKNOWN:
1038
+ ptr = decode_unknown(d, ptr, msg, field_number, wire_type, val);
671
1039
  break;
672
- case _UPB_MODE_MAP:
673
- ptr = decode_tomap(d, ptr, msg, layout->submsgs, field, &val);
1040
+ case OP_MSGSET_ITEM:
1041
+ ptr = decode_msgset(d, ptr, msg, layout);
674
1042
  break;
675
- case _UPB_MODE_SCALAR:
676
- ptr = decode_tomsg(d, ptr, msg, layout->submsgs, field, &val, op);
1043
+ case OP_MSGSET_TYPEID: {
1044
+ const upb_MiniTable_Extension* ext = _upb_extreg_get(
1045
+ d->extreg, layout->subs[0].submsg, val.uint64_val);
1046
+ if (ext) ((upb_MiniTable*)layout)->fields = &ext->field;
677
1047
  break;
678
- default:
679
- UPB_UNREACHABLE();
680
- }
681
- } else {
682
- unknown:
683
- /* Skip unknown field. */
684
- if (field_number == 0) decode_err(d);
685
- if (wire_type == UPB_WIRE_TYPE_DELIMITED) ptr += val.size;
686
- if (msg) {
687
- if (wire_type == UPB_WIRE_TYPE_START_GROUP) {
688
- d->unknown = field_start;
689
- d->unknown_msg = msg;
690
- ptr = decode_group(d, ptr, NULL, NULL, field_number);
691
- d->unknown_msg = NULL;
692
- field_start = d->unknown;
693
- }
694
- if (!_upb_msg_addunknown(msg, field_start, ptr - field_start,
695
- &d->arena)) {
696
- decode_err(d);
697
1048
  }
698
- } else if (wire_type == UPB_WIRE_TYPE_START_GROUP) {
699
- ptr = decode_group(d, ptr, NULL, NULL, field_number);
700
1049
  }
701
1050
  }
702
-
703
- if (decode_isdone(d, &ptr)) return ptr;
704
- if (decode_tryfastdispatch(d, &ptr, msg, layout)) return ptr;
705
1051
  }
1052
+
1053
+ return UPB_UNLIKELY(layout && layout->required_count)
1054
+ ? decode_checkrequired(d, ptr, msg, layout)
1055
+ : ptr;
706
1056
  }
707
1057
 
708
- const char *fastdecode_generic(struct upb_decstate *d, const char *ptr,
709
- upb_msg *msg, intptr_t table, uint64_t hasbits,
710
- uint64_t data) {
1058
+ const char* fastdecode_generic(struct upb_Decoder* d, const char* ptr,
1059
+ upb_Message* msg, intptr_t table,
1060
+ uint64_t hasbits, uint64_t data) {
711
1061
  (void)data;
712
1062
  *(uint32_t*)msg |= hasbits;
713
1063
  return decode_msg(d, ptr, msg, decode_totablep(table));
714
1064
  }
715
1065
 
716
- static bool decode_top(struct upb_decstate *d, const char *buf, void *msg,
717
- const upb_msglayout *l) {
1066
+ static upb_DecodeStatus decode_top(struct upb_Decoder* d, const char* buf,
1067
+ void* msg, const upb_MiniTable* l) {
718
1068
  if (!decode_tryfastdispatch(d, &buf, msg, l)) {
719
1069
  decode_msg(d, buf, msg, l);
720
1070
  }
721
- return d->end_group == DECODE_NOGROUP;
1071
+ if (d->end_group != DECODE_NOGROUP) return kUpb_DecodeStatus_Malformed;
1072
+ if (d->missing_required) return kUpb_DecodeStatus_MissingRequired;
1073
+ return kUpb_DecodeStatus_Ok;
722
1074
  }
723
1075
 
724
- bool _upb_decode(const char *buf, size_t size, void *msg,
725
- const upb_msglayout *l, const upb_extreg *extreg, int options,
726
- upb_arena *arena) {
727
- bool ok;
728
- upb_decstate state;
1076
+ upb_DecodeStatus upb_Decode(const char* buf, size_t size, void* msg,
1077
+ const upb_MiniTable* l,
1078
+ const upb_ExtensionRegistry* extreg, int options,
1079
+ upb_Arena* arena) {
1080
+ upb_Decoder state;
729
1081
  unsigned depth = (unsigned)options >> 16;
730
1082
 
731
- if (size == 0) {
732
- return true;
733
- } else if (size <= 16) {
1083
+ if (size <= 16) {
734
1084
  memset(&state.patch, 0, 32);
735
- memcpy(&state.patch, buf, size);
1085
+ if (size) memcpy(&state.patch, buf, size);
736
1086
  buf = state.patch;
737
1087
  state.end = buf + size;
738
1088
  state.limit = 0;
739
- state.alias = false;
1089
+ options &= ~kUpb_DecodeOption_AliasString; // Can't alias patch buf.
740
1090
  } else {
741
1091
  state.end = buf + size - 16;
742
1092
  state.limit = 16;
743
- state.alias = options & UPB_DECODE_ALIAS;
744
1093
  }
745
1094
 
1095
+ state.extreg = extreg;
746
1096
  state.limit_ptr = state.end;
747
1097
  state.unknown_msg = NULL;
748
1098
  state.depth = depth ? depth : 64;
749
1099
  state.end_group = DECODE_NOGROUP;
1100
+ state.options = (uint16_t)options;
1101
+ state.missing_required = false;
750
1102
  state.arena.head = arena->head;
751
1103
  state.arena.last_size = arena->last_size;
752
1104
  state.arena.cleanup_metadata = arena->cleanup_metadata;
753
1105
  state.arena.parent = arena;
754
1106
 
755
- if (UPB_UNLIKELY(UPB_SETJMP(state.err))) {
756
- ok = false;
757
- } else {
758
- ok = decode_top(&state, buf, msg, l);
1107
+ upb_DecodeStatus status = UPB_SETJMP(state.err);
1108
+ if (UPB_LIKELY(status == kUpb_DecodeStatus_Ok)) {
1109
+ status = decode_top(&state, buf, msg, l);
759
1110
  }
760
1111
 
761
1112
  arena->head.ptr = state.arena.head.ptr;
762
1113
  arena->head.end = state.arena.head.end;
763
1114
  arena->cleanup_metadata = state.arena.cleanup_metadata;
764
- return ok;
1115
+ return status;
765
1116
  }
766
1117
 
1118
+ #undef OP_UNKNOWN
1119
+ #undef OP_SKIP
767
1120
  #undef OP_SCALAR_LG2
768
1121
  #undef OP_FIXPCK_LG2
769
1122
  #undef OP_VARPCK_LG2
770
1123
  #undef OP_STRING
1124
+ #undef OP_BYTES
771
1125
  #undef OP_SUBMSG