grpc 1.54.3 → 1.55.0

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

Potentially problematic release.


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

Files changed (962) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +66 -37
  3. data/include/grpc/impl/grpc_types.h +2 -0
  4. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
  5. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -1
  6. data/src/core/ext/filters/client_channel/client_channel.cc +19 -21
  7. data/src/core/ext/filters/client_channel/client_channel.h +20 -18
  8. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +1 -1
  9. data/src/core/ext/filters/client_channel/client_channel_internal.h +8 -40
  10. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +2 -2
  11. data/src/core/ext/filters/client_channel/config_selector.h +5 -17
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +1 -1
  13. data/src/core/ext/filters/client_channel/http_proxy.cc +34 -1
  14. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +2 -2
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  17. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +5 -5
  18. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +3 -3
  19. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +44 -45
  20. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +2 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +4 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -3
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +9 -9
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +4 -4
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +5 -4
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +19 -118
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.h +30 -0
  30. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +60 -0
  31. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.h +27 -0
  32. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +524 -0
  33. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.h +35 -0
  34. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +97 -0
  35. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.h +32 -0
  36. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -13
  37. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.h +24 -0
  38. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -2
  39. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +7 -34
  40. data/src/core/ext/filters/client_channel/retry_filter.cc +23 -55
  41. data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -8
  42. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  43. data/src/core/ext/filters/http/message_compress/compression_filter.cc +2 -2
  44. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +68 -69
  45. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +78 -23
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +21 -0
  47. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +70 -0
  48. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -7
  49. data/src/core/ext/transport/chttp2/transport/frame_ping.h +0 -3
  50. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -0
  51. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -0
  52. data/src/core/ext/transport/chttp2/transport/internal.h +3 -4
  53. data/src/core/ext/transport/chttp2/transport/writing.cc +14 -3
  54. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +87 -52
  55. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +414 -181
  56. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -60
  57. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +481 -224
  58. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +90 -55
  59. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +415 -188
  60. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +357 -210
  61. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1572 -729
  62. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +30 -17
  63. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +144 -47
  64. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +34 -21
  65. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -62
  66. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +27 -14
  67. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +78 -38
  68. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +20 -11
  69. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +48 -26
  70. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +20 -11
  71. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +48 -26
  72. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +109 -62
  73. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +566 -244
  74. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +21 -12
  75. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +45 -30
  76. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +22 -19
  77. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +82 -29
  78. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +23 -16
  79. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +45 -30
  80. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +230 -143
  81. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +733 -404
  82. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +417 -264
  83. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1839 -899
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -41
  85. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +286 -148
  86. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +531 -334
  87. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2017 -1131
  88. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -12
  89. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +45 -30
  90. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +89 -52
  91. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +347 -232
  92. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +264 -165
  93. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +888 -476
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +139 -80
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +527 -274
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -13
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +50 -36
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +380 -221
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1168 -611
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +166 -94
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +666 -292
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +18 -11
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +37 -26
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +21 -12
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -30
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +30 -17
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +144 -47
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +274 -167
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +789 -440
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +228 -137
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1100 -501
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -13
  113. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +60 -37
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +350 -211
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1072 -646
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +33 -18
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +117 -51
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +34 -19
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +118 -56
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +38 -21
  121. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +148 -64
  122. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +31 -18
  123. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +143 -65
  124. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +22 -13
  125. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +51 -37
  126. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +78 -43
  127. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +265 -127
  128. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +145 -88
  129. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +438 -241
  130. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +115 -62
  131. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +559 -227
  132. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +18 -11
  133. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -26
  134. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +175 -118
  135. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +857 -442
  136. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +172 -95
  137. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +864 -374
  138. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -27
  139. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +159 -110
  140. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +39 -18
  141. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +74 -56
  142. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +28 -15
  143. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +71 -45
  144. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +131 -74
  145. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +489 -249
  146. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +135 -80
  147. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +505 -245
  148. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +248 -139
  149. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +933 -433
  150. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +80 -49
  151. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +616 -201
  152. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1283 -776
  153. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5422 -2519
  154. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +49 -28
  155. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +164 -84
  156. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +228 -141
  157. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +738 -399
  158. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +20 -11
  159. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +48 -26
  160. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +21 -12
  161. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +45 -30
  162. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +32 -19
  163. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +70 -49
  164. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +27 -14
  165. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +110 -43
  166. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +46 -25
  167. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +259 -100
  168. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +21 -12
  169. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +45 -30
  170. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +18 -11
  171. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +35 -26
  172. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +42 -23
  173. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +108 -70
  174. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +7 -4
  175. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +21 -16
  176. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +43 -24
  177. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +110 -75
  178. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +30 -17
  179. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +95 -50
  180. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +16 -9
  181. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -23
  182. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +60 -37
  183. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +150 -108
  184. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +74 -43
  185. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +357 -167
  186. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +44 -25
  187. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +114 -80
  188. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -20
  189. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +245 -82
  190. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +32 -19
  191. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +73 -51
  192. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +474 -296
  193. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2121 -1076
  194. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +18 -11
  195. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +35 -26
  196. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +34 -21
  197. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +112 -78
  198. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +72 -45
  199. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +193 -138
  200. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +34 -21
  201. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +119 -78
  202. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +18 -11
  203. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +35 -26
  204. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -4
  205. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +15 -10
  206. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +184 -96
  207. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +907 -360
  208. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +56 -33
  209. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -101
  210. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +188 -111
  211. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +816 -419
  212. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +32 -19
  213. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +109 -53
  214. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +10 -7
  215. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +18 -14
  216. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +300 -177
  217. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1284 -522
  218. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +42 -23
  219. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +188 -75
  220. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +130 -83
  221. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +510 -238
  222. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +22 -13
  223. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +55 -34
  224. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +39 -26
  225. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -68
  226. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +21 -12
  227. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +47 -30
  228. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +52 -29
  229. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +92 -62
  230. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +37 -20
  231. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +133 -63
  232. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +22 -13
  233. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +91 -40
  234. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -12
  235. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +50 -32
  236. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +18 -11
  237. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +37 -26
  238. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +46 -27
  239. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +101 -70
  240. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +13 -10
  241. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +25 -22
  242. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +40 -23
  243. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +161 -75
  244. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +31 -18
  245. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +114 -56
  246. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +46 -29
  247. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +139 -91
  248. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +65 -42
  249. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +200 -121
  250. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +80 -45
  251. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +208 -131
  252. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +34 -21
  253. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +74 -53
  254. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -4
  255. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +13 -8
  256. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +16 -9
  257. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +28 -18
  258. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +28 -15
  259. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +55 -34
  260. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +43 -22
  261. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +91 -53
  262. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +35 -20
  263. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +92 -57
  264. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +7 -4
  265. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +13 -8
  266. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -11
  267. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -26
  268. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +23 -14
  269. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +61 -41
  270. data/src/core/ext/upb-generated/google/api/annotations.upb.c +14 -11
  271. data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -20
  272. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +255 -154
  273. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +934 -450
  274. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +299 -180
  275. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +946 -483
  276. data/src/core/ext/upb-generated/google/api/http.upb.c +68 -35
  277. data/src/core/ext/upb-generated/google/api/http.upb.h +284 -120
  278. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +22 -13
  279. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +95 -37
  280. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -10
  281. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
  282. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +1018 -424
  283. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +3851 -1412
  284. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -10
  285. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +38 -22
  286. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +10 -7
  287. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +18 -14
  288. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +62 -39
  289. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +207 -102
  290. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -10
  291. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +38 -22
  292. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +90 -51
  293. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +157 -107
  294. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -13
  295. data/src/core/ext/upb-generated/google/rpc/status.upb.h +95 -37
  296. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +59 -34
  297. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +154 -92
  298. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +43 -24
  299. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +118 -60
  300. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +250 -145
  301. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +919 -415
  302. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +34 -19
  303. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -51
  304. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +25 -14
  305. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +45 -30
  306. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +144 -81
  307. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +405 -217
  308. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +51 -26
  309. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +153 -61
  310. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +173 -102
  311. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +855 -298
  312. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +68 -49
  313. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +155 -104
  314. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +26 -17
  315. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -34
  316. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +12 -9
  317. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +31 -14
  318. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +26 -17
  319. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -34
  320. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +23 -16
  321. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +45 -30
  322. data/src/core/ext/upb-generated/validate/validate.upb.c +845 -455
  323. data/src/core/ext/upb-generated/validate/validate.upb.h +4347 -1908
  324. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +68 -49
  325. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +155 -104
  326. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +26 -17
  327. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +55 -34
  328. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +12 -9
  329. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +31 -14
  330. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +65 -44
  331. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +137 -91
  332. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +23 -16
  333. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +45 -30
  334. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +16 -9
  335. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +28 -18
  336. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +21 -12
  337. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +45 -30
  338. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +37 -22
  339. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +96 -63
  340. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +26 -17
  341. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +52 -29
  342. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +21 -12
  343. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +45 -30
  344. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +23 -14
  345. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +62 -42
  346. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +44 -25
  347. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +169 -79
  348. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +27 -14
  349. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +65 -38
  350. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +69 -38
  351. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +167 -76
  352. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +21 -12
  353. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +89 -34
  354. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +18 -11
  355. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +35 -26
  356. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +32 -19
  357. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +150 -54
  358. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +10 -7
  359. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +18 -14
  360. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +34 -21
  361. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +161 -63
  362. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +162 -101
  363. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +501 -293
  364. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +85 -52
  365. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +430 -164
  366. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +24 -15
  367. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +53 -37
  368. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +40 -23
  369. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +161 -75
  370. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +37 -22
  371. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +92 -66
  372. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +43 -22
  373. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +91 -53
  374. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +21 -12
  375. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +45 -30
  376. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +1 -1
  377. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +6 -5
  378. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +1 -1
  379. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +6 -5
  380. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +1 -1
  381. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +6 -5
  382. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +1 -1
  383. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +6 -5
  384. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +1 -1
  385. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +6 -5
  386. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +1 -1
  387. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +6 -5
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +1 -1
  389. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +6 -5
  390. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +1 -1
  391. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +6 -5
  392. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +1 -1
  393. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +6 -5
  394. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +1 -1
  395. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +6 -5
  396. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +1 -1
  397. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +6 -5
  398. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +1 -1
  399. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +6 -5
  400. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +1 -1
  401. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +6 -5
  402. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +1 -1
  403. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +6 -5
  404. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +252 -253
  405. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +6 -5
  406. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +1 -1
  407. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +6 -5
  408. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +1 -1
  409. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +6 -5
  410. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +1 -1
  411. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +6 -5
  412. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +1 -1
  413. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +6 -5
  414. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +1 -1
  415. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +6 -5
  416. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +1 -1
  417. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +6 -5
  418. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +1 -1
  419. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +6 -5
  420. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +1 -1
  421. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +6 -5
  422. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +13 -12
  423. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +11 -5
  424. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +1 -1
  425. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +6 -5
  426. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +1 -1
  427. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +6 -5
  428. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +1 -1
  429. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +6 -5
  430. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +1 -1
  431. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +6 -5
  432. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +1 -1
  433. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +6 -5
  434. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +1 -1
  435. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +6 -5
  436. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +44 -44
  437. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +6 -5
  438. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +1 -1
  439. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +6 -5
  440. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +1 -1
  441. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +6 -5
  442. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +1 -1
  443. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +6 -5
  444. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +1 -1
  445. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +6 -5
  446. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +1 -1
  447. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +6 -5
  448. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +1 -1
  449. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +6 -5
  450. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +1 -1
  451. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +6 -5
  452. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +1 -1
  453. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +6 -5
  454. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +1 -1
  455. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +6 -5
  456. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +1 -1
  457. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +6 -5
  458. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +1 -1
  459. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +6 -5
  460. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +1 -1
  461. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +6 -5
  462. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +1 -1
  463. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +6 -5
  464. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +1 -1
  465. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +6 -5
  466. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +1 -1
  467. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +6 -5
  468. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +1 -1
  469. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +6 -5
  470. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +134 -128
  471. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +11 -5
  472. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +1 -1
  473. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +6 -5
  474. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +1 -1
  475. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +6 -5
  476. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +1 -1
  477. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +6 -5
  478. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +1 -1
  479. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +6 -5
  480. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +1 -1
  481. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +6 -5
  482. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +1 -1
  483. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +6 -5
  484. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +1 -1
  485. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +6 -5
  486. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +1 -1
  487. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +6 -5
  488. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +1 -1
  489. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +6 -5
  490. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +1 -1
  491. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +6 -5
  492. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +1 -1
  493. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +6 -5
  494. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +1 -1
  495. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +6 -5
  496. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +1 -1
  497. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +6 -5
  498. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +1 -1
  499. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +6 -5
  500. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +1 -1
  501. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +6 -5
  502. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +1 -1
  503. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +6 -5
  504. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +1 -1
  505. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +6 -5
  506. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +1 -1
  507. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +6 -5
  508. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +1 -1
  509. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +6 -5
  510. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +1 -1
  511. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +6 -5
  512. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +1 -1
  513. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +6 -5
  514. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +379 -376
  515. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +6 -5
  516. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +1 -1
  517. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +6 -5
  518. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +1 -1
  519. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +6 -5
  520. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +138 -136
  521. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +6 -5
  522. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +1 -1
  523. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +6 -5
  524. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
  525. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +6 -5
  526. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +1 -1
  527. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +6 -5
  528. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +1 -1
  529. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +6 -5
  530. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +1 -1
  531. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +6 -5
  532. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +1 -1
  533. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +6 -5
  534. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +12 -13
  535. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +6 -5
  536. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +1 -1
  537. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +6 -5
  538. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +1 -1
  539. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +6 -5
  540. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +1 -1
  541. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +6 -5
  542. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +1 -1
  543. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +6 -5
  544. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +1 -1
  545. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +6 -5
  546. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +1 -1
  547. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +6 -5
  548. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +1 -1
  549. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +6 -5
  550. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +1 -1
  551. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +6 -5
  552. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +1 -1
  553. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +6 -5
  554. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +1 -1
  555. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +6 -5
  556. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +1 -1
  557. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +6 -5
  558. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +1 -1
  559. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +6 -5
  560. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +1 -1
  561. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +6 -5
  562. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +1 -1
  563. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +6 -5
  564. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +1 -1
  565. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +6 -5
  566. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +1 -1
  567. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +6 -5
  568. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +1 -1
  569. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +6 -5
  570. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +1 -1
  571. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +6 -5
  572. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +1 -1
  573. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +6 -5
  574. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +1 -1
  575. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +6 -5
  576. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +1 -1
  577. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +6 -5
  578. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +1 -1
  579. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +6 -5
  580. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +1 -1
  581. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +6 -5
  582. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +1 -1
  583. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +6 -5
  584. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +1 -1
  585. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +6 -5
  586. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +1 -1
  587. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +6 -5
  588. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +1 -1
  589. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +6 -5
  590. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +1 -1
  591. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +6 -5
  592. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +1 -1
  593. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +6 -5
  594. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +1 -1
  595. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +6 -5
  596. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +329 -273
  597. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +11 -5
  598. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +1 -1
  599. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +6 -5
  600. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +1 -1
  601. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +6 -5
  602. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +1 -1
  603. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +6 -5
  604. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +1 -1
  605. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +6 -5
  606. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +1 -1
  607. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +6 -5
  608. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +1 -1
  609. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +6 -5
  610. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +1 -1
  611. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +6 -5
  612. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +1 -1
  613. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +6 -5
  614. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +1 -1
  615. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +6 -5
  616. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +1 -1
  617. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +6 -5
  618. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +1 -1
  619. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +6 -5
  620. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +1 -1
  621. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +6 -5
  622. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +1 -1
  623. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +6 -5
  624. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +1 -1
  625. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +6 -5
  626. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +1 -1
  627. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +6 -5
  628. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +1 -1
  629. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +6 -5
  630. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +1 -1
  631. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +6 -5
  632. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +1 -1
  633. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +6 -5
  634. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +1 -1
  635. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +6 -5
  636. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +1 -1
  637. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +6 -5
  638. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +1 -1
  639. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +6 -5
  640. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +1 -1
  641. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +6 -5
  642. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +1 -1
  643. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +6 -5
  644. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +1 -1
  645. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +6 -5
  646. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +1 -1
  647. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +6 -5
  648. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +1 -1
  649. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +6 -5
  650. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +1 -1
  651. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +6 -5
  652. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +1 -1
  653. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +6 -5
  654. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +1 -1
  655. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +6 -5
  656. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +1 -1
  657. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +6 -5
  658. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +1 -1
  659. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +6 -5
  660. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +1 -1
  661. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +6 -5
  662. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +1 -1
  663. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +6 -5
  664. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +1 -1
  665. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +6 -5
  666. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +1 -1
  667. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +6 -5
  668. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +1 -1
  669. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +6 -5
  670. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +1 -1
  671. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +6 -5
  672. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +1 -1
  673. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +6 -5
  674. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  675. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +7 -7
  676. data/src/core/ext/xds/upb_utils.h +1 -1
  677. data/src/core/ext/xds/xds_api.cc +34 -14
  678. data/src/core/ext/xds/xds_api.h +2 -2
  679. data/src/core/ext/xds/xds_bootstrap.cc +3 -3
  680. data/src/core/ext/xds/xds_bootstrap_grpc.cc +15 -15
  681. data/src/core/ext/xds/xds_client.cc +24 -3
  682. data/src/core/ext/xds/xds_client.h +1 -1
  683. data/src/core/ext/xds/xds_cluster.cc +26 -34
  684. data/src/core/ext/xds/xds_cluster.h +1 -2
  685. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +4 -3
  686. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -2
  687. data/src/core/ext/xds/xds_common_types.cc +5 -4
  688. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  689. data/src/core/ext/xds/xds_endpoint.h +1 -1
  690. data/src/core/ext/xds/xds_http_fault_filter.cc +2 -2
  691. data/src/core/ext/xds/xds_http_fault_filter.h +1 -1
  692. data/src/core/ext/xds/xds_http_filters.h +3 -2
  693. data/src/core/ext/xds/xds_http_rbac_filter.cc +6 -8
  694. data/src/core/ext/xds/xds_http_rbac_filter.h +1 -1
  695. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +2 -2
  696. data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -1
  697. data/src/core/ext/xds/xds_lb_policy_registry.cc +4 -22
  698. data/src/core/ext/xds/xds_listener.cc +10 -4
  699. data/src/core/ext/xds/xds_listener.h +1 -1
  700. data/src/core/ext/xds/xds_resource_type.h +2 -2
  701. data/src/core/ext/xds/xds_route_config.cc +8 -5
  702. data/src/core/ext/xds/xds_route_config.h +1 -1
  703. data/src/core/lib/channel/channelz.cc +5 -4
  704. data/src/core/lib/channel/channelz_registry.cc +7 -6
  705. data/src/core/lib/channel/connected_channel.cc +82 -27
  706. data/src/core/lib/channel/promise_based_filter.cc +2 -8
  707. data/src/core/lib/debug/trace.cc +16 -7
  708. data/src/core/lib/debug/trace.h +12 -4
  709. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +8 -26
  710. data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -1
  711. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +0 -29
  712. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +0 -3
  713. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +6 -1
  714. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
  715. data/src/core/lib/event_engine/shim.cc +2 -0
  716. data/src/core/lib/event_engine/trace.cc +1 -0
  717. data/src/core/lib/event_engine/trace.h +6 -0
  718. data/src/core/lib/experiments/experiments.cc +3 -0
  719. data/src/core/lib/experiments/experiments.h +4 -1
  720. data/src/core/lib/gpr/posix/time.cc +5 -0
  721. data/src/core/lib/gprpp/status_helper.cc +2 -2
  722. data/src/core/lib/gprpp/validation_errors.cc +8 -3
  723. data/src/core/lib/gprpp/validation_errors.h +16 -9
  724. data/src/core/lib/iomgr/buffer_list.h +0 -1
  725. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
  726. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  727. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -0
  728. data/src/core/lib/iomgr/tcp_server_posix.cc +14 -39
  729. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -12
  730. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
  731. data/src/core/lib/iomgr/timer_generic.cc +17 -16
  732. data/src/core/lib/json/json.h +61 -113
  733. data/src/core/lib/json/json_object_loader.cc +20 -20
  734. data/src/core/lib/json/json_object_loader.h +8 -3
  735. data/src/core/lib/json/json_reader.cc +58 -38
  736. data/src/core/lib/json/json_reader.h +34 -0
  737. data/src/core/lib/json/json_util.cc +6 -6
  738. data/src/core/lib/json/json_util.h +5 -4
  739. data/src/core/lib/json/json_writer.cc +19 -19
  740. data/src/core/lib/json/json_writer.h +33 -0
  741. data/src/core/lib/load_balancing/lb_policy_registry.cc +7 -7
  742. data/src/core/lib/promise/pipe.h +7 -0
  743. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +35 -37
  744. data/src/core/lib/security/credentials/external/external_account_credentials.cc +60 -62
  745. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +22 -21
  746. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +28 -27
  747. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -2
  748. data/src/core/lib/security/credentials/jwt/json_token.cc +6 -4
  749. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -5
  750. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +39 -38
  751. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -16
  752. data/src/core/lib/security/util/json_util.cc +5 -5
  753. data/src/core/lib/service_config/service_config_impl.cc +11 -5
  754. data/src/core/lib/slice/slice.h +2 -0
  755. data/src/core/lib/surface/call.cc +71 -26
  756. data/src/core/lib/surface/call.h +1 -5
  757. data/src/core/lib/surface/completion_queue.cc +2 -1
  758. data/src/core/lib/surface/server.cc +47 -19
  759. data/src/core/lib/surface/version.cc +2 -2
  760. data/src/core/lib/transport/batch_builder.h +9 -1
  761. data/src/core/lib/transport/metadata_batch.h +2 -59
  762. data/src/core/lib/transport/metadata_compression_traits.h +67 -0
  763. data/src/core/lib/transport/simple_slice_based_metadata.h +48 -0
  764. data/src/core/lib/transport/transport.h +3 -0
  765. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
  766. data/src/ruby/lib/grpc/version.rb +1 -1
  767. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  768. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +33 -47
  769. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +7 -4
  770. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +32 -2
  771. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +11 -12
  772. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +826 -0
  773. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +10 -12
  774. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +8 -10
  775. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +2 -1
  776. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +2 -1
  777. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +18 -14
  778. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +17 -21
  779. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -3
  780. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +3 -4
  781. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -72
  782. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +4 -2
  783. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +4 -3
  784. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +7 -3
  785. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +4 -2
  786. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
  787. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -8
  788. data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
  789. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
  790. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +1 -1
  791. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +8 -12
  792. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1 -10
  793. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +9 -2
  794. data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -17
  795. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +8 -4
  796. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  797. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +72 -5
  798. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +19 -21
  799. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -1
  800. data/third_party/upb/upb/{table_internal.h → alloc.h} +6 -6
  801. data/third_party/upb/upb/arena.h +4 -193
  802. data/third_party/upb/upb/array.h +4 -51
  803. data/third_party/upb/upb/base/descriptor_constants.h +104 -0
  804. data/third_party/upb/upb/base/log2.h +57 -0
  805. data/third_party/upb/upb/{status.c → base/status.c} +2 -7
  806. data/third_party/upb/upb/base/status.h +66 -0
  807. data/third_party/upb/upb/base/string_view.h +75 -0
  808. data/third_party/upb/upb/{array.c → collections/array.c} +67 -36
  809. data/third_party/upb/upb/collections/array.h +85 -0
  810. data/third_party/upb/upb/collections/array_internal.h +135 -0
  811. data/third_party/upb/upb/{map.c → collections/map.c} +53 -26
  812. data/third_party/upb/upb/collections/map.h +135 -0
  813. data/third_party/upb/upb/collections/map_gencode_util.h +78 -0
  814. data/third_party/upb/upb/collections/map_internal.h +170 -0
  815. data/third_party/upb/upb/collections/map_sorter.c +166 -0
  816. data/third_party/upb/upb/collections/map_sorter_internal.h +109 -0
  817. data/third_party/upb/upb/{message_value.h → collections/message_value.h} +12 -13
  818. data/third_party/upb/upb/decode.h +3 -62
  819. data/third_party/upb/upb/def.h +4 -384
  820. data/third_party/upb/upb/def.hpp +3 -411
  821. data/third_party/upb/upb/encode.h +3 -48
  822. data/third_party/upb/upb/extension_registry.h +3 -52
  823. data/third_party/upb/upb/{table.c → hash/common.c} +52 -110
  824. data/third_party/upb/upb/hash/common.h +199 -0
  825. data/third_party/upb/upb/hash/int_table.h +102 -0
  826. data/third_party/upb/upb/hash/str_table.h +161 -0
  827. data/third_party/upb/upb/{json_decode.c → json/decode.c} +63 -98
  828. data/third_party/upb/upb/json/decode.h +52 -0
  829. data/third_party/upb/upb/{json_encode.c → json/encode.c} +69 -45
  830. data/third_party/upb/upb/json/encode.h +70 -0
  831. data/third_party/upb/upb/json_decode.h +4 -15
  832. data/third_party/upb/upb/json_encode.h +4 -33
  833. data/third_party/upb/upb/lex/atoi.c +68 -0
  834. data/third_party/upb/upb/lex/atoi.h +53 -0
  835. data/third_party/upb/upb/{upb.c → lex/round_trip.c} +2 -11
  836. data/third_party/upb/upb/{internal/upb.h → lex/round_trip.h} +17 -30
  837. data/third_party/upb/upb/lex/strtod.c +97 -0
  838. data/third_party/upb/upb/lex/strtod.h +46 -0
  839. data/third_party/upb/upb/lex/unicode.c +57 -0
  840. data/third_party/upb/upb/lex/unicode.h +77 -0
  841. data/third_party/upb/upb/map.h +4 -85
  842. data/third_party/upb/upb/mem/alloc.c +47 -0
  843. data/third_party/upb/upb/mem/alloc.h +98 -0
  844. data/third_party/upb/upb/mem/arena.c +367 -0
  845. data/third_party/upb/upb/mem/arena.h +160 -0
  846. data/third_party/upb/upb/mem/arena_internal.h +114 -0
  847. data/third_party/upb/upb/message/accessors.c +68 -0
  848. data/third_party/upb/upb/message/accessors.h +379 -0
  849. data/third_party/upb/upb/message/accessors_internal.h +325 -0
  850. data/third_party/upb/upb/message/extension_internal.h +83 -0
  851. data/third_party/upb/upb/message/internal.h +135 -0
  852. data/third_party/upb/upb/message/message.c +180 -0
  853. data/third_party/upb/upb/message/message.h +69 -0
  854. data/third_party/upb/upb/mini_table/common.c +128 -0
  855. data/third_party/upb/upb/mini_table/common.h +170 -0
  856. data/third_party/upb/upb/mini_table/common_internal.h +111 -0
  857. data/third_party/upb/upb/{mini_table.c → mini_table/decode.c} +513 -533
  858. data/third_party/upb/upb/mini_table/decode.h +179 -0
  859. data/third_party/upb/upb/mini_table/encode.c +300 -0
  860. data/third_party/upb/upb/mini_table/encode_internal.h +111 -0
  861. data/third_party/upb/upb/{mini_table.hpp → mini_table/encode_internal.hpp} +32 -8
  862. data/third_party/upb/upb/mini_table/enum_internal.h +88 -0
  863. data/third_party/upb/upb/mini_table/extension_internal.h +47 -0
  864. data/third_party/upb/upb/{extension_registry.c → mini_table/extension_registry.c} +27 -24
  865. data/third_party/upb/upb/mini_table/extension_registry.h +104 -0
  866. data/third_party/upb/upb/mini_table/field_internal.h +192 -0
  867. data/third_party/upb/upb/mini_table/file_internal.h +47 -0
  868. data/third_party/upb/upb/mini_table/message_internal.h +136 -0
  869. data/third_party/upb/upb/mini_table/sub_internal.h +38 -0
  870. data/third_party/upb/upb/mini_table/types.h +40 -0
  871. data/third_party/upb/upb/mini_table.h +4 -157
  872. data/third_party/upb/upb/msg.h +3 -38
  873. data/third_party/upb/upb/port/atomic.h +101 -0
  874. data/third_party/upb/upb/{port_def.inc → port/def.inc} +94 -27
  875. data/third_party/upb/upb/{port_undef.inc → port/undef.inc} +13 -3
  876. data/third_party/upb/upb/{internal → port}/vsnprintf_compat.h +5 -7
  877. data/third_party/upb/upb/reflection/common.h +67 -0
  878. data/third_party/upb/upb/reflection/def.h +42 -0
  879. data/third_party/upb/upb/reflection/def.hpp +610 -0
  880. data/third_party/upb/upb/reflection/def_builder.c +357 -0
  881. data/third_party/upb/upb/reflection/def_builder_internal.h +157 -0
  882. data/third_party/upb/upb/reflection/def_pool.c +462 -0
  883. data/third_party/upb/upb/reflection/def_pool.h +108 -0
  884. data/third_party/upb/upb/reflection/def_pool_internal.h +77 -0
  885. data/third_party/upb/upb/reflection/def_type.c +50 -0
  886. data/third_party/upb/upb/reflection/def_type.h +81 -0
  887. data/third_party/upb/upb/reflection/desc_state.c +53 -0
  888. data/third_party/upb/upb/reflection/desc_state_internal.h +64 -0
  889. data/third_party/upb/upb/reflection/enum_def.c +310 -0
  890. data/third_party/upb/upb/reflection/enum_def.h +80 -0
  891. data/third_party/upb/upb/reflection/enum_def_internal.h +56 -0
  892. data/third_party/upb/upb/reflection/enum_reserved_range.c +84 -0
  893. data/third_party/upb/upb/reflection/enum_reserved_range.h +51 -0
  894. data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +55 -0
  895. data/third_party/upb/upb/reflection/enum_value_def.c +144 -0
  896. data/third_party/upb/upb/reflection/enum_value_def.h +57 -0
  897. data/third_party/upb/upb/reflection/enum_value_def_internal.h +57 -0
  898. data/third_party/upb/upb/reflection/extension_range.c +93 -0
  899. data/third_party/upb/upb/reflection/extension_range.h +55 -0
  900. data/third_party/upb/upb/reflection/extension_range_internal.h +54 -0
  901. data/third_party/upb/upb/reflection/field_def.c +930 -0
  902. data/third_party/upb/upb/reflection/field_def.h +91 -0
  903. data/third_party/upb/upb/reflection/field_def_internal.h +76 -0
  904. data/third_party/upb/upb/reflection/file_def.c +370 -0
  905. data/third_party/upb/upb/reflection/file_def.h +77 -0
  906. data/third_party/upb/upb/reflection/file_def_internal.h +57 -0
  907. data/third_party/upb/upb/reflection/message.c +233 -0
  908. data/third_party/upb/upb/reflection/message.h +102 -0
  909. data/third_party/upb/upb/reflection/message.hpp +37 -0
  910. data/third_party/upb/upb/reflection/message_def.c +718 -0
  911. data/third_party/upb/upb/reflection/message_def.h +174 -0
  912. data/third_party/upb/upb/reflection/message_def_internal.h +63 -0
  913. data/third_party/upb/upb/reflection/message_reserved_range.c +81 -0
  914. data/third_party/upb/upb/reflection/message_reserved_range.h +51 -0
  915. data/third_party/upb/upb/reflection/message_reserved_range_internal.h +55 -0
  916. data/third_party/upb/upb/reflection/method_def.c +124 -0
  917. data/third_party/upb/upb/reflection/method_def.h +59 -0
  918. data/third_party/upb/upb/reflection/method_def_internal.h +53 -0
  919. data/third_party/upb/upb/reflection/oneof_def.c +226 -0
  920. data/third_party/upb/upb/reflection/oneof_def.h +66 -0
  921. data/third_party/upb/upb/reflection/oneof_def_internal.h +57 -0
  922. data/third_party/upb/upb/reflection/service_def.c +128 -0
  923. data/third_party/upb/upb/reflection/service_def.h +60 -0
  924. data/third_party/upb/upb/reflection/service_def_internal.h +53 -0
  925. data/third_party/upb/upb/reflection.h +4 -78
  926. data/third_party/upb/upb/reflection.hpp +3 -7
  927. data/third_party/upb/upb/status.h +4 -34
  928. data/third_party/upb/upb/{collections.h → string_view.h} +7 -7
  929. data/third_party/upb/upb/{text_encode.c → text/encode.c} +74 -70
  930. data/third_party/upb/upb/text/encode.h +69 -0
  931. data/third_party/upb/upb/text_encode.h +4 -32
  932. data/third_party/upb/upb/upb.h +6 -151
  933. data/third_party/upb/upb/upb.hpp +10 -18
  934. data/third_party/upb/upb/wire/common.h +44 -0
  935. data/third_party/upb/upb/wire/common_internal.h +50 -0
  936. data/third_party/upb/upb/wire/decode.c +1343 -0
  937. data/third_party/upb/upb/wire/decode.h +108 -0
  938. data/third_party/upb/upb/{decode_fast.c → wire/decode_fast.c} +184 -225
  939. data/third_party/upb/upb/{decode_fast.h → wire/decode_fast.h} +21 -7
  940. data/third_party/upb/upb/{internal/decode.h → wire/decode_internal.h} +44 -92
  941. data/third_party/upb/upb/{encode.c → wire/encode.c} +114 -95
  942. data/third_party/upb/upb/wire/encode.h +92 -0
  943. data/third_party/upb/upb/wire/eps_copy_input_stream.c +39 -0
  944. data/third_party/upb/upb/wire/eps_copy_input_stream.h +425 -0
  945. data/third_party/upb/upb/wire/reader.c +67 -0
  946. data/third_party/upb/upb/wire/reader.h +227 -0
  947. data/third_party/upb/upb/wire/swap_internal.h +63 -0
  948. data/third_party/upb/upb/wire/types.h +41 -0
  949. data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-neon.c +1 -1
  950. data/third_party/{upb/third_party/utf8_range → utf8_range}/utf8_range.h +12 -0
  951. metadata +155 -40
  952. data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
  953. data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
  954. data/third_party/upb/upb/arena.c +0 -277
  955. data/third_party/upb/upb/decode.c +0 -1221
  956. data/third_party/upb/upb/def.c +0 -3269
  957. data/third_party/upb/upb/internal/table.h +0 -385
  958. data/third_party/upb/upb/msg.c +0 -368
  959. data/third_party/upb/upb/msg_internal.h +0 -837
  960. data/third_party/upb/upb/reflection.c +0 -323
  961. /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
  962. /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -25,333 +25,21 @@
25
25
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
26
  */
27
27
 
28
- #include "upb/mini_table.h"
28
+ #include "upb/mini_table/decode.h"
29
29
 
30
30
  #include <inttypes.h>
31
- #include <setjmp.h>
31
+ #include <stdlib.h>
32
32
 
33
- #include "upb/msg_internal.h"
34
- #include "upb/upb.h"
33
+ #include "upb/base/log2.h"
34
+ #include "upb/base/string_view.h"
35
+ #include "upb/mem/arena.h"
36
+ #include "upb/mini_table/common.h"
37
+ #include "upb/mini_table/common_internal.h"
38
+ #include "upb/mini_table/enum_internal.h"
39
+ #include "upb/mini_table/extension_internal.h"
35
40
 
36
41
  // Must be last.
37
- #include "upb/port_def.inc"
38
-
39
- typedef enum {
40
- kUpb_EncodedType_Double = 0,
41
- kUpb_EncodedType_Float = 1,
42
- kUpb_EncodedType_Fixed32 = 2,
43
- kUpb_EncodedType_Fixed64 = 3,
44
- kUpb_EncodedType_SFixed32 = 4,
45
- kUpb_EncodedType_SFixed64 = 5,
46
- kUpb_EncodedType_Int32 = 6,
47
- kUpb_EncodedType_UInt32 = 7,
48
- kUpb_EncodedType_SInt32 = 8,
49
- kUpb_EncodedType_Int64 = 9,
50
- kUpb_EncodedType_UInt64 = 10,
51
- kUpb_EncodedType_SInt64 = 11,
52
- kUpb_EncodedType_Enum = 12,
53
- kUpb_EncodedType_Bool = 13,
54
- kUpb_EncodedType_Bytes = 14,
55
- kUpb_EncodedType_String = 15,
56
- kUpb_EncodedType_Group = 16,
57
- kUpb_EncodedType_Message = 17,
58
-
59
- kUpb_EncodedType_RepeatedBase = 20,
60
- } upb_EncodedType;
61
-
62
- typedef enum {
63
- kUpb_EncodedFieldModifier_FlipPacked = 1 << 0,
64
- kUpb_EncodedFieldModifier_IsClosedEnum = 1 << 1,
65
- // upb only.
66
- kUpb_EncodedFieldModifier_IsProto3Singular = 1 << 2,
67
- kUpb_EncodedFieldModifier_IsRequired = 1 << 3,
68
- } upb_EncodedFieldModifier;
69
-
70
- enum {
71
- kUpb_EncodedValue_MinField = ' ',
72
- kUpb_EncodedValue_MaxField = 'K',
73
- kUpb_EncodedValue_MinModifier = 'L',
74
- kUpb_EncodedValue_MaxModifier = '[',
75
- kUpb_EncodedValue_End = '^',
76
- kUpb_EncodedValue_MinSkip = '_',
77
- kUpb_EncodedValue_MaxSkip = '~',
78
- kUpb_EncodedValue_OneofSeparator = '~',
79
- kUpb_EncodedValue_FieldSeparator = '|',
80
- kUpb_EncodedValue_MinOneofField = ' ',
81
- kUpb_EncodedValue_MaxOneofField = 'b',
82
- kUpb_EncodedValue_MaxEnumMask = 'A',
83
- };
84
-
85
- char upb_ToBase92(int8_t ch) {
86
- static const char kUpb_ToBase92[] = {
87
- ' ', '!', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/',
88
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
89
- '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
90
- 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
91
- 'Z', '[', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
92
- 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
93
- 'w', 'x', 'y', 'z', '{', '|', '}', '~',
94
- };
95
-
96
- UPB_ASSERT(0 <= ch && ch < 92);
97
- return kUpb_ToBase92[ch];
98
- }
99
-
100
- char upb_FromBase92(uint8_t ch) {
101
- static const int8_t kUpb_FromBase92[] = {
102
- 0, 1, -1, 2, 3, 4, 5, -1, 6, 7, 8, 9, 10, 11, 12, 13,
103
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
104
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
105
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 58, 59, 60,
106
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
107
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
108
- };
109
-
110
- if (' ' > ch || ch > '~') return -1;
111
- return kUpb_FromBase92[ch - ' '];
112
- }
113
-
114
- bool upb_IsTypePackable(upb_FieldType type) {
115
- // clang-format off
116
- static const unsigned kUnpackableTypes =
117
- (1 << kUpb_FieldType_String) |
118
- (1 << kUpb_FieldType_Bytes) |
119
- (1 << kUpb_FieldType_Message) |
120
- (1 << kUpb_FieldType_Group);
121
- // clang-format on
122
- return (1 << type) & ~kUnpackableTypes;
123
- }
124
-
125
- /** upb_MtDataEncoder *********************************************************/
126
-
127
- typedef struct {
128
- uint64_t present_values_mask;
129
- uint32_t last_written_value;
130
- } upb_MtDataEncoderInternal_EnumState;
131
-
132
- typedef struct {
133
- uint64_t msg_modifiers;
134
- uint32_t last_field_num;
135
- enum {
136
- kUpb_OneofState_NotStarted,
137
- kUpb_OneofState_StartedOneof,
138
- kUpb_OneofState_EmittedOneofField,
139
- } oneof_state;
140
- } upb_MtDataEncoderInternal_MsgState;
141
-
142
- typedef struct {
143
- char* buf_start; // Only for checking kUpb_MtDataEncoder_MinSize.
144
- union {
145
- upb_MtDataEncoderInternal_EnumState enum_state;
146
- upb_MtDataEncoderInternal_MsgState msg_state;
147
- } state;
148
- } upb_MtDataEncoderInternal;
149
-
150
- static upb_MtDataEncoderInternal* upb_MtDataEncoder_GetInternal(
151
- upb_MtDataEncoder* e, char* buf_start) {
152
- UPB_ASSERT(sizeof(upb_MtDataEncoderInternal) <= sizeof(e->internal));
153
- upb_MtDataEncoderInternal* ret = (upb_MtDataEncoderInternal*)e->internal;
154
- ret->buf_start = buf_start;
155
- return ret;
156
- }
157
-
158
- static char* upb_MtDataEncoder_Put(upb_MtDataEncoder* e, char* ptr, char ch) {
159
- upb_MtDataEncoderInternal* in = (upb_MtDataEncoderInternal*)e->internal;
160
- UPB_ASSERT(ptr - in->buf_start < kUpb_MtDataEncoder_MinSize);
161
- if (ptr == e->end) return NULL;
162
- *ptr++ = upb_ToBase92(ch);
163
- return ptr;
164
- }
165
-
166
- static char* upb_MtDataEncoder_PutBase92Varint(upb_MtDataEncoder* e, char* ptr,
167
- uint32_t val, int min, int max) {
168
- int shift = _upb_Log2Ceiling(upb_FromBase92(max) - upb_FromBase92(min) + 1);
169
- UPB_ASSERT(shift <= 6);
170
- uint32_t mask = (1 << shift) - 1;
171
- do {
172
- uint32_t bits = val & mask;
173
- ptr = upb_MtDataEncoder_Put(e, ptr, bits + upb_FromBase92(min));
174
- if (!ptr) return NULL;
175
- val >>= shift;
176
- } while (val);
177
- return ptr;
178
- }
179
-
180
- char* upb_MtDataEncoder_PutModifier(upb_MtDataEncoder* e, char* ptr,
181
- uint64_t mod) {
182
- if (mod) {
183
- ptr = upb_MtDataEncoder_PutBase92Varint(e, ptr, mod,
184
- kUpb_EncodedValue_MinModifier,
185
- kUpb_EncodedValue_MaxModifier);
186
- }
187
- return ptr;
188
- }
189
-
190
- char* upb_MtDataEncoder_StartMessage(upb_MtDataEncoder* e, char* ptr,
191
- uint64_t msg_mod) {
192
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
193
- in->state.msg_state.msg_modifiers = msg_mod;
194
- in->state.msg_state.last_field_num = 0;
195
- in->state.msg_state.oneof_state = kUpb_OneofState_NotStarted;
196
- return upb_MtDataEncoder_PutModifier(e, ptr, msg_mod);
197
- }
198
-
199
- char* upb_MtDataEncoder_PutField(upb_MtDataEncoder* e, char* ptr,
200
- upb_FieldType type, uint32_t field_num,
201
- uint64_t field_mod) {
202
- static const char kUpb_TypeToEncoded[] = {
203
- [kUpb_FieldType_Double] = kUpb_EncodedType_Double,
204
- [kUpb_FieldType_Float] = kUpb_EncodedType_Float,
205
- [kUpb_FieldType_Int64] = kUpb_EncodedType_Int64,
206
- [kUpb_FieldType_UInt64] = kUpb_EncodedType_UInt64,
207
- [kUpb_FieldType_Int32] = kUpb_EncodedType_Int32,
208
- [kUpb_FieldType_Fixed64] = kUpb_EncodedType_Fixed64,
209
- [kUpb_FieldType_Fixed32] = kUpb_EncodedType_Fixed32,
210
- [kUpb_FieldType_Bool] = kUpb_EncodedType_Bool,
211
- [kUpb_FieldType_String] = kUpb_EncodedType_String,
212
- [kUpb_FieldType_Group] = kUpb_EncodedType_Group,
213
- [kUpb_FieldType_Message] = kUpb_EncodedType_Message,
214
- [kUpb_FieldType_Bytes] = kUpb_EncodedType_Bytes,
215
- [kUpb_FieldType_UInt32] = kUpb_EncodedType_UInt32,
216
- [kUpb_FieldType_Enum] = kUpb_EncodedType_Enum,
217
- [kUpb_FieldType_SFixed32] = kUpb_EncodedType_SFixed32,
218
- [kUpb_FieldType_SFixed64] = kUpb_EncodedType_SFixed64,
219
- [kUpb_FieldType_SInt32] = kUpb_EncodedType_SInt32,
220
- [kUpb_FieldType_SInt64] = kUpb_EncodedType_SInt64,
221
- };
222
-
223
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
224
- if (field_num <= in->state.msg_state.last_field_num) return NULL;
225
- if (in->state.msg_state.last_field_num + 1 != field_num) {
226
- // Put skip.
227
- UPB_ASSERT(field_num > in->state.msg_state.last_field_num);
228
- uint32_t skip = field_num - in->state.msg_state.last_field_num;
229
- ptr = upb_MtDataEncoder_PutBase92Varint(
230
- e, ptr, skip, kUpb_EncodedValue_MinSkip, kUpb_EncodedValue_MaxSkip);
231
- if (!ptr) return NULL;
232
- }
233
- in->state.msg_state.last_field_num = field_num;
234
-
235
- uint32_t encoded_modifiers = 0;
236
-
237
- // Put field type.
238
- if (type == kUpb_FieldType_Enum &&
239
- !(field_mod & kUpb_FieldModifier_IsClosedEnum)) {
240
- type = kUpb_FieldType_Int32;
241
- }
242
-
243
- int encoded_type = kUpb_TypeToEncoded[type];
244
- if (field_mod & kUpb_FieldModifier_IsRepeated) {
245
- // Repeated fields shift the type number up (unlike other modifiers which
246
- // are bit flags).
247
- encoded_type += kUpb_EncodedType_RepeatedBase;
248
-
249
- if (upb_IsTypePackable(type)) {
250
- bool field_is_packed = field_mod & kUpb_FieldModifier_IsPacked;
251
- bool default_is_packed = in->state.msg_state.msg_modifiers &
252
- kUpb_MessageModifier_DefaultIsPacked;
253
- if (field_is_packed != default_is_packed) {
254
- encoded_modifiers |= kUpb_EncodedFieldModifier_FlipPacked;
255
- }
256
- }
257
- }
258
- ptr = upb_MtDataEncoder_Put(e, ptr, encoded_type);
259
- if (!ptr) return NULL;
260
-
261
- if (field_mod & kUpb_FieldModifier_IsProto3Singular) {
262
- encoded_modifiers |= kUpb_EncodedFieldModifier_IsProto3Singular;
263
- }
264
- if (field_mod & kUpb_FieldModifier_IsRequired) {
265
- encoded_modifiers |= kUpb_EncodedFieldModifier_IsRequired;
266
- }
267
- return upb_MtDataEncoder_PutModifier(e, ptr, encoded_modifiers);
268
- }
269
-
270
- char* upb_MtDataEncoder_StartOneof(upb_MtDataEncoder* e, char* ptr) {
271
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
272
- if (in->state.msg_state.oneof_state == kUpb_OneofState_NotStarted) {
273
- ptr = upb_MtDataEncoder_Put(e, ptr, upb_FromBase92(kUpb_EncodedValue_End));
274
- } else {
275
- ptr = upb_MtDataEncoder_Put(
276
- e, ptr, upb_FromBase92(kUpb_EncodedValue_OneofSeparator));
277
- }
278
- in->state.msg_state.oneof_state = kUpb_OneofState_StartedOneof;
279
- return ptr;
280
- }
281
-
282
- char* upb_MtDataEncoder_PutOneofField(upb_MtDataEncoder* e, char* ptr,
283
- uint32_t field_num) {
284
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
285
- if (in->state.msg_state.oneof_state == kUpb_OneofState_EmittedOneofField) {
286
- ptr = upb_MtDataEncoder_Put(
287
- e, ptr, upb_FromBase92(kUpb_EncodedValue_FieldSeparator));
288
- if (!ptr) return NULL;
289
- }
290
- ptr = upb_MtDataEncoder_PutBase92Varint(e, ptr, field_num, upb_ToBase92(0),
291
- upb_ToBase92(63));
292
- in->state.msg_state.oneof_state = kUpb_OneofState_EmittedOneofField;
293
- return ptr;
294
- }
295
-
296
- void upb_MtDataEncoder_StartEnum(upb_MtDataEncoder* e) {
297
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, NULL);
298
- in->state.enum_state.present_values_mask = 0;
299
- in->state.enum_state.last_written_value = 0;
300
- }
301
-
302
- static char* upb_MtDataEncoder_FlushDenseEnumMask(upb_MtDataEncoder* e,
303
- char* ptr) {
304
- upb_MtDataEncoderInternal* in = (upb_MtDataEncoderInternal*)e->internal;
305
- ptr = upb_MtDataEncoder_Put(e, ptr, in->state.enum_state.present_values_mask);
306
- in->state.enum_state.present_values_mask = 0;
307
- in->state.enum_state.last_written_value += 5;
308
- return ptr;
309
- }
310
-
311
- char* upb_MtDataEncoder_PutEnumValue(upb_MtDataEncoder* e, char* ptr,
312
- uint32_t val) {
313
- // TODO(b/229641772): optimize this encoding.
314
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
315
- UPB_ASSERT(val >= in->state.enum_state.last_written_value);
316
- uint32_t delta = val - in->state.enum_state.last_written_value;
317
- if (delta >= 5 && in->state.enum_state.present_values_mask) {
318
- ptr = upb_MtDataEncoder_FlushDenseEnumMask(e, ptr);
319
- if (!ptr) {
320
- return NULL;
321
- }
322
- delta -= 5;
323
- }
324
-
325
- if (delta >= 5) {
326
- ptr = upb_MtDataEncoder_PutBase92Varint(
327
- e, ptr, delta, kUpb_EncodedValue_MinSkip, kUpb_EncodedValue_MaxSkip);
328
- in->state.enum_state.last_written_value += delta;
329
- delta = 0;
330
- }
331
-
332
- UPB_ASSERT((in->state.enum_state.present_values_mask >> delta) == 0);
333
- in->state.enum_state.present_values_mask |= 1ULL << delta;
334
- return ptr;
335
- }
336
-
337
- char* upb_MtDataEncoder_EndEnum(upb_MtDataEncoder* e, char* ptr) {
338
- upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
339
- if (!in->state.enum_state.present_values_mask) return ptr;
340
- return upb_MtDataEncoder_FlushDenseEnumMask(e, ptr);
341
- }
342
-
343
- const upb_MiniTable_Field* upb_MiniTable_FindFieldByNumber(
344
- const upb_MiniTable* table, uint32_t number) {
345
- int n = table->field_count;
346
- for (int i = 0; i < n; i++) {
347
- if (table->fields[i].number == number) {
348
- return &table->fields[i];
349
- }
350
- }
351
- return NULL;
352
- }
353
-
354
- /** Data decoder **************************************************************/
42
+ #include "upb/port/def.inc"
355
43
 
356
44
  // Note: we sort by this number when calculating layout order.
357
45
  typedef enum {
@@ -382,22 +70,31 @@ typedef struct {
382
70
  typedef struct {
383
71
  const char* end;
384
72
  upb_MiniTable* table;
385
- upb_MiniTable_Field* fields;
73
+ upb_MiniTableField* fields;
386
74
  upb_MiniTablePlatform platform;
387
75
  upb_LayoutItemVector vec;
388
76
  upb_Arena* arena;
389
77
  upb_Status* status;
78
+
79
+ // When building enums.
80
+ upb_MiniTableEnum* enum_table;
81
+ uint32_t enum_value_count;
82
+ uint32_t enum_data_count;
83
+ uint32_t enum_data_capacity;
84
+
390
85
  jmp_buf err;
391
86
  } upb_MtDecoder;
392
87
 
393
88
  UPB_PRINTF(2, 3)
394
89
  UPB_NORETURN static void upb_MtDecoder_ErrorFormat(upb_MtDecoder* d,
395
90
  const char* fmt, ...) {
396
- va_list argp;
397
- upb_Status_SetErrorMessage(d->status, "Error building mini table: ");
398
- va_start(argp, fmt);
399
- upb_Status_VAppendErrorFormat(d->status, fmt, argp);
400
- va_end(argp);
91
+ if (d->status) {
92
+ va_list argp;
93
+ upb_Status_SetErrorMessage(d->status, "Error building mini table: ");
94
+ va_start(argp, fmt);
95
+ upb_Status_VAppendErrorFormat(d->status, fmt, argp);
96
+ va_end(argp);
97
+ }
401
98
  UPB_LONGJMP(d->err, 1);
402
99
  }
403
100
 
@@ -424,11 +121,10 @@ static const char* upb_MiniTable_DecodeBase92Varint(upb_MtDecoder* d,
424
121
  uint32_t val = 0;
425
122
  uint32_t shift = 0;
426
123
  const int bits_per_char =
427
- _upb_Log2Ceiling(upb_FromBase92(max) - upb_FromBase92(min));
124
+ upb_Log2Ceiling(_upb_FromBase92(max) - _upb_FromBase92(min));
428
125
  char ch = first_ch;
429
126
  while (1) {
430
- uint32_t bits = upb_FromBase92(ch) - upb_FromBase92(min);
431
- UPB_ASSERT(shift < 32);
127
+ uint32_t bits = _upb_FromBase92(ch) - _upb_FromBase92(min);
432
128
  val |= bits << shift;
433
129
  if (ptr == d->end || *ptr < min || max < *ptr) {
434
130
  *out_val = val;
@@ -436,19 +132,21 @@ static const char* upb_MiniTable_DecodeBase92Varint(upb_MtDecoder* d,
436
132
  }
437
133
  ch = *ptr++;
438
134
  shift += bits_per_char;
135
+ if (shift >= 32) upb_MtDecoder_ErrorFormat(d, "Overlong varint");
439
136
  }
440
137
  }
441
138
 
442
- static bool upb_MiniTable_HasSub(upb_MiniTable_Field* field,
139
+ static bool upb_MiniTable_HasSub(upb_MiniTableField* field,
443
140
  uint64_t msg_modifiers) {
444
- switch (field->descriptortype) {
141
+ switch (field->UPB_PRIVATE(descriptortype)) {
445
142
  case kUpb_FieldType_Message:
446
143
  case kUpb_FieldType_Group:
447
144
  case kUpb_FieldType_Enum:
448
145
  return true;
449
146
  case kUpb_FieldType_String:
450
147
  if (!(msg_modifiers & kUpb_MessageModifier_ValidateUtf8)) {
451
- field->descriptortype = kUpb_FieldType_Bytes;
148
+ field->UPB_PRIVATE(descriptortype) = kUpb_FieldType_Bytes;
149
+ field->mode |= kUpb_LabelFlags_IsAlternate;
452
150
  }
453
151
  return false;
454
152
  default:
@@ -456,19 +154,27 @@ static bool upb_MiniTable_HasSub(upb_MiniTable_Field* field,
456
154
  }
457
155
  }
458
156
 
459
- static bool upb_MtDecoder_FieldIsPackable(upb_MiniTable_Field* field) {
157
+ static bool upb_MtDecoder_FieldIsPackable(upb_MiniTableField* field) {
460
158
  return (field->mode & kUpb_FieldMode_Array) &&
461
- upb_IsTypePackable(field->descriptortype);
159
+ upb_FieldType_IsPackable(field->UPB_PRIVATE(descriptortype));
462
160
  }
463
161
 
464
- static void upb_MiniTable_SetTypeAndSub(upb_MiniTable_Field* field,
162
+ static void upb_MiniTable_SetTypeAndSub(upb_MiniTableField* field,
465
163
  upb_FieldType type, uint32_t* sub_count,
466
- uint64_t msg_modifiers) {
467
- field->descriptortype = type;
164
+ uint64_t msg_modifiers,
165
+ bool is_proto3_enum) {
166
+ field->UPB_PRIVATE(descriptortype) = type;
167
+
168
+ if (is_proto3_enum) {
169
+ UPB_ASSERT(field->UPB_PRIVATE(descriptortype) == kUpb_FieldType_Enum);
170
+ field->UPB_PRIVATE(descriptortype) = kUpb_FieldType_Int32;
171
+ field->mode |= kUpb_LabelFlags_IsAlternate;
172
+ }
173
+
468
174
  if (upb_MiniTable_HasSub(field, msg_modifiers)) {
469
- field->submsg_index = sub_count ? (*sub_count)++ : 0;
175
+ field->UPB_PRIVATE(submsg_index) = sub_count ? (*sub_count)++ : 0;
470
176
  } else {
471
- field->submsg_index = kUpb_NoSub;
177
+ field->UPB_PRIVATE(submsg_index) = kUpb_NoSub;
472
178
  }
473
179
 
474
180
  if (upb_MtDecoder_FieldIsPackable(field) &&
@@ -477,8 +183,30 @@ static void upb_MiniTable_SetTypeAndSub(upb_MiniTable_Field* field,
477
183
  }
478
184
  }
479
185
 
186
+ static const char kUpb_EncodedToType[] = {
187
+ [kUpb_EncodedType_Double] = kUpb_FieldType_Double,
188
+ [kUpb_EncodedType_Float] = kUpb_FieldType_Float,
189
+ [kUpb_EncodedType_Int64] = kUpb_FieldType_Int64,
190
+ [kUpb_EncodedType_UInt64] = kUpb_FieldType_UInt64,
191
+ [kUpb_EncodedType_Int32] = kUpb_FieldType_Int32,
192
+ [kUpb_EncodedType_Fixed64] = kUpb_FieldType_Fixed64,
193
+ [kUpb_EncodedType_Fixed32] = kUpb_FieldType_Fixed32,
194
+ [kUpb_EncodedType_Bool] = kUpb_FieldType_Bool,
195
+ [kUpb_EncodedType_String] = kUpb_FieldType_String,
196
+ [kUpb_EncodedType_Group] = kUpb_FieldType_Group,
197
+ [kUpb_EncodedType_Message] = kUpb_FieldType_Message,
198
+ [kUpb_EncodedType_Bytes] = kUpb_FieldType_Bytes,
199
+ [kUpb_EncodedType_UInt32] = kUpb_FieldType_UInt32,
200
+ [kUpb_EncodedType_OpenEnum] = kUpb_FieldType_Enum,
201
+ [kUpb_EncodedType_SFixed32] = kUpb_FieldType_SFixed32,
202
+ [kUpb_EncodedType_SFixed64] = kUpb_FieldType_SFixed64,
203
+ [kUpb_EncodedType_SInt32] = kUpb_FieldType_SInt32,
204
+ [kUpb_EncodedType_SInt64] = kUpb_FieldType_SInt64,
205
+ [kUpb_EncodedType_ClosedEnum] = kUpb_FieldType_Enum,
206
+ };
207
+
480
208
  static void upb_MiniTable_SetField(upb_MtDecoder* d, uint8_t ch,
481
- upb_MiniTable_Field* field,
209
+ upb_MiniTableField* field,
482
210
  uint64_t msg_modifiers,
483
211
  uint32_t* sub_count) {
484
212
  static const char kUpb_EncodedToFieldRep[] = {
@@ -491,61 +219,50 @@ static void upb_MiniTable_SetField(upb_MtDecoder* d, uint8_t ch,
491
219
  [kUpb_EncodedType_Fixed32] = kUpb_FieldRep_4Byte,
492
220
  [kUpb_EncodedType_Bool] = kUpb_FieldRep_1Byte,
493
221
  [kUpb_EncodedType_String] = kUpb_FieldRep_StringView,
494
- [kUpb_EncodedType_Group] = kUpb_FieldRep_Pointer,
495
- [kUpb_EncodedType_Message] = kUpb_FieldRep_Pointer,
496
222
  [kUpb_EncodedType_Bytes] = kUpb_FieldRep_StringView,
497
223
  [kUpb_EncodedType_UInt32] = kUpb_FieldRep_4Byte,
498
- [kUpb_EncodedType_Enum] = kUpb_FieldRep_4Byte,
224
+ [kUpb_EncodedType_OpenEnum] = kUpb_FieldRep_4Byte,
499
225
  [kUpb_EncodedType_SFixed32] = kUpb_FieldRep_4Byte,
500
226
  [kUpb_EncodedType_SFixed64] = kUpb_FieldRep_8Byte,
501
227
  [kUpb_EncodedType_SInt32] = kUpb_FieldRep_4Byte,
502
228
  [kUpb_EncodedType_SInt64] = kUpb_FieldRep_8Byte,
229
+ [kUpb_EncodedType_ClosedEnum] = kUpb_FieldRep_4Byte,
503
230
  };
504
231
 
505
- static const char kUpb_EncodedToType[] = {
506
- [kUpb_EncodedType_Double] = kUpb_FieldType_Double,
507
- [kUpb_EncodedType_Float] = kUpb_FieldType_Float,
508
- [kUpb_EncodedType_Int64] = kUpb_FieldType_Int64,
509
- [kUpb_EncodedType_UInt64] = kUpb_FieldType_UInt64,
510
- [kUpb_EncodedType_Int32] = kUpb_FieldType_Int32,
511
- [kUpb_EncodedType_Fixed64] = kUpb_FieldType_Fixed64,
512
- [kUpb_EncodedType_Fixed32] = kUpb_FieldType_Fixed32,
513
- [kUpb_EncodedType_Bool] = kUpb_FieldType_Bool,
514
- [kUpb_EncodedType_String] = kUpb_FieldType_String,
515
- [kUpb_EncodedType_Group] = kUpb_FieldType_Group,
516
- [kUpb_EncodedType_Message] = kUpb_FieldType_Message,
517
- [kUpb_EncodedType_Bytes] = kUpb_FieldType_Bytes,
518
- [kUpb_EncodedType_UInt32] = kUpb_FieldType_UInt32,
519
- [kUpb_EncodedType_Enum] = kUpb_FieldType_Enum,
520
- [kUpb_EncodedType_SFixed32] = kUpb_FieldType_SFixed32,
521
- [kUpb_EncodedType_SFixed64] = kUpb_FieldType_SFixed64,
522
- [kUpb_EncodedType_SInt32] = kUpb_FieldType_SInt32,
523
- [kUpb_EncodedType_SInt64] = kUpb_FieldType_SInt64,
524
- };
232
+ char pointer_rep = d->platform == kUpb_MiniTablePlatform_32Bit
233
+ ? kUpb_FieldRep_4Byte
234
+ : kUpb_FieldRep_8Byte;
525
235
 
526
- int8_t type = upb_FromBase92(ch);
527
- if (ch >= upb_ToBase92(kUpb_EncodedType_RepeatedBase)) {
236
+ int8_t type = _upb_FromBase92(ch);
237
+ if (ch >= _upb_ToBase92(kUpb_EncodedType_RepeatedBase)) {
528
238
  type -= kUpb_EncodedType_RepeatedBase;
529
239
  field->mode = kUpb_FieldMode_Array;
530
- field->mode |= kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift;
240
+ field->mode |= pointer_rep << kUpb_FieldRep_Shift;
531
241
  field->offset = kNoPresence;
532
242
  } else {
533
243
  field->mode = kUpb_FieldMode_Scalar;
534
- field->mode |= kUpb_EncodedToFieldRep[type] << kUpb_FieldRep_Shift;
535
244
  field->offset = kHasbitPresence;
245
+ if (type == kUpb_EncodedType_Group || type == kUpb_EncodedType_Message) {
246
+ field->mode |= pointer_rep << kUpb_FieldRep_Shift;
247
+ } else if ((unsigned long)type >= sizeof(kUpb_EncodedToFieldRep)) {
248
+ upb_MtDecoder_ErrorFormat(d, "Invalid field type: %d", (int)type);
249
+ UPB_UNREACHABLE();
250
+ } else {
251
+ field->mode |= kUpb_EncodedToFieldRep[type] << kUpb_FieldRep_Shift;
252
+ }
536
253
  }
537
- if (type >= 18) {
254
+ if ((unsigned long)type >= sizeof(kUpb_EncodedToType)) {
538
255
  upb_MtDecoder_ErrorFormat(d, "Invalid field type: %d", (int)type);
539
256
  UPB_UNREACHABLE();
540
257
  }
541
258
  upb_MiniTable_SetTypeAndSub(field, kUpb_EncodedToType[type], sub_count,
542
- msg_modifiers);
259
+ msg_modifiers, type == kUpb_EncodedType_OpenEnum);
543
260
  }
544
261
 
545
262
  static void upb_MtDecoder_ModifyField(upb_MtDecoder* d,
546
263
  uint32_t message_modifiers,
547
264
  uint32_t field_modifiers,
548
- upb_MiniTable_Field* field) {
265
+ upb_MiniTableField* field) {
549
266
  if (field_modifiers & kUpb_EncodedFieldModifier_FlipPacked) {
550
267
  if (!upb_MtDecoder_FieldIsPackable(field)) {
551
268
  upb_MtDecoder_ErrorFormat(
@@ -607,13 +324,15 @@ static void upb_MtDecoder_PushOneof(upb_MtDecoder* d, upb_LayoutItem item) {
607
324
  size_t upb_MtDecoder_SizeOfRep(upb_FieldRep rep,
608
325
  upb_MiniTablePlatform platform) {
609
326
  static const uint8_t kRepToSize32[] = {
610
- [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
611
- [kUpb_FieldRep_Pointer] = 4, [kUpb_FieldRep_StringView] = 8,
327
+ [kUpb_FieldRep_1Byte] = 1,
328
+ [kUpb_FieldRep_4Byte] = 4,
329
+ [kUpb_FieldRep_StringView] = 8,
612
330
  [kUpb_FieldRep_8Byte] = 8,
613
331
  };
614
332
  static const uint8_t kRepToSize64[] = {
615
- [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
616
- [kUpb_FieldRep_Pointer] = 8, [kUpb_FieldRep_StringView] = 16,
333
+ [kUpb_FieldRep_1Byte] = 1,
334
+ [kUpb_FieldRep_4Byte] = 4,
335
+ [kUpb_FieldRep_StringView] = 16,
617
336
  [kUpb_FieldRep_8Byte] = 8,
618
337
  };
619
338
  UPB_ASSERT(sizeof(upb_StringView) ==
@@ -625,13 +344,15 @@ size_t upb_MtDecoder_SizeOfRep(upb_FieldRep rep,
625
344
  size_t upb_MtDecoder_AlignOfRep(upb_FieldRep rep,
626
345
  upb_MiniTablePlatform platform) {
627
346
  static const uint8_t kRepToAlign32[] = {
628
- [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
629
- [kUpb_FieldRep_Pointer] = 4, [kUpb_FieldRep_StringView] = 4,
347
+ [kUpb_FieldRep_1Byte] = 1,
348
+ [kUpb_FieldRep_4Byte] = 4,
349
+ [kUpb_FieldRep_StringView] = 4,
630
350
  [kUpb_FieldRep_8Byte] = 8,
631
351
  };
632
352
  static const uint8_t kRepToAlign64[] = {
633
- [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
634
- [kUpb_FieldRep_Pointer] = 8, [kUpb_FieldRep_StringView] = 8,
353
+ [kUpb_FieldRep_1Byte] = 1,
354
+ [kUpb_FieldRep_4Byte] = 4,
355
+ [kUpb_FieldRep_StringView] = 8,
635
356
  [kUpb_FieldRep_8Byte] = 8,
636
357
  };
637
358
  UPB_ASSERT(UPB_ALIGN_OF(upb_StringView) ==
@@ -648,7 +369,7 @@ static const char* upb_MtDecoder_DecodeOneofField(upb_MtDecoder* d,
648
369
  ptr = upb_MiniTable_DecodeBase92Varint(
649
370
  d, ptr, first_ch, kUpb_EncodedValue_MinOneofField,
650
371
  kUpb_EncodedValue_MaxOneofField, &field_num);
651
- upb_MiniTable_Field* f =
372
+ upb_MiniTableField* f =
652
373
  (void*)upb_MiniTable_FindFieldByNumber(d->table, field_num);
653
374
 
654
375
  if (!f) {
@@ -703,7 +424,7 @@ static const char* upb_MtDecoder_DecodeOneofs(upb_MtDecoder* d,
703
424
 
704
425
  static const char* upb_MtDecoder_ParseModifier(upb_MtDecoder* d,
705
426
  const char* ptr, char first_ch,
706
- upb_MiniTable_Field* last_field,
427
+ upb_MiniTableField* last_field,
707
428
  uint64_t* msg_modifiers) {
708
429
  uint32_t mod;
709
430
  ptr = upb_MiniTable_DecodeBase92Varint(d, ptr, first_ch,
@@ -724,16 +445,19 @@ static const char* upb_MtDecoder_ParseModifier(upb_MtDecoder* d,
724
445
 
725
446
  static void upb_MtDecoder_AllocateSubs(upb_MtDecoder* d, uint32_t sub_count) {
726
447
  size_t subs_bytes = sizeof(*d->table->subs) * sub_count;
727
- d->table->subs = upb_Arena_Malloc(d->arena, subs_bytes);
448
+ void* subs = upb_Arena_Malloc(d->arena, subs_bytes);
449
+ memset(subs, 0, subs_bytes);
450
+ d->table->subs = subs;
728
451
  upb_MtDecoder_CheckOutOfMemory(d, d->table->subs);
729
452
  }
730
453
 
731
- static void upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr, size_t len,
732
- void* fields, size_t field_size,
733
- uint16_t* field_count, uint32_t* sub_count) {
454
+ static const char* upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr,
455
+ size_t len, void* fields,
456
+ size_t field_size, uint16_t* field_count,
457
+ uint32_t* sub_count) {
734
458
  uint64_t msg_modifiers = 0;
735
459
  uint32_t last_field_number = 0;
736
- upb_MiniTable_Field* last_field = NULL;
460
+ upb_MiniTableField* last_field = NULL;
737
461
  bool need_dense_below = d->table != NULL;
738
462
 
739
463
  d->end = UPB_PTRADD(ptr, len);
@@ -741,7 +465,11 @@ static void upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr, size_t len,
741
465
  while (ptr < d->end) {
742
466
  char ch = *ptr++;
743
467
  if (ch <= kUpb_EncodedValue_MaxField) {
744
- upb_MiniTable_Field* field = fields;
468
+ if (!d->table && last_field) {
469
+ // For extensions, consume only a single field and then return.
470
+ return --ptr;
471
+ }
472
+ upb_MiniTableField* field = fields;
745
473
  *field_count += 1;
746
474
  fields = (char*)fields + field_size;
747
475
  field->number = ++last_field_number;
@@ -771,12 +499,17 @@ static void upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr, size_t len,
771
499
  kUpb_EncodedValue_MaxSkip, &skip);
772
500
  last_field_number += skip;
773
501
  last_field_number--; // Next field seen will increment.
502
+ } else {
503
+ upb_MtDecoder_ErrorFormat(d, "Invalid char: %c", ch);
504
+ UPB_UNREACHABLE();
774
505
  }
775
506
  }
776
507
 
777
508
  if (need_dense_below) {
778
509
  d->table->dense_below = d->table->field_count;
779
510
  }
511
+
512
+ return ptr;
780
513
  }
781
514
 
782
515
  static void upb_MtDecoder_ParseMessage(upb_MtDecoder* d, const char* data,
@@ -807,8 +540,8 @@ int upb_MtDecoder_CompareFields(const void* _a, const void* _b) {
807
540
  // 2. field_index (smallest numbers first)
808
541
  // The main goal of this is to reduce space lost to padding.
809
542
  // Later we may have more subtle reasons to prefer a different ordering.
810
- const int rep_bits = _upb_Log2Ceiling(kUpb_FieldRep_Max);
811
- const int type_bits = _upb_Log2Ceiling(kUpb_LayoutItemType_Max);
543
+ const int rep_bits = upb_Log2Ceiling(kUpb_FieldRep_Max);
544
+ const int type_bits = upb_Log2Ceiling(kUpb_LayoutItemType_Max);
812
545
  const int idx_bits = (sizeof(a->field_index) * 8);
813
546
  UPB_ASSERT(idx_bits + rep_bits + type_bits < 32);
814
547
  #define UPB_COMBINE(rep, ty, idx) (((rep << type_bits) | ty) << idx_bits) | idx
@@ -823,7 +556,7 @@ static bool upb_MtDecoder_SortLayoutItems(upb_MtDecoder* d) {
823
556
  // Add items for all non-oneof fields (oneofs were already added).
824
557
  int n = d->table->field_count;
825
558
  for (int i = 0; i < n; i++) {
826
- upb_MiniTable_Field* f = &d->fields[i];
559
+ upb_MiniTableField* f = &d->fields[i];
827
560
  if (f->offset >= kOneofBase) continue;
828
561
  upb_LayoutItem item = {.field_index = i,
829
562
  .rep = f->mode >> kUpb_FieldRep_Shift,
@@ -849,7 +582,7 @@ static void upb_MtDecoder_AssignHasbits(upb_MiniTable* ret) {
849
582
 
850
583
  // First assign required fields, which must have the lowest hasbits.
851
584
  for (int i = 0; i < n; i++) {
852
- upb_MiniTable_Field* field = (upb_MiniTable_Field*)&ret->fields[i];
585
+ upb_MiniTableField* field = (upb_MiniTableField*)&ret->fields[i];
853
586
  if (field->offset == kRequiredPresence) {
854
587
  field->presence = ++last_hasbit;
855
588
  } else if (field->offset == kNoPresence) {
@@ -860,7 +593,7 @@ static void upb_MtDecoder_AssignHasbits(upb_MiniTable* ret) {
860
593
 
861
594
  // Next assign non-required hasbit fields.
862
595
  for (int i = 0; i < n; i++) {
863
- upb_MiniTable_Field* field = (upb_MiniTable_Field*)&ret->fields[i];
596
+ upb_MiniTableField* field = (upb_MiniTableField*)&ret->fields[i];
864
597
  if (field->offset == kHasbitPresence) {
865
598
  field->presence = ++last_hasbit;
866
599
  }
@@ -873,7 +606,13 @@ size_t upb_MtDecoder_Place(upb_MtDecoder* d, upb_FieldRep rep) {
873
606
  size_t size = upb_MtDecoder_SizeOfRep(rep, d->platform);
874
607
  size_t align = upb_MtDecoder_AlignOfRep(rep, d->platform);
875
608
  size_t ret = UPB_ALIGN_UP(d->table->size, align);
876
- d->table->size = ret + size;
609
+ static const size_t max = UINT16_MAX;
610
+ size_t new_size = ret + size;
611
+ if (new_size > max) {
612
+ upb_MtDecoder_ErrorFormat(
613
+ d, "Message size exceeded maximum size of %zu bytes", max);
614
+ }
615
+ d->table->size = new_size;
877
616
  return ret;
878
617
  }
879
618
 
@@ -889,7 +628,7 @@ static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
889
628
  // actual offsets will overwrite the links of the linked list.
890
629
  for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
891
630
  if (item->type != kUpb_LayoutItemType_OneofCase) continue;
892
- upb_MiniTable_Field* f = &d->fields[item->field_index];
631
+ upb_MiniTableField* f = &d->fields[item->field_index];
893
632
  while (true) {
894
633
  f->presence = ~item->offset;
895
634
  if (f->offset == kUpb_LayoutItem_IndexSentinel) break;
@@ -900,7 +639,7 @@ static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
900
639
 
901
640
  // Assign offsets.
902
641
  for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
903
- upb_MiniTable_Field* f = &d->fields[item->field_index];
642
+ upb_MiniTableField* f = &d->fields[item->field_index];
904
643
  switch (item->type) {
905
644
  case kUpb_LayoutItemType_OneofField:
906
645
  while (true) {
@@ -926,6 +665,141 @@ static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
926
665
  d->table->size = UPB_ALIGN_UP(d->table->size, 8);
927
666
  }
928
667
 
668
+ static void upb_MtDecoder_ValidateEntryField(upb_MtDecoder* d,
669
+ const upb_MiniTableField* f,
670
+ uint32_t expected_num) {
671
+ const char* name = expected_num == 1 ? "key" : "val";
672
+ if (f->number != expected_num) {
673
+ upb_MtDecoder_ErrorFormat(d,
674
+ "map %s did not have expected number (%d vs %d)",
675
+ name, expected_num, (int)f->number);
676
+ }
677
+
678
+ if (upb_IsRepeatedOrMap(f)) {
679
+ upb_MtDecoder_ErrorFormat(
680
+ d, "map %s cannot be repeated or map, or be in oneof", name);
681
+ }
682
+
683
+ uint32_t not_ok_types;
684
+ if (expected_num == 1) {
685
+ not_ok_types = (1 << kUpb_FieldType_Float) | (1 << kUpb_FieldType_Double) |
686
+ (1 << kUpb_FieldType_Message) | (1 << kUpb_FieldType_Group) |
687
+ (1 << kUpb_FieldType_Bytes) | (1 << kUpb_FieldType_Enum);
688
+ } else {
689
+ not_ok_types = 1 << kUpb_FieldType_Group;
690
+ }
691
+
692
+ if ((1 << upb_MiniTableField_Type(f)) & not_ok_types) {
693
+ upb_MtDecoder_ErrorFormat(d, "map %s cannot have type %d", name,
694
+ (int)f->UPB_PRIVATE(descriptortype));
695
+ }
696
+ }
697
+
698
+ static void upb_MtDecoder_ParseMap(upb_MtDecoder* d, const char* data,
699
+ size_t len) {
700
+ upb_MtDecoder_ParseMessage(d, data, len);
701
+ upb_MtDecoder_AssignHasbits(d->table);
702
+
703
+ if (UPB_UNLIKELY(d->table->field_count != 2)) {
704
+ upb_MtDecoder_ErrorFormat(d, "%hu fields in map", d->table->field_count);
705
+ UPB_UNREACHABLE();
706
+ }
707
+
708
+ upb_LayoutItem* end = UPB_PTRADD(d->vec.data, d->vec.size);
709
+ for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
710
+ if (item->type == kUpb_LayoutItemType_OneofCase) {
711
+ upb_MtDecoder_ErrorFormat(d, "Map entry cannot have oneof");
712
+ }
713
+ }
714
+
715
+ upb_MtDecoder_ValidateEntryField(d, &d->table->fields[0], 1);
716
+ upb_MtDecoder_ValidateEntryField(d, &d->table->fields[1], 2);
717
+
718
+ // Map entries have a pre-determined layout, regardless of types.
719
+ // NOTE: sync with mini_table/message_internal.h.
720
+ const size_t kv_size = d->platform == kUpb_MiniTablePlatform_32Bit ? 8 : 16;
721
+ const size_t hasbit_size = 8;
722
+ d->fields[0].offset = hasbit_size;
723
+ d->fields[1].offset = hasbit_size + kv_size;
724
+ d->table->size = UPB_ALIGN_UP(hasbit_size + kv_size + kv_size, 8);
725
+
726
+ // Map entries have a special bit set to signal it's a map entry, used in
727
+ // upb_MiniTable_SetSubMessage() below.
728
+ d->table->ext |= kUpb_ExtMode_IsMapEntry;
729
+ }
730
+
731
+ static void upb_MtDecoder_ParseMessageSet(upb_MtDecoder* d, const char* data,
732
+ size_t len) {
733
+ if (len > 0) {
734
+ upb_MtDecoder_ErrorFormat(d, "Invalid message set encode length: %zu", len);
735
+ UPB_UNREACHABLE();
736
+ }
737
+
738
+ upb_MiniTable* ret = d->table;
739
+ ret->size = 0;
740
+ ret->field_count = 0;
741
+ ret->ext = kUpb_ExtMode_IsMessageSet;
742
+ ret->dense_below = 0;
743
+ ret->table_mask = -1;
744
+ ret->required_count = 0;
745
+ }
746
+
747
+ static upb_MiniTable* upb_MtDecoder_DoBuildMiniTableWithBuf(
748
+ upb_MtDecoder* decoder, const char* data, size_t len, void** buf,
749
+ size_t* buf_size) {
750
+ upb_MtDecoder_CheckOutOfMemory(decoder, decoder->table);
751
+
752
+ decoder->table->size = 0;
753
+ decoder->table->field_count = 0;
754
+ decoder->table->ext = kUpb_ExtMode_NonExtendable;
755
+ decoder->table->dense_below = 0;
756
+ decoder->table->table_mask = -1;
757
+ decoder->table->required_count = 0;
758
+
759
+ // Strip off and verify the version tag.
760
+ if (!len--) goto done;
761
+ const char vers = *data++;
762
+
763
+ switch (vers) {
764
+ case kUpb_EncodedVersion_MapV1:
765
+ upb_MtDecoder_ParseMap(decoder, data, len);
766
+ break;
767
+
768
+ case kUpb_EncodedVersion_MessageV1:
769
+ upb_MtDecoder_ParseMessage(decoder, data, len);
770
+ upb_MtDecoder_AssignHasbits(decoder->table);
771
+ upb_MtDecoder_SortLayoutItems(decoder);
772
+ upb_MtDecoder_AssignOffsets(decoder);
773
+ break;
774
+
775
+ case kUpb_EncodedVersion_MessageSetV1:
776
+ upb_MtDecoder_ParseMessageSet(decoder, data, len);
777
+ break;
778
+
779
+ default:
780
+ upb_MtDecoder_ErrorFormat(decoder, "Invalid message version: %c", vers);
781
+ UPB_UNREACHABLE();
782
+ }
783
+
784
+ done:
785
+ *buf = decoder->vec.data;
786
+ *buf_size = decoder->vec.capacity * sizeof(*decoder->vec.data);
787
+ return decoder->table;
788
+ }
789
+
790
+ static upb_MiniTable* upb_MtDecoder_BuildMiniTableWithBuf(
791
+ upb_MtDecoder* const decoder, const char* const data, const size_t len,
792
+ void** const buf, size_t* const buf_size) {
793
+ if (UPB_SETJMP(decoder->err) != 0) {
794
+ *buf = decoder->vec.data;
795
+ *buf_size = decoder->vec.capacity * sizeof(*decoder->vec.data);
796
+ return NULL;
797
+ }
798
+
799
+ return upb_MtDecoder_DoBuildMiniTableWithBuf(decoder, data, len, buf,
800
+ buf_size);
801
+ }
802
+
929
803
  upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
930
804
  upb_MiniTablePlatform platform,
931
805
  upb_Arena* arena, void** buf,
@@ -944,177 +818,198 @@ upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
944
818
  .table = upb_Arena_Malloc(arena, sizeof(*decoder.table)),
945
819
  };
946
820
 
947
- if (UPB_SETJMP(decoder.err)) {
948
- decoder.table = NULL;
949
- goto done;
950
- }
951
-
952
- upb_MtDecoder_CheckOutOfMemory(&decoder, decoder.table);
953
-
954
- decoder.table->size = 0;
955
- decoder.table->field_count = 0;
956
- decoder.table->ext = kUpb_ExtMode_NonExtendable;
957
- decoder.table->dense_below = 0;
958
- decoder.table->table_mask = 0;
959
- decoder.table->required_count = 0;
960
-
961
- upb_MtDecoder_ParseMessage(&decoder, data, len);
962
- upb_MtDecoder_AssignHasbits(decoder.table);
963
- upb_MtDecoder_SortLayoutItems(&decoder);
964
- upb_MtDecoder_AssignOffsets(&decoder);
965
-
966
- done:
967
- *buf = decoder.vec.data;
968
- *buf_size = decoder.vec.capacity / sizeof(*decoder.vec.data);
969
- return decoder.table;
821
+ return upb_MtDecoder_BuildMiniTableWithBuf(&decoder, data, len, buf,
822
+ buf_size);
970
823
  }
971
824
 
972
- upb_MiniTable* upb_MiniTable_BuildMessageSet(upb_MiniTablePlatform platform,
973
- upb_Arena* arena) {
974
- upb_MiniTable* ret = upb_Arena_Malloc(arena, sizeof(*ret));
975
- if (!ret) return NULL;
976
-
977
- ret->size = 0;
978
- ret->field_count = 0;
979
- ret->ext = kUpb_ExtMode_IsMessageSet;
980
- ret->dense_below = 0;
981
- ret->table_mask = 0;
982
- ret->required_count = 0;
983
- return ret;
825
+ static size_t upb_MiniTableEnum_Size(size_t count) {
826
+ return sizeof(upb_MiniTableEnum) + count * sizeof(uint32_t);
984
827
  }
985
828
 
986
- upb_MiniTable* upb_MiniTable_BuildMapEntry(upb_FieldType key_type,
987
- upb_FieldType value_type,
988
- bool value_is_proto3_enum,
989
- upb_MiniTablePlatform platform,
990
- upb_Arena* arena) {
991
- upb_MiniTable* ret = upb_Arena_Malloc(arena, sizeof(*ret));
992
- upb_MiniTable_Field* fields = upb_Arena_Malloc(arena, sizeof(*fields) * 2);
993
- if (!ret || !fields) return NULL;
994
-
995
- upb_MiniTable_Sub* subs = NULL;
996
- if (value_is_proto3_enum) value_type = kUpb_FieldType_Int32;
997
- if (value_type == kUpb_FieldType_Message ||
998
- value_type == kUpb_FieldType_Group || value_type == kUpb_FieldType_Enum) {
999
- subs = upb_Arena_Malloc(arena, sizeof(*subs));
1000
- if (!subs) return NULL;
829
+ static upb_MiniTableEnum* _upb_MiniTable_AddEnumDataMember(upb_MtDecoder* d,
830
+ uint32_t val) {
831
+ if (d->enum_data_count == d->enum_data_capacity) {
832
+ size_t old_sz = upb_MiniTableEnum_Size(d->enum_data_capacity);
833
+ d->enum_data_capacity = UPB_MAX(2, d->enum_data_capacity * 2);
834
+ size_t new_sz = upb_MiniTableEnum_Size(d->enum_data_capacity);
835
+ d->enum_table = upb_Arena_Realloc(d->arena, d->enum_table, old_sz, new_sz);
836
+ upb_MtDecoder_CheckOutOfMemory(d, d->enum_table);
1001
837
  }
1002
-
1003
- size_t field_size =
1004
- upb_MtDecoder_SizeOfRep(kUpb_FieldRep_StringView, platform);
1005
-
1006
- fields[0].number = 1;
1007
- fields[1].number = 2;
1008
- fields[0].mode = kUpb_FieldMode_Scalar;
1009
- fields[1].mode = kUpb_FieldMode_Scalar;
1010
- fields[0].presence = 0;
1011
- fields[1].presence = 0;
1012
- fields[0].offset = 0;
1013
- fields[1].offset = field_size;
1014
-
1015
- upb_MiniTable_SetTypeAndSub(&fields[0], key_type, NULL, 0);
1016
- upb_MiniTable_SetTypeAndSub(&fields[1], value_type, NULL, 0);
1017
-
1018
- ret->size = UPB_ALIGN_UP(2 * field_size, 8);
1019
- ret->field_count = 2;
1020
- ret->ext = kUpb_ExtMode_NonExtendable | kUpb_ExtMode_IsMapEntry;
1021
- ret->dense_below = 2;
1022
- ret->table_mask = 0;
1023
- ret->required_count = 0;
1024
- ret->subs = subs;
1025
- ret->fields = fields;
1026
- return ret;
838
+ d->enum_table->data[d->enum_data_count++] = val;
839
+ return d->enum_table;
1027
840
  }
1028
841
 
1029
- static bool upb_MiniTable_BuildEnumValue(upb_MtDecoder* d,
1030
- upb_MiniTable_Enum* table,
1031
- uint32_t val, upb_Arena* arena) {
1032
- if (val < 64) {
1033
- table->mask |= 1ULL << val;
1034
- return true;
842
+ static void upb_MiniTableEnum_BuildValue(upb_MtDecoder* d, uint32_t val) {
843
+ upb_MiniTableEnum* table = d->enum_table;
844
+ d->enum_value_count++;
845
+ if (table->value_count || (val > 512 && d->enum_value_count < val / 32)) {
846
+ if (table->value_count == 0) {
847
+ assert(d->enum_data_count == table->mask_limit / 32);
848
+ }
849
+ table = _upb_MiniTable_AddEnumDataMember(d, val);
850
+ table->value_count++;
851
+ } else {
852
+ uint32_t new_mask_limit = ((val / 32) + 1) * 32;
853
+ while (table->mask_limit < new_mask_limit) {
854
+ table = _upb_MiniTable_AddEnumDataMember(d, 0);
855
+ table->mask_limit += 32;
856
+ }
857
+ table->data[val / 32] |= 1ULL << (val % 32);
1035
858
  }
1036
-
1037
- int32_t* values = (void*)table->values;
1038
- values = upb_Arena_Realloc(arena, values, table->value_count * 4,
1039
- (table->value_count + 1) * 4);
1040
- upb_MtDecoder_CheckOutOfMemory(d, values);
1041
- values[table->value_count++] = (int32_t)val;
1042
- table->values = values;
1043
- return true;
1044
859
  }
1045
860
 
1046
- upb_MiniTable_Enum* upb_MiniTable_BuildEnum(const char* data, size_t len,
1047
- upb_Arena* arena,
1048
- upb_Status* status) {
1049
- upb_MtDecoder d = {
1050
- .status = status,
1051
- .end = UPB_PTRADD(data, len),
1052
- };
1053
-
1054
- if (UPB_SETJMP(d.err)) {
1055
- return NULL;
861
+ static upb_MiniTableEnum* upb_MtDecoder_DoBuildMiniTableEnum(
862
+ upb_MtDecoder* decoder, const char* data, size_t len) {
863
+ // If the string is non-empty then it must begin with a version tag.
864
+ if (len) {
865
+ if (*data != kUpb_EncodedVersion_EnumV1) {
866
+ upb_MtDecoder_ErrorFormat(decoder, "Invalid enum version: %c", *data);
867
+ UPB_UNREACHABLE();
868
+ }
869
+ data++;
870
+ len--;
1056
871
  }
1057
872
 
1058
- upb_MiniTable_Enum* table = upb_Arena_Malloc(arena, sizeof(*table));
1059
- upb_MtDecoder_CheckOutOfMemory(&d, table);
873
+ upb_MtDecoder_CheckOutOfMemory(decoder, decoder->enum_table);
874
+
875
+ // Guarantee at least 64 bits of mask without checking mask size.
876
+ decoder->enum_table->mask_limit = 64;
877
+ decoder->enum_table = _upb_MiniTable_AddEnumDataMember(decoder, 0);
878
+ decoder->enum_table = _upb_MiniTable_AddEnumDataMember(decoder, 0);
1060
879
 
1061
- table->mask = 0;
1062
- table->value_count = 0;
1063
- table->values = NULL;
880
+ decoder->enum_table->value_count = 0;
1064
881
 
1065
882
  const char* ptr = data;
1066
883
  uint32_t base = 0;
1067
884
 
1068
- while (ptr < d.end) {
885
+ while (ptr < decoder->end) {
1069
886
  char ch = *ptr++;
1070
887
  if (ch <= kUpb_EncodedValue_MaxEnumMask) {
1071
- uint32_t mask = upb_FromBase92(ch);
888
+ uint32_t mask = _upb_FromBase92(ch);
1072
889
  for (int i = 0; i < 5; i++, base++, mask >>= 1) {
1073
- if (mask & 1) {
1074
- if (!upb_MiniTable_BuildEnumValue(&d, table, base, arena)) {
1075
- return NULL;
1076
- }
1077
- }
890
+ if (mask & 1) upb_MiniTableEnum_BuildValue(decoder, base);
1078
891
  }
1079
892
  } else if (kUpb_EncodedValue_MinSkip <= ch &&
1080
893
  ch <= kUpb_EncodedValue_MaxSkip) {
1081
894
  uint32_t skip;
1082
- ptr = upb_MiniTable_DecodeBase92Varint(&d, ptr, ch,
895
+ ptr = upb_MiniTable_DecodeBase92Varint(decoder, ptr, ch,
1083
896
  kUpb_EncodedValue_MinSkip,
1084
897
  kUpb_EncodedValue_MaxSkip, &skip);
1085
898
  base += skip;
1086
899
  } else {
1087
- upb_Status_SetErrorFormat(status, "Unexpected character: %c", ch);
900
+ upb_MtDecoder_ErrorFormat(decoder, "Unexpected character: %c", ch);
1088
901
  return NULL;
1089
902
  }
1090
903
  }
1091
904
 
1092
- return table;
905
+ return decoder->enum_table;
906
+ }
907
+
908
+ static upb_MiniTableEnum* upb_MtDecoder_BuildMiniTableEnum(
909
+ upb_MtDecoder* const decoder, const char* const data, size_t const len) {
910
+ if (UPB_SETJMP(decoder->err) != 0) return NULL;
911
+ return upb_MtDecoder_DoBuildMiniTableEnum(decoder, data, len);
1093
912
  }
1094
913
 
1095
- bool upb_MiniTable_BuildExtension(const char* data, size_t len,
1096
- upb_MiniTable_Extension* ext,
1097
- upb_MiniTable_Sub sub, upb_Status* status) {
914
+ upb_MiniTableEnum* upb_MiniTableEnum_Build(const char* data, size_t len,
915
+ upb_Arena* arena,
916
+ upb_Status* status) {
1098
917
  upb_MtDecoder decoder = {
1099
- .arena = NULL,
918
+ .enum_table = upb_Arena_Malloc(arena, upb_MiniTableEnum_Size(2)),
919
+ .enum_value_count = 0,
920
+ .enum_data_count = 0,
921
+ .enum_data_capacity = 1,
1100
922
  .status = status,
1101
- .table = NULL,
923
+ .end = UPB_PTRADD(data, len),
924
+ .arena = arena,
1102
925
  };
1103
926
 
1104
- if (UPB_SETJMP(decoder.err)) {
1105
- return false;
927
+ return upb_MtDecoder_BuildMiniTableEnum(&decoder, data, len);
928
+ }
929
+
930
+ static const char* upb_MtDecoder_DoBuildMiniTableExtension(
931
+ upb_MtDecoder* decoder, const char* data, size_t len,
932
+ upb_MiniTableExtension* ext, const upb_MiniTable* extendee,
933
+ upb_MiniTableSub sub) {
934
+ // If the string is non-empty then it must begin with a version tag.
935
+ if (len) {
936
+ if (*data != kUpb_EncodedVersion_ExtensionV1) {
937
+ upb_MtDecoder_ErrorFormat(decoder, "Invalid ext version: %c", *data);
938
+ UPB_UNREACHABLE();
939
+ }
940
+ data++;
941
+ len--;
1106
942
  }
1107
943
 
1108
944
  uint16_t count = 0;
1109
- upb_MtDecoder_Parse(&decoder, data, len, ext, sizeof(*ext), &count, NULL);
1110
- ext->field.mode |= kUpb_LabelFlags_IsExtension;
1111
- ext->field.offset = 0;
1112
- return true;
945
+ const char* ret =
946
+ upb_MtDecoder_Parse(decoder, data, len, ext, sizeof(*ext), &count, NULL);
947
+ if (!ret || count != 1) return NULL;
948
+
949
+ upb_MiniTableField* f = &ext->field;
950
+
951
+ f->mode |= kUpb_LabelFlags_IsExtension;
952
+ f->offset = 0;
953
+ f->presence = 0;
954
+
955
+ if (extendee->ext & kUpb_ExtMode_IsMessageSet) {
956
+ // Extensions of MessageSet must be messages.
957
+ if (!upb_IsSubMessage(f)) return NULL;
958
+
959
+ // Extensions of MessageSet must be non-repeating.
960
+ if ((f->mode & kUpb_FieldMode_Mask) == kUpb_FieldMode_Array) return NULL;
961
+ }
962
+
963
+ ext->extendee = extendee;
964
+ ext->sub = sub;
965
+
966
+ return ret;
967
+ }
968
+
969
+ static const char* upb_MtDecoder_BuildMiniTableExtension(
970
+ upb_MtDecoder* const decoder, const char* const data, const size_t len,
971
+ upb_MiniTableExtension* const ext, const upb_MiniTable* const extendee,
972
+ const upb_MiniTableSub sub) {
973
+ if (UPB_SETJMP(decoder->err) != 0) return NULL;
974
+ return upb_MtDecoder_DoBuildMiniTableExtension(decoder, data, len, ext,
975
+ extendee, sub);
1113
976
  }
1114
977
 
1115
- upb_MiniTable* upb_MiniTable_Build(const char* data, size_t len,
1116
- upb_MiniTablePlatform platform,
1117
- upb_Arena* arena, upb_Status* status) {
978
+ const char* _upb_MiniTableExtension_Init(const char* data, size_t len,
979
+ upb_MiniTableExtension* ext,
980
+ const upb_MiniTable* extendee,
981
+ upb_MiniTableSub sub,
982
+ upb_MiniTablePlatform platform,
983
+ upb_Status* status) {
984
+ upb_MtDecoder decoder = {
985
+ .arena = NULL,
986
+ .status = status,
987
+ .table = NULL,
988
+ .platform = platform,
989
+ };
990
+
991
+ return upb_MtDecoder_BuildMiniTableExtension(&decoder, data, len, ext,
992
+ extendee, sub);
993
+ }
994
+
995
+ upb_MiniTableExtension* _upb_MiniTableExtension_Build(
996
+ const char* data, size_t len, const upb_MiniTable* extendee,
997
+ upb_MiniTableSub sub, upb_MiniTablePlatform platform, upb_Arena* arena,
998
+ upb_Status* status) {
999
+ upb_MiniTableExtension* ext =
1000
+ upb_Arena_Malloc(arena, sizeof(upb_MiniTableExtension));
1001
+ if (UPB_UNLIKELY(!ext)) return NULL;
1002
+
1003
+ const char* ptr = _upb_MiniTableExtension_Init(data, len, ext, extendee, sub,
1004
+ platform, status);
1005
+ if (UPB_UNLIKELY(!ptr)) return NULL;
1006
+
1007
+ return ext;
1008
+ }
1009
+
1010
+ upb_MiniTable* _upb_MiniTable_Build(const char* data, size_t len,
1011
+ upb_MiniTablePlatform platform,
1012
+ upb_Arena* arena, upb_Status* status) {
1118
1013
  void* buf = NULL;
1119
1014
  size_t size = 0;
1120
1015
  upb_MiniTable* ret = upb_MiniTable_BuildWithBuf(data, len, platform, arena,
@@ -1123,25 +1018,110 @@ upb_MiniTable* upb_MiniTable_Build(const char* data, size_t len,
1123
1018
  return ret;
1124
1019
  }
1125
1020
 
1126
- void upb_MiniTable_SetSubMessage(upb_MiniTable* table,
1127
- upb_MiniTable_Field* field,
1021
+ bool upb_MiniTable_SetSubMessage(upb_MiniTable* table,
1022
+ upb_MiniTableField* field,
1128
1023
  const upb_MiniTable* sub) {
1129
1024
  UPB_ASSERT((uintptr_t)table->fields <= (uintptr_t)field &&
1130
1025
  (uintptr_t)field <
1131
1026
  (uintptr_t)(table->fields + table->field_count));
1132
- if (sub->ext & kUpb_ExtMode_IsMapEntry) {
1133
- field->mode =
1134
- (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift) | kUpb_FieldMode_Map;
1027
+ UPB_ASSERT(sub);
1028
+
1029
+ const bool sub_is_map = sub->ext & kUpb_ExtMode_IsMapEntry;
1030
+
1031
+ switch (field->UPB_PRIVATE(descriptortype)) {
1032
+ case kUpb_FieldType_Message:
1033
+ if (sub_is_map) {
1034
+ const bool table_is_map = table->ext & kUpb_ExtMode_IsMapEntry;
1035
+ if (UPB_UNLIKELY(table_is_map)) return false;
1036
+
1037
+ field->mode = (field->mode & ~kUpb_FieldMode_Mask) | kUpb_FieldMode_Map;
1038
+ }
1039
+ break;
1040
+
1041
+ case kUpb_FieldType_Group:
1042
+ if (UPB_UNLIKELY(sub_is_map)) return false;
1043
+ break;
1044
+
1045
+ default:
1046
+ return false;
1135
1047
  }
1136
- upb_MiniTable_Sub* table_sub = (void*)&table->subs[field->submsg_index];
1048
+
1049
+ upb_MiniTableSub* table_sub =
1050
+ (void*)&table->subs[field->UPB_PRIVATE(submsg_index)];
1137
1051
  table_sub->submsg = sub;
1052
+ return true;
1138
1053
  }
1139
1054
 
1140
- void upb_MiniTable_SetSubEnum(upb_MiniTable* table, upb_MiniTable_Field* field,
1141
- const upb_MiniTable_Enum* sub) {
1055
+ bool upb_MiniTable_SetSubEnum(upb_MiniTable* table, upb_MiniTableField* field,
1056
+ const upb_MiniTableEnum* sub) {
1142
1057
  UPB_ASSERT((uintptr_t)table->fields <= (uintptr_t)field &&
1143
1058
  (uintptr_t)field <
1144
1059
  (uintptr_t)(table->fields + table->field_count));
1145
- upb_MiniTable_Sub* table_sub = (void*)&table->subs[field->submsg_index];
1060
+ UPB_ASSERT(sub);
1061
+
1062
+ upb_MiniTableSub* table_sub =
1063
+ (void*)&table->subs[field->UPB_PRIVATE(submsg_index)];
1146
1064
  table_sub->subenum = sub;
1065
+ return true;
1066
+ }
1067
+
1068
+ uint32_t upb_MiniTable_GetSubList(const upb_MiniTable* mt,
1069
+ const upb_MiniTableField** subs) {
1070
+ uint32_t msg_count = 0;
1071
+ uint32_t enum_count = 0;
1072
+
1073
+ for (int i = 0; i < mt->field_count; i++) {
1074
+ const upb_MiniTableField* f = &mt->fields[i];
1075
+ if (upb_MiniTableField_CType(f) == kUpb_CType_Message) {
1076
+ *subs = f;
1077
+ ++subs;
1078
+ msg_count++;
1079
+ }
1080
+ }
1081
+
1082
+ for (int i = 0; i < mt->field_count; i++) {
1083
+ const upb_MiniTableField* f = &mt->fields[i];
1084
+ if (upb_MiniTableField_CType(f) == kUpb_CType_Enum) {
1085
+ *subs = f;
1086
+ ++subs;
1087
+ enum_count++;
1088
+ }
1089
+ }
1090
+
1091
+ return (msg_count << 16) | enum_count;
1092
+ }
1093
+
1094
+ // The list of sub_tables and sub_enums must exactly match the number and order
1095
+ // of sub-message fields and sub-enum fields given by upb_MiniTable_GetSubList()
1096
+ // above.
1097
+ bool upb_MiniTable_Link(upb_MiniTable* mt, const upb_MiniTable** sub_tables,
1098
+ size_t sub_table_count,
1099
+ const upb_MiniTableEnum** sub_enums,
1100
+ size_t sub_enum_count) {
1101
+ uint32_t msg_count = 0;
1102
+ uint32_t enum_count = 0;
1103
+
1104
+ for (int i = 0; i < mt->field_count; i++) {
1105
+ upb_MiniTableField* f = (upb_MiniTableField*)&mt->fields[i];
1106
+ if (upb_MiniTableField_CType(f) == kUpb_CType_Message) {
1107
+ const upb_MiniTable* sub = sub_tables[msg_count++];
1108
+ if (msg_count > sub_table_count) return false;
1109
+ if (sub != NULL) {
1110
+ if (!upb_MiniTable_SetSubMessage(mt, f, sub)) return false;
1111
+ }
1112
+ }
1113
+ }
1114
+
1115
+ for (int i = 0; i < mt->field_count; i++) {
1116
+ upb_MiniTableField* f = (upb_MiniTableField*)&mt->fields[i];
1117
+ if (upb_MiniTableField_CType(f) == kUpb_CType_Enum) {
1118
+ const upb_MiniTableEnum* sub = sub_enums[enum_count++];
1119
+ if (enum_count > sub_enum_count) return false;
1120
+ if (sub != NULL) {
1121
+ if (!upb_MiniTable_SetSubEnum(mt, f, sub)) return false;
1122
+ }
1123
+ }
1124
+ }
1125
+
1126
+ return true;
1147
1127
  }