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