grpc 1.50.0-x86_64-linux → 1.51.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 +131 -42
- data/include/grpc/event_engine/event_engine.h +10 -3
- data/include/grpc/event_engine/slice_buffer.h +17 -0
- data/include/grpc/grpc.h +0 -10
- data/include/grpc/impl/codegen/grpc_types.h +1 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
- data/src/core/ext/filters/client_channel/client_channel.h +3 -4
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
- data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
- data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
- data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
- data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
- data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
- data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
- data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +15 -68
- data/src/core/ext/xds/xds_api.h +3 -7
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_client.cc +122 -90
- data/src/core/ext/xds/xds_client.h +7 -2
- data/src/core/ext/xds/xds_client_grpc.cc +5 -24
- data/src/core/ext/xds/xds_cluster.cc +291 -183
- data/src/core/ext/xds/xds_cluster.h +11 -15
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
- data/src/core/ext/xds/xds_common_types.cc +208 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +214 -129
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
- data/src/core/ext/xds/xds_http_filters.cc +60 -73
- data/src/core/ext/xds/xds_http_filters.h +67 -19
- data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
- data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +459 -417
- data/src/core/ext/xds/xds_listener.h +43 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
- data/src/core/ext/xds/xds_route_config.cc +94 -80
- data/src/core/ext/xds/xds_route_config.h +10 -10
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
- data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
- data/src/core/lib/address_utils/parse_address.cc +11 -10
- data/src/core/lib/channel/channel_args.h +16 -1
- data/src/core/lib/channel/channel_stack.cc +23 -20
- data/src/core/lib/channel/channel_stack.h +17 -4
- data/src/core/lib/channel/channel_stack_builder.cc +4 -7
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +4 -5
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/channel/connected_channel.cc +695 -35
- data/src/core/lib/channel/connected_channel.h +0 -4
- data/src/core/lib/channel/promise_based_filter.cc +1004 -140
- data/src/core/lib/channel/promise_based_filter.h +364 -87
- data/src/core/lib/compression/message_compress.cc +5 -5
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +22 -119
- data/src/core/lib/debug/stats.h +29 -35
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/thread_pool.cc +106 -25
- data/src/core/lib/event_engine/thread_pool.h +32 -9
- data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
- data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -2
- data/src/core/lib/experiments/experiments.h +8 -1
- data/src/core/lib/gpr/cpu_linux.cc +6 -2
- data/src/core/lib/gpr/log_linux.cc +3 -4
- data/src/core/lib/gpr/string.h +1 -1
- data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +3 -2
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
- data/src/core/lib/gprpp/thd_windows.cc +1 -2
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +13 -2
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/http/httpcli.cc +40 -44
- data/src/core/lib/http/httpcli.h +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +4 -6
- data/src/core/lib/http/parser.cc +54 -65
- data/src/core/lib/iomgr/buffer_list.cc +105 -116
- data/src/core/lib/iomgr/buffer_list.h +60 -44
- data/src/core/lib/iomgr/call_combiner.cc +11 -10
- data/src/core/lib/iomgr/call_combiner.h +3 -4
- data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
- data/src/core/lib/iomgr/closure.h +49 -5
- data/src/core/lib/iomgr/combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/error.cc +27 -42
- data/src/core/lib/iomgr/error.h +22 -152
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
- data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
- data/src/core/lib/iomgr/exec_ctx.cc +3 -4
- data/src/core/lib/iomgr/exec_ctx.h +2 -3
- data/src/core/lib/iomgr/executor.cc +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
- data/src/core/lib/iomgr/load_file.cc +5 -9
- data/src/core/lib/iomgr/lockfree_event.cc +10 -10
- data/src/core/lib/iomgr/pollset_windows.cc +4 -4
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -4
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
- data/src/core/lib/iomgr/tcp_posix.cc +92 -108
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
- data/src/core/lib/iomgr/tcp_windows.cc +27 -34
- data/src/core/lib/iomgr/timer.h +8 -8
- data/src/core/lib/iomgr/timer_generic.cc +9 -15
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +7 -2
- data/src/core/lib/json/json_object_loader.h +22 -0
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/load_balancing/lb_policy.cc +1 -1
- data/src/core/lib/load_balancing/lb_policy.h +4 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +38 -15
- data/src/core/lib/promise/arena_promise.h +80 -51
- data/src/core/lib/promise/context.h +13 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +58 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
- data/src/core/lib/promise/for_each.h +129 -0
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map_pipe.h +87 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +13 -0
- data/src/core/lib/promise/seq.h +3 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +341 -0
- data/src/core/lib/promise/try_seq.h +10 -13
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +1 -3
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/arena.cc +19 -0
- data/src/core/lib/resource_quota/arena.h +89 -0
- data/src/core/lib/resource_quota/memory_quota.cc +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/context/security_context.h +10 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
- data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
- data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
- data/src/core/lib/security/transport/security_handshaker.cc +53 -53
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/tsi_error.cc +6 -3
- data/src/core/lib/security/util/json_util.cc +4 -5
- data/src/core/lib/service_config/service_config.h +1 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +2 -2
- data/src/core/lib/slice/slice.cc +7 -1
- data/src/core/lib/slice/slice.h +19 -6
- data/src/core/lib/slice/slice_buffer.cc +13 -14
- data/src/core/lib/slice/slice_internal.h +13 -21
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/surface/byte_buffer.cc +3 -4
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1366 -239
- data/src/core/lib/surface/call.h +44 -0
- data/src/core/lib/surface/call_details.cc +3 -3
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +44 -49
- data/src/core/lib/surface/channel.h +9 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/channel_stack_type.cc +4 -0
- data/src/core/lib/surface/channel_stack_type.h +2 -0
- data/src/core/lib/surface/completion_queue.cc +38 -52
- data/src/core/lib/surface/init.cc +8 -39
- data/src/core/lib/surface/init_internally.h +8 -0
- data/src/core/lib/surface/lame_client.cc +10 -8
- data/src/core/lib/surface/server.cc +48 -70
- data/src/core/lib/surface/server.h +3 -4
- data/src/core/lib/surface/validate_metadata.cc +11 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +34 -28
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +14 -14
- data/src/core/lib/transport/handshaker.h +1 -1
- data/src/core/lib/transport/handshaker_factory.h +26 -0
- data/src/core/lib/transport/handshaker_registry.cc +8 -2
- data/src/core/lib/transport/handshaker_registry.h +3 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
- data/src/core/lib/transport/metadata_batch.h +17 -1
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/transport.cc +63 -17
- data/src/core/lib/transport/transport.h +64 -68
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +7 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
- 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 +5 -5
- data/src/core/tsi/fake_transport_security.cc +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
- 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/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- 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/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +55 -18
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_buffer_api.cc +0 -35
- data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -1,187 +0,0 @@
|
|
1
|
-
//
|
2
|
-
// Copyright 2021 gRPC authors.
|
3
|
-
//
|
4
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
// you may not use this file except in compliance with the License.
|
6
|
-
// You may obtain a copy of the License at
|
7
|
-
//
|
8
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
//
|
10
|
-
// Unless required by applicable law or agreed to in writing, software
|
11
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
// See the License for the specific language governing permissions and
|
14
|
-
// limitations under the License.
|
15
|
-
//
|
16
|
-
|
17
|
-
#include <grpc/support/port_platform.h>
|
18
|
-
|
19
|
-
#include "src/core/ext/filters/fault_injection/service_config_parser.h"
|
20
|
-
|
21
|
-
#include <algorithm>
|
22
|
-
#include <vector>
|
23
|
-
|
24
|
-
#include "absl/memory/memory.h"
|
25
|
-
#include "absl/status/status.h"
|
26
|
-
#include "absl/strings/str_cat.h"
|
27
|
-
#include "absl/types/optional.h"
|
28
|
-
|
29
|
-
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
|
30
|
-
#include "src/core/lib/channel/channel_args.h"
|
31
|
-
#include "src/core/lib/channel/status_util.h"
|
32
|
-
#include "src/core/lib/iomgr/error.h"
|
33
|
-
#include "src/core/lib/json/json_util.h"
|
34
|
-
|
35
|
-
namespace grpc_core {
|
36
|
-
|
37
|
-
namespace {
|
38
|
-
|
39
|
-
std::vector<FaultInjectionMethodParsedConfig::FaultInjectionPolicy>
|
40
|
-
ParseFaultInjectionPolicy(const Json::Array& policies_json_array,
|
41
|
-
std::vector<grpc_error_handle>* error_list) {
|
42
|
-
std::vector<FaultInjectionMethodParsedConfig::FaultInjectionPolicy> policies;
|
43
|
-
for (size_t i = 0; i < policies_json_array.size(); i++) {
|
44
|
-
FaultInjectionMethodParsedConfig::FaultInjectionPolicy
|
45
|
-
fault_injection_policy;
|
46
|
-
std::vector<grpc_error_handle> sub_error_list;
|
47
|
-
if (policies_json_array[i].type() != Json::Type::OBJECT) {
|
48
|
-
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
49
|
-
"faultInjectionPolicy index ", i, " is not a JSON object")));
|
50
|
-
continue;
|
51
|
-
}
|
52
|
-
const Json::Object& json_object = policies_json_array[i].object_value();
|
53
|
-
// Parse abort_code
|
54
|
-
std::string abort_code_string;
|
55
|
-
if (ParseJsonObjectField(json_object, "abortCode", &abort_code_string,
|
56
|
-
&sub_error_list, false)) {
|
57
|
-
if (!grpc_status_code_from_string(abort_code_string.c_str(),
|
58
|
-
&(fault_injection_policy.abort_code))) {
|
59
|
-
sub_error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
60
|
-
"field:abortCode error:failed to parse status code"));
|
61
|
-
}
|
62
|
-
}
|
63
|
-
// Parse abort_message
|
64
|
-
if (!ParseJsonObjectField(json_object, "abortMessage",
|
65
|
-
&fault_injection_policy.abort_message,
|
66
|
-
&sub_error_list, false)) {
|
67
|
-
fault_injection_policy.abort_message = "Fault injected";
|
68
|
-
}
|
69
|
-
// Parse abort_code_header
|
70
|
-
ParseJsonObjectField(json_object, "abortCodeHeader",
|
71
|
-
&fault_injection_policy.abort_code_header,
|
72
|
-
&sub_error_list, false);
|
73
|
-
// Parse abort_percentage_header
|
74
|
-
ParseJsonObjectField(json_object, "abortPercentageHeader",
|
75
|
-
&fault_injection_policy.abort_percentage_header,
|
76
|
-
&sub_error_list, false);
|
77
|
-
// Parse abort_percentage_numerator
|
78
|
-
ParseJsonObjectField(json_object, "abortPercentageNumerator",
|
79
|
-
&fault_injection_policy.abort_percentage_numerator,
|
80
|
-
&sub_error_list, false);
|
81
|
-
// Parse abort_percentage_denominator
|
82
|
-
if (ParseJsonObjectField(
|
83
|
-
json_object, "abortPercentageDenominator",
|
84
|
-
&fault_injection_policy.abort_percentage_denominator,
|
85
|
-
&sub_error_list, false)) {
|
86
|
-
if (fault_injection_policy.abort_percentage_denominator != 100 &&
|
87
|
-
fault_injection_policy.abort_percentage_denominator != 10000 &&
|
88
|
-
fault_injection_policy.abort_percentage_denominator != 1000000) {
|
89
|
-
sub_error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
90
|
-
"field:abortPercentageDenominator error:Denominator can only be "
|
91
|
-
"one of "
|
92
|
-
"100, 10000, 1000000"));
|
93
|
-
}
|
94
|
-
}
|
95
|
-
// Parse delay
|
96
|
-
ParseJsonObjectFieldAsDuration(json_object, "delay",
|
97
|
-
&fault_injection_policy.delay,
|
98
|
-
&sub_error_list, false);
|
99
|
-
// Parse delay_header
|
100
|
-
ParseJsonObjectField(json_object, "delayHeader",
|
101
|
-
&fault_injection_policy.delay_header, &sub_error_list,
|
102
|
-
false);
|
103
|
-
// Parse delay_percentage_header
|
104
|
-
ParseJsonObjectField(json_object, "delayPercentageHeader",
|
105
|
-
&fault_injection_policy.delay_percentage_header,
|
106
|
-
&sub_error_list, false);
|
107
|
-
// Parse delay_percentage_numerator
|
108
|
-
ParseJsonObjectField(json_object, "delayPercentageNumerator",
|
109
|
-
&fault_injection_policy.delay_percentage_numerator,
|
110
|
-
&sub_error_list, false);
|
111
|
-
// Parse delay_percentage_denominator
|
112
|
-
if (ParseJsonObjectField(
|
113
|
-
json_object, "delayPercentageDenominator",
|
114
|
-
&fault_injection_policy.delay_percentage_denominator,
|
115
|
-
&sub_error_list, false)) {
|
116
|
-
if (fault_injection_policy.delay_percentage_denominator != 100 &&
|
117
|
-
fault_injection_policy.delay_percentage_denominator != 10000 &&
|
118
|
-
fault_injection_policy.delay_percentage_denominator != 1000000) {
|
119
|
-
sub_error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
120
|
-
"field:delayPercentageDenominator error:Denominator can only be "
|
121
|
-
"one of "
|
122
|
-
"100, 10000, 1000000"));
|
123
|
-
}
|
124
|
-
}
|
125
|
-
// Parse max_faults
|
126
|
-
static_assert(
|
127
|
-
std::is_unsigned<decltype(fault_injection_policy.max_faults)>::value,
|
128
|
-
"maxFaults should be unsigned");
|
129
|
-
ParseJsonObjectField(json_object, "maxFaults",
|
130
|
-
&fault_injection_policy.max_faults, &sub_error_list,
|
131
|
-
false);
|
132
|
-
if (!sub_error_list.empty()) {
|
133
|
-
error_list->push_back(GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
|
134
|
-
absl::StrCat("failed to parse faultInjectionPolicy index ", i),
|
135
|
-
&sub_error_list));
|
136
|
-
}
|
137
|
-
policies.push_back(std::move(fault_injection_policy));
|
138
|
-
}
|
139
|
-
return policies;
|
140
|
-
}
|
141
|
-
|
142
|
-
} // namespace
|
143
|
-
|
144
|
-
absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
|
145
|
-
FaultInjectionServiceConfigParser::ParsePerMethodParams(const ChannelArgs& args,
|
146
|
-
const Json& json) {
|
147
|
-
// Only parse fault injection policy if the following channel arg is present.
|
148
|
-
if (!args.GetBool(GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG)
|
149
|
-
.value_or(false)) {
|
150
|
-
return nullptr;
|
151
|
-
}
|
152
|
-
// Parse fault injection policy from given Json
|
153
|
-
std::vector<FaultInjectionMethodParsedConfig::FaultInjectionPolicy>
|
154
|
-
fault_injection_policies;
|
155
|
-
std::vector<grpc_error_handle> error_list;
|
156
|
-
const Json::Array* policies_json_array;
|
157
|
-
if (ParseJsonObjectField(json.object_value(), "faultInjectionPolicy",
|
158
|
-
&policies_json_array, &error_list)) {
|
159
|
-
fault_injection_policies =
|
160
|
-
ParseFaultInjectionPolicy(*policies_json_array, &error_list);
|
161
|
-
}
|
162
|
-
if (!error_list.empty()) {
|
163
|
-
grpc_error_handle error =
|
164
|
-
GRPC_ERROR_CREATE_FROM_VECTOR("Fault injection parser", &error_list);
|
165
|
-
absl::Status status = absl::InvalidArgumentError(
|
166
|
-
absl::StrCat("error parsing fault injection method parameters: ",
|
167
|
-
grpc_error_std_string(error)));
|
168
|
-
GRPC_ERROR_UNREF(error);
|
169
|
-
return status;
|
170
|
-
}
|
171
|
-
if (fault_injection_policies.empty()) return nullptr;
|
172
|
-
return absl::make_unique<FaultInjectionMethodParsedConfig>(
|
173
|
-
std::move(fault_injection_policies));
|
174
|
-
}
|
175
|
-
|
176
|
-
void FaultInjectionServiceConfigParser::Register(
|
177
|
-
CoreConfiguration::Builder* builder) {
|
178
|
-
builder->service_config_parser()->RegisterParser(
|
179
|
-
absl::make_unique<FaultInjectionServiceConfigParser>());
|
180
|
-
}
|
181
|
-
|
182
|
-
size_t FaultInjectionServiceConfigParser::ParserIndex() {
|
183
|
-
return CoreConfiguration::Get().service_config_parser().GetParserIndex(
|
184
|
-
parser_name());
|
185
|
-
}
|
186
|
-
|
187
|
-
} // namespace grpc_core
|
@@ -1,44 +0,0 @@
|
|
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_CORE_LIB_EVENT_ENGINE_EXECUTOR_THREADED_EXECUTOR_H
|
16
|
-
#define GRPC_CORE_LIB_EVENT_ENGINE_EXECUTOR_THREADED_EXECUTOR_H
|
17
|
-
|
18
|
-
#include <grpc/support/port_platform.h>
|
19
|
-
|
20
|
-
#include "absl/functional/any_invocable.h"
|
21
|
-
|
22
|
-
#include <grpc/event_engine/event_engine.h>
|
23
|
-
|
24
|
-
#include "src/core/lib/event_engine/executor/executor.h"
|
25
|
-
#include "src/core/lib/event_engine/thread_pool.h"
|
26
|
-
|
27
|
-
namespace grpc_event_engine {
|
28
|
-
namespace experimental {
|
29
|
-
|
30
|
-
class ThreadedExecutor : public Executor {
|
31
|
-
public:
|
32
|
-
explicit ThreadedExecutor(int reserve_threads);
|
33
|
-
~ThreadedExecutor() override = default;
|
34
|
-
void Run(EventEngine::Closure* closure) override;
|
35
|
-
void Run(absl::AnyInvocable<void()> closure) override;
|
36
|
-
|
37
|
-
private:
|
38
|
-
ThreadPool thread_pool_;
|
39
|
-
};
|
40
|
-
|
41
|
-
} // namespace experimental
|
42
|
-
} // namespace grpc_event_engine
|
43
|
-
|
44
|
-
#endif // GRPC_CORE_LIB_EVENT_ENGINE_EXECUTOR_THREADED_EXECUTOR_H
|
@@ -1,82 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#include <grpc/support/port_platform.h>
|
20
|
-
|
21
|
-
#include "src/core/lib/gpr/murmur_hash.h"
|
22
|
-
|
23
|
-
#include <string.h>
|
24
|
-
|
25
|
-
#include "absl/base/attributes.h"
|
26
|
-
|
27
|
-
#define ROTL32(x, r) (((x) << (r)) | ((x) >> (32 - (r))))
|
28
|
-
|
29
|
-
#define FMIX32(h) \
|
30
|
-
(h) ^= (h) >> 16; \
|
31
|
-
(h) *= 0x85ebca6b; \
|
32
|
-
(h) ^= (h) >> 13; \
|
33
|
-
(h) *= 0xc2b2ae35; \
|
34
|
-
(h) ^= (h) >> 16;
|
35
|
-
|
36
|
-
uint32_t gpr_murmur_hash3(const void* key, size_t len, uint32_t seed) {
|
37
|
-
uint32_t h1 = seed;
|
38
|
-
uint32_t k1;
|
39
|
-
|
40
|
-
const uint32_t c1 = 0xcc9e2d51;
|
41
|
-
const uint32_t c2 = 0x1b873593;
|
42
|
-
|
43
|
-
const uint8_t* keyptr = static_cast<const uint8_t*>(key);
|
44
|
-
const size_t bsize = sizeof(k1);
|
45
|
-
const size_t nblocks = len / bsize;
|
46
|
-
|
47
|
-
/* body */
|
48
|
-
for (size_t i = 0; i < nblocks; i++, keyptr += bsize) {
|
49
|
-
memcpy(&k1, keyptr, bsize);
|
50
|
-
|
51
|
-
k1 *= c1;
|
52
|
-
k1 = ROTL32(k1, 15);
|
53
|
-
k1 *= c2;
|
54
|
-
|
55
|
-
h1 ^= k1;
|
56
|
-
h1 = ROTL32(h1, 13);
|
57
|
-
h1 = h1 * 5 + 0xe6546b64;
|
58
|
-
}
|
59
|
-
|
60
|
-
k1 = 0;
|
61
|
-
|
62
|
-
/* tail */
|
63
|
-
switch (len & 3) {
|
64
|
-
case 3:
|
65
|
-
k1 ^= (static_cast<uint32_t>(keyptr[2])) << 16;
|
66
|
-
ABSL_FALLTHROUGH_INTENDED;
|
67
|
-
case 2:
|
68
|
-
k1 ^= (static_cast<uint32_t>(keyptr[1])) << 8;
|
69
|
-
ABSL_FALLTHROUGH_INTENDED;
|
70
|
-
case 1:
|
71
|
-
k1 ^= keyptr[0];
|
72
|
-
k1 *= c1;
|
73
|
-
k1 = ROTL32(k1, 15);
|
74
|
-
k1 *= c2;
|
75
|
-
h1 ^= k1;
|
76
|
-
};
|
77
|
-
|
78
|
-
/* finalization */
|
79
|
-
h1 ^= static_cast<uint32_t>(len);
|
80
|
-
FMIX32(h1);
|
81
|
-
return h1;
|
82
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef GRPC_CORE_LIB_GPR_MURMUR_HASH_H
|
20
|
-
#define GRPC_CORE_LIB_GPR_MURMUR_HASH_H
|
21
|
-
|
22
|
-
#include <grpc/support/port_platform.h>
|
23
|
-
|
24
|
-
#include <stddef.h>
|
25
|
-
|
26
|
-
/* compute the hash of key (length len) */
|
27
|
-
uint32_t gpr_murmur_hash3(const void* key, size_t len, uint32_t seed);
|
28
|
-
|
29
|
-
#endif /* GRPC_CORE_LIB_GPR_MURMUR_HASH_H */
|
data/src/core/lib/gpr/tls.h
DELETED
@@ -1,156 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef GRPC_CORE_LIB_GPR_TLS_H
|
20
|
-
#define GRPC_CORE_LIB_GPR_TLS_H
|
21
|
-
|
22
|
-
#include <grpc/support/port_platform.h>
|
23
|
-
|
24
|
-
#include <type_traits>
|
25
|
-
|
26
|
-
/** Thread local storage.
|
27
|
-
|
28
|
-
Usage is the same as C++ thread_local. Declaring a thread local:
|
29
|
-
static GPR_THREAD_LOCAL(uint32_t) foo;
|
30
|
-
|
31
|
-
ALL functions here may be implemented as macros. */
|
32
|
-
|
33
|
-
namespace grpc_core {
|
34
|
-
|
35
|
-
// This class is never instantiated. It exists to statically ensure that all
|
36
|
-
// TLS usage is compatible with the most restrictive implementation, allowing
|
37
|
-
// developers to write correct code regardless of the platform they develop on.
|
38
|
-
template <typename T>
|
39
|
-
class TlsTypeConstrainer {
|
40
|
-
static_assert(std::is_trivial<T>::value,
|
41
|
-
"TLS support is limited to trivial types");
|
42
|
-
|
43
|
-
public:
|
44
|
-
using Type = T;
|
45
|
-
};
|
46
|
-
|
47
|
-
} // namespace grpc_core
|
48
|
-
|
49
|
-
#if defined(GPR_PTHREAD_TLS)
|
50
|
-
|
51
|
-
#include <pthread.h>
|
52
|
-
|
53
|
-
#include <algorithm>
|
54
|
-
#include <array>
|
55
|
-
#include <cstring>
|
56
|
-
|
57
|
-
namespace grpc_core {
|
58
|
-
|
59
|
-
template <typename T>
|
60
|
-
class PthreadTlsImpl : TlsTypeConstrainer<T> {
|
61
|
-
public:
|
62
|
-
PthreadTlsImpl(const PthreadTlsImpl&) = delete;
|
63
|
-
PthreadTlsImpl& operator=(const PthreadTlsImpl&) = delete;
|
64
|
-
|
65
|
-
// Achtung! This class emulates C++ `thread_local` using pthread keys. Each
|
66
|
-
// instance of this class is a stand in for a C++ `thread_local`. Think of
|
67
|
-
// each `thread_local` as a *global* pthread_key_t and a type tag. An
|
68
|
-
// important consequence of this is that the lifetime of a `pthread_key_t`
|
69
|
-
// is precisely the lifetime of an instance of this class. To understand why
|
70
|
-
// this is, consider the following scenario given a fictional implementation
|
71
|
-
// of this class which creates and destroys its `pthread_key_t` each time
|
72
|
-
// a given block of code runs (all actions take place on a single thread):
|
73
|
-
//
|
74
|
-
// - instance 1 (type tag = T*) is initialized, is assigned `pthread_key_t` 1
|
75
|
-
// - instance 2 (type tag = int) is initialized, is assigned `pthread_key_t` 2
|
76
|
-
// - instances 1 and 2 store and retrieve values; all is well
|
77
|
-
// - instances 1 and 2 are de-initialized; their keys are released to the pool
|
78
|
-
//
|
79
|
-
// - another run commences
|
80
|
-
// - instance 1 receives key 2
|
81
|
-
// - a value is read from instance 1, it observes a value of type int, but
|
82
|
-
// interprets it as T*; undefined behavior, kaboom
|
83
|
-
//
|
84
|
-
// To properly ensure these invariants are upheld the `pthread_key_t` must be
|
85
|
-
// `const`, which means it can only be released in the destructor. This is a
|
86
|
-
// a violation of the style guide, since these objects are always static (see
|
87
|
-
// footnote) but this code is used in sufficiently narrow circumstances to
|
88
|
-
// justify the deviation.
|
89
|
-
//
|
90
|
-
// https://google.github.io/styleguide/cppguide.html#Static_and_Global_Variables
|
91
|
-
PthreadTlsImpl()
|
92
|
-
: keys_([]() {
|
93
|
-
typename std::remove_const<decltype(PthreadTlsImpl::keys_)>::type
|
94
|
-
keys;
|
95
|
-
for (pthread_key_t& key : keys) {
|
96
|
-
if (0 != pthread_key_create(&key, nullptr)) abort();
|
97
|
-
}
|
98
|
-
return keys;
|
99
|
-
}()) {}
|
100
|
-
PthreadTlsImpl(T t) : PthreadTlsImpl() { *this = t; }
|
101
|
-
~PthreadTlsImpl() {
|
102
|
-
for (pthread_key_t key : keys_) {
|
103
|
-
if (0 != pthread_key_delete(key)) abort();
|
104
|
-
}
|
105
|
-
}
|
106
|
-
|
107
|
-
operator T() const {
|
108
|
-
T t;
|
109
|
-
char* dst = reinterpret_cast<char*>(&t);
|
110
|
-
for (pthread_key_t key : keys_) {
|
111
|
-
uintptr_t src = uintptr_t(pthread_getspecific(key));
|
112
|
-
size_t remaining = reinterpret_cast<char*>(&t + 1) - dst;
|
113
|
-
size_t step = std::min(sizeof(src), remaining);
|
114
|
-
memcpy(dst, &src, step);
|
115
|
-
dst += step;
|
116
|
-
}
|
117
|
-
return t;
|
118
|
-
}
|
119
|
-
|
120
|
-
T operator->() const {
|
121
|
-
static_assert(std::is_pointer<T>::value,
|
122
|
-
"operator-> only usable on pointers");
|
123
|
-
return this->operator T();
|
124
|
-
}
|
125
|
-
|
126
|
-
T operator=(T t) {
|
127
|
-
char* src = reinterpret_cast<char*>(&t);
|
128
|
-
for (pthread_key_t key : keys_) {
|
129
|
-
uintptr_t dst;
|
130
|
-
size_t remaining = reinterpret_cast<char*>(&t + 1) - src;
|
131
|
-
size_t step = std::min(sizeof(dst), remaining);
|
132
|
-
memcpy(&dst, src, step);
|
133
|
-
if (0 != pthread_setspecific(key, reinterpret_cast<void*>(dst))) abort();
|
134
|
-
src += step;
|
135
|
-
}
|
136
|
-
return t;
|
137
|
-
}
|
138
|
-
|
139
|
-
private:
|
140
|
-
const std::array<pthread_key_t,
|
141
|
-
(sizeof(T) + sizeof(void*) - 1) / sizeof(void*)>
|
142
|
-
keys_;
|
143
|
-
};
|
144
|
-
|
145
|
-
} // namespace grpc_core
|
146
|
-
|
147
|
-
#define GPR_THREAD_LOCAL(type) grpc_core::PthreadTlsImpl<type>
|
148
|
-
|
149
|
-
#else
|
150
|
-
|
151
|
-
#define GPR_THREAD_LOCAL(type) \
|
152
|
-
thread_local typename grpc_core::TlsTypeConstrainer<type>::Type
|
153
|
-
|
154
|
-
#endif
|
155
|
-
|
156
|
-
#endif /* GRPC_CORE_LIB_GPR_TLS_H */
|
@@ -1,148 +0,0 @@
|
|
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_CORE_LIB_PROMISE_CALL_PUSH_PULL_H
|
16
|
-
#define GRPC_CORE_LIB_PROMISE_CALL_PUSH_PULL_H
|
17
|
-
|
18
|
-
#include <grpc/support/port_platform.h>
|
19
|
-
|
20
|
-
#include <assert.h>
|
21
|
-
|
22
|
-
#include <type_traits>
|
23
|
-
|
24
|
-
#include "absl/types/variant.h"
|
25
|
-
|
26
|
-
#include "src/core/lib/gprpp/bitset.h"
|
27
|
-
#include "src/core/lib/gprpp/construct_destruct.h"
|
28
|
-
#include "src/core/lib/promise/detail/promise_like.h"
|
29
|
-
#include "src/core/lib/promise/detail/status.h"
|
30
|
-
#include "src/core/lib/promise/poll.h"
|
31
|
-
|
32
|
-
namespace grpc_core {
|
33
|
-
|
34
|
-
namespace promise_detail {
|
35
|
-
|
36
|
-
template <typename FMain, typename FPush, typename FPull>
|
37
|
-
class CallPushPull {
|
38
|
-
public:
|
39
|
-
CallPushPull(FMain f_main, FPush f_push, FPull f_pull)
|
40
|
-
: push_(std::move(f_push)), pull_(std::move(f_pull)) {
|
41
|
-
Construct(&main_, std::move(f_main));
|
42
|
-
}
|
43
|
-
|
44
|
-
CallPushPull(const CallPushPull&) = delete;
|
45
|
-
CallPushPull& operator=(const CallPushPull&) = delete;
|
46
|
-
CallPushPull(CallPushPull&& other) noexcept
|
47
|
-
: done_(other.done_),
|
48
|
-
push_(std::move(other.push_)),
|
49
|
-
pull_(std::move(other.pull_)) {
|
50
|
-
assert(!done_.is_set(kDoneMain));
|
51
|
-
Construct(&main_, std::move(other.main_));
|
52
|
-
}
|
53
|
-
|
54
|
-
CallPushPull& operator=(CallPushPull&& other) noexcept {
|
55
|
-
assert(!done_.is_set(kDoneMain));
|
56
|
-
done_ = other.done_;
|
57
|
-
assert(!done_.is_set(kDoneMain));
|
58
|
-
push_ = std::move(other.push_);
|
59
|
-
main_ = std::move(other.main_);
|
60
|
-
pull_ = std::move(other.pull_);
|
61
|
-
return *this;
|
62
|
-
}
|
63
|
-
|
64
|
-
~CallPushPull() {
|
65
|
-
if (done_.is_set(kDoneMain)) {
|
66
|
-
Destruct(&result_);
|
67
|
-
} else {
|
68
|
-
Destruct(&main_);
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
using Result =
|
73
|
-
typename PollTraits<decltype(std::declval<PromiseLike<FMain>>()())>::Type;
|
74
|
-
|
75
|
-
Poll<Result> operator()() {
|
76
|
-
if (!done_.is_set(kDonePush)) {
|
77
|
-
auto p = push_();
|
78
|
-
if (auto* status = absl::get_if<kPollReadyIdx>(&p)) {
|
79
|
-
if (IsStatusOk(*status)) {
|
80
|
-
done_.set(kDonePush);
|
81
|
-
} else {
|
82
|
-
return Result(std::move(*status));
|
83
|
-
}
|
84
|
-
}
|
85
|
-
}
|
86
|
-
if (!done_.is_set(kDoneMain)) {
|
87
|
-
auto p = main_();
|
88
|
-
if (auto* status = absl::get_if<kPollReadyIdx>(&p)) {
|
89
|
-
if (IsStatusOk(*status)) {
|
90
|
-
done_.set(kDoneMain);
|
91
|
-
Destruct(&main_);
|
92
|
-
Construct(&result_, std::move(*status));
|
93
|
-
} else {
|
94
|
-
return std::move(*status);
|
95
|
-
}
|
96
|
-
}
|
97
|
-
}
|
98
|
-
if (!done_.is_set(kDonePull)) {
|
99
|
-
auto p = pull_();
|
100
|
-
if (auto* status = absl::get_if<kPollReadyIdx>(&p)) {
|
101
|
-
if (IsStatusOk(*status)) {
|
102
|
-
done_.set(kDonePull);
|
103
|
-
} else {
|
104
|
-
return Result(std::move(*status));
|
105
|
-
}
|
106
|
-
}
|
107
|
-
}
|
108
|
-
if (done_.all()) return std::move(result_);
|
109
|
-
return Pending{};
|
110
|
-
}
|
111
|
-
|
112
|
-
private:
|
113
|
-
enum { kDonePull = 0, kDoneMain = 1, kDonePush = 2 };
|
114
|
-
BitSet<3> done_;
|
115
|
-
GPR_NO_UNIQUE_ADDRESS PromiseLike<FPush> push_;
|
116
|
-
union {
|
117
|
-
PromiseLike<FMain> main_;
|
118
|
-
Result result_;
|
119
|
-
};
|
120
|
-
GPR_NO_UNIQUE_ADDRESS PromiseLike<FPull> pull_;
|
121
|
-
};
|
122
|
-
|
123
|
-
} // namespace promise_detail
|
124
|
-
|
125
|
-
// For promises representing calls a common pattern emerges:
|
126
|
-
// There's a process pushing data down the stack, a process handling the main
|
127
|
-
// call part, and a process pulling data back up the stack.
|
128
|
-
//
|
129
|
-
// This can reasonably be represented by the right combinations of TryJoins and
|
130
|
-
// Maps, but since the structure is fundamental to the domain we introduce
|
131
|
-
// this simple helper to make it easier to write the common case.
|
132
|
-
//
|
133
|
-
// It takes three promises: the main call, the push and the pull.
|
134
|
-
// When polling, the push is polled first, then the main call (descending the
|
135
|
-
// stack), then the pull (as we ascend once more).
|
136
|
-
//
|
137
|
-
// This strategy minimizes repolls.
|
138
|
-
template <typename FMain, typename FPush, typename FPull>
|
139
|
-
promise_detail::CallPushPull<FMain, FPush, FPull> CallPushPull(FMain f_main,
|
140
|
-
FPush f_push,
|
141
|
-
FPull f_pull) {
|
142
|
-
return promise_detail::CallPushPull<FMain, FPush, FPull>(
|
143
|
-
std::move(f_main), std::move(f_push), std::move(f_pull));
|
144
|
-
}
|
145
|
-
|
146
|
-
} // namespace grpc_core
|
147
|
-
|
148
|
-
#endif // GRPC_CORE_LIB_PROMISE_CALL_PUSH_PULL_H
|
@@ -1,39 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#include <grpc/support/port_platform.h>
|
20
|
-
|
21
|
-
#include <grpc/slice.h>
|
22
|
-
|
23
|
-
#include "src/core/lib/iomgr/exec_ctx.h"
|
24
|
-
#include "src/core/lib/slice/slice_refcount.h"
|
25
|
-
|
26
|
-
/* Public API */
|
27
|
-
grpc_slice grpc_slice_ref(grpc_slice slice) {
|
28
|
-
return grpc_slice_ref_internal(slice);
|
29
|
-
}
|
30
|
-
|
31
|
-
/* Public API */
|
32
|
-
void grpc_slice_unref(grpc_slice slice) {
|
33
|
-
if (grpc_core::ExecCtx::Get() == nullptr) {
|
34
|
-
grpc_core::ExecCtx exec_ctx;
|
35
|
-
grpc_slice_unref_internal(slice);
|
36
|
-
} else {
|
37
|
-
grpc_slice_unref_internal(slice);
|
38
|
-
}
|
39
|
-
}
|