grpc 1.44.0.pre2 → 1.45.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 (1072) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +291 -178
  3. data/include/grpc/event_engine/event_engine.h +2 -2
  4. data/include/grpc/grpc.h +40 -14
  5. data/include/grpc/grpc_posix.h +20 -19
  6. data/include/grpc/grpc_security.h +26 -50
  7. data/include/grpc/impl/codegen/grpc_types.h +11 -8
  8. data/include/grpc/impl/codegen/port_platform.h +2 -2
  9. data/include/grpc/impl/codegen/slice.h +4 -1
  10. data/include/grpc/slice.h +0 -11
  11. data/src/core/ext/filters/client_channel/backend_metric.cc +3 -3
  12. data/src/core/ext/filters/client_channel/backup_poller.cc +12 -8
  13. data/src/core/ext/filters/client_channel/channel_connectivity.cc +5 -5
  14. data/src/core/ext/filters/client_channel/client_channel.cc +79 -57
  15. data/src/core/ext/filters/client_channel/client_channel.h +30 -29
  16. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +5 -11
  17. data/src/core/ext/filters/client_channel/connector.h +1 -1
  18. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -2
  19. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  20. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
  21. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -15
  22. data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -17
  23. data/src/core/ext/filters/client_channel/health/health_check_client.h +1 -1
  24. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +9 -12
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +1 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +68 -47
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +15 -15
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  29. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +7 -3
  30. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +22 -17
  31. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +119 -82
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +9 -4
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +51 -24
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +19 -12
  37. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -13
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +62 -49
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +18 -19
  40. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +41 -43
  41. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -7
  42. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +82 -57
  43. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +35 -34
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +35 -36
  45. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
  46. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
  47. data/src/core/ext/filters/client_channel/retry_filter.cc +219 -125
  48. data/src/core/ext/filters/client_channel/retry_service_config.cc +15 -17
  49. data/src/core/ext/filters/client_channel/retry_service_config.h +17 -11
  50. data/src/core/ext/filters/client_channel/retry_throttle.cc +9 -23
  51. data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
  52. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +7 -6
  53. data/src/core/ext/filters/client_channel/subchannel.cc +35 -38
  54. data/src/core/ext/filters/client_channel/subchannel.h +5 -4
  55. data/src/core/ext/filters/client_idle/client_idle_filter.cc +96 -159
  56. data/src/core/ext/filters/client_idle/idle_filter_state.h +2 -2
  57. data/src/core/ext/filters/deadline/deadline_filter.cc +15 -14
  58. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  59. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +17 -11
  60. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  61. data/src/core/ext/filters/fault_injection/service_config_parser.h +9 -3
  62. data/src/core/ext/filters/http/client/http_client_filter.cc +7 -3
  63. data/src/core/ext/filters/http/client_authority_filter.cc +28 -71
  64. data/src/core/ext/filters/http/client_authority_filter.h +23 -5
  65. data/src/core/ext/filters/http/http_filters_plugin.cc +11 -12
  66. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
  67. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +10 -2
  68. data/src/core/ext/filters/http/server/http_server_filter.cc +1 -0
  69. data/src/core/ext/filters/max_age/max_age_filter.cc +46 -40
  70. data/src/core/ext/filters/message_size/message_size_filter.cc +26 -34
  71. data/src/core/ext/filters/message_size/message_size_filter.h +9 -2
  72. data/src/core/ext/filters/rbac/rbac_filter.cc +13 -8
  73. data/src/core/ext/filters/rbac/rbac_filter.h +2 -0
  74. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +6 -5
  75. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +6 -1
  76. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +1 -0
  77. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +234 -0
  78. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +149 -7
  79. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +110 -47
  80. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -2
  81. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
  82. data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
  83. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
  84. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -0
  85. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -2
  86. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  87. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +15 -51
  88. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +2 -2
  89. data/src/core/ext/transport/chttp2/transport/internal.h +6 -6
  90. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -3
  91. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -12
  92. data/src/core/ext/transport/inproc/inproc_transport.cc +16 -12
  93. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +114 -0
  94. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +402 -0
  95. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +119 -0
  96. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +453 -0
  97. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +165 -163
  98. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +798 -575
  99. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  100. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +138 -0
  101. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  102. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +146 -0
  103. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  104. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +106 -0
  105. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  106. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +93 -0
  107. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  108. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +88 -0
  109. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +103 -0
  110. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +466 -0
  111. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  112. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +95 -0
  113. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +22 -20
  114. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +17 -16
  115. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +15 -13
  116. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +31 -23
  117. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +90 -88
  118. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +421 -317
  119. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +156 -152
  120. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +787 -571
  121. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +27 -25
  122. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +115 -79
  123. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +206 -204
  124. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +954 -662
  125. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +10 -8
  126. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +33 -23
  127. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +29 -27
  128. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +127 -79
  129. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +290 -0
  130. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1122 -0
  131. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +49 -47
  132. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +221 -159
  133. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +10 -8
  134. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +33 -23
  135. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +154 -151
  136. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +691 -499
  137. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +39 -37
  138. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +178 -130
  139. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +9 -7
  140. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +25 -19
  141. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +18 -16
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +74 -53
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  144. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +138 -0
  145. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +100 -98
  146. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +449 -329
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +77 -75
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +365 -264
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +11 -9
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +36 -26
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +140 -105
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +675 -345
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +8 -6
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +25 -17
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +15 -13
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +59 -42
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +13 -11
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +39 -25
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +14 -12
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +45 -35
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +10 -8
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +34 -24
  163. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +31 -29
  164. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +113 -85
  165. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +47 -45
  166. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +210 -151
  167. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +48 -46
  168. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +210 -142
  169. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +9 -7
  170. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +28 -20
  171. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +58 -54
  172. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +282 -193
  173. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +64 -62
  174. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +286 -218
  175. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +15 -13
  176. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +62 -42
  177. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +12 -10
  178. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +54 -39
  179. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  180. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +120 -0
  181. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +55 -53
  182. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +244 -185
  183. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +57 -55
  184. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +260 -192
  185. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +70 -68
  186. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +235 -191
  187. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +30 -28
  188. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +142 -112
  189. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +435 -428
  190. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2037 -1507
  191. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +25 -19
  192. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +107 -64
  193. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +216 -0
  194. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +870 -0
  195. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  196. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +82 -0
  197. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  198. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +95 -0
  199. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +15 -13
  200. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +55 -40
  201. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  202. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +119 -0
  203. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +62 -0
  204. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +203 -0
  205. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  206. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +89 -0
  207. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  208. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +184 -0
  209. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  210. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  211. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  212. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +192 -0
  213. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  214. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +126 -0
  215. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +8 -6
  216. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +29 -23
  217. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +26 -24
  218. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +125 -93
  219. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +33 -31
  220. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -105
  221. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +16 -14
  222. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +63 -44
  223. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +15 -13
  224. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +53 -37
  225. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +175 -173
  226. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +803 -559
  227. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +3 -1
  228. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
  229. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +75 -52
  230. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +368 -194
  231. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +24 -22
  232. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +95 -71
  233. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +60 -58
  234. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +266 -193
  235. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  236. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +146 -0
  237. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +6 -4
  238. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +22 -16
  239. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +64 -62
  240. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +297 -218
  241. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +18 -16
  242. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +73 -54
  243. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +46 -44
  244. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +197 -145
  245. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  246. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +101 -0
  247. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +19 -17
  248. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +91 -70
  249. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  250. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +202 -0
  251. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +16 -14
  252. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +64 -47
  253. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +10 -8
  254. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +34 -26
  255. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +10 -8
  256. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +25 -19
  257. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +9 -7
  258. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +25 -19
  259. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +21 -19
  260. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +85 -61
  261. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +19 -17
  262. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +65 -52
  263. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +14 -12
  264. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +56 -43
  265. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +21 -19
  266. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +74 -58
  267. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +30 -28
  268. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +163 -125
  269. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +34 -32
  270. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +157 -113
  271. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  272. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +183 -0
  273. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +3 -1
  274. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
  275. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  276. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +136 -0
  277. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +13 -11
  278. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +51 -34
  279. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +19 -17
  280. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +80 -52
  281. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  282. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  283. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +10 -8
  284. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +31 -19
  285. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  286. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +114 -0
  287. data/src/core/ext/upb-generated/google/api/annotations.upb.c +10 -8
  288. data/src/core/ext/upb-generated/google/api/annotations.upb.h +6 -5
  289. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +100 -98
  290. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +371 -281
  291. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +110 -108
  292. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +409 -298
  293. data/src/core/ext/upb-generated/google/api/http.upb.c +29 -27
  294. data/src/core/ext/upb-generated/google/api/http.upb.h +117 -89
  295. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  296. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +99 -0
  297. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +9 -7
  298. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +32 -22
  299. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +287 -234
  300. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1088 -764
  301. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +9 -7
  302. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +28 -18
  303. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +6 -4
  304. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +22 -16
  305. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +30 -28
  306. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +80 -64
  307. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +9 -7
  308. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +28 -18
  309. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +40 -38
  310. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +213 -149
  311. data/src/core/ext/upb-generated/google/rpc/status.upb.c +11 -9
  312. data/src/core/ext/upb-generated/google/rpc/status.upb.h +36 -26
  313. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  314. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +276 -0
  315. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +20 -18
  316. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +60 -42
  317. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +95 -93
  318. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +396 -285
  319. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +15 -13
  320. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +58 -39
  321. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +12 -10
  322. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +50 -35
  323. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +55 -53
  324. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +255 -183
  325. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +22 -20
  326. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +76 -57
  327. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +46 -44
  328. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +102 -78
  329. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +16 -14
  330. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +32 -22
  331. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +9 -7
  332. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +6 -5
  333. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +16 -14
  334. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +32 -22
  335. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +15 -13
  336. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +31 -23
  337. data/src/core/ext/upb-generated/validate/validate.upb.c +320 -304
  338. data/src/core/ext/upb-generated/validate/validate.upb.h +1114 -741
  339. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  340. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +191 -0
  341. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  342. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +87 -0
  343. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  344. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +38 -0
  345. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +40 -38
  346. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +109 -78
  347. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  348. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +81 -0
  349. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +8 -6
  350. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +27 -19
  351. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +17 -15
  352. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +63 -46
  353. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +14 -12
  354. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +31 -25
  355. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  356. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +95 -0
  357. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +11 -9
  358. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +39 -27
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +20 -18
  360. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +73 -54
  361. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +12 -10
  362. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +43 -29
  363. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +23 -21
  364. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +43 -31
  365. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +203 -0
  366. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +726 -0
  367. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  368. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +132 -0
  369. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  370. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +173 -0
  371. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +10 -8
  372. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +33 -23
  373. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  374. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  375. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  376. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  377. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +14 -12
  378. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
  379. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  380. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  381. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  382. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  383. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  384. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  385. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  386. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  387. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  389. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  390. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  391. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  392. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  393. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +8 -6
  394. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  395. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +8 -6
  396. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  397. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +20 -17
  398. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  399. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +248 -240
  400. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
  401. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +16 -13
  402. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  403. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +375 -371
  404. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
  405. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +14 -11
  406. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  407. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -13
  408. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  409. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  410. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  411. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +15 -13
  412. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  413. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +15 -12
  414. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  415. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +85 -80
  416. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
  417. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +18 -16
  418. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +16 -16
  419. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +14 -12
  420. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  421. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +15 -12
  422. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +7 -7
  423. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  424. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  425. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +21 -18
  426. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  427. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +23 -20
  428. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +25 -25
  429. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +14 -12
  430. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  431. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +250 -221
  432. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
  433. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +12 -9
  434. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  435. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +14 -11
  436. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
  437. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +14 -11
  438. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  439. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +18 -15
  440. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  441. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +13 -11
  442. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
  443. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +18 -15
  444. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  445. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +19 -16
  446. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
  447. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +18 -15
  448. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  449. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +14 -11
  450. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  451. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +52 -45
  452. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
  453. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +23 -20
  454. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  455. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +19 -16
  456. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
  457. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +15 -12
  458. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  459. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  460. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  461. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +17 -14
  462. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  463. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +17 -14
  464. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
  465. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +23 -21
  466. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +25 -25
  467. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +19 -16
  468. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
  469. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +816 -801
  470. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
  471. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +52 -37
  472. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  473. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  474. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  475. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  476. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  477. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  478. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  479. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +15 -12
  480. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  481. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  482. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  483. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  484. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  485. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  486. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  487. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  488. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  489. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  490. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  491. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  492. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  493. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  494. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  495. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +15 -11
  496. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  497. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +17 -14
  498. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  499. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +18 -15
  500. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  501. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +14 -11
  502. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +7 -7
  503. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +17 -13
  504. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  505. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +135 -130
  506. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +58 -58
  507. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +15 -11
  508. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  509. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +169 -140
  510. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
  511. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +19 -16
  512. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  513. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +21 -17
  514. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +19 -19
  515. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  516. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  517. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +14 -11
  518. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  519. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +17 -14
  520. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
  521. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +16 -13
  522. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  523. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +20 -17
  524. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
  525. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  526. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  527. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +13 -10
  528. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
  529. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  530. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  531. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +15 -12
  532. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  533. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +15 -12
  534. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  535. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +15 -12
  536. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  537. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +15 -12
  538. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  539. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +15 -12
  540. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  541. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +15 -12
  542. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  543. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +14 -12
  544. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  545. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +16 -13
  546. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  547. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +13 -10
  548. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  549. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +14 -11
  550. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  551. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  552. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  553. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +10 -8
  554. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  555. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  556. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  557. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +12 -10
  558. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  559. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +11 -8
  560. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  561. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  562. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  563. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +11 -9
  564. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  565. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  566. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  567. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +5 -5
  568. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  569. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +6 -6
  570. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +40 -40
  571. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +6 -6
  572. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +43 -43
  573. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +3 -3
  574. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  575. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  576. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  577. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +3 -3
  578. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  579. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +3 -3
  580. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  581. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +3 -3
  582. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  583. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +3 -3
  584. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  585. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +3 -3
  586. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  587. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +3 -3
  588. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  589. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +3 -3
  590. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  591. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  592. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  593. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  594. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  595. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +4 -4
  596. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  597. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +5 -5
  598. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  599. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -4
  600. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  601. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +4 -4
  602. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  603. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +4 -4
  604. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  605. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +6 -6
  606. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  607. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  608. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  609. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  610. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  611. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  612. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  613. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +4 -4
  614. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
  615. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  616. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  617. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +5 -5
  618. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  619. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +7 -7
  620. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  621. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +4 -4
  622. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  623. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  624. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  625. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +6 -6
  626. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  627. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +6 -6
  628. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  629. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +6 -6
  630. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  631. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  632. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  633. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  634. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  635. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  636. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  637. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +5 -5
  638. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
  639. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
  640. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  641. data/src/core/ext/xds/upb_utils.h +8 -6
  642. data/src/core/ext/xds/xds_api.cc +52 -35
  643. data/src/core/ext/xds/xds_api.h +4 -4
  644. data/src/core/ext/xds/xds_bootstrap.cc +35 -3
  645. data/src/core/ext/xds/xds_bootstrap.h +11 -0
  646. data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -17
  647. data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -3
  648. data/src/core/ext/xds/xds_client.cc +141 -106
  649. data/src/core/ext/xds/xds_client.h +23 -15
  650. data/src/core/ext/xds/xds_client_stats.cc +15 -15
  651. data/src/core/ext/xds/xds_client_stats.h +5 -4
  652. data/src/core/ext/xds/xds_cluster.cc +18 -16
  653. data/src/core/ext/xds/xds_cluster.h +3 -6
  654. data/src/core/ext/xds/xds_common_types.cc +1 -1
  655. data/src/core/ext/xds/xds_common_types.h +5 -20
  656. data/src/core/ext/xds/xds_endpoint.cc +2 -2
  657. data/src/core/ext/xds/xds_endpoint.h +1 -1
  658. data/src/core/ext/xds/xds_http_fault_filter.cc +6 -6
  659. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  660. data/src/core/ext/xds/xds_http_filters.cc +6 -5
  661. data/src/core/ext/xds/xds_http_filters.h +4 -4
  662. data/src/core/ext/xds/xds_http_rbac_filter.cc +5 -5
  663. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  664. data/src/core/ext/xds/xds_listener.cc +14 -11
  665. data/src/core/ext/xds/xds_listener.h +1 -1
  666. data/src/core/ext/xds/xds_resource_type.h +1 -1
  667. data/src/core/ext/xds/xds_route_config.cc +13 -21
  668. data/src/core/ext/xds/xds_route_config.h +1 -1
  669. data/src/core/ext/xds/xds_routing.cc +1 -1
  670. data/src/core/ext/xds/xds_server_config_fetcher.cc +3 -2
  671. data/src/core/lib/backoff/backoff.cc +7 -10
  672. data/src/core/lib/backoff/backoff.h +8 -8
  673. data/src/core/lib/channel/call_finalization.h +86 -0
  674. data/src/core/lib/channel/channel_args.cc +60 -0
  675. data/src/core/lib/channel/channel_args.h +2 -0
  676. data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
  677. data/src/core/lib/channel/channel_stack.cc +2 -3
  678. data/src/core/lib/channel/channel_stack.h +41 -5
  679. data/src/core/lib/channel/channel_stack_builder.cc +66 -244
  680. data/src/core/lib/channel/channel_stack_builder.h +95 -144
  681. data/src/core/lib/channel/channel_trace.cc +3 -6
  682. data/src/core/lib/channel/connected_channel.cc +9 -4
  683. data/src/core/lib/channel/connected_channel.h +1 -1
  684. data/src/core/lib/channel/context.h +11 -0
  685. data/src/core/lib/channel/handshaker.cc +1 -1
  686. data/src/core/lib/channel/handshaker.h +1 -1
  687. data/src/core/lib/channel/promise_based_filter.cc +669 -0
  688. data/src/core/lib/channel/promise_based_filter.h +423 -0
  689. data/src/core/lib/compression/compression.cc +1 -1
  690. data/src/core/lib/compression/compression_internal.cc +1 -1
  691. data/src/core/lib/config/core_configuration.cc +8 -2
  692. data/src/core/lib/config/core_configuration.h +39 -0
  693. data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
  694. data/src/core/lib/event_engine/event_engine.cc +23 -8
  695. data/src/core/lib/event_engine/event_engine_factory.h +3 -0
  696. data/src/core/lib/event_engine/memory_allocator.cc +9 -13
  697. data/src/core/lib/event_engine/{event_engine_factory.cc → resolved_address.cc} +10 -20
  698. data/src/core/lib/gpr/sync_posix.cc +1 -0
  699. data/src/core/lib/gpr/time.cc +2 -1
  700. data/src/core/lib/gpr/useful.h +14 -0
  701. data/src/core/lib/gprpp/capture.h +76 -0
  702. data/src/core/lib/gprpp/debug_location.h +2 -0
  703. data/src/core/lib/gprpp/status_helper.cc +12 -12
  704. data/src/core/lib/gprpp/status_helper.h +4 -4
  705. data/src/core/lib/gprpp/time.cc +186 -0
  706. data/src/core/lib/gprpp/time.h +292 -0
  707. data/src/core/lib/http/format_request.cc +27 -23
  708. data/src/core/lib/http/format_request.h +7 -6
  709. data/src/core/lib/http/httpcli.cc +306 -229
  710. data/src/core/lib/http/httpcli.h +182 -77
  711. data/src/core/lib/http/httpcli_security_connector.cc +62 -73
  712. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  713. data/src/core/lib/http/parser.h +1 -1
  714. data/src/core/lib/iomgr/buffer_list.h +5 -5
  715. data/src/core/lib/iomgr/error.cc +13 -12
  716. data/src/core/lib/iomgr/error.h +0 -5
  717. data/src/core/lib/iomgr/ev_apple.cc +6 -5
  718. data/src/core/lib/iomgr/ev_epoll1_linux.cc +8 -7
  719. data/src/core/lib/iomgr/ev_epollex_linux.cc +12 -9
  720. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -7
  721. data/src/core/lib/iomgr/ev_posix.cc +3 -3
  722. data/src/core/lib/iomgr/ev_posix.h +1 -1
  723. data/src/core/lib/iomgr/event_engine/pollset.cc +2 -3
  724. data/src/core/lib/iomgr/event_engine/resolver.cc +1 -1
  725. data/src/core/lib/iomgr/event_engine/tcp.cc +4 -3
  726. data/src/core/lib/iomgr/event_engine/timer.cc +3 -4
  727. data/src/core/lib/iomgr/exec_ctx.cc +3 -88
  728. data/src/core/lib/iomgr/exec_ctx.h +7 -23
  729. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  730. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  731. data/src/core/lib/iomgr/polling_entity.h +6 -0
  732. data/src/core/lib/iomgr/pollset.cc +1 -1
  733. data/src/core/lib/iomgr/pollset.h +4 -4
  734. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  735. data/src/core/lib/iomgr/port.h +4 -7
  736. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
  737. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  738. data/src/core/lib/iomgr/socket_utils_common_posix.cc +0 -17
  739. data/src/core/lib/iomgr/tcp_client.cc +1 -1
  740. data/src/core/lib/iomgr/tcp_client.h +3 -2
  741. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
  742. data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
  743. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  744. data/src/core/lib/iomgr/tcp_client_windows.cc +1 -1
  745. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  746. data/src/core/lib/iomgr/tcp_windows.cc +17 -10
  747. data/src/core/lib/iomgr/timer.cc +2 -2
  748. data/src/core/lib/iomgr/timer.h +11 -6
  749. data/src/core/lib/iomgr/timer_generic.cc +96 -77
  750. data/src/core/lib/iomgr/timer_manager.cc +15 -14
  751. data/src/core/lib/iomgr/work_serializer.cc +15 -10
  752. data/src/core/lib/json/json_util.cc +4 -4
  753. data/src/core/lib/json/json_util.h +2 -2
  754. data/src/core/lib/promise/activity.cc +14 -8
  755. data/src/core/lib/promise/activity.h +143 -131
  756. data/src/core/lib/promise/arena_promise.h +188 -0
  757. data/src/core/lib/promise/detail/basic_seq.h +92 -3
  758. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  759. data/src/core/lib/promise/loop.h +34 -8
  760. data/src/core/lib/promise/poll.h +6 -0
  761. data/src/core/lib/promise/promise.h +95 -0
  762. data/src/core/lib/promise/seq.h +19 -1
  763. data/src/core/lib/promise/sleep.cc +74 -0
  764. data/src/core/lib/promise/sleep.h +66 -0
  765. data/src/core/lib/promise/try_seq.h +157 -0
  766. data/src/core/lib/resolver/resolver_factory.h +22 -26
  767. data/src/core/lib/resolver/resolver_registry.cc +98 -137
  768. data/src/core/lib/resolver/resolver_registry.h +59 -33
  769. data/src/core/lib/resource_quota/memory_quota.cc +118 -94
  770. data/src/core/lib/resource_quota/memory_quota.h +100 -64
  771. data/src/core/lib/security/authorization/evaluate_args.cc +1 -11
  772. data/src/core/lib/security/authorization/evaluate_args.h +0 -1
  773. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +109 -0
  774. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +51 -0
  775. data/src/core/lib/security/authorization/matchers.cc +5 -5
  776. data/src/core/lib/security/authorization/matchers.h +2 -2
  777. data/src/core/lib/security/authorization/rbac_policy.cc +3 -3
  778. data/src/core/lib/security/authorization/rbac_policy.h +3 -2
  779. data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -0
  780. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  781. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  782. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  783. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  784. data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -81
  785. data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -10
  786. data/src/core/lib/security/credentials/credentials.cc +2 -3
  787. data/src/core/lib/security/credentials/credentials.h +64 -43
  788. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +46 -27
  789. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  790. data/src/core/lib/security/credentials/external/external_account_credentials.cc +49 -29
  791. data/src/core/lib/security/credentials/external/external_account_credentials.h +4 -3
  792. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
  793. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +33 -12
  794. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
  795. data/src/core/lib/security/credentials/fake/fake_credentials.cc +18 -19
  796. data/src/core/lib/security/credentials/fake/fake_credentials.h +11 -14
  797. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -9
  798. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +6 -0
  799. data/src/core/lib/security/credentials/iam/iam_credentials.cc +12 -17
  800. data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -9
  801. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +13 -7
  802. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +18 -22
  803. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +9 -9
  804. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -30
  805. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  806. data/src/core/lib/security/credentials/local/local_credentials.h +6 -0
  807. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +117 -125
  808. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +49 -28
  809. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +95 -152
  810. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +54 -28
  811. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +6 -3
  812. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +19 -0
  813. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -1
  814. data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
  815. data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -0
  816. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +8 -14
  817. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  818. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +4 -12
  819. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  820. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +6 -16
  821. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +4 -9
  822. data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -16
  823. data/src/core/lib/security/security_connector/security_connector.cc +3 -11
  824. data/src/core/lib/security/security_connector/security_connector.h +11 -20
  825. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +6 -11
  826. data/src/core/lib/security/security_connector/ssl_utils.cc +15 -7
  827. data/src/core/lib/security/security_connector/ssl_utils.h +8 -3
  828. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +23 -14
  829. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +6 -6
  830. data/src/core/lib/security/transport/auth_filters.h +30 -4
  831. data/src/core/lib/security/transport/client_auth_filter.cc +73 -364
  832. data/src/core/lib/security/transport/security_handshaker.cc +14 -6
  833. data/src/core/lib/security/transport/server_auth_filter.cc +1 -0
  834. data/src/core/lib/service_config/service_config.h +6 -51
  835. data/src/core/lib/service_config/{service_config.cc → service_config_impl.cc} +19 -16
  836. data/src/core/lib/service_config/service_config_impl.h +125 -0
  837. data/src/core/lib/service_config/service_config_parser.cc +30 -26
  838. data/src/core/lib/service_config/service_config_parser.h +36 -27
  839. data/src/core/lib/slice/slice.cc +76 -181
  840. data/src/core/lib/slice/slice.h +28 -15
  841. data/src/core/lib/slice/slice_internal.h +12 -30
  842. data/src/core/lib/slice/slice_refcount.cc +18 -0
  843. data/src/core/lib/slice/slice_refcount.h +2 -72
  844. data/src/core/lib/slice/slice_refcount_base.h +16 -120
  845. data/src/core/lib/surface/builtins.cc +6 -6
  846. data/src/core/lib/surface/call.cc +14 -7
  847. data/src/core/lib/surface/call.h +1 -1
  848. data/src/core/lib/surface/channel.cc +26 -31
  849. data/src/core/lib/surface/channel.h +6 -7
  850. data/src/core/lib/surface/channel_init.cc +1 -1
  851. data/src/core/lib/surface/channel_init.h +4 -4
  852. data/src/core/lib/surface/completion_queue.cc +10 -9
  853. data/src/core/lib/surface/init.cc +78 -7
  854. data/src/core/lib/surface/init.h +0 -2
  855. data/src/core/lib/surface/lame_client.cc +2 -1
  856. data/src/core/lib/surface/server.cc +11 -22
  857. data/src/core/lib/surface/server.h +3 -3
  858. data/src/core/lib/surface/version.cc +2 -2
  859. data/src/core/lib/transport/bdp_estimator.cc +9 -10
  860. data/src/core/lib/transport/bdp_estimator.h +2 -2
  861. data/src/core/lib/transport/error_utils.cc +5 -3
  862. data/src/core/lib/transport/error_utils.h +2 -15
  863. data/src/core/lib/transport/metadata_batch.h +275 -97
  864. data/src/core/lib/transport/parsed_metadata.h +33 -17
  865. data/src/core/lib/transport/status_conversion.cc +2 -2
  866. data/src/core/lib/transport/status_conversion.h +1 -1
  867. data/src/core/lib/transport/timeout_encoding.cc +32 -29
  868. data/src/core/lib/transport/timeout_encoding.h +3 -3
  869. data/src/core/lib/transport/transport.cc +3 -1
  870. data/src/core/lib/transport/transport.h +87 -2
  871. data/src/core/lib/transport/transport_impl.h +13 -0
  872. data/src/core/lib/transport/transport_op_string.cc +5 -14
  873. data/src/core/lib/uri/uri_parser.cc +4 -0
  874. data/src/core/lib/uri/uri_parser.h +1 -0
  875. data/src/core/plugin_registry/grpc_plugin_registry.cc +19 -88
  876. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  877. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +26 -21
  878. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  879. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +19 -11
  880. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  881. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  882. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  883. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  884. data/src/core/tsi/local_transport_security.cc +3 -11
  885. data/src/core/tsi/local_transport_security.h +1 -4
  886. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  887. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  888. data/src/core/tsi/ssl_transport_security.cc +52 -1
  889. data/src/core/tsi/ssl_transport_security.h +20 -0
  890. data/src/ruby/ext/grpc/extconf.rb +1 -1
  891. data/src/ruby/ext/grpc/rb_channel.c +5 -2
  892. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +18 -24
  893. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +27 -36
  894. data/src/ruby/ext/grpc/rb_server.c +7 -4
  895. data/src/ruby/lib/grpc/version.rb +1 -1
  896. data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
  897. data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
  898. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  899. data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
  900. data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
  901. data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
  902. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  903. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  904. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  905. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  906. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  907. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  908. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  909. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  910. data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
  911. data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
  912. data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
  913. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  914. data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
  915. data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
  916. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  917. data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
  918. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  919. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  920. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  921. data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
  922. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  923. data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
  924. data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
  925. data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
  926. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  927. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  928. data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
  929. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  930. data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
  931. data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
  932. data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
  933. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  934. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  935. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  936. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  937. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  938. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  939. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  940. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  941. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  942. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  943. data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
  944. data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
  945. data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
  946. data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
  947. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  948. data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
  949. data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
  950. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  951. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  952. data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
  953. data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
  954. data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
  955. data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
  956. data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
  957. data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
  958. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  959. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  960. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  961. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  962. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  963. data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
  964. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  965. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  966. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  967. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  968. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  969. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  970. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  971. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  972. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  973. data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
  974. data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
  975. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  976. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  977. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  978. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  979. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  980. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  981. data/third_party/upb/upb/decode.c +526 -319
  982. data/third_party/upb/upb/decode.h +43 -17
  983. data/third_party/upb/upb/decode_fast.c +303 -301
  984. data/third_party/upb/upb/decode_fast.h +18 -18
  985. data/third_party/upb/upb/decode_internal.h +73 -56
  986. data/third_party/upb/upb/def.c +1863 -1078
  987. data/third_party/upb/upb/def.h +318 -286
  988. data/third_party/upb/upb/def.hpp +129 -172
  989. data/third_party/upb/upb/encode.c +202 -175
  990. data/third_party/upb/upb/encode.h +15 -17
  991. data/third_party/upb/upb/msg.c +144 -124
  992. data/third_party/upb/upb/msg.h +40 -33
  993. data/third_party/upb/upb/msg_internal.h +321 -272
  994. data/third_party/upb/upb/reflection.c +239 -199
  995. data/third_party/upb/upb/reflection.h +87 -67
  996. data/third_party/upb/upb/reflection.hpp +6 -6
  997. data/third_party/upb/upb/table.c +222 -142
  998. data/third_party/upb/upb/table_internal.h +128 -96
  999. data/third_party/upb/upb/text_encode.c +113 -90
  1000. data/third_party/upb/upb/text_encode.h +10 -10
  1001. data/third_party/upb/upb/upb.c +111 -72
  1002. data/third_party/upb/upb/upb.h +120 -144
  1003. data/third_party/upb/upb/upb.hpp +31 -28
  1004. data/third_party/upb/upb/upb_internal.h +21 -11
  1005. metadata +301 -170
  1006. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  1007. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
  1008. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -122
  1009. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -92
  1010. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -192
  1011. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -52
  1012. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -79
  1013. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
  1014. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -36
  1015. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -38
  1016. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -64
  1017. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -38
  1018. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -64
  1019. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -38
  1020. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -64
  1021. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -38
  1022. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -64
  1023. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -38
  1024. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -64
  1025. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +0 -102
  1026. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +0 -306
  1027. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +0 -56
  1028. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +0 -135
  1029. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +0 -115
  1030. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +0 -371
  1031. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -67
  1032. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  1033. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -68
  1034. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  1035. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -67
  1036. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  1037. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -75
  1038. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  1039. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -69
  1040. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  1041. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +0 -58
  1042. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +0 -55
  1043. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +0 -44
  1044. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +0 -40
  1045. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +0 -75
  1046. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +0 -55
  1047. data/src/core/ext/xds/xds_channel_creds.cc +0 -108
  1048. data/src/core/ext/xds/xds_channel_creds.h +0 -50
  1049. data/src/core/lib/iomgr/iomgr_custom.cc +0 -82
  1050. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  1051. data/src/core/lib/iomgr/pollset_custom.cc +0 -105
  1052. data/src/core/lib/iomgr/pollset_custom.h +0 -37
  1053. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
  1054. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  1055. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -191
  1056. data/src/core/lib/iomgr/resolve_address_custom.h +0 -126
  1057. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -146
  1058. data/src/core/lib/iomgr/tcp_custom.cc +0 -350
  1059. data/src/core/lib/iomgr/tcp_custom.h +0 -85
  1060. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -457
  1061. data/src/core/lib/iomgr/timer_custom.cc +0 -96
  1062. data/src/core/lib/iomgr/timer_custom.h +0 -43
  1063. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -173
  1064. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
  1065. data/src/core/lib/slice/slice_intern.cc +0 -269
  1066. data/src/core/lib/slice/slice_utils.h +0 -200
  1067. data/src/core/lib/surface/init_secure.cc +0 -103
  1068. data/third_party/cares/cares/ares_getopt.c +0 -122
  1069. data/third_party/cares/cares/ares_getopt.h +0 -53
  1070. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  1071. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  1072. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
@@ -13,11 +13,11 @@
13
13
  * names of its contributors may be used to endorse or promote products
14
14
  * derived from this software without specific prior written permission.
15
15
  *
16
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
- * DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
20
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
16
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
20
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
21
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
22
  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
23
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
@@ -39,25 +39,25 @@
39
39
 
40
40
  /* Maps descriptor type -> elem_size_lg2. */
41
41
  static const uint8_t desctype_to_elem_size_lg2[] = {
42
- -1, /* invalid descriptor type */
43
- 3, /* DOUBLE */
44
- 2, /* FLOAT */
45
- 3, /* INT64 */
46
- 3, /* UINT64 */
47
- 2, /* INT32 */
48
- 3, /* FIXED64 */
49
- 2, /* FIXED32 */
50
- 0, /* BOOL */
51
- UPB_SIZE(3, 4), /* STRING */
52
- UPB_SIZE(2, 3), /* GROUP */
53
- UPB_SIZE(2, 3), /* MESSAGE */
54
- UPB_SIZE(3, 4), /* BYTES */
55
- 2, /* UINT32 */
56
- 2, /* ENUM */
57
- 2, /* SFIXED32 */
58
- 3, /* SFIXED64 */
59
- 2, /* SINT32 */
60
- 3, /* SINT64 */
42
+ -1, /* invalid descriptor type */
43
+ 3, /* DOUBLE */
44
+ 2, /* FLOAT */
45
+ 3, /* INT64 */
46
+ 3, /* UINT64 */
47
+ 2, /* INT32 */
48
+ 3, /* FIXED64 */
49
+ 2, /* FIXED32 */
50
+ 0, /* BOOL */
51
+ UPB_SIZE(3, 4), /* STRING */
52
+ UPB_SIZE(2, 3), /* GROUP */
53
+ UPB_SIZE(2, 3), /* MESSAGE */
54
+ UPB_SIZE(3, 4), /* BYTES */
55
+ 2, /* UINT32 */
56
+ 2, /* ENUM */
57
+ 2, /* SFIXED32 */
58
+ 3, /* SFIXED64 */
59
+ 2, /* SINT32 */
60
+ 3, /* SINT64 */
61
61
  };
62
62
 
63
63
  /* Maps descriptor type -> upb map size. */
@@ -72,8 +72,8 @@ static const uint8_t desctype_to_mapsize[] = {
72
72
  4, /* FIXED32 */
73
73
  1, /* BOOL */
74
74
  UPB_MAPTYPE_STRING, /* STRING */
75
- sizeof(void *), /* GROUP */
76
- sizeof(void *), /* MESSAGE */
75
+ sizeof(void*), /* GROUP */
76
+ sizeof(void*), /* MESSAGE */
77
77
  UPB_MAPTYPE_STRING, /* BYTES */
78
78
  4, /* UINT32 */
79
79
  4, /* ENUM */
@@ -83,13 +83,13 @@ static const uint8_t desctype_to_mapsize[] = {
83
83
  8, /* SINT64 */
84
84
  };
85
85
 
86
- static const unsigned FIXED32_OK_MASK = (1 << UPB_DTYPE_FLOAT) |
87
- (1 << UPB_DTYPE_FIXED32) |
88
- (1 << UPB_DTYPE_SFIXED32);
86
+ static const unsigned FIXED32_OK_MASK = (1 << kUpb_FieldType_Float) |
87
+ (1 << kUpb_FieldType_Fixed32) |
88
+ (1 << kUpb_FieldType_SFixed32);
89
89
 
90
- static const unsigned FIXED64_OK_MASK = (1 << UPB_DTYPE_DOUBLE) |
91
- (1 << UPB_DTYPE_FIXED64) |
92
- (1 << UPB_DTYPE_SFIXED64);
90
+ static const unsigned FIXED64_OK_MASK = (1 << kUpb_FieldType_Double) |
91
+ (1 << kUpb_FieldType_Fixed64) |
92
+ (1 << kUpb_FieldType_SFixed64);
93
93
 
94
94
  /* Three fake field types for MessageSet. */
95
95
  #define TYPE_MSGSET_ITEM 19
@@ -97,16 +97,18 @@ static const unsigned FIXED64_OK_MASK = (1 << UPB_DTYPE_DOUBLE) |
97
97
  #define TYPE_COUNT 20
98
98
 
99
99
  /* Op: an action to be performed for a wire-type/field-type combination. */
100
- #define OP_UNKNOWN -1 /* Unknown field. */
100
+ #define OP_UNKNOWN -1 /* Unknown field. */
101
101
  #define OP_MSGSET_ITEM -2
102
102
  #define OP_MSGSET_TYPEID -3
103
- #define OP_SCALAR_LG2(n) (n) /* n in [0, 2, 3] => op in [0, 2, 3] */
103
+ #define OP_SCALAR_LG2(n) (n) /* n in [0, 2, 3] => op in [0, 2, 3] */
104
+ #define OP_ENUM 1
104
105
  #define OP_STRING 4
105
106
  #define OP_BYTES 5
106
107
  #define OP_SUBMSG 6
107
- /* Ops above are scalar-only. Repeated fields can use any op. */
108
- #define OP_FIXPCK_LG2(n) (n + 5) /* n in [2, 3] => op in [7, 8] */
109
- #define OP_VARPCK_LG2(n) (n + 9) /* n in [0, 2, 3] => op in [9, 11, 12] */
108
+ /* Scalar fields use only ops above. Repeated fields can use any op. */
109
+ #define OP_FIXPCK_LG2(n) (n + 5) /* n in [2, 3] => op in [7, 8] */
110
+ #define OP_VARPCK_LG2(n) (n + 9) /* n in [0, 2, 3] => op in [9, 11, 12] */
111
+ #define OP_PACKED_ENUM 13
110
112
 
111
113
  static const int8_t varint_ops[] = {
112
114
  OP_UNKNOWN, /* field not found */
@@ -123,7 +125,7 @@ static const int8_t varint_ops[] = {
123
125
  OP_UNKNOWN, /* MESSAGE */
124
126
  OP_UNKNOWN, /* BYTES */
125
127
  OP_SCALAR_LG2(2), /* UINT32 */
126
- OP_SCALAR_LG2(2), /* ENUM */
128
+ OP_ENUM, /* ENUM */
127
129
  OP_UNKNOWN, /* SFIXED32 */
128
130
  OP_UNKNOWN, /* SFIXED64 */
129
131
  OP_SCALAR_LG2(2), /* SINT32 */
@@ -134,27 +136,27 @@ static const int8_t varint_ops[] = {
134
136
 
135
137
  static const int8_t delim_ops[] = {
136
138
  /* For non-repeated field type. */
137
- OP_UNKNOWN, /* field not found */
138
- OP_UNKNOWN, /* DOUBLE */
139
- OP_UNKNOWN, /* FLOAT */
140
- OP_UNKNOWN, /* INT64 */
141
- OP_UNKNOWN, /* UINT64 */
142
- OP_UNKNOWN, /* INT32 */
143
- OP_UNKNOWN, /* FIXED64 */
144
- OP_UNKNOWN, /* FIXED32 */
145
- OP_UNKNOWN, /* BOOL */
146
- OP_STRING, /* STRING */
147
- OP_UNKNOWN, /* GROUP */
148
- OP_SUBMSG, /* MESSAGE */
149
- OP_BYTES, /* BYTES */
150
- OP_UNKNOWN, /* UINT32 */
151
- OP_UNKNOWN, /* ENUM */
152
- OP_UNKNOWN, /* SFIXED32 */
153
- OP_UNKNOWN, /* SFIXED64 */
154
- OP_UNKNOWN, /* SINT32 */
155
- OP_UNKNOWN, /* SINT64 */
156
- OP_UNKNOWN, /* MSGSET_ITEM */
157
- OP_UNKNOWN, /* MSGSET TYPEID */
139
+ OP_UNKNOWN, /* field not found */
140
+ OP_UNKNOWN, /* DOUBLE */
141
+ OP_UNKNOWN, /* FLOAT */
142
+ OP_UNKNOWN, /* INT64 */
143
+ OP_UNKNOWN, /* UINT64 */
144
+ OP_UNKNOWN, /* INT32 */
145
+ OP_UNKNOWN, /* FIXED64 */
146
+ OP_UNKNOWN, /* FIXED32 */
147
+ OP_UNKNOWN, /* BOOL */
148
+ OP_STRING, /* STRING */
149
+ OP_UNKNOWN, /* GROUP */
150
+ OP_SUBMSG, /* MESSAGE */
151
+ OP_BYTES, /* BYTES */
152
+ OP_UNKNOWN, /* UINT32 */
153
+ OP_UNKNOWN, /* ENUM */
154
+ OP_UNKNOWN, /* SFIXED32 */
155
+ OP_UNKNOWN, /* SFIXED64 */
156
+ OP_UNKNOWN, /* SINT32 */
157
+ OP_UNKNOWN, /* SINT64 */
158
+ OP_UNKNOWN, /* MSGSET_ITEM */
159
+ OP_UNKNOWN, /* MSGSET TYPEID */
158
160
  /* For repeated field type. */
159
161
  OP_FIXPCK_LG2(3), /* REPEATED DOUBLE */
160
162
  OP_FIXPCK_LG2(2), /* REPEATED FLOAT */
@@ -169,7 +171,7 @@ static const int8_t delim_ops[] = {
169
171
  OP_SUBMSG, /* REPEATED MESSAGE */
170
172
  OP_BYTES, /* REPEATED BYTES */
171
173
  OP_VARPCK_LG2(2), /* REPEATED UINT32 */
172
- OP_VARPCK_LG2(2), /* REPEATED ENUM */
174
+ OP_PACKED_ENUM, /* REPEATED ENUM */
173
175
  OP_FIXPCK_LG2(2), /* REPEATED SFIXED32 */
174
176
  OP_FIXPCK_LG2(3), /* REPEATED SFIXED64 */
175
177
  OP_VARPCK_LG2(2), /* REPEATED SINT32 */
@@ -184,63 +186,39 @@ typedef union {
184
186
  uint32_t size;
185
187
  } wireval;
186
188
 
187
- static const char *decode_msg(upb_decstate *d, const char *ptr, upb_msg *msg,
188
- const upb_msglayout *layout);
189
+ static const char* decode_msg(upb_Decoder* d, const char* ptr, upb_Message* msg,
190
+ const upb_MiniTable* layout);
189
191
 
190
- UPB_NORETURN static const char *decode_err(upb_decstate *d) {
191
- UPB_LONGJMP(d->err, 1);
192
+ UPB_NORETURN static void* decode_err(upb_Decoder* d, upb_DecodeStatus status) {
193
+ assert(status != kUpb_DecodeStatus_Ok);
194
+ UPB_LONGJMP(d->err, status);
192
195
  }
193
196
 
194
- // We don't want to mark this NORETURN, see comment in .h.
195
- // Unfortunately this code to suppress the warning doesn't appear to be working.
196
- #ifdef __clang__
197
- #pragma clang diagnostic push
198
- #pragma clang diagnostic ignored "-Wunknown-warning-option"
199
- #pragma clang diagnostic ignored "-Wsuggest-attribute"
200
- #endif
201
-
202
- const char *fastdecode_err(upb_decstate *d) {
203
- longjmp(d->err, 1);
197
+ const char* fastdecode_err(upb_Decoder* d, int status) {
198
+ assert(status != kUpb_DecodeStatus_Ok);
199
+ UPB_LONGJMP(d->err, status);
204
200
  return NULL;
205
201
  }
206
-
207
- #ifdef __clang__
208
- #pragma clang diagnostic pop
209
- #endif
210
-
211
- const uint8_t upb_utf8_offsets[] = {
212
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
213
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
214
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
215
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
216
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
217
- 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
218
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
219
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
220
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
221
- 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
222
- 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0,
223
- };
224
-
225
- static void decode_verifyutf8(upb_decstate *d, const char *buf, int len) {
226
- if (!decode_verifyutf8_inl(buf, len)) decode_err(d);
202
+ static void decode_verifyutf8(upb_Decoder* d, const char* buf, int len) {
203
+ if (!decode_verifyutf8_inl(buf, len))
204
+ decode_err(d, kUpb_DecodeStatus_BadUtf8);
227
205
  }
228
206
 
229
- static bool decode_reserve(upb_decstate *d, upb_array *arr, size_t elem) {
207
+ static bool decode_reserve(upb_Decoder* d, upb_Array* arr, size_t elem) {
230
208
  bool need_realloc = arr->size - arr->len < elem;
231
209
  if (need_realloc && !_upb_array_realloc(arr, arr->len + elem, &d->arena)) {
232
- decode_err(d);
210
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
233
211
  }
234
212
  return need_realloc;
235
213
  }
236
214
 
237
215
  typedef struct {
238
- const char *ptr;
216
+ const char* ptr;
239
217
  uint64_t val;
240
218
  } decode_vret;
241
219
 
242
220
  UPB_NOINLINE
243
- static decode_vret decode_longvarint64(const char *ptr, uint64_t val) {
221
+ static decode_vret decode_longvarint64(const char* ptr, uint64_t val) {
244
222
  decode_vret ret = {NULL, 0};
245
223
  uint64_t byte;
246
224
  int i;
@@ -257,85 +235,92 @@ static decode_vret decode_longvarint64(const char *ptr, uint64_t val) {
257
235
  }
258
236
 
259
237
  UPB_FORCEINLINE
260
- static const char *decode_varint64(upb_decstate *d, const char *ptr,
261
- uint64_t *val) {
238
+ static const char* decode_varint64(upb_Decoder* d, const char* ptr,
239
+ uint64_t* val) {
262
240
  uint64_t byte = (uint8_t)*ptr;
263
241
  if (UPB_LIKELY((byte & 0x80) == 0)) {
264
242
  *val = byte;
265
243
  return ptr + 1;
266
244
  } else {
267
245
  decode_vret res = decode_longvarint64(ptr, byte);
268
- if (!res.ptr) return decode_err(d);
246
+ if (!res.ptr) return decode_err(d, kUpb_DecodeStatus_Malformed);
269
247
  *val = res.val;
270
248
  return res.ptr;
271
249
  }
272
250
  }
273
251
 
274
252
  UPB_FORCEINLINE
275
- static const char *decode_tag(upb_decstate *d, const char *ptr,
276
- uint32_t *val) {
253
+ static const char* decode_tag(upb_Decoder* d, const char* ptr, uint32_t* val) {
277
254
  uint64_t byte = (uint8_t)*ptr;
278
255
  if (UPB_LIKELY((byte & 0x80) == 0)) {
279
256
  *val = byte;
280
257
  return ptr + 1;
281
258
  } else {
282
- const char *start = ptr;
259
+ const char* start = ptr;
283
260
  decode_vret res = decode_longvarint64(ptr, byte);
284
- ptr = res.ptr;
261
+ if (!res.ptr || res.ptr - start > 5 || res.val > UINT32_MAX) {
262
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
263
+ }
285
264
  *val = res.val;
286
- if (!ptr || *val > UINT32_MAX || ptr - start > 5) return decode_err(d);
287
- return ptr;
265
+ return res.ptr;
288
266
  }
289
267
  }
290
268
 
291
- static void decode_munge(int type, wireval *val) {
269
+ static void decode_munge_int32(wireval* val) {
270
+ if (!_upb_IsLittleEndian()) {
271
+ /* The next stage will memcpy(dst, &val, 4) */
272
+ val->uint32_val = val->uint64_val;
273
+ }
274
+ }
275
+
276
+ static void decode_munge(int type, wireval* val) {
292
277
  switch (type) {
293
- case UPB_DESCRIPTOR_TYPE_BOOL:
278
+ case kUpb_FieldType_Bool:
294
279
  val->bool_val = val->uint64_val != 0;
295
280
  break;
296
- case UPB_DESCRIPTOR_TYPE_SINT32: {
297
- uint32_t n = val->uint32_val;
281
+ case kUpb_FieldType_SInt32: {
282
+ uint32_t n = val->uint64_val;
298
283
  val->uint32_val = (n >> 1) ^ -(int32_t)(n & 1);
299
284
  break;
300
285
  }
301
- case UPB_DESCRIPTOR_TYPE_SINT64: {
286
+ case kUpb_FieldType_SInt64: {
302
287
  uint64_t n = val->uint64_val;
303
288
  val->uint64_val = (n >> 1) ^ -(int64_t)(n & 1);
304
289
  break;
305
290
  }
306
- case UPB_DESCRIPTOR_TYPE_INT32:
307
- case UPB_DESCRIPTOR_TYPE_UINT32:
308
- if (!_upb_isle()) {
309
- /* The next stage will memcpy(dst, &val, 4) */
310
- val->uint32_val = val->uint64_val;
311
- }
291
+ case kUpb_FieldType_Int32:
292
+ case kUpb_FieldType_UInt32:
293
+ case kUpb_FieldType_Enum:
294
+ decode_munge_int32(val);
312
295
  break;
313
296
  }
314
297
  }
315
298
 
316
- static upb_msg *decode_newsubmsg(upb_decstate *d, const upb_msglayout_sub *subs,
317
- const upb_msglayout_field *field) {
318
- const upb_msglayout *subl = subs[field->submsg_index].submsg;
319
- return _upb_msg_new_inl(subl, &d->arena);
299
+ static upb_Message* decode_newsubmsg(upb_Decoder* d,
300
+ const upb_MiniTable_Sub* subs,
301
+ const upb_MiniTable_Field* field) {
302
+ const upb_MiniTable* subl = subs[field->submsg_index].submsg;
303
+ return _upb_Message_New_inl(subl, &d->arena);
320
304
  }
321
305
 
322
306
  UPB_NOINLINE
323
- const char *decode_isdonefallback(upb_decstate *d, const char *ptr,
307
+ const char* decode_isdonefallback(upb_Decoder* d, const char* ptr,
324
308
  int overrun) {
325
- ptr = decode_isdonefallback_inl(d, ptr, overrun);
309
+ int status;
310
+ ptr = decode_isdonefallback_inl(d, ptr, overrun, &status);
326
311
  if (ptr == NULL) {
327
- return decode_err(d);
312
+ return decode_err(d, status);
328
313
  }
329
314
  return ptr;
330
315
  }
331
316
 
332
- static const char *decode_readstr(upb_decstate *d, const char *ptr, int size,
333
- upb_strview *str) {
334
- if (d->alias) {
317
+ static const char* decode_readstr(upb_Decoder* d, const char* ptr, int size,
318
+ upb_StringView* str) {
319
+ if (d->options & kUpb_DecodeOption_AliasString) {
335
320
  str->data = ptr;
336
321
  } else {
337
- char *data = upb_arena_malloc(&d->arena, size);
338
- if (!data) return decode_err(d);
322
+ char* data = upb_Arena_Malloc(&d->arena, size);
323
+ if (!data) return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
339
324
  memcpy(data, ptr, size);
340
325
  str->data = data;
341
326
  }
@@ -344,61 +329,222 @@ static const char *decode_readstr(upb_decstate *d, const char *ptr, int size,
344
329
  }
345
330
 
346
331
  UPB_FORCEINLINE
347
- static const char *decode_tosubmsg(upb_decstate *d, const char *ptr,
348
- upb_msg *submsg,
349
- const upb_msglayout_sub *subs,
350
- const upb_msglayout_field *field, int size) {
351
- const upb_msglayout *subl = subs[field->submsg_index].submsg;
332
+ static const char* decode_tosubmsg2(upb_Decoder* d, const char* ptr,
333
+ upb_Message* submsg,
334
+ const upb_MiniTable* subl, int size) {
352
335
  int saved_delta = decode_pushlimit(d, ptr, size);
353
- if (--d->depth < 0) return decode_err(d);
354
- if (!decode_isdone(d, &ptr)) {
355
- ptr = decode_msg(d, ptr, submsg, subl);
356
- }
357
- if (d->end_group != DECODE_NOGROUP) return decode_err(d);
336
+ if (--d->depth < 0) return decode_err(d, kUpb_DecodeStatus_MaxDepthExceeded);
337
+ ptr = decode_msg(d, ptr, submsg, subl);
338
+ if (d->end_group != DECODE_NOGROUP)
339
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
358
340
  decode_poplimit(d, ptr, saved_delta);
359
341
  d->depth++;
360
342
  return ptr;
361
343
  }
362
344
 
363
345
  UPB_FORCEINLINE
364
- static const char *decode_group(upb_decstate *d, const char *ptr,
365
- upb_msg *submsg, const upb_msglayout *subl,
346
+ static const char* decode_tosubmsg(upb_Decoder* d, const char* ptr,
347
+ upb_Message* submsg,
348
+ const upb_MiniTable_Sub* subs,
349
+ const upb_MiniTable_Field* field, int size) {
350
+ return decode_tosubmsg2(d, ptr, submsg, subs[field->submsg_index].submsg,
351
+ size);
352
+ }
353
+
354
+ UPB_FORCEINLINE
355
+ static const char* decode_group(upb_Decoder* d, const char* ptr,
356
+ upb_Message* submsg, const upb_MiniTable* subl,
366
357
  uint32_t number) {
367
- if (--d->depth < 0) return decode_err(d);
358
+ if (--d->depth < 0) return decode_err(d, kUpb_DecodeStatus_MaxDepthExceeded);
368
359
  if (decode_isdone(d, &ptr)) {
369
- return decode_err(d);
360
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
370
361
  }
371
362
  ptr = decode_msg(d, ptr, submsg, subl);
372
- if (d->end_group != number) return decode_err(d);
363
+ if (d->end_group != number) return decode_err(d, kUpb_DecodeStatus_Malformed);
373
364
  d->end_group = DECODE_NOGROUP;
374
365
  d->depth++;
375
366
  return ptr;
376
367
  }
377
368
 
378
369
  UPB_FORCEINLINE
379
- static const char *decode_togroup(upb_decstate *d, const char *ptr,
380
- upb_msg *submsg,
381
- const upb_msglayout_sub *subs,
382
- const upb_msglayout_field *field) {
383
- const upb_msglayout *subl = subs[field->submsg_index].submsg;
370
+ static const char* decode_togroup(upb_Decoder* d, const char* ptr,
371
+ upb_Message* submsg,
372
+ const upb_MiniTable_Sub* subs,
373
+ const upb_MiniTable_Field* field) {
374
+ const upb_MiniTable* subl = subs[field->submsg_index].submsg;
384
375
  return decode_group(d, ptr, submsg, subl, field->number);
385
376
  }
386
377
 
387
- static const char *decode_toarray(upb_decstate *d, const char *ptr,
388
- upb_msg *msg,
389
- const upb_msglayout_sub *subs,
390
- const upb_msglayout_field *field, wireval *val,
391
- int op) {
392
- upb_array **arrp = UPB_PTR_AT(msg, field->offset, void);
393
- upb_array *arr = *arrp;
394
- void *mem;
378
+ static char* encode_varint32(uint32_t val, char* ptr) {
379
+ do {
380
+ uint8_t byte = val & 0x7fU;
381
+ val >>= 7;
382
+ if (val) byte |= 0x80U;
383
+ *(ptr++) = byte;
384
+ } while (val);
385
+ return ptr;
386
+ }
387
+
388
+ UPB_NOINLINE
389
+ static bool decode_checkenum_slow(upb_Decoder* d, const char* ptr,
390
+ upb_Message* msg, const upb_MiniTable_Enum* e,
391
+ const upb_MiniTable_Field* field,
392
+ uint32_t v) {
393
+ // OPT: binary search long lists?
394
+ int n = e->value_count;
395
+ for (int i = 0; i < n; i++) {
396
+ if ((uint32_t)e->values[i] == v) return true;
397
+ }
398
+
399
+ // Unrecognized enum goes into unknown fields.
400
+ // For packed fields the tag could be arbitrarily far in the past, so we
401
+ // just re-encode the tag here.
402
+ char buf[20];
403
+ char* end = buf;
404
+ uint32_t tag = ((uint32_t)field->number << 3) | kUpb_WireType_Varint;
405
+ end = encode_varint32(tag, end);
406
+ end = encode_varint32(v, end);
407
+
408
+ if (!_upb_Message_AddUnknown(msg, buf, end - buf, &d->arena)) {
409
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
410
+ }
411
+
412
+ return false;
413
+ }
414
+
415
+ UPB_FORCEINLINE
416
+ static bool decode_checkenum(upb_Decoder* d, const char* ptr, upb_Message* msg,
417
+ const upb_MiniTable_Enum* e,
418
+ const upb_MiniTable_Field* field, wireval* val) {
419
+ uint32_t v = val->uint32_val;
420
+
421
+ if (UPB_LIKELY(v < 64) && UPB_LIKELY(((1ULL << v) & e->mask))) return true;
422
+
423
+ return decode_checkenum_slow(d, ptr, msg, e, field, v);
424
+ }
425
+
426
+ UPB_NOINLINE
427
+ static const char* decode_enum_toarray(upb_Decoder* d, const char* ptr,
428
+ upb_Message* msg, upb_Array* arr,
429
+ const upb_MiniTable_Sub* subs,
430
+ const upb_MiniTable_Field* field,
431
+ wireval* val) {
432
+ const upb_MiniTable_Enum* e = subs[field->submsg_index].subenum;
433
+ if (!decode_checkenum(d, ptr, msg, e, field, val)) return ptr;
434
+ void* mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->len * 4, void);
435
+ arr->len++;
436
+ memcpy(mem, val, 4);
437
+ return ptr;
438
+ }
439
+
440
+ UPB_FORCEINLINE
441
+ static const char* decode_fixed_packed(upb_Decoder* d, const char* ptr,
442
+ upb_Array* arr, wireval* val,
443
+ const upb_MiniTable_Field* field,
444
+ int lg2) {
445
+ int mask = (1 << lg2) - 1;
446
+ size_t count = val->size >> lg2;
447
+ if ((val->size & mask) != 0) {
448
+ // Length isn't a round multiple of elem size.
449
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
450
+ }
451
+ decode_reserve(d, arr, count);
452
+ void* mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
453
+ arr->len += count;
454
+ // Note: if/when the decoder supports multi-buffer input, we will need to
455
+ // handle buffer seams here.
456
+ if (_upb_IsLittleEndian()) {
457
+ memcpy(mem, ptr, val->size);
458
+ ptr += val->size;
459
+ } else {
460
+ const char* end = ptr + val->size;
461
+ char* dst = mem;
462
+ while (ptr < end) {
463
+ if (lg2 == 2) {
464
+ uint32_t val;
465
+ memcpy(&val, ptr, sizeof(val));
466
+ val = _upb_BigEndian_Swap32(val);
467
+ memcpy(dst, &val, sizeof(val));
468
+ } else {
469
+ UPB_ASSERT(lg2 == 3);
470
+ uint64_t val;
471
+ memcpy(&val, ptr, sizeof(val));
472
+ val = _upb_BigEndian_Swap64(val);
473
+ memcpy(dst, &val, sizeof(val));
474
+ }
475
+ ptr += 1 << lg2;
476
+ dst += 1 << lg2;
477
+ }
478
+ }
479
+
480
+ return ptr;
481
+ }
482
+
483
+ UPB_FORCEINLINE
484
+ static const char* decode_varint_packed(upb_Decoder* d, const char* ptr,
485
+ upb_Array* arr, wireval* val,
486
+ const upb_MiniTable_Field* field,
487
+ int lg2) {
488
+ int scale = 1 << lg2;
489
+ int saved_limit = decode_pushlimit(d, ptr, val->size);
490
+ char* out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
491
+ while (!decode_isdone(d, &ptr)) {
492
+ wireval elem;
493
+ ptr = decode_varint64(d, ptr, &elem.uint64_val);
494
+ decode_munge(field->descriptortype, &elem);
495
+ if (decode_reserve(d, arr, 1)) {
496
+ out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
497
+ }
498
+ arr->len++;
499
+ memcpy(out, &elem, scale);
500
+ out += scale;
501
+ }
502
+ decode_poplimit(d, ptr, saved_limit);
503
+ return ptr;
504
+ }
505
+
506
+ UPB_NOINLINE
507
+ static const char* decode_enum_packed(upb_Decoder* d, const char* ptr,
508
+ upb_Message* msg, upb_Array* arr,
509
+ const upb_MiniTable_Sub* subs,
510
+ const upb_MiniTable_Field* field,
511
+ wireval* val) {
512
+ const upb_MiniTable_Enum* e = subs[field->submsg_index].subenum;
513
+ int saved_limit = decode_pushlimit(d, ptr, val->size);
514
+ char* out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len * 4, void);
515
+ while (!decode_isdone(d, &ptr)) {
516
+ wireval elem;
517
+ ptr = decode_varint64(d, ptr, &elem.uint64_val);
518
+ decode_munge_int32(&elem);
519
+ if (!decode_checkenum(d, ptr, msg, e, field, &elem)) {
520
+ continue;
521
+ }
522
+ if (decode_reserve(d, arr, 1)) {
523
+ out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len * 4, void);
524
+ }
525
+ arr->len++;
526
+ memcpy(out, &elem, 4);
527
+ out += 4;
528
+ }
529
+ decode_poplimit(d, ptr, saved_limit);
530
+ return ptr;
531
+ }
532
+
533
+ static const char* decode_toarray(upb_Decoder* d, const char* ptr,
534
+ upb_Message* msg,
535
+ const upb_MiniTable_Sub* subs,
536
+ const upb_MiniTable_Field* field,
537
+ wireval* val, int op) {
538
+ upb_Array** arrp = UPB_PTR_AT(msg, field->offset, void);
539
+ upb_Array* arr = *arrp;
540
+ void* mem;
395
541
 
396
542
  if (arr) {
397
543
  decode_reserve(d, arr, 1);
398
544
  } else {
399
545
  size_t lg2 = desctype_to_elem_size_lg2[field->descriptortype];
400
- arr = _upb_array_new(&d->arena, 4, lg2);
401
- if (!arr) return decode_err(d);
546
+ arr = _upb_Array_New(&d->arena, 4, lg2);
547
+ if (!arr) return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
402
548
  *arrp = arr;
403
549
  }
404
550
 
@@ -416,112 +562,95 @@ static const char *decode_toarray(upb_decstate *d, const char *ptr,
416
562
  /* Fallthrough. */
417
563
  case OP_BYTES: {
418
564
  /* Append bytes. */
419
- upb_strview *str = (upb_strview*)_upb_array_ptr(arr) + arr->len;
565
+ upb_StringView* str = (upb_StringView*)_upb_array_ptr(arr) + arr->len;
420
566
  arr->len++;
421
567
  return decode_readstr(d, ptr, val->size, str);
422
568
  }
423
569
  case OP_SUBMSG: {
424
570
  /* Append submessage / group. */
425
- upb_msg *submsg = decode_newsubmsg(d, subs, field);
426
- *UPB_PTR_AT(_upb_array_ptr(arr), arr->len * sizeof(void *), upb_msg *) =
571
+ upb_Message* submsg = decode_newsubmsg(d, subs, field);
572
+ *UPB_PTR_AT(_upb_array_ptr(arr), arr->len * sizeof(void*), upb_Message*) =
427
573
  submsg;
428
574
  arr->len++;
429
- if (UPB_UNLIKELY(field->descriptortype == UPB_DTYPE_GROUP)) {
575
+ if (UPB_UNLIKELY(field->descriptortype == kUpb_FieldType_Group)) {
430
576
  return decode_togroup(d, ptr, submsg, subs, field);
431
577
  } else {
432
578
  return decode_tosubmsg(d, ptr, submsg, subs, field, val->size);
433
579
  }
434
580
  }
435
581
  case OP_FIXPCK_LG2(2):
436
- case OP_FIXPCK_LG2(3): {
437
- /* Fixed packed. */
438
- int lg2 = op - OP_FIXPCK_LG2(0);
439
- int mask = (1 << lg2) - 1;
440
- size_t count = val->size >> lg2;
441
- if ((val->size & mask) != 0) {
442
- return decode_err(d); /* Length isn't a round multiple of elem size. */
443
- }
444
- decode_reserve(d, arr, count);
445
- mem = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
446
- arr->len += count;
447
- memcpy(mem, ptr, val->size); /* XXX: ptr boundary. */
448
- return ptr + val->size;
449
- }
582
+ case OP_FIXPCK_LG2(3):
583
+ return decode_fixed_packed(d, ptr, arr, val, field,
584
+ op - OP_FIXPCK_LG2(0));
450
585
  case OP_VARPCK_LG2(0):
451
586
  case OP_VARPCK_LG2(2):
452
- case OP_VARPCK_LG2(3): {
453
- /* Varint packed. */
454
- int lg2 = op - OP_VARPCK_LG2(0);
455
- int scale = 1 << lg2;
456
- int saved_limit = decode_pushlimit(d, ptr, val->size);
457
- char *out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
458
- while (!decode_isdone(d, &ptr)) {
459
- wireval elem;
460
- ptr = decode_varint64(d, ptr, &elem.uint64_val);
461
- decode_munge(field->descriptortype, &elem);
462
- if (decode_reserve(d, arr, 1)) {
463
- out = UPB_PTR_AT(_upb_array_ptr(arr), arr->len << lg2, void);
464
- }
465
- arr->len++;
466
- memcpy(out, &elem, scale);
467
- out += scale;
468
- }
469
- decode_poplimit(d, ptr, saved_limit);
470
- return ptr;
471
- }
587
+ case OP_VARPCK_LG2(3):
588
+ return decode_varint_packed(d, ptr, arr, val, field,
589
+ op - OP_VARPCK_LG2(0));
590
+ case OP_ENUM:
591
+ return decode_enum_toarray(d, ptr, msg, arr, subs, field, val);
592
+ case OP_PACKED_ENUM:
593
+ return decode_enum_packed(d, ptr, msg, arr, subs, field, val);
472
594
  default:
473
595
  UPB_UNREACHABLE();
474
596
  }
475
597
  }
476
598
 
477
- static const char *decode_tomap(upb_decstate *d, const char *ptr, upb_msg *msg,
478
- const upb_msglayout_sub *subs,
479
- const upb_msglayout_field *field,
480
- wireval *val) {
481
- upb_map **map_p = UPB_PTR_AT(msg, field->offset, upb_map *);
482
- upb_map *map = *map_p;
483
- upb_map_entry ent;
484
- const upb_msglayout *entry = subs[field->submsg_index].submsg;
599
+ static const char* decode_tomap(upb_Decoder* d, const char* ptr,
600
+ upb_Message* msg, const upb_MiniTable_Sub* subs,
601
+ const upb_MiniTable_Field* field,
602
+ wireval* val) {
603
+ upb_Map** map_p = UPB_PTR_AT(msg, field->offset, upb_Map*);
604
+ upb_Map* map = *map_p;
605
+ upb_MapEntry ent;
606
+ const upb_MiniTable* entry = subs[field->submsg_index].submsg;
485
607
 
486
608
  if (!map) {
487
609
  /* Lazily create map. */
488
- const upb_msglayout_field *key_field = &entry->fields[0];
489
- const upb_msglayout_field *val_field = &entry->fields[1];
610
+ const upb_MiniTable_Field* key_field = &entry->fields[0];
611
+ const upb_MiniTable_Field* val_field = &entry->fields[1];
490
612
  char key_size = desctype_to_mapsize[key_field->descriptortype];
491
613
  char val_size = desctype_to_mapsize[val_field->descriptortype];
492
614
  UPB_ASSERT(key_field->offset == 0);
493
- UPB_ASSERT(val_field->offset == sizeof(upb_strview));
494
- map = _upb_map_new(&d->arena, key_size, val_size);
615
+ UPB_ASSERT(val_field->offset == sizeof(upb_StringView));
616
+ map = _upb_Map_New(&d->arena, key_size, val_size);
495
617
  *map_p = map;
496
618
  }
497
619
 
498
620
  /* Parse map entry. */
499
621
  memset(&ent, 0, sizeof(ent));
500
622
 
501
- if (entry->fields[1].descriptortype == UPB_DESCRIPTOR_TYPE_MESSAGE ||
502
- entry->fields[1].descriptortype == UPB_DESCRIPTOR_TYPE_GROUP) {
623
+ if (entry->fields[1].descriptortype == kUpb_FieldType_Message ||
624
+ entry->fields[1].descriptortype == kUpb_FieldType_Group) {
503
625
  /* Create proactively to handle the case where it doesn't appear. */
504
- ent.v.val = upb_value_ptr(_upb_msg_new(entry->subs[0].submsg, &d->arena));
626
+ ent.v.val =
627
+ upb_value_ptr(_upb_Message_New(entry->subs[0].submsg, &d->arena));
505
628
  }
506
629
 
507
630
  ptr = decode_tosubmsg(d, ptr, &ent.k, subs, field, val->size);
508
- _upb_map_set(map, &ent.k, map->key_size, &ent.v, map->val_size, &d->arena);
631
+ _upb_Map_Set(map, &ent.k, map->key_size, &ent.v, map->val_size, &d->arena);
509
632
  return ptr;
510
633
  }
511
634
 
512
- static const char *decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg,
513
- const upb_msglayout_sub *subs,
514
- const upb_msglayout_field *field, wireval *val,
635
+ static const char* decode_tomsg(upb_Decoder* d, const char* ptr,
636
+ upb_Message* msg, const upb_MiniTable_Sub* subs,
637
+ const upb_MiniTable_Field* field, wireval* val,
515
638
  int op) {
516
- void *mem = UPB_PTR_AT(msg, field->offset, void);
639
+ void* mem = UPB_PTR_AT(msg, field->offset, void);
517
640
  int type = field->descriptortype;
518
641
 
642
+ if (UPB_UNLIKELY(op == OP_ENUM) &&
643
+ !decode_checkenum(d, ptr, msg, subs[field->submsg_index].subenum, field,
644
+ val)) {
645
+ return ptr;
646
+ }
647
+
519
648
  /* Set presence if necessary. */
520
649
  if (field->presence > 0) {
521
650
  _upb_sethas_field(msg, field);
522
651
  } else if (field->presence < 0) {
523
652
  /* Oneof case */
524
- uint32_t *oneof_case = _upb_oneofcase_field(msg, field);
653
+ uint32_t* oneof_case = _upb_oneofcase_field(msg, field);
525
654
  if (op == OP_SUBMSG && *oneof_case != field->number) {
526
655
  memset(mem, 0, sizeof(void*));
527
656
  }
@@ -531,13 +660,13 @@ static const char *decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg,
531
660
  /* Store into message. */
532
661
  switch (op) {
533
662
  case OP_SUBMSG: {
534
- upb_msg **submsgp = mem;
535
- upb_msg *submsg = *submsgp;
663
+ upb_Message** submsgp = mem;
664
+ upb_Message* submsg = *submsgp;
536
665
  if (!submsg) {
537
666
  submsg = decode_newsubmsg(d, subs, field);
538
667
  *submsgp = submsg;
539
668
  }
540
- if (UPB_UNLIKELY(type == UPB_DTYPE_GROUP)) {
669
+ if (UPB_UNLIKELY(type == kUpb_FieldType_Group)) {
541
670
  ptr = decode_togroup(d, ptr, submsg, subs, field);
542
671
  } else {
543
672
  ptr = decode_tosubmsg(d, ptr, submsg, subs, field, val->size);
@@ -552,6 +681,7 @@ static const char *decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg,
552
681
  case OP_SCALAR_LG2(3):
553
682
  memcpy(mem, val, 8);
554
683
  break;
684
+ case OP_ENUM:
555
685
  case OP_SCALAR_LG2(2):
556
686
  memcpy(mem, val, 4);
557
687
  break;
@@ -565,9 +695,27 @@ static const char *decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg,
565
695
  return ptr;
566
696
  }
567
697
 
698
+ UPB_NOINLINE
699
+ const char* decode_checkrequired(upb_Decoder* d, const char* ptr,
700
+ const upb_Message* msg,
701
+ const upb_MiniTable* l) {
702
+ assert(l->required_count);
703
+ if (UPB_LIKELY((d->options & kUpb_DecodeOption_CheckRequired) == 0)) {
704
+ return ptr;
705
+ }
706
+ uint64_t msg_head;
707
+ memcpy(&msg_head, msg, 8);
708
+ msg_head = _upb_BigEndian_Swap64(msg_head);
709
+ if (upb_MiniTable_requiredmask(l) & ~msg_head) {
710
+ d->missing_required = true;
711
+ }
712
+ return ptr;
713
+ }
714
+
568
715
  UPB_FORCEINLINE
569
- static bool decode_tryfastdispatch(upb_decstate *d, const char **ptr,
570
- upb_msg *msg, const upb_msglayout *layout) {
716
+ static bool decode_tryfastdispatch(upb_Decoder* d, const char** ptr,
717
+ upb_Message* msg,
718
+ const upb_MiniTable* layout) {
571
719
  #if UPB_FASTTABLE
572
720
  if (layout && layout->table_mask != (unsigned char)-1) {
573
721
  uint16_t tag = fastdecode_loadtag(*ptr);
@@ -579,30 +727,32 @@ static bool decode_tryfastdispatch(upb_decstate *d, const char **ptr,
579
727
  return false;
580
728
  }
581
729
 
582
- static const char *decode_msgset(upb_decstate *d, const char *ptr, upb_msg *msg,
583
- const upb_msglayout *layout) {
584
- // We create a temporary upb_msglayout here and abuse its fields as temporary
730
+ static const char* decode_msgset(upb_Decoder* d, const char* ptr,
731
+ upb_Message* msg,
732
+ const upb_MiniTable* layout) {
733
+ // We create a temporary upb_MiniTable here and abuse its fields as temporary
585
734
  // storage, to avoid creating lots of MessageSet-specific parsing code-paths:
586
735
  // 1. We store 'layout' in item_layout.subs. We will need this later as
587
736
  // a key to look up extensions for this MessageSet.
588
- // 2. We use item_layout.fields as temporary storage to store the extension we
737
+ // 2. We use item_layout.fields as temporary storage to store the extension
738
+ // we
589
739
  // found when parsing the type id.
590
- upb_msglayout item_layout = {
591
- .subs = (const upb_msglayout_sub[]){{.submsg = layout}},
740
+ upb_MiniTable item_layout = {
741
+ .subs = (const upb_MiniTable_Sub[]){{.submsg = layout}},
592
742
  .fields = NULL,
593
743
  .size = 0,
594
744
  .field_count = 0,
595
- .ext = _UPB_MSGEXT_MSGSET_ITEM,
745
+ .ext = upb_ExtMode_IsMessageSet_ITEM,
596
746
  .dense_below = 0,
597
747
  .table_mask = -1};
598
748
  return decode_group(d, ptr, msg, &item_layout, 1);
599
749
  }
600
750
 
601
- static const upb_msglayout_field *decode_findfield(upb_decstate *d,
602
- const upb_msglayout *l,
751
+ static const upb_MiniTable_Field* decode_findfield(upb_Decoder* d,
752
+ const upb_MiniTable* l,
603
753
  uint32_t field_number,
604
- int *last_field_index) {
605
- static upb_msglayout_field none = {0, 0, 0, 0, 0, 0};
754
+ int* last_field_index) {
755
+ static upb_MiniTable_Field none = {0, 0, 0, 0, 0, 0};
606
756
  if (l == NULL) return &none;
607
757
 
608
758
  size_t idx = ((size_t)field_number) - 1; // 0 wraps to SIZE_MAX
@@ -630,22 +780,22 @@ static const upb_msglayout_field *decode_findfield(upb_decstate *d,
630
780
 
631
781
  if (d->extreg) {
632
782
  switch (l->ext) {
633
- case _UPB_MSGEXT_EXTENDABLE: {
634
- const upb_msglayout_ext *ext =
783
+ case upb_ExtMode_Extendable: {
784
+ const upb_MiniTable_Extension* ext =
635
785
  _upb_extreg_get(d->extreg, l, field_number);
636
786
  if (ext) return &ext->field;
637
787
  break;
638
788
  }
639
- case _UPB_MSGEXT_MSGSET:
789
+ case upb_ExtMode_IsMessageSet:
640
790
  if (field_number == _UPB_MSGSET_ITEM) {
641
- static upb_msglayout_field item = {0, 0, 0, 0, TYPE_MSGSET_ITEM, 0};
791
+ static upb_MiniTable_Field item = {0, 0, 0, 0, TYPE_MSGSET_ITEM, 0};
642
792
  return &item;
643
793
  }
644
794
  break;
645
- case _UPB_MSGEXT_MSGSET_ITEM:
795
+ case upb_ExtMode_IsMessageSet_ITEM:
646
796
  switch (field_number) {
647
797
  case _UPB_MSGSET_TYPEID: {
648
- static upb_msglayout_field type_id = {
798
+ static upb_MiniTable_Field type_id = {
649
799
  0, 0, 0, 0, TYPE_MSGSET_TYPE_ID, 0};
650
800
  return &type_id;
651
801
  }
@@ -667,42 +817,42 @@ static const upb_msglayout_field *decode_findfield(upb_decstate *d,
667
817
 
668
818
  return &none; /* Unknown field. */
669
819
 
670
- found:
820
+ found:
671
821
  UPB_ASSERT(l->fields[idx].number == field_number);
672
822
  *last_field_index = idx;
673
823
  return &l->fields[idx];
674
- }
824
+ }
675
825
 
676
826
  UPB_FORCEINLINE
677
- static const char *decode_wireval(upb_decstate *d, const char *ptr,
678
- const upb_msglayout_field *field,
679
- int wire_type, wireval *val, int *op) {
827
+ static const char* decode_wireval(upb_Decoder* d, const char* ptr,
828
+ const upb_MiniTable_Field* field,
829
+ int wire_type, wireval* val, int* op) {
680
830
  switch (wire_type) {
681
- case UPB_WIRE_TYPE_VARINT:
831
+ case kUpb_WireType_Varint:
682
832
  ptr = decode_varint64(d, ptr, &val->uint64_val);
683
833
  *op = varint_ops[field->descriptortype];
684
834
  decode_munge(field->descriptortype, val);
685
835
  return ptr;
686
- case UPB_WIRE_TYPE_32BIT:
836
+ case kUpb_WireType_32Bit:
687
837
  memcpy(&val->uint32_val, ptr, 4);
688
- val->uint32_val = _upb_be_swap32(val->uint32_val);
838
+ val->uint32_val = _upb_BigEndian_Swap32(val->uint32_val);
689
839
  *op = OP_SCALAR_LG2(2);
690
840
  if (((1 << field->descriptortype) & FIXED32_OK_MASK) == 0) {
691
841
  *op = OP_UNKNOWN;
692
842
  }
693
843
  return ptr + 4;
694
- case UPB_WIRE_TYPE_64BIT:
844
+ case kUpb_WireType_64Bit:
695
845
  memcpy(&val->uint64_val, ptr, 8);
696
- val->uint64_val = _upb_be_swap64(val->uint64_val);
846
+ val->uint64_val = _upb_BigEndian_Swap64(val->uint64_val);
697
847
  *op = OP_SCALAR_LG2(3);
698
848
  if (((1 << field->descriptortype) & FIXED64_OK_MASK) == 0) {
699
849
  *op = OP_UNKNOWN;
700
850
  }
701
851
  return ptr + 8;
702
- case UPB_WIRE_TYPE_DELIMITED: {
852
+ case kUpb_WireType_Delimited: {
703
853
  int ndx = field->descriptortype;
704
854
  uint64_t size;
705
- if (_upb_getmode(field) == _UPB_MODE_ARRAY) ndx += TYPE_COUNT;
855
+ if (upb_FieldMode_Get(field) == kUpb_FieldMode_Array) ndx += TYPE_COUNT;
706
856
  ptr = decode_varint64(d, ptr, &size);
707
857
  if (size >= INT32_MAX || ptr - d->end + (int32_t)size > d->limit) {
708
858
  break; /* Length overflow. */
@@ -711,9 +861,9 @@ static const char *decode_wireval(upb_decstate *d, const char *ptr,
711
861
  val->size = size;
712
862
  return ptr;
713
863
  }
714
- case UPB_WIRE_TYPE_START_GROUP:
864
+ case kUpb_WireType_StartGroup:
715
865
  val->uint32_val = field->number;
716
- if (field->descriptortype == UPB_DTYPE_GROUP) {
866
+ if (field->descriptortype == kUpb_FieldType_Group) {
717
867
  *op = OP_SUBMSG;
718
868
  } else if (field->descriptortype == TYPE_MSGSET_ITEM) {
719
869
  *op = OP_MSGSET_ITEM;
@@ -724,87 +874,144 @@ static const char *decode_wireval(upb_decstate *d, const char *ptr,
724
874
  default:
725
875
  break;
726
876
  }
727
- return decode_err(d);
877
+ return decode_err(d, kUpb_DecodeStatus_Malformed);
728
878
  }
729
879
 
730
880
  UPB_FORCEINLINE
731
- static const char *decode_known(upb_decstate *d, const char *ptr, upb_msg *msg,
732
- const upb_msglayout *layout,
733
- const upb_msglayout_field *field, int op,
734
- wireval *val) {
735
- const upb_msglayout_sub *subs = layout->subs;
881
+ static const char* decode_known(upb_Decoder* d, const char* ptr,
882
+ upb_Message* msg, const upb_MiniTable* layout,
883
+ const upb_MiniTable_Field* field, int op,
884
+ wireval* val) {
885
+ const upb_MiniTable_Sub* subs = layout->subs;
736
886
  uint8_t mode = field->mode;
737
887
 
738
- if (UPB_UNLIKELY(mode & _UPB_MODE_IS_EXTENSION)) {
739
- const upb_msglayout_ext *ext_layout = (const upb_msglayout_ext*)field;
740
- upb_msg_ext *ext = _upb_msg_getorcreateext(msg, ext_layout, &d->arena);
741
- if (UPB_UNLIKELY(!ext)) return decode_err(d);
888
+ if (UPB_UNLIKELY(mode & upb_LabelFlags_IsExtension)) {
889
+ const upb_MiniTable_Extension* ext_layout =
890
+ (const upb_MiniTable_Extension*)field;
891
+ upb_Message_Extension* ext =
892
+ _upb_Message_Getorcreateext(msg, ext_layout, &d->arena);
893
+ if (UPB_UNLIKELY(!ext)) return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
742
894
  msg = &ext->data;
743
895
  subs = &ext->ext->sub;
744
896
  }
745
897
 
746
- switch (mode & _UPB_MODE_MASK) {
747
- case _UPB_MODE_ARRAY:
898
+ switch (mode & kUpb_FieldMode_Mask) {
899
+ case kUpb_FieldMode_Array:
748
900
  return decode_toarray(d, ptr, msg, subs, field, val, op);
749
- case _UPB_MODE_MAP:
901
+ case kUpb_FieldMode_Map:
750
902
  return decode_tomap(d, ptr, msg, subs, field, val);
751
- case _UPB_MODE_SCALAR:
903
+ case kUpb_FieldMode_Scalar:
752
904
  return decode_tomsg(d, ptr, msg, subs, field, val, op);
753
905
  default:
754
906
  UPB_UNREACHABLE();
755
907
  }
756
908
  }
757
909
 
758
- UPB_FORCEINLINE
759
- static const char *decode_unknown(upb_decstate *d, const char *ptr,
760
- upb_msg *msg, int field_number, int wire_type,
761
- wireval val, const char **field_start) {
762
- if (field_number == 0) return decode_err(d);
910
+ static const char* decode_reverse_skip_varint(const char* ptr, uint32_t val) {
911
+ uint32_t seen = 0;
912
+ do {
913
+ ptr--;
914
+ seen <<= 7;
915
+ seen |= *ptr & 0x7f;
916
+ } while (seen != val);
917
+ return ptr;
918
+ }
919
+
920
+ static const char* decode_unknown(upb_Decoder* d, const char* ptr,
921
+ upb_Message* msg, int field_number,
922
+ int wire_type, wireval val) {
923
+ if (field_number == 0) return decode_err(d, kUpb_DecodeStatus_Malformed);
763
924
 
764
- if (wire_type == UPB_WIRE_TYPE_DELIMITED) ptr += val.size;
925
+ // Since unknown fields are the uncommon case, we do a little extra work here
926
+ // to walk backwards through the buffer to find the field start. This frees
927
+ // up a register in the fast paths (when the field is known), which leads to
928
+ // significant speedups in benchmarks.
929
+ const char* start = ptr;
930
+
931
+ if (wire_type == kUpb_WireType_Delimited) ptr += val.size;
765
932
  if (msg) {
766
- if (wire_type == UPB_WIRE_TYPE_START_GROUP) {
767
- d->unknown = *field_start;
933
+ switch (wire_type) {
934
+ case kUpb_WireType_Varint:
935
+ case kUpb_WireType_Delimited:
936
+ start--;
937
+ while (start[-1] & 0x80) start--;
938
+ break;
939
+ case kUpb_WireType_32Bit:
940
+ start -= 4;
941
+ break;
942
+ case kUpb_WireType_64Bit:
943
+ start -= 8;
944
+ break;
945
+ default:
946
+ break;
947
+ }
948
+
949
+ assert(start == d->debug_valstart);
950
+ uint32_t tag = ((uint32_t)field_number << 3) | wire_type;
951
+ start = decode_reverse_skip_varint(start, tag);
952
+ assert(start == d->debug_tagstart);
953
+
954
+ if (wire_type == kUpb_WireType_StartGroup) {
955
+ d->unknown = start;
768
956
  d->unknown_msg = msg;
769
957
  ptr = decode_group(d, ptr, NULL, NULL, field_number);
958
+ start = d->unknown;
770
959
  d->unknown_msg = NULL;
771
- *field_start = d->unknown;
960
+ d->unknown = NULL;
772
961
  }
773
- if (!_upb_msg_addunknown(msg, *field_start, ptr - *field_start,
774
- &d->arena)) {
775
- return decode_err(d);
962
+ if (!_upb_Message_AddUnknown(msg, start, ptr - start, &d->arena)) {
963
+ return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
776
964
  }
777
- } else if (wire_type == UPB_WIRE_TYPE_START_GROUP) {
965
+ } else if (wire_type == kUpb_WireType_StartGroup) {
778
966
  ptr = decode_group(d, ptr, NULL, NULL, field_number);
779
967
  }
780
968
  return ptr;
781
969
  }
782
970
 
783
971
  UPB_NOINLINE
784
- static const char *decode_msg(upb_decstate *d, const char *ptr, upb_msg *msg,
785
- const upb_msglayout *layout) {
972
+ static const char* decode_msg(upb_Decoder* d, const char* ptr, upb_Message* msg,
973
+ const upb_MiniTable* layout) {
786
974
  int last_field_index = 0;
787
- while (true) {
975
+
976
+ #if UPB_FASTTABLE
977
+ // The first time we want to skip fast dispatch, because we may have just been
978
+ // invoked by the fast parser to handle a case that it bailed on.
979
+ if (!decode_isdone(d, &ptr)) goto nofast;
980
+ #endif
981
+
982
+ while (!decode_isdone(d, &ptr)) {
788
983
  uint32_t tag;
789
- const upb_msglayout_field *field;
984
+ const upb_MiniTable_Field* field;
790
985
  int field_number;
791
986
  int wire_type;
792
- const char *field_start = ptr;
793
987
  wireval val;
794
988
  int op;
795
989
 
990
+ if (decode_tryfastdispatch(d, &ptr, msg, layout)) break;
991
+
992
+ #if UPB_FASTTABLE
993
+ nofast:
994
+ #endif
995
+
996
+ #ifndef NDEBUG
997
+ d->debug_tagstart = ptr;
998
+ #endif
999
+
796
1000
  UPB_ASSERT(ptr < d->limit_ptr);
797
1001
  ptr = decode_tag(d, ptr, &tag);
798
1002
  field_number = tag >> 3;
799
1003
  wire_type = tag & 7;
800
1004
 
801
- field = decode_findfield(d, layout, field_number, &last_field_index);
1005
+ #ifndef NDEBUG
1006
+ d->debug_valstart = ptr;
1007
+ #endif
802
1008
 
803
- if (wire_type == UPB_WIRE_TYPE_END_GROUP) {
1009
+ if (wire_type == kUpb_WireType_EndGroup) {
804
1010
  d->end_group = field_number;
805
1011
  return ptr;
806
1012
  }
807
1013
 
1014
+ field = decode_findfield(d, layout, field_number, &last_field_index);
808
1015
  ptr = decode_wireval(d, ptr, field, wire_type, &val, &op);
809
1016
 
810
1017
  if (op >= 0) {
@@ -812,62 +1019,61 @@ static const char *decode_msg(upb_decstate *d, const char *ptr, upb_msg *msg,
812
1019
  } else {
813
1020
  switch (op) {
814
1021
  case OP_UNKNOWN:
815
- ptr = decode_unknown(d, ptr, msg, field_number, wire_type, val,
816
- &field_start);
1022
+ ptr = decode_unknown(d, ptr, msg, field_number, wire_type, val);
817
1023
  break;
818
1024
  case OP_MSGSET_ITEM:
819
1025
  ptr = decode_msgset(d, ptr, msg, layout);
820
1026
  break;
821
1027
  case OP_MSGSET_TYPEID: {
822
- const upb_msglayout_ext *ext = _upb_extreg_get(
1028
+ const upb_MiniTable_Extension* ext = _upb_extreg_get(
823
1029
  d->extreg, layout->subs[0].submsg, val.uint64_val);
824
- if (ext) ((upb_msglayout *)layout)->fields = &ext->field;
1030
+ if (ext) ((upb_MiniTable*)layout)->fields = &ext->field;
825
1031
  break;
826
1032
  }
827
1033
  }
828
1034
  }
829
-
830
- if (decode_isdone(d, &ptr)) return ptr;
831
- if (decode_tryfastdispatch(d, &ptr, msg, layout)) return ptr;
832
1035
  }
1036
+
1037
+ return UPB_UNLIKELY(layout && layout->required_count)
1038
+ ? decode_checkrequired(d, ptr, msg, layout)
1039
+ : ptr;
833
1040
  }
834
1041
 
835
- const char *fastdecode_generic(struct upb_decstate *d, const char *ptr,
836
- upb_msg *msg, intptr_t table, uint64_t hasbits,
837
- uint64_t data) {
1042
+ const char* fastdecode_generic(struct upb_Decoder* d, const char* ptr,
1043
+ upb_Message* msg, intptr_t table,
1044
+ uint64_t hasbits, uint64_t data) {
838
1045
  (void)data;
839
1046
  *(uint32_t*)msg |= hasbits;
840
1047
  return decode_msg(d, ptr, msg, decode_totablep(table));
841
1048
  }
842
1049
 
843
- static bool decode_top(struct upb_decstate *d, const char *buf, void *msg,
844
- const upb_msglayout *l) {
1050
+ static upb_DecodeStatus decode_top(struct upb_Decoder* d, const char* buf,
1051
+ void* msg, const upb_MiniTable* l) {
845
1052
  if (!decode_tryfastdispatch(d, &buf, msg, l)) {
846
1053
  decode_msg(d, buf, msg, l);
847
1054
  }
848
- return d->end_group == DECODE_NOGROUP;
1055
+ if (d->end_group != DECODE_NOGROUP) return kUpb_DecodeStatus_Malformed;
1056
+ if (d->missing_required) return kUpb_DecodeStatus_MissingRequired;
1057
+ return kUpb_DecodeStatus_Ok;
849
1058
  }
850
1059
 
851
- bool _upb_decode(const char *buf, size_t size, void *msg,
852
- const upb_msglayout *l, const upb_extreg *extreg, int options,
853
- upb_arena *arena) {
854
- bool ok;
855
- upb_decstate state;
1060
+ upb_DecodeStatus upb_Decode(const char* buf, size_t size, void* msg,
1061
+ const upb_MiniTable* l,
1062
+ const upb_ExtensionRegistry* extreg, int options,
1063
+ upb_Arena* arena) {
1064
+ upb_Decoder state;
856
1065
  unsigned depth = (unsigned)options >> 16;
857
1066
 
858
- if (size == 0) {
859
- return true;
860
- } else if (size <= 16) {
1067
+ if (size <= 16) {
861
1068
  memset(&state.patch, 0, 32);
862
- memcpy(&state.patch, buf, size);
1069
+ if (size) memcpy(&state.patch, buf, size);
863
1070
  buf = state.patch;
864
1071
  state.end = buf + size;
865
1072
  state.limit = 0;
866
- state.alias = false;
1073
+ options &= ~kUpb_DecodeOption_AliasString; // Can't alias patch buf.
867
1074
  } else {
868
1075
  state.end = buf + size - 16;
869
1076
  state.limit = 16;
870
- state.alias = options & UPB_DECODE_ALIAS;
871
1077
  }
872
1078
 
873
1079
  state.extreg = extreg;
@@ -875,21 +1081,22 @@ bool _upb_decode(const char *buf, size_t size, void *msg,
875
1081
  state.unknown_msg = NULL;
876
1082
  state.depth = depth ? depth : 64;
877
1083
  state.end_group = DECODE_NOGROUP;
1084
+ state.options = (uint16_t)options;
1085
+ state.missing_required = false;
878
1086
  state.arena.head = arena->head;
879
1087
  state.arena.last_size = arena->last_size;
880
1088
  state.arena.cleanup_metadata = arena->cleanup_metadata;
881
1089
  state.arena.parent = arena;
882
1090
 
883
- if (UPB_UNLIKELY(UPB_SETJMP(state.err))) {
884
- ok = false;
885
- } else {
886
- ok = decode_top(&state, buf, msg, l);
1091
+ upb_DecodeStatus status = UPB_SETJMP(state.err);
1092
+ if (UPB_LIKELY(status == kUpb_DecodeStatus_Ok)) {
1093
+ status = decode_top(&state, buf, msg, l);
887
1094
  }
888
1095
 
889
1096
  arena->head.ptr = state.arena.head.ptr;
890
1097
  arena->head.end = state.arena.head.end;
891
1098
  arena->cleanup_metadata = state.arena.cleanup_metadata;
892
- return ok;
1099
+ return status;
893
1100
  }
894
1101
 
895
1102
  #undef OP_UNKNOWN