grpc 1.73.0 → 1.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +38 -17
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +11 -5
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +270 -181
- data/src/core/channelz/channelz.h +168 -55
- data/src/core/channelz/channelz_registry.cc +2 -1
- data/src/core/channelz/channelz_registry.h +24 -0
- data/src/core/channelz/property_list.cc +357 -0
- data/src/core/channelz/property_list.h +202 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +19 -29
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +43 -19
- data/src/core/client_channel/subchannel.h +8 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +1 -0
- data/src/core/config/core_configuration.h +11 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +162 -115
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +37 -11
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +0 -25
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -5
- data/src/core/handshaker/security/secure_endpoint.cc +70 -25
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.h +5 -5
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +48 -2
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +145 -92
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +45 -93
- data/src/core/lib/experiments/experiments.h +21 -51
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/tcp_posix.cc +12 -6
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +1 -0
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +50 -1
- data/src/core/lib/promise/party.h +66 -1
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/filter_stack_call.cc +18 -9
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +3 -0
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +21 -6
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +83 -12
- data/src/core/server/server.h +21 -2
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/stats_data.cc +233 -207
- data/src/core/telemetry/stats_data.h +250 -153
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +2 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/latent_see.h +8 -5
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +2 -2
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +53 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +72 -568
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- metadata +72 -20
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
@@ -1,105 +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
|
-
#include "src/core/lib/event_engine/forkable.h"
|
16
|
-
|
17
|
-
#include <grpc/support/port_platform.h>
|
18
|
-
|
19
|
-
#include "absl/log/check.h"
|
20
|
-
|
21
|
-
#ifdef GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
|
22
|
-
#include <pthread.h>
|
23
|
-
#endif
|
24
|
-
|
25
|
-
#include <algorithm>
|
26
|
-
#include <utility>
|
27
|
-
#include <vector>
|
28
|
-
|
29
|
-
#include "src/core/config/config_vars.h"
|
30
|
-
#include "src/core/lib/debug/trace.h"
|
31
|
-
|
32
|
-
namespace grpc_event_engine::experimental {
|
33
|
-
|
34
|
-
namespace {
|
35
|
-
bool IsForkEnabled() {
|
36
|
-
static bool enabled = grpc_core::ConfigVars::Get().EnableForkSupport();
|
37
|
-
return enabled;
|
38
|
-
}
|
39
|
-
} // namespace
|
40
|
-
|
41
|
-
void ObjectGroupForkHandler::RegisterForkable(
|
42
|
-
std::shared_ptr<Forkable> forkable, GRPC_UNUSED void (*prepare)(void),
|
43
|
-
GRPC_UNUSED void (*parent)(void), GRPC_UNUSED void (*child)(void)) {
|
44
|
-
if (IsForkEnabled()) {
|
45
|
-
CHECK(!is_forking_);
|
46
|
-
forkables_.emplace_back(forkable);
|
47
|
-
#ifdef GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
|
48
|
-
if (!std::exchange(registered_, true)) {
|
49
|
-
pthread_atfork(prepare, parent, child);
|
50
|
-
}
|
51
|
-
#endif // GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
|
52
|
-
}
|
53
|
-
}
|
54
|
-
|
55
|
-
void ObjectGroupForkHandler::Prefork() {
|
56
|
-
if (IsForkEnabled()) {
|
57
|
-
CHECK(!std::exchange(is_forking_, true));
|
58
|
-
GRPC_TRACE_LOG(fork, INFO) << "PrepareFork";
|
59
|
-
for (auto it = forkables_.begin(); it != forkables_.end();) {
|
60
|
-
auto shared = it->lock();
|
61
|
-
if (shared) {
|
62
|
-
shared->PrepareFork();
|
63
|
-
++it;
|
64
|
-
} else {
|
65
|
-
it = forkables_.erase(it);
|
66
|
-
}
|
67
|
-
}
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
|
-
void ObjectGroupForkHandler::PostforkParent() {
|
72
|
-
if (IsForkEnabled()) {
|
73
|
-
CHECK(is_forking_);
|
74
|
-
GRPC_TRACE_LOG(fork, INFO) << "PostforkParent";
|
75
|
-
for (auto it = forkables_.begin(); it != forkables_.end();) {
|
76
|
-
auto shared = it->lock();
|
77
|
-
if (shared) {
|
78
|
-
shared->PostforkParent();
|
79
|
-
++it;
|
80
|
-
} else {
|
81
|
-
it = forkables_.erase(it);
|
82
|
-
}
|
83
|
-
}
|
84
|
-
is_forking_ = false;
|
85
|
-
}
|
86
|
-
}
|
87
|
-
|
88
|
-
void ObjectGroupForkHandler::PostforkChild() {
|
89
|
-
if (IsForkEnabled()) {
|
90
|
-
CHECK(is_forking_);
|
91
|
-
GRPC_TRACE_LOG(fork, INFO) << "PostforkChild";
|
92
|
-
for (auto it = forkables_.begin(); it != forkables_.end();) {
|
93
|
-
auto shared = it->lock();
|
94
|
-
if (shared) {
|
95
|
-
shared->PostforkChild();
|
96
|
-
++it;
|
97
|
-
} else {
|
98
|
-
it = forkables_.erase(it);
|
99
|
-
}
|
100
|
-
}
|
101
|
-
is_forking_ = false;
|
102
|
-
}
|
103
|
-
}
|
104
|
-
|
105
|
-
} // namespace grpc_event_engine::experimental
|
@@ -1,67 +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
|
-
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_FORKABLE_H
|
15
|
-
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_FORKABLE_H
|
16
|
-
|
17
|
-
#include <grpc/support/port_platform.h>
|
18
|
-
|
19
|
-
#include <memory>
|
20
|
-
#include <vector>
|
21
|
-
|
22
|
-
#include "src/core/lib/debug/trace.h"
|
23
|
-
|
24
|
-
namespace grpc_event_engine::experimental {
|
25
|
-
|
26
|
-
// An interface to be implemented by EventEngines that wish to have managed fork
|
27
|
-
// support. The child class must guarantee that those methods are thread-safe.
|
28
|
-
class Forkable {
|
29
|
-
public:
|
30
|
-
virtual ~Forkable() = default;
|
31
|
-
virtual void PrepareFork() = 0;
|
32
|
-
virtual void PostforkParent() = 0;
|
33
|
-
virtual void PostforkChild() = 0;
|
34
|
-
};
|
35
|
-
|
36
|
-
// ObjectGroupForkHandler is meant to be used as a static object in each
|
37
|
-
// translation unit where Forkables are created and registered with the
|
38
|
-
// ObjectGroupForkHandler. It essentially provides storage for Forkables'
|
39
|
-
// instances (as a vector of weak pointers) and helper methods that are meant to
|
40
|
-
// be invoked inside the fork handlers (see pthread_atfork(3)). The idea is to
|
41
|
-
// have different Forkables (e.g. PosixEventPoller) to store their instances
|
42
|
-
// (e.g. a PosixEventPoller object) in a single place separated from other
|
43
|
-
// Forkables (a sharded approach). Forkables need to register their pthread fork
|
44
|
-
// handlers and manage the relative ordering themselves. This object is
|
45
|
-
// thread-unsafe.
|
46
|
-
class ObjectGroupForkHandler {
|
47
|
-
public:
|
48
|
-
// Registers a Forkable with this ObjectGroupForkHandler, the Forkable must be
|
49
|
-
// created as a shared pointer.
|
50
|
-
void RegisterForkable(std::shared_ptr<Forkable> forkable,
|
51
|
-
GRPC_UNUSED void (*prepare)(void),
|
52
|
-
GRPC_UNUSED void (*parent)(void),
|
53
|
-
GRPC_UNUSED void (*child)(void));
|
54
|
-
|
55
|
-
void Prefork();
|
56
|
-
void PostforkParent();
|
57
|
-
void PostforkChild();
|
58
|
-
|
59
|
-
private:
|
60
|
-
GRPC_UNUSED bool registered_ = false;
|
61
|
-
bool is_forking_ = false;
|
62
|
-
std::vector<std::weak_ptr<Forkable> > forkables_;
|
63
|
-
};
|
64
|
-
|
65
|
-
} // namespace grpc_event_engine::experimental
|
66
|
-
|
67
|
-
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_FORKABLE_H
|
@@ -1,46 +0,0 @@
|
|
1
|
-
//
|
2
|
-
//
|
3
|
-
// Copyright 2018 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_SRC_CORE_LIB_IOMGR_PYTHON_UTIL_H
|
20
|
-
#define GRPC_SRC_CORE_LIB_IOMGR_PYTHON_UTIL_H
|
21
|
-
|
22
|
-
#include <grpc/slice.h>
|
23
|
-
#include <grpc/status.h>
|
24
|
-
#include <grpc/support/port_platform.h>
|
25
|
-
|
26
|
-
#include "src/core/lib/iomgr/error.h"
|
27
|
-
|
28
|
-
// These are only used by the gRPC Python extensions.
|
29
|
-
// They are easier to define here (rather than in Cython)
|
30
|
-
// because Cython doesn't handle #defines well.
|
31
|
-
|
32
|
-
inline grpc_error_handle grpc_socket_error(char* error) {
|
33
|
-
return grpc_error_set_int(GRPC_ERROR_CREATE(error),
|
34
|
-
grpc_core::StatusIntProperty::kRpcStatus,
|
35
|
-
GRPC_STATUS_UNAVAILABLE);
|
36
|
-
}
|
37
|
-
|
38
|
-
inline char* grpc_slice_buffer_start(grpc_slice_buffer* buffer, int i) {
|
39
|
-
return reinterpret_cast<char*>(GRPC_SLICE_START_PTR(buffer->slices[i]));
|
40
|
-
}
|
41
|
-
|
42
|
-
inline int grpc_slice_buffer_length(grpc_slice_buffer* buffer, int i) {
|
43
|
-
return GRPC_SLICE_LENGTH(buffer->slices[i]);
|
44
|
-
}
|
45
|
-
|
46
|
-
#endif // GRPC_SRC_CORE_LIB_IOMGR_PYTHON_UTIL_H
|
@@ -1,108 +0,0 @@
|
|
1
|
-
// Copyright 2017 The Abseil 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
|
-
// https://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 ABSL_BASE_INTERNAL_INLINE_VARIABLE_H_
|
16
|
-
#define ABSL_BASE_INTERNAL_INLINE_VARIABLE_H_
|
17
|
-
|
18
|
-
#include <type_traits>
|
19
|
-
|
20
|
-
#include "absl/base/internal/identity.h"
|
21
|
-
|
22
|
-
// File:
|
23
|
-
// This file define a macro that allows the creation of or emulation of C++17
|
24
|
-
// inline variables based on whether or not the feature is supported.
|
25
|
-
|
26
|
-
////////////////////////////////////////////////////////////////////////////////
|
27
|
-
// Macro: ABSL_INTERNAL_INLINE_CONSTEXPR(type, name, init)
|
28
|
-
//
|
29
|
-
// Description:
|
30
|
-
// Expands to the equivalent of an inline constexpr instance of the specified
|
31
|
-
// `type` and `name`, initialized to the value `init`. If the compiler being
|
32
|
-
// used is detected as supporting actual inline variables as a language
|
33
|
-
// feature, then the macro expands to an actual inline variable definition.
|
34
|
-
//
|
35
|
-
// Requires:
|
36
|
-
// `type` is a type that is usable in an extern variable declaration.
|
37
|
-
//
|
38
|
-
// Requires: `name` is a valid identifier
|
39
|
-
//
|
40
|
-
// Requires:
|
41
|
-
// `init` is an expression that can be used in the following definition:
|
42
|
-
// constexpr type name = init;
|
43
|
-
//
|
44
|
-
// Usage:
|
45
|
-
//
|
46
|
-
// // Equivalent to: `inline constexpr size_t variant_npos = -1;`
|
47
|
-
// ABSL_INTERNAL_INLINE_CONSTEXPR(size_t, variant_npos, -1);
|
48
|
-
//
|
49
|
-
// Differences in implementation:
|
50
|
-
// For a direct, language-level inline variable, decltype(name) will be the
|
51
|
-
// type that was specified along with const qualification, whereas for
|
52
|
-
// emulated inline variables, decltype(name) may be different (in practice
|
53
|
-
// it will likely be a reference type).
|
54
|
-
////////////////////////////////////////////////////////////////////////////////
|
55
|
-
|
56
|
-
#ifdef __cpp_inline_variables
|
57
|
-
|
58
|
-
// Clang's -Wmissing-variable-declarations option erroneously warned that
|
59
|
-
// inline constexpr objects need to be pre-declared. This has now been fixed,
|
60
|
-
// but we will need to support this workaround for people building with older
|
61
|
-
// versions of clang.
|
62
|
-
//
|
63
|
-
// Bug: https://bugs.llvm.org/show_bug.cgi?id=35862
|
64
|
-
//
|
65
|
-
// Note:
|
66
|
-
// type_identity_t is used here so that the const and name are in the
|
67
|
-
// appropriate place for pointer types, reference types, function pointer
|
68
|
-
// types, etc..
|
69
|
-
#if defined(__clang__)
|
70
|
-
#define ABSL_INTERNAL_EXTERN_DECL(type, name) \
|
71
|
-
extern const ::absl::internal::type_identity_t<type> name;
|
72
|
-
#else // Otherwise, just define the macro to do nothing.
|
73
|
-
#define ABSL_INTERNAL_EXTERN_DECL(type, name)
|
74
|
-
#endif // defined(__clang__)
|
75
|
-
|
76
|
-
// See above comment at top of file for details.
|
77
|
-
#define ABSL_INTERNAL_INLINE_CONSTEXPR(type, name, init) \
|
78
|
-
ABSL_INTERNAL_EXTERN_DECL(type, name) \
|
79
|
-
inline constexpr ::absl::internal::type_identity_t<type> name = init
|
80
|
-
|
81
|
-
#else
|
82
|
-
|
83
|
-
// See above comment at top of file for details.
|
84
|
-
//
|
85
|
-
// Note:
|
86
|
-
// type_identity_t is used here so that the const and name are in the
|
87
|
-
// appropriate place for pointer types, reference types, function pointer
|
88
|
-
// types, etc..
|
89
|
-
#define ABSL_INTERNAL_INLINE_CONSTEXPR(var_type, name, init) \
|
90
|
-
template <class /*AbslInternalDummy*/ = void> \
|
91
|
-
struct AbslInternalInlineVariableHolder##name { \
|
92
|
-
static constexpr ::absl::internal::type_identity_t<var_type> kInstance = \
|
93
|
-
init; \
|
94
|
-
}; \
|
95
|
-
\
|
96
|
-
template <class AbslInternalDummy> \
|
97
|
-
constexpr ::absl::internal::type_identity_t<var_type> \
|
98
|
-
AbslInternalInlineVariableHolder##name<AbslInternalDummy>::kInstance; \
|
99
|
-
\
|
100
|
-
static constexpr const ::absl::internal::type_identity_t<var_type>& \
|
101
|
-
name = /* NOLINT */ \
|
102
|
-
AbslInternalInlineVariableHolder##name<>::kInstance; \
|
103
|
-
static_assert(sizeof(void (*)(decltype(name))) != 0, \
|
104
|
-
"Silence unused variable warnings.")
|
105
|
-
|
106
|
-
#endif // __cpp_inline_variables
|
107
|
-
|
108
|
-
#endif // ABSL_BASE_INTERNAL_INLINE_VARIABLE_H_
|
@@ -1,241 +0,0 @@
|
|
1
|
-
// Copyright 2017 The Abseil 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
|
-
// https://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
|
-
// absl::base_internal::invoke(f, args...) is an implementation of
|
16
|
-
// INVOKE(f, args...) from section [func.require] of the C++ standard.
|
17
|
-
// When compiled as C++17 and later versions, it is implemented as an alias of
|
18
|
-
// std::invoke.
|
19
|
-
//
|
20
|
-
// [func.require]
|
21
|
-
// Define INVOKE (f, t1, t2, ..., tN) as follows:
|
22
|
-
// 1. (t1.*f)(t2, ..., tN) when f is a pointer to a member function of a class T
|
23
|
-
// and t1 is an object of type T or a reference to an object of type T or a
|
24
|
-
// reference to an object of a type derived from T;
|
25
|
-
// 2. ((*t1).*f)(t2, ..., tN) when f is a pointer to a member function of a
|
26
|
-
// class T and t1 is not one of the types described in the previous item;
|
27
|
-
// 3. t1.*f when N == 1 and f is a pointer to member data of a class T and t1 is
|
28
|
-
// an object of type T or a reference to an object of type T or a reference
|
29
|
-
// to an object of a type derived from T;
|
30
|
-
// 4. (*t1).*f when N == 1 and f is a pointer to member data of a class T and t1
|
31
|
-
// is not one of the types described in the previous item;
|
32
|
-
// 5. f(t1, t2, ..., tN) in all other cases.
|
33
|
-
//
|
34
|
-
// The implementation is SFINAE-friendly: substitution failure within invoke()
|
35
|
-
// isn't an error.
|
36
|
-
|
37
|
-
#ifndef ABSL_BASE_INTERNAL_INVOKE_H_
|
38
|
-
#define ABSL_BASE_INTERNAL_INVOKE_H_
|
39
|
-
|
40
|
-
#include "absl/base/config.h"
|
41
|
-
|
42
|
-
#if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
|
43
|
-
|
44
|
-
#include <functional>
|
45
|
-
|
46
|
-
namespace absl {
|
47
|
-
ABSL_NAMESPACE_BEGIN
|
48
|
-
namespace base_internal {
|
49
|
-
|
50
|
-
using std::invoke;
|
51
|
-
using std::invoke_result_t;
|
52
|
-
using std::is_invocable_r;
|
53
|
-
|
54
|
-
} // namespace base_internal
|
55
|
-
ABSL_NAMESPACE_END
|
56
|
-
} // namespace absl
|
57
|
-
|
58
|
-
#else // ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
|
59
|
-
|
60
|
-
#include <algorithm>
|
61
|
-
#include <type_traits>
|
62
|
-
#include <utility>
|
63
|
-
|
64
|
-
#include "absl/meta/type_traits.h"
|
65
|
-
|
66
|
-
// The following code is internal implementation detail. See the comment at the
|
67
|
-
// top of this file for the API documentation.
|
68
|
-
|
69
|
-
namespace absl {
|
70
|
-
ABSL_NAMESPACE_BEGIN
|
71
|
-
namespace base_internal {
|
72
|
-
|
73
|
-
// The five classes below each implement one of the clauses from the definition
|
74
|
-
// of INVOKE. The inner class template Accept<F, Args...> checks whether the
|
75
|
-
// clause is applicable; static function template Invoke(f, args...) does the
|
76
|
-
// invocation.
|
77
|
-
//
|
78
|
-
// By separating the clause selection logic from invocation we make sure that
|
79
|
-
// Invoke() does exactly what the standard says.
|
80
|
-
|
81
|
-
template <typename Derived>
|
82
|
-
struct StrippedAccept {
|
83
|
-
template <typename... Args>
|
84
|
-
struct Accept : Derived::template AcceptImpl<typename std::remove_cv<
|
85
|
-
typename std::remove_reference<Args>::type>::type...> {};
|
86
|
-
};
|
87
|
-
|
88
|
-
// (t1.*f)(t2, ..., tN) when f is a pointer to a member function of a class T
|
89
|
-
// and t1 is an object of type T or a reference to an object of type T or a
|
90
|
-
// reference to an object of a type derived from T.
|
91
|
-
struct MemFunAndRef : StrippedAccept<MemFunAndRef> {
|
92
|
-
template <typename... Args>
|
93
|
-
struct AcceptImpl : std::false_type {};
|
94
|
-
|
95
|
-
template <typename MemFunType, typename C, typename Obj, typename... Args>
|
96
|
-
struct AcceptImpl<MemFunType C::*, Obj, Args...>
|
97
|
-
: std::integral_constant<bool, std::is_base_of<C, Obj>::value &&
|
98
|
-
absl::is_function<MemFunType>::value> {
|
99
|
-
};
|
100
|
-
|
101
|
-
template <typename MemFun, typename Obj, typename... Args>
|
102
|
-
static decltype((std::declval<Obj>().*
|
103
|
-
std::declval<MemFun>())(std::declval<Args>()...))
|
104
|
-
Invoke(MemFun&& mem_fun, Obj&& obj, Args&&... args) {
|
105
|
-
// Ignore bogus GCC warnings on this line.
|
106
|
-
// See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101436 for similar example.
|
107
|
-
#if ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(11, 0)
|
108
|
-
#pragma GCC diagnostic push
|
109
|
-
#pragma GCC diagnostic ignored "-Warray-bounds"
|
110
|
-
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
111
|
-
#endif
|
112
|
-
return (std::forward<Obj>(obj).*
|
113
|
-
std::forward<MemFun>(mem_fun))(std::forward<Args>(args)...);
|
114
|
-
#if ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(11, 0)
|
115
|
-
#pragma GCC diagnostic pop
|
116
|
-
#endif
|
117
|
-
}
|
118
|
-
};
|
119
|
-
|
120
|
-
// ((*t1).*f)(t2, ..., tN) when f is a pointer to a member function of a
|
121
|
-
// class T and t1 is not one of the types described in the previous item.
|
122
|
-
struct MemFunAndPtr : StrippedAccept<MemFunAndPtr> {
|
123
|
-
template <typename... Args>
|
124
|
-
struct AcceptImpl : std::false_type {};
|
125
|
-
|
126
|
-
template <typename MemFunType, typename C, typename Ptr, typename... Args>
|
127
|
-
struct AcceptImpl<MemFunType C::*, Ptr, Args...>
|
128
|
-
: std::integral_constant<bool, !std::is_base_of<C, Ptr>::value &&
|
129
|
-
absl::is_function<MemFunType>::value> {
|
130
|
-
};
|
131
|
-
|
132
|
-
template <typename MemFun, typename Ptr, typename... Args>
|
133
|
-
static decltype(((*std::declval<Ptr>()).*
|
134
|
-
std::declval<MemFun>())(std::declval<Args>()...))
|
135
|
-
Invoke(MemFun&& mem_fun, Ptr&& ptr, Args&&... args) {
|
136
|
-
return ((*std::forward<Ptr>(ptr)).*
|
137
|
-
std::forward<MemFun>(mem_fun))(std::forward<Args>(args)...);
|
138
|
-
}
|
139
|
-
};
|
140
|
-
|
141
|
-
// t1.*f when N == 1 and f is a pointer to member data of a class T and t1 is
|
142
|
-
// an object of type T or a reference to an object of type T or a reference
|
143
|
-
// to an object of a type derived from T.
|
144
|
-
struct DataMemAndRef : StrippedAccept<DataMemAndRef> {
|
145
|
-
template <typename... Args>
|
146
|
-
struct AcceptImpl : std::false_type {};
|
147
|
-
|
148
|
-
template <typename R, typename C, typename Obj>
|
149
|
-
struct AcceptImpl<R C::*, Obj>
|
150
|
-
: std::integral_constant<bool, std::is_base_of<C, Obj>::value &&
|
151
|
-
!absl::is_function<R>::value> {};
|
152
|
-
|
153
|
-
template <typename DataMem, typename Ref>
|
154
|
-
static decltype(std::declval<Ref>().*std::declval<DataMem>()) Invoke(
|
155
|
-
DataMem&& data_mem, Ref&& ref) {
|
156
|
-
return std::forward<Ref>(ref).*std::forward<DataMem>(data_mem);
|
157
|
-
}
|
158
|
-
};
|
159
|
-
|
160
|
-
// (*t1).*f when N == 1 and f is a pointer to member data of a class T and t1
|
161
|
-
// is not one of the types described in the previous item.
|
162
|
-
struct DataMemAndPtr : StrippedAccept<DataMemAndPtr> {
|
163
|
-
template <typename... Args>
|
164
|
-
struct AcceptImpl : std::false_type {};
|
165
|
-
|
166
|
-
template <typename R, typename C, typename Ptr>
|
167
|
-
struct AcceptImpl<R C::*, Ptr>
|
168
|
-
: std::integral_constant<bool, !std::is_base_of<C, Ptr>::value &&
|
169
|
-
!absl::is_function<R>::value> {};
|
170
|
-
|
171
|
-
template <typename DataMem, typename Ptr>
|
172
|
-
static decltype((*std::declval<Ptr>()).*std::declval<DataMem>()) Invoke(
|
173
|
-
DataMem&& data_mem, Ptr&& ptr) {
|
174
|
-
return (*std::forward<Ptr>(ptr)).*std::forward<DataMem>(data_mem);
|
175
|
-
}
|
176
|
-
};
|
177
|
-
|
178
|
-
// f(t1, t2, ..., tN) in all other cases.
|
179
|
-
struct Callable {
|
180
|
-
// Callable doesn't have Accept because it's the last clause that gets picked
|
181
|
-
// when none of the previous clauses are applicable.
|
182
|
-
template <typename F, typename... Args>
|
183
|
-
static decltype(std::declval<F>()(std::declval<Args>()...)) Invoke(
|
184
|
-
F&& f, Args&&... args) {
|
185
|
-
return std::forward<F>(f)(std::forward<Args>(args)...);
|
186
|
-
}
|
187
|
-
};
|
188
|
-
|
189
|
-
// Resolves to the first matching clause.
|
190
|
-
template <typename... Args>
|
191
|
-
struct Invoker {
|
192
|
-
typedef typename std::conditional<
|
193
|
-
MemFunAndRef::Accept<Args...>::value, MemFunAndRef,
|
194
|
-
typename std::conditional<
|
195
|
-
MemFunAndPtr::Accept<Args...>::value, MemFunAndPtr,
|
196
|
-
typename std::conditional<
|
197
|
-
DataMemAndRef::Accept<Args...>::value, DataMemAndRef,
|
198
|
-
typename std::conditional<DataMemAndPtr::Accept<Args...>::value,
|
199
|
-
DataMemAndPtr, Callable>::type>::type>::
|
200
|
-
type>::type type;
|
201
|
-
};
|
202
|
-
|
203
|
-
// The result type of Invoke<F, Args...>.
|
204
|
-
template <typename F, typename... Args>
|
205
|
-
using invoke_result_t = decltype(Invoker<F, Args...>::type::Invoke(
|
206
|
-
std::declval<F>(), std::declval<Args>()...));
|
207
|
-
|
208
|
-
// Invoke(f, args...) is an implementation of INVOKE(f, args...) from section
|
209
|
-
// [func.require] of the C++ standard.
|
210
|
-
template <typename F, typename... Args>
|
211
|
-
invoke_result_t<F, Args...> invoke(F&& f, Args&&... args) {
|
212
|
-
return Invoker<F, Args...>::type::Invoke(std::forward<F>(f),
|
213
|
-
std::forward<Args>(args)...);
|
214
|
-
}
|
215
|
-
|
216
|
-
template <typename AlwaysVoid, typename, typename, typename...>
|
217
|
-
struct IsInvocableRImpl : std::false_type {};
|
218
|
-
|
219
|
-
template <typename R, typename F, typename... Args>
|
220
|
-
struct IsInvocableRImpl<
|
221
|
-
absl::void_t<absl::base_internal::invoke_result_t<F, Args...> >, R, F,
|
222
|
-
Args...>
|
223
|
-
: std::integral_constant<
|
224
|
-
bool,
|
225
|
-
std::is_convertible<absl::base_internal::invoke_result_t<F, Args...>,
|
226
|
-
R>::value ||
|
227
|
-
std::is_void<R>::value> {};
|
228
|
-
|
229
|
-
// Type trait whose member `value` is true if invoking `F` with `Args` is valid,
|
230
|
-
// and either the return type is convertible to `R`, or `R` is void.
|
231
|
-
// C++11-compatible version of `std::is_invocable_r`.
|
232
|
-
template <typename R, typename F, typename... Args>
|
233
|
-
using is_invocable_r = IsInvocableRImpl<void, R, F, Args...>;
|
234
|
-
|
235
|
-
} // namespace base_internal
|
236
|
-
ABSL_NAMESPACE_END
|
237
|
-
} // namespace absl
|
238
|
-
|
239
|
-
#endif // ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
|
240
|
-
|
241
|
-
#endif // ABSL_BASE_INTERNAL_INVOKE_H_
|
@@ -1,41 +0,0 @@
|
|
1
|
-
//
|
2
|
-
// Copyright 2022 The Abseil 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
|
-
// https://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
|
-
#include "absl/log/log_entry.h"
|
17
|
-
|
18
|
-
#include "absl/base/config.h"
|
19
|
-
|
20
|
-
namespace absl {
|
21
|
-
ABSL_NAMESPACE_BEGIN
|
22
|
-
|
23
|
-
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
24
|
-
constexpr int LogEntry::kNoVerbosityLevel;
|
25
|
-
constexpr int LogEntry::kNoVerboseLevel;
|
26
|
-
#endif
|
27
|
-
|
28
|
-
// https://github.com/abseil/abseil-cpp/issues/1465
|
29
|
-
// CMake builds on Apple platforms error when libraries are empty.
|
30
|
-
// Our CMake configuration can avoid this error on header-only libraries,
|
31
|
-
// but since this library is conditionally empty, including a single
|
32
|
-
// variable is an easy workaround.
|
33
|
-
#ifdef __APPLE__
|
34
|
-
namespace log_internal {
|
35
|
-
extern const char kAvoidEmptyLogEntryLibraryWarning;
|
36
|
-
const char kAvoidEmptyLogEntryLibraryWarning = 0;
|
37
|
-
} // namespace log_internal
|
38
|
-
#endif // __APPLE__
|
39
|
-
|
40
|
-
ABSL_NAMESPACE_END
|
41
|
-
} // namespace absl
|