grpc 1.42.0 → 1.43.1
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 +85 -34
- data/include/grpc/event_engine/event_engine.h +37 -13
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -11
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc_security.h +276 -145
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/port_platform.h +7 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -7
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +81 -40
- data/src/core/ext/filters/client_channel/client_channel.h +5 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +4 -4
- data/src/core/ext/filters/client_channel/health/health_check_client.h +1 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +12 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +27 -80
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +82 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -91
- data/src/core/ext/filters/client_channel/lb_policy.h +75 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +8 -12
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +6 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +222 -294
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -7
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +4 -4
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -30
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.cc +11 -28
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +265 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -20
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +8 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +54 -79
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +53 -62
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +83 -19
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +33 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +66 -92
- data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +16 -7
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +253 -218
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +162 -128
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +89 -71
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +117 -93
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +93 -75
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -440
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
- data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +26 -13
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +2 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
- data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +54 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +17 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +13 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +24 -12
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +19 -7
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +27 -15
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +28 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +16 -5
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +2 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +2 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +2 -53
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +2 -111
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +2 -7
- data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_api.cc +409 -304
- data/src/core/ext/xds/xds_api.h +3 -1
- data/src/core/ext/xds/xds_bootstrap.cc +6 -3
- data/src/core/ext/xds/xds_certificate_provider.h +1 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +3 -4
- data/src/core/ext/xds/xds_client.cc +395 -291
- data/src/core/ext/xds/xds_client.h +47 -38
- data/src/core/ext/xds/xds_routing.cc +247 -0
- data/src/core/ext/xds/xds_routing.h +98 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +975 -261
- data/src/core/lib/avl/avl.h +389 -88
- data/src/core/lib/backoff/backoff.cc +2 -2
- data/src/core/lib/channel/channel_args.cc +17 -17
- data/src/core/lib/channel/channel_args.h +11 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack_builder.cc +0 -2
- data/src/core/lib/channel/channel_trace.cc +6 -6
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/compression/compression_args.cc +7 -5
- data/src/core/lib/compression/compression_args.h +6 -4
- data/src/core/lib/config/core_configuration.cc +3 -1
- data/src/core/lib/config/core_configuration.h +11 -0
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/event_engine.cc +0 -13
- data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
- data/src/core/lib/event_engine/event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/memory_allocator.cc +70 -0
- data/src/core/lib/gpr/tls.h +6 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/status_helper.h +1 -1
- data/src/core/lib/gprpp/table.h +13 -1
- data/src/core/lib/http/httpcli.cc +30 -26
- data/src/core/lib/http/httpcli.h +14 -12
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +13 -13
- data/src/core/lib/iomgr/call_combiner.cc +2 -3
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +5 -25
- data/src/core/lib/iomgr/event_engine/resolver.cc +3 -2
- data/src/core/lib/iomgr/event_engine/tcp.cc +7 -5
- data/src/core/lib/iomgr/event_engine/timer.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +11 -11
- data/src/core/lib/iomgr/executor.cc +12 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +2 -4
- data/src/core/lib/iomgr/tcp_client.h +1 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -9
- data/src/core/lib/iomgr/tcp_client_custom.cc +4 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -23
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +1 -10
- data/src/core/lib/iomgr/tcp_custom.cc +9 -36
- data/src/core/lib/iomgr/tcp_custom.h +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +28 -33
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -15
- data/src/core/lib/iomgr/tcp_server_posix.cc +18 -22
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
- data/src/core/lib/iomgr/tcp_windows.cc +2 -7
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +1 -1
- data/src/core/lib/iomgr/work_serializer.cc +115 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +1 -1
- data/src/core/lib/promise/activity.cc +115 -0
- data/src/core/lib/promise/activity.h +499 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +407 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +44 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/loop.h +108 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +60 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +71 -0
- data/src/core/lib/resource_quota/api.cc +108 -0
- data/src/core/lib/resource_quota/api.h +41 -0
- data/src/core/lib/resource_quota/memory_quota.cc +454 -0
- data/src/core/lib/resource_quota/memory_quota.h +421 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +58 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +13 -19
- data/src/core/lib/security/authorization/evaluate_args.h +2 -1
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +3 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +11 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -10
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +3 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +4 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -22
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +11 -90
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +19 -82
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +10 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +344 -195
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -41
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +7 -7
- data/src/core/lib/slice/slice.h +341 -0
- data/src/core/lib/slice/slice_buffer.cc +4 -0
- data/src/core/lib/slice/slice_intern.cc +1 -1
- data/src/core/lib/slice/slice_refcount.h +5 -1
- data/src/core/lib/slice/slice_refcount_base.h +19 -11
- data/src/core/lib/slice/static_slice.cc +331 -483
- data/src/core/lib/slice/static_slice.h +101 -132
- data/src/core/lib/surface/builtins.cc +1 -1
- data/src/core/lib/surface/call.cc +85 -59
- data/src/core/lib/surface/channel.cc +4 -29
- data/src/core/lib/surface/channel.h +2 -12
- data/src/core/lib/surface/completion_queue.cc +2 -2
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +24 -17
- data/src/core/lib/surface/server.cc +22 -22
- data/src/core/lib/surface/server.h +8 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -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 +4 -0
- data/src/core/lib/transport/metadata.h +4 -4
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +174 -99
- data/src/core/lib/transport/parsed_metadata.cc +35 -0
- data/src/core/lib/transport/parsed_metadata.h +180 -61
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +529 -614
- data/src/core/lib/transport/static_metadata.h +0 -18
- data/src/core/lib/transport/transport.cc +4 -26
- data/src/core/lib/transport/transport.h +0 -1
- data/src/core/lib/transport/transport_op_string.cc +1 -1
- data/src/core/lib/uri/uri_parser.cc +19 -19
- data/src/core/lib/uri/uri_parser.h +2 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/local_transport_security.cc +15 -15
- data/src/core/tsi/ssl_transport_security.cc +30 -1
- data/src/core/tsi/ssl_transport_security.h +1 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +3 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +6 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/upb/upb/decode.c +309 -178
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/decode_internal.h +1 -0
- data/third_party/upb/upb/def.c +330 -85
- data/third_party/upb/upb/def.h +45 -14
- data/third_party/upb/upb/def.hpp +17 -4
- data/third_party/upb/upb/encode.c +100 -40
- data/third_party/upb/upb/msg.c +22 -9
- data/third_party/upb/upb/msg_internal.h +90 -8
- data/third_party/upb/upb/reflection.c +98 -58
- data/third_party/upb/upb/reflection.h +6 -2
- data/third_party/upb/upb/text_encode.c +3 -3
- data/third_party/upb/upb/upb.c +8 -0
- metadata +116 -56
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/gprpp/match.h +0 -73
- data/src/core/lib/gprpp/overload.h +0 -59
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
data/third_party/upb/upb/def.c
CHANGED
@@ -74,6 +74,12 @@ struct upb_fielddef {
|
|
74
74
|
upb_label_t label_;
|
75
75
|
};
|
76
76
|
|
77
|
+
struct upb_extrange {
|
78
|
+
const google_protobuf_ExtensionRangeOptions *opts;
|
79
|
+
int32_t start;
|
80
|
+
int32_t end;
|
81
|
+
};
|
82
|
+
|
77
83
|
struct upb_msgdef {
|
78
84
|
const upb_msglayout *layout;
|
79
85
|
const upb_filedef *file;
|
@@ -83,17 +89,19 @@ struct upb_msgdef {
|
|
83
89
|
upb_inttable itof;
|
84
90
|
upb_strtable ntof;
|
85
91
|
|
92
|
+
const upb_extrange *ext_ranges;
|
86
93
|
const upb_fielddef *fields;
|
87
94
|
const upb_oneofdef *oneofs;
|
88
95
|
int field_count;
|
89
96
|
int oneof_count;
|
90
97
|
int real_oneof_count;
|
98
|
+
int ext_range_count;
|
91
99
|
|
92
100
|
/* Is this a map-entry message? */
|
93
101
|
bool map_entry;
|
102
|
+
bool is_message_set;
|
94
103
|
upb_wellknowntype_t well_known_type;
|
95
|
-
|
96
|
-
/* TODO(haberman): proper extension ranges (there can be multiple). */
|
104
|
+
const upb_fielddef *message_set_ext;
|
97
105
|
};
|
98
106
|
|
99
107
|
struct upb_enumdef {
|
@@ -101,9 +109,17 @@ struct upb_enumdef {
|
|
101
109
|
const char *full_name;
|
102
110
|
upb_strtable ntoi;
|
103
111
|
upb_inttable iton;
|
112
|
+
const upb_enumvaldef *values;
|
113
|
+
int value_count;
|
104
114
|
int32_t defaultval;
|
105
115
|
};
|
106
116
|
|
117
|
+
struct upb_enumvaldef {
|
118
|
+
const upb_enumdef *enum_;
|
119
|
+
const char *full_name;
|
120
|
+
int32_t number;
|
121
|
+
};
|
122
|
+
|
107
123
|
struct upb_oneofdef {
|
108
124
|
const upb_msgdef *parent;
|
109
125
|
const char *full_name;
|
@@ -124,6 +140,7 @@ struct upb_filedef {
|
|
124
140
|
const upb_msgdef *msgs;
|
125
141
|
const upb_enumdef *enums;
|
126
142
|
const upb_fielddef *exts;
|
143
|
+
const upb_msglayout_ext **ext_layouts;
|
127
144
|
const upb_symtab *symtab;
|
128
145
|
|
129
146
|
int dep_count;
|
@@ -137,29 +154,43 @@ struct upb_symtab {
|
|
137
154
|
upb_arena *arena;
|
138
155
|
upb_strtable syms; /* full_name -> packed def ptr */
|
139
156
|
upb_strtable files; /* file_name -> upb_filedef* */
|
157
|
+
upb_inttable exts; /* upb_msglayout_ext* -> upb_fielddef* */
|
158
|
+
upb_extreg *extreg;
|
140
159
|
size_t bytes_loaded;
|
141
160
|
};
|
142
161
|
|
143
162
|
/* Inside a symtab we store tagged pointers to specific def types. */
|
144
163
|
typedef enum {
|
164
|
+
UPB_DEFTYPE_MASK = 7,
|
165
|
+
|
145
166
|
UPB_DEFTYPE_FIELD = 0,
|
146
167
|
|
147
168
|
/* Only inside symtab table. */
|
148
169
|
UPB_DEFTYPE_MSG = 1,
|
149
170
|
UPB_DEFTYPE_ENUM = 2,
|
171
|
+
UPB_DEFTYPE_ENUMVAL = 3,
|
150
172
|
|
151
173
|
/* Only inside message table. */
|
152
174
|
UPB_DEFTYPE_ONEOF = 1,
|
153
175
|
UPB_DEFTYPE_FIELD_JSONNAME = 2
|
154
176
|
} upb_deftype_t;
|
155
177
|
|
178
|
+
static upb_deftype_t deftype(upb_value v) {
|
179
|
+
uintptr_t num = (uintptr_t)upb_value_getconstptr(v);
|
180
|
+
return num & UPB_DEFTYPE_MASK;
|
181
|
+
}
|
182
|
+
|
156
183
|
static const void *unpack_def(upb_value v, upb_deftype_t type) {
|
157
184
|
uintptr_t num = (uintptr_t)upb_value_getconstptr(v);
|
158
|
-
return (num &
|
185
|
+
return (num & UPB_DEFTYPE_MASK) == type
|
186
|
+
? (const void *)(num & ~UPB_DEFTYPE_MASK)
|
187
|
+
: NULL;
|
159
188
|
}
|
160
189
|
|
161
190
|
static upb_value pack_def(const void *ptr, upb_deftype_t type) {
|
162
|
-
uintptr_t num = (uintptr_t)ptr
|
191
|
+
uintptr_t num = (uintptr_t)ptr;
|
192
|
+
UPB_ASSERT((num & UPB_DEFTYPE_MASK) == 0);
|
193
|
+
num |= type;
|
163
194
|
return upb_value_constptr((const void*)num);
|
164
195
|
}
|
165
196
|
|
@@ -270,10 +301,31 @@ const upb_filedef *upb_enumdef_file(const upb_enumdef *e) {
|
|
270
301
|
}
|
271
302
|
|
272
303
|
int32_t upb_enumdef_default(const upb_enumdef *e) {
|
273
|
-
UPB_ASSERT(
|
304
|
+
UPB_ASSERT(upb_enumdef_lookupnum(e, e->defaultval));
|
274
305
|
return e->defaultval;
|
275
306
|
}
|
276
307
|
|
308
|
+
const upb_enumvaldef *upb_enumdef_lookupname(const upb_enumdef *def,
|
309
|
+
const char *name, size_t len) {
|
310
|
+
upb_value v;
|
311
|
+
return upb_strtable_lookup2(&def->ntoi, name, len, &v)
|
312
|
+
? upb_value_getconstptr(v)
|
313
|
+
: NULL;
|
314
|
+
}
|
315
|
+
|
316
|
+
const upb_enumvaldef *upb_enumdef_lookupnum(const upb_enumdef *def, int32_t num) {
|
317
|
+
upb_value v;
|
318
|
+
return upb_inttable_lookup(&def->iton, num, &v) ? upb_value_getconstptr(v)
|
319
|
+
: NULL;
|
320
|
+
}
|
321
|
+
|
322
|
+
const upb_enumvaldef *upb_enumdef_value(const upb_enumdef *e, int i) {
|
323
|
+
UPB_ASSERT(0 <= i && i < e->value_count);
|
324
|
+
return &e->values[i];
|
325
|
+
}
|
326
|
+
|
327
|
+
// Deprecated functions.
|
328
|
+
|
277
329
|
int upb_enumdef_numvals(const upb_enumdef *e) {
|
278
330
|
return (int)upb_strtable_count(&e->ntoi);
|
279
331
|
}
|
@@ -286,21 +338,6 @@ void upb_enum_begin(upb_enum_iter *i, const upb_enumdef *e) {
|
|
286
338
|
void upb_enum_next(upb_enum_iter *iter) { upb_strtable_next(iter); }
|
287
339
|
bool upb_enum_done(upb_enum_iter *iter) { return upb_strtable_done(iter); }
|
288
340
|
|
289
|
-
bool upb_enumdef_ntoi(const upb_enumdef *def, const char *name,
|
290
|
-
size_t len, int32_t *num) {
|
291
|
-
upb_value v;
|
292
|
-
if (!upb_strtable_lookup2(&def->ntoi, name, len, &v)) {
|
293
|
-
return false;
|
294
|
-
}
|
295
|
-
if (num) *num = upb_value_getint32(v);
|
296
|
-
return true;
|
297
|
-
}
|
298
|
-
|
299
|
-
const char *upb_enumdef_iton(const upb_enumdef *def, int32_t num) {
|
300
|
-
upb_value v;
|
301
|
-
return upb_inttable_lookup(&def->iton, num, &v) ? upb_value_getcstr(v) : NULL;
|
302
|
-
}
|
303
|
-
|
304
341
|
const char *upb_enum_iter_name(upb_enum_iter *iter) {
|
305
342
|
return upb_strtable_iter_key(iter).data;
|
306
343
|
}
|
@@ -310,6 +347,25 @@ int32_t upb_enum_iter_number(upb_enum_iter *iter) {
|
|
310
347
|
}
|
311
348
|
|
312
349
|
|
350
|
+
/* upb_enumvaldef *************************************************************/
|
351
|
+
|
352
|
+
const upb_enumdef *upb_enumvaldef_enum(const upb_enumvaldef *ev) {
|
353
|
+
return ev->enum_;
|
354
|
+
}
|
355
|
+
|
356
|
+
const char *upb_enumvaldef_fullname(const upb_enumvaldef *ev) {
|
357
|
+
return ev->full_name;
|
358
|
+
}
|
359
|
+
|
360
|
+
const char *upb_enumvaldef_name(const upb_enumvaldef *ev) {
|
361
|
+
return shortdefname(ev->full_name);
|
362
|
+
}
|
363
|
+
|
364
|
+
int32_t upb_enumvaldef_number(const upb_enumvaldef *ev) {
|
365
|
+
return ev->number;
|
366
|
+
}
|
367
|
+
|
368
|
+
|
313
369
|
/* upb_fielddef ***************************************************************/
|
314
370
|
|
315
371
|
const char *upb_fielddef_fullname(const upb_fielddef *f) {
|
@@ -484,9 +540,15 @@ const upb_enumdef *upb_fielddef_enumsubdef(const upb_fielddef *f) {
|
|
484
540
|
}
|
485
541
|
|
486
542
|
const upb_msglayout_field *upb_fielddef_layout(const upb_fielddef *f) {
|
543
|
+
UPB_ASSERT(!upb_fielddef_isextension(f));
|
487
544
|
return &f->msgdef->layout->fields[f->layout_index];
|
488
545
|
}
|
489
546
|
|
547
|
+
const upb_msglayout_ext *_upb_fielddef_extlayout(const upb_fielddef *f) {
|
548
|
+
UPB_ASSERT(upb_fielddef_isextension(f));
|
549
|
+
return f->file->ext_layouts[f->layout_index];
|
550
|
+
}
|
551
|
+
|
490
552
|
bool upb_fielddef_issubmsg(const upb_fielddef *f) {
|
491
553
|
return upb_fielddef_type(f) == UPB_TYPE_MESSAGE;
|
492
554
|
}
|
@@ -617,6 +679,10 @@ int upb_msgdef_numrealoneofs(const upb_msgdef *m) {
|
|
617
679
|
return m->real_oneof_count;
|
618
680
|
}
|
619
681
|
|
682
|
+
int upb_msgdef_extrangecount(const upb_msgdef *m) {
|
683
|
+
return m->ext_range_count;
|
684
|
+
}
|
685
|
+
|
620
686
|
int upb_msgdef_fieldcount(const upb_msgdef *m) {
|
621
687
|
return m->field_count;
|
622
688
|
}
|
@@ -633,6 +699,11 @@ const upb_msglayout *upb_msgdef_layout(const upb_msgdef *m) {
|
|
633
699
|
return m->layout;
|
634
700
|
}
|
635
701
|
|
702
|
+
const upb_extrange *upb_msgdef_extrange(const upb_msgdef *m, int i) {
|
703
|
+
UPB_ASSERT(i >= 0 && i < m->ext_range_count);
|
704
|
+
return &m->ext_ranges[i];
|
705
|
+
}
|
706
|
+
|
636
707
|
const upb_fielddef *upb_msgdef_field(const upb_msgdef *m, int i) {
|
637
708
|
UPB_ASSERT(i >= 0 && i < m->field_count);
|
638
709
|
return &m->fields[i];
|
@@ -850,12 +921,19 @@ upb_symtab *upb_symtab_new(void) {
|
|
850
921
|
s->bytes_loaded = 0;
|
851
922
|
|
852
923
|
if (!upb_strtable_init(&s->syms, 32, s->arena) ||
|
853
|
-
!upb_strtable_init(&s->files, 4, s->arena)
|
854
|
-
|
855
|
-
|
856
|
-
s = NULL;
|
924
|
+
!upb_strtable_init(&s->files, 4, s->arena) ||
|
925
|
+
!upb_inttable_init(&s->exts, s->arena)) {
|
926
|
+
goto err;
|
857
927
|
}
|
928
|
+
|
929
|
+
s->extreg = upb_extreg_new(s->arena);
|
930
|
+
if (!s->extreg) goto err;
|
858
931
|
return s;
|
932
|
+
|
933
|
+
err:
|
934
|
+
upb_arena_free(s->arena);
|
935
|
+
upb_gfree(s);
|
936
|
+
return NULL;
|
859
937
|
}
|
860
938
|
|
861
939
|
const upb_msgdef *upb_symtab_lookupmsg(const upb_symtab *s, const char *sym) {
|
@@ -864,11 +942,16 @@ const upb_msgdef *upb_symtab_lookupmsg(const upb_symtab *s, const char *sym) {
|
|
864
942
|
unpack_def(v, UPB_DEFTYPE_MSG) : NULL;
|
865
943
|
}
|
866
944
|
|
945
|
+
static const void *symtab_lookup2(const upb_symtab *s, const char *sym,
|
946
|
+
size_t size, upb_deftype_t type) {
|
947
|
+
upb_value v;
|
948
|
+
return upb_strtable_lookup2(&s->syms, sym, size, &v) ? unpack_def(v, type)
|
949
|
+
: NULL;
|
950
|
+
}
|
951
|
+
|
867
952
|
const upb_msgdef *upb_symtab_lookupmsg2(const upb_symtab *s, const char *sym,
|
868
953
|
size_t len) {
|
869
|
-
|
870
|
-
return upb_strtable_lookup2(&s->syms, sym, len, &v) ?
|
871
|
-
unpack_def(v, UPB_DEFTYPE_MSG) : NULL;
|
954
|
+
return symtab_lookup2(s, sym, len, UPB_DEFTYPE_MSG);
|
872
955
|
}
|
873
956
|
|
874
957
|
const upb_enumdef *upb_symtab_lookupenum(const upb_symtab *s, const char *sym) {
|
@@ -877,6 +960,37 @@ const upb_enumdef *upb_symtab_lookupenum(const upb_symtab *s, const char *sym) {
|
|
877
960
|
unpack_def(v, UPB_DEFTYPE_ENUM) : NULL;
|
878
961
|
}
|
879
962
|
|
963
|
+
const upb_enumvaldef *upb_symtab_lookupenumval(const upb_symtab *s,
|
964
|
+
const char *sym) {
|
965
|
+
upb_value v;
|
966
|
+
return upb_strtable_lookup(&s->syms, sym, &v)
|
967
|
+
? unpack_def(v, UPB_DEFTYPE_ENUMVAL)
|
968
|
+
: NULL;
|
969
|
+
}
|
970
|
+
|
971
|
+
const upb_fielddef *upb_symtab_lookupext2(const upb_symtab *s, const char *name,
|
972
|
+
size_t size) {
|
973
|
+
upb_value v;
|
974
|
+
if (!upb_strtable_lookup2(&s->syms, name, size, &v)) return NULL;
|
975
|
+
|
976
|
+
switch (deftype(v)) {
|
977
|
+
case UPB_DEFTYPE_FIELD:
|
978
|
+
return unpack_def(v, UPB_DEFTYPE_FIELD);
|
979
|
+
case UPB_DEFTYPE_MSG: {
|
980
|
+
const upb_msgdef *m = unpack_def(v, UPB_DEFTYPE_MSG);
|
981
|
+
return m->message_set_ext; /* May be NULL if not in MessageeSet. */
|
982
|
+
}
|
983
|
+
default:
|
984
|
+
break;
|
985
|
+
}
|
986
|
+
|
987
|
+
return NULL;
|
988
|
+
}
|
989
|
+
|
990
|
+
const upb_fielddef *upb_symtab_lookupext(const upb_symtab *s, const char *sym) {
|
991
|
+
return upb_symtab_lookupext2(s, sym, strlen(sym));
|
992
|
+
}
|
993
|
+
|
880
994
|
const upb_filedef *upb_symtab_lookupfile(const upb_symtab *s, const char *name) {
|
881
995
|
upb_value v;
|
882
996
|
return upb_strtable_lookup(&s->files, name, &v) ? upb_value_getconstptr(v)
|
@@ -907,7 +1021,10 @@ typedef struct {
|
|
907
1021
|
upb_symtab *symtab;
|
908
1022
|
upb_filedef *file; /* File we are building. */
|
909
1023
|
upb_arena *arena; /* Allocate defs here. */
|
910
|
-
const
|
1024
|
+
const upb_msglayout_file *layout; /* NULL if we should build layouts. */
|
1025
|
+
int enum_count; /* Count of enums built so far. */
|
1026
|
+
int msg_count; /* Count of messages built so far. */
|
1027
|
+
int ext_count; /* Count of extensions built so far. */
|
911
1028
|
upb_status *status; /* Record errors here. */
|
912
1029
|
jmp_buf err; /* longjmp() on error. */
|
913
1030
|
} symtab_addctx;
|
@@ -1047,16 +1164,43 @@ static void fill_fieldlayout(upb_msglayout_field *field, const upb_fielddef *f)
|
|
1047
1164
|
}
|
1048
1165
|
|
1049
1166
|
if (upb_fielddef_ismap(f)) {
|
1050
|
-
field->mode = _UPB_MODE_MAP;
|
1167
|
+
field->mode = _UPB_MODE_MAP | (_UPB_REP_PTR << _UPB_REP_SHIFT);
|
1051
1168
|
} else if (upb_fielddef_isseq(f)) {
|
1052
|
-
field->mode = _UPB_MODE_ARRAY;
|
1169
|
+
field->mode = _UPB_MODE_ARRAY | (_UPB_REP_PTR << _UPB_REP_SHIFT);
|
1053
1170
|
} else {
|
1054
|
-
|
1171
|
+
/* Maps descriptor type -> elem_size_lg2. */
|
1172
|
+
static const uint8_t sizes[] = {
|
1173
|
+
-1, /* invalid descriptor type */
|
1174
|
+
_UPB_REP_8BYTE, /* DOUBLE */
|
1175
|
+
_UPB_REP_4BYTE, /* FLOAT */
|
1176
|
+
_UPB_REP_8BYTE, /* INT64 */
|
1177
|
+
_UPB_REP_8BYTE, /* UINT64 */
|
1178
|
+
_UPB_REP_4BYTE, /* INT32 */
|
1179
|
+
_UPB_REP_8BYTE, /* FIXED64 */
|
1180
|
+
_UPB_REP_4BYTE, /* FIXED32 */
|
1181
|
+
_UPB_REP_1BYTE, /* BOOL */
|
1182
|
+
_UPB_REP_STRVIEW, /* STRING */
|
1183
|
+
_UPB_REP_PTR, /* GROUP */
|
1184
|
+
_UPB_REP_PTR, /* MESSAGE */
|
1185
|
+
_UPB_REP_STRVIEW, /* BYTES */
|
1186
|
+
_UPB_REP_4BYTE, /* UINT32 */
|
1187
|
+
_UPB_REP_4BYTE, /* ENUM */
|
1188
|
+
_UPB_REP_4BYTE, /* SFIXED32 */
|
1189
|
+
_UPB_REP_8BYTE, /* SFIXED64 */
|
1190
|
+
_UPB_REP_4BYTE, /* SINT32 */
|
1191
|
+
_UPB_REP_8BYTE, /* SINT64 */
|
1192
|
+
};
|
1193
|
+
field->mode =
|
1194
|
+
_UPB_MODE_SCALAR | (sizes[field->descriptortype] << _UPB_REP_SHIFT);
|
1055
1195
|
}
|
1056
1196
|
|
1057
1197
|
if (upb_fielddef_packed(f)) {
|
1058
1198
|
field->mode |= _UPB_MODE_IS_PACKED;
|
1059
1199
|
}
|
1200
|
+
|
1201
|
+
if (upb_fielddef_isextension(f)) {
|
1202
|
+
field->mode |= _UPB_MODE_IS_EXTENSION;
|
1203
|
+
}
|
1060
1204
|
}
|
1061
1205
|
|
1062
1206
|
/* This function is the dynamic equivalent of message_layout.{cc,h} in upbc.
|
@@ -1067,8 +1211,8 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
|
|
1067
1211
|
upb_msg_oneof_iter oit;
|
1068
1212
|
size_t hasbit;
|
1069
1213
|
size_t field_count = upb_msgdef_numfields(m);
|
1070
|
-
size_t
|
1071
|
-
|
1214
|
+
size_t sublayout_count = 0;
|
1215
|
+
upb_msglayout_sub *subs;
|
1072
1216
|
upb_msglayout_field *fields;
|
1073
1217
|
|
1074
1218
|
memset(l, 0, sizeof(*l) + sizeof(_upb_fasttable_entry));
|
@@ -1076,18 +1220,28 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
|
|
1076
1220
|
/* Count sub-messages. */
|
1077
1221
|
for (size_t i = 0; i < field_count; i++) {
|
1078
1222
|
if (upb_fielddef_issubmsg(&m->fields[i])) {
|
1079
|
-
|
1223
|
+
sublayout_count++;
|
1080
1224
|
}
|
1081
1225
|
}
|
1082
1226
|
|
1083
1227
|
fields = symtab_alloc(ctx, field_count * sizeof(*fields));
|
1084
|
-
|
1228
|
+
subs = symtab_alloc(ctx, sublayout_count * sizeof(*subs));
|
1085
1229
|
|
1086
1230
|
l->field_count = upb_msgdef_numfields(m);
|
1087
1231
|
l->fields = fields;
|
1088
|
-
l->
|
1232
|
+
l->subs = subs;
|
1089
1233
|
l->table_mask = 0;
|
1090
1234
|
|
1235
|
+
if (upb_msgdef_extrangecount(m) > 0) {
|
1236
|
+
if (m->is_message_set) {
|
1237
|
+
l->ext = _UPB_MSGEXT_MSGSET;
|
1238
|
+
} else {
|
1239
|
+
l->ext = _UPB_MSGEXT_EXTENDABLE;
|
1240
|
+
}
|
1241
|
+
} else {
|
1242
|
+
l->ext = _UPB_MSGEXT_NONE;
|
1243
|
+
}
|
1244
|
+
|
1091
1245
|
/* TODO(haberman): initialize fast tables so that reflection-based parsing
|
1092
1246
|
* can get the same speeds as linked-in types. */
|
1093
1247
|
l->fasttable[0].field_parser = &fastdecode_generic;
|
@@ -1111,7 +1265,7 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
|
|
1111
1265
|
fields[1].submsg_index = 0;
|
1112
1266
|
|
1113
1267
|
if (upb_fielddef_type(val) == UPB_TYPE_MESSAGE) {
|
1114
|
-
|
1268
|
+
subs[0].submsg = upb_fielddef_msgsubdef(val)->layout;
|
1115
1269
|
}
|
1116
1270
|
|
1117
1271
|
l->field_count = 2;
|
@@ -1130,7 +1284,7 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
|
|
1130
1284
|
*/
|
1131
1285
|
|
1132
1286
|
/* Allocate hasbits and set basic field attributes. */
|
1133
|
-
|
1287
|
+
sublayout_count = 0;
|
1134
1288
|
for (upb_msg_field_begin(&it, m), hasbit = 0;
|
1135
1289
|
!upb_msg_field_done(&it);
|
1136
1290
|
upb_msg_field_next(&it)) {
|
@@ -1141,8 +1295,8 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
|
|
1141
1295
|
|
1142
1296
|
if (upb_fielddef_issubmsg(f)) {
|
1143
1297
|
const upb_msgdef *subm = upb_fielddef_msgsubdef(f);
|
1144
|
-
field->submsg_index =
|
1145
|
-
|
1298
|
+
field->submsg_index = sublayout_count++;
|
1299
|
+
subs[field->submsg_index].submsg = subm->layout;
|
1146
1300
|
}
|
1147
1301
|
|
1148
1302
|
if (upb_fielddef_haspresence(f) && !upb_fielddef_realcontainingoneof(f)) {
|
@@ -1217,7 +1371,9 @@ static void make_layout(symtab_addctx *ctx, const upb_msgdef *m) {
|
|
1217
1371
|
}
|
1218
1372
|
|
1219
1373
|
static char *strviewdup(symtab_addctx *ctx, upb_strview view) {
|
1220
|
-
|
1374
|
+
char *ret = upb_strdup2(view.data, view.size, ctx->arena);
|
1375
|
+
CHK_OOM(ret);
|
1376
|
+
return ret;
|
1221
1377
|
}
|
1222
1378
|
|
1223
1379
|
static bool streql2(const char *a, size_t n, const char *b) {
|
@@ -1325,6 +1481,8 @@ static char* makejsonname(symtab_addctx *ctx, const char* name) {
|
|
1325
1481
|
}
|
1326
1482
|
|
1327
1483
|
static void symtab_add(symtab_addctx *ctx, const char *name, upb_value v) {
|
1484
|
+
// TODO: table should support an operation "tryinsert" to avoid the double
|
1485
|
+
// lookup.
|
1328
1486
|
if (upb_strtable_lookup(&ctx->symtab->syms, name, NULL)) {
|
1329
1487
|
symtab_errf(ctx, "duplicate symbol '%s'", name);
|
1330
1488
|
}
|
@@ -1433,11 +1591,11 @@ static void parse_default(symtab_addctx *ctx, const char *str, size_t len,
|
|
1433
1591
|
}
|
1434
1592
|
case UPB_TYPE_ENUM: {
|
1435
1593
|
const upb_enumdef *e = f->sub.enumdef;
|
1436
|
-
|
1437
|
-
if (!
|
1594
|
+
const upb_enumvaldef *ev = upb_enumdef_lookupname(e, str, len);
|
1595
|
+
if (!ev) {
|
1438
1596
|
goto invalid;
|
1439
1597
|
}
|
1440
|
-
f->defaultval.sint =
|
1598
|
+
f->defaultval.sint = ev->number;
|
1441
1599
|
break;
|
1442
1600
|
}
|
1443
1601
|
case UPB_TYPE_INT64: {
|
@@ -1604,12 +1762,11 @@ static void create_fielddef(
|
|
1604
1762
|
upb_strtable_insert(&m->ntof, json_name, json_size, json_v, ctx->arena);
|
1605
1763
|
}
|
1606
1764
|
|
1607
|
-
if (ctx->
|
1765
|
+
if (ctx->layout) {
|
1608
1766
|
const upb_msglayout_field *fields = m->layout->fields;
|
1609
1767
|
int count = m->layout->field_count;
|
1610
1768
|
bool found = false;
|
1611
|
-
int i;
|
1612
|
-
for (i = 0; i < count; i++) {
|
1769
|
+
for (int i = 0; i < count; i++) {
|
1613
1770
|
if (fields[i].number == field_number) {
|
1614
1771
|
f->layout_index = i;
|
1615
1772
|
found = true;
|
@@ -1620,9 +1777,15 @@ static void create_fielddef(
|
|
1620
1777
|
}
|
1621
1778
|
} else {
|
1622
1779
|
/* extension field. */
|
1623
|
-
|
1780
|
+
uint16_t layout_index = ctx->ext_count++;
|
1781
|
+
f = (upb_fielddef*)&ctx->file->exts[layout_index];
|
1782
|
+
f->layout_index = layout_index;
|
1624
1783
|
f->is_extension_ = true;
|
1625
1784
|
symtab_add(ctx, full_name, pack_def(f, UPB_DEFTYPE_FIELD));
|
1785
|
+
if (ctx->layout) {
|
1786
|
+
UPB_ASSERT(ctx->file->ext_layouts[f->layout_index]->field.number ==
|
1787
|
+
field_number);
|
1788
|
+
}
|
1626
1789
|
}
|
1627
1790
|
|
1628
1791
|
f->full_name = full_name;
|
@@ -1711,7 +1874,7 @@ static void create_enumdef(
|
|
1711
1874
|
name = google_protobuf_EnumDescriptorProto_name(enum_proto);
|
1712
1875
|
check_ident(ctx, name, false);
|
1713
1876
|
|
1714
|
-
e = (upb_enumdef*)&ctx->file->enums[ctx->
|
1877
|
+
e = (upb_enumdef*)&ctx->file->enums[ctx->enum_count++];
|
1715
1878
|
e->full_name = makefullname(ctx, prefix, name);
|
1716
1879
|
symtab_add(ctx, e->full_name, pack_def(e, UPB_DEFTYPE_ENUM));
|
1717
1880
|
|
@@ -1721,6 +1884,8 @@ static void create_enumdef(
|
|
1721
1884
|
|
1722
1885
|
e->file = ctx->file;
|
1723
1886
|
e->defaultval = 0;
|
1887
|
+
e->value_count = n;
|
1888
|
+
e->values = symtab_alloc(ctx, sizeof(*e->values) * n);
|
1724
1889
|
|
1725
1890
|
if (n == 0) {
|
1726
1891
|
symtab_errf(ctx, "enums must contain at least one value (%s)",
|
@@ -1728,27 +1893,26 @@ static void create_enumdef(
|
|
1728
1893
|
}
|
1729
1894
|
|
1730
1895
|
for (i = 0; i < n; i++) {
|
1731
|
-
const google_protobuf_EnumValueDescriptorProto *
|
1732
|
-
|
1733
|
-
|
1734
|
-
|
1735
|
-
|
1896
|
+
const google_protobuf_EnumValueDescriptorProto *val_proto = values[i];
|
1897
|
+
upb_enumvaldef *val = (upb_enumvaldef*)&e->values[i];
|
1898
|
+
upb_strview name = google_protobuf_EnumValueDescriptorProto_name(val_proto);
|
1899
|
+
upb_value v = upb_value_constptr(val);
|
1900
|
+
|
1901
|
+
val->enum_ = e;
|
1902
|
+
val->full_name = makefullname(ctx, prefix, name);
|
1903
|
+
val->number = google_protobuf_EnumValueDescriptorProto_number(val_proto);
|
1904
|
+
symtab_add(ctx, val->full_name, pack_def(val, UPB_DEFTYPE_ENUMVAL));
|
1736
1905
|
|
1737
|
-
if (i == 0 && e->file->syntax == UPB_SYNTAX_PROTO3 &&
|
1906
|
+
if (i == 0 && e->file->syntax == UPB_SYNTAX_PROTO3 && val->number != 0) {
|
1738
1907
|
symtab_errf(ctx, "for proto3, the first enum value must be zero (%s)",
|
1739
1908
|
e->full_name);
|
1740
1909
|
}
|
1741
1910
|
|
1742
|
-
|
1743
|
-
symtab_errf(ctx, "duplicate enum label '%s'", name2);
|
1744
|
-
}
|
1911
|
+
CHK_OOM(upb_strtable_insert(&e->ntoi, name.data, name.size, v, ctx->arena));
|
1745
1912
|
|
1746
|
-
|
1747
|
-
|
1748
|
-
|
1749
|
-
if (!upb_inttable_lookup(&e->iton, num, NULL)) {
|
1750
|
-
upb_value v = upb_value_cstr(name2);
|
1751
|
-
CHK_OOM(upb_inttable_insert(&e->iton, num, v, ctx->arena));
|
1913
|
+
// Multiple enumerators can have the same number, first one wins.
|
1914
|
+
if (!upb_inttable_lookup(&e->iton, val->number, NULL)) {
|
1915
|
+
CHK_OOM(upb_inttable_insert(&e->iton, val->number, v, ctx->arena));
|
1752
1916
|
}
|
1753
1917
|
}
|
1754
1918
|
|
@@ -1763,34 +1927,44 @@ static void create_msgdef(symtab_addctx *ctx, const char *prefix,
|
|
1763
1927
|
const google_protobuf_FieldDescriptorProto *const *fields;
|
1764
1928
|
const google_protobuf_EnumDescriptorProto *const *enums;
|
1765
1929
|
const google_protobuf_DescriptorProto *const *msgs;
|
1766
|
-
|
1930
|
+
const google_protobuf_DescriptorProto_ExtensionRange *const *ext_ranges;
|
1931
|
+
size_t i, n_oneof, n_field, n_ext_range, n;
|
1767
1932
|
upb_strview name;
|
1768
1933
|
|
1769
1934
|
name = google_protobuf_DescriptorProto_name(msg_proto);
|
1770
1935
|
check_ident(ctx, name, false);
|
1771
1936
|
|
1772
|
-
|
1937
|
+
int msg_index = ctx->msg_count;
|
1938
|
+
m = (upb_msgdef*)&ctx->file->msgs[msg_index];
|
1773
1939
|
m->full_name = makefullname(ctx, prefix, name);
|
1940
|
+
ctx->msg_count++;
|
1774
1941
|
symtab_add(ctx, m->full_name, pack_def(m, UPB_DEFTYPE_MSG));
|
1775
1942
|
|
1776
1943
|
oneofs = google_protobuf_DescriptorProto_oneof_decl(msg_proto, &n_oneof);
|
1777
1944
|
fields = google_protobuf_DescriptorProto_field(msg_proto, &n_field);
|
1945
|
+
ext_ranges =
|
1946
|
+
google_protobuf_DescriptorProto_extension_range(msg_proto, &n_ext_range);
|
1778
1947
|
|
1779
1948
|
CHK_OOM(upb_inttable_init(&m->itof, ctx->arena));
|
1780
1949
|
CHK_OOM(upb_strtable_init(&m->ntof, n_oneof + n_field, ctx->arena));
|
1781
1950
|
|
1782
1951
|
m->file = ctx->file;
|
1783
1952
|
m->map_entry = false;
|
1953
|
+
m->is_message_set = false;
|
1954
|
+
m->message_set_ext = NULL;
|
1784
1955
|
|
1785
1956
|
options = google_protobuf_DescriptorProto_options(msg_proto);
|
1786
1957
|
|
1787
1958
|
if (options) {
|
1788
1959
|
m->map_entry = google_protobuf_MessageOptions_map_entry(options);
|
1960
|
+
m->is_message_set =
|
1961
|
+
google_protobuf_MessageOptions_message_set_wire_format(options);
|
1789
1962
|
}
|
1790
1963
|
|
1791
|
-
if (ctx->
|
1792
|
-
|
1793
|
-
ctx->
|
1964
|
+
if (ctx->layout) {
|
1965
|
+
/* create_fielddef() below depends on this being set. */
|
1966
|
+
m->layout = ctx->layout->msgs[msg_index];
|
1967
|
+
UPB_ASSERT(n_field == m->layout->field_count);
|
1794
1968
|
} else {
|
1795
1969
|
/* Allocate now (to allow cross-linking), populate later. */
|
1796
1970
|
m->layout = symtab_alloc(
|
@@ -1809,6 +1983,15 @@ static void create_msgdef(symtab_addctx *ctx, const char *prefix,
|
|
1809
1983
|
create_fielddef(ctx, m->full_name, m, fields[i]);
|
1810
1984
|
}
|
1811
1985
|
|
1986
|
+
m->ext_range_count = n_ext_range;
|
1987
|
+
m->ext_ranges = symtab_alloc(ctx, sizeof(*m->ext_ranges) * n_ext_range);
|
1988
|
+
for (i = 0; i < n_ext_range; i++) {
|
1989
|
+
const google_protobuf_DescriptorProto_ExtensionRange *r = ext_ranges[i];
|
1990
|
+
upb_extrange *r_def = (upb_extrange*)&m->ext_ranges[i];
|
1991
|
+
r_def->start = google_protobuf_DescriptorProto_ExtensionRange_start(r);
|
1992
|
+
r_def->end = google_protobuf_DescriptorProto_ExtensionRange_end(r);
|
1993
|
+
}
|
1994
|
+
|
1812
1995
|
finalize_oneofs(ctx, m);
|
1813
1996
|
assign_msg_wellknowntype(m);
|
1814
1997
|
upb_inttable_compact(&m->itof, ctx->arena);
|
@@ -1820,6 +2003,11 @@ static void create_msgdef(symtab_addctx *ctx, const char *prefix,
|
|
1820
2003
|
create_enumdef(ctx, m->full_name, enums[i]);
|
1821
2004
|
}
|
1822
2005
|
|
2006
|
+
fields = google_protobuf_DescriptorProto_extension(msg_proto, &n);
|
2007
|
+
for (i = 0; i < n; i++) {
|
2008
|
+
create_fielddef(ctx, m->full_name, NULL, fields[i]);
|
2009
|
+
}
|
2010
|
+
|
1823
2011
|
msgs = google_protobuf_DescriptorProto_nested_type(msg_proto, &n);
|
1824
2012
|
for (i = 0; i < n; i++) {
|
1825
2013
|
create_msgdef(ctx, m->full_name, msgs[i]);
|
@@ -1876,6 +2064,22 @@ static void resolve_fielddef(symtab_addctx *ctx, const char *prefix,
|
|
1876
2064
|
|
1877
2065
|
name = google_protobuf_FieldDescriptorProto_extendee(field_proto);
|
1878
2066
|
f->msgdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_MSG);
|
2067
|
+
|
2068
|
+
const upb_msglayout_ext *ext = ctx->file->ext_layouts[f->layout_index];
|
2069
|
+
if (ctx->layout) {
|
2070
|
+
UPB_ASSERT(upb_fielddef_number(f) == ext->field.number);
|
2071
|
+
} else {
|
2072
|
+
upb_msglayout_ext *mut_ext = (upb_msglayout_ext*)ext;
|
2073
|
+
fill_fieldlayout(&mut_ext->field, f);
|
2074
|
+
mut_ext->field.presence = 0;
|
2075
|
+
mut_ext->field.offset = 0;
|
2076
|
+
mut_ext->field.submsg_index = 0;
|
2077
|
+
mut_ext->extendee = f->msgdef->layout;
|
2078
|
+
mut_ext->sub.submsg = f->sub.msgdef->layout;
|
2079
|
+
}
|
2080
|
+
|
2081
|
+
CHK_OOM(upb_inttable_insert(&ctx->symtab->exts, (uintptr_t)ext,
|
2082
|
+
upb_value_constptr(f), ctx->arena));
|
1879
2083
|
}
|
1880
2084
|
|
1881
2085
|
if ((upb_fielddef_issubmsg(f) || f->type_ == UPB_DESCRIPTOR_TYPE_ENUM) &&
|
@@ -1887,6 +2091,13 @@ static void resolve_fielddef(symtab_addctx *ctx, const char *prefix,
|
|
1887
2091
|
|
1888
2092
|
if (upb_fielddef_issubmsg(f)) {
|
1889
2093
|
f->sub.msgdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_MSG);
|
2094
|
+
if (f->is_extension_ && f->msgdef->is_message_set &&
|
2095
|
+
f->file == f->msgdef->file) {
|
2096
|
+
// TODO: When defs are restructured to follow message nesting, we can make
|
2097
|
+
// this check more robust. The actual rules for what make something
|
2098
|
+
// qualify as a MessageSet item are more strict.
|
2099
|
+
((upb_msgdef*)f->sub.msgdef)->message_set_ext = f;
|
2100
|
+
}
|
1890
2101
|
} else if (f->type_ == UPB_DESCRIPTOR_TYPE_ENUM) {
|
1891
2102
|
f->sub.enumdef = symtab_resolve(ctx, f, prefix, name, UPB_DEFTYPE_ENUM);
|
1892
2103
|
}
|
@@ -1934,10 +2145,26 @@ static void build_filedef(
|
|
1934
2145
|
file->enums = symtab_alloc(ctx, sizeof(*file->enums) * file->enum_count);
|
1935
2146
|
file->exts = symtab_alloc(ctx, sizeof(*file->exts) * file->ext_count);
|
1936
2147
|
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
2148
|
+
ctx->msg_count = 0;
|
2149
|
+
ctx->enum_count = 0;
|
2150
|
+
ctx->ext_count = 0;
|
2151
|
+
|
2152
|
+
if (ctx->layout) {
|
2153
|
+
/* We are using the ext layouts that were passed in. */
|
2154
|
+
file->ext_layouts = ctx->layout->exts;
|
2155
|
+
if (ctx->layout->ext_count != file->ext_count) {
|
2156
|
+
symtab_errf(ctx, "Extension count did not match layout (%d vs %d)",
|
2157
|
+
ctx->layout->ext_count, file->ext_count);
|
2158
|
+
}
|
2159
|
+
} else {
|
2160
|
+
/* We are building ext layouts from scratch. */
|
2161
|
+
file->ext_layouts =
|
2162
|
+
symtab_alloc(ctx, sizeof(*file->ext_layouts) * file->ext_count);
|
2163
|
+
upb_msglayout_ext *ext = symtab_alloc(ctx, sizeof(*ext) * file->ext_count);
|
2164
|
+
for (int i = 0; i < file->ext_count; i++) {
|
2165
|
+
file->ext_layouts[i] = &ext[i];
|
2166
|
+
}
|
2167
|
+
}
|
1941
2168
|
|
1942
2169
|
if (!google_protobuf_FileDescriptorProto_has_name(file_proto)) {
|
1943
2170
|
symtab_errf(ctx, "File has no name");
|
@@ -2018,11 +2245,12 @@ static void build_filedef(
|
|
2018
2245
|
|
2019
2246
|
/* Create extensions. */
|
2020
2247
|
exts = google_protobuf_FileDescriptorProto_extension(file_proto, &n);
|
2021
|
-
file->exts = symtab_alloc(ctx, sizeof(*file->exts) * n);
|
2022
2248
|
for (i = 0; i < n; i++) {
|
2023
2249
|
create_fielddef(ctx, file->package, NULL, exts[i]);
|
2024
2250
|
}
|
2025
2251
|
|
2252
|
+
UPB_ASSERT(ctx->ext_count == file->ext_count);
|
2253
|
+
|
2026
2254
|
/* Now that all names are in the table, build layouts and resolve refs. */
|
2027
2255
|
for (i = 0; i < (size_t)file->ext_count; i++) {
|
2028
2256
|
resolve_fielddef(ctx, file->package, (upb_fielddef*)&file->exts[i]);
|
@@ -2036,25 +2264,28 @@ static void build_filedef(
|
|
2036
2264
|
}
|
2037
2265
|
}
|
2038
2266
|
|
2039
|
-
if (!ctx->
|
2267
|
+
if (!ctx->layout) {
|
2040
2268
|
for (i = 0; i < (size_t)file->msg_count; i++) {
|
2041
2269
|
const upb_msgdef *m = &file->msgs[i];
|
2042
2270
|
make_layout(ctx, m);
|
2043
2271
|
}
|
2044
2272
|
}
|
2273
|
+
|
2274
|
+
CHK_OOM(
|
2275
|
+
_upb_extreg_add(ctx->symtab->extreg, file->ext_layouts, file->ext_count));
|
2045
2276
|
}
|
2046
2277
|
|
2047
|
-
static void remove_filedef(upb_symtab *s, upb_filedef *file) {
|
2278
|
+
static void remove_filedef(symtab_addctx *ctx, upb_symtab *s, upb_filedef *file) {
|
2048
2279
|
int i;
|
2049
|
-
for (i = 0; i <
|
2280
|
+
for (i = 0; i < ctx->msg_count; i++) {
|
2050
2281
|
const char *name = file->msgs[i].full_name;
|
2051
2282
|
upb_strtable_remove(&s->syms, name, strlen(name), NULL);
|
2052
2283
|
}
|
2053
|
-
for (i = 0; i <
|
2284
|
+
for (i = 0; i < ctx->enum_count; i++) {
|
2054
2285
|
const char *name = file->enums[i].full_name;
|
2055
2286
|
upb_strtable_remove(&s->syms, name, strlen(name), NULL);
|
2056
2287
|
}
|
2057
|
-
for (i = 0; i <
|
2288
|
+
for (i = 0; i < ctx->ext_count; i++) {
|
2058
2289
|
const char *name = file->exts[i].full_name;
|
2059
2290
|
upb_strtable_remove(&s->syms, name, strlen(name), NULL);
|
2060
2291
|
}
|
@@ -2062,7 +2293,7 @@ static void remove_filedef(upb_symtab *s, upb_filedef *file) {
|
|
2062
2293
|
|
2063
2294
|
static const upb_filedef *_upb_symtab_addfile(
|
2064
2295
|
upb_symtab *s, const google_protobuf_FileDescriptorProto *file_proto,
|
2065
|
-
const
|
2296
|
+
const upb_msglayout_file *layout, upb_status *status) {
|
2066
2297
|
symtab_addctx ctx;
|
2067
2298
|
upb_strview name = google_protobuf_FileDescriptorProto_name(file_proto);
|
2068
2299
|
|
@@ -2073,7 +2304,7 @@ static const upb_filedef *_upb_symtab_addfile(
|
|
2073
2304
|
}
|
2074
2305
|
|
2075
2306
|
ctx.symtab = s;
|
2076
|
-
ctx.
|
2307
|
+
ctx.layout = layout;
|
2077
2308
|
ctx.status = status;
|
2078
2309
|
ctx.file = NULL;
|
2079
2310
|
ctx.arena = upb_arena_new();
|
@@ -2086,7 +2317,7 @@ static const upb_filedef *_upb_symtab_addfile(
|
|
2086
2317
|
if (UPB_UNLIKELY(UPB_SETJMP(ctx.err))) {
|
2087
2318
|
UPB_ASSERT(!upb_ok(status));
|
2088
2319
|
if (ctx.file) {
|
2089
|
-
remove_filedef(s, ctx.file);
|
2320
|
+
remove_filedef(&ctx, s, ctx.file);
|
2090
2321
|
ctx.file = NULL;
|
2091
2322
|
}
|
2092
2323
|
} else {
|
@@ -2145,14 +2376,16 @@ bool _upb_symtab_loaddefinit(upb_symtab *s, const upb_def_init *init) {
|
|
2145
2376
|
goto err;
|
2146
2377
|
}
|
2147
2378
|
|
2148
|
-
if (!_upb_symtab_addfile(s, file, init->
|
2379
|
+
if (!_upb_symtab_addfile(s, file, init->layout, &status)) goto err;
|
2149
2380
|
|
2150
2381
|
upb_arena_free(arena);
|
2151
2382
|
return true;
|
2152
2383
|
|
2153
2384
|
err:
|
2154
|
-
fprintf(stderr,
|
2155
|
-
|
2385
|
+
fprintf(stderr,
|
2386
|
+
"Error loading compiled-in descriptor for file '%s' (this should "
|
2387
|
+
"never happen): %s\n",
|
2388
|
+
init->filename, upb_status_errmsg(&status));
|
2156
2389
|
upb_arena_free(arena);
|
2157
2390
|
return false;
|
2158
2391
|
}
|
@@ -2165,4 +2398,16 @@ upb_arena *_upb_symtab_arena(const upb_symtab *s) {
|
|
2165
2398
|
return s->arena;
|
2166
2399
|
}
|
2167
2400
|
|
2401
|
+
const upb_fielddef *_upb_symtab_lookupextfield(const upb_symtab *s,
|
2402
|
+
const upb_msglayout_ext *ext) {
|
2403
|
+
upb_value v;
|
2404
|
+
bool ok = upb_inttable_lookup(&s->exts, (uintptr_t)ext, &v);
|
2405
|
+
UPB_ASSERT(ok);
|
2406
|
+
return upb_value_getconstptr(v);
|
2407
|
+
}
|
2408
|
+
|
2409
|
+
const upb_extreg *upb_symtab_extreg(const upb_symtab *s) {
|
2410
|
+
return s->extreg;
|
2411
|
+
}
|
2412
|
+
|
2168
2413
|
#undef CHK_OOM
|