grpc 1.34.0 → 1.42.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 +978 -2868
- data/etc/roots.pem +592 -899
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -1
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +43 -0
- data/include/grpc/event_engine/event_engine.h +375 -0
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +49 -4
- data/include/grpc/grpc_posix.h +5 -2
- data/include/grpc/grpc_security.h +127 -14
- data/include/grpc/grpc_security_constants.h +16 -0
- data/include/grpc/impl/codegen/atm.h +5 -3
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
- data/include/grpc/impl/codegen/atm_windows.h +6 -0
- data/include/grpc/impl/codegen/byte_buffer.h +3 -1
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -0
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/fork.h +2 -0
- data/include/grpc/impl/codegen/gpr_slice.h +2 -0
- data/include/grpc/impl/codegen/gpr_types.h +2 -0
- data/include/grpc/impl/codegen/grpc_types.h +49 -25
- data/include/grpc/impl/codegen/log.h +2 -2
- data/include/grpc/impl/codegen/port_platform.h +81 -22
- data/include/grpc/impl/codegen/propagation_bits.h +2 -0
- data/include/grpc/impl/codegen/slice.h +2 -0
- data/include/grpc/impl/codegen/status.h +2 -0
- data/include/grpc/impl/codegen/sync.h +8 -5
- data/include/grpc/impl/codegen/sync_abseil.h +2 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +3 -0
- data/include/grpc/impl/codegen/sync_posix.h +4 -2
- data/include/grpc/impl/codegen/sync_windows.h +6 -0
- data/include/grpc/module.modulemap +14 -14
- data/include/grpc/slice.h +1 -1
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +1 -1
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_windows.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/sync.h +4 -4
- data/include/grpc/support/sync_abseil.h +1 -1
- data/include/grpc/support/sync_custom.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_windows.h +1 -1
- data/include/grpc/support/time.h +9 -9
- data/src/core/ext/filters/census/grpc_context.cc +1 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +20 -24
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
- data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +158 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +2009 -3145
- data/src/core/ext/filters/client_channel/client_channel.h +559 -60
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +18 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
- data/src/core/ext/filters/client_channel/config_selector.h +33 -9
- data/src/core/ext/filters/client_channel/connector.h +19 -19
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +190 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -11
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +53 -50
- data/src/core/ext/filters/client_channel/health/health_check_client.h +35 -33
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +37 -34
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.cc +36 -20
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -21
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +246 -166
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +5 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +37 -30
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +53 -55
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +757 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +16 -18
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +24 -27
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +385 -135
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +57 -71
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +43 -64
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1362 -0
- data/src/core/ext/filters/client_channel/lb_policy.cc +6 -17
- data/src/core/ext/filters/client_channel/lb_policy.h +93 -93
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -11
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +76 -88
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +26 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +473 -74
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +27 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +45 -35
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +43 -46
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +384 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +22 -35
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +466 -254
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +4 -15
- data/src/core/ext/filters/client_channel/resolver_factory.h +8 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +43 -44
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +42 -252
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +25 -54
- data/src/core/ext/filters/client_channel/retry_filter.cc +2573 -0
- data/src/core/ext/filters/{workarounds/workaround_cronet_compression_filter.h → client_channel/retry_filter.h} +9 -6
- data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +20 -49
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
- data/src/core/ext/filters/client_channel/server_address.cc +10 -1
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +54 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +179 -329
- data/src/core/ext/filters/client_channel/subchannel.h +101 -158
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +38 -9
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +21 -10
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +47 -223
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +33 -34
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +503 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +181 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +77 -69
- data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -68
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -35
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +29 -30
- data/src/core/ext/filters/http/server/http_server_filter.cc +104 -95
- data/src/core/ext/filters/max_age/max_age_filter.cc +71 -68
- data/src/core/ext/filters/message_size/message_size_filter.cc +43 -41
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +17 -16
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +11 -10
- data/src/core/ext/{filters/client_channel → service_config}/service_config_call_data.h +23 -19
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +9 -9
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +15 -10
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +37 -23
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +42 -35
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +32 -16
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +51 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +664 -236
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -5
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +25 -11
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +61 -22
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +264 -223
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +16 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +5 -6
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +59 -40
- data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +28 -24
- data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +21 -20
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +13 -13
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +8 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -15
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +49 -17
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +22 -19
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +311 -665
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +240 -70
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +107 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +69 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +865 -1172
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +100 -81
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +146 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +137 -0
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +46 -0
- data/src/core/{lib/transport/authority_override.h → ext/transport/chttp2/transport/hpack_utils.h} +8 -12
- data/src/core/ext/transport/chttp2/transport/internal.h +40 -33
- data/src/core/ext/transport/chttp2/transport/parsing.cc +156 -286
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +60 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +69 -54
- data/src/core/ext/transport/inproc/inproc_transport.cc +204 -160
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1591 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +2 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +48 -49
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +245 -56
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +371 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1554 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +66 -21
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +178 -142
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +795 -314
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +21 -7
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +25 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +70 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +29 -29
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +138 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +23 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +147 -75
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +522 -96
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +27 -27
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +116 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +63 -63
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +228 -63
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +57 -56
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +244 -98
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +25 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +125 -57
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +533 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +3 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +17 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +15 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +56 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +96 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +16 -17
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +81 -40
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +56 -22
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +223 -34
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +137 -72
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +19 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +48 -38
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +276 -103
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +203 -62
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +177 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +10 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +55 -22
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +153 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +550 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +51 -44
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +165 -43
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +35 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +148 -40
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +339 -279
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +1466 -543
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +10 -10
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +48 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +6 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +32 -6
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +298 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +303 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +123 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +151 -112
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +693 -244
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +1 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +52 -32
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +231 -59
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +15 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +51 -28
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +45 -44
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +178 -74
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +58 -51
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +221 -135
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +2 -5
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +2 -5
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +9 -10
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +46 -19
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +468 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +205 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +9 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +44 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +96 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +10 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +51 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +10 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +31 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +41 -4
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +96 -11
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +19 -19
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +77 -14
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +30 -5
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +10 -10
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +41 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +15 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +2 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +62 -62
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +227 -84
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +86 -69
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +256 -72
- data/src/core/ext/upb-generated/google/api/http.upb.c +18 -18
- data/src/core/ext/upb-generated/google/api/http.upb.h +47 -10
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +15 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +154 -154
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +645 -320
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +15 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +15 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +44 -7
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +15 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +19 -19
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +119 -10
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +5 -5
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +18 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +19 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +63 -63
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +220 -87
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +36 -9
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +28 -3
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +146 -35
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +8 -8
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +41 -4
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +4 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +15 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +2 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +4 -4
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +17 -4
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +15 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +243 -227
- data/src/core/ext/upb-generated/validate/validate.upb.h +626 -253
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +66 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +155 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +90 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +100 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +178 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +91 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -170
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +424 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +467 -429
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +12 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +156 -109
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +25 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +89 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +156 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +240 -168
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +20 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +37 -20
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +90 -63
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +137 -122
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +136 -120
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +31 -26
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -51
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +748 -681
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +123 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +79 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +435 -379
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +121 -91
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +182 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +163 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +14 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +8 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +100 -100
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +8 -8
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -157
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +2 -2
- data/src/core/ext/xds/certificate_provider_store.cc +10 -7
- data/src/core/ext/xds/certificate_provider_store.h +15 -10
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +28 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +3 -6
- data/src/core/ext/xds/xds_api.cc +2654 -808
- data/src/core/ext/xds/xds_api.h +460 -154
- data/src/core/ext/xds/xds_bootstrap.cc +139 -188
- data/src/core/ext/xds/xds_bootstrap.h +34 -18
- data/src/core/ext/xds/xds_certificate_provider.cc +237 -72
- data/src/core/ext/xds/xds_certificate_provider.h +104 -27
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +985 -429
- data/src/core/ext/xds/xds_client.h +100 -51
- data/src/core/ext/xds/xds_client_stats.cc +18 -16
- data/src/core/ext/xds/xds_client_stats.h +12 -11
- data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
- data/src/core/ext/xds/xds_http_filters.cc +116 -0
- data/src/core/ext/xds/xds_http_filters.h +133 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +544 -0
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +72 -68
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +20 -16
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +131 -15
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +37 -7
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_args.cc +34 -15
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack.cc +27 -12
- data/src/core/lib/channel/channel_stack.h +18 -10
- data/src/core/lib/channel/channel_stack_builder.cc +6 -16
- data/src/core/lib/channel/channel_stack_builder.h +1 -9
- data/src/core/lib/channel/channel_trace.cc +5 -4
- data/src/core/lib/channel/channel_trace.h +3 -2
- data/src/core/lib/channel/channelz.cc +162 -63
- data/src/core/lib/channel/channelz.h +62 -31
- data/src/core/lib/channel/channelz_registry.cc +22 -7
- data/src/core/lib/channel/channelz_registry.h +1 -2
- data/src/core/lib/channel/connected_channel.cc +6 -7
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/channel/context.h +3 -0
- data/src/core/lib/channel/handshaker.cc +13 -53
- data/src/core/lib/channel/handshaker.h +7 -25
- data/src/core/lib/channel/handshaker_factory.h +10 -2
- data/src/core/lib/channel/handshaker_registry.cc +15 -70
- data/src/core/lib/channel/handshaker_registry.h +29 -12
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +11 -2
- data/src/core/lib/compression/algorithm_metadata.h +1 -0
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +11 -7
- data/src/core/lib/compression/compression_internal.cc +4 -6
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/compression/message_compress.cc +2 -2
- data/src/core/lib/compression/stream_compression.cc +2 -1
- data/src/core/lib/compression/stream_compression.h +3 -2
- data/src/core/lib/compression/stream_compression_gzip.cc +2 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.cc +2 -1
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/config/core_configuration.cc +96 -0
- data/src/core/lib/config/core_configuration.h +146 -0
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats.h +4 -3
- data/src/core/lib/debug/stats_data.cc +15 -14
- data/src/core/lib/debug/stats_data.h +14 -13
- data/src/core/lib/debug/trace.cc +1 -0
- data/src/core/lib/debug/trace.h +2 -1
- data/src/core/lib/event_engine/endpoint_config.cc +45 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/alloc.cc +7 -5
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -2
- data/src/core/lib/gpr/env_posix.cc +2 -3
- data/src/core/lib/gpr/log.cc +61 -19
- data/src/core/lib/gpr/log_android.cc +3 -2
- data/src/core/lib/gpr/log_linux.cc +10 -5
- data/src/core/lib/gpr/log_posix.cc +9 -4
- data/src/core/lib/gpr/log_windows.cc +3 -1
- data/src/core/lib/gpr/murmur_hash.cc +4 -2
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +24 -23
- data/src/core/lib/gpr/string.h +7 -8
- data/src/core/lib/gpr/sync.cc +6 -6
- data/src/core/lib/gpr/sync_abseil.cc +10 -12
- data/src/core/lib/gpr/sync_posix.cc +3 -3
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gpr/time.cc +15 -14
- data/src/core/lib/gpr/time_windows.cc +3 -2
- data/src/core/lib/gpr/tls.h +119 -40
- data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/arena.cc +2 -1
- data/src/core/lib/gprpp/arena.h +18 -7
- data/src/core/lib/gprpp/atomic_utils.h +47 -0
- data/src/core/lib/gprpp/bitset.h +188 -0
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +39 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +28 -29
- data/src/core/lib/gprpp/fork.cc +14 -12
- data/src/core/lib/gprpp/fork.h +4 -4
- data/src/core/lib/gprpp/global_config.h +1 -2
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_generic.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +9 -6
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/memory.h +9 -3
- data/src/core/lib/gprpp/mpscq.cc +9 -9
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +6 -6
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +48 -34
- data/src/core/lib/gprpp/ref_counted_ptr.h +11 -1
- data/src/core/lib/gprpp/status_helper.cc +427 -0
- data/src/core/lib/gprpp/status_helper.h +194 -0
- data/src/core/lib/gprpp/sync.h +106 -43
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/thd_posix.cc +11 -6
- data/src/core/lib/gprpp/thd_windows.cc +7 -12
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/format_request.cc +1 -0
- data/src/core/lib/http/format_request.h +1 -0
- data/src/core/lib/http/httpcli.cc +203 -185
- data/src/core/lib/http/httpcli.h +5 -3
- data/src/core/lib/http/httpcli_security_connector.cc +19 -18
- data/src/core/lib/http/parser.cc +19 -20
- data/src/core/lib/http/parser.h +5 -4
- data/src/core/lib/iomgr/buffer_list.cc +10 -11
- data/src/core/lib/iomgr/buffer_list.h +6 -8
- data/src/core/lib/iomgr/call_combiner.cc +46 -21
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +6 -6
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +25 -36
- data/src/core/lib/iomgr/combiner.h +3 -2
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
- data/src/core/lib/iomgr/endpoint.cc +1 -5
- data/src/core/lib/iomgr/endpoint.h +3 -5
- data/src/core/lib/iomgr/endpoint_cfstream.cc +27 -39
- data/src/core/lib/iomgr/endpoint_cfstream.h +1 -1
- data/src/core/lib/iomgr/endpoint_pair.h +1 -0
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +15 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +17 -9
- data/src/core/lib/iomgr/error.cc +277 -105
- data/src/core/lib/iomgr/error.h +280 -114
- data/src/core/lib/iomgr/error_cfstream.cc +10 -4
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +7 -2
- data/src/core/lib/iomgr/ev_apple.cc +16 -13
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +53 -53
- data/src/core/lib/iomgr/ev_epollex_linux.cc +81 -81
- data/src/core/lib/iomgr/ev_poll_posix.cc +70 -68
- data/src/core/lib/iomgr/ev_posix.cc +13 -13
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
- data/src/core/lib/iomgr/event_engine/closure.h +42 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +173 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +104 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +42 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +88 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +114 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +293 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
- data/src/core/lib/iomgr/exec_ctx.cc +14 -11
- data/src/core/lib/iomgr/exec_ctx.h +21 -28
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
- data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
- data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
- data/src/core/lib/iomgr/executor/threadpool.h +5 -4
- data/src/core/lib/iomgr/executor.cc +19 -33
- data/src/core/lib/iomgr/executor.h +3 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
- data/src/core/lib/iomgr/iocp_windows.cc +1 -0
- data/src/core/lib/iomgr/iomgr.cc +6 -4
- data/src/core/lib/iomgr/iomgr.h +3 -3
- data/src/core/lib/iomgr/iomgr_custom.cc +3 -3
- data/src/core/lib/iomgr/iomgr_custom.h +2 -2
- data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
- data/src/core/lib/iomgr/iomgr_internal.h +6 -5
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -13
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -3
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +4 -4
- data/src/core/lib/iomgr/load_file.cc +6 -6
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +38 -15
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/polling_entity.cc +2 -2
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +10 -11
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +2 -3
- data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +7 -10
- data/src/core/lib/iomgr/python_util.h +4 -3
- data/src/core/lib/iomgr/resolve_address.cc +14 -9
- data/src/core/lib/iomgr/resolve_address.h +12 -10
- data/src/core/lib/iomgr/resolve_address_custom.cc +14 -13
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -14
- data/src/core/lib/iomgr/resolve_address_windows.cc +10 -12
- data/src/core/lib/iomgr/resource_quota.cc +152 -62
- data/src/core/lib/iomgr/resource_quota.h +66 -17
- data/src/core/lib/iomgr/sockaddr.h +2 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +8 -7
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +20 -6
- data/src/core/lib/iomgr/socket_mutator.h +27 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -27
- data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
- data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client.cc +5 -3
- data/src/core/lib/iomgr/tcp_client.h +4 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +18 -26
- data/src/core/lib/iomgr/tcp_client_custom.cc +19 -27
- data/src/core/lib/iomgr/tcp_client_posix.cc +56 -47
- data/src/core/lib/iomgr/tcp_client_posix.h +8 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +23 -14
- data/src/core/lib/iomgr/tcp_custom.cc +46 -55
- data/src/core/lib/iomgr/tcp_custom.h +15 -13
- data/src/core/lib/iomgr/tcp_posix.cc +119 -145
- data/src/core/lib/iomgr/tcp_posix.h +19 -12
- data/src/core/lib/iomgr/tcp_server.cc +9 -7
- data/src/core/lib/iomgr/tcp_server.h +18 -14
- data/src/core/lib/iomgr/tcp_server_custom.cc +63 -73
- data/src/core/lib/iomgr/tcp_server_posix.cc +49 -35
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +16 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +22 -20
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +11 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +40 -36
- data/src/core/lib/iomgr/tcp_windows.cc +21 -40
- data/src/core/lib/iomgr/tcp_windows.h +4 -3
- data/src/core/lib/iomgr/timer.cc +1 -0
- data/src/core/lib/iomgr/timer.h +7 -3
- data/src/core/lib/iomgr/timer_custom.cc +7 -6
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +32 -62
- data/src/core/lib/iomgr/timer_generic.h +1 -0
- data/src/core/lib/iomgr/timer_heap.cc +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +4 -4
- data/src/core/lib/iomgr/unix_sockets_posix.cc +21 -24
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -5
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.cc +4 -4
- data/src/core/lib/iomgr/work_serializer.h +18 -2
- data/src/core/lib/json/json.h +11 -1
- data/src/core/lib/json/json_reader.cc +14 -23
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +65 -115
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/matchers/matchers.cc +327 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/profiling/basic_timers.cc +8 -6
- data/src/core/lib/profiling/stap_timers.cc +2 -2
- data/src/core/lib/security/authorization/authorization_engine.h +13 -53
- data/src/core/lib/security/authorization/authorization_policy_provider.h +33 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +126 -66
- data/src/core/lib/security/authorization/evaluate_args.h +47 -15
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +171 -0
- data/src/core/lib/security/authorization/sdk_server_authz_filter.h +67 -0
- data/src/core/lib/security/context/security_context.cc +15 -11
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +9 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.cc +16 -14
- data/src/core/lib/security/credentials/credentials.h +11 -5
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +404 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +81 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +20 -14
- data/src/core/lib/security/credentials/external/aws_request_signer.h +2 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +270 -54
- data/src/core/lib/security/credentials/external/external_account_credentials.h +16 -12
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +26 -26
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +13 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +92 -31
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -7
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +34 -17
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +13 -5
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +15 -22
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +57 -66
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +11 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +10 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +11 -10
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +12 -15
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +20 -21
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +382 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +74 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +5 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -3
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +3 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +209 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +20 -12
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +50 -17
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +35 -8
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +4 -4
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +23 -10
- data/src/core/lib/security/security_connector/security_connector.cc +12 -6
- data/src/core/lib/security/security_connector/security_connector.h +10 -5
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +24 -17
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +41 -14
- data/src/core/lib/security/security_connector/ssl_utils.h +16 -23
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +156 -113
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +67 -52
- data/src/core/lib/security/transport/auth_filters.h +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +27 -21
- data/src/core/lib/security/transport/secure_endpoint.cc +10 -20
- data/src/core/lib/security/transport/secure_endpoint.h +1 -0
- data/src/core/lib/security/transport/security_handshaker.cc +158 -90
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -16
- data/src/core/lib/security/transport/tsi_error.cc +5 -6
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +8 -10
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/percent_encoding.cc +73 -30
- data/src/core/lib/slice/percent_encoding.h +29 -28
- data/src/core/lib/slice/slice.cc +14 -21
- data/src/core/lib/{gpr/tls_pthread.cc → slice/slice_api.cc} +15 -6
- data/src/core/lib/slice/slice_buffer.cc +6 -7
- data/src/core/lib/slice/slice_intern.cc +19 -27
- data/src/core/lib/slice/slice_internal.h +4 -246
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/api_trace.cc +2 -1
- data/src/core/lib/surface/api_trace.h +1 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
- data/src/core/lib/surface/call.cc +198 -186
- data/src/core/lib/surface/call.h +10 -5
- data/src/core/lib/surface/call_details.cc +10 -10
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/channel.cc +57 -51
- data/src/core/lib/surface/channel.h +19 -14
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/channel_stack_type.cc +2 -1
- data/src/core/lib/surface/completion_queue.cc +140 -145
- data/src/core/lib/surface/completion_queue.h +18 -17
- data/src/core/lib/surface/completion_queue_factory.cc +3 -3
- data/src/core/lib/surface/completion_queue_factory.h +1 -0
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/init.cc +18 -65
- data/src/core/lib/surface/init.h +10 -2
- data/src/core/lib/surface/init_secure.cc +36 -14
- data/src/core/lib/surface/lame_client.cc +62 -61
- data/src/core/lib/surface/lame_client.h +5 -0
- data/src/core/lib/surface/metadata_array.cc +2 -2
- data/src/core/lib/surface/server.cc +167 -116
- data/src/core/lib/surface/server.h +140 -40
- data/src/core/lib/surface/validate_metadata.cc +55 -24
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +9 -8
- data/src/core/lib/transport/connectivity_state.cc +9 -6
- data/src/core/lib/transport/connectivity_state.h +8 -6
- data/src/core/lib/transport/error_utils.cc +64 -27
- data/src/core/lib/transport/error_utils.h +13 -7
- data/src/core/lib/transport/metadata.cc +47 -22
- data/src/core/lib/transport/metadata.h +15 -12
- data/src/core/lib/transport/metadata_batch.cc +41 -339
- data/src/core/lib/transport/metadata_batch.h +932 -68
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +715 -847
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +5 -3
- data/src/core/lib/transport/transport.cc +8 -8
- data/src/core/lib/transport/transport.h +12 -10
- data/src/core/lib/transport/transport_op_string.cc +46 -26
- data/src/core/lib/uri/uri_parser.cc +131 -249
- data/src/core/lib/uri/uri_parser.h +57 -21
- data/src/core/plugin_registry/grpc_plugin_registry.cc +101 -44
- data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/crypt/gsec.h +5 -0
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +27 -33
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +57 -51
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +6 -6
- data/src/core/tsi/fake_transport_security.cc +31 -12
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +115 -77
- data/src/core/tsi/ssl_transport_security.h +12 -14
- data/src/core/tsi/transport_security.cc +21 -9
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_grpc.h +1 -0
- data/src/core/tsi/transport_security_interface.h +27 -1
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +21 -8
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
- data/src/ruby/ext/grpc/rb_call.c +5 -5
- data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
- data/src/ruby/ext/grpc/rb_channel.c +19 -8
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +15 -5
- data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
- data/src/ruby/ext/grpc/rb_grpc.c +9 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +24 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +50 -14
- data/src/ruby/ext/grpc/rb_server.c +19 -6
- data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
- data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +35 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +23 -5
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +54 -48
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +756 -724
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +55 -50
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +26 -24
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +196 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +35 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +326 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +15 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +35 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +50 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +65 -41
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +161 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +400 -325
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +28 -9
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → rand_extra/passive.c} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +345 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +25 -69
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +61 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +15 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +50 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +23 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +28 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +26 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +27 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +69 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1026 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -176
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +63 -13
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +23 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +10 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +38 -51
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +33 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +104 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +406 -108
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +48 -36
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1425 -377
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +188 -49
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
- data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +847 -622
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +92 -44
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +314 -217
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +177 -35
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +491 -152
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +60 -112
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +136 -104
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +79 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +235 -178
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +269 -118
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- data/third_party/upb/upb/decode.c +354 -204
- data/third_party/upb/upb/decode.h +50 -3
- data/third_party/upb/upb/decode_fast.c +1053 -0
- data/third_party/upb/upb/decode_fast.h +153 -0
- data/third_party/upb/upb/decode_internal.h +193 -0
- data/third_party/upb/upb/def.c +609 -610
- data/third_party/upb/upb/def.h +57 -50
- data/third_party/upb/upb/def.hpp +66 -123
- data/third_party/upb/upb/encode.c +267 -176
- data/third_party/upb/upb/encode.h +56 -4
- data/third_party/upb/upb/msg.c +304 -84
- data/third_party/upb/upb/msg.h +76 -441
- data/third_party/upb/upb/msg_internal.h +687 -0
- data/third_party/upb/upb/port_def.inc +156 -82
- data/third_party/upb/upb/port_undef.inc +41 -8
- data/third_party/upb/upb/reflection.c +64 -55
- data/third_party/upb/upb/reflection.h +36 -8
- data/third_party/upb/upb/reflection.hpp +37 -0
- data/third_party/upb/upb/table.c +238 -276
- data/third_party/upb/upb/{table.int.h → table_internal.h} +66 -181
- data/third_party/upb/upb/text_encode.c +77 -26
- data/third_party/upb/upb/text_encode.h +30 -1
- data/third_party/upb/upb/upb.c +75 -47
- data/third_party/upb/upb/upb.h +72 -13
- data/third_party/upb/upb/upb.hpp +28 -4
- data/third_party/upb/upb/upb_internal.h +58 -0
- data/third_party/xxhash/xxhash.h +5325 -0
- metadata +287 -137
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +0 -28
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -53
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -129
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -77
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -85
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -160
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -117
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
- data/src/core/lib/gpr/arena.h +0 -47
- data/src/core/lib/gpr/tls_gcc.h +0 -52
- data/src/core/lib/gpr/tls_msvc.h +0 -54
- data/src/core/lib/gpr/tls_pthread.h +0 -56
- data/src/core/lib/gpr/tls_stdcpp.h +0 -48
- data/src/core/lib/gprpp/atomic.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -53
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/iomgr/pollset_uv.cc +0 -93
- data/src/core/lib/iomgr/pollset_uv.h +0 -32
- data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
- data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
- data/src/core/lib/iomgr/tcp_uv.cc +0 -419
- data/src/core/lib/iomgr/timer_uv.cc +0 -66
- data/src/core/lib/iomgr/udp_server.cc +0 -748
- data/src/core/lib/iomgr/udp_server.h +0 -104
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/src/core/lib/transport/authority_override.cc +0 -38
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -237
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
- data/third_party/upb/upb/port.c +0 -26
data/third_party/upb/upb/def.c
CHANGED
@@ -1,12 +1,42 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) 2009-2021, Google LLC
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* Redistribution and use in source and binary forms, with or without
|
6
|
+
* modification, are permitted provided that the following conditions are met:
|
7
|
+
* * Redistributions of source code must retain the above copyright
|
8
|
+
* notice, this list of conditions and the following disclaimer.
|
9
|
+
* * Redistributions in binary form must reproduce the above copyright
|
10
|
+
* notice, this list of conditions and the following disclaimer in the
|
11
|
+
* documentation and/or other materials provided with the distribution.
|
12
|
+
* * Neither the name of Google LLC nor the
|
13
|
+
* names of its contributors may be used to endorse or promote products
|
14
|
+
* derived from this software without specific prior written permission.
|
15
|
+
*
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
17
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
19
|
+
* DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
|
20
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
21
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
22
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
23
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
24
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
25
|
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
*/
|
1
27
|
|
2
28
|
#include "upb/def.h"
|
3
29
|
|
4
30
|
#include <ctype.h>
|
5
31
|
#include <errno.h>
|
32
|
+
#include <setjmp.h>
|
6
33
|
#include <stdlib.h>
|
7
34
|
#include <string.h>
|
35
|
+
|
8
36
|
#include "google/protobuf/descriptor.upb.h"
|
37
|
+
#include "upb/reflection.h"
|
9
38
|
|
39
|
+
/* Must be last. */
|
10
40
|
#include "upb/port_def.inc"
|
11
41
|
|
12
42
|
typedef struct {
|
@@ -14,15 +44,6 @@ typedef struct {
|
|
14
44
|
char str[1]; /* Null-terminated string data follows. */
|
15
45
|
} str_t;
|
16
46
|
|
17
|
-
static str_t *newstr(upb_alloc *alloc, const char *data, size_t len) {
|
18
|
-
str_t *ret = upb_malloc(alloc, sizeof(*ret) + len);
|
19
|
-
if (!ret) return NULL;
|
20
|
-
ret->len = len;
|
21
|
-
if (len) memcpy(ret->str, data, len);
|
22
|
-
ret->str[len] = '\0';
|
23
|
-
return ret;
|
24
|
-
}
|
25
|
-
|
26
47
|
struct upb_fielddef {
|
27
48
|
const upb_filedef *file;
|
28
49
|
const upb_msgdef *msgdef;
|
@@ -45,7 +66,6 @@ struct upb_fielddef {
|
|
45
66
|
uint32_t number_;
|
46
67
|
uint16_t index_;
|
47
68
|
uint16_t layout_index;
|
48
|
-
uint32_t selector_base; /* Used to index into a upb::Handlers table. */
|
49
69
|
bool is_extension_;
|
50
70
|
bool lazy_;
|
51
71
|
bool packed_;
|
@@ -58,8 +78,6 @@ struct upb_msgdef {
|
|
58
78
|
const upb_msglayout *layout;
|
59
79
|
const upb_filedef *file;
|
60
80
|
const char *full_name;
|
61
|
-
uint32_t selector_count;
|
62
|
-
uint32_t submsg_field_count;
|
63
81
|
|
64
82
|
/* Tables for looking up fields by number and name. */
|
65
83
|
upb_inttable itof;
|
@@ -89,7 +107,9 @@ struct upb_enumdef {
|
|
89
107
|
struct upb_oneofdef {
|
90
108
|
const upb_msgdef *parent;
|
91
109
|
const char *full_name;
|
92
|
-
|
110
|
+
int field_count;
|
111
|
+
bool synthetic;
|
112
|
+
const upb_fielddef **fields;
|
93
113
|
upb_strtable ntof;
|
94
114
|
upb_inttable itof;
|
95
115
|
};
|
@@ -99,23 +119,25 @@ struct upb_filedef {
|
|
99
119
|
const char *package;
|
100
120
|
const char *phpprefix;
|
101
121
|
const char *phpnamespace;
|
102
|
-
upb_syntax_t syntax;
|
103
122
|
|
104
123
|
const upb_filedef **deps;
|
105
124
|
const upb_msgdef *msgs;
|
106
125
|
const upb_enumdef *enums;
|
107
126
|
const upb_fielddef *exts;
|
127
|
+
const upb_symtab *symtab;
|
108
128
|
|
109
129
|
int dep_count;
|
110
130
|
int msg_count;
|
111
131
|
int enum_count;
|
112
132
|
int ext_count;
|
133
|
+
upb_syntax_t syntax;
|
113
134
|
};
|
114
135
|
|
115
136
|
struct upb_symtab {
|
116
137
|
upb_arena *arena;
|
117
138
|
upb_strtable syms; /* full_name -> packed def ptr */
|
118
139
|
upb_strtable files; /* file_name -> upb_filedef* */
|
140
|
+
size_t bytes_loaded;
|
119
141
|
};
|
120
142
|
|
121
143
|
/* Inside a symtab we store tagged pointers to specific def types. */
|
@@ -154,38 +176,6 @@ static bool upb_isalphanum(char c) {
|
|
154
176
|
return upb_isletter(c) || upb_isbetween(c, '0', '9');
|
155
177
|
}
|
156
178
|
|
157
|
-
static bool upb_isident(upb_strview name, bool full, upb_status *s) {
|
158
|
-
const char *str = name.data;
|
159
|
-
size_t len = name.size;
|
160
|
-
bool start = true;
|
161
|
-
size_t i;
|
162
|
-
for (i = 0; i < len; i++) {
|
163
|
-
char c = str[i];
|
164
|
-
if (c == '.') {
|
165
|
-
if (start || !full) {
|
166
|
-
upb_status_seterrf(s, "invalid name: unexpected '.' (%s)", str);
|
167
|
-
return false;
|
168
|
-
}
|
169
|
-
start = true;
|
170
|
-
} else if (start) {
|
171
|
-
if (!upb_isletter(c)) {
|
172
|
-
upb_status_seterrf(
|
173
|
-
s, "invalid name: path components must start with a letter (%s)",
|
174
|
-
str);
|
175
|
-
return false;
|
176
|
-
}
|
177
|
-
start = false;
|
178
|
-
} else {
|
179
|
-
if (!upb_isalphanum(c)) {
|
180
|
-
upb_status_seterrf(s, "invalid name: non-alphanumeric character (%s)",
|
181
|
-
str);
|
182
|
-
return false;
|
183
|
-
}
|
184
|
-
}
|
185
|
-
}
|
186
|
-
return !start;
|
187
|
-
}
|
188
|
-
|
189
179
|
static const char *shortdefname(const char *fullname) {
|
190
180
|
const char *p;
|
191
181
|
|
@@ -217,113 +207,10 @@ int cmp_fields(const void *p1, const void *p2) {
|
|
217
207
|
return field_rank(f1) - field_rank(f2);
|
218
208
|
}
|
219
209
|
|
220
|
-
/* A few implementation details of handlers. We put these here to avoid
|
221
|
-
* a def -> handlers dependency. */
|
222
|
-
|
223
|
-
#define UPB_STATIC_SELECTOR_COUNT 3 /* Warning: also in upb/handlers.h. */
|
224
|
-
|
225
|
-
static uint32_t upb_handlers_selectorbaseoffset(const upb_fielddef *f) {
|
226
|
-
return upb_fielddef_isseq(f) ? 2 : 0;
|
227
|
-
}
|
228
|
-
|
229
|
-
static uint32_t upb_handlers_selectorcount(const upb_fielddef *f) {
|
230
|
-
uint32_t ret = 1;
|
231
|
-
if (upb_fielddef_isseq(f)) ret += 2; /* STARTSEQ/ENDSEQ */
|
232
|
-
if (upb_fielddef_isstring(f)) ret += 2; /* [STRING]/STARTSTR/ENDSTR */
|
233
|
-
if (upb_fielddef_issubmsg(f)) {
|
234
|
-
/* ENDSUBMSG (STARTSUBMSG is at table beginning) */
|
235
|
-
ret += 0;
|
236
|
-
if (upb_fielddef_lazy(f)) {
|
237
|
-
/* STARTSTR/ENDSTR/STRING (for lazy) */
|
238
|
-
ret += 3;
|
239
|
-
}
|
240
|
-
}
|
241
|
-
return ret;
|
242
|
-
}
|
243
|
-
|
244
210
|
static void upb_status_setoom(upb_status *status) {
|
245
211
|
upb_status_seterrmsg(status, "out of memory");
|
246
212
|
}
|
247
213
|
|
248
|
-
static bool assign_msg_indices(upb_msgdef *m, upb_status *s) {
|
249
|
-
/* Sort fields. upb internally relies on UPB_TYPE_MESSAGE fields having the
|
250
|
-
* lowest indexes, but we do not publicly guarantee this. */
|
251
|
-
upb_msg_field_iter j;
|
252
|
-
int i;
|
253
|
-
uint32_t selector;
|
254
|
-
int n = upb_msgdef_numfields(m);
|
255
|
-
upb_fielddef **fields;
|
256
|
-
|
257
|
-
if (n == 0) {
|
258
|
-
m->selector_count = UPB_STATIC_SELECTOR_COUNT;
|
259
|
-
m->submsg_field_count = 0;
|
260
|
-
return true;
|
261
|
-
}
|
262
|
-
|
263
|
-
fields = upb_gmalloc(n * sizeof(*fields));
|
264
|
-
if (!fields) {
|
265
|
-
upb_status_setoom(s);
|
266
|
-
return false;
|
267
|
-
}
|
268
|
-
|
269
|
-
m->submsg_field_count = 0;
|
270
|
-
for(i = 0, upb_msg_field_begin(&j, m);
|
271
|
-
!upb_msg_field_done(&j);
|
272
|
-
upb_msg_field_next(&j), i++) {
|
273
|
-
upb_fielddef *f = upb_msg_iter_field(&j);
|
274
|
-
UPB_ASSERT(f->msgdef == m);
|
275
|
-
if (upb_fielddef_issubmsg(f)) {
|
276
|
-
m->submsg_field_count++;
|
277
|
-
}
|
278
|
-
fields[i] = f;
|
279
|
-
}
|
280
|
-
|
281
|
-
qsort(fields, n, sizeof(*fields), cmp_fields);
|
282
|
-
|
283
|
-
selector = UPB_STATIC_SELECTOR_COUNT + m->submsg_field_count;
|
284
|
-
for (i = 0; i < n; i++) {
|
285
|
-
upb_fielddef *f = fields[i];
|
286
|
-
f->index_ = i;
|
287
|
-
f->selector_base = selector + upb_handlers_selectorbaseoffset(f);
|
288
|
-
selector += upb_handlers_selectorcount(f);
|
289
|
-
}
|
290
|
-
m->selector_count = selector;
|
291
|
-
|
292
|
-
upb_gfree(fields);
|
293
|
-
return true;
|
294
|
-
}
|
295
|
-
|
296
|
-
static bool check_oneofs(upb_msgdef *m, upb_status *s) {
|
297
|
-
int i;
|
298
|
-
int first_synthetic = -1;
|
299
|
-
upb_oneofdef *mutable_oneofs = (upb_oneofdef*)m->oneofs;
|
300
|
-
|
301
|
-
for (i = 0; i < m->oneof_count; i++) {
|
302
|
-
mutable_oneofs[i].index = i;
|
303
|
-
|
304
|
-
if (upb_oneofdef_issynthetic(&mutable_oneofs[i])) {
|
305
|
-
if (first_synthetic == -1) {
|
306
|
-
first_synthetic = i;
|
307
|
-
}
|
308
|
-
} else {
|
309
|
-
if (first_synthetic != -1) {
|
310
|
-
upb_status_seterrf(
|
311
|
-
s, "Synthetic oneofs must be after all other oneofs: %s",
|
312
|
-
upb_oneofdef_name(&mutable_oneofs[i]));
|
313
|
-
return false;
|
314
|
-
}
|
315
|
-
}
|
316
|
-
}
|
317
|
-
|
318
|
-
if (first_synthetic == -1) {
|
319
|
-
m->real_oneof_count = m->oneof_count;
|
320
|
-
} else {
|
321
|
-
m->real_oneof_count = first_synthetic;
|
322
|
-
}
|
323
|
-
|
324
|
-
return true;
|
325
|
-
}
|
326
|
-
|
327
214
|
static void assign_msg_wellknowntype(upb_msgdef *m) {
|
328
215
|
const char *name = upb_msgdef_fullname(m);
|
329
216
|
if (name == NULL) {
|
@@ -411,8 +298,7 @@ bool upb_enumdef_ntoi(const upb_enumdef *def, const char *name,
|
|
411
298
|
|
412
299
|
const char *upb_enumdef_iton(const upb_enumdef *def, int32_t num) {
|
413
300
|
upb_value v;
|
414
|
-
return
|
415
|
-
upb_value_getcstr(v) : NULL;
|
301
|
+
return upb_inttable_lookup(&def->iton, num, &v) ? upb_value_getcstr(v) : NULL;
|
416
302
|
}
|
417
303
|
|
418
304
|
const char *upb_enum_iter_name(upb_enum_iter *iter) {
|
@@ -501,10 +387,6 @@ const char *upb_fielddef_jsonname(const upb_fielddef *f) {
|
|
501
387
|
return f->json_name;
|
502
388
|
}
|
503
389
|
|
504
|
-
uint32_t upb_fielddef_selectorbase(const upb_fielddef *f) {
|
505
|
-
return f->selector_base;
|
506
|
-
}
|
507
|
-
|
508
390
|
const upb_filedef *upb_fielddef_file(const upb_fielddef *f) {
|
509
391
|
return f->file;
|
510
392
|
}
|
@@ -522,6 +404,23 @@ const upb_oneofdef *upb_fielddef_realcontainingoneof(const upb_fielddef *f) {
|
|
522
404
|
return f->oneof;
|
523
405
|
}
|
524
406
|
|
407
|
+
upb_msgval upb_fielddef_default(const upb_fielddef *f) {
|
408
|
+
UPB_ASSERT(!upb_fielddef_issubmsg(f));
|
409
|
+
upb_msgval ret;
|
410
|
+
if (upb_fielddef_isstring(f)) {
|
411
|
+
str_t *str = f->defaultval.str;
|
412
|
+
if (str) {
|
413
|
+
ret.str_val.data = str->str;
|
414
|
+
ret.str_val.size = str->len;
|
415
|
+
} else {
|
416
|
+
ret.str_val.size = 0;
|
417
|
+
}
|
418
|
+
} else {
|
419
|
+
memcpy(&ret, &f->defaultval, 8);
|
420
|
+
}
|
421
|
+
return ret;
|
422
|
+
}
|
423
|
+
|
525
424
|
static void chkdefaulttype(const upb_fielddef *f, int ctype) {
|
526
425
|
UPB_UNUSED(f);
|
527
426
|
UPB_UNUSED(ctype);
|
@@ -650,18 +549,10 @@ upb_syntax_t upb_msgdef_syntax(const upb_msgdef *m) {
|
|
650
549
|
return m->file->syntax;
|
651
550
|
}
|
652
551
|
|
653
|
-
size_t upb_msgdef_selectorcount(const upb_msgdef *m) {
|
654
|
-
return m->selector_count;
|
655
|
-
}
|
656
|
-
|
657
|
-
uint32_t upb_msgdef_submsgfieldcount(const upb_msgdef *m) {
|
658
|
-
return m->submsg_field_count;
|
659
|
-
}
|
660
|
-
|
661
552
|
const upb_fielddef *upb_msgdef_itof(const upb_msgdef *m, uint32_t i) {
|
662
553
|
upb_value val;
|
663
|
-
return
|
664
|
-
|
554
|
+
return upb_inttable_lookup(&m->itof, i, &val) ? upb_value_getconstptr(val)
|
555
|
+
: NULL;
|
665
556
|
}
|
666
557
|
|
667
558
|
const upb_fielddef *upb_msgdef_ntof(const upb_msgdef *m, const char *name,
|
@@ -726,15 +617,32 @@ int upb_msgdef_numrealoneofs(const upb_msgdef *m) {
|
|
726
617
|
return m->real_oneof_count;
|
727
618
|
}
|
728
619
|
|
620
|
+
int upb_msgdef_fieldcount(const upb_msgdef *m) {
|
621
|
+
return m->field_count;
|
622
|
+
}
|
623
|
+
|
624
|
+
int upb_msgdef_oneofcount(const upb_msgdef *m) {
|
625
|
+
return m->oneof_count;
|
626
|
+
}
|
627
|
+
|
628
|
+
int upb_msgdef_realoneofcount(const upb_msgdef *m) {
|
629
|
+
return m->real_oneof_count;
|
630
|
+
}
|
631
|
+
|
729
632
|
const upb_msglayout *upb_msgdef_layout(const upb_msgdef *m) {
|
730
633
|
return m->layout;
|
731
634
|
}
|
732
635
|
|
733
|
-
const upb_fielddef *
|
734
|
-
|
636
|
+
const upb_fielddef *upb_msgdef_field(const upb_msgdef *m, int i) {
|
637
|
+
UPB_ASSERT(i >= 0 && i < m->field_count);
|
735
638
|
return &m->fields[i];
|
736
639
|
}
|
737
640
|
|
641
|
+
const upb_oneofdef *upb_msgdef_oneof(const upb_msgdef *m, int i) {
|
642
|
+
UPB_ASSERT(i >= 0 && i < m->oneof_count);
|
643
|
+
return &m->oneofs[i];
|
644
|
+
}
|
645
|
+
|
738
646
|
bool upb_msgdef_mapentry(const upb_msgdef *m) {
|
739
647
|
return m->map_entry;
|
740
648
|
}
|
@@ -822,22 +730,25 @@ const upb_msgdef *upb_oneofdef_containingtype(const upb_oneofdef *o) {
|
|
822
730
|
return o->parent;
|
823
731
|
}
|
824
732
|
|
733
|
+
int upb_oneofdef_fieldcount(const upb_oneofdef *o) {
|
734
|
+
return o->field_count;
|
735
|
+
}
|
736
|
+
|
737
|
+
const upb_fielddef *upb_oneofdef_field(const upb_oneofdef *o, int i) {
|
738
|
+
UPB_ASSERT(i < o->field_count);
|
739
|
+
return o->fields[i];
|
740
|
+
}
|
741
|
+
|
825
742
|
int upb_oneofdef_numfields(const upb_oneofdef *o) {
|
826
|
-
return
|
743
|
+
return o->field_count;
|
827
744
|
}
|
828
745
|
|
829
746
|
uint32_t upb_oneofdef_index(const upb_oneofdef *o) {
|
830
|
-
return o->
|
747
|
+
return o - o->parent->oneofs;
|
831
748
|
}
|
832
749
|
|
833
750
|
bool upb_oneofdef_issynthetic(const upb_oneofdef *o) {
|
834
|
-
|
835
|
-
const upb_fielddef *f;
|
836
|
-
upb_inttable_begin(&iter, &o->itof);
|
837
|
-
if (upb_oneofdef_numfields(o) != 1) return false;
|
838
|
-
f = upb_value_getptr(upb_inttable_iter_value(&iter));
|
839
|
-
UPB_ASSERT(f);
|
840
|
-
return f->proto3_optional_;
|
751
|
+
return o->synthetic;
|
841
752
|
}
|
842
753
|
|
843
754
|
const upb_fielddef *upb_oneofdef_ntof(const upb_oneofdef *o,
|
@@ -849,8 +760,8 @@ const upb_fielddef *upb_oneofdef_ntof(const upb_oneofdef *o,
|
|
849
760
|
|
850
761
|
const upb_fielddef *upb_oneofdef_itof(const upb_oneofdef *o, uint32_t num) {
|
851
762
|
upb_value val;
|
852
|
-
return
|
853
|
-
|
763
|
+
return upb_inttable_lookup(&o->itof, num, &val) ? upb_value_getptr(val)
|
764
|
+
: NULL;
|
854
765
|
}
|
855
766
|
|
856
767
|
void upb_oneof_begin(upb_oneof_iter *iter, const upb_oneofdef *o) {
|
@@ -873,7 +784,186 @@ void upb_oneof_iter_setdone(upb_oneof_iter *iter) {
|
|
873
784
|
upb_inttable_iter_setdone(iter);
|
874
785
|
}
|
875
786
|
|
876
|
-
/*
|
787
|
+
/* upb_filedef ****************************************************************/
|
788
|
+
|
789
|
+
const char *upb_filedef_name(const upb_filedef *f) {
|
790
|
+
return f->name;
|
791
|
+
}
|
792
|
+
|
793
|
+
const char *upb_filedef_package(const upb_filedef *f) {
|
794
|
+
return f->package;
|
795
|
+
}
|
796
|
+
|
797
|
+
const char *upb_filedef_phpprefix(const upb_filedef *f) {
|
798
|
+
return f->phpprefix;
|
799
|
+
}
|
800
|
+
|
801
|
+
const char *upb_filedef_phpnamespace(const upb_filedef *f) {
|
802
|
+
return f->phpnamespace;
|
803
|
+
}
|
804
|
+
|
805
|
+
upb_syntax_t upb_filedef_syntax(const upb_filedef *f) {
|
806
|
+
return f->syntax;
|
807
|
+
}
|
808
|
+
|
809
|
+
int upb_filedef_msgcount(const upb_filedef *f) {
|
810
|
+
return f->msg_count;
|
811
|
+
}
|
812
|
+
|
813
|
+
int upb_filedef_depcount(const upb_filedef *f) {
|
814
|
+
return f->dep_count;
|
815
|
+
}
|
816
|
+
|
817
|
+
int upb_filedef_enumcount(const upb_filedef *f) {
|
818
|
+
return f->enum_count;
|
819
|
+
}
|
820
|
+
|
821
|
+
const upb_filedef *upb_filedef_dep(const upb_filedef *f, int i) {
|
822
|
+
return i < 0 || i >= f->dep_count ? NULL : f->deps[i];
|
823
|
+
}
|
824
|
+
|
825
|
+
const upb_msgdef *upb_filedef_msg(const upb_filedef *f, int i) {
|
826
|
+
return i < 0 || i >= f->msg_count ? NULL : &f->msgs[i];
|
827
|
+
}
|
828
|
+
|
829
|
+
const upb_enumdef *upb_filedef_enum(const upb_filedef *f, int i) {
|
830
|
+
return i < 0 || i >= f->enum_count ? NULL : &f->enums[i];
|
831
|
+
}
|
832
|
+
|
833
|
+
const upb_symtab *upb_filedef_symtab(const upb_filedef *f) {
|
834
|
+
return f->symtab;
|
835
|
+
}
|
836
|
+
|
837
|
+
void upb_symtab_free(upb_symtab *s) {
|
838
|
+
upb_arena_free(s->arena);
|
839
|
+
upb_gfree(s);
|
840
|
+
}
|
841
|
+
|
842
|
+
upb_symtab *upb_symtab_new(void) {
|
843
|
+
upb_symtab *s = upb_gmalloc(sizeof(*s));
|
844
|
+
|
845
|
+
if (!s) {
|
846
|
+
return NULL;
|
847
|
+
}
|
848
|
+
|
849
|
+
s->arena = upb_arena_new();
|
850
|
+
s->bytes_loaded = 0;
|
851
|
+
|
852
|
+
if (!upb_strtable_init(&s->syms, 32, s->arena) ||
|
853
|
+
!upb_strtable_init(&s->files, 4, s->arena)) {
|
854
|
+
upb_arena_free(s->arena);
|
855
|
+
upb_gfree(s);
|
856
|
+
s = NULL;
|
857
|
+
}
|
858
|
+
return s;
|
859
|
+
}
|
860
|
+
|
861
|
+
const upb_msgdef *upb_symtab_lookupmsg(const upb_symtab *s, const char *sym) {
|
862
|
+
upb_value v;
|
863
|
+
return upb_strtable_lookup(&s->syms, sym, &v) ?
|
864
|
+
unpack_def(v, UPB_DEFTYPE_MSG) : NULL;
|
865
|
+
}
|
866
|
+
|
867
|
+
const upb_msgdef *upb_symtab_lookupmsg2(const upb_symtab *s, const char *sym,
|
868
|
+
size_t len) {
|
869
|
+
upb_value v;
|
870
|
+
return upb_strtable_lookup2(&s->syms, sym, len, &v) ?
|
871
|
+
unpack_def(v, UPB_DEFTYPE_MSG) : NULL;
|
872
|
+
}
|
873
|
+
|
874
|
+
const upb_enumdef *upb_symtab_lookupenum(const upb_symtab *s, const char *sym) {
|
875
|
+
upb_value v;
|
876
|
+
return upb_strtable_lookup(&s->syms, sym, &v) ?
|
877
|
+
unpack_def(v, UPB_DEFTYPE_ENUM) : NULL;
|
878
|
+
}
|
879
|
+
|
880
|
+
const upb_filedef *upb_symtab_lookupfile(const upb_symtab *s, const char *name) {
|
881
|
+
upb_value v;
|
882
|
+
return upb_strtable_lookup(&s->files, name, &v) ? upb_value_getconstptr(v)
|
883
|
+
: NULL;
|
884
|
+
}
|
885
|
+
|
886
|
+
const upb_filedef *upb_symtab_lookupfile2(
|
887
|
+
const upb_symtab *s, const char *name, size_t len) {
|
888
|
+
upb_value v;
|
889
|
+
return upb_strtable_lookup2(&s->files, name, len, &v) ?
|
890
|
+
upb_value_getconstptr(v) : NULL;
|
891
|
+
}
|
892
|
+
|
893
|
+
int upb_symtab_filecount(const upb_symtab *s) {
|
894
|
+
return (int)upb_strtable_count(&s->files);
|
895
|
+
}
|
896
|
+
|
897
|
+
/* Code to build defs from descriptor protos. *********************************/
|
898
|
+
|
899
|
+
/* There is a question of how much validation to do here. It will be difficult
|
900
|
+
* to perfectly match the amount of validation performed by proto2. But since
|
901
|
+
* this code is used to directly build defs from Ruby (for example) we do need
|
902
|
+
* to validate important constraints like uniqueness of names and numbers. */
|
903
|
+
|
904
|
+
#define CHK_OOM(x) if (!(x)) { symtab_oomerr(ctx); }
|
905
|
+
|
906
|
+
typedef struct {
|
907
|
+
upb_symtab *symtab;
|
908
|
+
upb_filedef *file; /* File we are building. */
|
909
|
+
upb_arena *arena; /* Allocate defs here. */
|
910
|
+
const upb_msglayout **layouts; /* NULL if we should build layouts. */
|
911
|
+
upb_status *status; /* Record errors here. */
|
912
|
+
jmp_buf err; /* longjmp() on error. */
|
913
|
+
} symtab_addctx;
|
914
|
+
|
915
|
+
UPB_NORETURN UPB_NOINLINE UPB_PRINTF(2, 3)
|
916
|
+
static void symtab_errf(symtab_addctx *ctx, const char *fmt, ...) {
|
917
|
+
va_list argp;
|
918
|
+
va_start(argp, fmt);
|
919
|
+
upb_status_vseterrf(ctx->status, fmt, argp);
|
920
|
+
va_end(argp);
|
921
|
+
UPB_LONGJMP(ctx->err, 1);
|
922
|
+
}
|
923
|
+
|
924
|
+
UPB_NORETURN UPB_NOINLINE
|
925
|
+
static void symtab_oomerr(symtab_addctx *ctx) {
|
926
|
+
upb_status_setoom(ctx->status);
|
927
|
+
UPB_LONGJMP(ctx->err, 1);
|
928
|
+
}
|
929
|
+
|
930
|
+
void *symtab_alloc(symtab_addctx *ctx, size_t bytes) {
|
931
|
+
void *ret = upb_arena_malloc(ctx->arena, bytes);
|
932
|
+
if (!ret) symtab_oomerr(ctx);
|
933
|
+
return ret;
|
934
|
+
}
|
935
|
+
|
936
|
+
static void check_ident(symtab_addctx *ctx, upb_strview name, bool full) {
|
937
|
+
const char *str = name.data;
|
938
|
+
size_t len = name.size;
|
939
|
+
bool start = true;
|
940
|
+
size_t i;
|
941
|
+
for (i = 0; i < len; i++) {
|
942
|
+
char c = str[i];
|
943
|
+
if (c == '.') {
|
944
|
+
if (start || !full) {
|
945
|
+
symtab_errf(ctx, "invalid name: unexpected '.' (%.*s)", (int)len, str);
|
946
|
+
}
|
947
|
+
start = true;
|
948
|
+
} else if (start) {
|
949
|
+
if (!upb_isletter(c)) {
|
950
|
+
symtab_errf(
|
951
|
+
ctx,
|
952
|
+
"invalid name: path components must start with a letter (%.*s)",
|
953
|
+
(int)len, str);
|
954
|
+
}
|
955
|
+
start = false;
|
956
|
+
} else {
|
957
|
+
if (!upb_isalphanum(c)) {
|
958
|
+
symtab_errf(ctx, "invalid name: non-alphanumeric character (%.*s)",
|
959
|
+
(int)len, str);
|
960
|
+
}
|
961
|
+
}
|
962
|
+
}
|
963
|
+
if (start) {
|
964
|
+
symtab_errf(ctx, "invalid name: empty part (%.*s)", (int)len, str);
|
965
|
+
}
|
966
|
+
}
|
877
967
|
|
878
968
|
static size_t div_round_up(size_t n, size_t d) {
|
879
969
|
return (n + d - 1) / d;
|
@@ -928,42 +1018,80 @@ static int field_number_cmp(const void *p1, const void *p2) {
|
|
928
1018
|
return f1->number - f2->number;
|
929
1019
|
}
|
930
1020
|
|
931
|
-
static void assign_layout_indices(const upb_msgdef *m,
|
1021
|
+
static void assign_layout_indices(const upb_msgdef *m, upb_msglayout *l,
|
1022
|
+
upb_msglayout_field *fields) {
|
932
1023
|
int i;
|
933
1024
|
int n = upb_msgdef_numfields(m);
|
1025
|
+
int dense_below = 0;
|
934
1026
|
for (i = 0; i < n; i++) {
|
935
1027
|
upb_fielddef *f = (upb_fielddef*)upb_msgdef_itof(m, fields[i].number);
|
936
1028
|
UPB_ASSERT(f);
|
937
1029
|
f->layout_index = i;
|
1030
|
+
if (i < UINT8_MAX && fields[i].number == i + 1 &&
|
1031
|
+
(i == 0 || fields[i-1].number == i)) {
|
1032
|
+
dense_below = i + 1;
|
1033
|
+
}
|
1034
|
+
}
|
1035
|
+
l->dense_below = dense_below;
|
1036
|
+
}
|
1037
|
+
|
1038
|
+
static void fill_fieldlayout(upb_msglayout_field *field, const upb_fielddef *f) {
|
1039
|
+
field->number = upb_fielddef_number(f);
|
1040
|
+
field->descriptortype = upb_fielddef_descriptortype(f);
|
1041
|
+
|
1042
|
+
if (field->descriptortype == UPB_DTYPE_STRING &&
|
1043
|
+
f->file->syntax == UPB_SYNTAX_PROTO2) {
|
1044
|
+
/* See TableDescriptorType() in upbc/generator.cc for details and
|
1045
|
+
* rationale. */
|
1046
|
+
field->descriptortype = UPB_DTYPE_BYTES;
|
1047
|
+
}
|
1048
|
+
|
1049
|
+
if (upb_fielddef_ismap(f)) {
|
1050
|
+
field->mode = _UPB_MODE_MAP;
|
1051
|
+
} else if (upb_fielddef_isseq(f)) {
|
1052
|
+
field->mode = _UPB_MODE_ARRAY;
|
1053
|
+
} else {
|
1054
|
+
field->mode = _UPB_MODE_SCALAR;
|
1055
|
+
}
|
1056
|
+
|
1057
|
+
if (upb_fielddef_packed(f)) {
|
1058
|
+
field->mode |= _UPB_MODE_IS_PACKED;
|
938
1059
|
}
|
939
1060
|
}
|
940
1061
|
|
941
1062
|
/* This function is the dynamic equivalent of message_layout.{cc,h} in upbc.
|
942
1063
|
* It computes a dynamic layout for all of the fields in |m|. */
|
943
|
-
static
|
1064
|
+
static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
|
944
1065
|
upb_msglayout *l = (upb_msglayout*)m->layout;
|
945
1066
|
upb_msg_field_iter it;
|
946
1067
|
upb_msg_oneof_iter oit;
|
947
1068
|
size_t hasbit;
|
948
|
-
size_t
|
1069
|
+
size_t field_count = upb_msgdef_numfields(m);
|
1070
|
+
size_t submsg_count = 0;
|
949
1071
|
const upb_msglayout **submsgs;
|
950
1072
|
upb_msglayout_field *fields;
|
951
|
-
upb_alloc *alloc = upb_arena_alloc(symtab->arena);
|
952
1073
|
|
953
|
-
memset(l, 0, sizeof(*l));
|
1074
|
+
memset(l, 0, sizeof(*l) + sizeof(_upb_fasttable_entry));
|
954
1075
|
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
/* OOM. */
|
961
|
-
return false;
|
1076
|
+
/* Count sub-messages. */
|
1077
|
+
for (size_t i = 0; i < field_count; i++) {
|
1078
|
+
if (upb_fielddef_issubmsg(&m->fields[i])) {
|
1079
|
+
submsg_count++;
|
1080
|
+
}
|
962
1081
|
}
|
963
1082
|
|
1083
|
+
fields = symtab_alloc(ctx, field_count * sizeof(*fields));
|
1084
|
+
submsgs = symtab_alloc(ctx, submsg_count * sizeof(*submsgs));
|
1085
|
+
|
964
1086
|
l->field_count = upb_msgdef_numfields(m);
|
965
1087
|
l->fields = fields;
|
966
1088
|
l->submsgs = submsgs;
|
1089
|
+
l->table_mask = 0;
|
1090
|
+
|
1091
|
+
/* TODO(haberman): initialize fast tables so that reflection-based parsing
|
1092
|
+
* can get the same speeds as linked-in types. */
|
1093
|
+
l->fasttable[0].field_parser = &fastdecode_generic;
|
1094
|
+
l->fasttable[0].field_data = 0;
|
967
1095
|
|
968
1096
|
if (upb_msgdef_mapentry(m)) {
|
969
1097
|
/* TODO(haberman): refactor this method so this special case is more
|
@@ -972,8 +1100,8 @@ static bool make_layout(const upb_symtab *symtab, const upb_msgdef *m) {
|
|
972
1100
|
const upb_fielddef *val = upb_msgdef_itof(m, 2);
|
973
1101
|
fields[0].number = 1;
|
974
1102
|
fields[1].number = 2;
|
975
|
-
fields[0].
|
976
|
-
fields[1].
|
1103
|
+
fields[0].mode = _UPB_MODE_SCALAR;
|
1104
|
+
fields[1].mode = _UPB_MODE_SCALAR;
|
977
1105
|
fields[0].presence = 0;
|
978
1106
|
fields[1].presence = 0;
|
979
1107
|
fields[0].descriptortype = upb_fielddef_descriptortype(key);
|
@@ -989,7 +1117,7 @@ static bool make_layout(const upb_symtab *symtab, const upb_msgdef *m) {
|
|
989
1117
|
l->field_count = 2;
|
990
1118
|
l->size = 2 * sizeof(upb_strview);
|
991
1119
|
l->size = UPB_ALIGN_UP(l->size, 8);
|
992
|
-
return
|
1120
|
+
return;
|
993
1121
|
}
|
994
1122
|
|
995
1123
|
/* Allocate data offsets in three stages:
|
@@ -1009,22 +1137,7 @@ static bool make_layout(const upb_symtab *symtab, const upb_msgdef *m) {
|
|
1009
1137
|
upb_fielddef* f = upb_msg_iter_field(&it);
|
1010
1138
|
upb_msglayout_field *field = &fields[upb_fielddef_index(f)];
|
1011
1139
|
|
1012
|
-
field
|
1013
|
-
field->descriptortype = upb_fielddef_descriptortype(f);
|
1014
|
-
field->label = upb_fielddef_label(f);
|
1015
|
-
|
1016
|
-
if (field->descriptortype == UPB_DTYPE_STRING &&
|
1017
|
-
f->file->syntax == UPB_SYNTAX_PROTO2) {
|
1018
|
-
/* See TableDescriptorType() in upbc/generator.cc for details and
|
1019
|
-
* rationale. */
|
1020
|
-
field->descriptortype = UPB_DTYPE_BYTES;
|
1021
|
-
}
|
1022
|
-
|
1023
|
-
if (upb_fielddef_ismap(f)) {
|
1024
|
-
field->label = _UPB_LABEL_MAP;
|
1025
|
-
} else if (upb_fielddef_packed(f)) {
|
1026
|
-
field->label = _UPB_LABEL_PACKED;
|
1027
|
-
}
|
1140
|
+
fill_fieldlayout(field, f);
|
1028
1141
|
|
1029
1142
|
if (upb_fielddef_issubmsg(f)) {
|
1030
1143
|
const upb_msgdef *subm = upb_fielddef_msgsubdef(f);
|
@@ -1100,33 +1213,11 @@ static bool make_layout(const upb_symtab *symtab, const upb_msgdef *m) {
|
|
1100
1213
|
|
1101
1214
|
/* Sort fields by number. */
|
1102
1215
|
qsort(fields, upb_msgdef_numfields(m), sizeof(*fields), field_number_cmp);
|
1103
|
-
assign_layout_indices(m, fields);
|
1104
|
-
|
1105
|
-
return true;
|
1216
|
+
assign_layout_indices(m, l, fields);
|
1106
1217
|
}
|
1107
1218
|
|
1108
|
-
|
1109
|
-
|
1110
|
-
/* There is a question of how much validation to do here. It will be difficult
|
1111
|
-
* to perfectly match the amount of validation performed by proto2. But since
|
1112
|
-
* this code is used to directly build defs from Ruby (for example) we do need
|
1113
|
-
* to validate important constraints like uniqueness of names and numbers. */
|
1114
|
-
|
1115
|
-
#define CHK(x) if (!(x)) { return false; }
|
1116
|
-
#define CHK_OOM(x) if (!(x)) { upb_status_setoom(ctx->status); return false; }
|
1117
|
-
|
1118
|
-
typedef struct {
|
1119
|
-
const upb_symtab *symtab;
|
1120
|
-
upb_filedef *file; /* File we are building. */
|
1121
|
-
upb_alloc *alloc; /* Allocate defs here. */
|
1122
|
-
upb_alloc *tmp; /* Alloc for addtab and any other tmp data. */
|
1123
|
-
upb_strtable *addtab; /* full_name -> packed def ptr for new defs */
|
1124
|
-
const upb_msglayout **layouts; /* NULL if we should build layouts. */
|
1125
|
-
upb_status *status; /* Record errors here. */
|
1126
|
-
} symtab_addctx;
|
1127
|
-
|
1128
|
-
static char* strviewdup(const symtab_addctx *ctx, upb_strview view) {
|
1129
|
-
return upb_strdup2(view.data, view.size, ctx->alloc);
|
1219
|
+
static char *strviewdup(symtab_addctx *ctx, upb_strview view) {
|
1220
|
+
return upb_strdup2(view.data, view.size, ctx->arena);
|
1130
1221
|
}
|
1131
1222
|
|
1132
1223
|
static bool streql2(const char *a, size_t n, const char *b) {
|
@@ -1137,13 +1228,12 @@ static bool streql_view(upb_strview view, const char *b) {
|
|
1137
1228
|
return streql2(view.data, view.size, b);
|
1138
1229
|
}
|
1139
1230
|
|
1140
|
-
static const char *makefullname(
|
1231
|
+
static const char *makefullname(symtab_addctx *ctx, const char *prefix,
|
1141
1232
|
upb_strview name) {
|
1142
1233
|
if (prefix) {
|
1143
1234
|
/* ret = prefix + '.' + name; */
|
1144
1235
|
size_t n = strlen(prefix);
|
1145
|
-
char *ret =
|
1146
|
-
CHK_OOM(ret);
|
1236
|
+
char *ret = symtab_alloc(ctx, n + name.size + 2);
|
1147
1237
|
strcpy(ret, prefix);
|
1148
1238
|
ret[n] = '.';
|
1149
1239
|
memcpy(&ret[n + 1], name.data, name.size);
|
@@ -1154,6 +1244,41 @@ static const char *makefullname(const symtab_addctx *ctx, const char *prefix,
|
|
1154
1244
|
}
|
1155
1245
|
}
|
1156
1246
|
|
1247
|
+
static void finalize_oneofs(symtab_addctx *ctx, upb_msgdef *m) {
|
1248
|
+
int i;
|
1249
|
+
int synthetic_count = 0;
|
1250
|
+
upb_oneofdef *mutable_oneofs = (upb_oneofdef*)m->oneofs;
|
1251
|
+
|
1252
|
+
for (i = 0; i < m->oneof_count; i++) {
|
1253
|
+
upb_oneofdef *o = &mutable_oneofs[i];
|
1254
|
+
|
1255
|
+
if (o->synthetic && o->field_count != 1) {
|
1256
|
+
symtab_errf(ctx, "Synthetic oneofs must have one field, not %d: %s",
|
1257
|
+
o->field_count, upb_oneofdef_name(o));
|
1258
|
+
}
|
1259
|
+
|
1260
|
+
if (o->synthetic) {
|
1261
|
+
synthetic_count++;
|
1262
|
+
} else if (synthetic_count != 0) {
|
1263
|
+
symtab_errf(ctx, "Synthetic oneofs must be after all other oneofs: %s",
|
1264
|
+
upb_oneofdef_name(o));
|
1265
|
+
}
|
1266
|
+
|
1267
|
+
o->fields = symtab_alloc(ctx, sizeof(upb_fielddef *) * o->field_count);
|
1268
|
+
o->field_count = 0;
|
1269
|
+
}
|
1270
|
+
|
1271
|
+
for (i = 0; i < m->field_count; i++) {
|
1272
|
+
const upb_fielddef *f = &m->fields[i];
|
1273
|
+
upb_oneofdef *o = (upb_oneofdef*)f->oneof;
|
1274
|
+
if (o) {
|
1275
|
+
o->fields[o->field_count++] = f;
|
1276
|
+
}
|
1277
|
+
}
|
1278
|
+
|
1279
|
+
m->real_oneof_count = m->oneof_count - synthetic_count;
|
1280
|
+
}
|
1281
|
+
|
1157
1282
|
size_t getjsonname(const char *name, char *buf, size_t len) {
|
1158
1283
|
size_t src, dst = 0;
|
1159
1284
|
bool ucase_next = false;
|
@@ -1192,76 +1317,58 @@ size_t getjsonname(const char *name, char *buf, size_t len) {
|
|
1192
1317
|
#undef WRITE
|
1193
1318
|
}
|
1194
1319
|
|
1195
|
-
static char* makejsonname(const char* name
|
1320
|
+
static char* makejsonname(symtab_addctx *ctx, const char* name) {
|
1196
1321
|
size_t size = getjsonname(name, NULL, 0);
|
1197
|
-
char* json_name =
|
1322
|
+
char* json_name = symtab_alloc(ctx, size);
|
1198
1323
|
getjsonname(name, json_name, size);
|
1199
1324
|
return json_name;
|
1200
1325
|
}
|
1201
1326
|
|
1202
|
-
static
|
1203
|
-
|
1204
|
-
|
1205
|
-
if (upb_strtable_lookup(ctx->addtab, name, &tmp) ||
|
1206
|
-
upb_strtable_lookup(&ctx->symtab->syms, name, &tmp)) {
|
1207
|
-
upb_status_seterrf(ctx->status, "duplicate symbol '%s'", name);
|
1208
|
-
return false;
|
1327
|
+
static void symtab_add(symtab_addctx *ctx, const char *name, upb_value v) {
|
1328
|
+
if (upb_strtable_lookup(&ctx->symtab->syms, name, NULL)) {
|
1329
|
+
symtab_errf(ctx, "duplicate symbol '%s'", name);
|
1209
1330
|
}
|
1210
|
-
|
1211
|
-
CHK_OOM(
|
1212
|
-
|
1331
|
+
size_t len = strlen(name);
|
1332
|
+
CHK_OOM(upb_strtable_insert(&ctx->symtab->syms, name, len, v,
|
1333
|
+
ctx->symtab->arena));
|
1213
1334
|
}
|
1214
1335
|
|
1215
1336
|
/* Given a symbol and the base symbol inside which it is defined, find the
|
1216
1337
|
* symbol's definition in t. */
|
1217
|
-
static
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
if(sym.size == 0)
|
1338
|
+
static const void *symtab_resolve(symtab_addctx *ctx, const upb_fielddef *f,
|
1339
|
+
const char *base, upb_strview sym,
|
1340
|
+
upb_deftype_t type) {
|
1341
|
+
const upb_strtable *t = &ctx->symtab->syms;
|
1342
|
+
if(sym.size == 0) goto notfound;
|
1222
1343
|
if(sym.data[0] == '.') {
|
1223
1344
|
/* Symbols starting with '.' are absolute, so we do a single lookup.
|
1224
1345
|
* Slice to omit the leading '.' */
|
1225
1346
|
upb_value v;
|
1226
1347
|
if (!upb_strtable_lookup2(t, sym.data + 1, sym.size - 1, &v)) {
|
1227
|
-
|
1348
|
+
goto notfound;
|
1228
1349
|
}
|
1229
1350
|
|
1230
|
-
*
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
"type mismatch when resolving field %s, name %s",
|
1235
|
-
f->full_name, sym.data);
|
1236
|
-
return false;
|
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);
|
1237
1355
|
}
|
1238
|
-
|
1239
|
-
return true;
|
1356
|
+
return ret;
|
1240
1357
|
} else {
|
1241
1358
|
/* Remove components from base until we find an entry or run out.
|
1242
1359
|
* TODO: This branch is totally broken, but currently not used. */
|
1243
1360
|
(void)base;
|
1244
1361
|
UPB_ASSERT(false);
|
1245
|
-
|
1362
|
+
goto notfound;
|
1246
1363
|
}
|
1247
|
-
}
|
1248
1364
|
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
1252
|
-
const void *ret;
|
1253
|
-
if (!resolvename(ctx->addtab, f, base, sym, type, ctx->status, &ret) &&
|
1254
|
-
!resolvename(&ctx->symtab->syms, f, base, sym, type, ctx->status, &ret)) {
|
1255
|
-
if (upb_ok(ctx->status)) {
|
1256
|
-
upb_status_seterrf(ctx->status, "couldn't resolve name '%s'", sym.data);
|
1257
|
-
}
|
1258
|
-
return false;
|
1259
|
-
}
|
1260
|
-
return ret;
|
1365
|
+
notfound:
|
1366
|
+
symtab_errf(ctx, "couldn't resolve name '" UPB_STRVIEW_FORMAT "'",
|
1367
|
+
UPB_STRVIEW_ARGS(sym));
|
1261
1368
|
}
|
1262
1369
|
|
1263
|
-
static
|
1264
|
-
|
1370
|
+
static void create_oneofdef(
|
1371
|
+
symtab_addctx *ctx, upb_msgdef *m,
|
1265
1372
|
const google_protobuf_OneofDescriptorProto *oneof_proto) {
|
1266
1373
|
upb_oneofdef *o;
|
1267
1374
|
upb_strview name = google_protobuf_OneofDescriptorProto_name(oneof_proto);
|
@@ -1270,18 +1377,27 @@ static bool create_oneofdef(
|
|
1270
1377
|
o = (upb_oneofdef*)&m->oneofs[m->oneof_count++];
|
1271
1378
|
o->parent = m;
|
1272
1379
|
o->full_name = makefullname(ctx, m->full_name, name);
|
1380
|
+
o->field_count = 0;
|
1381
|
+
o->synthetic = false;
|
1273
1382
|
|
1274
1383
|
v = pack_def(o, UPB_DEFTYPE_ONEOF);
|
1275
|
-
|
1276
|
-
CHK_OOM(
|
1384
|
+
symtab_add(ctx, o->full_name, v);
|
1385
|
+
CHK_OOM(upb_strtable_insert(&m->ntof, name.data, name.size, v, ctx->arena));
|
1277
1386
|
|
1278
|
-
CHK_OOM(
|
1279
|
-
CHK_OOM(
|
1387
|
+
CHK_OOM(upb_inttable_init(&o->itof, ctx->arena));
|
1388
|
+
CHK_OOM(upb_strtable_init(&o->ntof, 4, ctx->arena));
|
1389
|
+
}
|
1280
1390
|
|
1281
|
-
|
1391
|
+
static str_t *newstr(symtab_addctx *ctx, const char *data, size_t len) {
|
1392
|
+
str_t *ret = symtab_alloc(ctx, sizeof(*ret) + len);
|
1393
|
+
if (!ret) return NULL;
|
1394
|
+
ret->len = len;
|
1395
|
+
if (len) memcpy(ret->str, data, len);
|
1396
|
+
ret->str[len] = '\0';
|
1397
|
+
return ret;
|
1282
1398
|
}
|
1283
1399
|
|
1284
|
-
static
|
1400
|
+
static void parse_default(symtab_addctx *ctx, const char *str, size_t len,
|
1285
1401
|
upb_fielddef *f) {
|
1286
1402
|
char *end;
|
1287
1403
|
char nullz[64];
|
@@ -1296,7 +1412,7 @@ static bool parse_default(const symtab_addctx *ctx, const char *str, size_t len,
|
|
1296
1412
|
case UPB_TYPE_FLOAT:
|
1297
1413
|
/* Standard C number parsing functions expect null-terminated strings. */
|
1298
1414
|
if (len >= sizeof(nullz) - 1) {
|
1299
|
-
|
1415
|
+
symtab_errf(ctx, "Default too long: %.*s", (int)len, str);
|
1300
1416
|
}
|
1301
1417
|
memcpy(nullz, str, len);
|
1302
1418
|
nullz[len] = '\0';
|
@@ -1309,47 +1425,58 @@ static bool parse_default(const symtab_addctx *ctx, const char *str, size_t len,
|
|
1309
1425
|
switch (upb_fielddef_type(f)) {
|
1310
1426
|
case UPB_TYPE_INT32: {
|
1311
1427
|
long val = strtol(str, &end, 0);
|
1312
|
-
|
1428
|
+
if (val > INT32_MAX || val < INT32_MIN || errno == ERANGE || *end) {
|
1429
|
+
goto invalid;
|
1430
|
+
}
|
1313
1431
|
f->defaultval.sint = val;
|
1314
1432
|
break;
|
1315
1433
|
}
|
1316
1434
|
case UPB_TYPE_ENUM: {
|
1317
1435
|
const upb_enumdef *e = f->sub.enumdef;
|
1318
1436
|
int32_t val;
|
1319
|
-
|
1437
|
+
if (!upb_enumdef_ntoi(e, str, len, &val)) {
|
1438
|
+
goto invalid;
|
1439
|
+
}
|
1320
1440
|
f->defaultval.sint = val;
|
1321
1441
|
break;
|
1322
1442
|
}
|
1323
1443
|
case UPB_TYPE_INT64: {
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1444
|
+
long long val = strtoll(str, &end, 0);
|
1445
|
+
if (val > INT64_MAX || val < INT64_MIN || errno == ERANGE || *end) {
|
1446
|
+
goto invalid;
|
1447
|
+
}
|
1327
1448
|
f->defaultval.sint = val;
|
1328
1449
|
break;
|
1329
1450
|
}
|
1330
1451
|
case UPB_TYPE_UINT32: {
|
1331
1452
|
unsigned long val = strtoul(str, &end, 0);
|
1332
|
-
|
1453
|
+
if (val > UINT32_MAX || errno == ERANGE || *end) {
|
1454
|
+
goto invalid;
|
1455
|
+
}
|
1333
1456
|
f->defaultval.uint = val;
|
1334
1457
|
break;
|
1335
1458
|
}
|
1336
1459
|
case UPB_TYPE_UINT64: {
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1460
|
+
unsigned long long val = strtoull(str, &end, 0);
|
1461
|
+
if (val > UINT64_MAX || errno == ERANGE || *end) {
|
1462
|
+
goto invalid;
|
1463
|
+
}
|
1340
1464
|
f->defaultval.uint = val;
|
1341
1465
|
break;
|
1342
1466
|
}
|
1343
1467
|
case UPB_TYPE_DOUBLE: {
|
1344
1468
|
double val = strtod(str, &end);
|
1345
|
-
|
1469
|
+
if (errno == ERANGE || *end) {
|
1470
|
+
goto invalid;
|
1471
|
+
}
|
1346
1472
|
f->defaultval.dbl = val;
|
1347
1473
|
break;
|
1348
1474
|
}
|
1349
1475
|
case UPB_TYPE_FLOAT: {
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1476
|
+
float val = strtof(str, &end);
|
1477
|
+
if (errno == ERANGE || *end) {
|
1478
|
+
goto invalid;
|
1479
|
+
}
|
1353
1480
|
f->defaultval.flt = val;
|
1354
1481
|
break;
|
1355
1482
|
}
|
@@ -1359,25 +1486,30 @@ static bool parse_default(const symtab_addctx *ctx, const char *str, size_t len,
|
|
1359
1486
|
} else if (streql2(str, len, "true")) {
|
1360
1487
|
f->defaultval.boolean = true;
|
1361
1488
|
} else {
|
1362
|
-
return false;
|
1363
1489
|
}
|
1364
1490
|
break;
|
1365
1491
|
}
|
1366
1492
|
case UPB_TYPE_STRING:
|
1367
|
-
f->defaultval.str = newstr(ctx
|
1493
|
+
f->defaultval.str = newstr(ctx, str, len);
|
1368
1494
|
break;
|
1369
1495
|
case UPB_TYPE_BYTES:
|
1370
1496
|
/* XXX: need to interpret the C-escaped value. */
|
1371
|
-
f->defaultval.str = newstr(ctx
|
1497
|
+
f->defaultval.str = newstr(ctx, str, len);
|
1372
1498
|
break;
|
1373
1499
|
case UPB_TYPE_MESSAGE:
|
1374
1500
|
/* Should not have a default value. */
|
1375
|
-
|
1501
|
+
symtab_errf(ctx, "Message should not have a default (%s)",
|
1502
|
+
upb_fielddef_fullname(f));
|
1376
1503
|
}
|
1377
|
-
|
1504
|
+
|
1505
|
+
return;
|
1506
|
+
|
1507
|
+
invalid:
|
1508
|
+
symtab_errf(ctx, "Invalid default '%.*s' for field %s", (int)len, str,
|
1509
|
+
upb_fielddef_fullname(f));
|
1378
1510
|
}
|
1379
1511
|
|
1380
|
-
static void set_default_default(
|
1512
|
+
static void set_default_default(symtab_addctx *ctx, upb_fielddef *f) {
|
1381
1513
|
switch (upb_fielddef_type(f)) {
|
1382
1514
|
case UPB_TYPE_INT32:
|
1383
1515
|
case UPB_TYPE_INT64:
|
@@ -1394,7 +1526,7 @@ static void set_default_default(const symtab_addctx *ctx, upb_fielddef *f) {
|
|
1394
1526
|
break;
|
1395
1527
|
case UPB_TYPE_STRING:
|
1396
1528
|
case UPB_TYPE_BYTES:
|
1397
|
-
f->defaultval.str = newstr(ctx
|
1529
|
+
f->defaultval.str = newstr(ctx, NULL, 0);
|
1398
1530
|
break;
|
1399
1531
|
case UPB_TYPE_BOOL:
|
1400
1532
|
f->defaultval.boolean = false;
|
@@ -1404,10 +1536,9 @@ static void set_default_default(const symtab_addctx *ctx, upb_fielddef *f) {
|
|
1404
1536
|
}
|
1405
1537
|
}
|
1406
1538
|
|
1407
|
-
static
|
1408
|
-
|
1539
|
+
static void create_fielddef(
|
1540
|
+
symtab_addctx *ctx, const char *prefix, upb_msgdef *m,
|
1409
1541
|
const google_protobuf_FieldDescriptorProto *field_proto) {
|
1410
|
-
upb_alloc *alloc = ctx->alloc;
|
1411
1542
|
upb_fielddef *f;
|
1412
1543
|
const google_protobuf_FieldOptions *options;
|
1413
1544
|
upb_strview name;
|
@@ -1417,12 +1548,11 @@ static bool create_fielddef(
|
|
1417
1548
|
uint32_t field_number;
|
1418
1549
|
|
1419
1550
|
if (!google_protobuf_FieldDescriptorProto_has_name(field_proto)) {
|
1420
|
-
|
1421
|
-
return false;
|
1551
|
+
symtab_errf(ctx, "field has no name (%s)", upb_msgdef_fullname(m));
|
1422
1552
|
}
|
1423
1553
|
|
1424
1554
|
name = google_protobuf_FieldDescriptorProto_name(field_proto);
|
1425
|
-
|
1555
|
+
check_ident(ctx, name, false);
|
1426
1556
|
full_name = makefullname(ctx, prefix, name);
|
1427
1557
|
shortname = shortdefname(full_name);
|
1428
1558
|
|
@@ -1430,14 +1560,13 @@ static bool create_fielddef(
|
|
1430
1560
|
json_name = strviewdup(
|
1431
1561
|
ctx, google_protobuf_FieldDescriptorProto_json_name(field_proto));
|
1432
1562
|
} else {
|
1433
|
-
json_name = makejsonname(
|
1563
|
+
json_name = makejsonname(ctx, shortname);
|
1434
1564
|
}
|
1435
1565
|
|
1436
1566
|
field_number = google_protobuf_FieldDescriptorProto_number(field_proto);
|
1437
1567
|
|
1438
1568
|
if (field_number == 0 || field_number > UPB_MAX_FIELDNUMBER) {
|
1439
|
-
|
1440
|
-
return false;
|
1569
|
+
symtab_errf(ctx, "invalid field number (%u)", field_number);
|
1441
1570
|
}
|
1442
1571
|
|
1443
1572
|
if (m) {
|
@@ -1445,24 +1574,21 @@ static bool create_fielddef(
|
|
1445
1574
|
upb_value v, field_v, json_v;
|
1446
1575
|
size_t json_size;
|
1447
1576
|
|
1448
|
-
f = (upb_fielddef*)&m->fields[m->field_count
|
1577
|
+
f = (upb_fielddef*)&m->fields[m->field_count];
|
1578
|
+
f->index_ = m->field_count++;
|
1449
1579
|
f->msgdef = m;
|
1450
1580
|
f->is_extension_ = false;
|
1451
1581
|
|
1452
1582
|
if (upb_strtable_lookup(&m->ntof, shortname, NULL)) {
|
1453
|
-
|
1454
|
-
return false;
|
1583
|
+
symtab_errf(ctx, "duplicate field name (%s)", shortname);
|
1455
1584
|
}
|
1456
1585
|
|
1457
1586
|
if (upb_strtable_lookup(&m->ntof, json_name, NULL)) {
|
1458
|
-
|
1459
|
-
return false;
|
1587
|
+
symtab_errf(ctx, "duplicate json_name (%s)", json_name);
|
1460
1588
|
}
|
1461
1589
|
|
1462
1590
|
if (upb_inttable_lookup(&m->itof, field_number, NULL)) {
|
1463
|
-
|
1464
|
-
field_number);
|
1465
|
-
return false;
|
1591
|
+
symtab_errf(ctx, "duplicate field number (%u)", field_number);
|
1466
1592
|
}
|
1467
1593
|
|
1468
1594
|
field_v = pack_def(f, UPB_DEFTYPE_FIELD);
|
@@ -1470,12 +1596,12 @@ static bool create_fielddef(
|
|
1470
1596
|
v = upb_value_constptr(f);
|
1471
1597
|
json_size = strlen(json_name);
|
1472
1598
|
|
1473
|
-
CHK_OOM(
|
1474
|
-
|
1475
|
-
CHK_OOM(
|
1599
|
+
CHK_OOM(upb_strtable_insert(&m->ntof, name.data, name.size, field_v,
|
1600
|
+
ctx->arena));
|
1601
|
+
CHK_OOM(upb_inttable_insert(&m->itof, field_number, v, ctx->arena));
|
1476
1602
|
|
1477
1603
|
if (strcmp(shortname, json_name) != 0) {
|
1478
|
-
|
1604
|
+
upb_strtable_insert(&m->ntof, json_name, json_size, json_v, ctx->arena);
|
1479
1605
|
}
|
1480
1606
|
|
1481
1607
|
if (ctx->layouts) {
|
@@ -1496,7 +1622,7 @@ static bool create_fielddef(
|
|
1496
1622
|
/* extension field. */
|
1497
1623
|
f = (upb_fielddef*)&ctx->file->exts[ctx->file->ext_count++];
|
1498
1624
|
f->is_extension_ = true;
|
1499
|
-
|
1625
|
+
symtab_add(ctx, full_name, pack_def(f, UPB_DEFTYPE_FIELD));
|
1500
1626
|
}
|
1501
1627
|
|
1502
1628
|
f->full_name = full_name;
|
@@ -1515,9 +1641,7 @@ static bool create_fielddef(
|
|
1515
1641
|
f->sub.unresolved = field_proto;
|
1516
1642
|
|
1517
1643
|
if (f->label_ == UPB_LABEL_REQUIRED && f->file->syntax == UPB_SYNTAX_PROTO3) {
|
1518
|
-
|
1519
|
-
f->full_name);
|
1520
|
-
return false;
|
1644
|
+
symtab_errf(ctx, "proto3 fields cannot be required (%s)", f->full_name);
|
1521
1645
|
}
|
1522
1646
|
|
1523
1647
|
if (google_protobuf_FieldDescriptorProto_has_oneof_index(field_proto)) {
|
@@ -1527,32 +1651,35 @@ static bool create_fielddef(
|
|
1527
1651
|
upb_value v = upb_value_constptr(f);
|
1528
1652
|
|
1529
1653
|
if (upb_fielddef_label(f) != UPB_LABEL_OPTIONAL) {
|
1530
|
-
|
1531
|
-
|
1532
|
-
f->full_name);
|
1533
|
-
return false;
|
1654
|
+
symtab_errf(ctx, "fields in oneof must have OPTIONAL label (%s)",
|
1655
|
+
f->full_name);
|
1534
1656
|
}
|
1535
1657
|
|
1536
1658
|
if (!m) {
|
1537
|
-
|
1538
|
-
|
1539
|
-
f->full_name);
|
1540
|
-
return false;
|
1659
|
+
symtab_errf(ctx, "oneof_index provided for extension field (%s)",
|
1660
|
+
f->full_name);
|
1541
1661
|
}
|
1542
1662
|
|
1543
1663
|
if (oneof_index >= m->oneof_count) {
|
1544
|
-
|
1545
|
-
f->full_name);
|
1546
|
-
return false;
|
1664
|
+
symtab_errf(ctx, "oneof_index out of range (%s)", f->full_name);
|
1547
1665
|
}
|
1548
1666
|
|
1549
|
-
oneof = (upb_oneofdef*)&m->oneofs[oneof_index];
|
1667
|
+
oneof = (upb_oneofdef *)&m->oneofs[oneof_index];
|
1550
1668
|
f->oneof = oneof;
|
1551
1669
|
|
1552
|
-
|
1553
|
-
|
1670
|
+
oneof->field_count++;
|
1671
|
+
if (f->proto3_optional_) {
|
1672
|
+
oneof->synthetic = true;
|
1673
|
+
}
|
1674
|
+
CHK_OOM(upb_inttable_insert(&oneof->itof, f->number_, v, ctx->arena));
|
1675
|
+
CHK_OOM(
|
1676
|
+
upb_strtable_insert(&oneof->ntof, name.data, name.size, v, ctx->arena));
|
1554
1677
|
} else {
|
1555
1678
|
f->oneof = NULL;
|
1679
|
+
if (f->proto3_optional_) {
|
1680
|
+
symtab_errf(ctx, "field with proto3_optional was not in a oneof (%s)",
|
1681
|
+
f->full_name);
|
1682
|
+
}
|
1556
1683
|
}
|
1557
1684
|
|
1558
1685
|
options = google_protobuf_FieldDescriptorProto_has_options(field_proto) ?
|
@@ -1571,12 +1698,10 @@ static bool create_fielddef(
|
|
1571
1698
|
} else {
|
1572
1699
|
f->lazy_ = false;
|
1573
1700
|
}
|
1574
|
-
|
1575
|
-
return true;
|
1576
1701
|
}
|
1577
1702
|
|
1578
|
-
static
|
1579
|
-
|
1703
|
+
static void create_enumdef(
|
1704
|
+
symtab_addctx *ctx, const char *prefix,
|
1580
1705
|
const google_protobuf_EnumDescriptorProto *enum_proto) {
|
1581
1706
|
upb_enumdef *e;
|
1582
1707
|
const google_protobuf_EnumValueDescriptorProto *const *values;
|
@@ -1584,25 +1709,22 @@ static bool create_enumdef(
|
|
1584
1709
|
size_t i, n;
|
1585
1710
|
|
1586
1711
|
name = google_protobuf_EnumDescriptorProto_name(enum_proto);
|
1587
|
-
|
1712
|
+
check_ident(ctx, name, false);
|
1588
1713
|
|
1589
1714
|
e = (upb_enumdef*)&ctx->file->enums[ctx->file->enum_count++];
|
1590
1715
|
e->full_name = makefullname(ctx, prefix, name);
|
1591
|
-
|
1716
|
+
symtab_add(ctx, e->full_name, pack_def(e, UPB_DEFTYPE_ENUM));
|
1592
1717
|
|
1593
|
-
|
1594
|
-
CHK_OOM(
|
1718
|
+
values = google_protobuf_EnumDescriptorProto_value(enum_proto, &n);
|
1719
|
+
CHK_OOM(upb_strtable_init(&e->ntoi, n, ctx->arena));
|
1720
|
+
CHK_OOM(upb_inttable_init(&e->iton, ctx->arena));
|
1595
1721
|
|
1596
1722
|
e->file = ctx->file;
|
1597
1723
|
e->defaultval = 0;
|
1598
1724
|
|
1599
|
-
values = google_protobuf_EnumDescriptorProto_value(enum_proto, &n);
|
1600
|
-
|
1601
1725
|
if (n == 0) {
|
1602
|
-
|
1603
|
-
|
1604
|
-
e->full_name);
|
1605
|
-
return false;
|
1726
|
+
symtab_errf(ctx, "enums must contain at least one value (%s)",
|
1727
|
+
e->full_name);
|
1606
1728
|
}
|
1607
1729
|
|
1608
1730
|
for (i = 0; i < n; i++) {
|
@@ -1613,33 +1735,27 @@ static bool create_enumdef(
|
|
1613
1735
|
upb_value v = upb_value_int32(num);
|
1614
1736
|
|
1615
1737
|
if (i == 0 && e->file->syntax == UPB_SYNTAX_PROTO3 && num != 0) {
|
1616
|
-
|
1617
|
-
|
1618
|
-
e->full_name);
|
1619
|
-
return false;
|
1738
|
+
symtab_errf(ctx, "for proto3, the first enum value must be zero (%s)",
|
1739
|
+
e->full_name);
|
1620
1740
|
}
|
1621
1741
|
|
1622
1742
|
if (upb_strtable_lookup(&e->ntoi, name2, NULL)) {
|
1623
|
-
|
1624
|
-
return false;
|
1743
|
+
symtab_errf(ctx, "duplicate enum label '%s'", name2);
|
1625
1744
|
}
|
1626
1745
|
|
1627
1746
|
CHK_OOM(name2)
|
1628
|
-
CHK_OOM(
|
1629
|
-
upb_strtable_insert3(&e->ntoi, name2, strlen(name2), v, ctx->alloc));
|
1747
|
+
CHK_OOM(upb_strtable_insert(&e->ntoi, name2, strlen(name2), v, ctx->arena));
|
1630
1748
|
|
1631
1749
|
if (!upb_inttable_lookup(&e->iton, num, NULL)) {
|
1632
1750
|
upb_value v = upb_value_cstr(name2);
|
1633
|
-
CHK_OOM(
|
1751
|
+
CHK_OOM(upb_inttable_insert(&e->iton, num, v, ctx->arena));
|
1634
1752
|
}
|
1635
1753
|
}
|
1636
1754
|
|
1637
|
-
|
1638
|
-
|
1639
|
-
return true;
|
1755
|
+
upb_inttable_compact(&e->iton, ctx->arena);
|
1640
1756
|
}
|
1641
1757
|
|
1642
|
-
static
|
1758
|
+
static void create_msgdef(symtab_addctx *ctx, const char *prefix,
|
1643
1759
|
const google_protobuf_DescriptorProto *msg_proto) {
|
1644
1760
|
upb_msgdef *m;
|
1645
1761
|
const google_protobuf_MessageOptions *options;
|
@@ -1647,18 +1763,21 @@ static bool create_msgdef(symtab_addctx *ctx, const char *prefix,
|
|
1647
1763
|
const google_protobuf_FieldDescriptorProto *const *fields;
|
1648
1764
|
const google_protobuf_EnumDescriptorProto *const *enums;
|
1649
1765
|
const google_protobuf_DescriptorProto *const *msgs;
|
1650
|
-
size_t i, n;
|
1766
|
+
size_t i, n_oneof, n_field, n;
|
1651
1767
|
upb_strview name;
|
1652
1768
|
|
1653
1769
|
name = google_protobuf_DescriptorProto_name(msg_proto);
|
1654
|
-
|
1770
|
+
check_ident(ctx, name, false);
|
1655
1771
|
|
1656
1772
|
m = (upb_msgdef*)&ctx->file->msgs[ctx->file->msg_count++];
|
1657
1773
|
m->full_name = makefullname(ctx, prefix, name);
|
1658
|
-
|
1774
|
+
symtab_add(ctx, m->full_name, pack_def(m, UPB_DEFTYPE_MSG));
|
1775
|
+
|
1776
|
+
oneofs = google_protobuf_DescriptorProto_oneof_decl(msg_proto, &n_oneof);
|
1777
|
+
fields = google_protobuf_DescriptorProto_field(msg_proto, &n_field);
|
1659
1778
|
|
1660
|
-
CHK_OOM(
|
1661
|
-
CHK_OOM(
|
1779
|
+
CHK_OOM(upb_inttable_init(&m->itof, ctx->arena));
|
1780
|
+
CHK_OOM(upb_strtable_init(&m->ntof, n_oneof + n_field, ctx->arena));
|
1662
1781
|
|
1663
1782
|
m->file = ctx->file;
|
1664
1783
|
m->map_entry = false;
|
@@ -1674,119 +1793,102 @@ static bool create_msgdef(symtab_addctx *ctx, const char *prefix,
|
|
1674
1793
|
ctx->layouts++;
|
1675
1794
|
} else {
|
1676
1795
|
/* Allocate now (to allow cross-linking), populate later. */
|
1677
|
-
m->layout =
|
1796
|
+
m->layout = symtab_alloc(
|
1797
|
+
ctx, sizeof(*m->layout) + sizeof(_upb_fasttable_entry));
|
1678
1798
|
}
|
1679
1799
|
|
1680
|
-
oneofs = google_protobuf_DescriptorProto_oneof_decl(msg_proto, &n);
|
1681
1800
|
m->oneof_count = 0;
|
1682
|
-
m->oneofs =
|
1683
|
-
for (i = 0; i <
|
1684
|
-
|
1801
|
+
m->oneofs = symtab_alloc(ctx, sizeof(*m->oneofs) * n_oneof);
|
1802
|
+
for (i = 0; i < n_oneof; i++) {
|
1803
|
+
create_oneofdef(ctx, m, oneofs[i]);
|
1685
1804
|
}
|
1686
1805
|
|
1687
|
-
fields = google_protobuf_DescriptorProto_field(msg_proto, &n);
|
1688
1806
|
m->field_count = 0;
|
1689
|
-
m->fields =
|
1690
|
-
for (i = 0; i <
|
1691
|
-
|
1807
|
+
m->fields = symtab_alloc(ctx, sizeof(*m->fields) * n_field);
|
1808
|
+
for (i = 0; i < n_field; i++) {
|
1809
|
+
create_fielddef(ctx, m->full_name, m, fields[i]);
|
1692
1810
|
}
|
1693
1811
|
|
1694
|
-
|
1695
|
-
CHK(check_oneofs(m, ctx->status));
|
1812
|
+
finalize_oneofs(ctx, m);
|
1696
1813
|
assign_msg_wellknowntype(m);
|
1697
|
-
|
1814
|
+
upb_inttable_compact(&m->itof, ctx->arena);
|
1698
1815
|
|
1699
1816
|
/* This message is built. Now build nested messages and enums. */
|
1700
1817
|
|
1701
1818
|
enums = google_protobuf_DescriptorProto_enum_type(msg_proto, &n);
|
1702
1819
|
for (i = 0; i < n; i++) {
|
1703
|
-
|
1820
|
+
create_enumdef(ctx, m->full_name, enums[i]);
|
1704
1821
|
}
|
1705
1822
|
|
1706
1823
|
msgs = google_protobuf_DescriptorProto_nested_type(msg_proto, &n);
|
1707
1824
|
for (i = 0; i < n; i++) {
|
1708
|
-
|
1825
|
+
create_msgdef(ctx, m->full_name, msgs[i]);
|
1709
1826
|
}
|
1710
|
-
|
1711
|
-
return true;
|
1712
1827
|
}
|
1713
1828
|
|
1714
|
-
typedef struct {
|
1715
|
-
int msg_count;
|
1716
|
-
int enum_count;
|
1717
|
-
int ext_count;
|
1718
|
-
} decl_counts;
|
1719
|
-
|
1720
1829
|
static void count_types_in_msg(const google_protobuf_DescriptorProto *msg_proto,
|
1721
|
-
|
1830
|
+
upb_filedef *file) {
|
1722
1831
|
const google_protobuf_DescriptorProto *const *msgs;
|
1723
1832
|
size_t i, n;
|
1724
1833
|
|
1725
|
-
|
1834
|
+
file->msg_count++;
|
1726
1835
|
|
1727
1836
|
msgs = google_protobuf_DescriptorProto_nested_type(msg_proto, &n);
|
1728
1837
|
for (i = 0; i < n; i++) {
|
1729
|
-
count_types_in_msg(msgs[i],
|
1838
|
+
count_types_in_msg(msgs[i], file);
|
1730
1839
|
}
|
1731
1840
|
|
1732
1841
|
google_protobuf_DescriptorProto_enum_type(msg_proto, &n);
|
1733
|
-
|
1842
|
+
file->enum_count += n;
|
1734
1843
|
|
1735
1844
|
google_protobuf_DescriptorProto_extension(msg_proto, &n);
|
1736
|
-
|
1845
|
+
file->ext_count += n;
|
1737
1846
|
}
|
1738
1847
|
|
1739
1848
|
static void count_types_in_file(
|
1740
1849
|
const google_protobuf_FileDescriptorProto *file_proto,
|
1741
|
-
|
1850
|
+
upb_filedef *file) {
|
1742
1851
|
const google_protobuf_DescriptorProto *const *msgs;
|
1743
1852
|
size_t i, n;
|
1744
1853
|
|
1745
1854
|
msgs = google_protobuf_FileDescriptorProto_message_type(file_proto, &n);
|
1746
1855
|
for (i = 0; i < n; i++) {
|
1747
|
-
count_types_in_msg(msgs[i],
|
1856
|
+
count_types_in_msg(msgs[i], file);
|
1748
1857
|
}
|
1749
1858
|
|
1750
1859
|
google_protobuf_FileDescriptorProto_enum_type(file_proto, &n);
|
1751
|
-
|
1860
|
+
file->enum_count += n;
|
1752
1861
|
|
1753
1862
|
google_protobuf_FileDescriptorProto_extension(file_proto, &n);
|
1754
|
-
|
1863
|
+
file->ext_count += n;
|
1755
1864
|
}
|
1756
1865
|
|
1757
|
-
static
|
1866
|
+
static void resolve_fielddef(symtab_addctx *ctx, const char *prefix,
|
1758
1867
|
upb_fielddef *f) {
|
1759
1868
|
upb_strview name;
|
1760
1869
|
const google_protobuf_FieldDescriptorProto *field_proto = f->sub.unresolved;
|
1761
1870
|
|
1762
1871
|
if (f->is_extension_) {
|
1763
1872
|
if (!google_protobuf_FieldDescriptorProto_has_extendee(field_proto)) {
|
1764
|
-
|
1765
|
-
|
1766
|
-
f->full_name);
|
1767
|
-
return false;
|
1873
|
+
symtab_errf(ctx, "extension for field '%s' had no extendee",
|
1874
|
+
f->full_name);
|
1768
1875
|
}
|
1769
1876
|
|
1770
1877
|
name = google_protobuf_FieldDescriptorProto_extendee(field_proto);
|
1771
1878
|
f->msgdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_MSG);
|
1772
|
-
CHK(f->msgdef);
|
1773
1879
|
}
|
1774
1880
|
|
1775
1881
|
if ((upb_fielddef_issubmsg(f) || f->type_ == UPB_DESCRIPTOR_TYPE_ENUM) &&
|
1776
1882
|
!google_protobuf_FieldDescriptorProto_has_type_name(field_proto)) {
|
1777
|
-
|
1778
|
-
f->full_name);
|
1779
|
-
return false;
|
1883
|
+
symtab_errf(ctx, "field '%s' is missing type name", f->full_name);
|
1780
1884
|
}
|
1781
1885
|
|
1782
1886
|
name = google_protobuf_FieldDescriptorProto_type_name(field_proto);
|
1783
1887
|
|
1784
1888
|
if (upb_fielddef_issubmsg(f)) {
|
1785
1889
|
f->sub.msgdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_MSG);
|
1786
|
-
CHK(f->sub.msgdef);
|
1787
1890
|
} else if (f->type_ == UPB_DESCRIPTOR_TYPE_ENUM) {
|
1788
1891
|
f->sub.enumdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_ENUM);
|
1789
|
-
CHK(f->sub.enumdef);
|
1790
1892
|
}
|
1791
1893
|
|
1792
1894
|
/* Have to delay resolving of the default value until now because of the enum
|
@@ -1796,63 +1898,49 @@ static bool resolve_fielddef(const symtab_addctx *ctx, const char *prefix,
|
|
1796
1898
|
google_protobuf_FieldDescriptorProto_default_value(field_proto);
|
1797
1899
|
|
1798
1900
|
if (f->file->syntax == UPB_SYNTAX_PROTO3) {
|
1799
|
-
|
1800
|
-
|
1801
|
-
f->full_name);
|
1802
|
-
return false;
|
1901
|
+
symtab_errf(ctx, "proto3 fields cannot have explicit defaults (%s)",
|
1902
|
+
f->full_name);
|
1803
1903
|
}
|
1804
1904
|
|
1805
1905
|
if (upb_fielddef_issubmsg(f)) {
|
1806
|
-
|
1807
|
-
|
1808
|
-
f->full_name);
|
1809
|
-
return false;
|
1906
|
+
symtab_errf(ctx, "message fields cannot have explicit defaults (%s)",
|
1907
|
+
f->full_name);
|
1810
1908
|
}
|
1811
1909
|
|
1812
|
-
|
1813
|
-
upb_status_seterrf(ctx->status,
|
1814
|
-
"couldn't parse default '" UPB_STRVIEW_FORMAT
|
1815
|
-
"' for field (%s)",
|
1816
|
-
UPB_STRVIEW_ARGS(defaultval), f->full_name);
|
1817
|
-
return false;
|
1818
|
-
}
|
1910
|
+
parse_default(ctx, defaultval.data, defaultval.size, f);
|
1819
1911
|
} else {
|
1820
1912
|
set_default_default(ctx, f);
|
1821
1913
|
}
|
1822
|
-
|
1823
|
-
return true;
|
1824
1914
|
}
|
1825
1915
|
|
1826
|
-
static
|
1916
|
+
static void build_filedef(
|
1827
1917
|
symtab_addctx *ctx, upb_filedef *file,
|
1828
1918
|
const google_protobuf_FileDescriptorProto *file_proto) {
|
1829
|
-
upb_alloc *alloc = ctx->alloc;
|
1830
1919
|
const google_protobuf_FileOptions *file_options_proto;
|
1831
1920
|
const google_protobuf_DescriptorProto *const *msgs;
|
1832
1921
|
const google_protobuf_EnumDescriptorProto *const *enums;
|
1833
1922
|
const google_protobuf_FieldDescriptorProto *const *exts;
|
1834
1923
|
const upb_strview* strs;
|
1835
1924
|
size_t i, n;
|
1836
|
-
decl_counts counts = {0, 0, 0};
|
1837
|
-
|
1838
|
-
count_types_in_file(file_proto, &counts);
|
1839
1925
|
|
1840
|
-
file->
|
1841
|
-
file->enums = upb_malloc(alloc, sizeof(*file->enums) * counts.enum_count);
|
1842
|
-
file->exts = upb_malloc(alloc, sizeof(*file->exts) * counts.ext_count);
|
1926
|
+
file->symtab = ctx->symtab;
|
1843
1927
|
|
1844
|
-
|
1845
|
-
|
1846
|
-
|
1928
|
+
/* One pass to count and allocate. */
|
1929
|
+
file->msg_count = 0;
|
1930
|
+
file->enum_count = 0;
|
1931
|
+
file->ext_count = 0;
|
1932
|
+
count_types_in_file(file_proto, file);
|
1933
|
+
file->msgs = symtab_alloc(ctx, sizeof(*file->msgs) * file->msg_count);
|
1934
|
+
file->enums = symtab_alloc(ctx, sizeof(*file->enums) * file->enum_count);
|
1935
|
+
file->exts = symtab_alloc(ctx, sizeof(*file->exts) * file->ext_count);
|
1847
1936
|
|
1848
|
-
/*
|
1937
|
+
/* In the second pass we increment these as defs are added. */
|
1849
1938
|
file->msg_count = 0;
|
1850
1939
|
file->enum_count = 0;
|
1851
1940
|
file->ext_count = 0;
|
1852
1941
|
|
1853
1942
|
if (!google_protobuf_FileDescriptorProto_has_name(file_proto)) {
|
1854
|
-
|
1855
|
-
return false;
|
1943
|
+
symtab_errf(ctx, "File has no name");
|
1856
1944
|
}
|
1857
1945
|
|
1858
1946
|
file->name =
|
@@ -1863,7 +1951,7 @@ static bool build_filedef(
|
|
1863
1951
|
if (google_protobuf_FileDescriptorProto_has_package(file_proto)) {
|
1864
1952
|
upb_strview package =
|
1865
1953
|
google_protobuf_FileDescriptorProto_package(file_proto);
|
1866
|
-
|
1954
|
+
check_ident(ctx, package, true);
|
1867
1955
|
file->package = strviewdup(ctx, package);
|
1868
1956
|
} else {
|
1869
1957
|
file->package = NULL;
|
@@ -1878,9 +1966,8 @@ static bool build_filedef(
|
|
1878
1966
|
} else if (streql_view(syntax, "proto3")) {
|
1879
1967
|
file->syntax = UPB_SYNTAX_PROTO3;
|
1880
1968
|
} else {
|
1881
|
-
|
1882
|
-
|
1883
|
-
return false;
|
1969
|
+
symtab_errf(ctx, "Invalid syntax '" UPB_STRVIEW_FORMAT "'",
|
1970
|
+
UPB_STRVIEW_ARGS(syntax));
|
1884
1971
|
}
|
1885
1972
|
} else {
|
1886
1973
|
file->syntax = UPB_SYNTAX_PROTO2;
|
@@ -1902,19 +1989,17 @@ static bool build_filedef(
|
|
1902
1989
|
|
1903
1990
|
/* Verify dependencies. */
|
1904
1991
|
strs = google_protobuf_FileDescriptorProto_dependency(file_proto, &n);
|
1905
|
-
file->deps =
|
1906
|
-
CHK_OOM(n == 0 || file->deps);
|
1992
|
+
file->deps = symtab_alloc(ctx, sizeof(*file->deps) * n);
|
1907
1993
|
|
1908
1994
|
for (i = 0; i < n; i++) {
|
1909
1995
|
upb_strview dep_name = strs[i];
|
1910
1996
|
upb_value v;
|
1911
1997
|
if (!upb_strtable_lookup2(&ctx->symtab->files, dep_name.data,
|
1912
1998
|
dep_name.size, &v)) {
|
1913
|
-
|
1914
|
-
|
1915
|
-
|
1916
|
-
|
1917
|
-
return false;
|
1999
|
+
symtab_errf(ctx,
|
2000
|
+
"Depends on file '" UPB_STRVIEW_FORMAT
|
2001
|
+
"', but it has not been loaded",
|
2002
|
+
UPB_STRVIEW_ARGS(dep_name));
|
1918
2003
|
}
|
1919
2004
|
file->deps[i] = upb_value_getconstptr(v);
|
1920
2005
|
}
|
@@ -1922,194 +2007,99 @@ static bool build_filedef(
|
|
1922
2007
|
/* Create messages. */
|
1923
2008
|
msgs = google_protobuf_FileDescriptorProto_message_type(file_proto, &n);
|
1924
2009
|
for (i = 0; i < n; i++) {
|
1925
|
-
|
2010
|
+
create_msgdef(ctx, file->package, msgs[i]);
|
1926
2011
|
}
|
1927
2012
|
|
1928
2013
|
/* Create enums. */
|
1929
2014
|
enums = google_protobuf_FileDescriptorProto_enum_type(file_proto, &n);
|
1930
2015
|
for (i = 0; i < n; i++) {
|
1931
|
-
|
2016
|
+
create_enumdef(ctx, file->package, enums[i]);
|
1932
2017
|
}
|
1933
2018
|
|
1934
2019
|
/* Create extensions. */
|
1935
2020
|
exts = google_protobuf_FileDescriptorProto_extension(file_proto, &n);
|
1936
|
-
file->exts =
|
1937
|
-
CHK_OOM(n == 0 || file->exts);
|
2021
|
+
file->exts = symtab_alloc(ctx, sizeof(*file->exts) * n);
|
1938
2022
|
for (i = 0; i < n; i++) {
|
1939
|
-
|
2023
|
+
create_fielddef(ctx, file->package, NULL, exts[i]);
|
1940
2024
|
}
|
1941
2025
|
|
1942
2026
|
/* Now that all names are in the table, build layouts and resolve refs. */
|
1943
2027
|
for (i = 0; i < (size_t)file->ext_count; i++) {
|
1944
|
-
|
2028
|
+
resolve_fielddef(ctx, file->package, (upb_fielddef*)&file->exts[i]);
|
1945
2029
|
}
|
1946
2030
|
|
1947
2031
|
for (i = 0; i < (size_t)file->msg_count; i++) {
|
1948
2032
|
const upb_msgdef *m = &file->msgs[i];
|
1949
2033
|
int j;
|
1950
2034
|
for (j = 0; j < m->field_count; j++) {
|
1951
|
-
|
2035
|
+
resolve_fielddef(ctx, m->full_name, (upb_fielddef*)&m->fields[j]);
|
1952
2036
|
}
|
1953
2037
|
}
|
1954
2038
|
|
1955
2039
|
if (!ctx->layouts) {
|
1956
2040
|
for (i = 0; i < (size_t)file->msg_count; i++) {
|
1957
2041
|
const upb_msgdef *m = &file->msgs[i];
|
1958
|
-
make_layout(ctx
|
2042
|
+
make_layout(ctx, m);
|
1959
2043
|
}
|
1960
2044
|
}
|
1961
|
-
|
1962
|
-
return true;
|
1963
|
-
}
|
1964
|
-
|
1965
|
-
static bool upb_symtab_addtotabs(upb_symtab *s, symtab_addctx *ctx) {
|
1966
|
-
const upb_filedef *file = ctx->file;
|
1967
|
-
upb_alloc *alloc = upb_arena_alloc(s->arena);
|
1968
|
-
upb_strtable_iter iter;
|
1969
|
-
|
1970
|
-
CHK_OOM(upb_strtable_insert3(&s->files, file->name, strlen(file->name),
|
1971
|
-
upb_value_constptr(file), alloc));
|
1972
|
-
|
1973
|
-
upb_strtable_begin(&iter, ctx->addtab);
|
1974
|
-
for (; !upb_strtable_done(&iter); upb_strtable_next(&iter)) {
|
1975
|
-
upb_strview key = upb_strtable_iter_key(&iter);
|
1976
|
-
upb_value value = upb_strtable_iter_value(&iter);
|
1977
|
-
CHK_OOM(upb_strtable_insert3(&s->syms, key.data, key.size, value, alloc));
|
1978
|
-
}
|
1979
|
-
|
1980
|
-
return true;
|
1981
|
-
}
|
1982
|
-
|
1983
|
-
/* upb_filedef ****************************************************************/
|
1984
|
-
|
1985
|
-
const char *upb_filedef_name(const upb_filedef *f) {
|
1986
|
-
return f->name;
|
1987
|
-
}
|
1988
|
-
|
1989
|
-
const char *upb_filedef_package(const upb_filedef *f) {
|
1990
|
-
return f->package;
|
1991
|
-
}
|
1992
|
-
|
1993
|
-
const char *upb_filedef_phpprefix(const upb_filedef *f) {
|
1994
|
-
return f->phpprefix;
|
1995
|
-
}
|
1996
|
-
|
1997
|
-
const char *upb_filedef_phpnamespace(const upb_filedef *f) {
|
1998
|
-
return f->phpnamespace;
|
1999
2045
|
}
|
2000
2046
|
|
2001
|
-
|
2002
|
-
|
2003
|
-
|
2004
|
-
|
2005
|
-
|
2006
|
-
return f->msg_count;
|
2007
|
-
}
|
2008
|
-
|
2009
|
-
int upb_filedef_depcount(const upb_filedef *f) {
|
2010
|
-
return f->dep_count;
|
2011
|
-
}
|
2012
|
-
|
2013
|
-
int upb_filedef_enumcount(const upb_filedef *f) {
|
2014
|
-
return f->enum_count;
|
2015
|
-
}
|
2016
|
-
|
2017
|
-
const upb_filedef *upb_filedef_dep(const upb_filedef *f, int i) {
|
2018
|
-
return i < 0 || i >= f->dep_count ? NULL : f->deps[i];
|
2019
|
-
}
|
2020
|
-
|
2021
|
-
const upb_msgdef *upb_filedef_msg(const upb_filedef *f, int i) {
|
2022
|
-
return i < 0 || i >= f->msg_count ? NULL : &f->msgs[i];
|
2023
|
-
}
|
2024
|
-
|
2025
|
-
const upb_enumdef *upb_filedef_enum(const upb_filedef *f, int i) {
|
2026
|
-
return i < 0 || i >= f->enum_count ? NULL : &f->enums[i];
|
2027
|
-
}
|
2028
|
-
|
2029
|
-
void upb_symtab_free(upb_symtab *s) {
|
2030
|
-
upb_arena_free(s->arena);
|
2031
|
-
upb_gfree(s);
|
2032
|
-
}
|
2033
|
-
|
2034
|
-
upb_symtab *upb_symtab_new(void) {
|
2035
|
-
upb_symtab *s = upb_gmalloc(sizeof(*s));
|
2036
|
-
upb_alloc *alloc;
|
2037
|
-
|
2038
|
-
if (!s) {
|
2039
|
-
return NULL;
|
2047
|
+
static void remove_filedef(upb_symtab *s, upb_filedef *file) {
|
2048
|
+
int i;
|
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);
|
2040
2052
|
}
|
2041
|
-
|
2042
|
-
|
2043
|
-
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
2047
|
-
|
2048
|
-
upb_gfree(s);
|
2049
|
-
s = NULL;
|
2053
|
+
for (i = 0; i < file->enum_count; i++) {
|
2054
|
+
const char *name = file->enums[i].full_name;
|
2055
|
+
upb_strtable_remove(&s->syms, name, strlen(name), NULL);
|
2056
|
+
}
|
2057
|
+
for (i = 0; i < file->ext_count; i++) {
|
2058
|
+
const char *name = file->exts[i].full_name;
|
2059
|
+
upb_strtable_remove(&s->syms, name, strlen(name), NULL);
|
2050
2060
|
}
|
2051
|
-
return s;
|
2052
|
-
}
|
2053
|
-
|
2054
|
-
const upb_msgdef *upb_symtab_lookupmsg(const upb_symtab *s, const char *sym) {
|
2055
|
-
upb_value v;
|
2056
|
-
return upb_strtable_lookup(&s->syms, sym, &v) ?
|
2057
|
-
unpack_def(v, UPB_DEFTYPE_MSG) : NULL;
|
2058
|
-
}
|
2059
|
-
|
2060
|
-
const upb_msgdef *upb_symtab_lookupmsg2(const upb_symtab *s, const char *sym,
|
2061
|
-
size_t len) {
|
2062
|
-
upb_value v;
|
2063
|
-
return upb_strtable_lookup2(&s->syms, sym, len, &v) ?
|
2064
|
-
unpack_def(v, UPB_DEFTYPE_MSG) : NULL;
|
2065
|
-
}
|
2066
|
-
|
2067
|
-
const upb_enumdef *upb_symtab_lookupenum(const upb_symtab *s, const char *sym) {
|
2068
|
-
upb_value v;
|
2069
|
-
return upb_strtable_lookup(&s->syms, sym, &v) ?
|
2070
|
-
unpack_def(v, UPB_DEFTYPE_ENUM) : NULL;
|
2071
|
-
}
|
2072
|
-
|
2073
|
-
const upb_filedef *upb_symtab_lookupfile(const upb_symtab *s, const char *name) {
|
2074
|
-
upb_value v;
|
2075
|
-
return upb_strtable_lookup(&s->files, name, &v) ? upb_value_getconstptr(v)
|
2076
|
-
: NULL;
|
2077
|
-
}
|
2078
|
-
|
2079
|
-
const upb_filedef *upb_symtab_lookupfile2(
|
2080
|
-
const upb_symtab *s, const char *name, size_t len) {
|
2081
|
-
upb_value v;
|
2082
|
-
return upb_strtable_lookup2(&s->files, name, len, &v) ?
|
2083
|
-
upb_value_getconstptr(v) : NULL;
|
2084
|
-
}
|
2085
|
-
|
2086
|
-
int upb_symtab_filecount(const upb_symtab *s) {
|
2087
|
-
return (int)upb_strtable_count(&s->files);
|
2088
2061
|
}
|
2089
2062
|
|
2090
2063
|
static const upb_filedef *_upb_symtab_addfile(
|
2091
2064
|
upb_symtab *s, const google_protobuf_FileDescriptorProto *file_proto,
|
2092
2065
|
const upb_msglayout **layouts, upb_status *status) {
|
2093
|
-
upb_arena *tmparena = upb_arena_new();
|
2094
|
-
upb_strtable addtab;
|
2095
|
-
upb_alloc *alloc = upb_arena_alloc(s->arena);
|
2096
|
-
upb_filedef *file = upb_malloc(alloc, sizeof(*file));
|
2097
|
-
bool ok;
|
2098
2066
|
symtab_addctx ctx;
|
2067
|
+
upb_strview name = google_protobuf_FileDescriptorProto_name(file_proto);
|
2068
|
+
|
2069
|
+
if (upb_strtable_lookup2(&s->files, name.data, name.size, NULL)) {
|
2070
|
+
upb_status_seterrf(status, "duplicate file name (%.*s)",
|
2071
|
+
UPB_STRVIEW_ARGS(name));
|
2072
|
+
return NULL;
|
2073
|
+
}
|
2099
2074
|
|
2100
|
-
ctx.file = file;
|
2101
2075
|
ctx.symtab = s;
|
2102
|
-
ctx.alloc = alloc;
|
2103
|
-
ctx.tmp = upb_arena_alloc(tmparena);
|
2104
|
-
ctx.addtab = &addtab;
|
2105
2076
|
ctx.layouts = layouts;
|
2106
2077
|
ctx.status = status;
|
2078
|
+
ctx.file = NULL;
|
2079
|
+
ctx.arena = upb_arena_new();
|
2107
2080
|
|
2108
|
-
|
2109
|
-
|
2081
|
+
if (!ctx.arena) {
|
2082
|
+
upb_status_setoom(status);
|
2083
|
+
return NULL;
|
2084
|
+
}
|
2110
2085
|
|
2111
|
-
|
2112
|
-
|
2086
|
+
if (UPB_UNLIKELY(UPB_SETJMP(ctx.err))) {
|
2087
|
+
UPB_ASSERT(!upb_ok(status));
|
2088
|
+
if (ctx.file) {
|
2089
|
+
remove_filedef(s, ctx.file);
|
2090
|
+
ctx.file = NULL;
|
2091
|
+
}
|
2092
|
+
} else {
|
2093
|
+
ctx.file = symtab_alloc(&ctx, sizeof(*ctx.file));
|
2094
|
+
build_filedef(&ctx, ctx.file, file_proto);
|
2095
|
+
upb_strtable_insert(&s->files, name.data, name.size,
|
2096
|
+
upb_value_constptr(ctx.file), ctx.arena);
|
2097
|
+
UPB_ASSERT(upb_ok(status));
|
2098
|
+
upb_arena_fuse(s->arena, ctx.arena);
|
2099
|
+
}
|
2100
|
+
|
2101
|
+
upb_arena_free(ctx.arena);
|
2102
|
+
return ctx.file;
|
2113
2103
|
}
|
2114
2104
|
|
2115
2105
|
const upb_filedef *upb_symtab_addfile(
|
@@ -2141,8 +2131,10 @@ bool _upb_symtab_loaddefinit(upb_symtab *s, const upb_def_init *init) {
|
|
2141
2131
|
if (!_upb_symtab_loaddefinit(s, *deps)) goto err;
|
2142
2132
|
}
|
2143
2133
|
|
2144
|
-
file =
|
2145
|
-
init->descriptor.data, init->descriptor.size,
|
2134
|
+
file = google_protobuf_FileDescriptorProto_parse_ex(
|
2135
|
+
init->descriptor.data, init->descriptor.size, NULL, UPB_DECODE_ALIAS,
|
2136
|
+
arena);
|
2137
|
+
s->bytes_loaded += init->descriptor.size;
|
2146
2138
|
|
2147
2139
|
if (!file) {
|
2148
2140
|
upb_status_seterrf(
|
@@ -2165,5 +2157,12 @@ err:
|
|
2165
2157
|
return false;
|
2166
2158
|
}
|
2167
2159
|
|
2168
|
-
|
2160
|
+
size_t _upb_symtab_bytesloaded(const upb_symtab *s) {
|
2161
|
+
return s->bytes_loaded;
|
2162
|
+
}
|
2163
|
+
|
2164
|
+
upb_arena *_upb_symtab_arena(const upb_symtab *s) {
|
2165
|
+
return s->arena;
|
2166
|
+
}
|
2167
|
+
|
2169
2168
|
#undef CHK_OOM
|