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
@@ -149,7 +149,11 @@ static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* cl,
|
|
149
149
|
}
|
150
150
|
GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed
|
151
151
|
assert(cl->cb);
|
152
|
-
|
152
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
153
|
+
cl->error_data.error = grpc_core::internal::StatusAllocHeapPtr(error);
|
154
|
+
#else
|
155
|
+
cl->error_data.error = reinterpret_cast<intptr_t>(error);
|
156
|
+
#endif
|
153
157
|
lock->queue.Push(cl->next_data.mpscq_node.get());
|
154
158
|
}
|
155
159
|
|
@@ -221,12 +225,21 @@ bool grpc_combiner_continue_exec_ctx() {
|
|
221
225
|
return true;
|
222
226
|
}
|
223
227
|
grpc_closure* cl = reinterpret_cast<grpc_closure*>(n);
|
224
|
-
grpc_error_handle cl_err = cl->error_data.error;
|
225
228
|
#ifndef NDEBUG
|
226
229
|
cl->scheduled = false;
|
227
230
|
#endif
|
231
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
232
|
+
grpc_error_handle cl_err =
|
233
|
+
grpc_core::internal::StatusMoveFromHeapPtr(cl->error_data.error);
|
234
|
+
cl->error_data.error = 0;
|
235
|
+
cl->cb(cl->cb_arg, std::move(cl_err));
|
236
|
+
#else
|
237
|
+
grpc_error_handle cl_err =
|
238
|
+
reinterpret_cast<grpc_error_handle>(cl->error_data.error);
|
239
|
+
cl->error_data.error = 0;
|
228
240
|
cl->cb(cl->cb_arg, cl_err);
|
229
241
|
GRPC_ERROR_UNREF(cl_err);
|
242
|
+
#endif
|
230
243
|
} else {
|
231
244
|
grpc_closure* c = lock->final_list.head;
|
232
245
|
GPR_ASSERT(c != nullptr);
|
@@ -236,12 +249,21 @@ bool grpc_combiner_continue_exec_ctx() {
|
|
236
249
|
GRPC_COMBINER_TRACE(
|
237
250
|
gpr_log(GPR_INFO, "C:%p execute_final[%d] c=%p", lock, loops, c));
|
238
251
|
grpc_closure* next = c->next_data.next;
|
239
|
-
grpc_error_handle error = c->error_data.error;
|
240
252
|
#ifndef NDEBUG
|
241
253
|
c->scheduled = false;
|
242
254
|
#endif
|
255
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
256
|
+
grpc_error_handle error =
|
257
|
+
grpc_core::internal::StatusMoveFromHeapPtr(c->error_data.error);
|
258
|
+
c->error_data.error = 0;
|
259
|
+
c->cb(c->cb_arg, std::move(error));
|
260
|
+
#else
|
261
|
+
grpc_error_handle error =
|
262
|
+
reinterpret_cast<grpc_error_handle>(c->error_data.error);
|
263
|
+
c->error_data.error = 0;
|
243
264
|
c->cb(c->cb_arg, error);
|
244
265
|
GRPC_ERROR_UNREF(error);
|
266
|
+
#endif
|
245
267
|
c = next;
|
246
268
|
}
|
247
269
|
}
|
data/src/core/lib/iomgr/error.cc
CHANGED
@@ -252,6 +252,8 @@ static const char* error_int_name(grpc_error_ints key) {
|
|
252
252
|
return "channel_connectivity_state";
|
253
253
|
case GRPC_ERROR_INT_LB_POLICY_DROP:
|
254
254
|
return "lb_policy_drop";
|
255
|
+
case GRPC_ERROR_INT_STREAM_NETWORK_STATE:
|
256
|
+
return "stream_network_state";
|
255
257
|
case GRPC_ERROR_INT_MAX:
|
256
258
|
GPR_UNREACHABLE_CODE(return "unknown");
|
257
259
|
}
|
data/src/core/lib/iomgr/error.h
CHANGED
@@ -96,6 +96,9 @@ typedef enum {
|
|
96
96
|
/// LB policy drop
|
97
97
|
GRPC_ERROR_INT_LB_POLICY_DROP =
|
98
98
|
static_cast<int>(grpc_core::StatusIntProperty::kLbPolicyDrop),
|
99
|
+
/// stream network state
|
100
|
+
GRPC_ERROR_INT_STREAM_NETWORK_STATE =
|
101
|
+
static_cast<int>(grpc_core::StatusIntProperty::kStreamNetworkState),
|
99
102
|
|
100
103
|
/// Must always be last
|
101
104
|
GRPC_ERROR_INT_MAX,
|
@@ -18,6 +18,7 @@
|
|
18
18
|
|
19
19
|
#include "src/core/lib/debug/trace.h"
|
20
20
|
#include "src/core/lib/iomgr/closure.h"
|
21
|
+
#include "src/core/lib/iomgr/event_engine/resolver.h"
|
21
22
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
22
23
|
#include "src/core/lib/iomgr/tcp_client.h"
|
23
24
|
#include "src/core/lib/iomgr/tcp_server.h"
|
@@ -29,7 +30,6 @@ extern grpc_tcp_server_vtable grpc_event_engine_tcp_server_vtable;
|
|
29
30
|
extern grpc_timer_vtable grpc_event_engine_timer_vtable;
|
30
31
|
extern grpc_pollset_vtable grpc_event_engine_pollset_vtable;
|
31
32
|
extern grpc_pollset_set_vtable grpc_event_engine_pollset_set_vtable;
|
32
|
-
extern grpc_address_resolver_vtable grpc_event_engine_resolver_vtable;
|
33
33
|
|
34
34
|
// Disabled by default. grpc_polling_trace must be defined in all iomgr
|
35
35
|
// implementations due to its usage in lockfree_event.
|
@@ -75,7 +75,8 @@ void grpc_set_default_iomgr_platform() {
|
|
75
75
|
grpc_set_timer_impl(&grpc_event_engine_timer_vtable);
|
76
76
|
grpc_set_pollset_vtable(&grpc_event_engine_pollset_vtable);
|
77
77
|
grpc_set_pollset_set_vtable(&grpc_event_engine_pollset_set_vtable);
|
78
|
-
|
78
|
+
grpc_core::SetDNSResolver(
|
79
|
+
grpc_core::experimental::EventEngineDNSResolver::GetOrCreate());
|
79
80
|
grpc_set_iomgr_platform_vtable(&vtable);
|
80
81
|
}
|
81
82
|
|
@@ -37,5 +37,11 @@ grpc_resolved_address CreateGRPCResolvedAddress(
|
|
37
37
|
return grpc_addr;
|
38
38
|
}
|
39
39
|
|
40
|
+
// TODO(ctiller): Move this to somewhere more permanent as we're deleting iomgr.
|
41
|
+
std::string ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr) {
|
42
|
+
auto gra = CreateGRPCResolvedAddress(addr);
|
43
|
+
return grpc_sockaddr_to_uri(&gra);
|
44
|
+
}
|
45
|
+
|
40
46
|
} // namespace experimental
|
41
47
|
} // namespace grpc_event_engine
|
@@ -29,6 +29,8 @@ EventEngine::ResolvedAddress CreateResolvedAddress(
|
|
29
29
|
grpc_resolved_address CreateGRPCResolvedAddress(
|
30
30
|
const EventEngine::ResolvedAddress& ra);
|
31
31
|
|
32
|
+
std::string ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr);
|
33
|
+
|
32
34
|
} // namespace experimental
|
33
35
|
} // namespace grpc_event_engine
|
34
36
|
|
@@ -24,11 +24,15 @@
|
|
24
24
|
#include "src/core/lib/iomgr/error.h"
|
25
25
|
#include "src/core/lib/iomgr/event_engine/promise.h"
|
26
26
|
#include "src/core/lib/iomgr/event_engine/resolved_address_internal.h"
|
27
|
+
#include "src/core/lib/iomgr/event_engine/resolver.h"
|
27
28
|
#include "src/core/lib/iomgr/resolve_address.h"
|
29
|
+
#include "src/core/lib/iomgr/resolve_address_impl.h"
|
28
30
|
#include "src/core/lib/iomgr/work_serializer.h"
|
29
31
|
#include "src/core/lib/surface/init.h"
|
30
32
|
#include "src/core/lib/transport/error_utils.h"
|
31
33
|
|
34
|
+
namespace grpc_core {
|
35
|
+
namespace experimental {
|
32
36
|
namespace {
|
33
37
|
using ::grpc_event_engine::experimental::CreateGRPCResolvedAddress;
|
34
38
|
using ::grpc_event_engine::experimental::EventEngine;
|
@@ -39,77 +43,91 @@ using ::grpc_event_engine::experimental::Promise;
|
|
39
43
|
///
|
40
44
|
/// This provides a place to store the ownership of the DNSResolver object until
|
41
45
|
/// the request is complete.
|
42
|
-
class
|
46
|
+
class EventEngineDNSRequest : DNSRequest {
|
43
47
|
public:
|
44
|
-
|
45
|
-
|
46
|
-
|
48
|
+
EventEngineDNSRequest(std::unique_ptr<EventEngine::DNSResolver> dns_resolver,
|
49
|
+
absl::string_view name, absl::string_view default_port,
|
50
|
+
grpc_closure* on_done,
|
51
|
+
std::vector<grpc_resolved_address>* addresses)
|
47
52
|
: dns_resolver_(std::move(dns_resolver)),
|
48
|
-
|
49
|
-
|
53
|
+
name_(std::string(name)),
|
54
|
+
default_port_(std::string(default_port)),
|
55
|
+
on_done_(std::move(on_done)) {}
|
56
|
+
|
57
|
+
void Start() override {
|
58
|
+
if (dns_resolver_ == nullptr) {
|
59
|
+
new DNSCallbackExecCtxScheduler(
|
60
|
+
std::move(on_done_),
|
61
|
+
absl::UnknownError("Failed to get DNS Resolver."));
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
Ref().release(); // ref held by pending resolution
|
50
65
|
dns_resolver_->LookupHostname(
|
51
|
-
absl::bind_front(&
|
52
|
-
|
66
|
+
absl::bind_front(&EventEngineDNSRequest::OnLookupComplete, this), name_,
|
67
|
+
default_port_, absl::InfiniteFuture());
|
53
68
|
}
|
54
69
|
|
70
|
+
// TOOD(hork): implement cancellation; currently it's a no-op
|
71
|
+
void Orphan() override { Unref(); }
|
72
|
+
|
55
73
|
private:
|
56
74
|
void OnLookupComplete(
|
57
75
|
absl::StatusOr<std::vector<EventEngine::ResolvedAddress>> addresses) {
|
58
|
-
|
76
|
+
ExecCtx exec_ctx;
|
59
77
|
// Convert addresses to iomgr form.
|
60
|
-
|
61
|
-
|
62
|
-
(*addresses_)->naddrs = addresses->size();
|
63
|
-
(*addresses_)->addrs = static_cast<grpc_resolved_address*>(
|
64
|
-
gpr_malloc(sizeof(grpc_resolved_address) * addresses->size()));
|
78
|
+
std::vector<grpc_resolved_address> result;
|
79
|
+
results.reserve(addresses->size());
|
65
80
|
for (size_t i = 0; i < addresses->size(); ++i) {
|
66
|
-
(
|
81
|
+
results.push_back(CreateGRPCResolvedAddress(addresses[i]));
|
82
|
+
}
|
83
|
+
if (addresses.ok()) {
|
84
|
+
on_done_(std::move(result));
|
85
|
+
} else {
|
86
|
+
on_done_(addresses.status());
|
67
87
|
}
|
68
|
-
|
69
|
-
delete this;
|
70
|
-
grpc_core::Closure::Run(DEBUG_LOCATION, cb,
|
71
|
-
absl_status_to_grpc_error(addresses.status()));
|
88
|
+
Unref();
|
72
89
|
}
|
73
90
|
|
74
91
|
std::unique_ptr<EventEngine::DNSResolver> dns_resolver_;
|
75
|
-
|
76
|
-
|
92
|
+
const std::string name_;
|
93
|
+
const std::string default_port_;
|
94
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
95
|
+
on_done_;
|
77
96
|
};
|
78
97
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
GetDefaultEventEngine()->GetDNSResolver();
|
85
|
-
if (dns_resolver == nullptr) {
|
86
|
-
grpc_core::ExecCtx::Run(
|
87
|
-
DEBUG_LOCATION, on_done,
|
88
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to get DNS Resolver."));
|
89
|
-
return;
|
90
|
-
}
|
91
|
-
new DnsRequest(std::move(dns_resolver), addr, default_port, on_done,
|
92
|
-
addresses);
|
98
|
+
} // namespace
|
99
|
+
|
100
|
+
DNSResolver* EventEngineDNSResolver::GetOrCreate() {
|
101
|
+
static EventEngineDNSResolver* instance = new EventEngineDNSResolver();
|
102
|
+
return instance;
|
93
103
|
}
|
94
104
|
|
95
|
-
|
96
|
-
|
105
|
+
OrphanablePtr<DNSResolver::Request> EventEngineDNSResolver::ResolveName(
|
106
|
+
absl::string_view name, absl::string_view default_port,
|
107
|
+
grpc_pollset_set* /* interested_parties */,
|
108
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
109
|
+
on_done) {
|
110
|
+
std::unique_ptr<EventEngine::DNSResolver> dns_resolver =
|
111
|
+
GetDefaultEventEngine()->GetDNSResolver();
|
112
|
+
return MakeOrphanable<EventEngineDNSRequest>(
|
113
|
+
std::move(dns_resolver), name, default_port, std::move(on_done));
|
97
114
|
}
|
98
115
|
|
99
|
-
|
100
|
-
|
101
|
-
|
116
|
+
absl::StatusOr<std::vector<grpc_resolved_address>>
|
117
|
+
EventEngineDNSResolver::ResolveNameBlocking(absl::string_view name,
|
118
|
+
absl::string_view default_port) {
|
102
119
|
grpc_closure on_done;
|
103
|
-
Promise<
|
104
|
-
|
105
|
-
|
106
|
-
|
120
|
+
Promise<absl::StatusOr<std::vector<grpc_resolved_address>>> evt;
|
121
|
+
auto r = ResolveName(
|
122
|
+
name, default_port,
|
123
|
+
[&evt](void(absl::StatusOr<std::vector<grpc_resolved_address>> result) {
|
124
|
+
evt.Set(std::move(result));
|
125
|
+
}));
|
126
|
+
r->Start();
|
107
127
|
return evt.Get();
|
108
128
|
}
|
109
129
|
|
110
|
-
} // namespace
|
111
|
-
|
112
|
-
grpc_address_resolver_vtable grpc_event_engine_resolver_vtable{
|
113
|
-
resolve_address, blocking_resolve_address};
|
130
|
+
} // namespace experimental
|
131
|
+
} // namespace grpc_core
|
114
132
|
|
115
133
|
#endif // GRPC_USE_EVENT_ENGINE
|
@@ -0,0 +1,56 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVER_H
|
18
|
+
#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVER_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <string.h>
|
23
|
+
#include <sys/types.h>
|
24
|
+
|
25
|
+
#include <functional>
|
26
|
+
|
27
|
+
#include <grpc/support/alloc.h>
|
28
|
+
#include <grpc/support/log.h>
|
29
|
+
#include <grpc/support/string_util.h>
|
30
|
+
#include <grpc/support/time.h>
|
31
|
+
|
32
|
+
#include "src/core/lib/iomgr/port.h"
|
33
|
+
#include "src/core/lib/iomgr/resolve_address.h"
|
34
|
+
|
35
|
+
namespace grpc_core {
|
36
|
+
namespace experimental {
|
37
|
+
|
38
|
+
class EventEngineDNSResolver : public DNSResolver {
|
39
|
+
public:
|
40
|
+
// Gets the singleton instance, creating it first if it doesn't exist
|
41
|
+
static EventEngineDNSResolver* GetOrCreate();
|
42
|
+
|
43
|
+
OrphanablePtr<DNSResolver::Request> ResolveName(
|
44
|
+
absl::string_view name, absl::string_view default_port,
|
45
|
+
grpc_pollset_set* interested_parties,
|
46
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
47
|
+
on_done) override;
|
48
|
+
|
49
|
+
absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
|
50
|
+
absl::string_view name, absl::string_view default_port) override;
|
51
|
+
};
|
52
|
+
|
53
|
+
} // namespace experimental
|
54
|
+
} // namespace grpc_core
|
55
|
+
|
56
|
+
#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVER_H
|
@@ -27,7 +27,7 @@
|
|
27
27
|
#include "src/core/lib/iomgr/error.h"
|
28
28
|
#include "src/core/lib/profiling/timers.h"
|
29
29
|
|
30
|
-
static void exec_ctx_run(grpc_closure* closure
|
30
|
+
static void exec_ctx_run(grpc_closure* closure) {
|
31
31
|
#ifndef NDEBUG
|
32
32
|
closure->scheduled = false;
|
33
33
|
if (grpc_trace_closure.enabled()) {
|
@@ -37,18 +37,27 @@ static void exec_ctx_run(grpc_closure* closure, grpc_error_handle error) {
|
|
37
37
|
closure->line_initiated);
|
38
38
|
}
|
39
39
|
#endif
|
40
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
41
|
+
grpc_error_handle error =
|
42
|
+
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
|
43
|
+
closure->error_data.error = 0;
|
44
|
+
closure->cb(closure->cb_arg, std::move(error));
|
45
|
+
#else
|
46
|
+
grpc_error_handle error =
|
47
|
+
reinterpret_cast<grpc_error_handle>(closure->error_data.error);
|
48
|
+
closure->error_data.error = 0;
|
40
49
|
closure->cb(closure->cb_arg, error);
|
50
|
+
GRPC_ERROR_UNREF(error);
|
51
|
+
#endif
|
41
52
|
#ifndef NDEBUG
|
42
53
|
if (grpc_trace_closure.enabled()) {
|
43
54
|
gpr_log(GPR_DEBUG, "closure %p finished", closure);
|
44
55
|
}
|
45
56
|
#endif
|
46
|
-
GRPC_ERROR_UNREF(error);
|
47
57
|
}
|
48
58
|
|
49
|
-
static void exec_ctx_sched(grpc_closure* closure
|
50
|
-
grpc_closure_list_append(grpc_core::ExecCtx::Get()->closure_list(), closure
|
51
|
-
error);
|
59
|
+
static void exec_ctx_sched(grpc_closure* closure) {
|
60
|
+
grpc_closure_list_append(grpc_core::ExecCtx::Get()->closure_list(), closure);
|
52
61
|
}
|
53
62
|
|
54
63
|
static gpr_timespec g_start_time;
|
@@ -151,9 +160,8 @@ bool ExecCtx::Flush() {
|
|
151
160
|
closure_list_.head = closure_list_.tail = nullptr;
|
152
161
|
while (c != nullptr) {
|
153
162
|
grpc_closure* next = c->next_data.next;
|
154
|
-
grpc_error_handle error = c->error_data.error;
|
155
163
|
did_something = true;
|
156
|
-
exec_ctx_run(c
|
164
|
+
exec_ctx_run(c);
|
157
165
|
c = next;
|
158
166
|
}
|
159
167
|
} else if (!grpc_combiner_continue_exec_ctx()) {
|
@@ -195,7 +203,12 @@ void ExecCtx::Run(const DebugLocation& location, grpc_closure* closure,
|
|
195
203
|
closure->run = false;
|
196
204
|
GPR_ASSERT(closure->cb != nullptr);
|
197
205
|
#endif
|
198
|
-
|
206
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
207
|
+
closure->error_data.error = internal::StatusAllocHeapPtr(error);
|
208
|
+
#else
|
209
|
+
closure->error_data.error = reinterpret_cast<intptr_t>(error);
|
210
|
+
#endif
|
211
|
+
exec_ctx_sched(closure);
|
199
212
|
}
|
200
213
|
|
201
214
|
void ExecCtx::RunList(const DebugLocation& location, grpc_closure_list* list) {
|
@@ -218,7 +231,7 @@ void ExecCtx::RunList(const DebugLocation& location, grpc_closure_list* list) {
|
|
218
231
|
c->run = false;
|
219
232
|
GPR_ASSERT(c->cb != nullptr);
|
220
233
|
#endif
|
221
|
-
exec_ctx_sched(c
|
234
|
+
exec_ctx_sched(c);
|
222
235
|
c = next;
|
223
236
|
}
|
224
237
|
list->head = list->tail = nullptr;
|
@@ -114,7 +114,6 @@ size_t Executor::RunClosures(const char* executor_name,
|
|
114
114
|
grpc_closure* c = list.head;
|
115
115
|
while (c != nullptr) {
|
116
116
|
grpc_closure* next = c->next_data.next;
|
117
|
-
grpc_error_handle error = c->error_data.error;
|
118
117
|
#ifndef NDEBUG
|
119
118
|
EXECUTOR_TRACE("(%s) run %p [created by %s:%d]", executor_name, c,
|
120
119
|
c->file_created, c->line_created);
|
@@ -122,8 +121,18 @@ size_t Executor::RunClosures(const char* executor_name,
|
|
122
121
|
#else
|
123
122
|
EXECUTOR_TRACE("(%s) run %p", executor_name, c);
|
124
123
|
#endif
|
124
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
125
|
+
grpc_error_handle error =
|
126
|
+
internal::StatusMoveFromHeapPtr(c->error_data.error);
|
127
|
+
c->error_data.error = 0;
|
128
|
+
c->cb(c->cb_arg, std::move(error));
|
129
|
+
#else
|
130
|
+
grpc_error_handle error =
|
131
|
+
reinterpret_cast<grpc_error_handle>(c->error_data.error);
|
132
|
+
c->error_data.error = 0;
|
125
133
|
c->cb(c->cb_arg, error);
|
126
134
|
GRPC_ERROR_UNREF(error);
|
135
|
+
#endif
|
127
136
|
c = next;
|
128
137
|
n++;
|
129
138
|
ExecCtx::Get()->Flush();
|
@@ -67,12 +67,13 @@ void grpc_prefork() {
|
|
67
67
|
if (poll_strategy_name == nullptr ||
|
68
68
|
(strcmp(poll_strategy_name, "epoll1") != 0 &&
|
69
69
|
strcmp(poll_strategy_name, "poll") != 0)) {
|
70
|
-
gpr_log(
|
70
|
+
gpr_log(GPR_ERROR,
|
71
71
|
"Fork support is only compatible with the epoll1 and poll polling "
|
72
72
|
"strategies");
|
73
|
+
return;
|
73
74
|
}
|
74
75
|
if (!grpc_core::Fork::BlockExecCtx()) {
|
75
|
-
gpr_log(
|
76
|
+
gpr_log(GPR_ERROR,
|
76
77
|
"Other threads are currently calling into gRPC, skipping fork() "
|
77
78
|
"handlers");
|
78
79
|
return;
|
@@ -68,7 +68,10 @@ void grpc_custom_iomgr_init(grpc_socket_vtable* socket,
|
|
68
68
|
grpc_custom_timer_init(timer);
|
69
69
|
grpc_custom_pollset_init(poller);
|
70
70
|
grpc_custom_pollset_set_init();
|
71
|
-
|
71
|
+
grpc_core::CustomDNSResolver::Create(resolver);
|
72
|
+
grpc_core::CustomDNSResolver* custom_dns_resolver =
|
73
|
+
grpc_core::CustomDNSResolver::Get();
|
74
|
+
grpc_core::SetDNSResolver(custom_dns_resolver);
|
72
75
|
grpc_set_iomgr_platform_vtable(&vtable);
|
73
76
|
}
|
74
77
|
|
@@ -26,6 +26,7 @@
|
|
26
26
|
#include "src/core/lib/iomgr/ev_posix.h"
|
27
27
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
28
28
|
#include "src/core/lib/iomgr/resolve_address.h"
|
29
|
+
#include "src/core/lib/iomgr/resolve_address_posix.h"
|
29
30
|
#include "src/core/lib/iomgr/tcp_client.h"
|
30
31
|
#include "src/core/lib/iomgr/tcp_posix.h"
|
31
32
|
#include "src/core/lib/iomgr/tcp_server.h"
|
@@ -36,7 +37,6 @@ extern grpc_tcp_client_vtable grpc_posix_tcp_client_vtable;
|
|
36
37
|
extern grpc_timer_vtable grpc_generic_timer_vtable;
|
37
38
|
extern grpc_pollset_vtable grpc_posix_pollset_vtable;
|
38
39
|
extern grpc_pollset_set_vtable grpc_posix_pollset_set_vtable;
|
39
|
-
extern grpc_address_resolver_vtable grpc_posix_resolver_vtable;
|
40
40
|
|
41
41
|
static void iomgr_platform_init(void) {
|
42
42
|
grpc_wakeup_fd_global_init();
|
@@ -79,7 +79,7 @@ void grpc_set_default_iomgr_platform() {
|
|
79
79
|
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
80
80
|
grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
|
81
81
|
grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
|
82
|
-
|
82
|
+
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
|
83
83
|
grpc_set_iomgr_platform_vtable(&vtable);
|
84
84
|
}
|
85
85
|
|
@@ -41,6 +41,7 @@
|
|
41
41
|
#include "src/core/lib/iomgr/ev_posix.h"
|
42
42
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
43
43
|
#include "src/core/lib/iomgr/resolve_address.h"
|
44
|
+
#include "src/core/lib/iomgr/resolve_address_posix.h"
|
44
45
|
#include "src/core/lib/iomgr/tcp_client.h"
|
45
46
|
#include "src/core/lib/iomgr/tcp_posix.h"
|
46
47
|
#include "src/core/lib/iomgr/tcp_server.h"
|
@@ -55,7 +56,6 @@ extern grpc_tcp_client_vtable grpc_cfstream_client_vtable;
|
|
55
56
|
extern grpc_timer_vtable grpc_generic_timer_vtable;
|
56
57
|
extern grpc_pollset_vtable grpc_posix_pollset_vtable;
|
57
58
|
extern grpc_pollset_set_vtable grpc_posix_pollset_set_vtable;
|
58
|
-
extern grpc_address_resolver_vtable grpc_posix_resolver_vtable;
|
59
59
|
|
60
60
|
static void apple_iomgr_platform_init(void) { grpc_pollset_global_init(); }
|
61
61
|
|
@@ -178,7 +178,7 @@ void grpc_set_default_iomgr_platform() {
|
|
178
178
|
grpc_set_iomgr_platform_vtable(&apple_vtable);
|
179
179
|
}
|
180
180
|
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
181
|
-
|
181
|
+
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
|
182
182
|
}
|
183
183
|
|
184
184
|
bool grpc_iomgr_run_in_background() {
|
@@ -28,6 +28,7 @@
|
|
28
28
|
#include "src/core/lib/iomgr/iomgr.h"
|
29
29
|
#include "src/core/lib/iomgr/pollset_windows.h"
|
30
30
|
#include "src/core/lib/iomgr/resolve_address.h"
|
31
|
+
#include "src/core/lib/iomgr/resolve_address_windows.h"
|
31
32
|
#include "src/core/lib/iomgr/sockaddr_windows.h"
|
32
33
|
#include "src/core/lib/iomgr/socket_windows.h"
|
33
34
|
#include "src/core/lib/iomgr/tcp_client.h"
|
@@ -39,7 +40,6 @@ extern grpc_tcp_client_vtable grpc_windows_tcp_client_vtable;
|
|
39
40
|
extern grpc_timer_vtable grpc_generic_timer_vtable;
|
40
41
|
extern grpc_pollset_vtable grpc_windows_pollset_vtable;
|
41
42
|
extern grpc_pollset_set_vtable grpc_windows_pollset_set_vtable;
|
42
|
-
extern grpc_address_resolver_vtable grpc_windows_resolver_vtable;
|
43
43
|
|
44
44
|
/* Windows' io manager is going to be fully designed using IO completion
|
45
45
|
ports. All of what we're doing here is basically make sure that
|
@@ -96,7 +96,7 @@ void grpc_set_default_iomgr_platform() {
|
|
96
96
|
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
97
97
|
grpc_set_pollset_vtable(&grpc_windows_pollset_vtable);
|
98
98
|
grpc_set_pollset_set_vtable(&grpc_windows_pollset_set_vtable);
|
99
|
-
|
99
|
+
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
|
100
100
|
grpc_set_iomgr_platform_vtable(&vtable);
|
101
101
|
}
|
102
102
|
|
data/src/core/lib/iomgr/port.h
CHANGED
@@ -73,9 +73,9 @@
|
|
73
73
|
#if __GLIBC_PREREQ(2, 10)
|
74
74
|
#define GRPC_LINUX_SOCKETUTILS 1
|
75
75
|
#endif
|
76
|
-
#if !(__GLIBC_PREREQ(2,
|
76
|
+
#if !(__GLIBC_PREREQ(2, 18))
|
77
77
|
/*
|
78
|
-
* TCP_USER_TIMEOUT wasn't imported to glibc until 2.
|
78
|
+
* TCP_USER_TIMEOUT wasn't imported to glibc until 2.18. Use Linux system
|
79
79
|
* header instead.
|
80
80
|
*/
|
81
81
|
#define GRPC_LINUX_TCP_H 1
|
@@ -24,32 +24,13 @@
|
|
24
24
|
|
25
25
|
namespace grpc_core {
|
26
26
|
const char* kDefaultSecurePort = "https";
|
27
|
-
} // namespace grpc_core
|
28
|
-
|
29
|
-
grpc_address_resolver_vtable* grpc_resolve_address_impl;
|
30
27
|
|
31
|
-
|
32
|
-
|
28
|
+
namespace {
|
29
|
+
DNSResolver* g_dns_resolver;
|
33
30
|
}
|
34
31
|
|
35
|
-
void
|
36
|
-
grpc_pollset_set* interested_parties,
|
37
|
-
grpc_closure* on_done,
|
38
|
-
grpc_resolved_addresses** addresses) {
|
39
|
-
grpc_resolve_address_impl->resolve_address(
|
40
|
-
addr, default_port, interested_parties, on_done, addresses);
|
41
|
-
}
|
32
|
+
void SetDNSResolver(DNSResolver* resolver) { g_dns_resolver = resolver; }
|
42
33
|
|
43
|
-
|
44
|
-
if (addresses != nullptr) {
|
45
|
-
gpr_free(addresses->addrs);
|
46
|
-
}
|
47
|
-
gpr_free(addresses);
|
48
|
-
}
|
34
|
+
DNSResolver* GetDNSResolver() { return g_dns_resolver; }
|
49
35
|
|
50
|
-
|
51
|
-
const char* name, const char* default_port,
|
52
|
-
grpc_resolved_addresses** addresses) {
|
53
|
-
return grpc_resolve_address_impl->blocking_resolve_address(name, default_port,
|
54
|
-
addresses);
|
55
|
-
}
|
36
|
+
} // namespace grpc_core
|