grpc 1.41.0 → 1.42.0.pre1
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 +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- 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/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -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/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +83 -70
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
@@ -24,8 +24,8 @@
|
|
24
24
|
#include "absl/time/time.h"
|
25
25
|
|
26
26
|
#include <grpc/event_engine/endpoint_config.h>
|
27
|
+
#include <grpc/event_engine/memory_allocator.h>
|
27
28
|
#include <grpc/event_engine/port.h>
|
28
|
-
#include <grpc/event_engine/slice_allocator.h>
|
29
29
|
|
30
30
|
// TODO(hork): Define the Endpoint::Write metrics collection system
|
31
31
|
namespace grpc_event_engine {
|
@@ -73,12 +73,27 @@ namespace experimental {
|
|
73
73
|
////////////////////////////////////////////////////////////////////////////////
|
74
74
|
class EventEngine {
|
75
75
|
public:
|
76
|
-
///
|
77
|
-
///
|
78
|
-
///
|
79
|
-
///
|
80
|
-
|
81
|
-
///
|
76
|
+
/// A custom closure type for EventEngine task execution.
|
77
|
+
///
|
78
|
+
/// Throughout the EventEngine API, \a Closure ownership is retained by the
|
79
|
+
/// caller - the EventEngine will never delete a Closure, and upon
|
80
|
+
/// cancellation, the EventEngine will simply forget the Closure exists. The
|
81
|
+
/// caller is responsible for all necessary cleanup.
|
82
|
+
class Closure {
|
83
|
+
public:
|
84
|
+
Closure() = default;
|
85
|
+
// Closure's are an interface, and thus non-copyable.
|
86
|
+
Closure(const Closure&) = delete;
|
87
|
+
Closure& operator=(const Closure&) = delete;
|
88
|
+
// Polymorphic type => virtual destructor
|
89
|
+
virtual ~Closure() = default;
|
90
|
+
// Run the contained code.
|
91
|
+
virtual void Run() = 0;
|
92
|
+
};
|
93
|
+
/// Represents a scheduled task.
|
94
|
+
///
|
95
|
+
/// \a TaskHandles are returned by \a Run* methods, and can be given to the
|
96
|
+
/// \a Cancel method.
|
82
97
|
struct TaskHandle {
|
83
98
|
intptr_t keys[2];
|
84
99
|
};
|
@@ -108,7 +123,7 @@ class EventEngine {
|
|
108
123
|
/// created when connections are established, and Endpoint operations are
|
109
124
|
/// gRPC's primary means of communication.
|
110
125
|
///
|
111
|
-
/// Endpoints must use the provided
|
126
|
+
/// Endpoints must use the provided MemoryAllocator for all data buffer memory
|
112
127
|
/// allocations. gRPC allows applications to set memory constraints per
|
113
128
|
/// Channel or Server, and the implementation depends on all dynamic memory
|
114
129
|
/// allocation being handled by the quota system.
|
@@ -134,7 +149,8 @@ class EventEngine {
|
|
134
149
|
/// For failed read operations, implementations should pass the appropriate
|
135
150
|
/// statuses to \a on_read. For example, callbacks might expect to receive
|
136
151
|
/// CANCELLED on endpoint shutdown.
|
137
|
-
virtual void Read(
|
152
|
+
virtual void Read(std::function<void(absl::Status)> on_read,
|
153
|
+
SliceBuffer* buffer) = 0;
|
138
154
|
/// Writes data out on the connection.
|
139
155
|
///
|
140
156
|
/// \a on_writable is called when the connection is ready for more data. The
|
@@ -153,7 +169,8 @@ class EventEngine {
|
|
153
169
|
/// For failed write operations, implementations should pass the appropriate
|
154
170
|
/// statuses to \a on_writable. For example, callbacks might expect to
|
155
171
|
/// receive CANCELLED on endpoint shutdown.
|
156
|
-
virtual void Write(
|
172
|
+
virtual void Write(std::function<void(absl::Status)> on_writable,
|
173
|
+
SliceBuffer* data) = 0;
|
157
174
|
/// Returns an address in the format described in DNSResolver. The returned
|
158
175
|
/// values are expected to remain valid for the life of the Endpoint.
|
159
176
|
virtual const ResolvedAddress& GetPeerAddress() const = 0;
|
@@ -175,7 +192,7 @@ class EventEngine {
|
|
175
192
|
public:
|
176
193
|
/// Called when the listener has accepted a new client connection.
|
177
194
|
using AcceptCallback = std::function<void(
|
178
|
-
std::unique_ptr<Endpoint>,
|
195
|
+
std::unique_ptr<Endpoint>, MemoryAllocator memory_allocator)>;
|
179
196
|
virtual ~Listener() = default;
|
180
197
|
/// Bind an address/port to this Listener.
|
181
198
|
///
|
@@ -198,12 +215,13 @@ class EventEngine {
|
|
198
215
|
/// exactly once, when the Listener is shut down. The status passed to it will
|
199
216
|
/// indicate if there was a problem during shutdown.
|
200
217
|
///
|
201
|
-
/// The provided \a
|
202
|
-
/// for Endpoint construction.
|
218
|
+
/// The provided \a MemoryAllocatorFactory is used to create \a
|
219
|
+
/// MemoryAllocators for Endpoint construction.
|
203
220
|
virtual absl::StatusOr<std::unique_ptr<Listener>> CreateListener(
|
204
|
-
Listener::AcceptCallback on_accept,
|
221
|
+
Listener::AcceptCallback on_accept,
|
222
|
+
std::function<void(absl::Status)> on_shutdown,
|
205
223
|
const EndpointConfig& config,
|
206
|
-
std::unique_ptr<
|
224
|
+
std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory) = 0;
|
207
225
|
/// Creates a client network connection to a remote network listener.
|
208
226
|
///
|
209
227
|
/// May return an error status immediately if there was a failure in the
|
@@ -212,15 +230,15 @@ class EventEngine {
|
|
212
230
|
/// expected that the \a on_connect callback will be asynchronously executed
|
213
231
|
/// exactly once by the EventEngine.
|
214
232
|
///
|
215
|
-
/// Implementation Note: it is important that the \a
|
233
|
+
/// Implementation Note: it is important that the \a memory_allocator be used
|
216
234
|
/// for all read/write buffer allocations in the EventEngine implementation.
|
217
235
|
/// This allows gRPC's \a ResourceQuota system to monitor and control memory
|
218
236
|
/// usage with graceful degradation mechanisms. Please see the \a
|
219
|
-
///
|
237
|
+
/// MemoryAllocator API for more information.
|
220
238
|
virtual absl::Status Connect(OnConnectCallback on_connect,
|
221
239
|
const ResolvedAddress& addr,
|
222
240
|
const EndpointConfig& args,
|
223
|
-
|
241
|
+
MemoryAllocator memory_allocator,
|
224
242
|
absl::Time deadline) = 0;
|
225
243
|
|
226
244
|
/// Provides asynchronous resolution.
|
@@ -257,8 +275,10 @@ class EventEngine {
|
|
257
275
|
/// When the lookup is complete, the \a on_resolve callback will be invoked
|
258
276
|
/// with a status indicating the success or failure of the lookup.
|
259
277
|
/// Implementations should pass the appropriate statuses to the callback.
|
260
|
-
/// For example, callbacks might expect to receive DEADLINE_EXCEEDED
|
261
|
-
///
|
278
|
+
/// For example, callbacks might expect to receive DEADLINE_EXCEEDED or
|
279
|
+
/// NOT_FOUND.
|
280
|
+
///
|
281
|
+
/// If cancelled, \a on_resolve will not be executed.
|
262
282
|
virtual LookupTaskHandle LookupHostname(LookupHostnameCallback on_resolve,
|
263
283
|
absl::string_view address,
|
264
284
|
absl::string_view default_port,
|
@@ -278,7 +298,11 @@ class EventEngine {
|
|
278
298
|
absl::string_view name,
|
279
299
|
absl::Time deadline) = 0;
|
280
300
|
/// Cancel an asynchronous lookup operation.
|
281
|
-
|
301
|
+
///
|
302
|
+
/// This shares the same semantics with \a EventEngine::Cancel: successfully
|
303
|
+
/// cancelled lookups will not have their callbacks executed, and this
|
304
|
+
/// method returns true.
|
305
|
+
virtual bool CancelLookup(LookupTaskHandle handle) = 0;
|
282
306
|
};
|
283
307
|
|
284
308
|
/// At time of destruction, the EventEngine must have no active
|
@@ -297,32 +321,48 @@ class EventEngine {
|
|
297
321
|
/// Creates and returns an instance of a DNSResolver.
|
298
322
|
virtual std::unique_ptr<DNSResolver> GetDNSResolver() = 0;
|
299
323
|
|
300
|
-
///
|
324
|
+
/// Asynchronously executes a task as soon as possible.
|
301
325
|
///
|
302
|
-
///
|
303
|
-
///
|
304
|
-
|
305
|
-
///
|
306
|
-
|
326
|
+
/// \a Closures scheduled with \a Run cannot be cancelled. The \a closure will
|
327
|
+
/// not be deleted after it has been run, ownership remains with the caller.
|
328
|
+
virtual void Run(Closure* closure) = 0;
|
329
|
+
/// Asynchronously executes a task as soon as possible.
|
330
|
+
///
|
331
|
+
/// \a Closures scheduled with \a Run cannot be cancelled. Unlike the
|
332
|
+
/// overloaded \a Closure alternative, the std::function version's \a closure
|
333
|
+
/// will be deleted by the EventEngine after the closure has been run.
|
334
|
+
///
|
335
|
+
/// This version of \a Run may be less performant than the \a Closure version
|
336
|
+
/// in some scenarios. This overload is useful in situations where performance
|
337
|
+
/// is not a critical concern.
|
338
|
+
virtual void Run(std::function<void()> closure) = 0;
|
307
339
|
/// Synonymous with scheduling an alarm to run at time \a when.
|
308
340
|
///
|
309
|
-
/// The
|
310
|
-
///
|
311
|
-
///
|
312
|
-
virtual TaskHandle RunAt(absl::Time when,
|
313
|
-
///
|
314
|
-
///
|
315
|
-
///
|
341
|
+
/// The \a closure will execute when time \a when arrives unless it has been
|
342
|
+
/// cancelled via the \a Cancel method. If cancelled, the closure will not be
|
343
|
+
/// run, nor will it be deleted. Ownership remains with the caller.
|
344
|
+
virtual TaskHandle RunAt(absl::Time when, Closure* closure) = 0;
|
345
|
+
/// Synonymous with scheduling an alarm to run at time \a when.
|
346
|
+
///
|
347
|
+
/// The \a closure will execute when time \a when arrives unless it has been
|
348
|
+
/// cancelled via the \a Cancel method. If cancelled, the closure will not be
|
349
|
+
/// run. Unilke the overloaded \a Closure alternative, the std::function
|
350
|
+
/// version's \a closure will be deleted by the EventEngine after the closure
|
351
|
+
/// has been run, or upon cancellation.
|
352
|
+
///
|
353
|
+
/// This version of \a RunAt may be less performant than the \a Closure
|
354
|
+
/// version in some scenarios. This overload is useful in situations where
|
355
|
+
/// performance is not a critical concern.
|
356
|
+
virtual TaskHandle RunAt(absl::Time when, std::function<void()> closure) = 0;
|
357
|
+
/// Request cancellation of a task.
|
316
358
|
///
|
317
|
-
///
|
318
|
-
///
|
319
|
-
/// 2. The callback has already run.
|
320
|
-
/// 3. We can't cancel it because it is "in flight".
|
359
|
+
/// If the associated closure has already been scheduled to run, it will not
|
360
|
+
/// be cancelled, and this function will return false.
|
321
361
|
///
|
322
|
-
///
|
323
|
-
///
|
324
|
-
///
|
325
|
-
virtual
|
362
|
+
/// If the associated callback has not been scheduled to run, it will be
|
363
|
+
/// cancelled, and the associated std::function or \a Closure* will not be
|
364
|
+
/// executed. In this case, Cancel will return true.
|
365
|
+
virtual bool Cancel(TaskHandle handle) = 0;
|
326
366
|
};
|
327
367
|
|
328
368
|
// TODO(hork): finalize the API and document it. We need to firm up the story
|
@@ -0,0 +1,98 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_EVENT_ENGINE_INTERNAL_MEMORY_ALLOCATOR_IMPL_H
|
15
|
+
#define GRPC_EVENT_ENGINE_INTERNAL_MEMORY_ALLOCATOR_IMPL_H
|
16
|
+
|
17
|
+
#include <grpc/impl/codegen/port_platform.h>
|
18
|
+
|
19
|
+
#include <algorithm>
|
20
|
+
#include <memory>
|
21
|
+
#include <type_traits>
|
22
|
+
#include <vector>
|
23
|
+
|
24
|
+
#include <grpc/slice.h>
|
25
|
+
|
26
|
+
// forward-declaring an internal struct, not used publicly.
|
27
|
+
struct grpc_slice_buffer;
|
28
|
+
|
29
|
+
namespace grpc_event_engine {
|
30
|
+
namespace experimental {
|
31
|
+
|
32
|
+
/// Reservation request - how much memory do we want to allocate?
|
33
|
+
class MemoryRequest {
|
34
|
+
public:
|
35
|
+
/// Request a fixed amount of memory.
|
36
|
+
// NOLINTNEXTLINE(google-explicit-constructor)
|
37
|
+
MemoryRequest(size_t n) : min_(n), max_(n) {}
|
38
|
+
/// Request a range of memory.
|
39
|
+
/// Requires: \a min <= \a max.
|
40
|
+
/// Requires: \a max <= max_size()
|
41
|
+
MemoryRequest(size_t min, size_t max) : min_(min), max_(max) {}
|
42
|
+
|
43
|
+
/// Maximum allowable request size - hard coded to 1GB.
|
44
|
+
static constexpr size_t max_allowed_size() { return 1024 * 1024 * 1024; }
|
45
|
+
|
46
|
+
/// Increase the size by \a amount.
|
47
|
+
/// Undefined behavior if min() + amount or max() + amount overflows.
|
48
|
+
MemoryRequest Increase(size_t amount) const {
|
49
|
+
return MemoryRequest(min_ + amount, max_ + amount);
|
50
|
+
}
|
51
|
+
|
52
|
+
size_t min() const { return min_; }
|
53
|
+
size_t max() const { return max_; }
|
54
|
+
|
55
|
+
private:
|
56
|
+
size_t min_;
|
57
|
+
size_t max_;
|
58
|
+
};
|
59
|
+
|
60
|
+
namespace internal {
|
61
|
+
|
62
|
+
/// Underlying memory allocation interface.
|
63
|
+
/// This is an internal interface, not intended to be used by users.
|
64
|
+
/// Its interface is subject to change at any time.
|
65
|
+
class MemoryAllocatorImpl
|
66
|
+
: public std::enable_shared_from_this<MemoryAllocatorImpl> {
|
67
|
+
public:
|
68
|
+
MemoryAllocatorImpl() {}
|
69
|
+
virtual ~MemoryAllocatorImpl() {}
|
70
|
+
|
71
|
+
MemoryAllocatorImpl(const MemoryAllocatorImpl&) = delete;
|
72
|
+
MemoryAllocatorImpl& operator=(const MemoryAllocatorImpl&) = delete;
|
73
|
+
|
74
|
+
/// Reserve bytes from the quota.
|
75
|
+
/// If we enter overcommit, reclamation will begin concurrently.
|
76
|
+
/// Returns the number of bytes reserved.
|
77
|
+
/// If MemoryRequest is invalid, this function will abort.
|
78
|
+
/// If MemoryRequest is valid, this function is infallible, and will always
|
79
|
+
/// succeed at reserving the some number of bytes between request.min() and
|
80
|
+
/// request.max() inclusively.
|
81
|
+
virtual size_t Reserve(MemoryRequest request) = 0;
|
82
|
+
|
83
|
+
/// Release some bytes that were previously reserved.
|
84
|
+
/// If more bytes are released than were reserved, we will have undefined
|
85
|
+
/// behavior.
|
86
|
+
virtual void Release(size_t n) = 0;
|
87
|
+
|
88
|
+
/// Shutdown this allocator.
|
89
|
+
/// Further usage of Reserve() is undefined behavior.
|
90
|
+
virtual void Shutdown() = 0;
|
91
|
+
};
|
92
|
+
|
93
|
+
} // namespace internal
|
94
|
+
|
95
|
+
} // namespace experimental
|
96
|
+
} // namespace grpc_event_engine
|
97
|
+
|
98
|
+
#endif // GRPC_EVENT_ENGINE_INTERNAL_MEMORY_ALLOCATOR_IMPL_H
|
@@ -0,0 +1,210 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_EVENT_ENGINE_MEMORY_ALLOCATOR_H
|
15
|
+
#define GRPC_EVENT_ENGINE_MEMORY_ALLOCATOR_H
|
16
|
+
|
17
|
+
#include <grpc/impl/codegen/port_platform.h>
|
18
|
+
|
19
|
+
#include <algorithm>
|
20
|
+
#include <memory>
|
21
|
+
#include <type_traits>
|
22
|
+
#include <vector>
|
23
|
+
|
24
|
+
#include <grpc/event_engine/internal/memory_allocator_impl.h>
|
25
|
+
#include <grpc/slice.h>
|
26
|
+
|
27
|
+
// forward-declaring an internal struct, not used publicly.
|
28
|
+
struct grpc_slice_buffer;
|
29
|
+
|
30
|
+
namespace grpc_event_engine {
|
31
|
+
namespace experimental {
|
32
|
+
|
33
|
+
// TODO(nnoble): needs implementation
|
34
|
+
class SliceBuffer {
|
35
|
+
public:
|
36
|
+
SliceBuffer() { abort(); }
|
37
|
+
explicit SliceBuffer(grpc_slice_buffer*) { abort(); }
|
38
|
+
|
39
|
+
grpc_slice_buffer* RawSliceBuffer() { return slice_buffer_; }
|
40
|
+
|
41
|
+
private:
|
42
|
+
grpc_slice_buffer* slice_buffer_;
|
43
|
+
};
|
44
|
+
|
45
|
+
class MemoryAllocator {
|
46
|
+
public:
|
47
|
+
/// Construct a MemoryAllocator given an internal::MemoryAllocatorImpl
|
48
|
+
/// implementation. The constructed MemoryAllocator will call
|
49
|
+
/// MemoryAllocatorImpl::Shutdown() upon destruction.
|
50
|
+
explicit MemoryAllocator(
|
51
|
+
std::shared_ptr<internal::MemoryAllocatorImpl> allocator)
|
52
|
+
: allocator_(std::move(allocator)) {}
|
53
|
+
~MemoryAllocator() {
|
54
|
+
if (allocator_ != nullptr) allocator_->Shutdown();
|
55
|
+
}
|
56
|
+
|
57
|
+
MemoryAllocator(const MemoryAllocator&) = delete;
|
58
|
+
MemoryAllocator& operator=(const MemoryAllocator&) = delete;
|
59
|
+
|
60
|
+
MemoryAllocator(MemoryAllocator&&) = default;
|
61
|
+
MemoryAllocator& operator=(MemoryAllocator&&) = default;
|
62
|
+
|
63
|
+
/// Reserve bytes from the quota.
|
64
|
+
/// If we enter overcommit, reclamation will begin concurrently.
|
65
|
+
/// Returns the number of bytes reserved.
|
66
|
+
size_t Reserve(MemoryRequest request) { return allocator_->Reserve(request); }
|
67
|
+
|
68
|
+
/// Release some bytes that were previously reserved.
|
69
|
+
void Release(size_t n) { return allocator_->Release(n); }
|
70
|
+
|
71
|
+
/// Return a pointer to the underlying implementation.
|
72
|
+
/// Note that the interface of said implementatoin is unstable and likely to
|
73
|
+
/// change at any time.
|
74
|
+
internal::MemoryAllocatorImpl* get_internal_impl_ptr() {
|
75
|
+
return allocator_.get();
|
76
|
+
}
|
77
|
+
|
78
|
+
//
|
79
|
+
// The remainder of this type are helper functions implemented in terms of
|
80
|
+
// Reserve/Release.
|
81
|
+
//
|
82
|
+
|
83
|
+
/// An automatic releasing reservation of memory.
|
84
|
+
class Reservation {
|
85
|
+
public:
|
86
|
+
Reservation() = default;
|
87
|
+
Reservation(const Reservation&) = delete;
|
88
|
+
Reservation& operator=(const Reservation&) = delete;
|
89
|
+
Reservation(Reservation&&) = default;
|
90
|
+
Reservation& operator=(Reservation&&) = default;
|
91
|
+
~Reservation() {
|
92
|
+
if (allocator_ != nullptr) allocator_->Release(size_);
|
93
|
+
}
|
94
|
+
|
95
|
+
private:
|
96
|
+
friend class MemoryAllocator;
|
97
|
+
Reservation(std::shared_ptr<internal::MemoryAllocatorImpl> allocator,
|
98
|
+
size_t size)
|
99
|
+
: allocator_(std::move(allocator)), size_(size) {}
|
100
|
+
|
101
|
+
std::shared_ptr<internal::MemoryAllocatorImpl> allocator_;
|
102
|
+
size_t size_ = 0;
|
103
|
+
};
|
104
|
+
|
105
|
+
/// Reserve bytes from the quota and automatically release them when
|
106
|
+
/// Reservation is destroyed.
|
107
|
+
Reservation MakeReservation(MemoryRequest request) {
|
108
|
+
return Reservation(allocator_, Reserve(request));
|
109
|
+
}
|
110
|
+
|
111
|
+
/// Allocate a new object of type T, with constructor arguments.
|
112
|
+
/// The returned type is wrapped, and upon destruction the reserved memory
|
113
|
+
/// will be released to the allocator automatically. As such, T must have a
|
114
|
+
/// virtual destructor so we can insert the necessary hook.
|
115
|
+
template <typename T, typename... Args>
|
116
|
+
typename std::enable_if<std::has_virtual_destructor<T>::value, T*>::type New(
|
117
|
+
Args&&... args) {
|
118
|
+
// Wrap T such that when it's destroyed, we can release memory back to the
|
119
|
+
// allocator.
|
120
|
+
class Wrapper final : public T {
|
121
|
+
public:
|
122
|
+
explicit Wrapper(std::shared_ptr<internal::MemoryAllocatorImpl> allocator,
|
123
|
+
Args&&... args)
|
124
|
+
: T(std::forward<Args>(args)...), allocator_(std::move(allocator)) {}
|
125
|
+
~Wrapper() override { allocator_->Release(sizeof(*this)); }
|
126
|
+
|
127
|
+
private:
|
128
|
+
const std::shared_ptr<internal::MemoryAllocatorImpl> allocator_;
|
129
|
+
};
|
130
|
+
Reserve(sizeof(Wrapper));
|
131
|
+
return new Wrapper(allocator_, std::forward<Args>(args)...);
|
132
|
+
}
|
133
|
+
|
134
|
+
/// Construct a unique_ptr immediately.
|
135
|
+
template <typename T, typename... Args>
|
136
|
+
std::unique_ptr<T> MakeUnique(Args&&... args) {
|
137
|
+
return std::unique_ptr<T>(New<T>(std::forward<Args>(args)...));
|
138
|
+
}
|
139
|
+
|
140
|
+
/// Allocate a slice, using MemoryRequest to size the number of returned
|
141
|
+
/// bytes. For a variable length request, check the returned slice length to
|
142
|
+
/// verify how much memory was allocated. Takes care of reserving memory for
|
143
|
+
/// any relevant control structures also.
|
144
|
+
grpc_slice MakeSlice(MemoryRequest request);
|
145
|
+
|
146
|
+
/// A C++ allocator for containers of T.
|
147
|
+
template <typename T>
|
148
|
+
class Container {
|
149
|
+
public:
|
150
|
+
using value_type = T;
|
151
|
+
|
152
|
+
/// Construct the allocator: \a underlying_allocator is borrowed, and must
|
153
|
+
/// outlive this object.
|
154
|
+
explicit Container(MemoryAllocator* underlying_allocator)
|
155
|
+
: underlying_allocator_(underlying_allocator) {}
|
156
|
+
template <typename U>
|
157
|
+
explicit Container(const Container<U>& other)
|
158
|
+
: underlying_allocator_(other.underlying_allocator()) {}
|
159
|
+
|
160
|
+
MemoryAllocator* underlying_allocator() const {
|
161
|
+
return underlying_allocator_;
|
162
|
+
}
|
163
|
+
|
164
|
+
T* allocate(size_t n) {
|
165
|
+
underlying_allocator_->Reserve(n * sizeof(T));
|
166
|
+
return static_cast<T*>(::operator new(n * sizeof(T)));
|
167
|
+
}
|
168
|
+
void deallocate(T* p, size_t n) {
|
169
|
+
::operator delete(p);
|
170
|
+
underlying_allocator_->Release(n * sizeof(T));
|
171
|
+
}
|
172
|
+
|
173
|
+
private:
|
174
|
+
MemoryAllocator* underlying_allocator_;
|
175
|
+
};
|
176
|
+
|
177
|
+
protected:
|
178
|
+
const std::shared_ptr<internal::MemoryAllocatorImpl>& allocator() {
|
179
|
+
return allocator_;
|
180
|
+
}
|
181
|
+
|
182
|
+
private:
|
183
|
+
std::shared_ptr<internal::MemoryAllocatorImpl> allocator_;
|
184
|
+
};
|
185
|
+
|
186
|
+
// Wrapper type around std::vector to make initialization against a
|
187
|
+
// MemoryAllocator based container allocator easy.
|
188
|
+
template <typename T>
|
189
|
+
class Vector : public std::vector<T, MemoryAllocator::Container<T>> {
|
190
|
+
public:
|
191
|
+
explicit Vector(MemoryAllocator* allocator)
|
192
|
+
: std::vector<T, MemoryAllocator::Container<T>>(
|
193
|
+
MemoryAllocator::Container<T>(allocator)) {}
|
194
|
+
};
|
195
|
+
|
196
|
+
class MemoryAllocatorFactory {
|
197
|
+
public:
|
198
|
+
virtual ~MemoryAllocatorFactory() = default;
|
199
|
+
/// On Endpoint creation, call \a CreateMemoryAllocator to create a new
|
200
|
+
/// allocator for the endpoint.
|
201
|
+
/// Typically we'll want to:
|
202
|
+
/// auto allocator = factory->CreateMemoryAllocator();
|
203
|
+
/// auto* endpoint = allocator->New<MyEndpoint>(std::move(allocator), ...);
|
204
|
+
virtual MemoryAllocator CreateMemoryAllocator() = 0;
|
205
|
+
};
|
206
|
+
|
207
|
+
} // namespace experimental
|
208
|
+
} // namespace grpc_event_engine
|
209
|
+
|
210
|
+
#endif // GRPC_EVENT_ENGINE_MEMORY_ALLOCATOR_H
|
data/include/grpc/grpc.h
CHANGED
@@ -340,6 +340,10 @@ GRPCAPI grpc_call_error grpc_call_cancel_with_status(grpc_call* call,
|
|
340
340
|
const char* description,
|
341
341
|
void* reserved);
|
342
342
|
|
343
|
+
/* Returns whether or not the call's receive message operation failed because of
|
344
|
+
* an error (as opposed to a graceful end-of-stream) */
|
345
|
+
GRPCAPI int grpc_call_failed_before_recv_message(const grpc_call* c);
|
346
|
+
|
343
347
|
/** Ref a call.
|
344
348
|
THREAD SAFETY: grpc_call_ref is thread-compatible */
|
345
349
|
GRPCAPI void grpc_call_ref(grpc_call* call);
|
@@ -1109,6 +1109,24 @@ grpc_authorization_policy_provider_static_data_create(
|
|
1109
1109
|
const char* authz_policy, grpc_status_code* code,
|
1110
1110
|
const char** error_details);
|
1111
1111
|
|
1112
|
+
/**
|
1113
|
+
* EXPERIMENTAL - Subject to change.
|
1114
|
+
* Creates a grpc_authorization_policy_provider by watching for SDK
|
1115
|
+
* authorization policy changes in filesystem.
|
1116
|
+
* - authz_policy is the file path of SDK authorization policy.
|
1117
|
+
* - refresh_interval_sec is the amount of time the internal thread would wait
|
1118
|
+
* before checking for file updates.
|
1119
|
+
* - code is the error status code on failure. On success, it equals
|
1120
|
+
* GRPC_STATUS_OK.
|
1121
|
+
* - error_details contains details about the error if any. If the
|
1122
|
+
* initialization is successful, it will be null. Caller must use gpr_free to
|
1123
|
+
* destroy this string.
|
1124
|
+
*/
|
1125
|
+
GRPCAPI grpc_authorization_policy_provider*
|
1126
|
+
grpc_authorization_policy_provider_file_watcher_create(
|
1127
|
+
const char* authz_policy_path, unsigned int refresh_interval_sec,
|
1128
|
+
grpc_status_code* code, const char** error_details);
|
1129
|
+
|
1112
1130
|
/**
|
1113
1131
|
* EXPERIMENTAL - Subject to change.
|
1114
1132
|
* Releases grpc_authorization_policy_provider object. The creator of
|
@@ -25,6 +25,7 @@ extern "C" {
|
|
25
25
|
|
26
26
|
#define GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME "transport_security_type"
|
27
27
|
#define GRPC_SSL_TRANSPORT_SECURITY_TYPE "ssl"
|
28
|
+
#define GRPC_TLS_TRANSPORT_SECURITY_TYPE "tls"
|
28
29
|
|
29
30
|
#define GRPC_X509_CN_PROPERTY_NAME "x509_common_name"
|
30
31
|
#define GRPC_X509_SAN_PROPERTY_NAME "x509_subject_alternative_name"
|
@@ -186,7 +186,14 @@
|
|
186
186
|
#endif /* _LP64 */
|
187
187
|
#ifdef __GLIBC__
|
188
188
|
#define GPR_POSIX_CRASH_HANDLER 1
|
189
|
+
#ifdef __GLIBC_PREREQ
|
190
|
+
#if __GLIBC_PREREQ(2, 12)
|
189
191
|
#define GPR_LINUX_PTHREAD_NAME 1
|
192
|
+
#endif
|
193
|
+
#else
|
194
|
+
// musl libc & others
|
195
|
+
#define GPR_LINUX_PTHREAD_NAME 1
|
196
|
+
#endif
|
190
197
|
#include <linux/version.h>
|
191
198
|
#else /* musl libc */
|
192
199
|
#define GPR_MUSL_LIBC_COMPAT 1
|
@@ -19,8 +19,8 @@
|
|
19
19
|
#include "src/core/ext/filters/client_channel/backend_metric.h"
|
20
20
|
|
21
21
|
#include "absl/strings/string_view.h"
|
22
|
-
#include "udpa/data/orca/v1/orca_load_report.upb.h"
|
23
22
|
#include "upb/upb.hpp"
|
23
|
+
#include "xds/data/orca/v3/orca_load_report.upb.h"
|
24
24
|
|
25
25
|
namespace grpc_core {
|
26
26
|
|
@@ -28,8 +28,8 @@ namespace {
|
|
28
28
|
|
29
29
|
template <typename EntryType>
|
30
30
|
std::map<absl::string_view, double> ParseMap(
|
31
|
-
|
32
|
-
const EntryType* (*entry_func)(const
|
31
|
+
xds_data_orca_v3_OrcaLoadReport* msg,
|
32
|
+
const EntryType* (*entry_func)(const xds_data_orca_v3_OrcaLoadReport*,
|
33
33
|
size_t*),
|
34
34
|
upb_strview (*key_func)(const EntryType*),
|
35
35
|
double (*value_func)(const EntryType*), Arena* arena) {
|
@@ -51,30 +51,29 @@ std::map<absl::string_view, double> ParseMap(
|
|
51
51
|
const LoadBalancingPolicy::BackendMetricData* ParseBackendMetricData(
|
52
52
|
const grpc_slice& serialized_load_report, Arena* arena) {
|
53
53
|
upb::Arena upb_arena;
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
GRPC_SLICE_LENGTH(serialized_load_report), upb_arena.ptr());
|
54
|
+
xds_data_orca_v3_OrcaLoadReport* msg = xds_data_orca_v3_OrcaLoadReport_parse(
|
55
|
+
reinterpret_cast<const char*>(
|
56
|
+
GRPC_SLICE_START_PTR(serialized_load_report)),
|
57
|
+
GRPC_SLICE_LENGTH(serialized_load_report), upb_arena.ptr());
|
59
58
|
if (msg == nullptr) return nullptr;
|
60
59
|
LoadBalancingPolicy::BackendMetricData* backend_metric_data =
|
61
60
|
arena->New<LoadBalancingPolicy::BackendMetricData>();
|
62
61
|
backend_metric_data->cpu_utilization =
|
63
|
-
|
62
|
+
xds_data_orca_v3_OrcaLoadReport_cpu_utilization(msg);
|
64
63
|
backend_metric_data->mem_utilization =
|
65
|
-
|
64
|
+
xds_data_orca_v3_OrcaLoadReport_mem_utilization(msg);
|
66
65
|
backend_metric_data->requests_per_second =
|
67
|
-
|
66
|
+
xds_data_orca_v3_OrcaLoadReport_rps(msg);
|
68
67
|
backend_metric_data->request_cost =
|
69
|
-
ParseMap<
|
70
|
-
msg,
|
71
|
-
|
72
|
-
|
68
|
+
ParseMap<xds_data_orca_v3_OrcaLoadReport_RequestCostEntry>(
|
69
|
+
msg, xds_data_orca_v3_OrcaLoadReport_request_cost_next,
|
70
|
+
xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_key,
|
71
|
+
xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_value, arena);
|
73
72
|
backend_metric_data->utilization =
|
74
|
-
ParseMap<
|
75
|
-
msg,
|
76
|
-
|
77
|
-
|
73
|
+
ParseMap<xds_data_orca_v3_OrcaLoadReport_UtilizationEntry>(
|
74
|
+
msg, xds_data_orca_v3_OrcaLoadReport_utilization_next,
|
75
|
+
xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_key,
|
76
|
+
xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_value, arena);
|
78
77
|
return backend_metric_data;
|
79
78
|
}
|
80
79
|
|