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