grpc 1.46.3-x86_64-linux → 1.47.0-x86_64-linux
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 +49 -97
- data/include/grpc/event_engine/event_engine.h +42 -7
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +112 -0
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +100 -36
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +18 -30
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +4 -1
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -5
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
- data/src/core/ext/filters/client_channel/client_channel.cc +60 -17
- data/src/core/ext/filters/client_channel/client_channel.h +26 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +7 -5
- data/src/core/ext/filters/client_channel/connector.h +8 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +9 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +60 -52
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -60
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +157 -96
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +45 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +30 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +99 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +23 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +75 -11
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +23 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +134 -43
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +30 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +59 -13
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +13 -1
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +89 -33
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +42 -2
- data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +156 -160
- data/src/core/ext/filters/client_channel/subchannel.h +80 -20
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +12 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +7 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +5 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +7 -8
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +80 -247
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +101 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -15
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +69 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +12 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +27 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +38 -2
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -2
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -1
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +46 -22
- data/src/core/ext/xds/xds_cluster.cc +106 -16
- data/src/core/ext/xds/xds_cluster.h +3 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +3 -3
- data/src/core/ext/xds/xds_listener.cc +19 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +2 -1
- data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
- data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
- data/src/core/lib/avl/avl.h +3 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +8 -2
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +33 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +49 -3
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +15 -27
- data/src/core/lib/channel/channel_stack_builder_impl.cc +36 -41
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -6
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +8 -13
- data/src/core/lib/channel/channelz.h +13 -4
- data/src/core/lib/channel/channelz_registry.cc +7 -14
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +21 -31
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +444 -189
- data/src/core/lib/channel/promise_based_filter.h +160 -27
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression_internal.cc +45 -10
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +12 -2
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/tls.h +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +8 -4
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +6 -1
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +29 -0
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +88 -81
- data/src/core/lib/http/httpcli.h +39 -7
- data/src/core/lib/http/httpcli_security_connector.cc +3 -4
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +6 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/ev_posix.cc +1 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +0 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +8 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +10 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +12 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +9 -27
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
- data/src/core/lib/iomgr/tcp_windows.cc +7 -4
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +10 -1
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +4 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/latch.h +0 -1
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +2 -0
- data/src/core/lib/promise/sleep.h +10 -0
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver_factory.h +1 -2
- data/src/core/lib/resolver/server_address.cc +9 -3
- data/src/core/lib/resolver/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +47 -5
- data/src/core/lib/resource_quota/memory_quota.h +24 -5
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -4
- data/src/core/lib/security/credentials/credentials.h +17 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +13 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -15
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +8 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +8 -2
- data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +26 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +28 -4
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +10 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +12 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -5
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +6 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +23 -12
- data/src/core/lib/security/transport/security_handshaker.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +4 -1
- data/src/core/lib/service_config/service_config_impl.cc +7 -0
- data/src/core/lib/service_config/service_config_impl.h +9 -2
- data/src/core/lib/service_config/service_config_parser.cc +8 -0
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +50 -23
- data/src/core/lib/slice/slice_buffer.h +106 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_split.cc +3 -0
- data/src/core/lib/slice/slice_split.h +0 -4
- data/src/core/lib/slice/slice_string_helpers.cc +4 -0
- data/src/core/lib/slice/slice_string_helpers.h +1 -4
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +41 -26
- data/src/core/lib/surface/call.h +16 -2
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +179 -242
- data/src/core/lib/surface/channel.h +94 -57
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +14 -6
- data/src/core/lib/surface/completion_queue.h +5 -1
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -45
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +64 -110
- data/src/core/lib/surface/lame_client.h +40 -2
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +69 -56
- data/src/core/lib/surface/server.h +39 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -5
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/byte_stream.cc +4 -3
- data/src/core/lib/transport/byte_stream.h +5 -1
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +4 -2
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +24 -10
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +133 -264
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -17
- data/src/core/lib/transport/transport.h +28 -2
- data/src/core/lib/transport/transport_impl.h +10 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -10
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +2 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- metadata +36 -29
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/promise.h +0 -51
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
@@ -0,0 +1,286 @@
|
|
1
|
+
// Copyright 2022 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
|
+
|
15
|
+
#ifndef GRPC_EVENT_ENGINE_SLICE_H
|
16
|
+
#define GRPC_EVENT_ENGINE_SLICE_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <string.h>
|
21
|
+
|
22
|
+
#include <cstdint>
|
23
|
+
#include <string>
|
24
|
+
#include <utility>
|
25
|
+
|
26
|
+
#include "absl/strings/string_view.h"
|
27
|
+
|
28
|
+
#include <grpc/slice.h>
|
29
|
+
#include <grpc/support/log.h>
|
30
|
+
|
31
|
+
// This public slice definition largely based of the internal grpc_core::Slice
|
32
|
+
// implementation. Changes to this implementation might warrant changes to the
|
33
|
+
// internal grpc_core::Slice type as well.
|
34
|
+
|
35
|
+
namespace grpc_event_engine {
|
36
|
+
namespace experimental {
|
37
|
+
|
38
|
+
// Forward declarations
|
39
|
+
class Slice;
|
40
|
+
class MutableSlice;
|
41
|
+
|
42
|
+
namespace slice_detail {
|
43
|
+
|
44
|
+
// Returns an empty slice.
|
45
|
+
static constexpr grpc_slice EmptySlice() { return {nullptr, {}}; }
|
46
|
+
|
47
|
+
// BaseSlice holds the grpc_slice object, but does not apply refcounting policy.
|
48
|
+
// It does export immutable access into the slice, such that this can be shared
|
49
|
+
// by all storage policies.
|
50
|
+
class BaseSlice {
|
51
|
+
public:
|
52
|
+
BaseSlice(const BaseSlice&) = delete;
|
53
|
+
BaseSlice& operator=(const BaseSlice&) = delete;
|
54
|
+
BaseSlice(BaseSlice&& other) = delete;
|
55
|
+
BaseSlice& operator=(BaseSlice&& other) = delete;
|
56
|
+
|
57
|
+
// Iterator access to the underlying bytes
|
58
|
+
const uint8_t* begin() const { return GRPC_SLICE_START_PTR(c_slice()); }
|
59
|
+
const uint8_t* end() const { return GRPC_SLICE_END_PTR(c_slice()); }
|
60
|
+
const uint8_t* cbegin() const { return GRPC_SLICE_START_PTR(c_slice()); }
|
61
|
+
const uint8_t* cend() const { return GRPC_SLICE_END_PTR(c_slice()); }
|
62
|
+
|
63
|
+
// Retrieve a borrowed reference to the underlying grpc_slice.
|
64
|
+
const grpc_slice& c_slice() const { return slice_; }
|
65
|
+
|
66
|
+
// Retrieve the underlying grpc_slice, and replace the one in this object with
|
67
|
+
// EmptySlice().
|
68
|
+
grpc_slice TakeCSlice() {
|
69
|
+
grpc_slice out = slice_;
|
70
|
+
slice_ = EmptySlice();
|
71
|
+
return out;
|
72
|
+
}
|
73
|
+
|
74
|
+
// As other things... borrowed references.
|
75
|
+
absl::string_view as_string_view() const {
|
76
|
+
return absl::string_view(reinterpret_cast<const char*>(data()), size());
|
77
|
+
}
|
78
|
+
|
79
|
+
// Array access
|
80
|
+
uint8_t operator[](size_t i) const {
|
81
|
+
return GRPC_SLICE_START_PTR(c_slice())[i];
|
82
|
+
}
|
83
|
+
|
84
|
+
// Access underlying data
|
85
|
+
const uint8_t* data() const { return GRPC_SLICE_START_PTR(c_slice()); }
|
86
|
+
|
87
|
+
// Size of the slice
|
88
|
+
size_t size() const { return GRPC_SLICE_LENGTH(c_slice()); }
|
89
|
+
size_t length() const { return size(); }
|
90
|
+
bool empty() const { return size() == 0; }
|
91
|
+
|
92
|
+
// For inlined slices - are these two slices equal?
|
93
|
+
// For non-inlined slices - do these two slices refer to the same block of
|
94
|
+
// memory?
|
95
|
+
bool is_equivalent(const BaseSlice& other) const {
|
96
|
+
return grpc_slice_is_equivalent(slice_, other.slice_);
|
97
|
+
}
|
98
|
+
|
99
|
+
uint32_t Hash() const;
|
100
|
+
|
101
|
+
protected:
|
102
|
+
BaseSlice() : slice_(EmptySlice()) {}
|
103
|
+
explicit BaseSlice(const grpc_slice& slice) : slice_(slice) {}
|
104
|
+
~BaseSlice() = default;
|
105
|
+
|
106
|
+
void Swap(BaseSlice* other) { std::swap(slice_, other->slice_); }
|
107
|
+
void SetCSlice(const grpc_slice& slice) { slice_ = slice; }
|
108
|
+
|
109
|
+
uint8_t* mutable_data() { return GRPC_SLICE_START_PTR(slice_); }
|
110
|
+
|
111
|
+
grpc_slice* c_slice_ptr() { return &slice_; }
|
112
|
+
|
113
|
+
private:
|
114
|
+
grpc_slice slice_;
|
115
|
+
};
|
116
|
+
|
117
|
+
inline bool operator==(const BaseSlice& a, const BaseSlice& b) {
|
118
|
+
return grpc_slice_eq(a.c_slice(), b.c_slice()) != 0;
|
119
|
+
}
|
120
|
+
|
121
|
+
inline bool operator!=(const BaseSlice& a, const BaseSlice& b) {
|
122
|
+
return grpc_slice_eq(a.c_slice(), b.c_slice()) == 0;
|
123
|
+
}
|
124
|
+
|
125
|
+
inline bool operator==(const BaseSlice& a, absl::string_view b) {
|
126
|
+
return a.as_string_view() == b;
|
127
|
+
}
|
128
|
+
|
129
|
+
inline bool operator!=(const BaseSlice& a, absl::string_view b) {
|
130
|
+
return a.as_string_view() != b;
|
131
|
+
}
|
132
|
+
|
133
|
+
inline bool operator==(absl::string_view a, const BaseSlice& b) {
|
134
|
+
return a == b.as_string_view();
|
135
|
+
}
|
136
|
+
|
137
|
+
inline bool operator!=(absl::string_view a, const BaseSlice& b) {
|
138
|
+
return a != b.as_string_view();
|
139
|
+
}
|
140
|
+
|
141
|
+
inline bool operator==(const BaseSlice& a, const grpc_slice& b) {
|
142
|
+
return grpc_slice_eq(a.c_slice(), b) != 0;
|
143
|
+
}
|
144
|
+
|
145
|
+
inline bool operator!=(const BaseSlice& a, const grpc_slice& b) {
|
146
|
+
return grpc_slice_eq(a.c_slice(), b) == 0;
|
147
|
+
}
|
148
|
+
|
149
|
+
inline bool operator==(const grpc_slice& a, const BaseSlice& b) {
|
150
|
+
return grpc_slice_eq(a, b.c_slice()) != 0;
|
151
|
+
}
|
152
|
+
|
153
|
+
inline bool operator!=(const grpc_slice& a, const BaseSlice& b) {
|
154
|
+
return grpc_slice_eq(a, b.c_slice()) == 0;
|
155
|
+
}
|
156
|
+
|
157
|
+
template <typename Out>
|
158
|
+
struct CopyConstructors {
|
159
|
+
static Out FromCopiedString(const char* s) {
|
160
|
+
return FromCopiedBuffer(s, strlen(s));
|
161
|
+
}
|
162
|
+
static Out FromCopiedString(absl::string_view s) {
|
163
|
+
return FromCopiedBuffer(s.data(), s.size());
|
164
|
+
}
|
165
|
+
static Out FromCopiedString(std::string s);
|
166
|
+
|
167
|
+
static Out FromCopiedBuffer(const char* p, size_t len) {
|
168
|
+
return Out(grpc_slice_from_copied_buffer(p, len));
|
169
|
+
}
|
170
|
+
|
171
|
+
template <typename Buffer>
|
172
|
+
static Out FromCopiedBuffer(const Buffer& buffer) {
|
173
|
+
return FromCopiedBuffer(reinterpret_cast<const char*>(buffer.data()),
|
174
|
+
buffer.size());
|
175
|
+
}
|
176
|
+
};
|
177
|
+
|
178
|
+
} // namespace slice_detail
|
179
|
+
|
180
|
+
class MutableSlice : public slice_detail::BaseSlice,
|
181
|
+
public slice_detail::CopyConstructors<MutableSlice> {
|
182
|
+
public:
|
183
|
+
MutableSlice() = default;
|
184
|
+
explicit MutableSlice(const grpc_slice& slice);
|
185
|
+
~MutableSlice();
|
186
|
+
|
187
|
+
MutableSlice(const MutableSlice&) = delete;
|
188
|
+
MutableSlice& operator=(const MutableSlice&) = delete;
|
189
|
+
MutableSlice(MutableSlice&& other) noexcept
|
190
|
+
: slice_detail::BaseSlice(other.TakeCSlice()) {}
|
191
|
+
MutableSlice& operator=(MutableSlice&& other) noexcept {
|
192
|
+
Swap(&other);
|
193
|
+
return *this;
|
194
|
+
}
|
195
|
+
|
196
|
+
static MutableSlice CreateUninitialized(size_t length) {
|
197
|
+
return MutableSlice(grpc_slice_malloc(length));
|
198
|
+
}
|
199
|
+
|
200
|
+
// Return a sub slice of this one. Leaves this slice in an indeterminate but
|
201
|
+
// valid state.
|
202
|
+
MutableSlice TakeSubSlice(size_t pos, size_t n) {
|
203
|
+
return MutableSlice(grpc_slice_sub_no_ref(TakeCSlice(), pos, pos + n));
|
204
|
+
}
|
205
|
+
|
206
|
+
// Iterator access to the underlying bytes
|
207
|
+
uint8_t* begin() { return mutable_data(); }
|
208
|
+
uint8_t* end() { return mutable_data() + size(); }
|
209
|
+
uint8_t* data() { return mutable_data(); }
|
210
|
+
|
211
|
+
// Array access
|
212
|
+
uint8_t& operator[](size_t i) { return mutable_data()[i]; }
|
213
|
+
};
|
214
|
+
|
215
|
+
class Slice : public slice_detail::BaseSlice,
|
216
|
+
public slice_detail::CopyConstructors<Slice> {
|
217
|
+
public:
|
218
|
+
Slice() = default;
|
219
|
+
~Slice();
|
220
|
+
explicit Slice(const grpc_slice& slice) : slice_detail::BaseSlice(slice) {}
|
221
|
+
explicit Slice(slice_detail::BaseSlice&& other)
|
222
|
+
: slice_detail::BaseSlice(other.TakeCSlice()) {}
|
223
|
+
|
224
|
+
Slice(const Slice&) = delete;
|
225
|
+
Slice& operator=(const Slice&) = delete;
|
226
|
+
Slice(Slice&& other) noexcept : slice_detail::BaseSlice(other.TakeCSlice()) {}
|
227
|
+
Slice& operator=(Slice&& other) noexcept {
|
228
|
+
Swap(&other);
|
229
|
+
return *this;
|
230
|
+
}
|
231
|
+
|
232
|
+
// A slice might refer to some memory that we keep a refcount to (this is
|
233
|
+
// owned), or some memory that's inlined into the slice (also owned), or some
|
234
|
+
// other block of memory that we know will be available for the lifetime of
|
235
|
+
// some operation in the common case (not owned). In the *less common* case
|
236
|
+
// that we need to keep that slice text for longer than our API's guarantee us
|
237
|
+
// access, we need to take a copy and turn this into something that we do own.
|
238
|
+
|
239
|
+
// TakeOwned returns an owned slice regardless of current ownership, and
|
240
|
+
// leaves the current slice in a valid but externally unpredictable state - in
|
241
|
+
// doing so it can avoid adding a ref to the underlying slice.
|
242
|
+
Slice TakeOwned();
|
243
|
+
|
244
|
+
// AsOwned returns an owned slice but does not mutate the current slice,
|
245
|
+
// meaning that it may add a reference to the underlying slice.
|
246
|
+
Slice AsOwned() const;
|
247
|
+
|
248
|
+
// TakeMutable returns a MutableSlice, and leaves the current slice in an
|
249
|
+
// indeterminate but valid state.
|
250
|
+
// A mutable slice requires only one reference to the bytes of the slice -
|
251
|
+
// this can be achieved either with inlined storage or with a single
|
252
|
+
// reference.
|
253
|
+
// If the current slice is refcounted and there are more than one references
|
254
|
+
// to that slice, then the slice is copied in order to achieve a mutable
|
255
|
+
// version.
|
256
|
+
MutableSlice TakeMutable();
|
257
|
+
|
258
|
+
// Return a sub slice of this one. Leaves this slice in an indeterminate but
|
259
|
+
// valid state.
|
260
|
+
Slice TakeSubSlice(size_t pos, size_t n) {
|
261
|
+
return Slice(grpc_slice_sub_no_ref(TakeCSlice(), pos, pos + n));
|
262
|
+
}
|
263
|
+
|
264
|
+
// Return a sub slice of this one. Adds a reference to the underlying slice.
|
265
|
+
Slice RefSubSlice(size_t pos, size_t n) const {
|
266
|
+
return Slice(grpc_slice_sub(c_slice(), pos, pos + n));
|
267
|
+
}
|
268
|
+
|
269
|
+
// Split this slice, returning a new slice containing (split:end] and
|
270
|
+
// leaving this slice with [begin:split).
|
271
|
+
Slice Split(size_t split) {
|
272
|
+
return Slice(grpc_slice_split_tail(c_slice_ptr(), split));
|
273
|
+
}
|
274
|
+
|
275
|
+
Slice Ref() const;
|
276
|
+
|
277
|
+
Slice Copy() const { return Slice(grpc_slice_copy(c_slice())); }
|
278
|
+
|
279
|
+
static Slice FromRefcountAndBytes(grpc_slice_refcount* r,
|
280
|
+
const uint8_t* begin, const uint8_t* end);
|
281
|
+
};
|
282
|
+
|
283
|
+
} // namespace experimental
|
284
|
+
} // namespace grpc_event_engine
|
285
|
+
|
286
|
+
#endif // GRPC_EVENT_ENGINE_SLICE_H
|
@@ -0,0 +1,112 @@
|
|
1
|
+
// Copyright 2022 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
|
+
|
15
|
+
#ifndef GRPC_EVENT_ENGINE_SLICE_BUFFER_H
|
16
|
+
#define GRPC_EVENT_ENGINE_SLICE_BUFFER_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <string.h>
|
21
|
+
|
22
|
+
#include <cstdint>
|
23
|
+
#include <string>
|
24
|
+
|
25
|
+
#include "absl/strings/string_view.h"
|
26
|
+
#include "absl/utility/utility.h"
|
27
|
+
|
28
|
+
#include <grpc/event_engine/slice.h>
|
29
|
+
#include <grpc/slice.h>
|
30
|
+
#include <grpc/slice_buffer.h>
|
31
|
+
#include <grpc/support/log.h>
|
32
|
+
|
33
|
+
namespace grpc_event_engine {
|
34
|
+
namespace experimental {
|
35
|
+
|
36
|
+
/// A Wrapper around \a grpc_slice_buffer pointer.
|
37
|
+
///
|
38
|
+
/// A slice buffer holds the memory for a collection of slices.
|
39
|
+
/// The SliceBuffer object itself is meant to only hide the C-style API,
|
40
|
+
/// and won't hold the data itself. In terms of lifespan, the
|
41
|
+
/// grpc_slice_buffer ought to be kept somewhere inside the caller's objects,
|
42
|
+
/// like a transport or an endpoint.
|
43
|
+
///
|
44
|
+
/// This lifespan rule is likely to change in the future, as we may
|
45
|
+
/// collapse the grpc_slice_buffer structure straight into this class.
|
46
|
+
///
|
47
|
+
/// The SliceBuffer API is basically a replica of the grpc_slice_buffer's,
|
48
|
+
/// and its documentation will move here once we remove the C structure,
|
49
|
+
/// which should happen before the Event Engine's API is no longer
|
50
|
+
/// an experimental API.
|
51
|
+
class SliceBuffer {
|
52
|
+
public:
|
53
|
+
explicit SliceBuffer() { grpc_slice_buffer_init(&slice_buffer_); }
|
54
|
+
SliceBuffer(const SliceBuffer& other) = delete;
|
55
|
+
SliceBuffer(SliceBuffer&& other) noexcept
|
56
|
+
: slice_buffer_(other.slice_buffer_) {
|
57
|
+
grpc_slice_buffer_reset_and_unref(&slice_buffer_);
|
58
|
+
grpc_slice_buffer_swap(&slice_buffer_, &other.slice_buffer_);
|
59
|
+
}
|
60
|
+
/// Upon destruction, the underlying raw slice buffer is cleaned out and all
|
61
|
+
/// slices are unreffed.
|
62
|
+
~SliceBuffer() { grpc_slice_buffer_destroy(&slice_buffer_); }
|
63
|
+
|
64
|
+
/// Appends a new slice into the SliceBuffer and makes an attempt to merge
|
65
|
+
/// this slice with the last slice in the SliceBuffer.
|
66
|
+
void Append(Slice slice);
|
67
|
+
|
68
|
+
/// Adds a new slice into the SliceBuffer at the next available index.
|
69
|
+
/// Returns the index at which the new slice is added.
|
70
|
+
size_t AppendIndexed(Slice slice);
|
71
|
+
|
72
|
+
/// Returns the number of slices held by the SliceBuffer.
|
73
|
+
size_t Count() { return slice_buffer_.count; }
|
74
|
+
|
75
|
+
/// Removes/deletes the last n bytes in the SliceBuffer.
|
76
|
+
void RemoveLastNBytes(size_t n) {
|
77
|
+
grpc_slice_buffer_trim_end(&slice_buffer_, n, nullptr);
|
78
|
+
}
|
79
|
+
|
80
|
+
/// Move the first n bytes of the SliceBuffer into a memory pointed to by dst.
|
81
|
+
void MoveFirstNBytesIntoBuffer(size_t n, void* dst) {
|
82
|
+
grpc_slice_buffer_move_first_into_buffer(&slice_buffer_, n, dst);
|
83
|
+
}
|
84
|
+
|
85
|
+
/// Removes and unrefs all slices in the SliceBuffer.
|
86
|
+
void Clear() { grpc_slice_buffer_reset_and_unref(&slice_buffer_); }
|
87
|
+
|
88
|
+
/// Removes the first slice in the SliceBuffer and returns it.
|
89
|
+
Slice TakeFirst();
|
90
|
+
|
91
|
+
/// Prepends the slice to the the front of the SliceBuffer.
|
92
|
+
void Prepend(Slice slice);
|
93
|
+
|
94
|
+
/// Increased the ref-count of slice at the specified index and returns the
|
95
|
+
/// associated slice.
|
96
|
+
Slice RefSlice(size_t index);
|
97
|
+
|
98
|
+
/// The total number of bytes held by the SliceBuffer
|
99
|
+
size_t Length() { return slice_buffer_.length; }
|
100
|
+
|
101
|
+
/// Return a pointer to the back raw grpc_slice_buffer
|
102
|
+
grpc_slice_buffer* RawSliceBuffer() { return &slice_buffer_; }
|
103
|
+
|
104
|
+
private:
|
105
|
+
/// The backing raw slice buffer.
|
106
|
+
grpc_slice_buffer slice_buffer_;
|
107
|
+
};
|
108
|
+
|
109
|
+
} // namespace experimental
|
110
|
+
} // namespace grpc_event_engine
|
111
|
+
|
112
|
+
#endif // GRPC_EVENT_ENGINE_SLICE_BUFFER_H
|
@@ -1047,6 +1047,17 @@ typedef struct grpc_tls_certificate_verifier_external {
|
|
1047
1047
|
grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_external_create(
|
1048
1048
|
grpc_tls_certificate_verifier_external* external_verifier);
|
1049
1049
|
|
1050
|
+
/**
|
1051
|
+
* EXPERIMENTAL API - Subject to change
|
1052
|
+
*
|
1053
|
+
* Factory function for an internal verifier that won't perform any
|
1054
|
+
* post-handshake verification. Note: using this solely without any other
|
1055
|
+
* authentication mechanisms on the peer identity will leave your applications
|
1056
|
+
* to the MITM(Man-In-The-Middle) attacks. Users should avoid doing so in
|
1057
|
+
* production environments.
|
1058
|
+
*/
|
1059
|
+
grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_no_op_create();
|
1060
|
+
|
1050
1061
|
/**
|
1051
1062
|
* EXPERIMENTAL API - Subject to change
|
1052
1063
|
*
|
@@ -207,6 +207,7 @@
|
|
207
207
|
#define GPR_CPU_POSIX 1
|
208
208
|
#define GPR_PLATFORM_STRING "asylo"
|
209
209
|
#define GPR_GCC_SYNC 1
|
210
|
+
#define GPR_POSIX_STAT 1
|
210
211
|
#define GPR_POSIX_SYNC 1
|
211
212
|
#define GPR_POSIX_STRING 1
|
212
213
|
#define GPR_POSIX_LOG 1
|
@@ -352,6 +353,32 @@
|
|
352
353
|
#else /* _LP64 */
|
353
354
|
#define GPR_ARCH_32 1
|
354
355
|
#endif /* _LP64 */
|
356
|
+
#elif defined(__NetBSD__)
|
357
|
+
// NetBSD is a community-supported platform.
|
358
|
+
// Please contact Thomas Klausner <wiz@NetBSD.org> for support.
|
359
|
+
#define GPR_PLATFORM_STRING "netbsd"
|
360
|
+
#ifndef _BSD_SOURCE
|
361
|
+
#define _BSD_SOURCE
|
362
|
+
#endif
|
363
|
+
#define GPR_NETBSD 1
|
364
|
+
#define GPR_CPU_POSIX 1
|
365
|
+
#define GPR_GCC_ATOMIC 1
|
366
|
+
#define GPR_GCC_TLS 1
|
367
|
+
#define GPR_POSIX_LOG 1
|
368
|
+
#define GPR_POSIX_ENV 1
|
369
|
+
#define GPR_POSIX_TMPFILE 1
|
370
|
+
#define GPR_POSIX_STAT 1
|
371
|
+
#define GPR_POSIX_STRING 1
|
372
|
+
#define GPR_POSIX_SUBPROCESS 1
|
373
|
+
#define GPR_POSIX_SYNC 1
|
374
|
+
#define GPR_POSIX_TIME 1
|
375
|
+
#define GPR_GETPID_IN_UNISTD_H 1
|
376
|
+
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
377
|
+
#ifdef _LP64
|
378
|
+
#define GPR_ARCH_64 1
|
379
|
+
#else /* _LP64 */
|
380
|
+
#define GPR_ARCH_32 1
|
381
|
+
#endif /* _LP64 */
|
355
382
|
#elif defined(__native_client__)
|
356
383
|
#define GPR_PLATFORM_STRING "nacl"
|
357
384
|
#ifndef _BSD_SOURCE
|
@@ -404,6 +431,32 @@
|
|
404
431
|
#define GPR_HAS_PTHREAD_H 1
|
405
432
|
#define GPR_GETPID_IN_UNISTD_H 1
|
406
433
|
#define GRPC_ROOT_PEM_PATH "/config/ssl/cert.pem"
|
434
|
+
#elif defined(__HAIKU__)
|
435
|
+
#define GPR_PLATFORM_STRING "haiku"
|
436
|
+
// Haiku is a community-supported platform.
|
437
|
+
// Please contact Jerome Duval <jerome.duval@gmail.com> for support.
|
438
|
+
#ifndef _BSD_SOURCE
|
439
|
+
#define _BSD_SOURCE
|
440
|
+
#endif
|
441
|
+
#define GPR_HAIKU 1
|
442
|
+
#define GPR_CPU_POSIX 1
|
443
|
+
#define GPR_GCC_ATOMIC 1
|
444
|
+
#define GPR_POSIX_LOG 1
|
445
|
+
#define GPR_POSIX_ENV 1
|
446
|
+
#define GPR_POSIX_TMPFILE 1
|
447
|
+
#define GPR_POSIX_STAT 1
|
448
|
+
#define GPR_POSIX_STRING 1
|
449
|
+
#define GPR_POSIX_SUBPROCESS 1
|
450
|
+
#define GPR_POSIX_SYNC 1
|
451
|
+
#define GPR_POSIX_TIME 1
|
452
|
+
#define GPR_HAS_PTHREAD_H 1
|
453
|
+
#define GPR_GETPID_IN_UNISTD_H 1
|
454
|
+
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
455
|
+
#ifdef _LP64
|
456
|
+
#define GPR_ARCH_64 1
|
457
|
+
#else /* _LP64 */
|
458
|
+
#define GPR_ARCH_32 1
|
459
|
+
#endif /* _LP64 */
|
407
460
|
#else
|
408
461
|
#error "Could not auto-detect platform"
|
409
462
|
#endif
|
@@ -528,6 +581,19 @@ typedef unsigned __int64 uint64_t;
|
|
528
581
|
#define GRPC_MUST_USE_RESULT
|
529
582
|
#define GPR_ALIGN_STRUCT(n)
|
530
583
|
#endif
|
584
|
+
#ifdef USE_STRICT_WARNING
|
585
|
+
/* When building with USE_STRICT_WARNING (which -Werror), types with this
|
586
|
+
attribute will be treated as annotated with warn_unused_result, enforcing
|
587
|
+
returned values of this type should be used.
|
588
|
+
This is added in grpc::Status in mind to address the issue where it always
|
589
|
+
has this annotation internally but OSS doesn't, sometimes causing internal
|
590
|
+
build failure. To prevent this, this is added while not introducing
|
591
|
+
a breaking change to existing user code which may not use returned values
|
592
|
+
of grpc::Status. */
|
593
|
+
#define GRPC_MUST_USE_RESULT_WHEN_USE_STRICT_WARNING GRPC_MUST_USE_RESULT
|
594
|
+
#else
|
595
|
+
#define GRPC_MUST_USE_RESULT_WHEN_USE_STRICT_WARNING
|
596
|
+
#endif
|
531
597
|
#endif
|
532
598
|
|
533
599
|
#ifndef GRPC_UNUSED
|
@@ -547,14 +613,43 @@ typedef unsigned __int64 uint64_t;
|
|
547
613
|
#endif
|
548
614
|
#endif /* GPR_PRINT_FORMAT_CHECK */
|
549
615
|
|
616
|
+
#ifndef GPR_HAS_CPP_ATTRIBUTE
|
617
|
+
#ifdef __has_cpp_attribute
|
618
|
+
#define GPR_HAS_CPP_ATTRIBUTE(a) __has_cpp_attribute(a)
|
619
|
+
#else
|
620
|
+
#define GPR_HAS_CPP_ATTRIBUTE(a) 0
|
621
|
+
#endif
|
622
|
+
#endif /* GPR_HAS_CPP_ATTRIBUTE */
|
623
|
+
|
624
|
+
#ifndef GPR_HAS_ATTRIBUTE
|
625
|
+
#ifdef __has_attribute
|
626
|
+
#define GPR_HAS_ATTRIBUTE(a) __has_attribute(a)
|
627
|
+
#else
|
628
|
+
#define GPR_HAS_ATTRIBUTE(a) 0
|
629
|
+
#endif
|
630
|
+
#endif /* GPR_HAS_ATTRIBUTE */
|
631
|
+
|
632
|
+
#if GPR_HAS_ATTRIBUTE(noreturn)
|
633
|
+
#define GPR_ATTRIBUTE_NORETURN __attribute__((noreturn))
|
634
|
+
#else
|
635
|
+
#define GPR_ATTRIBUTE_NORETURN
|
636
|
+
#endif
|
637
|
+
|
550
638
|
#if GPR_FORBID_UNREACHABLE_CODE
|
551
639
|
#define GPR_UNREACHABLE_CODE(STATEMENT)
|
552
640
|
#else
|
553
|
-
#
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
641
|
+
#ifdef __cplusplus
|
642
|
+
extern "C" {
|
643
|
+
#endif
|
644
|
+
extern void gpr_unreachable_code(const char* reason, const char* file,
|
645
|
+
int line) GPR_ATTRIBUTE_NORETURN;
|
646
|
+
#ifdef __cplusplus
|
647
|
+
}
|
648
|
+
#endif
|
649
|
+
#define GPR_UNREACHABLE_CODE(STATEMENT) \
|
650
|
+
do { \
|
651
|
+
gpr_unreachable_code(#STATEMENT, __FILE__, __LINE__); \
|
652
|
+
STATEMENT; \
|
558
653
|
} while (0)
|
559
654
|
#endif /* GPR_FORBID_UNREACHABLE_CODE */
|
560
655
|
|
@@ -570,22 +665,6 @@ typedef unsigned __int64 uint64_t;
|
|
570
665
|
#define CENSUSAPI GRPCAPI
|
571
666
|
#endif
|
572
667
|
|
573
|
-
#ifndef GPR_HAS_CPP_ATTRIBUTE
|
574
|
-
#ifdef __has_cpp_attribute
|
575
|
-
#define GPR_HAS_CPP_ATTRIBUTE(a) __has_cpp_attribute(a)
|
576
|
-
#else
|
577
|
-
#define GPR_HAS_CPP_ATTRIBUTE(a) 0
|
578
|
-
#endif
|
579
|
-
#endif /* GPR_HAS_CPP_ATTRIBUTE */
|
580
|
-
|
581
|
-
#ifndef GPR_HAS_ATTRIBUTE
|
582
|
-
#ifdef __has_attribute
|
583
|
-
#define GPR_HAS_ATTRIBUTE(a) __has_attribute(a)
|
584
|
-
#else
|
585
|
-
#define GPR_HAS_ATTRIBUTE(a) 0
|
586
|
-
#endif
|
587
|
-
#endif /* GPR_HAS_ATTRIBUTE */
|
588
|
-
|
589
668
|
#ifndef GPR_HAS_FEATURE
|
590
669
|
#ifdef __has_feature
|
591
670
|
#define GPR_HAS_FEATURE(a) __has_feature(a)
|
@@ -692,21 +771,6 @@ typedef unsigned __int64 uint64_t;
|
|
692
771
|
#define __STDC_FORMAT_MACROS
|
693
772
|
#endif
|
694
773
|
|
695
|
-
/* Selectively enable EventEngine on specific platforms. This default can be
|
696
|
-
* overridden using the GRPC_USE_EVENT_ENGINE compiler flag.
|
697
|
-
*/
|
698
|
-
#ifndef GRPC_USE_EVENT_ENGINE
|
699
|
-
/* Not enabled by default on any platforms yet. (2021.06) */
|
700
|
-
#elif GRPC_USE_EVENT_ENGINE == 0
|
701
|
-
/* Building with `-DGRPC_USE_EVENT_ENGINE=0` will override the default. */
|
702
|
-
#undef GRPC_USE_EVENT_ENGINE
|
703
|
-
#endif /* GRPC_USE_EVENT_ENGINE */
|
704
|
-
|
705
|
-
#ifdef GRPC_USE_EVENT_ENGINE
|
706
|
-
#undef GPR_SUPPORT_CHANNELS_FROM_FD
|
707
|
-
#define GRPC_ARES 0
|
708
|
-
#endif /* GRPC_USE_EVENT_ENGINE */
|
709
|
-
|
710
774
|
#define GRPC_CALLBACK_API_NONEXPERIMENTAL
|
711
775
|
|
712
776
|
/* clang 11 with msan miscompiles destruction of [[no_unique_address]] members
|