grpc 1.32.0 → 1.52.0

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

Potentially problematic release.


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

Files changed (2668) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1741 -3302
  3. data/etc/roots.pem +592 -899
  4. data/include/grpc/byte_buffer.h +76 -1
  5. data/include/grpc/byte_buffer_reader.h +19 -1
  6. data/include/grpc/compression.h +3 -3
  7. data/include/grpc/event_engine/README.md +38 -0
  8. data/include/grpc/event_engine/endpoint_config.h +49 -0
  9. data/include/grpc/event_engine/event_engine.h +467 -0
  10. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  11. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  12. data/include/grpc/event_engine/memory_allocator.h +211 -0
  13. data/include/grpc/event_engine/memory_request.h +57 -0
  14. data/include/grpc/event_engine/port.h +39 -0
  15. data/include/grpc/event_engine/slice.h +306 -0
  16. data/include/grpc/event_engine/slice_buffer.h +147 -0
  17. data/include/grpc/fork.h +25 -1
  18. data/include/grpc/grpc.h +93 -38
  19. data/include/grpc/grpc_posix.h +22 -18
  20. data/include/grpc/grpc_security.h +536 -302
  21. data/include/grpc/grpc_security_constants.h +17 -14
  22. data/include/grpc/impl/codegen/atm.h +4 -70
  23. data/include/grpc/impl/codegen/atm_gcc_atomic.h +4 -66
  24. data/include/grpc/impl/codegen/atm_gcc_sync.h +4 -60
  25. data/include/grpc/impl/codegen/atm_windows.h +4 -103
  26. data/include/grpc/impl/codegen/byte_buffer.h +4 -76
  27. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -17
  28. data/include/grpc/impl/codegen/compression_types.h +5 -83
  29. data/include/grpc/impl/codegen/connectivity_state.h +5 -19
  30. data/include/grpc/impl/codegen/fork.h +4 -23
  31. data/include/grpc/impl/codegen/gpr_types.h +5 -34
  32. data/include/grpc/impl/codegen/grpc_types.h +5 -762
  33. data/include/grpc/impl/codegen/log.h +4 -87
  34. data/include/grpc/impl/codegen/port_platform.h +3 -669
  35. data/include/grpc/impl/codegen/propagation_bits.h +4 -27
  36. data/include/grpc/impl/codegen/slice.h +4 -102
  37. data/include/grpc/impl/codegen/status.h +4 -129
  38. data/include/grpc/impl/codegen/sync.h +4 -40
  39. data/include/grpc/impl/codegen/sync_abseil.h +4 -11
  40. data/include/grpc/impl/codegen/sync_custom.h +4 -13
  41. data/include/grpc/impl/codegen/sync_generic.h +4 -23
  42. data/include/grpc/impl/codegen/sync_posix.h +4 -27
  43. data/include/grpc/impl/codegen/sync_windows.h +4 -11
  44. data/include/grpc/impl/compression_types.h +109 -0
  45. data/include/grpc/impl/connectivity_state.h +47 -0
  46. data/include/grpc/impl/grpc_types.h +824 -0
  47. data/include/grpc/impl/propagation_bits.h +54 -0
  48. data/include/grpc/impl/slice_type.h +112 -0
  49. data/include/grpc/load_reporting.h +1 -1
  50. data/include/grpc/module.modulemap +19 -15
  51. data/include/grpc/slice.h +1 -12
  52. data/include/grpc/slice_buffer.h +3 -3
  53. data/include/grpc/status.h +131 -1
  54. data/include/grpc/support/atm.h +70 -1
  55. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  56. data/include/grpc/support/atm_gcc_sync.h +58 -1
  57. data/include/grpc/support/atm_windows.h +105 -1
  58. data/include/grpc/support/log.h +87 -1
  59. data/include/grpc/support/log_windows.h +1 -1
  60. data/include/grpc/support/port_platform.h +767 -1
  61. data/include/grpc/support/string_util.h +1 -1
  62. data/include/grpc/support/sync.h +38 -5
  63. data/include/grpc/support/sync_abseil.h +11 -1
  64. data/include/grpc/support/sync_custom.h +13 -1
  65. data/include/grpc/support/sync_generic.h +24 -1
  66. data/include/grpc/support/sync_posix.h +27 -1
  67. data/include/grpc/support/sync_windows.h +15 -1
  68. data/include/grpc/support/time.h +32 -9
  69. data/src/core/ext/filters/census/grpc_context.cc +20 -17
  70. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +315 -0
  71. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +142 -0
  72. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  73. data/src/core/ext/filters/channel_idle/idle_filter_state.h +68 -0
  74. data/src/core/ext/filters/client_channel/backend_metric.cc +36 -34
  75. data/src/core/ext/filters/client_channel/backend_metric.h +19 -8
  76. data/src/core/ext/filters/client_channel/backup_poller.cc +49 -44
  77. data/src/core/ext/filters/client_channel/backup_poller.h +23 -24
  78. data/src/core/ext/filters/client_channel/channel_connectivity.cc +205 -204
  79. data/src/core/ext/filters/client_channel/client_channel.cc +2262 -3309
  80. data/src/core/ext/filters/client_channel/client_channel.h +605 -60
  81. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +21 -24
  82. data/src/core/ext/filters/client_channel/client_channel_channelz.h +32 -22
  83. data/src/core/ext/filters/client_channel/client_channel_factory.cc +19 -42
  84. data/src/core/ext/filters/client_channel/client_channel_factory.h +25 -26
  85. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +33 -61
  86. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  87. data/src/core/ext/filters/client_channel/client_channel_service_config.h +111 -0
  88. data/src/core/ext/filters/client_channel/config_selector.cc +2 -4
  89. data/src/core/ext/filters/client_channel/config_selector.h +81 -23
  90. data/src/core/ext/filters/client_channel/connector.h +32 -27
  91. data/src/core/ext/filters/client_channel/dynamic_filters.cc +175 -0
  92. data/src/core/ext/filters/client_channel/dynamic_filters.h +108 -0
  93. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -163
  94. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +37 -42
  95. data/src/core/ext/filters/client_channel/health/health_check_client.cc +140 -578
  96. data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -158
  97. data/src/core/ext/filters/client_channel/http_proxy.cc +152 -170
  98. data/src/core/ext/filters/client_channel/http_proxy.h +43 -19
  99. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  100. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +56 -39
  101. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +13 -9
  102. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  103. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +45 -19
  104. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +16 -11
  105. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +64 -143
  106. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +38 -21
  107. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +732 -590
  108. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +27 -31
  109. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +16 -4
  110. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +8 -6
  111. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +19 -20
  112. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +29 -23
  113. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +47 -39
  114. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +28 -27
  115. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +415 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  117. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1129 -0
  118. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +94 -0
  119. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +249 -230
  120. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +520 -484
  121. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +890 -0
  122. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +47 -0
  123. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2526 -0
  124. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +285 -259
  125. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +181 -174
  126. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +297 -262
  127. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +558 -213
  128. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  129. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +64 -0
  130. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  131. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +794 -0
  132. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +699 -0
  133. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1224 -0
  134. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
  135. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
  136. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  137. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +31 -67
  138. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +29 -27
  139. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +148 -0
  140. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +691 -361
  141. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +64 -78
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +57 -51
  143. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +130 -146
  144. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +715 -314
  145. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +102 -63
  146. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  147. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +22 -21
  148. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  149. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +20 -20
  150. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +129 -250
  151. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +75 -90
  152. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +26 -9
  153. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +471 -0
  154. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +269 -0
  155. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +121 -0
  156. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +87 -85
  157. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +1004 -407
  158. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +30 -0
  159. data/src/core/ext/filters/client_channel/retry_filter.cc +2661 -0
  160. data/src/core/ext/filters/client_channel/retry_filter.h +31 -0
  161. data/src/core/ext/filters/client_channel/retry_service_config.cc +282 -0
  162. data/src/core/ext/filters/client_channel/retry_service_config.h +105 -0
  163. data/src/core/ext/filters/client_channel/retry_throttle.cc +42 -94
  164. data/src/core/ext/filters/client_channel/retry_throttle.h +47 -32
  165. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +78 -46
  166. data/src/core/ext/filters/client_channel/subchannel.cc +443 -653
  167. data/src/core/ext/filters/client_channel/subchannel.h +191 -218
  168. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  169. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +28 -59
  170. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +57 -48
  171. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +470 -0
  172. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
  173. data/src/core/ext/filters/deadline/deadline_filter.cc +165 -133
  174. data/src/core/ext/filters/deadline/deadline_filter.h +18 -15
  175. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +280 -0
  176. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +71 -0
  177. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  178. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +112 -0
  179. data/src/core/ext/filters/http/client/http_client_filter.cc +126 -564
  180. data/src/core/ext/filters/http/client/http_client_filter.h +52 -22
  181. data/src/core/ext/filters/http/client_authority_filter.cc +70 -139
  182. data/src/core/ext/filters/http/client_authority_filter.h +46 -24
  183. data/src/core/ext/filters/http/http_filters_plugin.cc +65 -89
  184. data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
  185. data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
  186. data/src/core/ext/filters/http/server/http_server_filter.cc +121 -488
  187. data/src/core/ext/filters/http/server/http_server_filter.h +55 -21
  188. data/src/core/ext/filters/message_size/message_size_filter.cc +162 -188
  189. data/src/core/ext/filters/message_size/message_size_filter.h +42 -17
  190. data/src/core/ext/filters/rbac/rbac_filter.cc +174 -0
  191. data/src/core/ext/filters/rbac/rbac_filter.h +84 -0
  192. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +819 -0
  193. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +86 -0
  194. data/src/core/ext/filters/server_config_selector/server_config_selector.h +83 -0
  195. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +159 -0
  196. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +33 -0
  197. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
  198. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  199. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  200. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  201. data/src/core/ext/transport/chttp2/alpn/alpn.cc +20 -19
  202. data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
  203. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +326 -144
  204. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +42 -34
  205. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +892 -280
  206. data/src/core/ext/transport/chttp2/server/chttp2_server.h +30 -21
  207. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +35 -33
  208. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +33 -31
  209. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +32 -30
  210. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
  211. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +1021 -1350
  212. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +49 -25
  213. data/src/core/ext/transport/chttp2/transport/context_list.cc +27 -25
  214. data/src/core/ext/transport/chttp2/transport/context_list.h +32 -31
  215. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
  216. data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
  217. data/src/core/ext/transport/chttp2/transport/flow_control.cc +361 -285
  218. data/src/core/ext/transport/chttp2/transport/flow_control.h +259 -320
  219. data/src/core/ext/transport/chttp2/transport/frame.h +19 -23
  220. data/src/core/ext/transport/chttp2/transport/frame_data.cc +91 -239
  221. data/src/core/ext/transport/chttp2/transport/frame_data.h +41 -63
  222. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +61 -56
  223. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +28 -25
  224. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +44 -39
  225. data/src/core/ext/transport/chttp2/transport/frame_ping.h +30 -25
  226. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +48 -39
  227. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +28 -24
  228. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +60 -60
  229. data/src/core/ext/transport/chttp2/transport/frame_settings.h +33 -27
  230. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +46 -44
  231. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +26 -24
  232. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +47 -0
  233. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +520 -800
  234. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +204 -94
  235. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +89 -0
  236. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +80 -0
  237. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +859 -1276
  238. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +129 -104
  239. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +246 -0
  240. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +137 -0
  241. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  242. data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -35
  243. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  244. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  245. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  246. data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
  247. data/src/core/ext/transport/chttp2/transport/internal.h +270 -341
  248. data/src/core/ext/transport/chttp2/transport/parsing.cc +416 -384
  249. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +32 -32
  250. data/src/core/ext/transport/chttp2/transport/stream_map.cc +24 -24
  251. data/src/core/ext/transport/chttp2/transport/stream_map.h +32 -31
  252. data/src/core/ext/transport/chttp2/transport/varint.cc +29 -24
  253. data/src/core/ext/transport/chttp2/transport/varint.h +70 -54
  254. data/src/core/ext/transport/chttp2/transport/writing.cc +235 -250
  255. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -22
  256. data/src/core/ext/transport/inproc/inproc_transport.cc +371 -413
  257. data/src/core/ext/transport/inproc/inproc_transport.h +22 -23
  258. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  259. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +502 -0
  260. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  261. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +569 -0
  262. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +125 -0
  263. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +516 -0
  264. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  265. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  266. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  267. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +159 -0
  268. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +64 -0
  269. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +189 -0
  270. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  271. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +128 -0
  272. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  273. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +106 -0
  274. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  275. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +101 -0
  276. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  277. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +613 -0
  278. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  279. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +107 -0
  280. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  281. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +53 -1
  282. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  283. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +63 -13
  284. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +154 -108
  285. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +891 -291
  286. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +413 -0
  287. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2251 -0
  288. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +50 -29
  289. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +250 -82
  290. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +374 -210
  291. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2308 -620
  292. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
  293. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +58 -20
  294. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +61 -27
  295. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +317 -91
  296. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  297. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1437 -0
  298. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +81 -48
  299. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +470 -140
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -8
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +63 -22
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +255 -143
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1431 -409
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +110 -43
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +611 -133
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
  307. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +52 -19
  308. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +47 -0
  309. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +107 -0
  310. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  311. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +159 -0
  312. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +169 -95
  313. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +986 -291
  314. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +142 -92
  315. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +866 -295
  316. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
  317. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +72 -26
  318. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +245 -74
  319. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1438 -215
  320. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -6
  321. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +42 -12
  322. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  323. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +177 -0
  324. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
  325. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +89 -29
  326. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +56 -0
  327. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +182 -0
  328. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  329. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +122 -0
  330. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -37
  331. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +234 -94
  332. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +92 -39
  333. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +486 -112
  334. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
  335. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +419 -163
  336. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
  337. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +50 -17
  338. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +138 -57
  339. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +812 -172
  340. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +115 -67
  341. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +704 -225
  342. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
  343. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +238 -0
  344. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +30 -12
  345. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +131 -39
  346. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  347. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +140 -0
  348. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
  349. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +748 -0
  350. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
  351. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +757 -0
  352. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +145 -98
  353. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +736 -241
  354. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +48 -25
  355. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +304 -106
  356. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +781 -458
  357. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4982 -1397
  358. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -19
  359. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +189 -57
  360. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +241 -0
  361. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1191 -0
  362. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  363. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +92 -0
  364. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  365. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +107 -0
  366. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -15
  367. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +104 -37
  368. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  369. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +138 -0
  370. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  371. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +254 -0
  372. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  373. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  374. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  375. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +98 -0
  376. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  377. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +221 -0
  378. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +33 -0
  379. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +43 -0
  380. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  381. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +226 -0
  382. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  383. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +150 -0
  384. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
  385. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +89 -0
  386. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
  387. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +395 -0
  388. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
  389. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +445 -0
  390. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +71 -0
  391. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +237 -0
  392. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
  393. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +172 -0
  394. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  395. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  396. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +331 -172
  397. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2090 -484
  398. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  399. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  400. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  401. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -0
  402. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  403. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  404. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -2
  405. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +8 -4
  406. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +116 -50
  407. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +718 -187
  408. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +43 -27
  409. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +196 -74
  410. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +137 -51
  411. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +833 -158
  412. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  413. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +168 -0
  414. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
  415. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +35 -10
  416. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +214 -63
  417. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1189 -200
  418. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -19
  419. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +138 -56
  420. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
  421. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +651 -0
  422. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  423. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +116 -0
  424. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  425. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +265 -0
  426. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  427. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +230 -0
  428. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +29 -14
  429. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +127 -45
  430. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
  431. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +121 -0
  432. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
  433. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +62 -22
  434. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
  435. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +52 -19
  436. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +37 -21
  437. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +156 -55
  438. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -18
  439. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +150 -51
  440. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
  441. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +178 -0
  442. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
  443. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +186 -68
  444. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
  445. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +309 -110
  446. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
  447. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +295 -106
  448. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  449. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +213 -0
  450. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +10 -1
  451. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +5 -1
  452. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  453. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +143 -0
  454. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +24 -10
  455. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +87 -26
  456. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
  457. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +134 -37
  458. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  459. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  460. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  461. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  462. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -7
  463. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +54 -14
  464. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  465. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +131 -0
  466. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  467. data/src/core/ext/upb-generated/google/api/annotations.upb.h +25 -1
  468. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +271 -0
  469. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +1280 -0
  470. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +167 -118
  471. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +965 -338
  472. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  473. data/src/core/ext/upb-generated/google/api/http.upb.h +252 -100
  474. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  475. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +115 -0
  476. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  477. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +52 -17
  478. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +375 -283
  479. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2467 -972
  480. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  481. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +50 -15
  482. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  483. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +35 -10
  484. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  485. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +213 -78
  486. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  487. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +50 -15
  488. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  489. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +356 -118
  490. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  491. data/src/core/ext/upb-generated/google/rpc/status.upb.h +66 -25
  492. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  493. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +335 -0
  494. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  495. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +119 -44
  496. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
  497. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +817 -316
  498. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
  499. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +105 -33
  500. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  501. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +81 -25
  502. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  503. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +495 -186
  504. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  505. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +216 -0
  506. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  507. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +792 -0
  508. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  509. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +229 -42
  510. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +55 -0
  511. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +112 -0
  512. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  513. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +18 -1
  514. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  515. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +70 -15
  516. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
  517. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +63 -13
  518. data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
  519. data/src/core/ext/upb-generated/validate/validate.upb.h +3054 -1023
  520. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  521. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +290 -0
  522. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  523. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +112 -0
  524. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  525. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  526. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  527. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +306 -0
  528. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  529. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +103 -0
  530. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
  531. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +83 -0
  532. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  533. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  534. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
  535. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +208 -0
  536. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
  537. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +119 -0
  538. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  539. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +107 -0
  540. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
  541. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +131 -0
  542. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
  543. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +248 -0
  544. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
  545. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +125 -0
  546. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +74 -0
  547. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +200 -0
  548. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +46 -0
  549. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +113 -0
  550. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  551. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  552. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  553. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  554. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  555. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  556. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  557. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  558. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  559. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +914 -0
  560. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  561. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  562. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  563. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +151 -0
  564. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  565. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +226 -0
  566. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  567. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  568. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  569. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  570. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +45 -0
  571. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +107 -0
  572. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  573. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  574. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  575. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  576. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +102 -0
  577. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +55 -0
  578. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  579. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  580. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  581. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  582. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +56 -0
  583. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  584. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  585. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  586. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  587. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  588. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  589. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  590. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  591. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  592. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  593. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  594. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +48 -0
  595. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  596. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +38 -0
  597. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +222 -0
  599. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  600. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +397 -0
  601. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  602. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +98 -0
  603. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +559 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +155 -0
  606. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +51 -0
  607. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +138 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +112 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  614. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +54 -0
  615. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  616. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +270 -0
  617. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +150 -0
  618. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +168 -0
  619. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +65 -0
  620. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +53 -0
  621. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +47 -0
  623. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +35 -0
  624. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  625. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  626. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +235 -0
  627. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  628. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +228 -0
  629. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +75 -0
  630. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +53 -0
  631. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  632. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +300 -0
  633. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +110 -0
  634. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +41 -0
  635. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  636. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  637. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  638. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +57 -0
  639. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  640. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +70 -0
  641. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  642. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  643. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  644. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +99 -0
  645. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  646. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +128 -0
  647. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +60 -0
  648. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +136 -0
  649. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  650. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +48 -0
  651. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  652. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +220 -0
  653. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +65 -0
  654. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +190 -0
  655. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  656. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  657. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  658. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +71 -0
  659. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  660. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  661. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  662. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -0
  663. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  664. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
  665. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  666. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +194 -0
  667. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +75 -0
  668. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +112 -0
  669. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  670. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +939 -0
  671. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +305 -0
  672. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +77 -0
  673. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  674. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +199 -0
  675. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +90 -0
  676. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  677. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  678. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  679. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  680. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +57 -0
  681. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  682. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  683. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  684. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  685. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  686. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  687. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  688. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  689. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  690. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  691. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  692. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +61 -0
  693. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  694. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  695. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  696. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  697. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  698. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -0
  699. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  700. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
  701. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  702. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
  703. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  704. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +80 -0
  705. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  706. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -0
  707. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  708. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  709. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  710. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +562 -0
  711. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +130 -0
  712. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  713. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  714. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  715. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  716. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +213 -0
  717. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +65 -0
  718. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +91 -0
  719. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  720. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +254 -0
  721. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +65 -0
  722. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  723. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  724. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +58 -0
  725. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  726. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +197 -0
  727. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +100 -0
  728. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +76 -0
  729. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  730. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +153 -0
  731. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  732. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  733. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  734. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  735. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  736. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  737. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  738. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +61 -0
  739. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  740. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +54 -0
  741. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  742. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +52 -0
  743. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  744. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +51 -0
  745. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  746. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +71 -0
  747. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  748. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +65 -0
  749. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  750. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +58 -0
  751. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  752. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +75 -0
  753. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  754. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +78 -0
  755. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  756. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +85 -0
  757. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  758. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  759. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  760. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +36 -0
  761. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  762. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  763. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  764. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +54 -0
  765. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  766. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +48 -0
  767. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  768. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  769. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  770. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  771. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  772. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +44 -0
  773. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  774. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  775. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  776. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  777. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  778. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  779. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  780. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  781. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  782. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +52 -0
  783. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  784. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  785. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  786. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +34 -0
  787. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  788. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +331 -0
  789. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  790. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +35 -0
  791. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  792. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +32 -0
  793. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  794. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +54 -0
  795. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  796. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +35 -0
  797. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  798. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +45 -0
  799. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  800. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +37 -0
  801. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  802. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  803. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  804. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  805. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  806. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +62 -0
  807. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  808. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +47 -0
  809. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  810. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +34 -0
  811. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  812. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +46 -0
  813. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  814. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +39 -0
  815. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  816. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +283 -0
  817. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  818. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  819. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  820. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  821. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  822. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  823. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  824. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  825. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  826. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  827. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  828. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -0
  829. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  830. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  831. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  832. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
  833. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  834. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
  835. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  836. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  837. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  838. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -0
  839. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  840. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
  841. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  842. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
  843. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  844. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  845. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  846. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  847. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  848. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  849. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  850. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  851. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  852. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  853. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  854. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  855. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  856. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  857. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  858. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  859. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  860. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  861. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  862. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  863. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  864. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +37 -0
  865. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  866. data/src/core/ext/xds/certificate_provider_store.cc +159 -0
  867. data/src/core/ext/xds/certificate_provider_store.h +138 -0
  868. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +150 -0
  869. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +77 -0
  870. data/src/core/ext/xds/upb_utils.h +45 -0
  871. data/src/core/ext/xds/xds_api.cc +314 -2078
  872. data/src/core/ext/xds/xds_api.h +141 -308
  873. data/src/core/ext/xds/xds_bootstrap.cc +10 -345
  874. data/src/core/ext/xds/xds_bootstrap.h +43 -48
  875. data/src/core/ext/xds/xds_bootstrap_grpc.cc +361 -0
  876. data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
  877. data/src/core/ext/xds/xds_certificate_provider.cc +416 -0
  878. data/src/core/ext/xds/xds_certificate_provider.h +183 -0
  879. data/src/core/ext/xds/xds_channel_args.h +11 -5
  880. data/src/core/ext/xds/xds_channel_stack_modifier.cc +119 -0
  881. data/src/core/ext/xds/xds_channel_stack_modifier.h +65 -0
  882. data/src/core/ext/xds/xds_client.cc +1442 -1516
  883. data/src/core/ext/xds/xds_client.h +212 -144
  884. data/src/core/ext/xds/xds_client_grpc.cc +236 -0
  885. data/src/core/ext/xds/xds_client_grpc.h +79 -0
  886. data/src/core/ext/xds/xds_client_stats.cc +103 -59
  887. data/src/core/ext/xds/xds_client_stats.h +71 -40
  888. data/src/core/ext/xds/xds_cluster.cc +707 -0
  889. data/src/core/ext/xds/xds_cluster.h +137 -0
  890. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +132 -0
  891. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +97 -0
  892. data/src/core/ext/xds/xds_common_types.cc +502 -0
  893. data/src/core/ext/xds/xds_common_types.h +108 -0
  894. data/src/core/ext/xds/xds_endpoint.cc +474 -0
  895. data/src/core/ext/xds/xds_endpoint.h +139 -0
  896. data/src/core/ext/xds/xds_health_status.cc +80 -0
  897. data/src/core/ext/xds/xds_health_status.h +82 -0
  898. data/src/core/ext/xds/xds_http_fault_filter.cc +236 -0
  899. data/src/core/ext/xds/xds_http_fault_filter.h +58 -0
  900. data/src/core/ext/xds/xds_http_filters.cc +121 -0
  901. data/src/core/ext/xds/xds_http_filters.h +181 -0
  902. data/src/core/ext/xds/xds_http_rbac_filter.cc +506 -0
  903. data/src/core/ext/xds/xds_http_rbac_filter.h +58 -0
  904. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  905. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  906. data/src/core/ext/xds/xds_lb_policy_registry.cc +239 -0
  907. data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
  908. data/src/core/ext/xds/xds_listener.cc +1130 -0
  909. data/src/core/ext/xds/xds_listener.h +226 -0
  910. data/src/core/ext/xds/xds_resource_type.h +104 -0
  911. data/src/core/ext/xds/xds_resource_type_impl.h +88 -0
  912. data/src/core/ext/xds/xds_route_config.cc +1138 -0
  913. data/src/core/ext/xds/xds_route_config.h +252 -0
  914. data/src/core/ext/xds/xds_routing.cc +264 -0
  915. data/src/core/ext/xds/xds_routing.h +106 -0
  916. data/src/core/ext/xds/xds_server_config_fetcher.cc +1363 -0
  917. data/src/core/ext/xds/xds_transport.h +86 -0
  918. data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
  919. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  920. data/src/core/lib/address_utils/parse_address.cc +340 -0
  921. data/src/core/lib/address_utils/parse_address.h +86 -0
  922. data/src/core/lib/address_utils/sockaddr_utils.cc +444 -0
  923. data/src/core/lib/address_utils/sockaddr_utils.h +100 -0
  924. data/src/core/lib/avl/avl.h +476 -88
  925. data/src/core/lib/backoff/backoff.cc +26 -57
  926. data/src/core/lib/backoff/backoff.h +30 -30
  927. data/src/core/lib/channel/call_finalization.h +88 -0
  928. data/src/core/lib/channel/call_tracer.h +103 -0
  929. data/src/core/lib/channel/channel_args.cc +309 -64
  930. data/src/core/lib/channel/channel_args.h +454 -44
  931. data/src/core/lib/channel/channel_args_preconditioning.cc +43 -0
  932. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  933. data/src/core/lib/channel/channel_fwd.h +26 -0
  934. data/src/core/lib/channel/channel_stack.cc +125 -62
  935. data/src/core/lib/channel/channel_stack.h +226 -136
  936. data/src/core/lib/channel/channel_stack_builder.cc +35 -307
  937. data/src/core/lib/channel/channel_stack_builder.h +112 -158
  938. data/src/core/lib/channel/channel_stack_builder_impl.cc +113 -0
  939. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  940. data/src/core/lib/channel/channel_trace.cc +36 -43
  941. data/src/core/lib/channel/channel_trace.h +27 -23
  942. data/src/core/lib/channel/channelz.cc +201 -151
  943. data/src/core/lib/channel/channelz.h +121 -81
  944. data/src/core/lib/channel/channelz_registry.cc +59 -51
  945. data/src/core/lib/channel/channelz_registry.h +31 -28
  946. data/src/core/lib/channel/connected_channel.cc +745 -81
  947. data/src/core/lib/channel/connected_channel.h +21 -23
  948. data/src/core/lib/channel/context.h +32 -18
  949. data/src/core/lib/channel/promise_based_filter.cc +2249 -0
  950. data/src/core/lib/channel/promise_based_filter.h +857 -0
  951. data/src/core/lib/channel/status_util.cc +76 -19
  952. data/src/core/lib/channel/status_util.h +45 -22
  953. data/src/core/lib/compression/compression.cc +46 -129
  954. data/src/core/lib/compression/compression_internal.cc +191 -229
  955. data/src/core/lib/compression/compression_internal.h +87 -90
  956. data/src/core/lib/compression/message_compress.cc +41 -39
  957. data/src/core/lib/compression/message_compress.h +28 -29
  958. data/src/core/lib/config/core_configuration.cc +111 -0
  959. data/src/core/lib/config/core_configuration.h +243 -0
  960. data/src/core/lib/debug/event_log.cc +88 -0
  961. data/src/core/lib/debug/event_log.h +81 -0
  962. data/src/core/lib/debug/histogram_view.cc +69 -0
  963. data/src/core/lib/debug/histogram_view.h +37 -0
  964. data/src/core/lib/debug/stats.cc +48 -152
  965. data/src/core/lib/debug/stats.h +49 -55
  966. data/src/core/lib/debug/stats_data.cc +291 -637
  967. data/src/core/lib/debug/stats_data.h +264 -527
  968. data/src/core/lib/debug/trace.cc +19 -20
  969. data/src/core/lib/debug/trace.h +34 -32
  970. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +40 -0
  971. data/src/core/lib/event_engine/channel_args_endpoint_config.h +49 -0
  972. data/src/core/lib/event_engine/common_closures.h +71 -0
  973. data/src/core/lib/event_engine/default_event_engine.cc +94 -0
  974. data/src/core/lib/event_engine/default_event_engine.h +49 -0
  975. data/src/core/lib/event_engine/default_event_engine_factory.cc +48 -0
  976. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  977. data/src/core/lib/event_engine/executor/executor.h +38 -0
  978. data/src/core/lib/event_engine/forkable.cc +101 -0
  979. data/src/core/lib/event_engine/forkable.h +61 -0
  980. data/src/core/lib/event_engine/handle_containers.h +67 -0
  981. data/src/core/lib/event_engine/memory_allocator.cc +74 -0
  982. data/src/core/lib/event_engine/poller.h +62 -0
  983. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +614 -0
  984. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  985. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +900 -0
  986. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  987. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  988. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  989. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
  990. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  991. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  992. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  993. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  994. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1308 -0
  995. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +684 -0
  996. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +570 -0
  997. data/src/core/lib/event_engine/posix_engine/posix_engine.h +245 -0
  998. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  999. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
  1000. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
  1001. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
  1002. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  1003. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  1004. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  1005. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  1006. data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
  1007. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  1008. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  1009. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
  1010. data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
  1011. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  1012. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  1013. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  1014. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  1015. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  1016. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  1017. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  1018. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  1019. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  1020. data/src/core/lib/event_engine/resolved_address.cc +41 -0
  1021. data/src/core/lib/event_engine/slice.cc +103 -0
  1022. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  1023. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  1024. data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
  1025. data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
  1026. data/src/core/lib/event_engine/thread_pool.cc +277 -0
  1027. data/src/core/lib/event_engine/thread_pool.h +137 -0
  1028. data/src/core/lib/event_engine/time_util.cc +30 -0
  1029. data/src/core/lib/event_engine/time_util.h +32 -0
  1030. data/src/core/lib/event_engine/trace.cc +18 -0
  1031. data/src/core/lib/event_engine/trace.h +30 -0
  1032. data/src/core/lib/event_engine/utils.cc +44 -0
  1033. data/src/core/lib/event_engine/utils.h +36 -0
  1034. data/src/core/lib/event_engine/windows/iocp.cc +156 -0
  1035. data/src/core/lib/event_engine/windows/iocp.h +69 -0
  1036. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  1037. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  1038. data/src/core/lib/event_engine/windows/windows_engine.cc +165 -0
  1039. data/src/core/lib/event_engine/windows/windows_engine.h +124 -0
  1040. data/src/core/lib/experiments/config.cc +146 -0
  1041. data/src/core/lib/experiments/config.h +43 -0
  1042. data/src/core/lib/experiments/experiments.cc +75 -0
  1043. data/src/core/lib/experiments/experiments.h +58 -0
  1044. data/src/core/lib/gpr/alloc.cc +26 -30
  1045. data/src/core/lib/gpr/alloc.h +18 -18
  1046. data/src/core/lib/gpr/atm.cc +18 -18
  1047. data/src/core/lib/gpr/cpu_iphone.cc +34 -26
  1048. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  1049. data/src/core/lib/gpr/cpu_posix.cc +24 -23
  1050. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  1051. data/src/core/lib/gpr/log.cc +91 -36
  1052. data/src/core/lib/gpr/log_android.cc +25 -22
  1053. data/src/core/lib/gpr/log_linux.cc +46 -27
  1054. data/src/core/lib/gpr/log_posix.cc +41 -23
  1055. data/src/core/lib/gpr/log_windows.cc +43 -29
  1056. data/src/core/lib/gpr/spinlock.h +28 -20
  1057. data/src/core/lib/gpr/string.cc +48 -46
  1058. data/src/core/lib/gpr/string.h +62 -63
  1059. data/src/core/lib/gpr/string_posix.cc +24 -24
  1060. data/src/core/lib/gpr/string_util_windows.cc +25 -52
  1061. data/src/core/lib/gpr/string_windows.cc +24 -24
  1062. data/src/core/lib/gpr/sync.cc +31 -31
  1063. data/src/core/lib/gpr/sync_abseil.cc +29 -43
  1064. data/src/core/lib/gpr/sync_posix.cc +26 -37
  1065. data/src/core/lib/gpr/sync_windows.cc +31 -29
  1066. data/src/core/lib/gpr/time.cc +51 -45
  1067. data/src/core/lib/gpr/time_posix.cc +41 -45
  1068. data/src/core/lib/gpr/time_precise.cc +26 -23
  1069. data/src/core/lib/gpr/time_precise.h +25 -22
  1070. data/src/core/lib/gpr/time_windows.cc +38 -31
  1071. data/src/core/lib/gpr/tmpfile.h +22 -22
  1072. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  1073. data/src/core/lib/gpr/tmpfile_posix.cc +23 -22
  1074. data/src/core/lib/gpr/tmpfile_windows.cc +28 -29
  1075. data/src/core/lib/gpr/useful.h +169 -50
  1076. data/src/core/lib/gpr/wrap_memcpy.cc +25 -24
  1077. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  1078. data/src/core/lib/gprpp/bitset.h +225 -0
  1079. data/src/core/lib/gprpp/chunked_vector.h +257 -0
  1080. data/src/core/lib/gprpp/construct_destruct.h +40 -0
  1081. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  1082. data/src/core/lib/gprpp/crash.cc +33 -0
  1083. data/src/core/lib/gprpp/crash.h +34 -0
  1084. data/src/core/lib/gprpp/debug_location.h +59 -25
  1085. data/src/core/lib/gprpp/dual_ref_counted.h +327 -0
  1086. data/src/core/lib/gprpp/env.h +53 -0
  1087. data/src/core/lib/gprpp/env_linux.cc +80 -0
  1088. data/src/core/lib/gprpp/env_posix.cc +47 -0
  1089. data/src/core/lib/gprpp/env_windows.cc +56 -0
  1090. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  1091. data/src/core/lib/gprpp/examine_stack.h +45 -0
  1092. data/src/core/lib/gprpp/fork.cc +50 -60
  1093. data/src/core/lib/gprpp/fork.h +26 -34
  1094. data/src/core/lib/gprpp/global_config.h +20 -23
  1095. data/src/core/lib/gprpp/global_config_custom.h +18 -18
  1096. data/src/core/lib/gprpp/global_config_env.cc +38 -36
  1097. data/src/core/lib/gprpp/global_config_env.h +28 -26
  1098. data/src/core/lib/gprpp/global_config_generic.h +18 -22
  1099. data/src/core/lib/gprpp/host_port.cc +28 -26
  1100. data/src/core/lib/gprpp/host_port.h +29 -28
  1101. data/src/core/lib/gprpp/load_file.cc +75 -0
  1102. data/src/core/lib/gprpp/load_file.h +33 -0
  1103. data/src/core/lib/gprpp/manual_constructor.h +25 -91
  1104. data/src/core/lib/gprpp/match.h +75 -0
  1105. data/src/core/lib/gprpp/memory.h +26 -24
  1106. data/src/core/lib/gprpp/mpscq.cc +26 -26
  1107. data/src/core/lib/gprpp/mpscq.h +24 -23
  1108. data/src/core/lib/gprpp/no_destruct.h +95 -0
  1109. data/src/core/lib/gprpp/notification.h +67 -0
  1110. data/src/core/lib/gprpp/orphanable.h +27 -34
  1111. data/src/core/lib/gprpp/overload.h +59 -0
  1112. data/src/core/lib/gprpp/packed_table.h +40 -0
  1113. data/src/core/lib/gprpp/per_cpu.h +46 -0
  1114. data/src/core/lib/gprpp/ref_counted.h +142 -105
  1115. data/src/core/lib/gprpp/ref_counted_ptr.h +187 -41
  1116. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  1117. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  1118. data/src/core/lib/gprpp/stat.h +36 -0
  1119. data/src/core/lib/gprpp/stat_posix.cc +55 -0
  1120. data/src/core/lib/gprpp/stat_windows.cc +50 -0
  1121. data/src/core/lib/gprpp/status_helper.cc +455 -0
  1122. data/src/core/lib/gprpp/status_helper.h +189 -0
  1123. data/src/core/lib/gprpp/strerror.cc +41 -0
  1124. data/src/core/lib/gprpp/strerror.h +29 -0
  1125. data/src/core/lib/gprpp/sync.h +129 -64
  1126. data/src/core/lib/gprpp/table.h +452 -0
  1127. data/src/core/lib/gprpp/tchar.cc +49 -0
  1128. data/src/core/lib/gprpp/tchar.h +33 -0
  1129. data/src/core/lib/gprpp/thd.h +24 -27
  1130. data/src/core/lib/gprpp/thd_posix.cc +76 -70
  1131. data/src/core/lib/gprpp/thd_windows.cc +32 -35
  1132. data/src/core/lib/gprpp/time.cc +240 -0
  1133. data/src/core/lib/gprpp/time.h +366 -0
  1134. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  1135. data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
  1136. data/src/core/lib/gprpp/time_util.cc +81 -0
  1137. data/src/core/lib/gprpp/time_util.h +42 -0
  1138. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  1139. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  1140. data/src/core/lib/gprpp/validation_errors.h +127 -0
  1141. data/src/core/lib/gprpp/work_serializer.cc +247 -0
  1142. data/src/core/lib/gprpp/work_serializer.h +86 -0
  1143. data/src/core/lib/handshaker/proxy_mapper.h +53 -0
  1144. data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
  1145. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  1146. data/src/core/lib/http/format_request.cc +81 -47
  1147. data/src/core/lib/http/format_request.h +29 -25
  1148. data/src/core/lib/http/httpcli.cc +321 -234
  1149. data/src/core/lib/http/httpcli.h +254 -109
  1150. data/src/core/lib/http/httpcli_security_connector.cc +104 -106
  1151. data/src/core/lib/http/httpcli_ssl_credentials.h +39 -0
  1152. data/src/core/lib/http/parser.cc +208 -129
  1153. data/src/core/lib/http/parser.h +53 -36
  1154. data/src/core/lib/iomgr/block_annotate.h +21 -21
  1155. data/src/core/lib/iomgr/buffer_list.cc +165 -146
  1156. data/src/core/lib/iomgr/buffer_list.h +128 -108
  1157. data/src/core/lib/iomgr/call_combiner.cc +61 -58
  1158. data/src/core/lib/iomgr/call_combiner.h +31 -34
  1159. data/src/core/lib/iomgr/cfstream_handle.cc +38 -41
  1160. data/src/core/lib/iomgr/cfstream_handle.h +23 -23
  1161. data/src/core/lib/iomgr/closure.h +110 -54
  1162. data/src/core/lib/iomgr/combiner.cc +51 -59
  1163. data/src/core/lib/iomgr/combiner.h +21 -20
  1164. data/src/core/lib/iomgr/dualstack_socket_posix.cc +22 -21
  1165. data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
  1166. data/src/core/lib/iomgr/endpoint.cc +22 -26
  1167. data/src/core/lib/iomgr/endpoint.h +53 -54
  1168. data/src/core/lib/iomgr/endpoint_cfstream.cc +78 -99
  1169. data/src/core/lib/iomgr/endpoint_cfstream.h +31 -31
  1170. data/src/core/lib/iomgr/endpoint_pair.h +19 -18
  1171. data/src/core/lib/iomgr/endpoint_pair_posix.cc +39 -30
  1172. data/src/core/lib/iomgr/endpoint_pair_windows.cc +25 -25
  1173. data/src/core/lib/iomgr/error.cc +145 -752
  1174. data/src/core/lib/iomgr/error.h +119 -227
  1175. data/src/core/lib/iomgr/error_cfstream.cc +25 -24
  1176. data/src/core/lib/iomgr/error_cfstream.h +21 -21
  1177. data/src/core/lib/iomgr/ev_apple.cc +40 -36
  1178. data/src/core/lib/iomgr/ev_apple.h +18 -18
  1179. data/src/core/lib/iomgr/ev_epoll1_linux.cc +313 -297
  1180. data/src/core/lib/iomgr/ev_epoll1_linux.h +19 -19
  1181. data/src/core/lib/iomgr/ev_poll_posix.cc +359 -332
  1182. data/src/core/lib/iomgr/ev_poll_posix.h +20 -20
  1183. data/src/core/lib/iomgr/ev_posix.cc +100 -134
  1184. data/src/core/lib/iomgr/ev_posix.h +100 -94
  1185. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  1186. data/src/core/lib/iomgr/exec_ctx.cc +48 -139
  1187. data/src/core/lib/iomgr/exec_ctx.h +175 -221
  1188. data/src/core/lib/iomgr/executor.cc +50 -68
  1189. data/src/core/lib/iomgr/executor.h +28 -31
  1190. data/src/core/lib/iomgr/fork_posix.cc +25 -22
  1191. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  1192. data/src/core/lib/iomgr/gethostname.h +18 -18
  1193. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  1194. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  1195. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  1196. data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
  1197. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +22 -21
  1198. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +22 -21
  1199. data/src/core/lib/iomgr/internal_errqueue.cc +44 -50
  1200. data/src/core/lib/iomgr/internal_errqueue.h +81 -86
  1201. data/src/core/lib/iomgr/iocp_windows.cc +32 -31
  1202. data/src/core/lib/iomgr/iocp_windows.h +19 -19
  1203. data/src/core/lib/iomgr/iomgr.cc +31 -24
  1204. data/src/core/lib/iomgr/iomgr.h +35 -35
  1205. data/src/core/lib/iomgr/iomgr_fwd.h +26 -0
  1206. data/src/core/lib/iomgr/iomgr_internal.cc +25 -29
  1207. data/src/core/lib/iomgr/iomgr_internal.h +31 -30
  1208. data/src/core/lib/iomgr/iomgr_posix.cc +25 -23
  1209. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +64 -33
  1210. data/src/core/lib/iomgr/iomgr_windows.cc +27 -26
  1211. data/src/core/lib/iomgr/load_file.cc +26 -29
  1212. data/src/core/lib/iomgr/load_file.h +22 -22
  1213. data/src/core/lib/iomgr/lockfree_event.cc +131 -125
  1214. data/src/core/lib/iomgr/lockfree_event.h +21 -21
  1215. data/src/core/lib/iomgr/nameser.h +84 -84
  1216. data/src/core/lib/iomgr/polling_entity.cc +26 -22
  1217. data/src/core/lib/iomgr/polling_entity.h +33 -27
  1218. data/src/core/lib/iomgr/pollset.cc +22 -22
  1219. data/src/core/lib/iomgr/pollset.h +62 -62
  1220. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  1221. data/src/core/lib/iomgr/pollset_set.h +23 -25
  1222. data/src/core/lib/iomgr/pollset_set_windows.cc +19 -18
  1223. data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
  1224. data/src/core/lib/iomgr/pollset_windows.cc +36 -35
  1225. data/src/core/lib/iomgr/pollset_windows.h +22 -22
  1226. data/src/core/lib/iomgr/port.h +58 -44
  1227. data/src/core/lib/iomgr/python_util.h +26 -25
  1228. data/src/core/lib/iomgr/resolve_address.cc +39 -39
  1229. data/src/core/lib/iomgr/resolve_address.h +100 -65
  1230. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  1231. data/src/core/lib/iomgr/resolve_address_posix.cc +136 -109
  1232. data/src/core/lib/iomgr/resolve_address_posix.h +63 -0
  1233. data/src/core/lib/iomgr/resolve_address_windows.cc +133 -90
  1234. data/src/core/lib/iomgr/resolve_address_windows.h +63 -0
  1235. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1236. data/src/core/lib/iomgr/sockaddr.h +24 -24
  1237. data/src/core/lib/iomgr/sockaddr_posix.h +20 -18
  1238. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +64 -0
  1239. data/src/core/lib/iomgr/sockaddr_windows.h +20 -18
  1240. data/src/core/lib/iomgr/socket_factory_posix.cc +25 -24
  1241. data/src/core/lib/iomgr/socket_factory_posix.h +31 -30
  1242. data/src/core/lib/iomgr/socket_mutator.cc +39 -24
  1243. data/src/core/lib/iomgr/socket_mutator.h +54 -30
  1244. data/src/core/lib/iomgr/socket_utils.h +24 -24
  1245. data/src/core/lib/iomgr/socket_utils_common_posix.cc +108 -142
  1246. data/src/core/lib/iomgr/socket_utils_linux.cc +22 -21
  1247. data/src/core/lib/iomgr/socket_utils_posix.cc +105 -21
  1248. data/src/core/lib/iomgr/socket_utils_posix.h +198 -106
  1249. data/src/core/lib/iomgr/socket_utils_windows.cc +22 -21
  1250. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  1251. data/src/core/lib/iomgr/socket_windows.h +56 -58
  1252. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  1253. data/src/core/lib/iomgr/systemd_utils.h +33 -0
  1254. data/src/core/lib/iomgr/tcp_client.cc +28 -24
  1255. data/src/core/lib/iomgr/tcp_client.h +48 -34
  1256. data/src/core/lib/iomgr/tcp_client_cfstream.cc +53 -58
  1257. data/src/core/lib/iomgr/tcp_client_posix.cc +249 -130
  1258. data/src/core/lib/iomgr/tcp_client_posix.h +55 -51
  1259. data/src/core/lib/iomgr/tcp_client_windows.cc +70 -62
  1260. data/src/core/lib/iomgr/tcp_posix.cc +685 -497
  1261. data/src/core/lib/iomgr/tcp_posix.h +46 -39
  1262. data/src/core/lib/iomgr/tcp_server.cc +36 -27
  1263. data/src/core/lib/iomgr/tcp_server.h +84 -73
  1264. data/src/core/lib/iomgr/tcp_server_posix.cc +216 -164
  1265. data/src/core/lib/iomgr/tcp_server_utils_posix.h +88 -80
  1266. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +140 -99
  1267. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +55 -52
  1268. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +23 -23
  1269. data/src/core/lib/iomgr/tcp_server_windows.cc +129 -132
  1270. data/src/core/lib/iomgr/tcp_windows.cc +136 -135
  1271. data/src/core/lib/iomgr/tcp_windows.h +32 -33
  1272. data/src/core/lib/iomgr/timer.cc +20 -19
  1273. data/src/core/lib/iomgr/timer.h +81 -72
  1274. data/src/core/lib/iomgr/timer_generic.cc +237 -257
  1275. data/src/core/lib/iomgr/timer_generic.h +20 -19
  1276. data/src/core/lib/iomgr/timer_heap.cc +27 -28
  1277. data/src/core/lib/iomgr/timer_heap.h +19 -19
  1278. data/src/core/lib/iomgr/timer_manager.cc +48 -47
  1279. data/src/core/lib/iomgr/timer_manager.h +25 -25
  1280. data/src/core/lib/iomgr/unix_sockets_posix.cc +48 -52
  1281. data/src/core/lib/iomgr/unix_sockets_posix.h +25 -24
  1282. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +32 -29
  1283. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +26 -26
  1284. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +24 -23
  1285. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +37 -35
  1286. data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
  1287. data/src/core/lib/iomgr/wakeup_fd_posix.cc +37 -33
  1288. data/src/core/lib/iomgr/wakeup_fd_posix.h +58 -58
  1289. data/src/core/lib/json/json.h +32 -26
  1290. data/src/core/lib/json/json_args.h +34 -0
  1291. data/src/core/lib/json/json_channel_args.h +42 -0
  1292. data/src/core/lib/json/json_object_loader.cc +217 -0
  1293. data/src/core/lib/json/json_object_loader.h +634 -0
  1294. data/src/core/lib/json/json_reader.cc +193 -118
  1295. data/src/core/lib/json/json_util.cc +106 -0
  1296. data/src/core/lib/json/json_util.h +163 -0
  1297. data/src/core/lib/json/json_writer.cc +64 -61
  1298. data/src/core/lib/load_balancing/lb_policy.cc +93 -0
  1299. data/src/core/lib/load_balancing/lb_policy.h +438 -0
  1300. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  1301. data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
  1302. data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
  1303. data/src/core/lib/load_balancing/subchannel_interface.h +133 -0
  1304. data/src/core/lib/matchers/matchers.cc +331 -0
  1305. data/src/core/lib/matchers/matchers.h +162 -0
  1306. data/src/core/lib/promise/activity.cc +134 -0
  1307. data/src/core/lib/promise/activity.h +612 -0
  1308. data/src/core/lib/promise/arena_promise.h +231 -0
  1309. data/src/core/lib/promise/context.h +93 -0
  1310. data/src/core/lib/promise/detail/basic_seq.h +497 -0
  1311. data/src/core/lib/promise/detail/promise_factory.h +236 -0
  1312. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1313. data/src/core/lib/promise/detail/status.h +78 -0
  1314. data/src/core/lib/promise/detail/switch.h +1455 -0
  1315. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +56 -0
  1316. data/src/core/lib/promise/for_each.h +155 -0
  1317. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1318. data/src/core/lib/promise/latch.h +97 -0
  1319. data/src/core/lib/promise/loop.h +138 -0
  1320. data/src/core/lib/promise/map.h +88 -0
  1321. data/src/core/lib/promise/map_pipe.h +88 -0
  1322. data/src/core/lib/promise/pipe.cc +19 -0
  1323. data/src/core/lib/promise/pipe.h +505 -0
  1324. data/src/core/lib/promise/poll.h +85 -0
  1325. data/src/core/lib/promise/promise.h +96 -0
  1326. data/src/core/lib/promise/race.h +83 -0
  1327. data/src/core/lib/promise/seq.h +107 -0
  1328. data/src/core/lib/promise/sleep.cc +90 -0
  1329. data/src/core/lib/promise/sleep.h +84 -0
  1330. data/src/core/lib/promise/try_concurrently.h +342 -0
  1331. data/src/core/lib/promise/try_seq.h +175 -0
  1332. data/src/core/lib/resolver/resolver.cc +37 -0
  1333. data/src/core/lib/resolver/resolver.h +138 -0
  1334. data/src/core/lib/resolver/resolver_factory.h +77 -0
  1335. data/src/core/lib/resolver/resolver_registry.cc +149 -0
  1336. data/src/core/lib/resolver/resolver_registry.h +123 -0
  1337. data/src/core/lib/resolver/server_address.cc +181 -0
  1338. data/src/core/lib/resolver/server_address.h +145 -0
  1339. data/src/core/lib/resource_quota/api.cc +104 -0
  1340. data/src/core/lib/resource_quota/api.h +49 -0
  1341. data/src/core/lib/resource_quota/arena.cc +138 -0
  1342. data/src/core/lib/resource_quota/arena.h +252 -0
  1343. data/src/core/lib/resource_quota/memory_quota.cc +699 -0
  1344. data/src/core/lib/resource_quota/memory_quota.h +592 -0
  1345. data/src/core/lib/resource_quota/periodic_update.cc +78 -0
  1346. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  1347. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1348. data/src/core/lib/resource_quota/resource_quota.h +74 -0
  1349. data/src/core/lib/resource_quota/thread_quota.cc +45 -0
  1350. data/src/core/lib/resource_quota/thread_quota.h +61 -0
  1351. data/src/core/lib/resource_quota/trace.cc +19 -0
  1352. data/src/core/lib/resource_quota/trace.h +24 -0
  1353. data/src/core/lib/security/authorization/authorization_engine.h +13 -53
  1354. data/src/core/lib/security/authorization/authorization_policy_provider.h +47 -0
  1355. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +49 -0
  1356. data/src/core/lib/security/authorization/evaluate_args.cc +152 -84
  1357. data/src/core/lib/security/authorization/evaluate_args.h +55 -19
  1358. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +64 -0
  1359. data/src/core/lib/security/authorization/grpc_authorization_engine.h +69 -0
  1360. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +122 -0
  1361. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +61 -0
  1362. data/src/core/lib/security/authorization/matchers.cc +241 -0
  1363. data/src/core/lib/security/authorization/matchers.h +218 -0
  1364. data/src/core/lib/security/authorization/rbac_policy.cc +445 -0
  1365. data/src/core/lib/security/authorization/rbac_policy.h +178 -0
  1366. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +66 -0
  1367. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  1368. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  1369. data/src/core/lib/security/context/security_context.cc +45 -37
  1370. data/src/core/lib/security/context/security_context.h +65 -34
  1371. data/src/core/lib/security/credentials/alts/alts_credentials.cc +36 -27
  1372. data/src/core/lib/security/credentials/alts/alts_credentials.h +68 -54
  1373. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +20 -20
  1374. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
  1375. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +19 -19
  1376. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +20 -19
  1377. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +20 -19
  1378. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +20 -22
  1379. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  1380. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
  1381. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +19 -22
  1382. data/src/core/lib/security/credentials/call_creds_util.cc +97 -0
  1383. data/src/core/lib/security/credentials/call_creds_util.h +43 -0
  1384. data/src/core/lib/security/credentials/channel_creds_registry.h +103 -0
  1385. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +80 -0
  1386. data/src/core/lib/security/credentials/composite/composite_credentials.cc +56 -114
  1387. data/src/core/lib/security/credentials/composite/composite_credentials.h +62 -37
  1388. data/src/core/lib/security/credentials/credentials.cc +37 -39
  1389. data/src/core/lib/security/credentials/credentials.h +148 -134
  1390. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +546 -0
  1391. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +100 -0
  1392. data/src/core/lib/security/credentials/external/aws_request_signer.cc +224 -0
  1393. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  1394. data/src/core/lib/security/credentials/external/external_account_credentials.cc +561 -0
  1395. data/src/core/lib/security/credentials/external/external_account_credentials.h +129 -0
  1396. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +138 -0
  1397. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +55 -0
  1398. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +242 -0
  1399. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +71 -0
  1400. data/src/core/lib/security/credentials/fake/fake_credentials.cc +64 -63
  1401. data/src/core/lib/security/credentials/fake/fake_credentials.h +68 -60
  1402. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +24 -27
  1403. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +240 -142
  1404. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +38 -26
  1405. data/src/core/lib/security/credentials/iam/iam_credentials.cc +51 -48
  1406. data/src/core/lib/security/credentials/iam/iam_credentials.h +43 -27
  1407. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +73 -0
  1408. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +61 -0
  1409. data/src/core/lib/security/credentials/jwt/json_token.cc +48 -39
  1410. data/src/core/lib/security/credentials/jwt/json_token.h +34 -33
  1411. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +83 -75
  1412. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +62 -36
  1413. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +179 -147
  1414. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +49 -47
  1415. data/src/core/lib/security/credentials/local/local_credentials.cc +37 -30
  1416. data/src/core/lib/security/credentials/local/local_credentials.h +39 -23
  1417. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +269 -287
  1418. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +105 -56
  1419. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +123 -177
  1420. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +98 -45
  1421. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +55 -59
  1422. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +48 -26
  1423. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +340 -0
  1424. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +216 -0
  1425. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +471 -0
  1426. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +206 -0
  1427. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +241 -0
  1428. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +168 -0
  1429. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +83 -206
  1430. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +93 -299
  1431. data/src/core/lib/security/credentials/tls/tls_credentials.cc +79 -58
  1432. data/src/core/lib/security/credentials/tls/tls_credentials.h +33 -24
  1433. data/src/core/lib/security/credentials/tls/tls_utils.cc +127 -0
  1434. data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
  1435. data/src/core/lib/security/credentials/xds/xds_credentials.cc +235 -0
  1436. data/src/core/lib/security/credentials/xds/xds_credentials.h +114 -0
  1437. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +77 -67
  1438. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +50 -48
  1439. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +94 -104
  1440. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +23 -26
  1441. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +120 -0
  1442. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +103 -0
  1443. data/src/core/lib/security/security_connector/load_system_roots.h +22 -18
  1444. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +23 -20
  1445. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +175 -0
  1446. data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
  1447. data/src/core/lib/security/security_connector/local/local_security_connector.cc +90 -65
  1448. data/src/core/lib/security/security_connector/local/local_security_connector.h +47 -44
  1449. data/src/core/lib/security/security_connector/security_connector.cc +48 -52
  1450. data/src/core/lib/security/security_connector/security_connector.h +90 -66
  1451. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +78 -66
  1452. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +43 -43
  1453. data/src/core/lib/security/security_connector/ssl_utils.cc +124 -83
  1454. data/src/core/lib/security/security_connector/ssl_utils.h +74 -75
  1455. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  1456. data/src/core/lib/security/security_connector/ssl_utils_config.h +19 -20
  1457. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +672 -450
  1458. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +231 -128
  1459. data/src/core/lib/security/transport/auth_filters.h +64 -23
  1460. data/src/core/lib/security/transport/client_auth_filter.cc +143 -383
  1461. data/src/core/lib/security/transport/secure_endpoint.cc +314 -200
  1462. data/src/core/lib/security/transport/secure_endpoint.h +27 -25
  1463. data/src/core/lib/security/transport/security_handshaker.cc +267 -168
  1464. data/src/core/lib/security/transport/security_handshaker.h +27 -21
  1465. data/src/core/lib/security/transport/server_auth_filter.cc +122 -89
  1466. data/src/core/lib/security/transport/tsi_error.cc +24 -22
  1467. data/src/core/lib/security/transport/tsi_error.h +20 -19
  1468. data/src/core/lib/security/util/json_util.cc +29 -31
  1469. data/src/core/lib/security/util/json_util.h +20 -21
  1470. data/src/core/lib/service_config/service_config.h +89 -0
  1471. data/src/core/lib/service_config/service_config_call_data.h +82 -0
  1472. data/src/core/lib/service_config/service_config_impl.cc +191 -0
  1473. data/src/core/lib/service_config/service_config_impl.h +125 -0
  1474. data/src/core/lib/service_config/service_config_parser.cc +81 -0
  1475. data/src/core/lib/service_config/service_config_parser.h +105 -0
  1476. data/src/core/lib/slice/b64.cc +26 -26
  1477. data/src/core/lib/slice/b64.h +31 -29
  1478. data/src/core/lib/slice/percent_encoding.cc +95 -114
  1479. data/src/core/lib/slice/percent_encoding.h +43 -54
  1480. data/src/core/lib/slice/slice.cc +140 -234
  1481. data/src/core/lib/slice/slice.h +435 -0
  1482. data/src/core/lib/slice/slice_buffer.cc +145 -81
  1483. data/src/core/lib/slice/slice_buffer.h +162 -0
  1484. data/src/core/lib/slice/slice_internal.h +37 -305
  1485. data/src/core/lib/slice/slice_refcount.h +60 -0
  1486. data/src/core/lib/slice/slice_string_helpers.cc +17 -116
  1487. data/src/core/lib/slice/slice_string_helpers.h +20 -38
  1488. data/src/core/lib/surface/api_trace.cc +19 -18
  1489. data/src/core/lib/surface/api_trace.h +23 -22
  1490. data/src/core/lib/surface/builtins.cc +54 -0
  1491. data/src/core/lib/surface/builtins.h +26 -0
  1492. data/src/core/lib/surface/byte_buffer.cc +26 -21
  1493. data/src/core/lib/surface/byte_buffer_reader.cc +25 -25
  1494. data/src/core/lib/surface/call.cc +2509 -1450
  1495. data/src/core/lib/surface/call.h +114 -58
  1496. data/src/core/lib/surface/call_details.cc +28 -29
  1497. data/src/core/lib/surface/call_log_batch.cc +26 -20
  1498. data/src/core/lib/surface/call_test_only.h +31 -28
  1499. data/src/core/lib/surface/call_trace.cc +113 -0
  1500. data/src/core/lib/surface/call_trace.h +30 -0
  1501. data/src/core/lib/surface/channel.cc +251 -365
  1502. data/src/core/lib/surface/channel.h +148 -102
  1503. data/src/core/lib/surface/channel_init.cc +39 -93
  1504. data/src/core/lib/surface/channel_init.h +63 -57
  1505. data/src/core/lib/surface/channel_ping.cc +28 -23
  1506. data/src/core/lib/surface/channel_stack_type.cc +21 -18
  1507. data/src/core/lib/surface/channel_stack_type.h +20 -20
  1508. data/src/core/lib/surface/completion_queue.cc +337 -363
  1509. data/src/core/lib/surface/completion_queue.h +56 -53
  1510. data/src/core/lib/surface/completion_queue_factory.cc +37 -31
  1511. data/src/core/lib/surface/completion_queue_factory.h +19 -20
  1512. data/src/core/lib/surface/event_string.cc +18 -23
  1513. data/src/core/lib/surface/event_string.h +19 -19
  1514. data/src/core/lib/surface/init.cc +143 -162
  1515. data/src/core/lib/surface/init.h +20 -22
  1516. data/src/core/lib/surface/init_internally.cc +25 -0
  1517. data/src/core/lib/surface/init_internally.h +37 -0
  1518. data/src/core/lib/surface/lame_client.cc +101 -138
  1519. data/src/core/lib/surface/lame_client.h +63 -20
  1520. data/src/core/lib/surface/metadata_array.cc +20 -19
  1521. data/src/core/lib/surface/server.cc +304 -304
  1522. data/src/core/lib/surface/server.h +189 -62
  1523. data/src/core/lib/surface/validate_metadata.cc +74 -57
  1524. data/src/core/lib/surface/validate_metadata.h +27 -20
  1525. data/src/core/lib/surface/version.cc +21 -21
  1526. data/src/core/lib/transport/bdp_estimator.cc +29 -30
  1527. data/src/core/lib/transport/bdp_estimator.h +23 -24
  1528. data/src/core/lib/transport/connectivity_state.cc +33 -29
  1529. data/src/core/lib/transport/connectivity_state.h +34 -33
  1530. data/src/core/lib/transport/error_utils.cc +90 -73
  1531. data/src/core/lib/transport/error_utils.h +39 -28
  1532. data/src/core/lib/transport/handshaker.cc +228 -0
  1533. data/src/core/lib/transport/handshaker.h +172 -0
  1534. data/src/core/lib/transport/handshaker_factory.h +74 -0
  1535. data/src/core/lib/transport/handshaker_registry.cc +61 -0
  1536. data/src/core/lib/transport/handshaker_registry.h +69 -0
  1537. data/src/core/lib/transport/http2_errors.h +20 -20
  1538. data/src/core/lib/transport/http_connect_handshaker.cc +400 -0
  1539. data/src/core/lib/transport/http_connect_handshaker.h +42 -0
  1540. data/src/core/lib/transport/metadata_batch.cc +218 -316
  1541. data/src/core/lib/transport/metadata_batch.h +1322 -177
  1542. data/src/core/lib/transport/parsed_metadata.cc +35 -0
  1543. data/src/core/lib/transport/parsed_metadata.h +410 -0
  1544. data/src/core/lib/transport/pid_controller.cc +24 -24
  1545. data/src/core/lib/transport/pid_controller.h +24 -24
  1546. data/src/core/lib/transport/status_conversion.cc +25 -25
  1547. data/src/core/lib/transport/status_conversion.h +23 -23
  1548. data/src/core/lib/transport/tcp_connect_handshaker.cc +246 -0
  1549. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1550. data/src/core/lib/transport/timeout_encoding.cc +229 -96
  1551. data/src/core/lib/transport/timeout_encoding.h +62 -28
  1552. data/src/core/lib/transport/transport.cc +118 -91
  1553. data/src/core/lib/transport/transport.h +276 -153
  1554. data/src/core/lib/transport/transport_fwd.h +20 -0
  1555. data/src/core/lib/transport/transport_impl.h +56 -32
  1556. data/src/core/lib/transport/transport_op_string.cc +46 -68
  1557. data/src/core/lib/uri/uri_parser.cc +312 -248
  1558. data/src/core/lib/uri/uri_parser.h +90 -40
  1559. data/src/core/plugin_registry/grpc_plugin_registry.cc +108 -118
  1560. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +66 -0
  1561. data/src/core/tsi/alts/crypt/aes_gcm.cc +26 -23
  1562. data/src/core/tsi/alts/crypt/gsec.cc +31 -30
  1563. data/src/core/tsi/alts/crypt/gsec.h +339 -334
  1564. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  1565. data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
  1566. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  1567. data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
  1568. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +85 -83
  1569. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
  1570. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  1571. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
  1572. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  1573. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  1574. data/src/core/tsi/alts/frame_protector/frame_handler.cc +44 -42
  1575. data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
  1576. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +167 -148
  1577. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +103 -104
  1578. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +27 -18
  1579. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
  1580. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +131 -108
  1581. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +59 -59
  1582. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +23 -22
  1583. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +23 -22
  1584. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +37 -37
  1585. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +22 -24
  1586. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +104 -103
  1587. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +47 -46
  1588. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
  1589. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  1590. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
  1591. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
  1592. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +33 -32
  1593. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
  1594. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +62 -59
  1595. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
  1596. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +73 -64
  1597. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
  1598. data/src/core/tsi/fake_transport_security.cc +177 -121
  1599. data/src/core/tsi/fake_transport_security.h +33 -27
  1600. data/src/core/tsi/local_transport_security.cc +84 -120
  1601. data/src/core/tsi/local_transport_security.h +33 -37
  1602. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +146 -0
  1603. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1604. data/src/core/tsi/ssl/session_cache/ssl_session.h +21 -21
  1605. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +22 -20
  1606. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +38 -72
  1607. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +37 -28
  1608. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +29 -22
  1609. data/src/core/tsi/ssl_transport_security.cc +495 -453
  1610. data/src/core/tsi/ssl_transport_security.h +239 -198
  1611. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  1612. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  1613. data/src/core/tsi/ssl_types.h +25 -25
  1614. data/src/core/tsi/transport_security.cc +69 -43
  1615. data/src/core/tsi/transport_security.h +50 -34
  1616. data/src/core/tsi/transport_security_grpc.cc +23 -22
  1617. data/src/core/tsi/transport_security_grpc.h +43 -39
  1618. data/src/core/tsi/transport_security_interface.h +368 -328
  1619. data/src/ruby/bin/math_services_pb.rb +1 -1
  1620. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
  1621. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -0
  1622. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  1623. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  1624. data/src/ruby/ext/grpc/ext-export.gcc +1 -1
  1625. data/src/ruby/ext/grpc/extconf.rb +122 -24
  1626. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1627. data/src/ruby/ext/grpc/rb_call.c +6 -5
  1628. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  1629. data/src/ruby/ext/grpc/rb_channel.c +25 -10
  1630. data/src/ruby/ext/grpc/rb_channel_args.c +3 -2
  1631. data/src/ruby/ext/grpc/rb_channel_credentials.c +15 -5
  1632. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1633. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1634. data/src/ruby/ext/grpc/rb_compression_options.c +7 -6
  1635. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1636. data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
  1637. data/src/ruby/ext/grpc/rb_grpc.c +10 -4
  1638. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1639. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +108 -84
  1640. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +178 -142
  1641. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  1642. data/src/ruby/ext/grpc/rb_server.c +26 -10
  1643. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1644. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1645. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1646. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1647. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1648. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1649. data/src/ruby/lib/grpc/errors.rb +1 -1
  1650. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1651. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1652. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  1653. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1654. data/src/ruby/lib/grpc/version.rb +1 -1
  1655. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1656. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  1657. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +39 -0
  1658. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1659. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +23 -5
  1660. data/src/ruby/pb/test/client.rb +769 -0
  1661. data/src/ruby/pb/test/server.rb +252 -0
  1662. data/src/ruby/pb/test/xds_client.rb +415 -0
  1663. data/src/ruby/spec/call_spec.rb +1 -1
  1664. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  1665. data/src/ruby/spec/channel_spec.rb +21 -48
  1666. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1667. data/src/ruby/spec/client_server_spec.rb +21 -9
  1668. data/src/ruby/spec/errors_spec.rb +1 -1
  1669. data/src/ruby/spec/generic/active_call_spec.rb +14 -5
  1670. data/src/ruby/spec/generic/client_stub_spec.rb +27 -27
  1671. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1672. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  1673. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
  1674. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1675. data/src/ruby/spec/server_spec.rb +22 -0
  1676. data/src/ruby/spec/user_agent_spec.rb +1 -1
  1677. data/third_party/abseil-cpp/absl/algorithm/container.h +164 -117
  1678. data/third_party/abseil-cpp/absl/base/attributes.h +211 -70
  1679. data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
  1680. data/third_party/abseil-cpp/absl/base/casts.h +61 -65
  1681. data/third_party/abseil-cpp/absl/base/config.h +320 -78
  1682. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +417 -335
  1683. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  1684. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  1685. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +12 -4
  1686. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  1687. data/third_party/abseil-cpp/absl/base/internal/endian.h +78 -62
  1688. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
  1689. data/third_party/abseil-cpp/absl/base/internal/invoke.h +58 -4
  1690. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  1691. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
  1692. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  1693. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +56 -47
  1694. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +29 -16
  1695. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +39 -40
  1696. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +44 -31
  1697. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1698. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +13 -8
  1699. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1700. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1701. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1702. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  1703. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  1704. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +96 -5
  1705. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  1706. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +11 -7
  1707. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1708. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1709. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  1710. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1711. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +23 -10
  1712. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +18 -9
  1713. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  1714. data/third_party/abseil-cpp/absl/base/log_severity.h +55 -4
  1715. data/third_party/abseil-cpp/absl/base/macros.h +47 -109
  1716. data/third_party/abseil-cpp/absl/base/optimization.h +77 -6
  1717. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  1718. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  1719. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1720. data/third_party/abseil-cpp/absl/base/thread_annotations.h +97 -42
  1721. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1722. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1723. data/third_party/abseil-cpp/absl/container/fixed_array.h +46 -32
  1724. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +613 -0
  1725. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +18 -11
  1726. data/third_party/abseil-cpp/absl/container/inlined_vector.h +155 -137
  1727. data/third_party/abseil-cpp/absl/container/internal/common.h +12 -7
  1728. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
  1729. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +59 -57
  1730. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +23 -6
  1731. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  1732. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +83 -114
  1733. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +99 -97
  1734. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  1735. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +495 -434
  1736. data/third_party/abseil-cpp/absl/container/internal/layout.h +11 -9
  1737. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +198 -0
  1738. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +25 -2
  1739. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +852 -369
  1740. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -87
  1741. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +93 -29
  1742. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -11
  1743. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +7 -2
  1744. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +17 -5
  1745. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +21 -7
  1746. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +42 -24
  1747. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1748. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  1749. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +14 -4
  1750. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +236 -0
  1751. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  1752. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -10
  1753. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +33 -8
  1754. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +35 -25
  1755. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1756. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +19 -1
  1757. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1758. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +160 -27
  1759. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1760. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  1761. data/third_party/abseil-cpp/absl/functional/bind_front.h +193 -0
  1762. data/third_party/abseil-cpp/absl/functional/function_ref.h +7 -3
  1763. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  1764. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1765. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  1766. data/third_party/abseil-cpp/absl/hash/hash.h +110 -13
  1767. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  1768. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  1769. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +27 -13
  1770. data/third_party/abseil-cpp/absl/hash/internal/hash.h +426 -123
  1771. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1772. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1773. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1774. data/third_party/abseil-cpp/absl/meta/type_traits.h +49 -11
  1775. data/third_party/abseil-cpp/absl/numeric/bits.h +178 -0
  1776. data/third_party/abseil-cpp/absl/numeric/int128.cc +18 -37
  1777. data/third_party/abseil-cpp/absl/numeric/int128.h +161 -87
  1778. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1779. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1780. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1781. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1782. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  1783. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  1784. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +245 -0
  1785. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1786. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1787. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1788. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1789. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1790. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1791. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1792. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1793. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
  1794. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +269 -0
  1795. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1796. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1797. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1798. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
  1799. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1800. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1801. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1802. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1803. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1804. data/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
  1805. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
  1806. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1807. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
  1808. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1809. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1810. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1811. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1812. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1813. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1814. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
  1815. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1816. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1817. data/third_party/abseil-cpp/absl/random/internal/traits.h +149 -0
  1818. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1819. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
  1820. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
  1821. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +261 -0
  1822. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1823. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1824. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1825. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1826. data/third_party/abseil-cpp/absl/random/seed_sequences.h +111 -0
  1827. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1828. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1829. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +272 -0
  1830. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +86 -0
  1831. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  1832. data/third_party/abseil-cpp/absl/status/status.cc +205 -36
  1833. data/third_party/abseil-cpp/absl/status/status.h +586 -122
  1834. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  1835. data/third_party/abseil-cpp/absl/status/statusor.cc +103 -0
  1836. data/third_party/abseil-cpp/absl/status/statusor.h +776 -0
  1837. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  1838. data/third_party/abseil-cpp/absl/strings/charconv.cc +10 -10
  1839. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1840. data/third_party/abseil-cpp/absl/strings/cord.cc +592 -1283
  1841. data/third_party/abseil-cpp/absl/strings/cord.h +840 -319
  1842. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  1843. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  1844. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  1845. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  1846. data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
  1847. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1848. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1849. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1850. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +9 -9
  1851. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  1852. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +77 -0
  1853. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +561 -57
  1854. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1228 -0
  1855. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +924 -0
  1856. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
  1857. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
  1858. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
  1859. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
  1860. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +62 -0
  1861. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1862. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  1863. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  1864. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +187 -0
  1865. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +773 -0
  1866. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1867. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1868. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1869. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1870. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1871. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1872. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +418 -0
  1873. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1874. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
  1875. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1876. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
  1877. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  1878. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  1879. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1880. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
  1881. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +159 -65
  1882. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +19 -6
  1883. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +63 -24
  1884. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +28 -16
  1885. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +36 -13
  1886. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +188 -155
  1887. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
  1888. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
  1889. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +6 -13
  1890. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +82 -77
  1891. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +55 -29
  1892. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  1893. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1894. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +72 -0
  1895. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  1896. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1897. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1898. data/third_party/abseil-cpp/absl/strings/numbers.cc +135 -7
  1899. data/third_party/abseil-cpp/absl/strings/numbers.h +69 -32
  1900. data/third_party/abseil-cpp/absl/strings/str_cat.cc +8 -8
  1901. data/third_party/abseil-cpp/absl/strings/str_cat.h +21 -14
  1902. data/third_party/abseil-cpp/absl/strings/str_format.h +290 -15
  1903. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  1904. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1905. data/third_party/abseil-cpp/absl/strings/str_split.h +40 -6
  1906. data/third_party/abseil-cpp/absl/strings/string_view.cc +18 -34
  1907. data/third_party/abseil-cpp/absl/strings/string_view.h +146 -57
  1908. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  1909. data/third_party/abseil-cpp/absl/strings/substitute.cc +7 -6
  1910. data/third_party/abseil-cpp/absl/strings/substitute.h +119 -83
  1911. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1912. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1913. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +12 -9
  1914. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  1915. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1916. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +4 -3
  1917. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +29 -28
  1918. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -6
  1919. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +6 -11
  1920. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +2 -83
  1921. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +14 -12
  1922. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +209 -151
  1923. data/third_party/abseil-cpp/absl/synchronization/mutex.h +106 -72
  1924. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  1925. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -11
  1926. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1927. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1928. data/third_party/abseil-cpp/absl/time/duration.cc +98 -65
  1929. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  1930. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +42 -32
  1931. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +97 -22
  1932. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  1933. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1934. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  1935. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1936. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  1937. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  1938. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +219 -150
  1939. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  1940. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +15 -8
  1941. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1942. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  1943. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +1 -1
  1944. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1945. data/third_party/abseil-cpp/absl/time/time.h +122 -86
  1946. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1947. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1948. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  1949. data/third_party/abseil-cpp/absl/types/internal/variant.h +8 -8
  1950. data/third_party/abseil-cpp/absl/types/optional.h +26 -23
  1951. data/third_party/abseil-cpp/absl/types/span.h +52 -38
  1952. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  1953. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1954. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1955. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1956. data/third_party/boringssl-with-bazel/err_data.c +763 -721
  1957. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +70 -57
  1958. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1959. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1960. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  1961. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1962. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  1963. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1964. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +67 -54
  1965. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1966. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1967. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
  1968. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1969. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
  1970. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
  1971. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1972. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1973. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +74 -68
  1974. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1975. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1976. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1977. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
  1978. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
  1979. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
  1980. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1981. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1982. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
  1983. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1984. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1985. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1986. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1987. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1988. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1989. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1990. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1991. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1992. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1993. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1994. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1995. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1996. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
  1997. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1998. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1999. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  2000. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  2001. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  2002. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  2003. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  2004. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  2005. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  2006. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  2007. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  2008. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  2009. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  2010. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  2011. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
  2012. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  2013. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +30 -43
  2014. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  2015. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  2016. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  2017. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  2018. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
  2019. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  2020. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  2021. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  2022. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  2023. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  2024. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  2025. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  2026. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +15 -4
  2027. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  2028. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  2029. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
  2030. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +208 -37
  2031. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  2032. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  2033. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
  2034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +11 -0
  2035. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  2036. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  2037. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  2038. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  2039. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  2040. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  2041. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  2042. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  2043. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  2044. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  2045. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  2046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  2047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  2048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  2049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  2050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  2051. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  2052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  2053. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  2054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  2055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +80 -43
  2056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +120 -62
  2057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  2058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +176 -18
  2059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  2060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  2061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  2062. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +401 -239
  2063. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  2064. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  2065. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  2066. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  2067. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  2068. data/third_party/boringssl-with-bazel/src/crypto/mem.c +46 -9
  2069. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  2070. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  2071. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  2072. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  2073. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  2074. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  2075. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  2076. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  2077. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  2078. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  2079. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  2080. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +96 -49
  2081. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  2082. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  2083. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  2085. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  2086. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  2087. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  2088. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  2089. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  2090. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  2091. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  2092. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  2093. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  2094. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  2095. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +118 -49
  2096. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +267 -95
  2097. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +210 -34
  2098. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  2099. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  2100. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +7 -5
  2101. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  2102. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  2103. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  2104. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  2105. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  2106. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  2107. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +13 -8
  2108. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -180
  2110. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  2111. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  2112. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +11 -33
  2113. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +29 -23
  2114. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  2115. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +2 -1
  2116. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  2117. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -27
  2118. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +5 -3
  2119. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  2120. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +29 -26
  2121. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +54 -104
  2122. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  2123. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +74 -25
  2124. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -12
  2125. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  2127. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -26
  2128. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  2129. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +17 -15
  2130. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  2131. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +49 -59
  2132. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  2133. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  2134. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  2135. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  2136. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  2137. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +49 -11
  2138. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  2139. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  2140. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +239 -11
  2141. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  2142. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +7 -5
  2143. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  2144. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  2145. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  2146. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  2147. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  2148. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +43 -32
  2149. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  2150. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -28
  2151. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
  2152. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  2153. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  2154. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  2155. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  2156. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  2157. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
  2158. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  2159. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  2160. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +15 -14
  2161. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +57 -10
  2162. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
  2163. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  2164. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
  2165. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +76 -9
  2166. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1794 -666
  2167. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
  2168. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +67 -15
  2169. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  2170. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +7 -1
  2171. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  2172. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  2173. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  2174. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  2175. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +42 -7
  2176. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  2177. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  2178. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
  2179. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  2180. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +66 -32
  2181. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -2
  2182. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  2183. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  2184. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  2185. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  2186. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  2187. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +70 -106
  2188. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
  2189. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  2190. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  2191. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  2192. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  2193. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  2194. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  2195. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  2196. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +194 -146
  2197. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  2198. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  2199. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  2200. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  2201. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  2202. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  2203. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +499 -122
  2204. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +52 -36
  2205. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +42 -14
  2206. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1554 -427
  2207. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  2208. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +642 -452
  2209. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  2210. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  2211. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  2212. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  2213. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
  2214. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +333 -22
  2215. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +99 -51
  2216. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +315 -219
  2217. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +178 -36
  2218. data/third_party/boringssl-with-bazel/src/ssl/internal.h +533 -159
  2219. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  2220. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  2221. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  2222. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +49 -9
  2223. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  2224. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +10 -11
  2225. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  2226. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +129 -110
  2227. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  2228. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +147 -118
  2229. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  2230. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  2231. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +11 -3
  2232. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  2233. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  2234. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +80 -36
  2235. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +285 -190
  2236. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  2237. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +381 -136
  2238. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  2239. data/third_party/cares/cares/include/ares.h +742 -0
  2240. data/third_party/cares/cares/include/ares_dns.h +112 -0
  2241. data/third_party/cares/cares/include/ares_version.h +24 -0
  2242. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  2243. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  2244. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  2245. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  2246. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  2247. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  2248. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  2249. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  2250. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  2251. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  2252. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  2253. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  2254. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  2255. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  2256. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  2257. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  2258. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  2259. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  2260. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  2261. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  2262. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  2263. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  2264. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  2265. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  2266. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  2267. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  2268. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  2269. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  2270. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  2271. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  2272. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  2273. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  2274. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  2275. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  2276. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  2277. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  2278. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  2279. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  2280. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  2281. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  2282. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  2283. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  2284. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  2285. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  2286. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  2287. data/third_party/re2/re2/bitstate.cc +3 -3
  2288. data/third_party/re2/re2/compile.cc +91 -109
  2289. data/third_party/re2/re2/dfa.cc +40 -52
  2290. data/third_party/re2/re2/filtered_re2.cc +18 -2
  2291. data/third_party/re2/re2/filtered_re2.h +10 -5
  2292. data/third_party/re2/re2/nfa.cc +5 -5
  2293. data/third_party/re2/re2/onepass.cc +2 -2
  2294. data/third_party/re2/re2/parse.cc +42 -23
  2295. data/third_party/re2/re2/perl_groups.cc +34 -34
  2296. data/third_party/re2/re2/prefilter.cc +3 -2
  2297. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  2298. data/third_party/re2/re2/prefilter_tree.h +3 -2
  2299. data/third_party/re2/re2/prog.cc +193 -6
  2300. data/third_party/re2/re2/prog.h +45 -14
  2301. data/third_party/re2/re2/re2.cc +93 -129
  2302. data/third_party/re2/re2/re2.h +156 -141
  2303. data/third_party/re2/re2/regexp.cc +13 -7
  2304. data/third_party/re2/re2/regexp.h +8 -2
  2305. data/third_party/re2/re2/set.cc +31 -9
  2306. data/third_party/re2/re2/set.h +9 -4
  2307. data/third_party/re2/re2/simplify.cc +11 -3
  2308. data/third_party/re2/re2/stringpiece.h +10 -7
  2309. data/third_party/re2/re2/tostring.cc +1 -1
  2310. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  2311. data/third_party/re2/re2/unicode_groups.cc +319 -151
  2312. data/third_party/re2/re2/walker-inl.h +4 -3
  2313. data/third_party/re2/util/mutex.h +6 -6
  2314. data/third_party/re2/util/pcre.h +3 -3
  2315. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  2316. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  2317. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2318. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2319. data/third_party/upb/upb/arena.c +277 -0
  2320. data/third_party/upb/upb/arena.h +225 -0
  2321. data/third_party/upb/upb/array.c +114 -0
  2322. data/third_party/upb/upb/array.h +83 -0
  2323. data/third_party/upb/upb/collections.h +36 -0
  2324. data/third_party/upb/upb/decode.c +979 -379
  2325. data/third_party/upb/upb/decode.h +80 -6
  2326. data/third_party/upb/upb/decode_fast.c +1055 -0
  2327. data/third_party/upb/upb/decode_fast.h +153 -0
  2328. data/third_party/upb/upb/def.c +3269 -0
  2329. data/third_party/upb/upb/def.h +416 -0
  2330. data/third_party/upb/upb/def.hpp +441 -0
  2331. data/third_party/upb/upb/encode.c +439 -246
  2332. data/third_party/upb/upb/encode.h +66 -6
  2333. data/third_party/upb/upb/extension_registry.c +93 -0
  2334. data/third_party/upb/upb/extension_registry.h +84 -0
  2335. data/third_party/upb/upb/internal/decode.h +211 -0
  2336. data/third_party/upb/upb/internal/table.h +385 -0
  2337. data/third_party/upb/upb/internal/upb.h +68 -0
  2338. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  2339. data/third_party/upb/upb/json_decode.c +1512 -0
  2340. data/third_party/upb/upb/json_decode.h +47 -0
  2341. data/third_party/upb/upb/json_encode.c +780 -0
  2342. data/third_party/upb/upb/json_encode.h +65 -0
  2343. data/third_party/upb/upb/map.c +108 -0
  2344. data/third_party/upb/upb/map.h +117 -0
  2345. data/third_party/upb/upb/message_value.h +66 -0
  2346. data/third_party/upb/upb/mini_table.c +1147 -0
  2347. data/third_party/upb/upb/mini_table.h +189 -0
  2348. data/third_party/upb/upb/mini_table.hpp +112 -0
  2349. data/third_party/upb/upb/msg.c +291 -100
  2350. data/third_party/upb/upb/msg.h +48 -450
  2351. data/third_party/upb/upb/msg_internal.h +837 -0
  2352. data/third_party/upb/upb/port_def.inc +166 -83
  2353. data/third_party/upb/upb/port_undef.inc +43 -8
  2354. data/third_party/upb/upb/reflection.c +323 -0
  2355. data/third_party/upb/upb/reflection.h +110 -0
  2356. data/third_party/upb/upb/reflection.hpp +37 -0
  2357. data/third_party/upb/upb/status.c +86 -0
  2358. data/third_party/upb/upb/status.h +66 -0
  2359. data/third_party/upb/upb/table.c +422 -376
  2360. data/third_party/upb/upb/table_internal.h +36 -0
  2361. data/third_party/upb/upb/text_encode.c +473 -0
  2362. data/third_party/upb/upb/text_encode.h +64 -0
  2363. data/third_party/upb/upb/upb.c +56 -267
  2364. data/third_party/upb/upb/upb.h +115 -239
  2365. data/third_party/upb/upb/upb.hpp +51 -24
  2366. data/third_party/xxhash/xxhash.h +5580 -0
  2367. data/third_party/zlib/compress.c +3 -3
  2368. data/third_party/zlib/crc32.c +975 -292
  2369. data/third_party/zlib/crc32.h +9441 -436
  2370. data/third_party/zlib/deflate.c +183 -129
  2371. data/third_party/zlib/deflate.h +12 -15
  2372. data/third_party/zlib/gzguts.h +3 -2
  2373. data/third_party/zlib/gzlib.c +6 -4
  2374. data/third_party/zlib/gzread.c +8 -12
  2375. data/third_party/zlib/gzwrite.c +26 -14
  2376. data/third_party/zlib/infback.c +12 -8
  2377. data/third_party/zlib/inffast.c +14 -14
  2378. data/third_party/zlib/inflate.c +44 -10
  2379. data/third_party/zlib/inflate.h +3 -2
  2380. data/third_party/zlib/inftrees.c +3 -3
  2381. data/third_party/zlib/inftrees.h +1 -1
  2382. data/third_party/zlib/trees.c +85 -107
  2383. data/third_party/zlib/uncompr.c +2 -2
  2384. data/third_party/zlib/zconf.h +16 -3
  2385. data/third_party/zlib/zlib.h +129 -106
  2386. data/third_party/zlib/zutil.c +11 -9
  2387. data/third_party/zlib/zutil.h +13 -9
  2388. metadata +1180 -323
  2389. data/include/grpc/impl/codegen/gpr_slice.h +0 -69
  2390. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -389
  2391. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -34
  2392. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
  2393. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -85
  2394. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -946
  2395. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -537
  2396. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -32
  2397. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1141
  2398. data/src/core/ext/filters/client_channel/lb_policy.cc +0 -138
  2399. data/src/core/ext/filters/client_channel/lb_policy.h +0 -425
  2400. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -47
  2401. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -181
  2402. data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -65
  2403. data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
  2404. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -89
  2405. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -50
  2406. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
  2407. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  2408. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  2409. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  2410. data/src/core/ext/filters/client_channel/resolver.cc +0 -85
  2411. data/src/core/ext/filters/client_channel/resolver.h +0 -144
  2412. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
  2413. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -196
  2414. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  2415. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -442
  2416. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -126
  2417. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -354
  2418. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -142
  2419. data/src/core/ext/filters/client_channel/server_address.cc +0 -81
  2420. data/src/core/ext/filters/client_channel/server_address.h +0 -128
  2421. data/src/core/ext/filters/client_channel/service_config.cc +0 -221
  2422. data/src/core/ext/filters/client_channel/service_config.h +0 -123
  2423. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -68
  2424. data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -87
  2425. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -89
  2426. data/src/core/ext/filters/client_channel/subchannel_interface.h +0 -94
  2427. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
  2428. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -546
  2429. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
  2430. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -399
  2431. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +0 -31
  2432. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -557
  2433. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2434. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  2435. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
  2436. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  2437. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  2438. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  2439. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  2440. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -112
  2441. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -79
  2442. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -200
  2443. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
  2444. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -69
  2445. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
  2446. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2447. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
  2448. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  2449. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  2450. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  2451. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
  2452. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -49
  2453. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -30
  2454. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -49
  2455. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -30
  2456. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -49
  2457. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -29
  2458. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -49
  2459. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
  2460. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -49
  2461. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  2462. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -29
  2463. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  2464. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -117
  2465. data/src/core/ext/xds/xds_channel.h +0 -46
  2466. data/src/core/ext/xds/xds_channel_secure.cc +0 -103
  2467. data/src/core/lib/avl/avl.cc +0 -306
  2468. data/src/core/lib/channel/handshaker.cc +0 -262
  2469. data/src/core/lib/channel/handshaker.h +0 -179
  2470. data/src/core/lib/channel/handshaker_factory.h +0 -42
  2471. data/src/core/lib/channel/handshaker_registry.cc +0 -105
  2472. data/src/core/lib/channel/handshaker_registry.h +0 -54
  2473. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  2474. data/src/core/lib/compression/compression_args.cc +0 -134
  2475. data/src/core/lib/compression/compression_args.h +0 -56
  2476. data/src/core/lib/compression/stream_compression.cc +0 -80
  2477. data/src/core/lib/compression/stream_compression.h +0 -116
  2478. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  2479. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2480. data/src/core/lib/compression/stream_compression_identity.cc +0 -92
  2481. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2482. data/src/core/lib/gpr/arena.h +0 -47
  2483. data/src/core/lib/gpr/env.h +0 -40
  2484. data/src/core/lib/gpr/env_linux.cc +0 -76
  2485. data/src/core/lib/gpr/env_posix.cc +0 -47
  2486. data/src/core/lib/gpr/env_windows.cc +0 -74
  2487. data/src/core/lib/gpr/murmur_hash.cc +0 -80
  2488. data/src/core/lib/gpr/murmur_hash.h +0 -29
  2489. data/src/core/lib/gpr/string_windows.h +0 -32
  2490. data/src/core/lib/gpr/tls.h +0 -68
  2491. data/src/core/lib/gpr/tls_gcc.h +0 -52
  2492. data/src/core/lib/gpr/tls_msvc.h +0 -52
  2493. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  2494. data/src/core/lib/gpr/tls_pthread.h +0 -56
  2495. data/src/core/lib/gprpp/arena.cc +0 -103
  2496. data/src/core/lib/gprpp/arena.h +0 -120
  2497. data/src/core/lib/gprpp/atomic.h +0 -104
  2498. data/src/core/lib/gprpp/map.h +0 -53
  2499. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  2500. data/src/core/lib/iomgr/error_internal.h +0 -61
  2501. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1650
  2502. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2503. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -183
  2504. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -175
  2505. data/src/core/lib/iomgr/executor/threadpool.cc +0 -137
  2506. data/src/core/lib/iomgr/executor/threadpool.h +0 -149
  2507. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2508. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2509. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  2510. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  2511. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  2512. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2513. data/src/core/lib/iomgr/parse_address.cc +0 -238
  2514. data/src/core/lib/iomgr/parse_address.h +0 -53
  2515. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
  2516. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  2517. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  2518. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  2519. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  2520. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2521. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  2522. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  2523. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -168
  2524. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2525. data/src/core/lib/iomgr/resource_quota.cc +0 -1016
  2526. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2527. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2528. data/src/core/lib/iomgr/sockaddr_utils.cc +0 -296
  2529. data/src/core/lib/iomgr/sockaddr_utils.h +0 -80
  2530. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  2531. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2532. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -160
  2533. data/src/core/lib/iomgr/tcp_custom.cc +0 -386
  2534. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2535. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -477
  2536. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2537. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  2538. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  2539. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2540. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2541. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2542. data/src/core/lib/iomgr/udp_server.cc +0 -748
  2543. data/src/core/lib/iomgr/udp_server.h +0 -104
  2544. data/src/core/lib/iomgr/work_serializer.cc +0 -155
  2545. data/src/core/lib/iomgr/work_serializer.h +0 -65
  2546. data/src/core/lib/profiling/basic_timers.cc +0 -293
  2547. data/src/core/lib/profiling/stap_timers.cc +0 -50
  2548. data/src/core/lib/profiling/timers.h +0 -94
  2549. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  2550. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  2551. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -42
  2552. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -68
  2553. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -93
  2554. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  2555. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -56
  2556. data/src/core/lib/security/authorization/mock_cel/statusor.h +0 -50
  2557. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2558. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +0 -171
  2559. data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -44
  2560. data/src/core/lib/slice/slice_intern.cc +0 -375
  2561. data/src/core/lib/slice/slice_utils.h +0 -200
  2562. data/src/core/lib/surface/init_secure.cc +0 -81
  2563. data/src/core/lib/transport/authority_override.cc +0 -38
  2564. data/src/core/lib/transport/authority_override.h +0 -32
  2565. data/src/core/lib/transport/byte_stream.cc +0 -158
  2566. data/src/core/lib/transport/byte_stream.h +0 -165
  2567. data/src/core/lib/transport/metadata.cc +0 -679
  2568. data/src/core/lib/transport/metadata.h +0 -446
  2569. data/src/core/lib/transport/static_metadata.cc +0 -1249
  2570. data/src/core/lib/transport/static_metadata.h +0 -604
  2571. data/src/core/lib/transport/status_metadata.cc +0 -61
  2572. data/src/core/lib/transport/status_metadata.h +0 -48
  2573. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  2574. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
  2575. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +0 -93
  2576. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +0 -130
  2577. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -49
  2578. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -261
  2579. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  2580. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2581. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
  2582. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
  2583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2584. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -192
  2585. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
  2586. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2587. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
  2588. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2589. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  2590. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  2591. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -3895
  2592. data/third_party/cares/cares/ares.h +0 -670
  2593. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2594. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2595. data/third_party/cares/cares/ares_create_query.c +0 -206
  2596. data/third_party/cares/cares/ares_data.c +0 -222
  2597. data/third_party/cares/cares/ares_data.h +0 -72
  2598. data/third_party/cares/cares/ares_dns.h +0 -103
  2599. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2600. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2601. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2602. data/third_party/cares/cares/ares_getenv.c +0 -30
  2603. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2604. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2605. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2606. data/third_party/cares/cares/ares_getopt.c +0 -122
  2607. data/third_party/cares/cares/ares_getopt.h +0 -53
  2608. data/third_party/cares/cares/ares_init.c +0 -2615
  2609. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2610. data/third_party/cares/cares/ares_library_init.c +0 -195
  2611. data/third_party/cares/cares/ares_library_init.h +0 -43
  2612. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2613. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2614. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2615. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2616. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2617. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2618. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2619. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2620. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2621. data/third_party/cares/cares/ares_private.h +0 -382
  2622. data/third_party/cares/cares/ares_process.c +0 -1473
  2623. data/third_party/cares/cares/ares_query.c +0 -186
  2624. data/third_party/cares/cares/ares_search.c +0 -323
  2625. data/third_party/cares/cares/ares_send.c +0 -137
  2626. data/third_party/cares/cares/ares_setup.h +0 -217
  2627. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2628. data/third_party/cares/cares/ares_version.h +0 -24
  2629. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2630. data/third_party/cares/cares/inet_ntop.c +0 -207
  2631. data/third_party/upb/upb/port.c +0 -26
  2632. data/third_party/upb/upb/table.int.h +0 -466
  2633. /data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  2634. /data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  2635. /data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  2636. /data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  2637. /data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  2638. /data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  2639. /data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  2640. /data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  2641. /data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  2642. /data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  2643. /data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  2644. /data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  2645. /data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  2646. /data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  2647. /data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  2648. /data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  2649. /data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  2650. /data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  2651. /data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  2652. /data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  2653. /data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  2654. /data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  2655. /data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  2656. /data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  2657. /data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  2658. /data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  2659. /data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  2660. /data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  2661. /data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  2662. /data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  2663. /data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  2664. /data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  2665. /data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  2666. /data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  2667. /data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  2668. /data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
@@ -0,0 +1,3269 @@
1
+ /*
2
+ * Copyright (c) 2009-2021, Google LLC
3
+ * All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions are met:
7
+ * * Redistributions of source code must retain the above copyright
8
+ * notice, this list of conditions and the following disclaimer.
9
+ * * Redistributions in binary form must reproduce the above copyright
10
+ * notice, this list of conditions and the following disclaimer in the
11
+ * documentation and/or other materials provided with the distribution.
12
+ * * Neither the name of Google LLC nor the
13
+ * names of its contributors may be used to endorse or promote products
14
+ * derived from this software without specific prior written permission.
15
+ *
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
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #include "upb/def.h"
29
+
30
+ #include <ctype.h>
31
+ #include <errno.h>
32
+ #include <setjmp.h>
33
+ #include <stdlib.h>
34
+ #include <string.h>
35
+
36
+ #include "google/protobuf/descriptor.upb.h"
37
+ #include "upb/mini_table.h"
38
+ #include "upb/reflection.h"
39
+
40
+ /* Must be last. */
41
+ #include "upb/port_def.inc"
42
+
43
+ typedef struct {
44
+ size_t len;
45
+ char str[1]; /* Null-terminated string data follows. */
46
+ } str_t;
47
+
48
+ /* The upb core does not generally have a concept of default instances. However
49
+ * for descriptor options we make an exception since the max size is known and
50
+ * modest (<200 bytes). All types can share a default instance since it is
51
+ * initialized to zeroes.
52
+ *
53
+ * We have to allocate an extra pointer for upb's internal metadata. */
54
+ static const char opt_default_buf[_UPB_MAXOPT_SIZE + sizeof(void*)] = {0};
55
+ static const char* opt_default = &opt_default_buf[sizeof(void*)];
56
+
57
+ struct upb_FieldDef {
58
+ const google_protobuf_FieldOptions* opts;
59
+ const upb_FileDef* file;
60
+ const upb_MessageDef* msgdef;
61
+ const char* full_name;
62
+ const char* json_name;
63
+ union {
64
+ int64_t sint;
65
+ uint64_t uint;
66
+ double dbl;
67
+ float flt;
68
+ bool boolean;
69
+ str_t* str;
70
+ } defaultval;
71
+ union {
72
+ const upb_OneofDef* oneof;
73
+ const upb_MessageDef* extension_scope;
74
+ } scope;
75
+ union {
76
+ const upb_MessageDef* msgdef;
77
+ const upb_EnumDef* enumdef;
78
+ const google_protobuf_FieldDescriptorProto* unresolved;
79
+ } sub;
80
+ uint32_t number_;
81
+ uint16_t index_;
82
+ uint16_t layout_index; /* Index into msgdef->layout->fields or file->exts */
83
+ bool has_default;
84
+ bool is_extension_;
85
+ bool packed_;
86
+ bool proto3_optional_;
87
+ bool has_json_name_;
88
+ upb_FieldType type_;
89
+ upb_Label label_;
90
+ #if UINTPTR_MAX == 0xffffffff
91
+ uint32_t padding; // Increase size to a multiple of 8.
92
+ #endif
93
+ };
94
+
95
+ struct upb_ExtensionRange {
96
+ const google_protobuf_ExtensionRangeOptions* opts;
97
+ int32_t start;
98
+ int32_t end;
99
+ };
100
+
101
+ struct upb_MessageDef {
102
+ const google_protobuf_MessageOptions* opts;
103
+ const upb_MiniTable* layout;
104
+ const upb_FileDef* file;
105
+ const upb_MessageDef* containing_type;
106
+ const char* full_name;
107
+
108
+ /* Tables for looking up fields by number and name. */
109
+ upb_inttable itof;
110
+ upb_strtable ntof;
111
+
112
+ /* All nested defs.
113
+ * MEM: We could save some space here by putting nested defs in a contiguous
114
+ * region and calculating counts from offsets or vice-versa. */
115
+ const upb_FieldDef* fields;
116
+ const upb_OneofDef* oneofs;
117
+ const upb_ExtensionRange* ext_ranges;
118
+ const upb_MessageDef* nested_msgs;
119
+ const upb_EnumDef* nested_enums;
120
+ const upb_FieldDef* nested_exts;
121
+ int field_count;
122
+ int real_oneof_count;
123
+ int oneof_count;
124
+ int ext_range_count;
125
+ int nested_msg_count;
126
+ int nested_enum_count;
127
+ int nested_ext_count;
128
+ bool in_message_set;
129
+ upb_WellKnown well_known_type;
130
+ #if UINTPTR_MAX == 0xffffffff
131
+ uint32_t padding; // Increase size to a multiple of 8.
132
+ #endif
133
+ };
134
+
135
+ struct upb_EnumDef {
136
+ const google_protobuf_EnumOptions* opts;
137
+ const upb_MiniTable_Enum* layout; // Only for proto2.
138
+ const upb_FileDef* file;
139
+ const upb_MessageDef* containing_type; // Could be merged with "file".
140
+ const char* full_name;
141
+ upb_strtable ntoi;
142
+ upb_inttable iton;
143
+ const upb_EnumValueDef* values;
144
+ int value_count;
145
+ int32_t defaultval;
146
+ #if UINTPTR_MAX == 0xffffffff
147
+ uint32_t padding; // Increase size to a multiple of 8.
148
+ #endif
149
+ };
150
+
151
+ struct upb_EnumValueDef {
152
+ const google_protobuf_EnumValueOptions* opts;
153
+ const upb_EnumDef* parent;
154
+ const char* full_name;
155
+ int32_t number;
156
+ };
157
+
158
+ struct upb_OneofDef {
159
+ const google_protobuf_OneofOptions* opts;
160
+ const upb_MessageDef* parent;
161
+ const char* full_name;
162
+ int field_count;
163
+ bool synthetic;
164
+ const upb_FieldDef** fields;
165
+ upb_strtable ntof;
166
+ upb_inttable itof;
167
+ #if UINTPTR_MAX == 0xffffffff
168
+ uint32_t padding; // Increase size to a multiple of 8.
169
+ #endif
170
+ };
171
+
172
+ struct upb_FileDef {
173
+ const google_protobuf_FileOptions* opts;
174
+ const char* name;
175
+ const char* package;
176
+
177
+ const upb_FileDef** deps;
178
+ const int32_t* public_deps;
179
+ const int32_t* weak_deps;
180
+ const upb_MessageDef* top_lvl_msgs;
181
+ const upb_EnumDef* top_lvl_enums;
182
+ const upb_FieldDef* top_lvl_exts;
183
+ const upb_ServiceDef* services;
184
+ const upb_MiniTable_Extension** ext_layouts;
185
+ const upb_DefPool* symtab;
186
+
187
+ int dep_count;
188
+ int public_dep_count;
189
+ int weak_dep_count;
190
+ int top_lvl_msg_count;
191
+ int top_lvl_enum_count;
192
+ int top_lvl_ext_count;
193
+ int service_count;
194
+ int ext_count; /* All exts in the file. */
195
+ upb_Syntax syntax;
196
+ };
197
+
198
+ struct upb_MethodDef {
199
+ const google_protobuf_MethodOptions* opts;
200
+ upb_ServiceDef* service;
201
+ const char* full_name;
202
+ const upb_MessageDef* input_type;
203
+ const upb_MessageDef* output_type;
204
+ int index;
205
+ bool client_streaming;
206
+ bool server_streaming;
207
+ };
208
+
209
+ struct upb_ServiceDef {
210
+ const google_protobuf_ServiceOptions* opts;
211
+ const upb_FileDef* file;
212
+ const char* full_name;
213
+ upb_MethodDef* methods;
214
+ int method_count;
215
+ int index;
216
+ };
217
+
218
+ struct upb_DefPool {
219
+ upb_Arena* arena;
220
+ upb_strtable syms; /* full_name -> packed def ptr */
221
+ upb_strtable files; /* file_name -> upb_FileDef* */
222
+ upb_inttable exts; /* upb_MiniTable_Extension* -> upb_FieldDef* */
223
+ upb_ExtensionRegistry* extreg;
224
+ size_t bytes_loaded;
225
+ };
226
+
227
+ /* Inside a symtab we store tagged pointers to specific def types. */
228
+ typedef enum {
229
+ UPB_DEFTYPE_MASK = 7,
230
+
231
+ /* Only inside symtab table. */
232
+ UPB_DEFTYPE_EXT = 0,
233
+ UPB_DEFTYPE_MSG = 1,
234
+ UPB_DEFTYPE_ENUM = 2,
235
+ UPB_DEFTYPE_ENUMVAL = 3,
236
+ UPB_DEFTYPE_SERVICE = 4,
237
+
238
+ /* Only inside message table. */
239
+ UPB_DEFTYPE_FIELD = 0,
240
+ UPB_DEFTYPE_ONEOF = 1,
241
+ UPB_DEFTYPE_FIELD_JSONNAME = 2,
242
+
243
+ /* Only inside file table. */
244
+ UPB_DEFTYPE_FILE = 0,
245
+ UPB_DEFTYPE_LAYOUT = 1
246
+ } upb_deftype_t;
247
+
248
+ #define FIELD_TYPE_UNSPECIFIED 0
249
+
250
+ static upb_deftype_t deftype(upb_value v) {
251
+ uintptr_t num = (uintptr_t)upb_value_getconstptr(v);
252
+ return num & UPB_DEFTYPE_MASK;
253
+ }
254
+
255
+ static const void* unpack_def(upb_value v, upb_deftype_t type) {
256
+ uintptr_t num = (uintptr_t)upb_value_getconstptr(v);
257
+ return (num & UPB_DEFTYPE_MASK) == type
258
+ ? (const void*)(num & ~UPB_DEFTYPE_MASK)
259
+ : NULL;
260
+ }
261
+
262
+ static upb_value pack_def(const void* ptr, upb_deftype_t type) {
263
+ // Our 3-bit pointer tagging requires all pointers to be multiples of 8.
264
+ // The arena will always yield 8-byte-aligned addresses, however we put
265
+ // the defs into arrays. For each element in the array to be 8-byte-aligned,
266
+ // the sizes of each def type must also be a multiple of 8.
267
+ //
268
+ // If any of these asserts fail, we need to add or remove padding on 32-bit
269
+ // machines (64-bit machines will have 8-byte alignment already due to
270
+ // pointers, which all of these structs have).
271
+ UPB_ASSERT((sizeof(upb_FieldDef) & UPB_DEFTYPE_MASK) == 0);
272
+ UPB_ASSERT((sizeof(upb_MessageDef) & UPB_DEFTYPE_MASK) == 0);
273
+ UPB_ASSERT((sizeof(upb_EnumDef) & UPB_DEFTYPE_MASK) == 0);
274
+ UPB_ASSERT((sizeof(upb_EnumValueDef) & UPB_DEFTYPE_MASK) == 0);
275
+ UPB_ASSERT((sizeof(upb_ServiceDef) & UPB_DEFTYPE_MASK) == 0);
276
+ UPB_ASSERT((sizeof(upb_OneofDef) & UPB_DEFTYPE_MASK) == 0);
277
+ uintptr_t num = (uintptr_t)ptr;
278
+ UPB_ASSERT((num & UPB_DEFTYPE_MASK) == 0);
279
+ num |= type;
280
+ return upb_value_constptr((const void*)num);
281
+ }
282
+
283
+ /* isalpha() etc. from <ctype.h> are locale-dependent, which we don't want. */
284
+ static bool upb_isbetween(uint8_t c, uint8_t low, uint8_t high) {
285
+ return c >= low && c <= high;
286
+ }
287
+
288
+ static char upb_ascii_lower(char ch) {
289
+ // Per ASCII this will lower-case a letter. If the result is a letter, the
290
+ // input was definitely a letter. If the output is not a letter, this may
291
+ // have transformed the character unpredictably.
292
+ return ch | 0x20;
293
+ }
294
+
295
+ static bool upb_isletter(char c) {
296
+ char lower = upb_ascii_lower(c);
297
+ return upb_isbetween(lower, 'a', 'z') || c == '_';
298
+ }
299
+
300
+ static bool upb_isalphanum(char c) {
301
+ return upb_isletter(c) || upb_isbetween(c, '0', '9');
302
+ }
303
+
304
+ static const char* shortdefname(const char* fullname) {
305
+ const char* p;
306
+
307
+ if (fullname == NULL) {
308
+ return NULL;
309
+ } else if ((p = strrchr(fullname, '.')) == NULL) {
310
+ /* No '.' in the name, return the full string. */
311
+ return fullname;
312
+ } else {
313
+ /* Return one past the last '.'. */
314
+ return p + 1;
315
+ }
316
+ }
317
+
318
+ /* All submessage fields are lower than all other fields.
319
+ * Secondly, fields are increasing in order. */
320
+ uint32_t field_rank(const upb_FieldDef* f) {
321
+ uint32_t ret = upb_FieldDef_Number(f);
322
+ const uint32_t high_bit = 1 << 30;
323
+ UPB_ASSERT(ret < high_bit);
324
+ if (!upb_FieldDef_IsSubMessage(f)) ret |= high_bit;
325
+ return ret;
326
+ }
327
+
328
+ int cmp_fields(const void* p1, const void* p2) {
329
+ const upb_FieldDef* f1 = *(upb_FieldDef* const*)p1;
330
+ const upb_FieldDef* f2 = *(upb_FieldDef* const*)p2;
331
+ return field_rank(f1) - field_rank(f2);
332
+ }
333
+
334
+ static void upb_Status_setoom(upb_Status* status) {
335
+ upb_Status_SetErrorMessage(status, "out of memory");
336
+ }
337
+
338
+ static void assign_msg_wellknowntype(upb_MessageDef* m) {
339
+ const char* name = upb_MessageDef_FullName(m);
340
+ if (name == NULL) {
341
+ m->well_known_type = kUpb_WellKnown_Unspecified;
342
+ return;
343
+ }
344
+ if (!strcmp(name, "google.protobuf.Any")) {
345
+ m->well_known_type = kUpb_WellKnown_Any;
346
+ } else if (!strcmp(name, "google.protobuf.FieldMask")) {
347
+ m->well_known_type = kUpb_WellKnown_FieldMask;
348
+ } else if (!strcmp(name, "google.protobuf.Duration")) {
349
+ m->well_known_type = kUpb_WellKnown_Duration;
350
+ } else if (!strcmp(name, "google.protobuf.Timestamp")) {
351
+ m->well_known_type = kUpb_WellKnown_Timestamp;
352
+ } else if (!strcmp(name, "google.protobuf.DoubleValue")) {
353
+ m->well_known_type = kUpb_WellKnown_DoubleValue;
354
+ } else if (!strcmp(name, "google.protobuf.FloatValue")) {
355
+ m->well_known_type = kUpb_WellKnown_FloatValue;
356
+ } else if (!strcmp(name, "google.protobuf.Int64Value")) {
357
+ m->well_known_type = kUpb_WellKnown_Int64Value;
358
+ } else if (!strcmp(name, "google.protobuf.UInt64Value")) {
359
+ m->well_known_type = kUpb_WellKnown_UInt64Value;
360
+ } else if (!strcmp(name, "google.protobuf.Int32Value")) {
361
+ m->well_known_type = kUpb_WellKnown_Int32Value;
362
+ } else if (!strcmp(name, "google.protobuf.UInt32Value")) {
363
+ m->well_known_type = kUpb_WellKnown_UInt32Value;
364
+ } else if (!strcmp(name, "google.protobuf.BoolValue")) {
365
+ m->well_known_type = kUpb_WellKnown_BoolValue;
366
+ } else if (!strcmp(name, "google.protobuf.StringValue")) {
367
+ m->well_known_type = kUpb_WellKnown_StringValue;
368
+ } else if (!strcmp(name, "google.protobuf.BytesValue")) {
369
+ m->well_known_type = kUpb_WellKnown_BytesValue;
370
+ } else if (!strcmp(name, "google.protobuf.Value")) {
371
+ m->well_known_type = kUpb_WellKnown_Value;
372
+ } else if (!strcmp(name, "google.protobuf.ListValue")) {
373
+ m->well_known_type = kUpb_WellKnown_ListValue;
374
+ } else if (!strcmp(name, "google.protobuf.Struct")) {
375
+ m->well_known_type = kUpb_WellKnown_Struct;
376
+ } else {
377
+ m->well_known_type = kUpb_WellKnown_Unspecified;
378
+ }
379
+ }
380
+
381
+ /* upb_EnumDef ****************************************************************/
382
+
383
+ const google_protobuf_EnumOptions* upb_EnumDef_Options(const upb_EnumDef* e) {
384
+ return e->opts;
385
+ }
386
+
387
+ bool upb_EnumDef_HasOptions(const upb_EnumDef* e) {
388
+ return e->opts != (void*)opt_default;
389
+ }
390
+
391
+ const char* upb_EnumDef_FullName(const upb_EnumDef* e) { return e->full_name; }
392
+
393
+ const char* upb_EnumDef_Name(const upb_EnumDef* e) {
394
+ return shortdefname(e->full_name);
395
+ }
396
+
397
+ const upb_FileDef* upb_EnumDef_File(const upb_EnumDef* e) { return e->file; }
398
+
399
+ const upb_MessageDef* upb_EnumDef_ContainingType(const upb_EnumDef* e) {
400
+ return e->containing_type;
401
+ }
402
+
403
+ int32_t upb_EnumDef_Default(const upb_EnumDef* e) {
404
+ UPB_ASSERT(upb_EnumDef_FindValueByNumber(e, e->defaultval));
405
+ return e->defaultval;
406
+ }
407
+
408
+ int upb_EnumDef_ValueCount(const upb_EnumDef* e) { return e->value_count; }
409
+
410
+ const upb_EnumValueDef* upb_EnumDef_FindValueByNameWithSize(
411
+ const upb_EnumDef* def, const char* name, size_t len) {
412
+ upb_value v;
413
+ return upb_strtable_lookup2(&def->ntoi, name, len, &v)
414
+ ? upb_value_getconstptr(v)
415
+ : NULL;
416
+ }
417
+
418
+ const upb_EnumValueDef* upb_EnumDef_FindValueByNumber(const upb_EnumDef* def,
419
+ int32_t num) {
420
+ upb_value v;
421
+ return upb_inttable_lookup(&def->iton, num, &v) ? upb_value_getconstptr(v)
422
+ : NULL;
423
+ }
424
+
425
+ bool upb_EnumDef_CheckNumber(const upb_EnumDef* e, int32_t num) {
426
+ // We could use upb_EnumDef_FindValueByNumber(e, num) != NULL, but we expect
427
+ // this to be faster (especially for small numbers).
428
+ return upb_MiniTable_Enum_CheckValue(e->layout, num);
429
+ }
430
+
431
+ const upb_EnumValueDef* upb_EnumDef_Value(const upb_EnumDef* e, int i) {
432
+ UPB_ASSERT(0 <= i && i < e->value_count);
433
+ return &e->values[i];
434
+ }
435
+
436
+ /* upb_EnumValueDef ***********************************************************/
437
+
438
+ const google_protobuf_EnumValueOptions* upb_EnumValueDef_Options(
439
+ const upb_EnumValueDef* e) {
440
+ return e->opts;
441
+ }
442
+
443
+ bool upb_EnumValueDef_HasOptions(const upb_EnumValueDef* e) {
444
+ return e->opts != (void*)opt_default;
445
+ }
446
+
447
+ const upb_EnumDef* upb_EnumValueDef_Enum(const upb_EnumValueDef* ev) {
448
+ return ev->parent;
449
+ }
450
+
451
+ const char* upb_EnumValueDef_FullName(const upb_EnumValueDef* ev) {
452
+ return ev->full_name;
453
+ }
454
+
455
+ const char* upb_EnumValueDef_Name(const upb_EnumValueDef* ev) {
456
+ return shortdefname(ev->full_name);
457
+ }
458
+
459
+ int32_t upb_EnumValueDef_Number(const upb_EnumValueDef* ev) {
460
+ return ev->number;
461
+ }
462
+
463
+ uint32_t upb_EnumValueDef_Index(const upb_EnumValueDef* ev) {
464
+ // Compute index in our parent's array.
465
+ return ev - ev->parent->values;
466
+ }
467
+
468
+ /* upb_ExtensionRange
469
+ * ***************************************************************/
470
+
471
+ const google_protobuf_ExtensionRangeOptions* upb_ExtensionRange_Options(
472
+ const upb_ExtensionRange* r) {
473
+ return r->opts;
474
+ }
475
+
476
+ bool upb_ExtensionRange_HasOptions(const upb_ExtensionRange* r) {
477
+ return r->opts != (void*)opt_default;
478
+ }
479
+
480
+ int32_t upb_ExtensionRange_Start(const upb_ExtensionRange* e) {
481
+ return e->start;
482
+ }
483
+
484
+ int32_t upb_ExtensionRange_End(const upb_ExtensionRange* e) { return e->end; }
485
+
486
+ /* upb_FieldDef ***************************************************************/
487
+
488
+ const google_protobuf_FieldOptions* upb_FieldDef_Options(
489
+ const upb_FieldDef* f) {
490
+ return f->opts;
491
+ }
492
+
493
+ bool upb_FieldDef_HasOptions(const upb_FieldDef* f) {
494
+ return f->opts != (void*)opt_default;
495
+ }
496
+
497
+ const char* upb_FieldDef_FullName(const upb_FieldDef* f) {
498
+ return f->full_name;
499
+ }
500
+
501
+ upb_CType upb_FieldDef_CType(const upb_FieldDef* f) {
502
+ switch (f->type_) {
503
+ case kUpb_FieldType_Double:
504
+ return kUpb_CType_Double;
505
+ case kUpb_FieldType_Float:
506
+ return kUpb_CType_Float;
507
+ case kUpb_FieldType_Int64:
508
+ case kUpb_FieldType_SInt64:
509
+ case kUpb_FieldType_SFixed64:
510
+ return kUpb_CType_Int64;
511
+ case kUpb_FieldType_Int32:
512
+ case kUpb_FieldType_SFixed32:
513
+ case kUpb_FieldType_SInt32:
514
+ return kUpb_CType_Int32;
515
+ case kUpb_FieldType_UInt64:
516
+ case kUpb_FieldType_Fixed64:
517
+ return kUpb_CType_UInt64;
518
+ case kUpb_FieldType_UInt32:
519
+ case kUpb_FieldType_Fixed32:
520
+ return kUpb_CType_UInt32;
521
+ case kUpb_FieldType_Enum:
522
+ return kUpb_CType_Enum;
523
+ case kUpb_FieldType_Bool:
524
+ return kUpb_CType_Bool;
525
+ case kUpb_FieldType_String:
526
+ return kUpb_CType_String;
527
+ case kUpb_FieldType_Bytes:
528
+ return kUpb_CType_Bytes;
529
+ case kUpb_FieldType_Group:
530
+ case kUpb_FieldType_Message:
531
+ return kUpb_CType_Message;
532
+ }
533
+ UPB_UNREACHABLE();
534
+ }
535
+
536
+ upb_FieldType upb_FieldDef_Type(const upb_FieldDef* f) { return f->type_; }
537
+
538
+ uint32_t upb_FieldDef_Index(const upb_FieldDef* f) { return f->index_; }
539
+
540
+ upb_Label upb_FieldDef_Label(const upb_FieldDef* f) { return f->label_; }
541
+
542
+ uint32_t upb_FieldDef_Number(const upb_FieldDef* f) { return f->number_; }
543
+
544
+ bool upb_FieldDef_IsExtension(const upb_FieldDef* f) {
545
+ return f->is_extension_;
546
+ }
547
+
548
+ bool upb_FieldDef_IsPacked(const upb_FieldDef* f) { return f->packed_; }
549
+
550
+ const char* upb_FieldDef_Name(const upb_FieldDef* f) {
551
+ return shortdefname(f->full_name);
552
+ }
553
+
554
+ const char* upb_FieldDef_JsonName(const upb_FieldDef* f) {
555
+ return f->json_name;
556
+ }
557
+
558
+ bool upb_FieldDef_HasJsonName(const upb_FieldDef* f) {
559
+ return f->has_json_name_;
560
+ }
561
+
562
+ const upb_FileDef* upb_FieldDef_File(const upb_FieldDef* f) { return f->file; }
563
+
564
+ const upb_MessageDef* upb_FieldDef_ContainingType(const upb_FieldDef* f) {
565
+ return f->msgdef;
566
+ }
567
+
568
+ const upb_MessageDef* upb_FieldDef_ExtensionScope(const upb_FieldDef* f) {
569
+ return f->is_extension_ ? f->scope.extension_scope : NULL;
570
+ }
571
+
572
+ const upb_OneofDef* upb_FieldDef_ContainingOneof(const upb_FieldDef* f) {
573
+ return f->is_extension_ ? NULL : f->scope.oneof;
574
+ }
575
+
576
+ const upb_OneofDef* upb_FieldDef_RealContainingOneof(const upb_FieldDef* f) {
577
+ const upb_OneofDef* oneof = upb_FieldDef_ContainingOneof(f);
578
+ if (!oneof || upb_OneofDef_IsSynthetic(oneof)) return NULL;
579
+ return oneof;
580
+ }
581
+
582
+ upb_MessageValue upb_FieldDef_Default(const upb_FieldDef* f) {
583
+ UPB_ASSERT(!upb_FieldDef_IsSubMessage(f));
584
+ upb_MessageValue ret;
585
+
586
+ switch (upb_FieldDef_CType(f)) {
587
+ case kUpb_CType_Bool:
588
+ return (upb_MessageValue){.bool_val = f->defaultval.boolean};
589
+ case kUpb_CType_Int64:
590
+ return (upb_MessageValue){.int64_val = f->defaultval.sint};
591
+ case kUpb_CType_UInt64:
592
+ return (upb_MessageValue){.uint64_val = f->defaultval.uint};
593
+ case kUpb_CType_Enum:
594
+ case kUpb_CType_Int32:
595
+ return (upb_MessageValue){.int32_val = (int32_t)f->defaultval.sint};
596
+ case kUpb_CType_UInt32:
597
+ return (upb_MessageValue){.uint32_val = (uint32_t)f->defaultval.uint};
598
+ case kUpb_CType_Float:
599
+ return (upb_MessageValue){.float_val = f->defaultval.flt};
600
+ case kUpb_CType_Double:
601
+ return (upb_MessageValue){.double_val = f->defaultval.dbl};
602
+ case kUpb_CType_String:
603
+ case kUpb_CType_Bytes: {
604
+ str_t* str = f->defaultval.str;
605
+ if (str) {
606
+ return (upb_MessageValue){
607
+ .str_val = (upb_StringView){.data = str->str, .size = str->len}};
608
+ } else {
609
+ return (upb_MessageValue){
610
+ .str_val = (upb_StringView){.data = NULL, .size = 0}};
611
+ }
612
+ }
613
+ default:
614
+ UPB_UNREACHABLE();
615
+ }
616
+
617
+ return ret;
618
+ }
619
+
620
+ const upb_MessageDef* upb_FieldDef_MessageSubDef(const upb_FieldDef* f) {
621
+ return upb_FieldDef_CType(f) == kUpb_CType_Message ? f->sub.msgdef : NULL;
622
+ }
623
+
624
+ const upb_EnumDef* upb_FieldDef_EnumSubDef(const upb_FieldDef* f) {
625
+ return upb_FieldDef_CType(f) == kUpb_CType_Enum ? f->sub.enumdef : NULL;
626
+ }
627
+
628
+ const upb_MiniTable_Field* upb_FieldDef_MiniTable(const upb_FieldDef* f) {
629
+ UPB_ASSERT(!upb_FieldDef_IsExtension(f));
630
+ return &f->msgdef->layout->fields[f->layout_index];
631
+ }
632
+
633
+ const upb_MiniTable_Extension* _upb_FieldDef_ExtensionMiniTable(
634
+ const upb_FieldDef* f) {
635
+ UPB_ASSERT(upb_FieldDef_IsExtension(f));
636
+ return f->file->ext_layouts[f->layout_index];
637
+ }
638
+
639
+ bool _upb_FieldDef_IsProto3Optional(const upb_FieldDef* f) {
640
+ return f->proto3_optional_;
641
+ }
642
+
643
+ bool upb_FieldDef_IsSubMessage(const upb_FieldDef* f) {
644
+ return upb_FieldDef_CType(f) == kUpb_CType_Message;
645
+ }
646
+
647
+ bool upb_FieldDef_IsString(const upb_FieldDef* f) {
648
+ return upb_FieldDef_CType(f) == kUpb_CType_String ||
649
+ upb_FieldDef_CType(f) == kUpb_CType_Bytes;
650
+ }
651
+
652
+ bool upb_FieldDef_IsOptional(const upb_FieldDef* f) {
653
+ return upb_FieldDef_Label(f) == kUpb_Label_Optional;
654
+ }
655
+
656
+ bool upb_FieldDef_IsRequired(const upb_FieldDef* f) {
657
+ return upb_FieldDef_Label(f) == kUpb_Label_Required;
658
+ }
659
+
660
+ bool upb_FieldDef_IsRepeated(const upb_FieldDef* f) {
661
+ return upb_FieldDef_Label(f) == kUpb_Label_Repeated;
662
+ }
663
+
664
+ bool upb_FieldDef_IsPrimitive(const upb_FieldDef* f) {
665
+ return !upb_FieldDef_IsString(f) && !upb_FieldDef_IsSubMessage(f);
666
+ }
667
+
668
+ bool upb_FieldDef_IsMap(const upb_FieldDef* f) {
669
+ return upb_FieldDef_IsRepeated(f) && upb_FieldDef_IsSubMessage(f) &&
670
+ upb_MessageDef_IsMapEntry(upb_FieldDef_MessageSubDef(f));
671
+ }
672
+
673
+ bool upb_FieldDef_HasDefault(const upb_FieldDef* f) { return f->has_default; }
674
+
675
+ bool upb_FieldDef_HasSubDef(const upb_FieldDef* f) {
676
+ return upb_FieldDef_IsSubMessage(f) ||
677
+ upb_FieldDef_CType(f) == kUpb_CType_Enum;
678
+ }
679
+
680
+ bool upb_FieldDef_HasPresence(const upb_FieldDef* f) {
681
+ if (upb_FieldDef_IsRepeated(f)) return false;
682
+ return upb_FieldDef_IsSubMessage(f) || upb_FieldDef_ContainingOneof(f) ||
683
+ f->file->syntax == kUpb_Syntax_Proto2;
684
+ }
685
+
686
+ static bool between(int32_t x, int32_t low, int32_t high) {
687
+ return x >= low && x <= high;
688
+ }
689
+
690
+ bool upb_FieldDef_checklabel(int32_t label) { return between(label, 1, 3); }
691
+ bool upb_FieldDef_checktype(int32_t type) { return between(type, 1, 11); }
692
+ bool upb_FieldDef_checkintfmt(int32_t fmt) { return between(fmt, 1, 3); }
693
+
694
+ bool upb_FieldDef_checkdescriptortype(int32_t type) {
695
+ return between(type, 1, 18);
696
+ }
697
+
698
+ /* upb_MessageDef
699
+ * *****************************************************************/
700
+
701
+ const google_protobuf_MessageOptions* upb_MessageDef_Options(
702
+ const upb_MessageDef* m) {
703
+ return m->opts;
704
+ }
705
+
706
+ bool upb_MessageDef_HasOptions(const upb_MessageDef* m) {
707
+ return m->opts != (void*)opt_default;
708
+ }
709
+
710
+ const char* upb_MessageDef_FullName(const upb_MessageDef* m) {
711
+ return m->full_name;
712
+ }
713
+
714
+ const upb_FileDef* upb_MessageDef_File(const upb_MessageDef* m) {
715
+ return m->file;
716
+ }
717
+
718
+ const upb_MessageDef* upb_MessageDef_ContainingType(const upb_MessageDef* m) {
719
+ return m->containing_type;
720
+ }
721
+
722
+ const char* upb_MessageDef_Name(const upb_MessageDef* m) {
723
+ return shortdefname(m->full_name);
724
+ }
725
+
726
+ upb_Syntax upb_MessageDef_Syntax(const upb_MessageDef* m) {
727
+ return m->file->syntax;
728
+ }
729
+
730
+ const upb_FieldDef* upb_MessageDef_FindFieldByNumber(const upb_MessageDef* m,
731
+ uint32_t i) {
732
+ upb_value val;
733
+ return upb_inttable_lookup(&m->itof, i, &val) ? upb_value_getconstptr(val)
734
+ : NULL;
735
+ }
736
+
737
+ const upb_FieldDef* upb_MessageDef_FindFieldByNameWithSize(
738
+ const upb_MessageDef* m, const char* name, size_t len) {
739
+ upb_value val;
740
+
741
+ if (!upb_strtable_lookup2(&m->ntof, name, len, &val)) {
742
+ return NULL;
743
+ }
744
+
745
+ return unpack_def(val, UPB_DEFTYPE_FIELD);
746
+ }
747
+
748
+ const upb_OneofDef* upb_MessageDef_FindOneofByNameWithSize(
749
+ const upb_MessageDef* m, const char* name, size_t len) {
750
+ upb_value val;
751
+
752
+ if (!upb_strtable_lookup2(&m->ntof, name, len, &val)) {
753
+ return NULL;
754
+ }
755
+
756
+ return unpack_def(val, UPB_DEFTYPE_ONEOF);
757
+ }
758
+
759
+ bool upb_MessageDef_FindByNameWithSize(const upb_MessageDef* m,
760
+ const char* name, size_t len,
761
+ const upb_FieldDef** out_f,
762
+ const upb_OneofDef** out_o) {
763
+ upb_value val;
764
+
765
+ if (!upb_strtable_lookup2(&m->ntof, name, len, &val)) {
766
+ return false;
767
+ }
768
+
769
+ const upb_FieldDef* f = unpack_def(val, UPB_DEFTYPE_FIELD);
770
+ const upb_OneofDef* o = unpack_def(val, UPB_DEFTYPE_ONEOF);
771
+ if (out_f) *out_f = f;
772
+ if (out_o) *out_o = o;
773
+ return f || o; /* False if this was a JSON name. */
774
+ }
775
+
776
+ const upb_FieldDef* upb_MessageDef_FindByJsonNameWithSize(
777
+ const upb_MessageDef* m, const char* name, size_t len) {
778
+ upb_value val;
779
+ const upb_FieldDef* f;
780
+
781
+ if (!upb_strtable_lookup2(&m->ntof, name, len, &val)) {
782
+ return NULL;
783
+ }
784
+
785
+ f = unpack_def(val, UPB_DEFTYPE_FIELD);
786
+ if (!f) f = unpack_def(val, UPB_DEFTYPE_FIELD_JSONNAME);
787
+
788
+ return f;
789
+ }
790
+
791
+ int upb_MessageDef_numfields(const upb_MessageDef* m) { return m->field_count; }
792
+
793
+ int upb_MessageDef_numoneofs(const upb_MessageDef* m) { return m->oneof_count; }
794
+
795
+ int upb_MessageDef_numrealoneofs(const upb_MessageDef* m) {
796
+ return m->real_oneof_count;
797
+ }
798
+
799
+ int upb_MessageDef_ExtensionRangeCount(const upb_MessageDef* m) {
800
+ return m->ext_range_count;
801
+ }
802
+
803
+ int upb_MessageDef_FieldCount(const upb_MessageDef* m) {
804
+ return m->field_count;
805
+ }
806
+
807
+ int upb_MessageDef_OneofCount(const upb_MessageDef* m) {
808
+ return m->oneof_count;
809
+ }
810
+
811
+ int upb_MessageDef_NestedMessageCount(const upb_MessageDef* m) {
812
+ return m->nested_msg_count;
813
+ }
814
+
815
+ int upb_MessageDef_NestedEnumCount(const upb_MessageDef* m) {
816
+ return m->nested_enum_count;
817
+ }
818
+
819
+ int upb_MessageDef_NestedExtensionCount(const upb_MessageDef* m) {
820
+ return m->nested_ext_count;
821
+ }
822
+
823
+ int upb_MessageDef_realoneofcount(const upb_MessageDef* m) {
824
+ return m->real_oneof_count;
825
+ }
826
+
827
+ const upb_MiniTable* upb_MessageDef_MiniTable(const upb_MessageDef* m) {
828
+ return m->layout;
829
+ }
830
+
831
+ const upb_ExtensionRange* upb_MessageDef_ExtensionRange(const upb_MessageDef* m,
832
+ int i) {
833
+ UPB_ASSERT(0 <= i && i < m->ext_range_count);
834
+ return &m->ext_ranges[i];
835
+ }
836
+
837
+ const upb_FieldDef* upb_MessageDef_Field(const upb_MessageDef* m, int i) {
838
+ UPB_ASSERT(0 <= i && i < m->field_count);
839
+ return &m->fields[i];
840
+ }
841
+
842
+ const upb_OneofDef* upb_MessageDef_Oneof(const upb_MessageDef* m, int i) {
843
+ UPB_ASSERT(0 <= i && i < m->oneof_count);
844
+ return &m->oneofs[i];
845
+ }
846
+
847
+ const upb_MessageDef* upb_MessageDef_NestedMessage(const upb_MessageDef* m,
848
+ int i) {
849
+ UPB_ASSERT(0 <= i && i < m->nested_msg_count);
850
+ return &m->nested_msgs[i];
851
+ }
852
+
853
+ const upb_EnumDef* upb_MessageDef_NestedEnum(const upb_MessageDef* m, int i) {
854
+ UPB_ASSERT(0 <= i && i < m->nested_enum_count);
855
+ return &m->nested_enums[i];
856
+ }
857
+
858
+ const upb_FieldDef* upb_MessageDef_NestedExtension(const upb_MessageDef* m,
859
+ int i) {
860
+ UPB_ASSERT(0 <= i && i < m->nested_ext_count);
861
+ return &m->nested_exts[i];
862
+ }
863
+
864
+ upb_WellKnown upb_MessageDef_WellKnownType(const upb_MessageDef* m) {
865
+ return m->well_known_type;
866
+ }
867
+
868
+ /* upb_OneofDef ***************************************************************/
869
+
870
+ const google_protobuf_OneofOptions* upb_OneofDef_Options(
871
+ const upb_OneofDef* o) {
872
+ return o->opts;
873
+ }
874
+
875
+ bool upb_OneofDef_HasOptions(const upb_OneofDef* o) {
876
+ return o->opts != (void*)opt_default;
877
+ }
878
+
879
+ const char* upb_OneofDef_Name(const upb_OneofDef* o) {
880
+ return shortdefname(o->full_name);
881
+ }
882
+
883
+ const upb_MessageDef* upb_OneofDef_ContainingType(const upb_OneofDef* o) {
884
+ return o->parent;
885
+ }
886
+
887
+ int upb_OneofDef_FieldCount(const upb_OneofDef* o) { return o->field_count; }
888
+
889
+ const upb_FieldDef* upb_OneofDef_Field(const upb_OneofDef* o, int i) {
890
+ UPB_ASSERT(i < o->field_count);
891
+ return o->fields[i];
892
+ }
893
+
894
+ int upb_OneofDef_numfields(const upb_OneofDef* o) { return o->field_count; }
895
+
896
+ uint32_t upb_OneofDef_Index(const upb_OneofDef* o) {
897
+ // Compute index in our parent's array.
898
+ return o - o->parent->oneofs;
899
+ }
900
+
901
+ bool upb_OneofDef_IsSynthetic(const upb_OneofDef* o) { return o->synthetic; }
902
+
903
+ const upb_FieldDef* upb_OneofDef_LookupNameWithSize(const upb_OneofDef* o,
904
+ const char* name,
905
+ size_t length) {
906
+ upb_value val;
907
+ return upb_strtable_lookup2(&o->ntof, name, length, &val)
908
+ ? upb_value_getptr(val)
909
+ : NULL;
910
+ }
911
+
912
+ const upb_FieldDef* upb_OneofDef_LookupNumber(const upb_OneofDef* o,
913
+ uint32_t num) {
914
+ upb_value val;
915
+ return upb_inttable_lookup(&o->itof, num, &val) ? upb_value_getptr(val)
916
+ : NULL;
917
+ }
918
+
919
+ /* upb_FileDef ****************************************************************/
920
+
921
+ const google_protobuf_FileOptions* upb_FileDef_Options(const upb_FileDef* f) {
922
+ return f->opts;
923
+ }
924
+
925
+ bool upb_FileDef_HasOptions(const upb_FileDef* f) {
926
+ return f->opts != (void*)opt_default;
927
+ }
928
+
929
+ const char* upb_FileDef_Name(const upb_FileDef* f) { return f->name; }
930
+
931
+ const char* upb_FileDef_Package(const upb_FileDef* f) { return f->package; }
932
+
933
+ upb_Syntax upb_FileDef_Syntax(const upb_FileDef* f) { return f->syntax; }
934
+
935
+ int upb_FileDef_TopLevelMessageCount(const upb_FileDef* f) {
936
+ return f->top_lvl_msg_count;
937
+ }
938
+
939
+ int upb_FileDef_DependencyCount(const upb_FileDef* f) { return f->dep_count; }
940
+
941
+ int upb_FileDef_PublicDependencyCount(const upb_FileDef* f) {
942
+ return f->public_dep_count;
943
+ }
944
+
945
+ int upb_FileDef_WeakDependencyCount(const upb_FileDef* f) {
946
+ return f->weak_dep_count;
947
+ }
948
+
949
+ const int32_t* _upb_FileDef_PublicDependencyIndexes(const upb_FileDef* f) {
950
+ return f->public_deps;
951
+ }
952
+
953
+ const int32_t* _upb_FileDef_WeakDependencyIndexes(const upb_FileDef* f) {
954
+ return f->weak_deps;
955
+ }
956
+
957
+ int upb_FileDef_TopLevelEnumCount(const upb_FileDef* f) {
958
+ return f->top_lvl_enum_count;
959
+ }
960
+
961
+ int upb_FileDef_TopLevelExtensionCount(const upb_FileDef* f) {
962
+ return f->top_lvl_ext_count;
963
+ }
964
+
965
+ int upb_FileDef_ServiceCount(const upb_FileDef* f) { return f->service_count; }
966
+
967
+ const upb_FileDef* upb_FileDef_Dependency(const upb_FileDef* f, int i) {
968
+ UPB_ASSERT(0 <= i && i < f->dep_count);
969
+ return f->deps[i];
970
+ }
971
+
972
+ const upb_FileDef* upb_FileDef_PublicDependency(const upb_FileDef* f, int i) {
973
+ UPB_ASSERT(0 <= i && i < f->public_dep_count);
974
+ return f->deps[f->public_deps[i]];
975
+ }
976
+
977
+ const upb_FileDef* upb_FileDef_WeakDependency(const upb_FileDef* f, int i) {
978
+ UPB_ASSERT(0 <= i && i < f->public_dep_count);
979
+ return f->deps[f->weak_deps[i]];
980
+ }
981
+
982
+ const upb_MessageDef* upb_FileDef_TopLevelMessage(const upb_FileDef* f, int i) {
983
+ UPB_ASSERT(0 <= i && i < f->top_lvl_msg_count);
984
+ return &f->top_lvl_msgs[i];
985
+ }
986
+
987
+ const upb_EnumDef* upb_FileDef_TopLevelEnum(const upb_FileDef* f, int i) {
988
+ UPB_ASSERT(0 <= i && i < f->top_lvl_enum_count);
989
+ return &f->top_lvl_enums[i];
990
+ }
991
+
992
+ const upb_FieldDef* upb_FileDef_TopLevelExtension(const upb_FileDef* f, int i) {
993
+ UPB_ASSERT(0 <= i && i < f->top_lvl_ext_count);
994
+ return &f->top_lvl_exts[i];
995
+ }
996
+
997
+ const upb_ServiceDef* upb_FileDef_Service(const upb_FileDef* f, int i) {
998
+ UPB_ASSERT(0 <= i && i < f->service_count);
999
+ return &f->services[i];
1000
+ }
1001
+
1002
+ const upb_DefPool* upb_FileDef_Pool(const upb_FileDef* f) { return f->symtab; }
1003
+
1004
+ /* upb_MethodDef **************************************************************/
1005
+
1006
+ const google_protobuf_MethodOptions* upb_MethodDef_Options(
1007
+ const upb_MethodDef* m) {
1008
+ return m->opts;
1009
+ }
1010
+
1011
+ bool upb_MethodDef_HasOptions(const upb_MethodDef* m) {
1012
+ return m->opts != (void*)opt_default;
1013
+ }
1014
+
1015
+ const char* upb_MethodDef_FullName(const upb_MethodDef* m) {
1016
+ return m->full_name;
1017
+ }
1018
+
1019
+ int upb_MethodDef_Index(const upb_MethodDef* m) { return m->index; }
1020
+
1021
+ const char* upb_MethodDef_Name(const upb_MethodDef* m) {
1022
+ return shortdefname(m->full_name);
1023
+ }
1024
+
1025
+ const upb_ServiceDef* upb_MethodDef_Service(const upb_MethodDef* m) {
1026
+ return m->service;
1027
+ }
1028
+
1029
+ const upb_MessageDef* upb_MethodDef_InputType(const upb_MethodDef* m) {
1030
+ return m->input_type;
1031
+ }
1032
+
1033
+ const upb_MessageDef* upb_MethodDef_OutputType(const upb_MethodDef* m) {
1034
+ return m->output_type;
1035
+ }
1036
+
1037
+ bool upb_MethodDef_ClientStreaming(const upb_MethodDef* m) {
1038
+ return m->client_streaming;
1039
+ }
1040
+
1041
+ bool upb_MethodDef_ServerStreaming(const upb_MethodDef* m) {
1042
+ return m->server_streaming;
1043
+ }
1044
+
1045
+ /* upb_ServiceDef *************************************************************/
1046
+
1047
+ const google_protobuf_ServiceOptions* upb_ServiceDef_Options(
1048
+ const upb_ServiceDef* s) {
1049
+ return s->opts;
1050
+ }
1051
+
1052
+ bool upb_ServiceDef_HasOptions(const upb_ServiceDef* s) {
1053
+ return s->opts != (void*)opt_default;
1054
+ }
1055
+
1056
+ const char* upb_ServiceDef_FullName(const upb_ServiceDef* s) {
1057
+ return s->full_name;
1058
+ }
1059
+
1060
+ const char* upb_ServiceDef_Name(const upb_ServiceDef* s) {
1061
+ return shortdefname(s->full_name);
1062
+ }
1063
+
1064
+ int upb_ServiceDef_Index(const upb_ServiceDef* s) { return s->index; }
1065
+
1066
+ const upb_FileDef* upb_ServiceDef_File(const upb_ServiceDef* s) {
1067
+ return s->file;
1068
+ }
1069
+
1070
+ int upb_ServiceDef_MethodCount(const upb_ServiceDef* s) {
1071
+ return s->method_count;
1072
+ }
1073
+
1074
+ const upb_MethodDef* upb_ServiceDef_Method(const upb_ServiceDef* s, int i) {
1075
+ return i < 0 || i >= s->method_count ? NULL : &s->methods[i];
1076
+ }
1077
+
1078
+ const upb_MethodDef* upb_ServiceDef_FindMethodByName(const upb_ServiceDef* s,
1079
+ const char* name) {
1080
+ for (int i = 0; i < s->method_count; i++) {
1081
+ if (strcmp(name, upb_MethodDef_Name(&s->methods[i])) == 0) {
1082
+ return &s->methods[i];
1083
+ }
1084
+ }
1085
+ return NULL;
1086
+ }
1087
+
1088
+ /* upb_DefPool ****************************************************************/
1089
+
1090
+ void upb_DefPool_Free(upb_DefPool* s) {
1091
+ upb_Arena_Free(s->arena);
1092
+ upb_gfree(s);
1093
+ }
1094
+
1095
+ upb_DefPool* upb_DefPool_New(void) {
1096
+ upb_DefPool* s = upb_gmalloc(sizeof(*s));
1097
+
1098
+ if (!s) {
1099
+ return NULL;
1100
+ }
1101
+
1102
+ s->arena = upb_Arena_New();
1103
+ s->bytes_loaded = 0;
1104
+
1105
+ if (!upb_strtable_init(&s->syms, 32, s->arena) ||
1106
+ !upb_strtable_init(&s->files, 4, s->arena) ||
1107
+ !upb_inttable_init(&s->exts, s->arena)) {
1108
+ goto err;
1109
+ }
1110
+
1111
+ s->extreg = upb_ExtensionRegistry_New(s->arena);
1112
+ if (!s->extreg) goto err;
1113
+ return s;
1114
+
1115
+ err:
1116
+ upb_Arena_Free(s->arena);
1117
+ upb_gfree(s);
1118
+ return NULL;
1119
+ }
1120
+
1121
+ static const void* symtab_lookup(const upb_DefPool* s, const char* sym,
1122
+ upb_deftype_t type) {
1123
+ upb_value v;
1124
+ return upb_strtable_lookup(&s->syms, sym, &v) ? unpack_def(v, type) : NULL;
1125
+ }
1126
+
1127
+ static const void* symtab_lookup2(const upb_DefPool* s, const char* sym,
1128
+ size_t size, upb_deftype_t type) {
1129
+ upb_value v;
1130
+ return upb_strtable_lookup2(&s->syms, sym, size, &v) ? unpack_def(v, type)
1131
+ : NULL;
1132
+ }
1133
+
1134
+ const upb_MessageDef* upb_DefPool_FindMessageByName(const upb_DefPool* s,
1135
+ const char* sym) {
1136
+ return symtab_lookup(s, sym, UPB_DEFTYPE_MSG);
1137
+ }
1138
+
1139
+ const upb_MessageDef* upb_DefPool_FindMessageByNameWithSize(
1140
+ const upb_DefPool* s, const char* sym, size_t len) {
1141
+ return symtab_lookup2(s, sym, len, UPB_DEFTYPE_MSG);
1142
+ }
1143
+
1144
+ const upb_EnumDef* upb_DefPool_FindEnumByName(const upb_DefPool* s,
1145
+ const char* sym) {
1146
+ return symtab_lookup(s, sym, UPB_DEFTYPE_ENUM);
1147
+ }
1148
+
1149
+ const upb_EnumValueDef* upb_DefPool_FindEnumByNameval(const upb_DefPool* s,
1150
+ const char* sym) {
1151
+ return symtab_lookup(s, sym, UPB_DEFTYPE_ENUMVAL);
1152
+ }
1153
+
1154
+ const upb_FileDef* upb_DefPool_FindFileByName(const upb_DefPool* s,
1155
+ const char* name) {
1156
+ upb_value v;
1157
+ return upb_strtable_lookup(&s->files, name, &v)
1158
+ ? unpack_def(v, UPB_DEFTYPE_FILE)
1159
+ : NULL;
1160
+ }
1161
+
1162
+ const upb_FileDef* upb_DefPool_FindFileByNameWithSize(const upb_DefPool* s,
1163
+ const char* name,
1164
+ size_t len) {
1165
+ upb_value v;
1166
+ return upb_strtable_lookup2(&s->files, name, len, &v)
1167
+ ? unpack_def(v, UPB_DEFTYPE_FILE)
1168
+ : NULL;
1169
+ }
1170
+
1171
+ const upb_FieldDef* upb_DefPool_FindExtensionByNameWithSize(
1172
+ const upb_DefPool* s, const char* name, size_t size) {
1173
+ upb_value v;
1174
+ if (!upb_strtable_lookup2(&s->syms, name, size, &v)) return NULL;
1175
+
1176
+ switch (deftype(v)) {
1177
+ case UPB_DEFTYPE_FIELD:
1178
+ return unpack_def(v, UPB_DEFTYPE_FIELD);
1179
+ case UPB_DEFTYPE_MSG: {
1180
+ const upb_MessageDef* m = unpack_def(v, UPB_DEFTYPE_MSG);
1181
+ return m->in_message_set ? &m->nested_exts[0] : NULL;
1182
+ }
1183
+ default:
1184
+ break;
1185
+ }
1186
+
1187
+ return NULL;
1188
+ }
1189
+
1190
+ const upb_FieldDef* upb_DefPool_FindExtensionByName(const upb_DefPool* s,
1191
+ const char* sym) {
1192
+ return upb_DefPool_FindExtensionByNameWithSize(s, sym, strlen(sym));
1193
+ }
1194
+
1195
+ const upb_ServiceDef* upb_DefPool_FindServiceByName(const upb_DefPool* s,
1196
+ const char* name) {
1197
+ return symtab_lookup(s, name, UPB_DEFTYPE_SERVICE);
1198
+ }
1199
+
1200
+ const upb_ServiceDef* upb_DefPool_FindServiceByNameWithSize(
1201
+ const upb_DefPool* s, const char* name, size_t size) {
1202
+ return symtab_lookup2(s, name, size, UPB_DEFTYPE_SERVICE);
1203
+ }
1204
+
1205
+ const upb_FileDef* upb_DefPool_FindFileContainingSymbol(const upb_DefPool* s,
1206
+ const char* name) {
1207
+ upb_value v;
1208
+ // TODO(haberman): non-extension fields and oneofs.
1209
+ if (upb_strtable_lookup(&s->syms, name, &v)) {
1210
+ switch (deftype(v)) {
1211
+ case UPB_DEFTYPE_EXT: {
1212
+ const upb_FieldDef* f = unpack_def(v, UPB_DEFTYPE_EXT);
1213
+ return upb_FieldDef_File(f);
1214
+ }
1215
+ case UPB_DEFTYPE_MSG: {
1216
+ const upb_MessageDef* m = unpack_def(v, UPB_DEFTYPE_MSG);
1217
+ return upb_MessageDef_File(m);
1218
+ }
1219
+ case UPB_DEFTYPE_ENUM: {
1220
+ const upb_EnumDef* e = unpack_def(v, UPB_DEFTYPE_ENUM);
1221
+ return upb_EnumDef_File(e);
1222
+ }
1223
+ case UPB_DEFTYPE_ENUMVAL: {
1224
+ const upb_EnumValueDef* ev = unpack_def(v, UPB_DEFTYPE_ENUMVAL);
1225
+ return upb_EnumDef_File(upb_EnumValueDef_Enum(ev));
1226
+ }
1227
+ case UPB_DEFTYPE_SERVICE: {
1228
+ const upb_ServiceDef* service = unpack_def(v, UPB_DEFTYPE_SERVICE);
1229
+ return upb_ServiceDef_File(service);
1230
+ }
1231
+ default:
1232
+ UPB_UNREACHABLE();
1233
+ }
1234
+ }
1235
+
1236
+ const char* last_dot = strrchr(name, '.');
1237
+ if (last_dot) {
1238
+ const upb_MessageDef* parent =
1239
+ upb_DefPool_FindMessageByNameWithSize(s, name, last_dot - name);
1240
+ if (parent) {
1241
+ const char* shortname = last_dot + 1;
1242
+ if (upb_MessageDef_FindByNameWithSize(parent, shortname,
1243
+ strlen(shortname), NULL, NULL)) {
1244
+ return upb_MessageDef_File(parent);
1245
+ }
1246
+ }
1247
+ }
1248
+
1249
+ return NULL;
1250
+ }
1251
+
1252
+ /* Code to build defs from descriptor protos. *********************************/
1253
+
1254
+ /* There is a question of how much validation to do here. It will be difficult
1255
+ * to perfectly match the amount of validation performed by proto2. But since
1256
+ * this code is used to directly build defs from Ruby (for example) we do need
1257
+ * to validate important constraints like uniqueness of names and numbers. */
1258
+
1259
+ #define CHK_OOM(x) \
1260
+ if (!(x)) { \
1261
+ symtab_oomerr(ctx); \
1262
+ }
1263
+
1264
+ typedef struct {
1265
+ upb_DefPool* symtab;
1266
+ upb_FileDef* file; /* File we are building. */
1267
+ upb_Arena* arena; /* Allocate defs here. */
1268
+ upb_Arena* tmp_arena; /* For temporary allocations. */
1269
+ const upb_MiniTable_File* layout; /* NULL if we should build layouts. */
1270
+ int enum_count; /* Count of enums built so far. */
1271
+ int msg_count; /* Count of messages built so far. */
1272
+ int ext_count; /* Count of extensions built so far. */
1273
+ upb_Status* status; /* Record errors here. */
1274
+ jmp_buf err; /* longjmp() on error. */
1275
+ } symtab_addctx;
1276
+
1277
+ UPB_NORETURN UPB_NOINLINE UPB_PRINTF(2, 3) static void symtab_errf(
1278
+ symtab_addctx* ctx, const char* fmt, ...) {
1279
+ va_list argp;
1280
+ va_start(argp, fmt);
1281
+ upb_Status_VSetErrorFormat(ctx->status, fmt, argp);
1282
+ va_end(argp);
1283
+ UPB_LONGJMP(ctx->err, 1);
1284
+ }
1285
+
1286
+ UPB_NORETURN UPB_NOINLINE static void symtab_oomerr(symtab_addctx* ctx) {
1287
+ upb_Status_setoom(ctx->status);
1288
+ UPB_LONGJMP(ctx->err, 1);
1289
+ }
1290
+
1291
+ void* symtab_alloc(symtab_addctx* ctx, size_t bytes) {
1292
+ if (bytes == 0) return NULL;
1293
+ void* ret = upb_Arena_Malloc(ctx->arena, bytes);
1294
+ if (!ret) symtab_oomerr(ctx);
1295
+ return ret;
1296
+ }
1297
+
1298
+ // We want to copy the options verbatim into the destination options proto.
1299
+ // We use serialize+parse as our deep copy.
1300
+ #define SET_OPTIONS(target, desc_type, options_type, proto) \
1301
+ if (google_protobuf_##desc_type##_has_options(proto)) { \
1302
+ size_t size; \
1303
+ char* pb = google_protobuf_##options_type##_serialize( \
1304
+ google_protobuf_##desc_type##_options(proto), ctx->tmp_arena, &size); \
1305
+ CHK_OOM(pb); \
1306
+ target = google_protobuf_##options_type##_parse(pb, size, ctx->arena); \
1307
+ CHK_OOM(target); \
1308
+ } else { \
1309
+ target = (const google_protobuf_##options_type*)opt_default; \
1310
+ }
1311
+
1312
+ static void check_ident(symtab_addctx* ctx, upb_StringView name, bool full) {
1313
+ const char* str = name.data;
1314
+ size_t len = name.size;
1315
+ bool start = true;
1316
+ size_t i;
1317
+ for (i = 0; i < len; i++) {
1318
+ char c = str[i];
1319
+ if (c == '.') {
1320
+ if (start || !full) {
1321
+ symtab_errf(ctx, "invalid name: unexpected '.' (%.*s)", (int)len, str);
1322
+ }
1323
+ start = true;
1324
+ } else if (start) {
1325
+ if (!upb_isletter(c)) {
1326
+ symtab_errf(
1327
+ ctx,
1328
+ "invalid name: path components must start with a letter (%.*s)",
1329
+ (int)len, str);
1330
+ }
1331
+ start = false;
1332
+ } else {
1333
+ if (!upb_isalphanum(c)) {
1334
+ symtab_errf(ctx, "invalid name: non-alphanumeric character (%.*s)",
1335
+ (int)len, str);
1336
+ }
1337
+ }
1338
+ }
1339
+ if (start) {
1340
+ symtab_errf(ctx, "invalid name: empty part (%.*s)", (int)len, str);
1341
+ }
1342
+ }
1343
+
1344
+ static size_t div_round_up(size_t n, size_t d) { return (n + d - 1) / d; }
1345
+
1346
+ static size_t upb_MessageValue_sizeof(upb_CType type) {
1347
+ switch (type) {
1348
+ case kUpb_CType_Double:
1349
+ case kUpb_CType_Int64:
1350
+ case kUpb_CType_UInt64:
1351
+ return 8;
1352
+ case kUpb_CType_Enum:
1353
+ case kUpb_CType_Int32:
1354
+ case kUpb_CType_UInt32:
1355
+ case kUpb_CType_Float:
1356
+ return 4;
1357
+ case kUpb_CType_Bool:
1358
+ return 1;
1359
+ case kUpb_CType_Message:
1360
+ return sizeof(void*);
1361
+ case kUpb_CType_Bytes:
1362
+ case kUpb_CType_String:
1363
+ return sizeof(upb_StringView);
1364
+ }
1365
+ UPB_UNREACHABLE();
1366
+ }
1367
+
1368
+ static uint8_t upb_msg_fielddefsize(const upb_FieldDef* f) {
1369
+ if (upb_MessageDef_IsMapEntry(upb_FieldDef_ContainingType(f))) {
1370
+ upb_MapEntry ent;
1371
+ UPB_ASSERT(sizeof(ent.k) == sizeof(ent.v));
1372
+ return sizeof(ent.k);
1373
+ } else if (upb_FieldDef_IsRepeated(f)) {
1374
+ return sizeof(void*);
1375
+ } else {
1376
+ return upb_MessageValue_sizeof(upb_FieldDef_CType(f));
1377
+ }
1378
+ }
1379
+
1380
+ static uint32_t upb_MiniTable_place(symtab_addctx* ctx, upb_MiniTable* l,
1381
+ size_t size, const upb_MessageDef* m) {
1382
+ size_t ofs = UPB_ALIGN_UP(l->size, size);
1383
+ size_t next = ofs + size;
1384
+
1385
+ if (next > UINT16_MAX) {
1386
+ symtab_errf(ctx, "size of message %s exceeded max size of %zu bytes",
1387
+ upb_MessageDef_FullName(m), (size_t)UINT16_MAX);
1388
+ }
1389
+
1390
+ l->size = next;
1391
+ return ofs;
1392
+ }
1393
+
1394
+ static int field_number_cmp(const void* p1, const void* p2) {
1395
+ const upb_MiniTable_Field* f1 = p1;
1396
+ const upb_MiniTable_Field* f2 = p2;
1397
+ return f1->number - f2->number;
1398
+ }
1399
+
1400
+ static void assign_layout_indices(const upb_MessageDef* m, upb_MiniTable* l,
1401
+ upb_MiniTable_Field* fields) {
1402
+ int i;
1403
+ int n = upb_MessageDef_numfields(m);
1404
+ int dense_below = 0;
1405
+ for (i = 0; i < n; i++) {
1406
+ upb_FieldDef* f =
1407
+ (upb_FieldDef*)upb_MessageDef_FindFieldByNumber(m, fields[i].number);
1408
+ UPB_ASSERT(f);
1409
+ f->layout_index = i;
1410
+ if (i < UINT8_MAX && fields[i].number == i + 1 &&
1411
+ (i == 0 || fields[i - 1].number == i)) {
1412
+ dense_below = i + 1;
1413
+ }
1414
+ }
1415
+ l->dense_below = dense_below;
1416
+ }
1417
+
1418
+ static uint8_t map_descriptortype(const upb_FieldDef* f) {
1419
+ uint8_t type = upb_FieldDef_Type(f);
1420
+ /* See TableDescriptorType() in upbc/generator.cc for details and
1421
+ * rationale of these exceptions. */
1422
+ if (type == kUpb_FieldType_String && f->file->syntax == kUpb_Syntax_Proto2) {
1423
+ return kUpb_FieldType_Bytes;
1424
+ } else if (type == kUpb_FieldType_Enum &&
1425
+ (f->sub.enumdef->file->syntax == kUpb_Syntax_Proto3 ||
1426
+ UPB_TREAT_PROTO2_ENUMS_LIKE_PROTO3 ||
1427
+ // TODO(https://github.com/protocolbuffers/upb/issues/541):
1428
+ // fix map enum values to check for unknown enum values and put
1429
+ // them in the unknown field set.
1430
+ upb_MessageDef_IsMapEntry(upb_FieldDef_ContainingType(f)))) {
1431
+ return kUpb_FieldType_Int32;
1432
+ }
1433
+ return type;
1434
+ }
1435
+
1436
+ static void fill_fieldlayout(upb_MiniTable_Field* field,
1437
+ const upb_FieldDef* f) {
1438
+ field->number = upb_FieldDef_Number(f);
1439
+ field->descriptortype = map_descriptortype(f);
1440
+
1441
+ if (upb_FieldDef_IsMap(f)) {
1442
+ field->mode =
1443
+ kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift);
1444
+ } else if (upb_FieldDef_IsRepeated(f)) {
1445
+ field->mode =
1446
+ kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift);
1447
+ } else {
1448
+ /* Maps descriptor type -> elem_size_lg2. */
1449
+ static const uint8_t sizes[] = {
1450
+ -1, /* invalid descriptor type */
1451
+ kUpb_FieldRep_8Byte, /* DOUBLE */
1452
+ kUpb_FieldRep_4Byte, /* FLOAT */
1453
+ kUpb_FieldRep_8Byte, /* INT64 */
1454
+ kUpb_FieldRep_8Byte, /* UINT64 */
1455
+ kUpb_FieldRep_4Byte, /* INT32 */
1456
+ kUpb_FieldRep_8Byte, /* FIXED64 */
1457
+ kUpb_FieldRep_4Byte, /* FIXED32 */
1458
+ kUpb_FieldRep_1Byte, /* BOOL */
1459
+ kUpb_FieldRep_StringView, /* STRING */
1460
+ kUpb_FieldRep_Pointer, /* GROUP */
1461
+ kUpb_FieldRep_Pointer, /* MESSAGE */
1462
+ kUpb_FieldRep_StringView, /* BYTES */
1463
+ kUpb_FieldRep_4Byte, /* UINT32 */
1464
+ kUpb_FieldRep_4Byte, /* ENUM */
1465
+ kUpb_FieldRep_4Byte, /* SFIXED32 */
1466
+ kUpb_FieldRep_8Byte, /* SFIXED64 */
1467
+ kUpb_FieldRep_4Byte, /* SINT32 */
1468
+ kUpb_FieldRep_8Byte, /* SINT64 */
1469
+ };
1470
+ field->mode = kUpb_FieldMode_Scalar |
1471
+ (sizes[field->descriptortype] << kUpb_FieldRep_Shift);
1472
+ }
1473
+
1474
+ if (upb_FieldDef_IsPacked(f)) {
1475
+ field->mode |= kUpb_LabelFlags_IsPacked;
1476
+ }
1477
+
1478
+ if (upb_FieldDef_IsExtension(f)) {
1479
+ field->mode |= kUpb_LabelFlags_IsExtension;
1480
+ }
1481
+ }
1482
+
1483
+ /* This function is the dynamic equivalent of message_layout.{cc,h} in upbc.
1484
+ * It computes a dynamic layout for all of the fields in |m|. */
1485
+ static void make_layout(symtab_addctx* ctx, const upb_MessageDef* m) {
1486
+ upb_MiniTable* l = (upb_MiniTable*)m->layout;
1487
+ size_t field_count = upb_MessageDef_numfields(m);
1488
+ size_t sublayout_count = 0;
1489
+ upb_MiniTable_Sub* subs;
1490
+ upb_MiniTable_Field* fields;
1491
+
1492
+ memset(l, 0, sizeof(*l) + sizeof(_upb_FastTable_Entry));
1493
+
1494
+ /* Count sub-messages. */
1495
+ for (size_t i = 0; i < field_count; i++) {
1496
+ const upb_FieldDef* f = &m->fields[i];
1497
+ if (upb_FieldDef_IsSubMessage(f)) {
1498
+ sublayout_count++;
1499
+ }
1500
+ if (upb_FieldDef_CType(f) == kUpb_CType_Enum &&
1501
+ f->sub.enumdef->file->syntax == kUpb_Syntax_Proto2) {
1502
+ sublayout_count++;
1503
+ }
1504
+ }
1505
+
1506
+ fields = symtab_alloc(ctx, field_count * sizeof(*fields));
1507
+ subs = symtab_alloc(ctx, sublayout_count * sizeof(*subs));
1508
+
1509
+ l->field_count = upb_MessageDef_numfields(m);
1510
+ l->fields = fields;
1511
+ l->subs = subs;
1512
+ l->table_mask = 0;
1513
+ l->required_count = 0;
1514
+
1515
+ if (upb_MessageDef_ExtensionRangeCount(m) > 0) {
1516
+ if (google_protobuf_MessageOptions_message_set_wire_format(m->opts)) {
1517
+ l->ext = kUpb_ExtMode_IsMessageSet;
1518
+ } else {
1519
+ l->ext = kUpb_ExtMode_Extendable;
1520
+ }
1521
+ } else {
1522
+ l->ext = kUpb_ExtMode_NonExtendable;
1523
+ }
1524
+
1525
+ /* TODO(haberman): initialize fast tables so that reflection-based parsing
1526
+ * can get the same speeds as linked-in types. */
1527
+ l->fasttable[0].field_parser = &fastdecode_generic;
1528
+ l->fasttable[0].field_data = 0;
1529
+
1530
+ if (upb_MessageDef_IsMapEntry(m)) {
1531
+ /* TODO(haberman): refactor this method so this special case is more
1532
+ * elegant. */
1533
+ const upb_FieldDef* key = upb_MessageDef_FindFieldByNumber(m, 1);
1534
+ const upb_FieldDef* val = upb_MessageDef_FindFieldByNumber(m, 2);
1535
+ fields[0].number = 1;
1536
+ fields[1].number = 2;
1537
+ fields[0].mode = kUpb_FieldMode_Scalar;
1538
+ fields[1].mode = kUpb_FieldMode_Scalar;
1539
+ fields[0].presence = 0;
1540
+ fields[1].presence = 0;
1541
+ fields[0].descriptortype = map_descriptortype(key);
1542
+ fields[1].descriptortype = map_descriptortype(val);
1543
+ fields[0].offset = 0;
1544
+ fields[1].offset = sizeof(upb_StringView);
1545
+ fields[1].submsg_index = 0;
1546
+
1547
+ if (upb_FieldDef_CType(val) == kUpb_CType_Message) {
1548
+ subs[0].submsg = upb_FieldDef_MessageSubDef(val)->layout;
1549
+ }
1550
+
1551
+ upb_FieldDef* fielddefs = (upb_FieldDef*)&m->fields[0];
1552
+ UPB_ASSERT(fielddefs[0].number_ == 1);
1553
+ UPB_ASSERT(fielddefs[1].number_ == 2);
1554
+ fielddefs[0].layout_index = 0;
1555
+ fielddefs[1].layout_index = 1;
1556
+
1557
+ l->field_count = 2;
1558
+ l->size = 2 * sizeof(upb_StringView);
1559
+ l->size = UPB_ALIGN_UP(l->size, 8);
1560
+ l->dense_below = 2;
1561
+ return;
1562
+ }
1563
+
1564
+ /* Allocate data offsets in three stages:
1565
+ *
1566
+ * 1. hasbits.
1567
+ * 2. regular fields.
1568
+ * 3. oneof fields.
1569
+ *
1570
+ * OPT: There is a lot of room for optimization here to minimize the size.
1571
+ */
1572
+
1573
+ /* Assign hasbits for required fields first. */
1574
+ size_t hasbit = 0;
1575
+
1576
+ for (int i = 0; i < m->field_count; i++) {
1577
+ const upb_FieldDef* f = &m->fields[i];
1578
+ upb_MiniTable_Field* field = &fields[upb_FieldDef_Index(f)];
1579
+ if (upb_FieldDef_Label(f) == kUpb_Label_Required) {
1580
+ field->presence = ++hasbit;
1581
+ if (hasbit >= 63) {
1582
+ symtab_errf(ctx, "Message with >=63 required fields: %s",
1583
+ upb_MessageDef_FullName(m));
1584
+ }
1585
+ l->required_count++;
1586
+ }
1587
+ }
1588
+
1589
+ /* Allocate hasbits and set basic field attributes. */
1590
+ sublayout_count = 0;
1591
+ for (int i = 0; i < m->field_count; i++) {
1592
+ const upb_FieldDef* f = &m->fields[i];
1593
+ upb_MiniTable_Field* field = &fields[upb_FieldDef_Index(f)];
1594
+
1595
+ fill_fieldlayout(field, f);
1596
+
1597
+ if (field->descriptortype == kUpb_FieldType_Message ||
1598
+ field->descriptortype == kUpb_FieldType_Group) {
1599
+ field->submsg_index = sublayout_count++;
1600
+ subs[field->submsg_index].submsg = upb_FieldDef_MessageSubDef(f)->layout;
1601
+ } else if (field->descriptortype == kUpb_FieldType_Enum) {
1602
+ field->submsg_index = sublayout_count++;
1603
+ subs[field->submsg_index].subenum = upb_FieldDef_EnumSubDef(f)->layout;
1604
+ UPB_ASSERT(subs[field->submsg_index].subenum);
1605
+ }
1606
+
1607
+ if (upb_FieldDef_Label(f) == kUpb_Label_Required) {
1608
+ /* Hasbit was already assigned. */
1609
+ } else if (upb_FieldDef_HasPresence(f) &&
1610
+ !upb_FieldDef_RealContainingOneof(f)) {
1611
+ /* We don't use hasbit 0, so that 0 can indicate "no presence" in the
1612
+ * table. This wastes one hasbit, but we don't worry about it for now. */
1613
+ field->presence = ++hasbit;
1614
+ } else {
1615
+ field->presence = 0;
1616
+ }
1617
+ }
1618
+
1619
+ /* Account for space used by hasbits. */
1620
+ l->size = hasbit ? div_round_up(hasbit + 1, 8) : 0;
1621
+
1622
+ /* Allocate non-oneof fields. */
1623
+ for (int i = 0; i < m->field_count; i++) {
1624
+ const upb_FieldDef* f = &m->fields[i];
1625
+ size_t field_size = upb_msg_fielddefsize(f);
1626
+ size_t index = upb_FieldDef_Index(f);
1627
+
1628
+ if (upb_FieldDef_RealContainingOneof(f)) {
1629
+ /* Oneofs are handled separately below. */
1630
+ continue;
1631
+ }
1632
+
1633
+ fields[index].offset = upb_MiniTable_place(ctx, l, field_size, m);
1634
+ }
1635
+
1636
+ /* Allocate oneof fields. Each oneof field consists of a uint32 for the case
1637
+ * and space for the actual data. */
1638
+ for (int i = 0; i < m->oneof_count; i++) {
1639
+ const upb_OneofDef* o = &m->oneofs[i];
1640
+ size_t case_size = sizeof(uint32_t); /* Could potentially optimize this. */
1641
+ size_t field_size = 0;
1642
+ uint32_t case_offset;
1643
+ uint32_t data_offset;
1644
+
1645
+ if (upb_OneofDef_IsSynthetic(o)) continue;
1646
+
1647
+ if (o->field_count == 0) {
1648
+ symtab_errf(ctx, "Oneof must have at least one field (%s)", o->full_name);
1649
+ }
1650
+
1651
+ /* Calculate field size: the max of all field sizes. */
1652
+ for (int j = 0; j < o->field_count; j++) {
1653
+ const upb_FieldDef* f = o->fields[j];
1654
+ field_size = UPB_MAX(field_size, upb_msg_fielddefsize(f));
1655
+ }
1656
+
1657
+ /* Align and allocate case offset. */
1658
+ case_offset = upb_MiniTable_place(ctx, l, case_size, m);
1659
+ data_offset = upb_MiniTable_place(ctx, l, field_size, m);
1660
+
1661
+ for (int i = 0; i < o->field_count; i++) {
1662
+ const upb_FieldDef* f = o->fields[i];
1663
+ fields[upb_FieldDef_Index(f)].offset = data_offset;
1664
+ fields[upb_FieldDef_Index(f)].presence = ~case_offset;
1665
+ }
1666
+ }
1667
+
1668
+ /* Size of the entire structure should be a multiple of its greatest
1669
+ * alignment. TODO: track overall alignment for real? */
1670
+ l->size = UPB_ALIGN_UP(l->size, 8);
1671
+
1672
+ /* Sort fields by number. */
1673
+ if (fields) {
1674
+ qsort(fields, upb_MessageDef_numfields(m), sizeof(*fields),
1675
+ field_number_cmp);
1676
+ }
1677
+ assign_layout_indices(m, l, fields);
1678
+ }
1679
+
1680
+ static char* strviewdup(symtab_addctx* ctx, upb_StringView view) {
1681
+ char* ret = upb_strdup2(view.data, view.size, ctx->arena);
1682
+ CHK_OOM(ret);
1683
+ return ret;
1684
+ }
1685
+
1686
+ static bool streql2(const char* a, size_t n, const char* b) {
1687
+ return n == strlen(b) && memcmp(a, b, n) == 0;
1688
+ }
1689
+
1690
+ static bool streql_view(upb_StringView view, const char* b) {
1691
+ return streql2(view.data, view.size, b);
1692
+ }
1693
+
1694
+ static const char* makefullname(symtab_addctx* ctx, const char* prefix,
1695
+ upb_StringView name) {
1696
+ if (prefix) {
1697
+ /* ret = prefix + '.' + name; */
1698
+ size_t n = strlen(prefix);
1699
+ char* ret = symtab_alloc(ctx, n + name.size + 2);
1700
+ strcpy(ret, prefix);
1701
+ ret[n] = '.';
1702
+ memcpy(&ret[n + 1], name.data, name.size);
1703
+ ret[n + 1 + name.size] = '\0';
1704
+ return ret;
1705
+ } else {
1706
+ return strviewdup(ctx, name);
1707
+ }
1708
+ }
1709
+
1710
+ static void finalize_oneofs(symtab_addctx* ctx, upb_MessageDef* m) {
1711
+ int i;
1712
+ int synthetic_count = 0;
1713
+ upb_OneofDef* mutable_oneofs = (upb_OneofDef*)m->oneofs;
1714
+
1715
+ for (i = 0; i < m->oneof_count; i++) {
1716
+ upb_OneofDef* o = &mutable_oneofs[i];
1717
+
1718
+ if (o->synthetic && o->field_count != 1) {
1719
+ symtab_errf(ctx, "Synthetic oneofs must have one field, not %d: %s",
1720
+ o->field_count, upb_OneofDef_Name(o));
1721
+ }
1722
+
1723
+ if (o->synthetic) {
1724
+ synthetic_count++;
1725
+ } else if (synthetic_count != 0) {
1726
+ symtab_errf(ctx, "Synthetic oneofs must be after all other oneofs: %s",
1727
+ upb_OneofDef_Name(o));
1728
+ }
1729
+
1730
+ o->fields = symtab_alloc(ctx, sizeof(upb_FieldDef*) * o->field_count);
1731
+ o->field_count = 0;
1732
+ }
1733
+
1734
+ for (i = 0; i < m->field_count; i++) {
1735
+ const upb_FieldDef* f = &m->fields[i];
1736
+ upb_OneofDef* o = (upb_OneofDef*)upb_FieldDef_ContainingOneof(f);
1737
+ if (o) {
1738
+ o->fields[o->field_count++] = f;
1739
+ }
1740
+ }
1741
+
1742
+ m->real_oneof_count = m->oneof_count - synthetic_count;
1743
+ }
1744
+
1745
+ size_t getjsonname(const char* name, char* buf, size_t len) {
1746
+ size_t src, dst = 0;
1747
+ bool ucase_next = false;
1748
+
1749
+ #define WRITE(byte) \
1750
+ ++dst; \
1751
+ if (dst < len) \
1752
+ buf[dst - 1] = byte; \
1753
+ else if (dst == len) \
1754
+ buf[dst - 1] = '\0'
1755
+
1756
+ if (!name) {
1757
+ WRITE('\0');
1758
+ return 0;
1759
+ }
1760
+
1761
+ /* Implement the transformation as described in the spec:
1762
+ * 1. upper case all letters after an underscore.
1763
+ * 2. remove all underscores.
1764
+ */
1765
+ for (src = 0; name[src]; src++) {
1766
+ if (name[src] == '_') {
1767
+ ucase_next = true;
1768
+ continue;
1769
+ }
1770
+
1771
+ if (ucase_next) {
1772
+ WRITE(toupper(name[src]));
1773
+ ucase_next = false;
1774
+ } else {
1775
+ WRITE(name[src]);
1776
+ }
1777
+ }
1778
+
1779
+ WRITE('\0');
1780
+ return dst;
1781
+
1782
+ #undef WRITE
1783
+ }
1784
+
1785
+ static char* makejsonname(symtab_addctx* ctx, const char* name) {
1786
+ size_t size = getjsonname(name, NULL, 0);
1787
+ char* json_name = symtab_alloc(ctx, size);
1788
+ getjsonname(name, json_name, size);
1789
+ return json_name;
1790
+ }
1791
+
1792
+ /* Adds a symbol |v| to the symtab, which must be a def pointer previously
1793
+ * packed with pack_def(). The def's pointer to upb_FileDef* must be set before
1794
+ * adding, so we know which entries to remove if building this file fails. */
1795
+ static void symtab_add(symtab_addctx* ctx, const char* name, upb_value v) {
1796
+ // TODO: table should support an operation "tryinsert" to avoid the double
1797
+ // lookup.
1798
+ if (upb_strtable_lookup(&ctx->symtab->syms, name, NULL)) {
1799
+ symtab_errf(ctx, "duplicate symbol '%s'", name);
1800
+ }
1801
+ size_t len = strlen(name);
1802
+ CHK_OOM(upb_strtable_insert(&ctx->symtab->syms, name, len, v,
1803
+ ctx->symtab->arena));
1804
+ }
1805
+
1806
+ static bool remove_component(char* base, size_t* len) {
1807
+ if (*len == 0) return false;
1808
+
1809
+ for (size_t i = *len - 1; i > 0; i--) {
1810
+ if (base[i] == '.') {
1811
+ *len = i;
1812
+ return true;
1813
+ }
1814
+ }
1815
+
1816
+ *len = 0;
1817
+ return true;
1818
+ }
1819
+
1820
+ /* Given a symbol and the base symbol inside which it is defined, find the
1821
+ * symbol's definition in t. */
1822
+ static const void* symtab_resolveany(symtab_addctx* ctx,
1823
+ const char* from_name_dbg,
1824
+ const char* base, upb_StringView sym,
1825
+ upb_deftype_t* type) {
1826
+ const upb_strtable* t = &ctx->symtab->syms;
1827
+ if (sym.size == 0) goto notfound;
1828
+ upb_value v;
1829
+ if (sym.data[0] == '.') {
1830
+ /* Symbols starting with '.' are absolute, so we do a single lookup.
1831
+ * Slice to omit the leading '.' */
1832
+ if (!upb_strtable_lookup2(t, sym.data + 1, sym.size - 1, &v)) {
1833
+ goto notfound;
1834
+ }
1835
+ } else {
1836
+ /* Remove components from base until we find an entry or run out. */
1837
+ size_t baselen = base ? strlen(base) : 0;
1838
+ char* tmp = malloc(sym.size + baselen + 1);
1839
+ while (1) {
1840
+ char* p = tmp;
1841
+ if (baselen) {
1842
+ memcpy(p, base, baselen);
1843
+ p[baselen] = '.';
1844
+ p += baselen + 1;
1845
+ }
1846
+ memcpy(p, sym.data, sym.size);
1847
+ p += sym.size;
1848
+ if (upb_strtable_lookup2(t, tmp, p - tmp, &v)) {
1849
+ break;
1850
+ }
1851
+ if (!remove_component(tmp, &baselen)) {
1852
+ free(tmp);
1853
+ goto notfound;
1854
+ }
1855
+ }
1856
+ free(tmp);
1857
+ }
1858
+
1859
+ *type = deftype(v);
1860
+ return unpack_def(v, *type);
1861
+
1862
+ notfound:
1863
+ symtab_errf(ctx, "couldn't resolve name '" UPB_STRINGVIEW_FORMAT "'",
1864
+ UPB_STRINGVIEW_ARGS(sym));
1865
+ }
1866
+
1867
+ static const void* symtab_resolve(symtab_addctx* ctx, const char* from_name_dbg,
1868
+ const char* base, upb_StringView sym,
1869
+ upb_deftype_t type) {
1870
+ upb_deftype_t found_type;
1871
+ const void* ret =
1872
+ symtab_resolveany(ctx, from_name_dbg, base, sym, &found_type);
1873
+ if (ret && found_type != type) {
1874
+ symtab_errf(ctx,
1875
+ "type mismatch when resolving %s: couldn't find "
1876
+ "name " UPB_STRINGVIEW_FORMAT " with type=%d",
1877
+ from_name_dbg, UPB_STRINGVIEW_ARGS(sym), (int)type);
1878
+ }
1879
+ return ret;
1880
+ }
1881
+
1882
+ static void create_oneofdef(
1883
+ symtab_addctx* ctx, upb_MessageDef* m,
1884
+ const google_protobuf_OneofDescriptorProto* oneof_proto,
1885
+ const upb_OneofDef* _o) {
1886
+ upb_OneofDef* o = (upb_OneofDef*)_o;
1887
+ upb_StringView name = google_protobuf_OneofDescriptorProto_name(oneof_proto);
1888
+ upb_value v;
1889
+
1890
+ o->parent = m;
1891
+ o->full_name = makefullname(ctx, m->full_name, name);
1892
+ o->field_count = 0;
1893
+ o->synthetic = false;
1894
+
1895
+ SET_OPTIONS(o->opts, OneofDescriptorProto, OneofOptions, oneof_proto);
1896
+
1897
+ upb_value existing_v;
1898
+ if (upb_strtable_lookup2(&m->ntof, name.data, name.size, &existing_v)) {
1899
+ symtab_errf(ctx, "duplicate oneof name (%s)", o->full_name);
1900
+ }
1901
+
1902
+ v = pack_def(o, UPB_DEFTYPE_ONEOF);
1903
+ CHK_OOM(upb_strtable_insert(&m->ntof, name.data, name.size, v, ctx->arena));
1904
+
1905
+ CHK_OOM(upb_inttable_init(&o->itof, ctx->arena));
1906
+ CHK_OOM(upb_strtable_init(&o->ntof, 4, ctx->arena));
1907
+ }
1908
+
1909
+ static str_t* newstr(symtab_addctx* ctx, const char* data, size_t len) {
1910
+ str_t* ret = symtab_alloc(ctx, sizeof(*ret) + len);
1911
+ CHK_OOM(ret);
1912
+ ret->len = len;
1913
+ if (len) memcpy(ret->str, data, len);
1914
+ ret->str[len] = '\0';
1915
+ return ret;
1916
+ }
1917
+
1918
+ static bool upb_DefPool_TryGetChar(const char** src, const char* end,
1919
+ char* ch) {
1920
+ if (*src == end) return false;
1921
+ *ch = **src;
1922
+ *src += 1;
1923
+ return true;
1924
+ }
1925
+
1926
+ static char upb_DefPool_TryGetHexDigit(symtab_addctx* ctx,
1927
+ const upb_FieldDef* f, const char** src,
1928
+ const char* end) {
1929
+ char ch;
1930
+ if (!upb_DefPool_TryGetChar(src, end, &ch)) return -1;
1931
+ if ('0' <= ch && ch <= '9') {
1932
+ return ch - '0';
1933
+ }
1934
+ ch = upb_ascii_lower(ch);
1935
+ if ('a' <= ch && ch <= 'f') {
1936
+ return ch - 'a' + 0xa;
1937
+ }
1938
+ *src -= 1; // Char wasn't actually a hex digit.
1939
+ return -1;
1940
+ }
1941
+
1942
+ static char upb_DefPool_ParseHexEscape(symtab_addctx* ctx,
1943
+ const upb_FieldDef* f, const char** src,
1944
+ const char* end) {
1945
+ char hex_digit = upb_DefPool_TryGetHexDigit(ctx, f, src, end);
1946
+ if (hex_digit < 0) {
1947
+ symtab_errf(ctx,
1948
+ "\\x cannot be followed by non-hex digit in field '%s' default",
1949
+ upb_FieldDef_FullName(f));
1950
+ return 0;
1951
+ }
1952
+ unsigned int ret = hex_digit;
1953
+ while ((hex_digit = upb_DefPool_TryGetHexDigit(ctx, f, src, end)) >= 0) {
1954
+ ret = (ret << 4) | hex_digit;
1955
+ }
1956
+ if (ret > 0xff) {
1957
+ symtab_errf(ctx, "Value of hex escape in field %s exceeds 8 bits",
1958
+ upb_FieldDef_FullName(f));
1959
+ return 0;
1960
+ }
1961
+ return ret;
1962
+ }
1963
+
1964
+ char upb_DefPool_TryGetOctalDigit(const char** src, const char* end) {
1965
+ char ch;
1966
+ if (!upb_DefPool_TryGetChar(src, end, &ch)) return -1;
1967
+ if ('0' <= ch && ch <= '7') {
1968
+ return ch - '0';
1969
+ }
1970
+ *src -= 1; // Char wasn't actually an octal digit.
1971
+ return -1;
1972
+ }
1973
+
1974
+ static char upb_DefPool_ParseOctalEscape(symtab_addctx* ctx,
1975
+ const upb_FieldDef* f,
1976
+ const char** src, const char* end) {
1977
+ char ch = 0;
1978
+ for (int i = 0; i < 3; i++) {
1979
+ char digit;
1980
+ if ((digit = upb_DefPool_TryGetOctalDigit(src, end)) >= 0) {
1981
+ ch = (ch << 3) | digit;
1982
+ }
1983
+ }
1984
+ return ch;
1985
+ }
1986
+
1987
+ static char upb_DefPool_ParseEscape(symtab_addctx* ctx, const upb_FieldDef* f,
1988
+ const char** src, const char* end) {
1989
+ char ch;
1990
+ if (!upb_DefPool_TryGetChar(src, end, &ch)) {
1991
+ symtab_errf(ctx, "unterminated escape sequence in field %s",
1992
+ upb_FieldDef_FullName(f));
1993
+ return 0;
1994
+ }
1995
+ switch (ch) {
1996
+ case 'a':
1997
+ return '\a';
1998
+ case 'b':
1999
+ return '\b';
2000
+ case 'f':
2001
+ return '\f';
2002
+ case 'n':
2003
+ return '\n';
2004
+ case 'r':
2005
+ return '\r';
2006
+ case 't':
2007
+ return '\t';
2008
+ case 'v':
2009
+ return '\v';
2010
+ case '\\':
2011
+ return '\\';
2012
+ case '\'':
2013
+ return '\'';
2014
+ case '\"':
2015
+ return '\"';
2016
+ case '?':
2017
+ return '\?';
2018
+ case 'x':
2019
+ case 'X':
2020
+ return upb_DefPool_ParseHexEscape(ctx, f, src, end);
2021
+ case '0':
2022
+ case '1':
2023
+ case '2':
2024
+ case '3':
2025
+ case '4':
2026
+ case '5':
2027
+ case '6':
2028
+ case '7':
2029
+ *src -= 1;
2030
+ return upb_DefPool_ParseOctalEscape(ctx, f, src, end);
2031
+ }
2032
+ symtab_errf(ctx, "Unknown escape sequence: \\%c", ch);
2033
+ }
2034
+
2035
+ static str_t* unescape(symtab_addctx* ctx, const upb_FieldDef* f,
2036
+ const char* data, size_t len) {
2037
+ // Size here is an upper bound; escape sequences could ultimately shrink it.
2038
+ str_t* ret = symtab_alloc(ctx, sizeof(*ret) + len);
2039
+ char* dst = &ret->str[0];
2040
+ const char* src = data;
2041
+ const char* end = data + len;
2042
+
2043
+ while (src < end) {
2044
+ if (*src == '\\') {
2045
+ src++;
2046
+ *dst++ = upb_DefPool_ParseEscape(ctx, f, &src, end);
2047
+ } else {
2048
+ *dst++ = *src++;
2049
+ }
2050
+ }
2051
+
2052
+ ret->len = dst - &ret->str[0];
2053
+ return ret;
2054
+ }
2055
+
2056
+ static void parse_default(symtab_addctx* ctx, const char* str, size_t len,
2057
+ upb_FieldDef* f) {
2058
+ char* end;
2059
+ char nullz[64];
2060
+ errno = 0;
2061
+
2062
+ switch (upb_FieldDef_CType(f)) {
2063
+ case kUpb_CType_Int32:
2064
+ case kUpb_CType_Int64:
2065
+ case kUpb_CType_UInt32:
2066
+ case kUpb_CType_UInt64:
2067
+ case kUpb_CType_Double:
2068
+ case kUpb_CType_Float:
2069
+ /* Standard C number parsing functions expect null-terminated strings. */
2070
+ if (len >= sizeof(nullz) - 1) {
2071
+ symtab_errf(ctx, "Default too long: %.*s", (int)len, str);
2072
+ }
2073
+ memcpy(nullz, str, len);
2074
+ nullz[len] = '\0';
2075
+ str = nullz;
2076
+ break;
2077
+ default:
2078
+ break;
2079
+ }
2080
+
2081
+ switch (upb_FieldDef_CType(f)) {
2082
+ case kUpb_CType_Int32: {
2083
+ long val = strtol(str, &end, 0);
2084
+ if (val > INT32_MAX || val < INT32_MIN || errno == ERANGE || *end) {
2085
+ goto invalid;
2086
+ }
2087
+ f->defaultval.sint = val;
2088
+ break;
2089
+ }
2090
+ case kUpb_CType_Enum: {
2091
+ const upb_EnumDef* e = f->sub.enumdef;
2092
+ const upb_EnumValueDef* ev =
2093
+ upb_EnumDef_FindValueByNameWithSize(e, str, len);
2094
+ if (!ev) {
2095
+ goto invalid;
2096
+ }
2097
+ f->defaultval.sint = ev->number;
2098
+ break;
2099
+ }
2100
+ case kUpb_CType_Int64: {
2101
+ long long val = strtoll(str, &end, 0);
2102
+ if (val > INT64_MAX || val < INT64_MIN || errno == ERANGE || *end) {
2103
+ goto invalid;
2104
+ }
2105
+ f->defaultval.sint = val;
2106
+ break;
2107
+ }
2108
+ case kUpb_CType_UInt32: {
2109
+ unsigned long val = strtoul(str, &end, 0);
2110
+ if (val > UINT32_MAX || errno == ERANGE || *end) {
2111
+ goto invalid;
2112
+ }
2113
+ f->defaultval.uint = val;
2114
+ break;
2115
+ }
2116
+ case kUpb_CType_UInt64: {
2117
+ unsigned long long val = strtoull(str, &end, 0);
2118
+ if (val > UINT64_MAX || errno == ERANGE || *end) {
2119
+ goto invalid;
2120
+ }
2121
+ f->defaultval.uint = val;
2122
+ break;
2123
+ }
2124
+ case kUpb_CType_Double: {
2125
+ double val = strtod(str, &end);
2126
+ if (errno == ERANGE || *end) {
2127
+ goto invalid;
2128
+ }
2129
+ f->defaultval.dbl = val;
2130
+ break;
2131
+ }
2132
+ case kUpb_CType_Float: {
2133
+ float val = strtof(str, &end);
2134
+ if (errno == ERANGE || *end) {
2135
+ goto invalid;
2136
+ }
2137
+ f->defaultval.flt = val;
2138
+ break;
2139
+ }
2140
+ case kUpb_CType_Bool: {
2141
+ if (streql2(str, len, "false")) {
2142
+ f->defaultval.boolean = false;
2143
+ } else if (streql2(str, len, "true")) {
2144
+ f->defaultval.boolean = true;
2145
+ } else {
2146
+ goto invalid;
2147
+ }
2148
+ break;
2149
+ }
2150
+ case kUpb_CType_String:
2151
+ f->defaultval.str = newstr(ctx, str, len);
2152
+ break;
2153
+ case kUpb_CType_Bytes:
2154
+ f->defaultval.str = unescape(ctx, f, str, len);
2155
+ break;
2156
+ case kUpb_CType_Message:
2157
+ /* Should not have a default value. */
2158
+ symtab_errf(ctx, "Message should not have a default (%s)",
2159
+ upb_FieldDef_FullName(f));
2160
+ }
2161
+
2162
+ return;
2163
+
2164
+ invalid:
2165
+ symtab_errf(ctx, "Invalid default '%.*s' for field %s of type %d", (int)len,
2166
+ str, upb_FieldDef_FullName(f), (int)upb_FieldDef_Type(f));
2167
+ }
2168
+
2169
+ static void set_default_default(symtab_addctx* ctx, upb_FieldDef* f) {
2170
+ switch (upb_FieldDef_CType(f)) {
2171
+ case kUpb_CType_Int32:
2172
+ case kUpb_CType_Int64:
2173
+ f->defaultval.sint = 0;
2174
+ break;
2175
+ case kUpb_CType_UInt64:
2176
+ case kUpb_CType_UInt32:
2177
+ f->defaultval.uint = 0;
2178
+ break;
2179
+ case kUpb_CType_Double:
2180
+ case kUpb_CType_Float:
2181
+ f->defaultval.dbl = 0;
2182
+ break;
2183
+ case kUpb_CType_String:
2184
+ case kUpb_CType_Bytes:
2185
+ f->defaultval.str = newstr(ctx, NULL, 0);
2186
+ break;
2187
+ case kUpb_CType_Bool:
2188
+ f->defaultval.boolean = false;
2189
+ break;
2190
+ case kUpb_CType_Enum:
2191
+ f->defaultval.sint = f->sub.enumdef->values[0].number;
2192
+ case kUpb_CType_Message:
2193
+ break;
2194
+ }
2195
+ }
2196
+
2197
+ static void create_fielddef(
2198
+ symtab_addctx* ctx, const char* prefix, upb_MessageDef* m,
2199
+ const google_protobuf_FieldDescriptorProto* field_proto,
2200
+ const upb_FieldDef* _f, bool is_extension) {
2201
+ upb_FieldDef* f = (upb_FieldDef*)_f;
2202
+ upb_StringView name;
2203
+ const char* full_name;
2204
+ const char* json_name;
2205
+ const char* shortname;
2206
+ int32_t field_number;
2207
+
2208
+ f->file = ctx->file; /* Must happen prior to symtab_add(). */
2209
+
2210
+ if (!google_protobuf_FieldDescriptorProto_has_name(field_proto)) {
2211
+ symtab_errf(ctx, "field has no name");
2212
+ }
2213
+
2214
+ name = google_protobuf_FieldDescriptorProto_name(field_proto);
2215
+ check_ident(ctx, name, false);
2216
+ full_name = makefullname(ctx, prefix, name);
2217
+ shortname = shortdefname(full_name);
2218
+
2219
+ if (google_protobuf_FieldDescriptorProto_has_json_name(field_proto)) {
2220
+ json_name = strviewdup(
2221
+ ctx, google_protobuf_FieldDescriptorProto_json_name(field_proto));
2222
+ f->has_json_name_ = true;
2223
+ } else {
2224
+ json_name = makejsonname(ctx, shortname);
2225
+ f->has_json_name_ = false;
2226
+ }
2227
+
2228
+ field_number = google_protobuf_FieldDescriptorProto_number(field_proto);
2229
+
2230
+ f->full_name = full_name;
2231
+ f->json_name = json_name;
2232
+ f->label_ = (int)google_protobuf_FieldDescriptorProto_label(field_proto);
2233
+ f->number_ = field_number;
2234
+ f->scope.oneof = NULL;
2235
+ f->proto3_optional_ =
2236
+ google_protobuf_FieldDescriptorProto_proto3_optional(field_proto);
2237
+
2238
+ bool has_type = google_protobuf_FieldDescriptorProto_has_type(field_proto);
2239
+ bool has_type_name =
2240
+ google_protobuf_FieldDescriptorProto_has_type_name(field_proto);
2241
+
2242
+ f->type_ = (int)google_protobuf_FieldDescriptorProto_type(field_proto);
2243
+
2244
+ if (has_type) {
2245
+ switch (f->type_) {
2246
+ case kUpb_FieldType_Message:
2247
+ case kUpb_FieldType_Group:
2248
+ case kUpb_FieldType_Enum:
2249
+ if (!has_type_name) {
2250
+ symtab_errf(ctx, "field of type %d requires type name (%s)",
2251
+ (int)f->type_, full_name);
2252
+ }
2253
+ break;
2254
+ default:
2255
+ if (has_type_name) {
2256
+ symtab_errf(ctx, "invalid type for field with type_name set (%s, %d)",
2257
+ full_name, (int)f->type_);
2258
+ }
2259
+ }
2260
+ } else if (has_type_name) {
2261
+ f->type_ =
2262
+ FIELD_TYPE_UNSPECIFIED; // We'll fill this in in resolve_fielddef().
2263
+ }
2264
+
2265
+ if (!is_extension) {
2266
+ /* direct message field. */
2267
+ upb_value v, field_v, json_v, existing_v;
2268
+ size_t json_size;
2269
+
2270
+ if (field_number <= 0 || field_number > kUpb_MaxFieldNumber) {
2271
+ symtab_errf(ctx, "invalid field number (%u)", field_number);
2272
+ }
2273
+
2274
+ f->index_ = f - m->fields;
2275
+ f->msgdef = m;
2276
+ f->is_extension_ = false;
2277
+
2278
+ field_v = pack_def(f, UPB_DEFTYPE_FIELD);
2279
+ json_v = pack_def(f, UPB_DEFTYPE_FIELD_JSONNAME);
2280
+ v = upb_value_constptr(f);
2281
+ json_size = strlen(json_name);
2282
+
2283
+ if (upb_strtable_lookup(&m->ntof, shortname, &existing_v)) {
2284
+ symtab_errf(ctx, "duplicate field name (%s)", shortname);
2285
+ }
2286
+
2287
+ CHK_OOM(upb_strtable_insert(&m->ntof, name.data, name.size, field_v,
2288
+ ctx->arena));
2289
+
2290
+ if (strcmp(shortname, json_name) != 0) {
2291
+ if (upb_strtable_lookup(&m->ntof, json_name, &v)) {
2292
+ symtab_errf(ctx, "duplicate json_name (%s)", json_name);
2293
+ } else {
2294
+ CHK_OOM(upb_strtable_insert(&m->ntof, json_name, json_size, json_v,
2295
+ ctx->arena));
2296
+ }
2297
+ }
2298
+
2299
+ if (upb_inttable_lookup(&m->itof, field_number, NULL)) {
2300
+ symtab_errf(ctx, "duplicate field number (%u)", field_number);
2301
+ }
2302
+
2303
+ CHK_OOM(upb_inttable_insert(&m->itof, field_number, v, ctx->arena));
2304
+
2305
+ if (ctx->layout) {
2306
+ const upb_MiniTable_Field* fields = m->layout->fields;
2307
+ int count = m->layout->field_count;
2308
+ bool found = false;
2309
+ for (int i = 0; i < count; i++) {
2310
+ if (fields[i].number == field_number) {
2311
+ f->layout_index = i;
2312
+ found = true;
2313
+ break;
2314
+ }
2315
+ }
2316
+ UPB_ASSERT(found);
2317
+ }
2318
+ } else {
2319
+ /* extension field. */
2320
+ f->is_extension_ = true;
2321
+ f->scope.extension_scope = m;
2322
+ symtab_add(ctx, full_name, pack_def(f, UPB_DEFTYPE_EXT));
2323
+ f->layout_index = ctx->ext_count++;
2324
+ if (ctx->layout) {
2325
+ UPB_ASSERT(ctx->file->ext_layouts[f->layout_index]->field.number ==
2326
+ field_number);
2327
+ }
2328
+ }
2329
+
2330
+ if (f->type_ < kUpb_FieldType_Double || f->type_ > kUpb_FieldType_SInt64) {
2331
+ symtab_errf(ctx, "invalid type for field %s (%d)", f->full_name, f->type_);
2332
+ }
2333
+
2334
+ if (f->label_ < kUpb_Label_Optional || f->label_ > kUpb_Label_Repeated) {
2335
+ symtab_errf(ctx, "invalid label for field %s (%d)", f->full_name,
2336
+ f->label_);
2337
+ }
2338
+
2339
+ /* We can't resolve the subdef or (in the case of extensions) the containing
2340
+ * message yet, because it may not have been defined yet. We stash a pointer
2341
+ * to the field_proto until later when we can properly resolve it. */
2342
+ f->sub.unresolved = field_proto;
2343
+
2344
+ if (f->label_ == kUpb_Label_Required &&
2345
+ f->file->syntax == kUpb_Syntax_Proto3) {
2346
+ symtab_errf(ctx, "proto3 fields cannot be required (%s)", f->full_name);
2347
+ }
2348
+
2349
+ if (google_protobuf_FieldDescriptorProto_has_oneof_index(field_proto)) {
2350
+ uint32_t oneof_index = google_protobuf_FieldDescriptorProto_oneof_index(field_proto);
2351
+ upb_OneofDef* oneof;
2352
+ upb_value v = upb_value_constptr(f);
2353
+
2354
+ if (upb_FieldDef_Label(f) != kUpb_Label_Optional) {
2355
+ symtab_errf(ctx, "fields in oneof must have OPTIONAL label (%s)",
2356
+ f->full_name);
2357
+ }
2358
+
2359
+ if (!m) {
2360
+ symtab_errf(ctx, "oneof_index provided for extension field (%s)",
2361
+ f->full_name);
2362
+ }
2363
+
2364
+ if (oneof_index >= m->oneof_count) {
2365
+ symtab_errf(ctx, "oneof_index out of range (%s)", f->full_name);
2366
+ }
2367
+
2368
+ oneof = (upb_OneofDef*)&m->oneofs[oneof_index];
2369
+ f->scope.oneof = oneof;
2370
+
2371
+ oneof->field_count++;
2372
+ if (f->proto3_optional_) {
2373
+ oneof->synthetic = true;
2374
+ }
2375
+ CHK_OOM(upb_inttable_insert(&oneof->itof, f->number_, v, ctx->arena));
2376
+ CHK_OOM(
2377
+ upb_strtable_insert(&oneof->ntof, name.data, name.size, v, ctx->arena));
2378
+ } else {
2379
+ if (f->proto3_optional_) {
2380
+ symtab_errf(ctx, "field with proto3_optional was not in a oneof (%s)",
2381
+ f->full_name);
2382
+ }
2383
+ }
2384
+
2385
+ SET_OPTIONS(f->opts, FieldDescriptorProto, FieldOptions, field_proto);
2386
+
2387
+ if (google_protobuf_FieldOptions_has_packed(f->opts)) {
2388
+ f->packed_ = google_protobuf_FieldOptions_packed(f->opts);
2389
+ } else {
2390
+ /* Repeated fields default to packed for proto3 only. */
2391
+ f->packed_ = upb_FieldDef_IsPrimitive(f) &&
2392
+ f->label_ == kUpb_Label_Repeated &&
2393
+ f->file->syntax == kUpb_Syntax_Proto3;
2394
+ }
2395
+ }
2396
+
2397
+ static void create_service(
2398
+ symtab_addctx* ctx, const google_protobuf_ServiceDescriptorProto* svc_proto,
2399
+ const upb_ServiceDef* _s) {
2400
+ upb_ServiceDef* s = (upb_ServiceDef*)_s;
2401
+ upb_StringView name;
2402
+ const google_protobuf_MethodDescriptorProto* const* methods;
2403
+ size_t i, n;
2404
+
2405
+ s->file = ctx->file; /* Must happen prior to symtab_add. */
2406
+
2407
+ name = google_protobuf_ServiceDescriptorProto_name(svc_proto);
2408
+ check_ident(ctx, name, false);
2409
+ s->full_name = makefullname(ctx, ctx->file->package, name);
2410
+ symtab_add(ctx, s->full_name, pack_def(s, UPB_DEFTYPE_SERVICE));
2411
+
2412
+ methods = google_protobuf_ServiceDescriptorProto_method(svc_proto, &n);
2413
+
2414
+ s->method_count = n;
2415
+ s->methods = symtab_alloc(ctx, sizeof(*s->methods) * n);
2416
+
2417
+ SET_OPTIONS(s->opts, ServiceDescriptorProto, ServiceOptions, svc_proto);
2418
+
2419
+ for (i = 0; i < n; i++) {
2420
+ const google_protobuf_MethodDescriptorProto* method_proto = methods[i];
2421
+ upb_MethodDef* m = (upb_MethodDef*)&s->methods[i];
2422
+ upb_StringView name =
2423
+ google_protobuf_MethodDescriptorProto_name(method_proto);
2424
+
2425
+ m->service = s;
2426
+ m->full_name = makefullname(ctx, s->full_name, name);
2427
+ m->index = i;
2428
+ m->client_streaming =
2429
+ google_protobuf_MethodDescriptorProto_client_streaming(method_proto);
2430
+ m->server_streaming =
2431
+ google_protobuf_MethodDescriptorProto_server_streaming(method_proto);
2432
+ m->input_type = symtab_resolve(
2433
+ ctx, m->full_name, m->full_name,
2434
+ google_protobuf_MethodDescriptorProto_input_type(method_proto),
2435
+ UPB_DEFTYPE_MSG);
2436
+ m->output_type = symtab_resolve(
2437
+ ctx, m->full_name, m->full_name,
2438
+ google_protobuf_MethodDescriptorProto_output_type(method_proto),
2439
+ UPB_DEFTYPE_MSG);
2440
+
2441
+ SET_OPTIONS(m->opts, MethodDescriptorProto, MethodOptions, method_proto);
2442
+ }
2443
+ }
2444
+
2445
+ static int count_bits_debug(uint64_t x) {
2446
+ // For assertions only, speed does not matter.
2447
+ int n = 0;
2448
+ while (x) {
2449
+ if (x & 1) n++;
2450
+ x >>= 1;
2451
+ }
2452
+ return n;
2453
+ }
2454
+
2455
+ static int compare_int32(const void* a_ptr, const void* b_ptr) {
2456
+ int32_t a = *(int32_t*)a_ptr;
2457
+ int32_t b = *(int32_t*)b_ptr;
2458
+ return a < b ? -1 : (a == b ? 0 : 1);
2459
+ }
2460
+
2461
+ upb_MiniTable_Enum* create_enumlayout(symtab_addctx* ctx,
2462
+ const upb_EnumDef* e) {
2463
+ int n = 0;
2464
+ uint64_t mask = 0;
2465
+
2466
+ for (int i = 0; i < e->value_count; i++) {
2467
+ uint32_t val = (uint32_t)e->values[i].number;
2468
+ if (val < 64) {
2469
+ mask |= 1ULL << val;
2470
+ } else {
2471
+ n++;
2472
+ }
2473
+ }
2474
+
2475
+ int32_t* values = symtab_alloc(ctx, sizeof(*values) * n);
2476
+
2477
+ if (n) {
2478
+ int32_t* p = values;
2479
+
2480
+ // Add values outside the bitmask range to the list, as described in the
2481
+ // comments for upb_MiniTable_Enum.
2482
+ for (int i = 0; i < e->value_count; i++) {
2483
+ int32_t val = e->values[i].number;
2484
+ if ((uint32_t)val >= 64) {
2485
+ *p++ = val;
2486
+ }
2487
+ }
2488
+ UPB_ASSERT(p == values + n);
2489
+ }
2490
+
2491
+ // Enums can have duplicate values; we must sort+uniq them.
2492
+ if (values) qsort(values, n, sizeof(*values), &compare_int32);
2493
+
2494
+ int dst = 0;
2495
+ for (int i = 0; i < n; dst++) {
2496
+ int32_t val = values[i];
2497
+ while (i < n && values[i] == val) i++; // Skip duplicates.
2498
+ values[dst] = val;
2499
+ }
2500
+ n = dst;
2501
+
2502
+ UPB_ASSERT(upb_inttable_count(&e->iton) == n + count_bits_debug(mask));
2503
+
2504
+ upb_MiniTable_Enum* layout = symtab_alloc(ctx, sizeof(*layout));
2505
+ layout->value_count = n;
2506
+ layout->mask = mask;
2507
+ layout->values = values;
2508
+
2509
+ return layout;
2510
+ }
2511
+
2512
+ static void create_enumvaldef(
2513
+ symtab_addctx* ctx, const char* prefix,
2514
+ const google_protobuf_EnumValueDescriptorProto* val_proto, upb_EnumDef* e,
2515
+ int i) {
2516
+ upb_EnumValueDef* val = (upb_EnumValueDef*)&e->values[i];
2517
+ upb_StringView name =
2518
+ google_protobuf_EnumValueDescriptorProto_name(val_proto);
2519
+ upb_value v = upb_value_constptr(val);
2520
+
2521
+ val->parent = e; /* Must happen prior to symtab_add(). */
2522
+ val->full_name = makefullname(ctx, prefix, name);
2523
+ val->number = google_protobuf_EnumValueDescriptorProto_number(val_proto);
2524
+ symtab_add(ctx, val->full_name, pack_def(val, UPB_DEFTYPE_ENUMVAL));
2525
+
2526
+ SET_OPTIONS(val->opts, EnumValueDescriptorProto, EnumValueOptions, val_proto);
2527
+
2528
+ if (i == 0 && e->file->syntax == kUpb_Syntax_Proto3 && val->number != 0) {
2529
+ symtab_errf(ctx, "for proto3, the first enum value must be zero (%s)",
2530
+ e->full_name);
2531
+ }
2532
+
2533
+ CHK_OOM(upb_strtable_insert(&e->ntoi, name.data, name.size, v, ctx->arena));
2534
+
2535
+ // Multiple enumerators can have the same number, first one wins.
2536
+ if (!upb_inttable_lookup(&e->iton, val->number, NULL)) {
2537
+ CHK_OOM(upb_inttable_insert(&e->iton, val->number, v, ctx->arena));
2538
+ }
2539
+ }
2540
+
2541
+ static void create_enumdef(
2542
+ symtab_addctx* ctx, const char* prefix,
2543
+ const google_protobuf_EnumDescriptorProto* enum_proto,
2544
+ const upb_MessageDef* containing_type, const upb_EnumDef* _e) {
2545
+ upb_EnumDef* e = (upb_EnumDef*)_e;
2546
+ ;
2547
+ const google_protobuf_EnumValueDescriptorProto* const* values;
2548
+ upb_StringView name;
2549
+ size_t i, n;
2550
+
2551
+ e->file = ctx->file; /* Must happen prior to symtab_add() */
2552
+ e->containing_type = containing_type;
2553
+
2554
+ name = google_protobuf_EnumDescriptorProto_name(enum_proto);
2555
+ check_ident(ctx, name, false);
2556
+
2557
+ e->full_name = makefullname(ctx, prefix, name);
2558
+ symtab_add(ctx, e->full_name, pack_def(e, UPB_DEFTYPE_ENUM));
2559
+
2560
+ values = google_protobuf_EnumDescriptorProto_value(enum_proto, &n);
2561
+ CHK_OOM(upb_strtable_init(&e->ntoi, n, ctx->arena));
2562
+ CHK_OOM(upb_inttable_init(&e->iton, ctx->arena));
2563
+
2564
+ e->defaultval = 0;
2565
+ e->value_count = n;
2566
+ e->values = symtab_alloc(ctx, sizeof(*e->values) * n);
2567
+
2568
+ if (n == 0) {
2569
+ symtab_errf(ctx, "enums must contain at least one value (%s)",
2570
+ e->full_name);
2571
+ }
2572
+
2573
+ SET_OPTIONS(e->opts, EnumDescriptorProto, EnumOptions, enum_proto);
2574
+
2575
+ for (i = 0; i < n; i++) {
2576
+ create_enumvaldef(ctx, prefix, values[i], e, i);
2577
+ }
2578
+
2579
+ upb_inttable_compact(&e->iton, ctx->arena);
2580
+
2581
+ if (e->file->syntax == kUpb_Syntax_Proto2) {
2582
+ if (ctx->layout) {
2583
+ UPB_ASSERT(ctx->enum_count < ctx->layout->enum_count);
2584
+ e->layout = ctx->layout->enums[ctx->enum_count++];
2585
+ UPB_ASSERT(upb_inttable_count(&e->iton) ==
2586
+ e->layout->value_count + count_bits_debug(e->layout->mask));
2587
+ } else {
2588
+ e->layout = create_enumlayout(ctx, e);
2589
+ }
2590
+ } else {
2591
+ e->layout = NULL;
2592
+ }
2593
+ }
2594
+
2595
+ static void msgdef_create_nested(
2596
+ symtab_addctx* ctx, const google_protobuf_DescriptorProto* msg_proto,
2597
+ upb_MessageDef* m);
2598
+
2599
+ static void create_msgdef(symtab_addctx* ctx, const char* prefix,
2600
+ const google_protobuf_DescriptorProto* msg_proto,
2601
+ const upb_MessageDef* containing_type,
2602
+ const upb_MessageDef* _m) {
2603
+ upb_MessageDef* m = (upb_MessageDef*)_m;
2604
+ const google_protobuf_OneofDescriptorProto* const* oneofs;
2605
+ const google_protobuf_FieldDescriptorProto* const* fields;
2606
+ const google_protobuf_DescriptorProto_ExtensionRange* const* ext_ranges;
2607
+ size_t i, n_oneof, n_field, n_ext_range;
2608
+ upb_StringView name;
2609
+
2610
+ m->file = ctx->file; /* Must happen prior to symtab_add(). */
2611
+ m->containing_type = containing_type;
2612
+
2613
+ name = google_protobuf_DescriptorProto_name(msg_proto);
2614
+ check_ident(ctx, name, false);
2615
+
2616
+ m->full_name = makefullname(ctx, prefix, name);
2617
+ symtab_add(ctx, m->full_name, pack_def(m, UPB_DEFTYPE_MSG));
2618
+
2619
+ oneofs = google_protobuf_DescriptorProto_oneof_decl(msg_proto, &n_oneof);
2620
+ fields = google_protobuf_DescriptorProto_field(msg_proto, &n_field);
2621
+ ext_ranges =
2622
+ google_protobuf_DescriptorProto_extension_range(msg_proto, &n_ext_range);
2623
+
2624
+ CHK_OOM(upb_inttable_init(&m->itof, ctx->arena));
2625
+ CHK_OOM(upb_strtable_init(&m->ntof, n_oneof + n_field, ctx->arena));
2626
+
2627
+ if (ctx->layout) {
2628
+ /* create_fielddef() below depends on this being set. */
2629
+ UPB_ASSERT(ctx->msg_count < ctx->layout->msg_count);
2630
+ m->layout = ctx->layout->msgs[ctx->msg_count++];
2631
+ UPB_ASSERT(n_field == m->layout->field_count);
2632
+ } else {
2633
+ /* Allocate now (to allow cross-linking), populate later. */
2634
+ m->layout =
2635
+ symtab_alloc(ctx, sizeof(*m->layout) + sizeof(_upb_FastTable_Entry));
2636
+ }
2637
+
2638
+ SET_OPTIONS(m->opts, DescriptorProto, MessageOptions, msg_proto);
2639
+
2640
+ m->oneof_count = n_oneof;
2641
+ m->oneofs = symtab_alloc(ctx, sizeof(*m->oneofs) * n_oneof);
2642
+ for (i = 0; i < n_oneof; i++) {
2643
+ create_oneofdef(ctx, m, oneofs[i], &m->oneofs[i]);
2644
+ }
2645
+
2646
+ m->field_count = n_field;
2647
+ m->fields = symtab_alloc(ctx, sizeof(*m->fields) * n_field);
2648
+ for (i = 0; i < n_field; i++) {
2649
+ create_fielddef(ctx, m->full_name, m, fields[i], &m->fields[i],
2650
+ /* is_extension= */ false);
2651
+ }
2652
+
2653
+ m->ext_range_count = n_ext_range;
2654
+ m->ext_ranges = symtab_alloc(ctx, sizeof(*m->ext_ranges) * n_ext_range);
2655
+ for (i = 0; i < n_ext_range; i++) {
2656
+ const google_protobuf_DescriptorProto_ExtensionRange* r = ext_ranges[i];
2657
+ upb_ExtensionRange* r_def = (upb_ExtensionRange*)&m->ext_ranges[i];
2658
+ int32_t start = google_protobuf_DescriptorProto_ExtensionRange_start(r);
2659
+ int32_t end = google_protobuf_DescriptorProto_ExtensionRange_end(r);
2660
+ int32_t max =
2661
+ google_protobuf_MessageOptions_message_set_wire_format(m->opts)
2662
+ ? INT32_MAX
2663
+ : kUpb_MaxFieldNumber + 1;
2664
+
2665
+ // A full validation would also check that each range is disjoint, and that
2666
+ // none of the fields overlap with the extension ranges, but we are just
2667
+ // sanity checking here.
2668
+ if (start < 1 || end <= start || end > max) {
2669
+ symtab_errf(ctx, "Extension range (%d, %d) is invalid, message=%s\n",
2670
+ (int)start, (int)end, m->full_name);
2671
+ }
2672
+
2673
+ r_def->start = start;
2674
+ r_def->end = end;
2675
+ SET_OPTIONS(r_def->opts, DescriptorProto_ExtensionRange,
2676
+ ExtensionRangeOptions, r);
2677
+ }
2678
+
2679
+ finalize_oneofs(ctx, m);
2680
+ assign_msg_wellknowntype(m);
2681
+ upb_inttable_compact(&m->itof, ctx->arena);
2682
+ msgdef_create_nested(ctx, msg_proto, m);
2683
+ }
2684
+
2685
+ static void msgdef_create_nested(
2686
+ symtab_addctx* ctx, const google_protobuf_DescriptorProto* msg_proto,
2687
+ upb_MessageDef* m) {
2688
+ size_t n;
2689
+
2690
+ const google_protobuf_EnumDescriptorProto* const* enums =
2691
+ google_protobuf_DescriptorProto_enum_type(msg_proto, &n);
2692
+ m->nested_enum_count = n;
2693
+ m->nested_enums = symtab_alloc(ctx, sizeof(*m->nested_enums) * n);
2694
+ for (size_t i = 0; i < n; i++) {
2695
+ m->nested_enum_count = i + 1;
2696
+ create_enumdef(ctx, m->full_name, enums[i], m, &m->nested_enums[i]);
2697
+ }
2698
+
2699
+ const google_protobuf_FieldDescriptorProto* const* exts =
2700
+ google_protobuf_DescriptorProto_extension(msg_proto, &n);
2701
+ m->nested_ext_count = n;
2702
+ m->nested_exts = symtab_alloc(ctx, sizeof(*m->nested_exts) * n);
2703
+ for (size_t i = 0; i < n; i++) {
2704
+ create_fielddef(ctx, m->full_name, m, exts[i], &m->nested_exts[i],
2705
+ /* is_extension= */ true);
2706
+ ((upb_FieldDef*)&m->nested_exts[i])->index_ = i;
2707
+ }
2708
+
2709
+ const google_protobuf_DescriptorProto* const* msgs =
2710
+ google_protobuf_DescriptorProto_nested_type(msg_proto, &n);
2711
+ m->nested_msg_count = n;
2712
+ m->nested_msgs = symtab_alloc(ctx, sizeof(*m->nested_msgs) * n);
2713
+ for (size_t i = 0; i < n; i++) {
2714
+ create_msgdef(ctx, m->full_name, msgs[i], m, &m->nested_msgs[i]);
2715
+ }
2716
+ }
2717
+
2718
+ static void resolve_subdef(symtab_addctx* ctx, const char* prefix,
2719
+ upb_FieldDef* f) {
2720
+ const google_protobuf_FieldDescriptorProto* field_proto = f->sub.unresolved;
2721
+ upb_StringView name =
2722
+ google_protobuf_FieldDescriptorProto_type_name(field_proto);
2723
+ bool has_name =
2724
+ google_protobuf_FieldDescriptorProto_has_type_name(field_proto);
2725
+ switch ((int)f->type_) {
2726
+ case FIELD_TYPE_UNSPECIFIED: {
2727
+ // Type was not specified and must be inferred.
2728
+ UPB_ASSERT(has_name);
2729
+ upb_deftype_t type;
2730
+ const void* def =
2731
+ symtab_resolveany(ctx, f->full_name, prefix, name, &type);
2732
+ switch (type) {
2733
+ case UPB_DEFTYPE_ENUM:
2734
+ f->sub.enumdef = def;
2735
+ f->type_ = kUpb_FieldType_Enum;
2736
+ break;
2737
+ case UPB_DEFTYPE_MSG:
2738
+ f->sub.msgdef = def;
2739
+ f->type_ = kUpb_FieldType_Message; // It appears there is no way of
2740
+ // this being a group.
2741
+ break;
2742
+ default:
2743
+ symtab_errf(ctx, "Couldn't resolve type name for field %s",
2744
+ f->full_name);
2745
+ }
2746
+ }
2747
+ case kUpb_FieldType_Message:
2748
+ case kUpb_FieldType_Group:
2749
+ UPB_ASSERT(has_name);
2750
+ f->sub.msgdef =
2751
+ symtab_resolve(ctx, f->full_name, prefix, name, UPB_DEFTYPE_MSG);
2752
+ break;
2753
+ case kUpb_FieldType_Enum:
2754
+ UPB_ASSERT(has_name);
2755
+ f->sub.enumdef =
2756
+ symtab_resolve(ctx, f->full_name, prefix, name, UPB_DEFTYPE_ENUM);
2757
+ break;
2758
+ default:
2759
+ // No resolution necessary.
2760
+ break;
2761
+ }
2762
+ }
2763
+
2764
+ static void resolve_extension(
2765
+ symtab_addctx* ctx, const char* prefix, upb_FieldDef* f,
2766
+ const google_protobuf_FieldDescriptorProto* field_proto) {
2767
+ if (!google_protobuf_FieldDescriptorProto_has_extendee(field_proto)) {
2768
+ symtab_errf(ctx, "extension for field '%s' had no extendee", f->full_name);
2769
+ }
2770
+
2771
+ upb_StringView name =
2772
+ google_protobuf_FieldDescriptorProto_extendee(field_proto);
2773
+ const upb_MessageDef* m =
2774
+ symtab_resolve(ctx, f->full_name, prefix, name, UPB_DEFTYPE_MSG);
2775
+ f->msgdef = m;
2776
+
2777
+ bool found = false;
2778
+
2779
+ for (int i = 0, n = m->ext_range_count; i < n; i++) {
2780
+ const upb_ExtensionRange* r = &m->ext_ranges[i];
2781
+ if (r->start <= f->number_ && f->number_ < r->end) {
2782
+ found = true;
2783
+ break;
2784
+ }
2785
+ }
2786
+
2787
+ if (!found) {
2788
+ symtab_errf(ctx,
2789
+ "field number %u in extension %s has no extension range in "
2790
+ "message %s",
2791
+ (unsigned)f->number_, f->full_name, f->msgdef->full_name);
2792
+ }
2793
+
2794
+ const upb_MiniTable_Extension* ext = ctx->file->ext_layouts[f->layout_index];
2795
+ if (ctx->layout) {
2796
+ UPB_ASSERT(upb_FieldDef_Number(f) == ext->field.number);
2797
+ } else {
2798
+ upb_MiniTable_Extension* mut_ext = (upb_MiniTable_Extension*)ext;
2799
+ fill_fieldlayout(&mut_ext->field, f);
2800
+ mut_ext->field.presence = 0;
2801
+ mut_ext->field.offset = 0;
2802
+ mut_ext->field.submsg_index = 0;
2803
+ mut_ext->extendee = f->msgdef->layout;
2804
+ mut_ext->sub.submsg = f->sub.msgdef->layout;
2805
+ }
2806
+
2807
+ CHK_OOM(upb_inttable_insert(&ctx->symtab->exts, (uintptr_t)ext,
2808
+ upb_value_constptr(f), ctx->arena));
2809
+ }
2810
+
2811
+ static void resolve_default(
2812
+ symtab_addctx* ctx, upb_FieldDef* f,
2813
+ const google_protobuf_FieldDescriptorProto* field_proto) {
2814
+ // Have to delay resolving of the default value until now because of the enum
2815
+ // case, since enum defaults are specified with a label.
2816
+ if (google_protobuf_FieldDescriptorProto_has_default_value(field_proto)) {
2817
+ upb_StringView defaultval =
2818
+ google_protobuf_FieldDescriptorProto_default_value(field_proto);
2819
+
2820
+ if (f->file->syntax == kUpb_Syntax_Proto3) {
2821
+ symtab_errf(ctx, "proto3 fields cannot have explicit defaults (%s)",
2822
+ f->full_name);
2823
+ }
2824
+
2825
+ if (upb_FieldDef_IsSubMessage(f)) {
2826
+ symtab_errf(ctx, "message fields cannot have explicit defaults (%s)",
2827
+ f->full_name);
2828
+ }
2829
+
2830
+ parse_default(ctx, defaultval.data, defaultval.size, f);
2831
+ f->has_default = true;
2832
+ } else {
2833
+ set_default_default(ctx, f);
2834
+ f->has_default = false;
2835
+ }
2836
+ }
2837
+
2838
+ static void resolve_fielddef(symtab_addctx* ctx, const char* prefix,
2839
+ upb_FieldDef* f) {
2840
+ // We have to stash this away since resolve_subdef() may overwrite it.
2841
+ const google_protobuf_FieldDescriptorProto* field_proto = f->sub.unresolved;
2842
+
2843
+ resolve_subdef(ctx, prefix, f);
2844
+ resolve_default(ctx, f, field_proto);
2845
+
2846
+ if (f->is_extension_) {
2847
+ resolve_extension(ctx, prefix, f, field_proto);
2848
+ }
2849
+ }
2850
+
2851
+ static void resolve_msgdef(symtab_addctx* ctx, upb_MessageDef* m) {
2852
+ for (int i = 0; i < m->field_count; i++) {
2853
+ resolve_fielddef(ctx, m->full_name, (upb_FieldDef*)&m->fields[i]);
2854
+ }
2855
+
2856
+ m->in_message_set = false;
2857
+ for (int i = 0; i < m->nested_ext_count; i++) {
2858
+ upb_FieldDef* ext = (upb_FieldDef*)&m->nested_exts[i];
2859
+ resolve_fielddef(ctx, m->full_name, ext);
2860
+ if (ext->type_ == kUpb_FieldType_Message &&
2861
+ ext->label_ == kUpb_Label_Optional && ext->sub.msgdef == m &&
2862
+ google_protobuf_MessageOptions_message_set_wire_format(
2863
+ ext->msgdef->opts)) {
2864
+ m->in_message_set = true;
2865
+ }
2866
+ }
2867
+
2868
+ if (!ctx->layout) make_layout(ctx, m);
2869
+
2870
+ for (int i = 0; i < m->nested_msg_count; i++) {
2871
+ resolve_msgdef(ctx, (upb_MessageDef*)&m->nested_msgs[i]);
2872
+ }
2873
+ }
2874
+
2875
+ static int count_exts_in_msg(const google_protobuf_DescriptorProto* msg_proto) {
2876
+ size_t n;
2877
+ google_protobuf_DescriptorProto_extension(msg_proto, &n);
2878
+ int ext_count = n;
2879
+
2880
+ const google_protobuf_DescriptorProto* const* nested_msgs =
2881
+ google_protobuf_DescriptorProto_nested_type(msg_proto, &n);
2882
+ for (size_t i = 0; i < n; i++) {
2883
+ ext_count += count_exts_in_msg(nested_msgs[i]);
2884
+ }
2885
+
2886
+ return ext_count;
2887
+ }
2888
+
2889
+ static void build_filedef(
2890
+ symtab_addctx* ctx, upb_FileDef* file,
2891
+ const google_protobuf_FileDescriptorProto* file_proto) {
2892
+ const google_protobuf_DescriptorProto* const* msgs;
2893
+ const google_protobuf_EnumDescriptorProto* const* enums;
2894
+ const google_protobuf_FieldDescriptorProto* const* exts;
2895
+ const google_protobuf_ServiceDescriptorProto* const* services;
2896
+ const upb_StringView* strs;
2897
+ const int32_t* public_deps;
2898
+ const int32_t* weak_deps;
2899
+ size_t i, n;
2900
+
2901
+ file->symtab = ctx->symtab;
2902
+
2903
+ /* Count all extensions in the file, to build a flat array of layouts. */
2904
+ google_protobuf_FileDescriptorProto_extension(file_proto, &n);
2905
+ int ext_count = n;
2906
+ msgs = google_protobuf_FileDescriptorProto_message_type(file_proto, &n);
2907
+ for (int i = 0; i < n; i++) {
2908
+ ext_count += count_exts_in_msg(msgs[i]);
2909
+ }
2910
+ file->ext_count = ext_count;
2911
+
2912
+ if (ctx->layout) {
2913
+ /* We are using the ext layouts that were passed in. */
2914
+ file->ext_layouts = ctx->layout->exts;
2915
+ if (ctx->layout->ext_count != file->ext_count) {
2916
+ symtab_errf(ctx, "Extension count did not match layout (%d vs %d)",
2917
+ ctx->layout->ext_count, file->ext_count);
2918
+ }
2919
+ } else {
2920
+ /* We are building ext layouts from scratch. */
2921
+ file->ext_layouts =
2922
+ symtab_alloc(ctx, sizeof(*file->ext_layouts) * file->ext_count);
2923
+ upb_MiniTable_Extension* ext =
2924
+ symtab_alloc(ctx, sizeof(*ext) * file->ext_count);
2925
+ for (int i = 0; i < file->ext_count; i++) {
2926
+ file->ext_layouts[i] = &ext[i];
2927
+ }
2928
+ }
2929
+
2930
+ if (!google_protobuf_FileDescriptorProto_has_name(file_proto)) {
2931
+ symtab_errf(ctx, "File has no name");
2932
+ }
2933
+
2934
+ file->name =
2935
+ strviewdup(ctx, google_protobuf_FileDescriptorProto_name(file_proto));
2936
+
2937
+ if (google_protobuf_FileDescriptorProto_has_package(file_proto)) {
2938
+ upb_StringView package =
2939
+ google_protobuf_FileDescriptorProto_package(file_proto);
2940
+ check_ident(ctx, package, true);
2941
+ file->package = strviewdup(ctx, package);
2942
+ } else {
2943
+ file->package = NULL;
2944
+ }
2945
+
2946
+ if (google_protobuf_FileDescriptorProto_has_syntax(file_proto)) {
2947
+ upb_StringView syntax =
2948
+ google_protobuf_FileDescriptorProto_syntax(file_proto);
2949
+
2950
+ if (streql_view(syntax, "proto2")) {
2951
+ file->syntax = kUpb_Syntax_Proto2;
2952
+ } else if (streql_view(syntax, "proto3")) {
2953
+ file->syntax = kUpb_Syntax_Proto3;
2954
+ } else {
2955
+ symtab_errf(ctx, "Invalid syntax '" UPB_STRINGVIEW_FORMAT "'",
2956
+ UPB_STRINGVIEW_ARGS(syntax));
2957
+ }
2958
+ } else {
2959
+ file->syntax = kUpb_Syntax_Proto2;
2960
+ }
2961
+
2962
+ /* Read options. */
2963
+ SET_OPTIONS(file->opts, FileDescriptorProto, FileOptions, file_proto);
2964
+
2965
+ /* Verify dependencies. */
2966
+ strs = google_protobuf_FileDescriptorProto_dependency(file_proto, &n);
2967
+ file->dep_count = n;
2968
+ file->deps = symtab_alloc(ctx, sizeof(*file->deps) * n);
2969
+
2970
+ for (i = 0; i < n; i++) {
2971
+ upb_StringView str = strs[i];
2972
+ file->deps[i] =
2973
+ upb_DefPool_FindFileByNameWithSize(ctx->symtab, str.data, str.size);
2974
+ if (!file->deps[i]) {
2975
+ symtab_errf(ctx,
2976
+ "Depends on file '" UPB_STRINGVIEW_FORMAT
2977
+ "', but it has not been loaded",
2978
+ UPB_STRINGVIEW_ARGS(str));
2979
+ }
2980
+ }
2981
+
2982
+ public_deps =
2983
+ google_protobuf_FileDescriptorProto_public_dependency(file_proto, &n);
2984
+ file->public_dep_count = n;
2985
+ file->public_deps = symtab_alloc(ctx, sizeof(*file->public_deps) * n);
2986
+ int32_t* mutable_public_deps = (int32_t*)file->public_deps;
2987
+ for (i = 0; i < n; i++) {
2988
+ if (public_deps[i] >= file->dep_count) {
2989
+ symtab_errf(ctx, "public_dep %d is out of range", (int)public_deps[i]);
2990
+ }
2991
+ mutable_public_deps[i] = public_deps[i];
2992
+ }
2993
+
2994
+ weak_deps =
2995
+ google_protobuf_FileDescriptorProto_weak_dependency(file_proto, &n);
2996
+ file->weak_dep_count = n;
2997
+ file->weak_deps = symtab_alloc(ctx, sizeof(*file->weak_deps) * n);
2998
+ int32_t* mutable_weak_deps = (int32_t*)file->weak_deps;
2999
+ for (i = 0; i < n; i++) {
3000
+ if (weak_deps[i] >= file->dep_count) {
3001
+ symtab_errf(ctx, "weak_dep %d is out of range", (int)weak_deps[i]);
3002
+ }
3003
+ mutable_weak_deps[i] = weak_deps[i];
3004
+ }
3005
+
3006
+ /* Create enums. */
3007
+ enums = google_protobuf_FileDescriptorProto_enum_type(file_proto, &n);
3008
+ file->top_lvl_enum_count = n;
3009
+ file->top_lvl_enums = symtab_alloc(ctx, sizeof(*file->top_lvl_enums) * n);
3010
+ for (i = 0; i < n; i++) {
3011
+ create_enumdef(ctx, file->package, enums[i], NULL, &file->top_lvl_enums[i]);
3012
+ }
3013
+
3014
+ /* Create extensions. */
3015
+ exts = google_protobuf_FileDescriptorProto_extension(file_proto, &n);
3016
+ file->top_lvl_ext_count = n;
3017
+ file->top_lvl_exts = symtab_alloc(ctx, sizeof(*file->top_lvl_exts) * n);
3018
+ for (i = 0; i < n; i++) {
3019
+ create_fielddef(ctx, file->package, NULL, exts[i], &file->top_lvl_exts[i],
3020
+ /* is_extension= */ true);
3021
+ ((upb_FieldDef*)&file->top_lvl_exts[i])->index_ = i;
3022
+ }
3023
+
3024
+ /* Create messages. */
3025
+ msgs = google_protobuf_FileDescriptorProto_message_type(file_proto, &n);
3026
+ file->top_lvl_msg_count = n;
3027
+ file->top_lvl_msgs = symtab_alloc(ctx, sizeof(*file->top_lvl_msgs) * n);
3028
+ for (i = 0; i < n; i++) {
3029
+ create_msgdef(ctx, file->package, msgs[i], NULL, &file->top_lvl_msgs[i]);
3030
+ }
3031
+
3032
+ /* Create services. */
3033
+ services = google_protobuf_FileDescriptorProto_service(file_proto, &n);
3034
+ file->service_count = n;
3035
+ file->services = symtab_alloc(ctx, sizeof(*file->services) * n);
3036
+ for (i = 0; i < n; i++) {
3037
+ create_service(ctx, services[i], &file->services[i]);
3038
+ ((upb_ServiceDef*)&file->services[i])->index = i;
3039
+ }
3040
+
3041
+ /* Now that all names are in the table, build layouts and resolve refs. */
3042
+ for (i = 0; i < (size_t)file->top_lvl_ext_count; i++) {
3043
+ resolve_fielddef(ctx, file->package, (upb_FieldDef*)&file->top_lvl_exts[i]);
3044
+ }
3045
+
3046
+ for (i = 0; i < (size_t)file->top_lvl_msg_count; i++) {
3047
+ resolve_msgdef(ctx, (upb_MessageDef*)&file->top_lvl_msgs[i]);
3048
+ }
3049
+
3050
+ if (file->ext_count) {
3051
+ CHK_OOM(_upb_extreg_add(ctx->symtab->extreg, file->ext_layouts,
3052
+ file->ext_count));
3053
+ }
3054
+ }
3055
+
3056
+ static void remove_filedef(upb_DefPool* s, upb_FileDef* file) {
3057
+ intptr_t iter = UPB_INTTABLE_BEGIN;
3058
+ upb_StringView key;
3059
+ upb_value val;
3060
+ while (upb_strtable_next2(&s->syms, &key, &val, &iter)) {
3061
+ const upb_FileDef* f;
3062
+ switch (deftype(val)) {
3063
+ case UPB_DEFTYPE_EXT:
3064
+ f = upb_FieldDef_File(unpack_def(val, UPB_DEFTYPE_EXT));
3065
+ break;
3066
+ case UPB_DEFTYPE_MSG:
3067
+ f = upb_MessageDef_File(unpack_def(val, UPB_DEFTYPE_MSG));
3068
+ break;
3069
+ case UPB_DEFTYPE_ENUM:
3070
+ f = upb_EnumDef_File(unpack_def(val, UPB_DEFTYPE_ENUM));
3071
+ break;
3072
+ case UPB_DEFTYPE_ENUMVAL:
3073
+ f = upb_EnumDef_File(
3074
+ upb_EnumValueDef_Enum(unpack_def(val, UPB_DEFTYPE_ENUMVAL)));
3075
+ break;
3076
+ case UPB_DEFTYPE_SERVICE:
3077
+ f = upb_ServiceDef_File(unpack_def(val, UPB_DEFTYPE_SERVICE));
3078
+ break;
3079
+ default:
3080
+ UPB_UNREACHABLE();
3081
+ }
3082
+
3083
+ if (f == file) upb_strtable_removeiter(&s->syms, &iter);
3084
+ }
3085
+ }
3086
+
3087
+ static const upb_FileDef* _upb_DefPool_AddFile(
3088
+ upb_DefPool* s, const google_protobuf_FileDescriptorProto* file_proto,
3089
+ const upb_MiniTable_File* layout, upb_Status* status) {
3090
+ symtab_addctx ctx;
3091
+ upb_StringView name = google_protobuf_FileDescriptorProto_name(file_proto);
3092
+ upb_value v;
3093
+
3094
+ if (upb_strtable_lookup2(&s->files, name.data, name.size, &v)) {
3095
+ if (unpack_def(v, UPB_DEFTYPE_FILE)) {
3096
+ upb_Status_SetErrorFormat(status, "duplicate file name (%.*s)",
3097
+ UPB_STRINGVIEW_ARGS(name));
3098
+ return NULL;
3099
+ }
3100
+ const upb_MiniTable_File* registered = unpack_def(v, UPB_DEFTYPE_LAYOUT);
3101
+ UPB_ASSERT(registered);
3102
+ if (layout && layout != registered) {
3103
+ upb_Status_SetErrorFormat(
3104
+ status, "tried to build with a different layout (filename=%.*s)",
3105
+ UPB_STRINGVIEW_ARGS(name));
3106
+ return NULL;
3107
+ }
3108
+ layout = registered;
3109
+ }
3110
+
3111
+ ctx.symtab = s;
3112
+ ctx.layout = layout;
3113
+ ctx.msg_count = 0;
3114
+ ctx.enum_count = 0;
3115
+ ctx.ext_count = 0;
3116
+ ctx.status = status;
3117
+ ctx.file = NULL;
3118
+ ctx.arena = upb_Arena_New();
3119
+ ctx.tmp_arena = upb_Arena_New();
3120
+
3121
+ if (!ctx.arena || !ctx.tmp_arena) {
3122
+ if (ctx.arena) upb_Arena_Free(ctx.arena);
3123
+ if (ctx.tmp_arena) upb_Arena_Free(ctx.tmp_arena);
3124
+ upb_Status_setoom(status);
3125
+ return NULL;
3126
+ }
3127
+
3128
+ if (UPB_UNLIKELY(UPB_SETJMP(ctx.err))) {
3129
+ UPB_ASSERT(!upb_Status_IsOk(status));
3130
+ if (ctx.file) {
3131
+ remove_filedef(s, ctx.file);
3132
+ ctx.file = NULL;
3133
+ }
3134
+ } else {
3135
+ ctx.file = symtab_alloc(&ctx, sizeof(*ctx.file));
3136
+ build_filedef(&ctx, ctx.file, file_proto);
3137
+ upb_strtable_insert(&s->files, name.data, name.size,
3138
+ pack_def(ctx.file, UPB_DEFTYPE_FILE), ctx.arena);
3139
+ UPB_ASSERT(upb_Status_IsOk(status));
3140
+ upb_Arena_Fuse(s->arena, ctx.arena);
3141
+ }
3142
+
3143
+ upb_Arena_Free(ctx.arena);
3144
+ upb_Arena_Free(ctx.tmp_arena);
3145
+ return ctx.file;
3146
+ }
3147
+
3148
+ const upb_FileDef* upb_DefPool_AddFile(
3149
+ upb_DefPool* s, const google_protobuf_FileDescriptorProto* file_proto,
3150
+ upb_Status* status) {
3151
+ return _upb_DefPool_AddFile(s, file_proto, NULL, status);
3152
+ }
3153
+
3154
+ /* Include here since we want most of this file to be stdio-free. */
3155
+ #include <stdio.h>
3156
+
3157
+ bool _upb_DefPool_LoadDefInitEx(upb_DefPool* s, const _upb_DefPool_Init* init,
3158
+ bool rebuild_minitable) {
3159
+ /* Since this function should never fail (it would indicate a bug in upb) we
3160
+ * print errors to stderr instead of returning error status to the user. */
3161
+ _upb_DefPool_Init** deps = init->deps;
3162
+ google_protobuf_FileDescriptorProto* file;
3163
+ upb_Arena* arena;
3164
+ upb_Status status;
3165
+
3166
+ upb_Status_Clear(&status);
3167
+
3168
+ if (upb_DefPool_FindFileByName(s, init->filename)) {
3169
+ return true;
3170
+ }
3171
+
3172
+ arena = upb_Arena_New();
3173
+
3174
+ for (; *deps; deps++) {
3175
+ if (!_upb_DefPool_LoadDefInitEx(s, *deps, rebuild_minitable)) goto err;
3176
+ }
3177
+
3178
+ file = google_protobuf_FileDescriptorProto_parse_ex(
3179
+ init->descriptor.data, init->descriptor.size, NULL,
3180
+ kUpb_DecodeOption_AliasString, arena);
3181
+ s->bytes_loaded += init->descriptor.size;
3182
+
3183
+ if (!file) {
3184
+ upb_Status_SetErrorFormat(
3185
+ &status,
3186
+ "Failed to parse compiled-in descriptor for file '%s'. This should "
3187
+ "never happen.",
3188
+ init->filename);
3189
+ goto err;
3190
+ }
3191
+
3192
+ const upb_MiniTable_File* mt = rebuild_minitable ? NULL : init->layout;
3193
+ if (!_upb_DefPool_AddFile(s, file, mt, &status)) {
3194
+ goto err;
3195
+ }
3196
+
3197
+ upb_Arena_Free(arena);
3198
+ return true;
3199
+
3200
+ err:
3201
+ fprintf(stderr,
3202
+ "Error loading compiled-in descriptor for file '%s' (this should "
3203
+ "never happen): %s\n",
3204
+ init->filename, upb_Status_ErrorMessage(&status));
3205
+ upb_Arena_Free(arena);
3206
+ return false;
3207
+ }
3208
+
3209
+ size_t _upb_DefPool_BytesLoaded(const upb_DefPool* s) {
3210
+ return s->bytes_loaded;
3211
+ }
3212
+
3213
+ upb_Arena* _upb_DefPool_Arena(const upb_DefPool* s) { return s->arena; }
3214
+
3215
+ const upb_FieldDef* _upb_DefPool_FindExtensionByMiniTable(
3216
+ const upb_DefPool* s, const upb_MiniTable_Extension* ext) {
3217
+ upb_value v;
3218
+ bool ok = upb_inttable_lookup(&s->exts, (uintptr_t)ext, &v);
3219
+ UPB_ASSERT(ok);
3220
+ return upb_value_getconstptr(v);
3221
+ }
3222
+
3223
+ const upb_FieldDef* upb_DefPool_FindExtensionByNumber(const upb_DefPool* s,
3224
+ const upb_MessageDef* m,
3225
+ int32_t fieldnum) {
3226
+ const upb_MiniTable* l = upb_MessageDef_MiniTable(m);
3227
+ const upb_MiniTable_Extension* ext = _upb_extreg_get(s->extreg, l, fieldnum);
3228
+ return ext ? _upb_DefPool_FindExtensionByMiniTable(s, ext) : NULL;
3229
+ }
3230
+
3231
+ bool _upb_DefPool_registerlayout(upb_DefPool* s, const char* filename,
3232
+ const upb_MiniTable_File* file) {
3233
+ if (upb_DefPool_FindFileByName(s, filename)) return false;
3234
+ upb_value v = pack_def(file, UPB_DEFTYPE_LAYOUT);
3235
+ return upb_strtable_insert(&s->files, filename, strlen(filename), v,
3236
+ s->arena);
3237
+ }
3238
+
3239
+ const upb_ExtensionRegistry* upb_DefPool_ExtensionRegistry(
3240
+ const upb_DefPool* s) {
3241
+ return s->extreg;
3242
+ }
3243
+
3244
+ const upb_FieldDef** upb_DefPool_GetAllExtensions(const upb_DefPool* s,
3245
+ const upb_MessageDef* m,
3246
+ size_t* count) {
3247
+ size_t n = 0;
3248
+ intptr_t iter = UPB_INTTABLE_BEGIN;
3249
+ uintptr_t key;
3250
+ upb_value val;
3251
+ // This is O(all exts) instead of O(exts for m). If we need this to be
3252
+ // efficient we may need to make extreg into a two-level table, or have a
3253
+ // second per-message index.
3254
+ while (upb_inttable_next2(&s->exts, &key, &val, &iter)) {
3255
+ const upb_FieldDef* f = upb_value_getconstptr(val);
3256
+ if (upb_FieldDef_ContainingType(f) == m) n++;
3257
+ }
3258
+ const upb_FieldDef** exts = malloc(n * sizeof(*exts));
3259
+ iter = UPB_INTTABLE_BEGIN;
3260
+ size_t i = 0;
3261
+ while (upb_inttable_next2(&s->exts, &key, &val, &iter)) {
3262
+ const upb_FieldDef* f = upb_value_getconstptr(val);
3263
+ if (upb_FieldDef_ContainingType(f) == m) exts[i++] = f;
3264
+ }
3265
+ *count = n;
3266
+ return exts;
3267
+ }
3268
+
3269
+ #undef CHK_OOM