grpc 1.43.1 → 1.44.0.pre2
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 +84 -64
- data/include/grpc/grpc_security.h +10 -0
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
- data/src/core/ext/filters/client_channel/client_channel.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
- data/src/core/ext/filters/client_channel/subchannel.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
- data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
- data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
- data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
- data/src/core/ext/xds/upb_utils.h +65 -0
- data/src/core/ext/xds/xds_api.cc +81 -3458
- data/src/core/ext/xds/xds_api.h +56 -611
- data/src/core/ext/xds/xds_bootstrap.cc +189 -125
- data/src/core/ext/xds/xds_bootstrap.h +20 -15
- data/src/core/ext/xds/xds_certificate_provider.h +1 -0
- data/src/core/ext/xds/xds_channel_creds.cc +108 -0
- data/src/core/ext/xds/xds_channel_creds.h +50 -0
- data/src/core/ext/xds/xds_client.cc +584 -994
- data/src/core/ext/xds/xds_client.h +78 -135
- data/src/core/ext/xds/xds_cluster.cc +451 -0
- data/src/core/ext/xds/xds_cluster.h +111 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +110 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_filters.cc +5 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1036 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +993 -0
- data/src/core/ext/xds/xds_route_config.h +215 -0
- data/src/core/ext/xds/xds_routing.cc +11 -8
- data/src/core/ext/xds/xds_routing.h +8 -5
- data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/backoff/backoff.cc +4 -30
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/channel_args.cc +0 -1
- data/src/core/lib/channel/channel_stack.cc +8 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/channel_stack_builder.cc +5 -9
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channelz.cc +1 -0
- data/src/core/lib/compression/compression.cc +19 -111
- data/src/core/lib/compression/compression_internal.cc +142 -202
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/gpr/useful.h +4 -0
- data/src/core/lib/gprpp/bitset.h +7 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/status_helper.cc +20 -28
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +11 -0
- data/src/core/lib/http/httpcli.cc +37 -46
- data/src/core/lib/http/httpcli.h +3 -15
- data/src/core/lib/iomgr/call_combiner.cc +15 -4
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/error.cc +2 -0
- data/src/core/lib/iomgr/error.h +3 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/exec_ctx.cc +22 -9
- data/src/core/lib/iomgr/executor.cc +10 -1
- data/src/core/lib/iomgr/fork_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
- data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.h +49 -20
- data/src/core/lib/promise/detail/status.h +5 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.h +0 -1
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
- data/src/core/lib/security/authorization/evaluate_args.h +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +170 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
- data/src/core/lib/security/credentials/credentials.h +10 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +0 -4
- data/src/core/lib/security/security_connector/security_connector.h +5 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
- data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
- data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
- data/src/core/{ext → lib}/service_config/service_config.h +4 -4
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
- data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -1
- data/src/core/lib/slice/slice.h +43 -13
- data/src/core/lib/slice/slice_intern.cc +3 -101
- data/src/core/lib/slice/slice_internal.h +1 -2
- data/src/core/lib/slice/slice_refcount.h +4 -13
- data/src/core/lib/slice/slice_refcount_base.h +0 -16
- data/src/core/lib/surface/call.cc +140 -382
- data/src/core/lib/surface/call.h +4 -4
- data/src/core/lib/surface/channel.cc +42 -44
- data/src/core/lib/surface/channel.h +4 -4
- data/src/core/lib/surface/init.cc +0 -2
- data/src/core/lib/surface/lame_client.cc +0 -1
- data/src/core/lib/surface/server.cc +12 -29
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.h +14 -0
- data/src/core/lib/transport/metadata_batch.h +799 -717
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +95 -92
- data/src/core/lib/transport/timeout_encoding.cc +200 -66
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +6 -39
- data/src/core/lib/uri/uri_parser.cc +223 -53
- data/src/core/lib/uri/uri_parser.h +36 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +53 -13
- data/src/core/tsi/ssl_transport_security.h +18 -6
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/xxhash/xxhash.h +607 -352
- metadata +149 -77
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -140
- data/src/core/lib/compression/compression_args.h +0 -58
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/slice/static_slice.cc +0 -377
- data/src/core/lib/slice/static_slice.h +0 -300
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -99
- data/src/core/lib/transport/static_metadata.cc +0 -1032
- data/src/core/lib/transport/static_metadata.h +0 -322
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
@@ -28,6 +28,7 @@
|
|
28
28
|
#include "src/core/ext/xds/xds_api.h"
|
29
29
|
#include "src/core/ext/xds/xds_bootstrap.h"
|
30
30
|
#include "src/core/ext/xds/xds_client_stats.h"
|
31
|
+
#include "src/core/ext/xds/xds_resource_type.h"
|
31
32
|
#include "src/core/lib/channel/channelz.h"
|
32
33
|
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
33
34
|
#include "src/core/lib/gprpp/memory.h"
|
@@ -35,6 +36,8 @@
|
|
35
36
|
#include "src/core/lib/gprpp/ref_counted.h"
|
36
37
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
37
38
|
#include "src/core/lib/gprpp/sync.h"
|
39
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
40
|
+
#include "src/core/lib/uri/uri_parser.h"
|
38
41
|
|
39
42
|
namespace grpc_core {
|
40
43
|
|
@@ -43,44 +46,14 @@ extern TraceFlag grpc_xds_client_refcount_trace;
|
|
43
46
|
|
44
47
|
class XdsClient : public DualRefCounted<XdsClient> {
|
45
48
|
public:
|
46
|
-
//
|
47
|
-
|
49
|
+
// Resource watcher interface. Implemented by callers.
|
50
|
+
// Note: Most callers will not use this API directly but rather via a
|
51
|
+
// resource-type-specific wrapper API provided by the relevant
|
52
|
+
// XdsResourceType implementation.
|
53
|
+
class ResourceWatcherInterface : public RefCounted<ResourceWatcherInterface> {
|
48
54
|
public:
|
49
|
-
virtual void
|
50
|
-
|
51
|
-
virtual void OnError(grpc_error_handle error)
|
52
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
53
|
-
virtual void OnResourceDoesNotExist()
|
54
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
55
|
-
};
|
56
|
-
|
57
|
-
// RouteConfiguration data watcher interface. Implemented by callers.
|
58
|
-
class RouteConfigWatcherInterface
|
59
|
-
: public RefCounted<RouteConfigWatcherInterface> {
|
60
|
-
public:
|
61
|
-
virtual void OnRouteConfigChanged(XdsApi::RdsUpdate route_config)
|
62
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
63
|
-
virtual void OnError(grpc_error_handle error)
|
64
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
65
|
-
virtual void OnResourceDoesNotExist()
|
66
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
67
|
-
};
|
68
|
-
|
69
|
-
// Cluster data watcher interface. Implemented by callers.
|
70
|
-
class ClusterWatcherInterface : public RefCounted<ClusterWatcherInterface> {
|
71
|
-
public:
|
72
|
-
virtual void OnClusterChanged(XdsApi::CdsUpdate cluster_data)
|
73
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
74
|
-
virtual void OnError(grpc_error_handle error)
|
75
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
76
|
-
virtual void OnResourceDoesNotExist()
|
77
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
78
|
-
};
|
79
|
-
|
80
|
-
// Endpoint data watcher interface. Implemented by callers.
|
81
|
-
class EndpointWatcherInterface : public RefCounted<EndpointWatcherInterface> {
|
82
|
-
public:
|
83
|
-
virtual void OnEndpointChanged(XdsApi::EdsUpdate update)
|
55
|
+
virtual void OnGenericResourceChanged(
|
56
|
+
const XdsResourceType::ResourceData* resource)
|
84
57
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
85
58
|
virtual void OnError(grpc_error_handle error)
|
86
59
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
|
@@ -113,57 +86,31 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
113
86
|
|
114
87
|
void Orphan() override;
|
115
88
|
|
116
|
-
// Start and cancel
|
117
|
-
//
|
118
|
-
// keep a raw pointer to the watcher, which may be used only for
|
119
|
-
// cancellation. (Because the caller does not own the watcher, the
|
120
|
-
// pointer must not be used for any other purpose.)
|
121
|
-
// If the caller is going to start a new watch after cancelling the
|
122
|
-
// old one, it should set delay_unsubscription to true.
|
123
|
-
void WatchListenerData(absl::string_view listener_name,
|
124
|
-
RefCountedPtr<ListenerWatcherInterface> watcher);
|
125
|
-
void CancelListenerDataWatch(absl::string_view listener_name,
|
126
|
-
ListenerWatcherInterface* watcher,
|
127
|
-
bool delay_unsubscription = false);
|
128
|
-
|
129
|
-
// Start and cancel route config data watch for a listener.
|
130
|
-
// The XdsClient takes ownership of the watcher, but the caller may
|
131
|
-
// keep a raw pointer to the watcher, which may be used only for
|
132
|
-
// cancellation. (Because the caller does not own the watcher, the
|
133
|
-
// pointer must not be used for any other purpose.)
|
134
|
-
// If the caller is going to start a new watch after cancelling the
|
135
|
-
// old one, it should set delay_unsubscription to true.
|
136
|
-
void WatchRouteConfigData(absl::string_view route_config_name,
|
137
|
-
RefCountedPtr<RouteConfigWatcherInterface> watcher);
|
138
|
-
void CancelRouteConfigDataWatch(absl::string_view route_config_name,
|
139
|
-
RouteConfigWatcherInterface* watcher,
|
140
|
-
bool delay_unsubscription = false);
|
141
|
-
|
142
|
-
// Start and cancel cluster data watch for a cluster.
|
143
|
-
// The XdsClient takes ownership of the watcher, but the caller may
|
144
|
-
// keep a raw pointer to the watcher, which may be used only for
|
145
|
-
// cancellation. (Because the caller does not own the watcher, the
|
146
|
-
// pointer must not be used for any other purpose.)
|
147
|
-
// If the caller is going to start a new watch after cancelling the
|
148
|
-
// old one, it should set delay_unsubscription to true.
|
149
|
-
void WatchClusterData(absl::string_view cluster_name,
|
150
|
-
RefCountedPtr<ClusterWatcherInterface> watcher);
|
151
|
-
void CancelClusterDataWatch(absl::string_view cluster_name,
|
152
|
-
ClusterWatcherInterface* watcher,
|
153
|
-
bool delay_unsubscription = false);
|
154
|
-
|
155
|
-
// Start and cancel endpoint data watch for a cluster.
|
89
|
+
// Start and cancel watch for a resource.
|
90
|
+
//
|
156
91
|
// The XdsClient takes ownership of the watcher, but the caller may
|
157
92
|
// keep a raw pointer to the watcher, which may be used only for
|
158
93
|
// cancellation. (Because the caller does not own the watcher, the
|
159
94
|
// pointer must not be used for any other purpose.)
|
160
95
|
// If the caller is going to start a new watch after cancelling the
|
161
96
|
// old one, it should set delay_unsubscription to true.
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
97
|
+
//
|
98
|
+
// The resource type object must be a global singleton, since the first
|
99
|
+
// time the XdsClient sees a particular resource type object, it will
|
100
|
+
// store the pointer to that object as the authoritative implementation for
|
101
|
+
// its type URLs. The resource type object must outlive the XdsClient object,
|
102
|
+
// and it is illegal to start a subsequent watch for the same type URLs using
|
103
|
+
// a different resource type object.
|
104
|
+
//
|
105
|
+
// Note: Most callers will not use this API directly but rather via a
|
106
|
+
// resource-type-specific wrapper API provided by the relevant
|
107
|
+
// XdsResourceType implementation.
|
108
|
+
void WatchResource(const XdsResourceType* type, absl::string_view name,
|
109
|
+
RefCountedPtr<ResourceWatcherInterface> watcher);
|
110
|
+
void CancelResourceWatch(const XdsResourceType* type,
|
111
|
+
absl::string_view listener_name,
|
112
|
+
ResourceWatcherInterface* watcher,
|
113
|
+
bool delay_unsubscription = false);
|
167
114
|
|
168
115
|
// Adds and removes drop stats for cluster_name and eds_service_name.
|
169
116
|
RefCountedPtr<XdsClusterDropStats> AddClusterDropStats(
|
@@ -204,6 +151,22 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
204
151
|
const grpc_channel_args& args);
|
205
152
|
|
206
153
|
private:
|
154
|
+
struct XdsResourceKey {
|
155
|
+
std::string id;
|
156
|
+
std::vector<URI::QueryParam> query_params;
|
157
|
+
|
158
|
+
bool operator<(const XdsResourceKey& other) const {
|
159
|
+
int c = id.compare(other.id);
|
160
|
+
if (c != 0) return c < 0;
|
161
|
+
return query_params < other.query_params;
|
162
|
+
}
|
163
|
+
};
|
164
|
+
|
165
|
+
struct XdsResourceName {
|
166
|
+
std::string authority;
|
167
|
+
XdsResourceKey key;
|
168
|
+
};
|
169
|
+
|
207
170
|
// Contains a channel to the xds server and all the data related to the
|
208
171
|
// channel. Holds a ref to the xds client object.
|
209
172
|
class ChannelState : public DualRefCounted<ChannelState> {
|
@@ -234,11 +197,11 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
234
197
|
void StartConnectivityWatchLocked();
|
235
198
|
void CancelConnectivityWatchLocked();
|
236
199
|
|
237
|
-
void SubscribeLocked(const
|
238
|
-
const
|
200
|
+
void SubscribeLocked(const XdsResourceType* type,
|
201
|
+
const XdsResourceName& name)
|
239
202
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
240
|
-
void UnsubscribeLocked(const
|
241
|
-
const
|
203
|
+
void UnsubscribeLocked(const XdsResourceType* type,
|
204
|
+
const XdsResourceName& name,
|
242
205
|
bool delay_unsubscription)
|
243
206
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
|
244
207
|
|
@@ -260,55 +223,22 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
260
223
|
OrphanablePtr<RetryableCall<LrsCallState>> lrs_calld_;
|
261
224
|
|
262
225
|
// Stores the most recent accepted resource version for each resource type.
|
263
|
-
std::map<
|
226
|
+
std::map<const XdsResourceType*, std::string /*version*/>
|
264
227
|
resource_type_version_map_;
|
265
228
|
};
|
266
229
|
|
267
|
-
struct
|
268
|
-
std::map<
|
269
|
-
watchers;
|
270
|
-
// The latest data seen from LDS.
|
271
|
-
absl::optional<XdsApi::LdsUpdate> update;
|
272
|
-
XdsApi::ResourceMetadata meta;
|
273
|
-
};
|
274
|
-
|
275
|
-
struct RouteConfigState {
|
276
|
-
std::map<RouteConfigWatcherInterface*,
|
277
|
-
RefCountedPtr<RouteConfigWatcherInterface>>
|
278
|
-
watchers;
|
279
|
-
// The latest data seen from RDS.
|
280
|
-
absl::optional<XdsApi::RdsUpdate> update;
|
281
|
-
XdsApi::ResourceMetadata meta;
|
282
|
-
};
|
283
|
-
|
284
|
-
struct ClusterState {
|
285
|
-
std::map<ClusterWatcherInterface*, RefCountedPtr<ClusterWatcherInterface>>
|
286
|
-
watchers;
|
287
|
-
// The latest data seen from CDS.
|
288
|
-
absl::optional<XdsApi::CdsUpdate> update;
|
289
|
-
XdsApi::ResourceMetadata meta;
|
290
|
-
};
|
291
|
-
|
292
|
-
struct EndpointState {
|
293
|
-
std::map<EndpointWatcherInterface*, RefCountedPtr<EndpointWatcherInterface>>
|
230
|
+
struct ResourceState {
|
231
|
+
std::map<ResourceWatcherInterface*, RefCountedPtr<ResourceWatcherInterface>>
|
294
232
|
watchers;
|
295
|
-
// The latest data seen
|
296
|
-
|
233
|
+
// The latest data seen for the resource.
|
234
|
+
std::unique_ptr<XdsResourceType::ResourceData> resource;
|
297
235
|
XdsApi::ResourceMetadata meta;
|
298
236
|
};
|
299
237
|
|
300
238
|
struct AuthorityState {
|
301
239
|
RefCountedPtr<ChannelState> channel_state;
|
302
|
-
std::map<std::
|
303
|
-
|
304
|
-
route_config_map;
|
305
|
-
std::map<std::string /*cluster_name*/, ClusterState> cluster_map;
|
306
|
-
std::map<std::string /*eds_service_name*/, EndpointState> endpoint_map;
|
307
|
-
|
308
|
-
bool HasSubscribedResources() {
|
309
|
-
return !listener_map.empty() || !route_config_map.empty() ||
|
310
|
-
!cluster_map.empty() || !endpoint_map.empty();
|
311
|
-
}
|
240
|
+
std::map<const XdsResourceType*, std::map<XdsResourceKey, ResourceState>>
|
241
|
+
resource_map;
|
312
242
|
};
|
313
243
|
|
314
244
|
struct LoadReportState {
|
@@ -331,6 +261,19 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
331
261
|
void NotifyOnErrorLocked(grpc_error_handle error)
|
332
262
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
333
263
|
|
264
|
+
void MaybeRegisterResourceTypeLocked(const XdsResourceType* resource_type)
|
265
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
266
|
+
|
267
|
+
// Gets the type for resource_type, or null if the type is unknown.
|
268
|
+
const XdsResourceType* GetResourceTypeLocked(absl::string_view resource_type)
|
269
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
270
|
+
|
271
|
+
static absl::StatusOr<XdsResourceName> ParseXdsResourceName(
|
272
|
+
absl::string_view name, const XdsResourceType* type);
|
273
|
+
static std::string ConstructFullXdsResourceName(
|
274
|
+
absl::string_view authority, absl::string_view resource_type,
|
275
|
+
const XdsResourceKey& key);
|
276
|
+
|
334
277
|
XdsApi::ClusterLoadReportMap BuildLoadReportSnapshotLocked(
|
335
278
|
bool send_all_clusters, const std::set<std::string>& clusters)
|
336
279
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
@@ -348,6 +291,13 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
348
291
|
|
349
292
|
Mutex mu_;
|
350
293
|
|
294
|
+
// Stores resource type objects seen by type URL.
|
295
|
+
std::map<absl::string_view /*resource_type*/, const XdsResourceType*>
|
296
|
+
resource_types_ ABSL_GUARDED_BY(mu_);
|
297
|
+
std::map<absl::string_view /*v2_resource_type*/, const XdsResourceType*>
|
298
|
+
v2_resource_types_ ABSL_GUARDED_BY(mu_);
|
299
|
+
upb::SymbolTable symtab_ ABSL_GUARDED_BY(mu_);
|
300
|
+
|
351
301
|
// Map of existing xDS server channels.
|
352
302
|
std::map<XdsBootstrap::XdsServer, ChannelState*> xds_server_channel_map_
|
353
303
|
ABSL_GUARDED_BY(mu_);
|
@@ -363,15 +313,8 @@ class XdsClient : public DualRefCounted<XdsClient> {
|
|
363
313
|
|
364
314
|
// Stores started watchers whose resource name was not parsed successfully,
|
365
315
|
// waiting to be cancelled or reset in Orphan().
|
366
|
-
std::map<
|
367
|
-
|
368
|
-
std::map<RouteConfigWatcherInterface*,
|
369
|
-
RefCountedPtr<RouteConfigWatcherInterface>>
|
370
|
-
invalid_route_config_watchers_ ABSL_GUARDED_BY(mu_);
|
371
|
-
std::map<ClusterWatcherInterface*, RefCountedPtr<ClusterWatcherInterface>>
|
372
|
-
invalid_cluster_watchers_ ABSL_GUARDED_BY(mu_);
|
373
|
-
std::map<EndpointWatcherInterface*, RefCountedPtr<EndpointWatcherInterface>>
|
374
|
-
invalid_endpoint_watchers_ ABSL_GUARDED_BY(mu_);
|
316
|
+
std::map<ResourceWatcherInterface*, RefCountedPtr<ResourceWatcherInterface>>
|
317
|
+
invalid_watchers_ ABSL_GUARDED_BY(mu_);
|
375
318
|
|
376
319
|
bool shutting_down_ ABSL_GUARDED_BY(mu_) = false;
|
377
320
|
};
|