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
@@ -26,21 +26,13 @@
|
|
26
26
|
#include "absl/base/macros.h"
|
27
27
|
#include "absl/container/inlined_vector.h"
|
28
28
|
#include "absl/strings/internal/cord_internal.h"
|
29
|
+
#include "absl/strings/internal/cord_rep_consume.h"
|
29
30
|
#include "absl/strings/internal/cord_rep_flat.h"
|
30
31
|
|
31
32
|
namespace absl {
|
32
33
|
ABSL_NAMESPACE_BEGIN
|
33
34
|
namespace cord_internal {
|
34
35
|
|
35
|
-
// See https://bugs.llvm.org/show_bug.cgi?id=48477
|
36
|
-
#ifdef __clang__
|
37
|
-
#pragma clang diagnostic push
|
38
|
-
#pragma clang diagnostic ignored "-Wshadow"
|
39
|
-
#if __has_warning("-Wshadow-field")
|
40
|
-
#pragma clang diagnostic ignored "-Wshadow-field"
|
41
|
-
#endif
|
42
|
-
#endif
|
43
|
-
|
44
36
|
namespace {
|
45
37
|
|
46
38
|
using index_type = CordRepRing::index_type;
|
@@ -48,7 +40,7 @@ using index_type = CordRepRing::index_type;
|
|
48
40
|
enum class Direction { kForward, kReversed };
|
49
41
|
|
50
42
|
inline bool IsFlatOrExternal(CordRep* rep) {
|
51
|
-
return rep->
|
43
|
+
return rep->IsFlat() || rep->IsExternal();
|
52
44
|
}
|
53
45
|
|
54
46
|
// Verifies that n + extra <= kMaxCapacity: throws std::length_error otherwise.
|
@@ -58,14 +50,6 @@ inline void CheckCapacity(size_t n, size_t extra) {
|
|
58
50
|
}
|
59
51
|
}
|
60
52
|
|
61
|
-
// Removes a reference from `rep` only.
|
62
|
-
// Asserts that the refcount after decrement is not zero.
|
63
|
-
inline bool UnrefNeverOne(CordRep* rep) {
|
64
|
-
bool result = rep->refcount.Decrement();
|
65
|
-
assert(result);
|
66
|
-
return result;
|
67
|
-
}
|
68
|
-
|
69
53
|
// Creates a flat from the provided string data, allocating up to `extra`
|
70
54
|
// capacity in the returned flat depending on kMaxFlatLength limitations.
|
71
55
|
// Requires `len` to be less or equal to `kMaxFlatLength`
|
@@ -77,40 +61,6 @@ CordRepFlat* CreateFlat(const char* s, size_t n, size_t extra = 0) { // NOLINT
|
|
77
61
|
return rep;
|
78
62
|
}
|
79
63
|
|
80
|
-
// Unrefs the provided `substring`, and returns `substring->child`
|
81
|
-
// Adds or assumes a reference on `substring->child`
|
82
|
-
CordRep* ClipSubstring(CordRepSubstring* substring) {
|
83
|
-
CordRep* child = substring->child;
|
84
|
-
if (substring->refcount.IsOne()) {
|
85
|
-
delete substring;
|
86
|
-
} else {
|
87
|
-
CordRep::Ref(child);
|
88
|
-
if (ABSL_PREDICT_FALSE(!substring->refcount.Decrement())) {
|
89
|
-
UnrefNeverOne(child);
|
90
|
-
delete substring;
|
91
|
-
}
|
92
|
-
}
|
93
|
-
return child;
|
94
|
-
}
|
95
|
-
|
96
|
-
// Unrefs the provided `concat`, and returns `{concat->left, concat->right}`
|
97
|
-
// Adds or assumes a reference on `concat->left` and `concat->right`.
|
98
|
-
std::pair<CordRep*, CordRep*> ClipConcat(CordRepConcat* concat) {
|
99
|
-
auto result = std::make_pair(concat->left, concat->right);
|
100
|
-
if (concat->refcount.IsOne()) {
|
101
|
-
delete concat;
|
102
|
-
} else {
|
103
|
-
CordRep::Ref(result.first);
|
104
|
-
CordRep::Ref(result.second);
|
105
|
-
if (ABSL_PREDICT_FALSE(!concat->refcount.Decrement())) {
|
106
|
-
UnrefNeverOne(result.first);
|
107
|
-
UnrefNeverOne(result.second);
|
108
|
-
delete concat;
|
109
|
-
}
|
110
|
-
}
|
111
|
-
return result;
|
112
|
-
}
|
113
|
-
|
114
64
|
// Unrefs the entries in `[head, tail)`.
|
115
65
|
// Requires all entries to be a FLAT or EXTERNAL node.
|
116
66
|
void UnrefEntries(const CordRepRing* rep, index_type head, index_type tail) {
|
@@ -126,79 +76,6 @@ void UnrefEntries(const CordRepRing* rep, index_type head, index_type tail) {
|
|
126
76
|
});
|
127
77
|
}
|
128
78
|
|
129
|
-
template <typename F>
|
130
|
-
void Consume(Direction direction, CordRep* rep, F&& fn) {
|
131
|
-
size_t offset = 0;
|
132
|
-
size_t length = rep->length;
|
133
|
-
struct Entry {
|
134
|
-
CordRep* rep;
|
135
|
-
size_t offset;
|
136
|
-
size_t length;
|
137
|
-
};
|
138
|
-
absl::InlinedVector<Entry, 40> stack;
|
139
|
-
|
140
|
-
for (;;) {
|
141
|
-
if (rep->tag >= FLAT || rep->tag == EXTERNAL || rep->tag == RING) {
|
142
|
-
fn(rep, offset, length);
|
143
|
-
if (stack.empty()) return;
|
144
|
-
|
145
|
-
rep = stack.back().rep;
|
146
|
-
offset = stack.back().offset;
|
147
|
-
length = stack.back().length;
|
148
|
-
stack.pop_back();
|
149
|
-
} else if (rep->tag == SUBSTRING) {
|
150
|
-
offset += rep->substring()->start;
|
151
|
-
rep = ClipSubstring(rep->substring());
|
152
|
-
} else if (rep->tag == CONCAT) {
|
153
|
-
auto res = ClipConcat(rep->concat());
|
154
|
-
CordRep* left = res.first;
|
155
|
-
CordRep* right = res.second;
|
156
|
-
|
157
|
-
if (left->length <= offset) {
|
158
|
-
// Don't need left node
|
159
|
-
offset -= left->length;
|
160
|
-
CordRep::Unref(left);
|
161
|
-
rep = right;
|
162
|
-
continue;
|
163
|
-
}
|
164
|
-
|
165
|
-
size_t length_left = left->length - offset;
|
166
|
-
if (length_left >= length) {
|
167
|
-
// Don't need right node
|
168
|
-
CordRep::Unref(right);
|
169
|
-
rep = left;
|
170
|
-
continue;
|
171
|
-
}
|
172
|
-
|
173
|
-
// Need both nodes
|
174
|
-
size_t length_right = length - length_left;
|
175
|
-
if (direction == Direction::kReversed) {
|
176
|
-
stack.push_back({left, offset, length_left});
|
177
|
-
rep = right;
|
178
|
-
offset = 0;
|
179
|
-
length = length_right;
|
180
|
-
} else {
|
181
|
-
stack.push_back({right, 0, length_right});
|
182
|
-
rep = left;
|
183
|
-
length = length_left;
|
184
|
-
}
|
185
|
-
} else {
|
186
|
-
assert("Valid tag" == nullptr);
|
187
|
-
return;
|
188
|
-
}
|
189
|
-
}
|
190
|
-
}
|
191
|
-
|
192
|
-
template <typename F>
|
193
|
-
void Consume(CordRep* rep, F&& fn) {
|
194
|
-
return Consume(Direction::kForward, rep, std::forward<F>(fn));
|
195
|
-
}
|
196
|
-
|
197
|
-
template <typename F>
|
198
|
-
void RConsume(CordRep* rep, F&& fn) {
|
199
|
-
return Consume(Direction::kReversed, rep, std::forward<F>(fn));
|
200
|
-
}
|
201
|
-
|
202
79
|
} // namespace
|
203
80
|
|
204
81
|
std::ostream& operator<<(std::ostream& s, const CordRepRing& rep) {
|
@@ -301,7 +178,7 @@ bool CordRepRing::IsValid(std::ostream& output) const {
|
|
301
178
|
if (offset >= child->length || entry_length > child->length - offset) {
|
302
179
|
output << "entry[" << head << "] has offset " << offset
|
303
180
|
<< " and entry length " << entry_length
|
304
|
-
<< " which are outside of the
|
181
|
+
<< " which are outside of the child's length of " << child->length;
|
305
182
|
return false;
|
306
183
|
}
|
307
184
|
|
@@ -352,7 +229,7 @@ void CordRepRing::SetCapacityForTesting(size_t capacity) {
|
|
352
229
|
}
|
353
230
|
|
354
231
|
void CordRepRing::Delete(CordRepRing* rep) {
|
355
|
-
assert(rep != nullptr && rep->
|
232
|
+
assert(rep != nullptr && rep->IsRing());
|
356
233
|
#if defined(__cpp_sized_deallocation)
|
357
234
|
size_t size = AllocSize(rep->capacity_);
|
358
235
|
rep->~CordRepRing();
|
@@ -400,10 +277,11 @@ CordRepRing* CordRepRing::Mutable(CordRepRing* rep, size_t extra) {
|
|
400
277
|
// Get current number of entries, and check for max capacity.
|
401
278
|
size_t entries = rep->entries();
|
402
279
|
|
403
|
-
|
404
|
-
|
405
|
-
return Copy(rep, rep->head(), rep->tail(), min_extra);
|
280
|
+
if (!rep->refcount.IsMutable()) {
|
281
|
+
return Copy(rep, rep->head(), rep->tail(), extra);
|
406
282
|
} else if (entries + extra > rep->capacity()) {
|
283
|
+
const size_t min_grow = rep->capacity() + rep->capacity() / 2;
|
284
|
+
const size_t min_extra = (std::max)(extra, min_grow - entries);
|
407
285
|
CordRepRing* newrep = CordRepRing::New(entries, min_extra);
|
408
286
|
newrep->Fill<false>(rep, rep->head(), rep->tail());
|
409
287
|
CordRepRing::Delete(rep);
|
@@ -414,10 +292,10 @@ CordRepRing* CordRepRing::Mutable(CordRepRing* rep, size_t extra) {
|
|
414
292
|
}
|
415
293
|
|
416
294
|
Span<char> CordRepRing::GetAppendBuffer(size_t size) {
|
417
|
-
assert(refcount.
|
295
|
+
assert(refcount.IsMutable());
|
418
296
|
index_type back = retreat(tail_);
|
419
297
|
CordRep* child = entry_child(back);
|
420
|
-
if (child->tag >= FLAT && child->refcount.
|
298
|
+
if (child->tag >= FLAT && child->refcount.IsMutable()) {
|
421
299
|
size_t capacity = child->flat()->Capacity();
|
422
300
|
pos_type end_pos = entry_end_pos(back);
|
423
301
|
size_t data_offset = entry_data_offset(back);
|
@@ -434,10 +312,10 @@ Span<char> CordRepRing::GetAppendBuffer(size_t size) {
|
|
434
312
|
}
|
435
313
|
|
436
314
|
Span<char> CordRepRing::GetPrependBuffer(size_t size) {
|
437
|
-
assert(refcount.
|
315
|
+
assert(refcount.IsMutable());
|
438
316
|
CordRep* child = entry_child(head_);
|
439
317
|
size_t data_offset = entry_data_offset(head_);
|
440
|
-
if (data_offset && child->refcount.
|
318
|
+
if (data_offset && child->refcount.IsMutable() && child->tag >= FLAT) {
|
441
319
|
size_t n = (std::min)(data_offset, size);
|
442
320
|
this->length += n;
|
443
321
|
begin_pos_ -= n;
|
@@ -449,12 +327,12 @@ Span<char> CordRepRing::GetPrependBuffer(size_t size) {
|
|
449
327
|
}
|
450
328
|
|
451
329
|
CordRepRing* CordRepRing::CreateFromLeaf(CordRep* child, size_t offset,
|
452
|
-
size_t
|
330
|
+
size_t len, size_t extra) {
|
453
331
|
CordRepRing* rep = CordRepRing::New(1, extra);
|
454
332
|
rep->head_ = 0;
|
455
333
|
rep->tail_ = rep->advance(0);
|
456
|
-
rep->length =
|
457
|
-
rep->entry_end_pos()[0] =
|
334
|
+
rep->length = len;
|
335
|
+
rep->entry_end_pos()[0] = len;
|
458
336
|
rep->entry_child()[0] = child;
|
459
337
|
rep->entry_data_offset()[0] = static_cast<offset_type>(offset);
|
460
338
|
return Validate(rep);
|
@@ -462,16 +340,16 @@ CordRepRing* CordRepRing::CreateFromLeaf(CordRep* child, size_t offset,
|
|
462
340
|
|
463
341
|
CordRepRing* CordRepRing::CreateSlow(CordRep* child, size_t extra) {
|
464
342
|
CordRepRing* rep = nullptr;
|
465
|
-
Consume(child, [&](CordRep*
|
466
|
-
if (IsFlatOrExternal(
|
467
|
-
rep = rep ? AppendLeaf(rep,
|
468
|
-
: CreateFromLeaf(
|
343
|
+
Consume(child, [&](CordRep* child_arg, size_t offset, size_t len) {
|
344
|
+
if (IsFlatOrExternal(child_arg)) {
|
345
|
+
rep = rep ? AppendLeaf(rep, child_arg, offset, len)
|
346
|
+
: CreateFromLeaf(child_arg, offset, len, extra);
|
469
347
|
} else if (rep) {
|
470
|
-
rep = AddRing<AddMode::kAppend>(rep,
|
471
|
-
} else if (offset == 0 &&
|
472
|
-
rep = Mutable(
|
348
|
+
rep = AddRing<AddMode::kAppend>(rep, child_arg->ring(), offset, len);
|
349
|
+
} else if (offset == 0 && child_arg->length == len) {
|
350
|
+
rep = Mutable(child_arg->ring(), extra);
|
473
351
|
} else {
|
474
|
-
rep = SubRing(
|
352
|
+
rep = SubRing(child_arg->ring(), offset, len, extra);
|
475
353
|
}
|
476
354
|
});
|
477
355
|
return Validate(rep, nullptr, __LINE__);
|
@@ -482,7 +360,7 @@ CordRepRing* CordRepRing::Create(CordRep* child, size_t extra) {
|
|
482
360
|
if (IsFlatOrExternal(child)) {
|
483
361
|
return CreateFromLeaf(child, 0, length, extra);
|
484
362
|
}
|
485
|
-
if (child->
|
363
|
+
if (child->IsRing()) {
|
486
364
|
return Mutable(child->ring(), extra);
|
487
365
|
}
|
488
366
|
return CreateSlow(child, extra);
|
@@ -490,18 +368,18 @@ CordRepRing* CordRepRing::Create(CordRep* child, size_t extra) {
|
|
490
368
|
|
491
369
|
template <CordRepRing::AddMode mode>
|
492
370
|
CordRepRing* CordRepRing::AddRing(CordRepRing* rep, CordRepRing* ring,
|
493
|
-
size_t offset, size_t
|
371
|
+
size_t offset, size_t len) {
|
494
372
|
assert(offset < ring->length);
|
495
373
|
constexpr bool append = mode == AddMode::kAppend;
|
496
374
|
Position head = ring->Find(offset);
|
497
|
-
Position tail = ring->FindTail(head.index, offset +
|
375
|
+
Position tail = ring->FindTail(head.index, offset + len);
|
498
376
|
const index_type entries = ring->entries(head.index, tail.index);
|
499
377
|
|
500
378
|
rep = Mutable(rep, entries);
|
501
379
|
|
502
380
|
// The delta for making ring[head].end_pos into 'len - offset'
|
503
381
|
const pos_type delta_length =
|
504
|
-
(append ? rep->begin_pos_ + rep->length : rep->begin_pos_ -
|
382
|
+
(append ? rep->begin_pos_ + rep->length : rep->begin_pos_ - len) -
|
505
383
|
ring->entry_begin_pos(head.index) - head.offset;
|
506
384
|
|
507
385
|
// Start filling at `tail`, or `entries` before `head`
|
@@ -542,36 +420,36 @@ CordRepRing* CordRepRing::AddRing(CordRepRing* rep, CordRepRing* ring,
|
|
542
420
|
}
|
543
421
|
|
544
422
|
// Commit changes
|
545
|
-
rep->length +=
|
423
|
+
rep->length += len;
|
546
424
|
if (append) {
|
547
425
|
rep->tail_ = filler.pos();
|
548
426
|
} else {
|
549
427
|
rep->head_ = filler.head();
|
550
|
-
rep->begin_pos_ -=
|
428
|
+
rep->begin_pos_ -= len;
|
551
429
|
}
|
552
430
|
|
553
431
|
return Validate(rep);
|
554
432
|
}
|
555
433
|
|
556
434
|
CordRepRing* CordRepRing::AppendSlow(CordRepRing* rep, CordRep* child) {
|
557
|
-
Consume(child, [&rep](CordRep*
|
558
|
-
if (
|
559
|
-
rep = AddRing<AddMode::kAppend>(rep,
|
435
|
+
Consume(child, [&rep](CordRep* child_arg, size_t offset, size_t len) {
|
436
|
+
if (child_arg->IsRing()) {
|
437
|
+
rep = AddRing<AddMode::kAppend>(rep, child_arg->ring(), offset, len);
|
560
438
|
} else {
|
561
|
-
rep = AppendLeaf(rep,
|
439
|
+
rep = AppendLeaf(rep, child_arg, offset, len);
|
562
440
|
}
|
563
441
|
});
|
564
442
|
return rep;
|
565
443
|
}
|
566
444
|
|
567
445
|
CordRepRing* CordRepRing::AppendLeaf(CordRepRing* rep, CordRep* child,
|
568
|
-
size_t offset, size_t
|
446
|
+
size_t offset, size_t len) {
|
569
447
|
rep = Mutable(rep, 1);
|
570
448
|
index_type back = rep->tail_;
|
571
449
|
const pos_type begin_pos = rep->begin_pos_ + rep->length;
|
572
450
|
rep->tail_ = rep->advance(rep->tail_);
|
573
|
-
rep->length +=
|
574
|
-
rep->entry_end_pos()[back] = begin_pos +
|
451
|
+
rep->length += len;
|
452
|
+
rep->entry_end_pos()[back] = begin_pos + len;
|
575
453
|
rep->entry_child()[back] = child;
|
576
454
|
rep->entry_data_offset()[back] = static_cast<offset_type>(offset);
|
577
455
|
return Validate(rep, nullptr, __LINE__);
|
@@ -582,31 +460,31 @@ CordRepRing* CordRepRing::Append(CordRepRing* rep, CordRep* child) {
|
|
582
460
|
if (IsFlatOrExternal(child)) {
|
583
461
|
return AppendLeaf(rep, child, 0, length);
|
584
462
|
}
|
585
|
-
if (child->
|
463
|
+
if (child->IsRing()) {
|
586
464
|
return AddRing<AddMode::kAppend>(rep, child->ring(), 0, length);
|
587
465
|
}
|
588
466
|
return AppendSlow(rep, child);
|
589
467
|
}
|
590
468
|
|
591
469
|
CordRepRing* CordRepRing::PrependSlow(CordRepRing* rep, CordRep* child) {
|
592
|
-
|
593
|
-
if (IsFlatOrExternal(
|
594
|
-
rep = PrependLeaf(rep,
|
470
|
+
ReverseConsume(child, [&](CordRep* child_arg, size_t offset, size_t len) {
|
471
|
+
if (IsFlatOrExternal(child_arg)) {
|
472
|
+
rep = PrependLeaf(rep, child_arg, offset, len);
|
595
473
|
} else {
|
596
|
-
rep = AddRing<AddMode::kPrepend>(rep,
|
474
|
+
rep = AddRing<AddMode::kPrepend>(rep, child_arg->ring(), offset, len);
|
597
475
|
}
|
598
476
|
});
|
599
477
|
return Validate(rep);
|
600
478
|
}
|
601
479
|
|
602
480
|
CordRepRing* CordRepRing::PrependLeaf(CordRepRing* rep, CordRep* child,
|
603
|
-
size_t offset, size_t
|
481
|
+
size_t offset, size_t len) {
|
604
482
|
rep = Mutable(rep, 1);
|
605
483
|
index_type head = rep->retreat(rep->head_);
|
606
484
|
pos_type end_pos = rep->begin_pos_;
|
607
485
|
rep->head_ = head;
|
608
|
-
rep->length +=
|
609
|
-
rep->begin_pos_ -=
|
486
|
+
rep->length += len;
|
487
|
+
rep->begin_pos_ -= len;
|
610
488
|
rep->entry_end_pos()[head] = end_pos;
|
611
489
|
rep->entry_child()[head] = child;
|
612
490
|
rep->entry_data_offset()[head] = static_cast<offset_type>(offset);
|
@@ -618,7 +496,7 @@ CordRepRing* CordRepRing::Prepend(CordRepRing* rep, CordRep* child) {
|
|
618
496
|
if (IsFlatOrExternal(child)) {
|
619
497
|
return PrependLeaf(rep, child, 0, length);
|
620
498
|
}
|
621
|
-
if (child->
|
499
|
+
if (child->IsRing()) {
|
622
500
|
return AddRing<AddMode::kPrepend>(rep, child->ring(), 0, length);
|
623
501
|
}
|
624
502
|
return PrependSlow(rep, child);
|
@@ -626,7 +504,7 @@ CordRepRing* CordRepRing::Prepend(CordRepRing* rep, CordRep* child) {
|
|
626
504
|
|
627
505
|
CordRepRing* CordRepRing::Append(CordRepRing* rep, absl::string_view data,
|
628
506
|
size_t extra) {
|
629
|
-
if (rep->refcount.
|
507
|
+
if (rep->refcount.IsMutable()) {
|
630
508
|
Span<char> avail = rep->GetAppendBuffer(data.length());
|
631
509
|
if (!avail.empty()) {
|
632
510
|
memcpy(avail.data(), data.data(), avail.length());
|
@@ -660,7 +538,7 @@ CordRepRing* CordRepRing::Append(CordRepRing* rep, absl::string_view data,
|
|
660
538
|
|
661
539
|
CordRepRing* CordRepRing::Prepend(CordRepRing* rep, absl::string_view data,
|
662
540
|
size_t extra) {
|
663
|
-
if (rep->refcount.
|
541
|
+
if (rep->refcount.IsMutable()) {
|
664
542
|
Span<char> avail = rep->GetPrependBuffer(data.length());
|
665
543
|
if (!avail.empty()) {
|
666
544
|
const char* tail = data.data() + data.length() - avail.length();
|
@@ -786,21 +664,21 @@ char CordRepRing::GetCharacter(size_t offset) const {
|
|
786
664
|
}
|
787
665
|
|
788
666
|
CordRepRing* CordRepRing::SubRing(CordRepRing* rep, size_t offset,
|
789
|
-
size_t
|
667
|
+
size_t len, size_t extra) {
|
790
668
|
assert(offset <= rep->length);
|
791
|
-
assert(offset <= rep->length -
|
669
|
+
assert(offset <= rep->length - len);
|
792
670
|
|
793
|
-
if (
|
671
|
+
if (len == 0) {
|
794
672
|
CordRep::Unref(rep);
|
795
673
|
return nullptr;
|
796
674
|
}
|
797
675
|
|
798
676
|
// Find position of first byte
|
799
677
|
Position head = rep->Find(offset);
|
800
|
-
Position tail = rep->FindTail(head.index, offset +
|
678
|
+
Position tail = rep->FindTail(head.index, offset + len);
|
801
679
|
const size_t new_entries = rep->entries(head.index, tail.index);
|
802
680
|
|
803
|
-
if (rep->refcount.
|
681
|
+
if (rep->refcount.IsMutable() && extra <= (rep->capacity() - new_entries)) {
|
804
682
|
// We adopt a privately owned rep and no extra entries needed.
|
805
683
|
if (head.index != rep->head_) UnrefEntries(rep, rep->head_, head.index);
|
806
684
|
if (tail.index != rep->tail_) UnrefEntries(rep, tail.index, rep->tail_);
|
@@ -814,7 +692,7 @@ CordRepRing* CordRepRing::SubRing(CordRepRing* rep, size_t offset,
|
|
814
692
|
}
|
815
693
|
|
816
694
|
// Adjust begin_pos and length
|
817
|
-
rep->length =
|
695
|
+
rep->length = len;
|
818
696
|
rep->begin_pos_ += offset;
|
819
697
|
|
820
698
|
// Adjust head and tail blocks
|
@@ -837,7 +715,7 @@ CordRepRing* CordRepRing::RemovePrefix(CordRepRing* rep, size_t len,
|
|
837
715
|
}
|
838
716
|
|
839
717
|
Position head = rep->Find(len);
|
840
|
-
if (rep->refcount.
|
718
|
+
if (rep->refcount.IsMutable()) {
|
841
719
|
if (head.index != rep->head_) UnrefEntries(rep, rep->head_, head.index);
|
842
720
|
rep->head_ = head.index;
|
843
721
|
} else {
|
@@ -867,7 +745,7 @@ CordRepRing* CordRepRing::RemoveSuffix(CordRepRing* rep, size_t len,
|
|
867
745
|
}
|
868
746
|
|
869
747
|
Position tail = rep->FindTail(rep->length - len);
|
870
|
-
if (rep->refcount.
|
748
|
+
if (rep->refcount.IsMutable()) {
|
871
749
|
// We adopt a privately owned rep, scrub.
|
872
750
|
if (tail.index != rep->tail_) UnrefEntries(rep, tail.index, rep->tail_);
|
873
751
|
rep->tail_ = tail.index;
|
@@ -888,10 +766,6 @@ CordRepRing* CordRepRing::RemoveSuffix(CordRepRing* rep, size_t len,
|
|
888
766
|
return Validate(rep);
|
889
767
|
}
|
890
768
|
|
891
|
-
#ifdef __clang__
|
892
|
-
#pragma clang diagnostic pop
|
893
|
-
#endif
|
894
|
-
|
895
769
|
} // namespace cord_internal
|
896
770
|
ABSL_NAMESPACE_END
|
897
771
|
} // namespace absl
|
@@ -30,15 +30,6 @@ namespace absl {
|
|
30
30
|
ABSL_NAMESPACE_BEGIN
|
31
31
|
namespace cord_internal {
|
32
32
|
|
33
|
-
// See https://bugs.llvm.org/show_bug.cgi?id=48477
|
34
|
-
#ifdef __clang__
|
35
|
-
#pragma clang diagnostic push
|
36
|
-
#pragma clang diagnostic ignored "-Wshadow"
|
37
|
-
#if __has_warning("-Wshadow-field")
|
38
|
-
#pragma clang diagnostic ignored "-Wshadow-field"
|
39
|
-
#endif
|
40
|
-
#endif
|
41
|
-
|
42
33
|
// All operations modifying a ring buffer are implemented as static methods
|
43
34
|
// requiring a CordRepRing instance with a reference adopted by the method.
|
44
35
|
//
|
@@ -210,23 +201,23 @@ class CordRepRing : public CordRep {
|
|
210
201
|
// referencing up to `size` capacity directly before the existing data.
|
211
202
|
Span<char> GetPrependBuffer(size_t size);
|
212
203
|
|
213
|
-
// Returns a cord ring buffer containing `
|
204
|
+
// Returns a cord ring buffer containing `len` bytes of data starting at
|
214
205
|
// `offset`. If the input is not shared, this function will remove all head
|
215
206
|
// and tail child nodes outside of the requested range, and adjust the new
|
216
207
|
// head and tail nodes as required. If the input is shared, this function
|
217
208
|
// returns a new instance sharing some or all of the nodes from the input.
|
218
|
-
static CordRepRing* SubRing(CordRepRing* r, size_t offset, size_t
|
209
|
+
static CordRepRing* SubRing(CordRepRing* r, size_t offset, size_t len,
|
219
210
|
size_t extra = 0);
|
220
211
|
|
221
|
-
// Returns a cord ring buffer with the first `
|
212
|
+
// Returns a cord ring buffer with the first `len` bytes removed.
|
222
213
|
// If the input is not shared, this function will remove all head child nodes
|
223
214
|
// fully inside the first `length` bytes, and adjust the new head as required.
|
224
215
|
// If the input is shared, this function returns a new instance sharing some
|
225
216
|
// or all of the nodes from the input.
|
226
|
-
static CordRepRing* RemoveSuffix(CordRepRing* r, size_t
|
217
|
+
static CordRepRing* RemoveSuffix(CordRepRing* r, size_t len,
|
227
218
|
size_t extra = 0);
|
228
219
|
|
229
|
-
// Returns a cord ring buffer with the last `
|
220
|
+
// Returns a cord ring buffer with the last `len` bytes removed.
|
230
221
|
// If the input is not shared, this function will remove all head child nodes
|
231
222
|
// fully inside the first `length` bytes, and adjust the new head as required.
|
232
223
|
// If the input is shared, this function returns a new instance sharing some
|
@@ -237,6 +228,18 @@ class CordRepRing : public CordRep {
|
|
237
228
|
// Returns the character at `offset`. Requires that `offset < length`.
|
238
229
|
char GetCharacter(size_t offset) const;
|
239
230
|
|
231
|
+
// Returns true if this instance manages a single contiguous buffer, in which
|
232
|
+
// case the (optional) output parameter `fragment` is set. Otherwise, the
|
233
|
+
// function returns false, and `fragment` is left unchanged.
|
234
|
+
bool IsFlat(absl::string_view* fragment) const;
|
235
|
+
|
236
|
+
// Returns true if the data starting at `offset` with length `len` is
|
237
|
+
// managed by this instance inside a single contiguous buffer, in which case
|
238
|
+
// the (optional) output parameter `fragment` is set to the contiguous memory
|
239
|
+
// starting at offset `offset` with length `length`. Otherwise, the function
|
240
|
+
// returns false, and `fragment` is left unchanged.
|
241
|
+
bool IsFlat(size_t offset, size_t len, absl::string_view* fragment) const;
|
242
|
+
|
240
243
|
// Testing only: set capacity to requested capacity.
|
241
244
|
void SetCapacityForTesting(size_t capacity);
|
242
245
|
|
@@ -380,8 +383,8 @@ class CordRepRing : public CordRep {
|
|
380
383
|
|
381
384
|
// Destroys the provided ring buffer, decrementing the reference count of all
|
382
385
|
// contained child CordReps. The provided 1\`rep` should have a ref count of
|
383
|
-
// one (pre decrement destroy call observing `refcount.IsOne()`) or zero
|
384
|
-
// decrement destroy call observing `!refcount.Decrement()`).
|
386
|
+
// one (pre decrement destroy call observing `refcount.IsOne()`) or zero
|
387
|
+
// (post decrement destroy call observing `!refcount.Decrement()`).
|
385
388
|
static void Destroy(CordRepRing* rep);
|
386
389
|
|
387
390
|
// Returns a mutable reference to the logical end position array.
|
@@ -461,10 +464,10 @@ class CordRepRing : public CordRep {
|
|
461
464
|
size_t length, size_t extra);
|
462
465
|
|
463
466
|
// Appends or prepends (depending on AddMode) the ring buffer in `ring' to
|
464
|
-
// `rep` starting at `offset` with length `
|
467
|
+
// `rep` starting at `offset` with length `len`.
|
465
468
|
template <AddMode mode>
|
466
469
|
static CordRepRing* AddRing(CordRepRing* rep, CordRepRing* ring,
|
467
|
-
size_t offset, size_t
|
470
|
+
size_t offset, size_t len);
|
468
471
|
|
469
472
|
// Increases the data offset for entry `index` by `n`.
|
470
473
|
void AddDataOffset(index_type index, size_t n);
|
@@ -567,20 +570,35 @@ inline CordRepRing::Position CordRepRing::FindTail(index_type head,
|
|
567
570
|
|
568
571
|
// Now that CordRepRing is defined, we can define CordRep's helper casts:
|
569
572
|
inline CordRepRing* CordRep::ring() {
|
570
|
-
assert(
|
573
|
+
assert(IsRing());
|
571
574
|
return static_cast<CordRepRing*>(this);
|
572
575
|
}
|
573
576
|
|
574
577
|
inline const CordRepRing* CordRep::ring() const {
|
575
|
-
assert(
|
578
|
+
assert(IsRing());
|
576
579
|
return static_cast<const CordRepRing*>(this);
|
577
580
|
}
|
578
581
|
|
579
|
-
|
582
|
+
inline bool CordRepRing::IsFlat(absl::string_view* fragment) const {
|
583
|
+
if (entries() == 1) {
|
584
|
+
if (fragment) *fragment = entry_data(head());
|
585
|
+
return true;
|
586
|
+
}
|
587
|
+
return false;
|
588
|
+
}
|
580
589
|
|
581
|
-
|
582
|
-
|
583
|
-
|
590
|
+
inline bool CordRepRing::IsFlat(size_t offset, size_t len,
|
591
|
+
absl::string_view* fragment) const {
|
592
|
+
const Position pos = Find(offset);
|
593
|
+
const absl::string_view data = entry_data(pos.index);
|
594
|
+
if (data.length() >= len && data.length() - len >= pos.offset) {
|
595
|
+
if (fragment) *fragment = data.substr(pos.offset, len);
|
596
|
+
return true;
|
597
|
+
}
|
598
|
+
return false;
|
599
|
+
}
|
600
|
+
|
601
|
+
std::ostream& operator<<(std::ostream& s, const CordRepRing& rep);
|
584
602
|
|
585
603
|
} // namespace cord_internal
|
586
604
|
ABSL_NAMESPACE_END
|
@@ -40,6 +40,10 @@ class CordRepRingReader {
|
|
40
40
|
// The returned value is undefined if this instance is empty.
|
41
41
|
CordRepRing::index_type index() const { return index_; }
|
42
42
|
|
43
|
+
// Returns the current node inside the ring buffer for this instance.
|
44
|
+
// The returned value is undefined if this instance is empty.
|
45
|
+
CordRep* node() const { return ring_->entry_child(index_); }
|
46
|
+
|
43
47
|
// Returns the length of the referenced ring buffer.
|
44
48
|
// Requires the current instance to be non empty.
|
45
49
|
size_t length() const {
|