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