grpc 1.64.3 → 1.65.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 +57 -58
- data/include/grpc/event_engine/event_engine.h +13 -6
- data/include/grpc/impl/channel_arg_names.h +7 -3
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/passive_listener.h +62 -0
- data/include/grpc/support/log.h +7 -17
- data/include/grpc/support/port_platform.h +3 -0
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +3 -3
- data/src/core/channelz/channelz.h +7 -7
- data/src/core/channelz/channelz_registry.cc +4 -3
- data/src/core/client_channel/backup_poller.cc +4 -5
- data/src/core/client_channel/client_channel.cc +1324 -0
- data/src/core/client_channel/client_channel.h +243 -0
- data/src/core/client_channel/client_channel_filter.cc +266 -709
- data/src/core/client_channel/client_channel_filter.h +11 -64
- data/src/core/client_channel/client_channel_internal.h +16 -5
- data/src/core/client_channel/client_channel_plugin.cc +1 -14
- data/src/core/client_channel/client_channel_service_config.h +3 -3
- data/src/core/client_channel/config_selector.cc +1 -1
- data/src/core/client_channel/config_selector.h +1 -1
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
- data/src/core/client_channel/load_balanced_call_destination.h +49 -0
- data/src/core/client_channel/retry_filter.cc +2 -9
- data/src/core/client_channel/retry_filter.h +2 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
- data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
- data/src/core/client_channel/retry_service_config.cc +4 -5
- data/src/core/client_channel/retry_service_config.h +3 -3
- data/src/core/client_channel/subchannel.cc +220 -112
- data/src/core/client_channel/subchannel.h +31 -18
- data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
- data/src/core/client_channel/subchannel_pool_interface.h +2 -4
- data/src/core/client_channel/subchannel_stream_client.cc +36 -49
- data/src/core/client_channel/subchannel_stream_client.h +2 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
- data/src/core/ext/filters/census/grpc_context.cc +2 -4
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.h +1 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
- data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
- data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
- data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
- data/src/core/handshaker/handshaker.cc +6 -14
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
- data/src/core/handshaker/security/secure_endpoint.cc +38 -32
- data/src/core/handshaker/security/secure_endpoint.h +0 -2
- data/src/core/handshaker/security/security_handshaker.cc +25 -37
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
- data/src/core/lib/address_utils/parse_address.cc +27 -39
- data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
- data/src/core/lib/avl/avl.h +1 -1
- data/src/core/lib/channel/channel_args.cc +13 -17
- data/src/core/lib/channel/channel_args.h +19 -8
- data/src/core/lib/channel/channel_stack.cc +5 -63
- data/src/core/lib/channel/channel_stack.h +13 -37
- data/src/core/lib/channel/channel_stack_builder.h +0 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
- data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
- data/src/core/lib/channel/connected_channel.cc +37 -676
- data/src/core/lib/channel/promise_based_filter.cc +41 -47
- data/src/core/lib/channel/promise_based_filter.h +124 -477
- data/src/core/lib/channel/status_util.cc +1 -1
- data/src/core/lib/compression/compression.cc +1 -1
- data/src/core/lib/compression/message_compress.cc +6 -6
- data/src/core/lib/config/config_vars.cc +3 -8
- data/src/core/lib/config/config_vars.h +1 -5
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/trace.cc +43 -59
- data/src/core/lib/debug/trace.h +2 -97
- data/src/core/lib/debug/trace_flags.cc +255 -0
- data/src/core/lib/debug/trace_flags.h +133 -0
- data/src/core/lib/debug/trace_impl.h +115 -0
- data/src/core/lib/event_engine/ares_resolver.cc +5 -7
- data/src/core/lib/event_engine/ares_resolver.h +1 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
- data/src/core/lib/event_engine/event_engine.cc +29 -4
- data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
- data/src/core/lib/event_engine/forkable.cc +4 -5
- data/src/core/lib/event_engine/forkable.h +0 -11
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
- data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
- data/src/core/lib/event_engine/shim.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
- data/src/core/lib/event_engine/thread_local.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
- data/src/core/lib/event_engine/trace.h +6 -17
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
- data/src/core/lib/event_engine/windows/win_socket.h +4 -5
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
- data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
- data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
- data/src/core/lib/experiments/experiments.cc +35 -151
- data/src/core/lib/experiments/experiments.h +12 -45
- data/src/core/lib/gprpp/bitset.h +1 -1
- data/src/core/lib/gprpp/crash.cc +2 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
- data/src/core/lib/gprpp/dump_args.cc +54 -0
- data/src/core/lib/gprpp/dump_args.h +69 -0
- data/src/core/lib/gprpp/glob.cc +70 -0
- data/src/core/lib/gprpp/glob.h +29 -0
- data/src/core/lib/gprpp/per_cpu.cc +1 -1
- data/src/core/lib/gprpp/posix/stat.cc +3 -4
- data/src/core/lib/gprpp/posix/thd.cc +8 -9
- data/src/core/lib/gprpp/ref_counted.h +30 -22
- data/src/core/lib/gprpp/single_set_ptr.h +5 -3
- data/src/core/lib/gprpp/status_helper.cc +11 -30
- data/src/core/lib/gprpp/status_helper.h +3 -31
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +3 -2
- data/src/core/lib/gprpp/unique_type_name.h +1 -1
- data/src/core/lib/gprpp/validation_errors.cc +10 -1
- data/src/core/lib/gprpp/validation_errors.h +11 -0
- data/src/core/lib/gprpp/windows/stat.cc +3 -4
- data/src/core/lib/gprpp/windows/thd.cc +3 -2
- data/src/core/lib/gprpp/work_serializer.cc +48 -57
- data/src/core/lib/iomgr/buffer_list.cc +4 -2
- data/src/core/lib/iomgr/call_combiner.cc +18 -27
- data/src/core/lib/iomgr/call_combiner.h +1 -3
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
- data/src/core/lib/iomgr/closure.h +2 -4
- data/src/core/lib/iomgr/combiner.cc +6 -8
- data/src/core/lib/iomgr/combiner.h +0 -2
- data/src/core/lib/iomgr/endpoint.cc +0 -6
- data/src/core/lib/iomgr/endpoint.h +0 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +13 -21
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +3 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
- data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
- data/src/core/lib/iomgr/ev_posix.cc +8 -9
- data/src/core/lib/iomgr/ev_posix.h +10 -7
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
- data/src/core/lib/iomgr/exec_ctx.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +6 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +8 -10
- data/src/core/lib/iomgr/fork_windows.cc +3 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/iocp_windows.cc +4 -3
- data/src/core/lib/iomgr/iomgr.cc +13 -17
- data/src/core/lib/iomgr/lockfree_event.cc +3 -5
- data/src/core/lib/iomgr/pollset.h +0 -2
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
- data/src/core/lib/iomgr/socket_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
- data/src/core/lib/iomgr/tcp_posix.cc +57 -84
- data/src/core/lib/iomgr/tcp_posix.h +0 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
- data/src/core/lib/iomgr/tcp_windows.cc +25 -41
- data/src/core/lib/iomgr/timer_generic.cc +17 -20
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/iomgr/timer_manager.cc +17 -30
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
- data/src/core/lib/promise/activity.h +27 -4
- data/src/core/lib/promise/cancel_callback.h +24 -0
- data/src/core/lib/promise/context.h +11 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -2
- data/src/core/lib/promise/detail/join_state.h +354 -398
- data/src/core/lib/promise/detail/promise_like.h +6 -5
- data/src/core/lib/promise/detail/seq_state.h +1178 -1178
- data/src/core/lib/promise/for_each.h +6 -6
- data/src/core/lib/promise/interceptor_list.h +6 -7
- data/src/core/lib/promise/latch.h +9 -9
- data/src/core/lib/promise/map.h +17 -0
- data/src/core/lib/promise/observable.h +182 -0
- data/src/core/lib/promise/party.cc +7 -8
- data/src/core/lib/promise/party.h +10 -8
- data/src/core/lib/promise/pipe.h +16 -35
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/status_flag.h +2 -0
- data/src/core/lib/resource_quota/arena.cc +56 -79
- data/src/core/lib/resource_quota/arena.h +118 -209
- data/src/core/lib/resource_quota/memory_quota.cc +12 -13
- data/src/core/lib/resource_quota/memory_quota.h +2 -3
- data/src/core/lib/resource_quota/periodic_update.cc +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
- data/src/core/lib/security/authorization/matchers.cc +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
- data/src/core/lib/security/context/security_context.cc +12 -13
- data/src/core/lib/security/context/security_context.h +31 -8
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
- data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
- data/src/core/lib/security/security_connector/security_connector.cc +1 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
- data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
- data/src/core/lib/security/transport/auth_filters.h +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice.h +1 -1
- data/src/core/lib/slice/slice_refcount.h +2 -4
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/surface/api_trace.h +1 -3
- data/src/core/lib/surface/call.cc +64 -3738
- data/src/core/lib/surface/call.h +41 -143
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_utils.cc +276 -0
- data/src/core/lib/surface/call_utils.h +449 -0
- data/src/core/lib/surface/channel.cc +8 -3
- data/src/core/lib/surface/channel.h +10 -7
- data/src/core/lib/surface/channel_create.cc +14 -6
- data/src/core/lib/surface/channel_create.h +3 -2
- data/src/core/lib/surface/channel_init.cc +21 -77
- data/src/core/lib/surface/channel_init.h +19 -97
- data/src/core/lib/surface/client_call.cc +419 -0
- data/src/core/lib/surface/client_call.h +180 -0
- data/src/core/lib/surface/completion_queue.cc +28 -33
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/filter_stack_call.cc +1157 -0
- data/src/core/lib/surface/filter_stack_call.h +369 -0
- data/src/core/lib/surface/init.cc +7 -6
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +40 -27
- data/src/core/lib/surface/legacy_channel.h +9 -18
- data/src/core/lib/surface/server_call.cc +222 -0
- data/src/core/lib/surface/server_call.h +167 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -5
- data/src/core/lib/transport/bdp_estimator.h +2 -4
- data/src/core/lib/transport/call_arena_allocator.h +9 -7
- data/src/core/lib/transport/call_destination.h +76 -0
- data/src/core/lib/transport/call_filters.cc +28 -10
- data/src/core/lib/transport/call_filters.h +128 -22
- data/src/core/lib/transport/call_spine.cc +5 -6
- data/src/core/lib/transport/call_spine.h +159 -334
- data/src/core/lib/transport/connectivity_state.cc +8 -10
- data/src/core/lib/transport/connectivity_state.h +0 -2
- data/src/core/lib/transport/interception_chain.cc +155 -0
- data/src/core/lib/transport/interception_chain.h +236 -0
- data/src/core/lib/transport/metadata_batch.h +10 -1
- data/src/core/lib/transport/metadata_info.h +1 -1
- data/src/core/lib/transport/transport.cc +3 -6
- data/src/core/lib/transport/transport.h +43 -40
- data/src/core/load_balancing/child_policy_handler.cc +8 -8
- data/src/core/load_balancing/endpoint_list.cc +5 -5
- data/src/core/load_balancing/endpoint_list.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
- data/src/core/load_balancing/health_check_client.cc +10 -13
- data/src/core/load_balancing/lb_policy.cc +5 -8
- data/src/core/load_balancing/lb_policy.h +19 -3
- data/src/core/load_balancing/lb_policy_factory.h +1 -1
- data/src/core/load_balancing/lb_policy_registry.cc +2 -3
- data/src/core/load_balancing/lb_policy_registry.h +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +2 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
- data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
- data/src/core/load_balancing/priority/priority.cc +26 -28
- data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
- data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
- data/src/core/load_balancing/rls/rls.cc +82 -82
- data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
- data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
- data/src/core/load_balancing/xds/cds.cc +14 -16
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
- data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
- data/src/core/load_balancing/xds/xds_override_host.h +3 -3
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
- data/src/core/resolver/binder/binder_resolver.cc +3 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
- data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
- data/src/core/resolver/endpoint_addresses.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +1 -1
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/resolver/polling_resolver.cc +30 -35
- data/src/core/resolver/resolver.cc +2 -6
- data/src/core/resolver/resolver.h +0 -2
- data/src/core/resolver/resolver_registry.cc +6 -8
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
- data/src/core/resolver/xds/xds_resolver.cc +13 -15
- data/src/core/server/server.cc +269 -389
- data/src/core/server/server.h +37 -19
- data/src/core/server/server_call_tracer_filter.cc +7 -14
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/server_interface.h +2 -0
- data/src/core/server/xds_channel_stack_modifier.cc +1 -1
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +1 -4
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_call_data.h +13 -11
- data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
- data/src/core/service_config/service_config_impl.cc +5 -5
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/service_config/service_config_parser.cc +3 -6
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
- data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
- data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
- data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
- data/src/core/telemetry/metrics.cc +178 -0
- data/src/core/telemetry/metrics.h +562 -0
- data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats.h +5 -5
- data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
- data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
- 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 +4 -3
- data/src/core/tsi/fake_transport_security.cc +14 -17
- data/src/core/tsi/local_transport_security.cc +6 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
- data/src/core/tsi/ssl_transport_security.cc +76 -81
- data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
- data/src/core/tsi/ssl_transport_security_utils.h +11 -0
- data/src/core/tsi/transport_security.cc +0 -4
- data/src/core/tsi/transport_security.h +0 -2
- data/src/core/tsi/transport_security_interface.h +0 -4
- data/src/core/{lib/gpr → util}/alloc.h +3 -3
- data/src/core/{lib/gpr → util}/android/log.cc +0 -19
- data/src/core/{lib/gpr → util}/atm.cc +1 -1
- data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
- data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
- data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
- data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
- data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
- data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
- data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
- data/src/core/{lib/http → util/http_client}/parser.h +5 -6
- data/src/core/{lib → util}/json/json.h +5 -4
- data/src/core/{lib → util}/json/json_args.h +5 -5
- data/src/core/{lib → util}/json/json_channel_args.h +6 -6
- data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
- data/src/core/{lib → util}/json/json_object_loader.h +7 -7
- data/src/core/{lib → util}/json/json_reader.cc +3 -2
- data/src/core/{lib → util}/json/json_reader.h +6 -6
- data/src/core/{lib → util}/json/json_util.cc +4 -4
- data/src/core/{lib → util}/json/json_util.h +6 -6
- data/src/core/{lib → util}/json/json_writer.cc +3 -3
- data/src/core/{lib → util}/json/json_writer.h +6 -6
- data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
- data/src/core/util/log.cc +165 -0
- data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
- data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/spinlock.h +3 -3
- data/src/core/{lib/gpr → util}/string.cc +2 -2
- data/src/core/{lib/gpr → util}/string.h +3 -3
- data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
- data/src/core/{lib/gpr → util}/time_precise.h +3 -3
- data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
- data/src/core/{lib/gpr → util}/useful.h +3 -3
- data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
- data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
- data/src/core/xds/grpc/certificate_provider_store.h +4 -4
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
- data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
- data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +4 -5
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_endpoint.cc +4 -5
- data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
- data/src/core/xds/grpc/xds_http_filters.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +4 -6
- data/src/core/xds/grpc/xds_route_config.cc +7 -8
- data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
- data/src/core/xds/xds_client/xds_api.cc +5 -9
- data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
- data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +39 -45
- data/src/core/xds/xds_client/xds_client.h +0 -3
- data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
- data/src/core/xds/xds_client/xds_client_stats.h +2 -2
- data/src/ruby/bin/math_pb.rb +1 -22
- data/src/ruby/ext/grpc/rb_call.c +8 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
- data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_server.c +39 -22
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
- data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
- metadata +103 -93
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
- data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
- data/src/core/handshaker/security/tsi_error.cc +0 -31
- data/src/core/handshaker/security/tsi_error.h +0 -30
- data/src/core/lib/channel/channel_stack_trace.cc +0 -19
- data/src/core/lib/channel/channel_stack_trace.h +0 -24
- data/src/core/lib/channel/context.h +0 -105
- data/src/core/lib/channel/metrics.cc +0 -334
- data/src/core/lib/channel/metrics.h +0 -365
- data/src/core/lib/event_engine/trace.cc +0 -25
- data/src/core/lib/gpr/log.cc +0 -166
- data/src/core/lib/iomgr/ev_windows.cc +0 -30
- data/src/core/lib/promise/trace.cc +0 -20
- data/src/core/lib/promise/trace.h +0 -24
- data/src/core/lib/resource_quota/trace.cc +0 -19
- data/src/core/lib/resource_quota/trace.h +0 -24
- data/src/core/lib/slice/slice_refcount.cc +0 -20
- data/src/core/lib/surface/api_trace.cc +0 -25
- data/src/core/lib/surface/call_trace.h +0 -24
- data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
- data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
- data/src/core/lib/transport/batch_builder.cc +0 -172
- data/src/core/lib/transport/batch_builder.h +0 -474
- data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
- data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
- /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
- /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
- /data/src/core/{lib/gpr → util}/time.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -21,13 +21,14 @@
|
|
21
21
|
#include <cstdint>
|
22
22
|
|
23
23
|
#include "absl/log/check.h"
|
24
|
+
#include "absl/log/log.h"
|
24
25
|
|
25
|
-
#include <grpc/support/log.h>
|
26
26
|
#include <grpc/support/port_platform.h>
|
27
27
|
|
28
28
|
#include "src/core/lib/gprpp/debug_location.h"
|
29
29
|
#include "src/core/lib/gprpp/down_cast.h"
|
30
30
|
#include "src/core/lib/gprpp/orphanable.h"
|
31
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
31
32
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
32
33
|
|
33
34
|
namespace grpc_core {
|
@@ -46,15 +47,16 @@ namespace grpc_core {
|
|
46
47
|
//
|
47
48
|
// This will be used by CRTP (curiously-recurring template pattern), e.g.:
|
48
49
|
// class MyClass : public RefCounted<MyClass> { ... };
|
49
|
-
|
50
|
-
|
50
|
+
//
|
51
|
+
// Impl & UnrefBehavior are as per RefCounted.
|
52
|
+
template <typename Child, typename Impl = PolymorphicRefCount,
|
53
|
+
typename UnrefBehavior = UnrefDelete>
|
54
|
+
class DualRefCounted : public Impl {
|
51
55
|
public:
|
52
56
|
// Not copyable nor movable.
|
53
57
|
DualRefCounted(const DualRefCounted&) = delete;
|
54
58
|
DualRefCounted& operator=(const DualRefCounted&) = delete;
|
55
59
|
|
56
|
-
virtual ~DualRefCounted() = default;
|
57
|
-
|
58
60
|
GRPC_MUST_USE_RESULT RefCountedPtr<Child> Ref() {
|
59
61
|
IncrementRefCount();
|
60
62
|
return RefCountedPtr<Child>(static_cast<Child*>(this));
|
@@ -91,8 +93,9 @@ class DualRefCounted {
|
|
91
93
|
#ifndef NDEBUG
|
92
94
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
93
95
|
if (trace_ != nullptr) {
|
94
|
-
|
95
|
-
|
96
|
+
LOG(INFO) << trace_ << ":" << this << " unref " << strong_refs << " -> "
|
97
|
+
<< strong_refs - 1 << ", weak_ref " << weak_refs << " -> "
|
98
|
+
<< weak_refs + 1;
|
96
99
|
}
|
97
100
|
CHECK_GT(strong_refs, 0u);
|
98
101
|
#endif
|
@@ -109,9 +112,10 @@ class DualRefCounted {
|
|
109
112
|
#ifndef NDEBUG
|
110
113
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
111
114
|
if (trace_ != nullptr) {
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
+
LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
|
116
|
+
<< location.line() << " unref " << strong_refs << " -> "
|
117
|
+
<< strong_refs - 1 << ", weak_ref " << weak_refs << " -> "
|
118
|
+
<< weak_refs + 1 << ") " << reason;
|
115
119
|
}
|
116
120
|
CHECK_GT(strong_refs, 0u);
|
117
121
|
#else
|
@@ -133,8 +137,9 @@ class DualRefCounted {
|
|
133
137
|
#ifndef NDEBUG
|
134
138
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
135
139
|
if (trace_ != nullptr) {
|
136
|
-
|
137
|
-
|
140
|
+
LOG(INFO) << trace_ << ":" << this << " ref_if_non_zero " << strong_refs
|
141
|
+
<< " -> " << strong_refs + 1 << " (weak_refs=" << weak_refs
|
142
|
+
<< ")";
|
138
143
|
}
|
139
144
|
#endif
|
140
145
|
if (strong_refs == 0) return nullptr;
|
@@ -151,10 +156,10 @@ class DualRefCounted {
|
|
151
156
|
#ifndef NDEBUG
|
152
157
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
153
158
|
if (trace_ != nullptr) {
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
159
|
+
LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
|
160
|
+
<< location.line() << " ref_if_non_zero " << strong_refs
|
161
|
+
<< " -> " << strong_refs + 1 << " (weak_refs=" << weak_refs
|
162
|
+
<< ") " << reason;
|
158
163
|
}
|
159
164
|
#else
|
160
165
|
// Avoid unused-parameter warnings for debug-only parameters
|
@@ -209,13 +214,13 @@ class DualRefCounted {
|
|
209
214
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
210
215
|
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
211
216
|
if (trace != nullptr) {
|
212
|
-
|
213
|
-
|
217
|
+
LOG(INFO) << trace << ":" << this << " weak_unref " << weak_refs << " -> "
|
218
|
+
<< weak_refs - 1 << " (refs=" << strong_refs << ")";
|
214
219
|
}
|
215
220
|
CHECK_GT(weak_refs, 0u);
|
216
221
|
#endif
|
217
222
|
if (GPR_UNLIKELY(prev_ref_pair == MakeRefPair(0, 1))) {
|
218
|
-
|
223
|
+
unref_behavior_(static_cast<Child*>(this));
|
219
224
|
}
|
220
225
|
}
|
221
226
|
void WeakUnref(const DebugLocation& location, const char* reason) {
|
@@ -231,9 +236,9 @@ class DualRefCounted {
|
|
231
236
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
232
237
|
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
233
238
|
if (trace != nullptr) {
|
234
|
-
|
235
|
-
|
236
|
-
|
239
|
+
LOG(INFO) << trace << ":" << this << " " << location.file() << ":"
|
240
|
+
<< location.line() << " weak_unref " << weak_refs << " -> "
|
241
|
+
<< weak_refs - 1 << " (refs=" << strong_refs << ") " << reason;
|
237
242
|
}
|
238
243
|
CHECK_GT(weak_refs, 0u);
|
239
244
|
#else
|
@@ -242,7 +247,7 @@ class DualRefCounted {
|
|
242
247
|
(void)reason;
|
243
248
|
#endif
|
244
249
|
if (GPR_UNLIKELY(prev_ref_pair == MakeRefPair(0, 1))) {
|
245
|
-
|
250
|
+
unref_behavior_(static_cast<const Child*>(this));
|
246
251
|
}
|
247
252
|
}
|
248
253
|
|
@@ -266,6 +271,9 @@ class DualRefCounted {
|
|
266
271
|
// Ref count has dropped to zero, so the object is now orphaned.
|
267
272
|
virtual void Orphaned() = 0;
|
268
273
|
|
274
|
+
// Note: Depending on the Impl used, this dtor can be implicitly virtual.
|
275
|
+
~DualRefCounted() = default;
|
276
|
+
|
269
277
|
private:
|
270
278
|
// Allow RefCountedPtr<> to access IncrementRefCount().
|
271
279
|
template <typename T>
|
@@ -293,8 +301,8 @@ class DualRefCounted {
|
|
293
301
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
294
302
|
CHECK_NE(strong_refs, 0u);
|
295
303
|
if (trace_ != nullptr) {
|
296
|
-
|
297
|
-
|
304
|
+
LOG(INFO) << trace_ << ":" << this << " ref " << strong_refs << " -> "
|
305
|
+
<< strong_refs + 1 << "; (weak_refs=" << weak_refs << ")";
|
298
306
|
}
|
299
307
|
#else
|
300
308
|
refs_.fetch_add(MakeRefPair(1, 0), std::memory_order_relaxed);
|
@@ -308,9 +316,10 @@ class DualRefCounted {
|
|
308
316
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
309
317
|
CHECK_NE(strong_refs, 0u);
|
310
318
|
if (trace_ != nullptr) {
|
311
|
-
|
312
|
-
|
313
|
-
|
319
|
+
LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
|
320
|
+
<< location.line() << " ref " << strong_refs << " -> "
|
321
|
+
<< strong_refs + 1 << " (weak_refs=" << weak_refs << ") "
|
322
|
+
<< reason;
|
314
323
|
}
|
315
324
|
#else
|
316
325
|
// Use conditionally-important parameters
|
@@ -327,9 +336,10 @@ class DualRefCounted {
|
|
327
336
|
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
328
337
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
329
338
|
if (trace_ != nullptr) {
|
330
|
-
|
331
|
-
|
339
|
+
LOG(INFO) << trace_ << ":" << this << " weak_ref " << weak_refs << " -> "
|
340
|
+
<< weak_refs + 1 << "; (refs=" << strong_refs << ")";
|
332
341
|
}
|
342
|
+
if (strong_refs == 0) CHECK_NE(weak_refs, 0u);
|
333
343
|
#else
|
334
344
|
refs_.fetch_add(MakeRefPair(0, 1), std::memory_order_relaxed);
|
335
345
|
#endif
|
@@ -342,10 +352,11 @@ class DualRefCounted {
|
|
342
352
|
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
343
353
|
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
344
354
|
if (trace_ != nullptr) {
|
345
|
-
|
346
|
-
|
347
|
-
|
355
|
+
LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
|
356
|
+
<< location.line() << " weak_ref " << weak_refs << " -> "
|
357
|
+
<< weak_refs + 1 << " (refs=" << strong_refs << ") " << reason;
|
348
358
|
}
|
359
|
+
if (strong_refs == 0) CHECK_NE(weak_refs, 0u);
|
349
360
|
#else
|
350
361
|
// Use conditionally-important parameters
|
351
362
|
(void)location;
|
@@ -358,6 +369,7 @@ class DualRefCounted {
|
|
358
369
|
const char* trace_;
|
359
370
|
#endif
|
360
371
|
std::atomic<uint64_t> refs_{0};
|
372
|
+
GPR_NO_UNIQUE_ADDRESS UnrefBehavior unref_behavior_;
|
361
373
|
};
|
362
374
|
|
363
375
|
} // namespace grpc_core
|
@@ -0,0 +1,54 @@
|
|
1
|
+
// Copyright 2024 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/gprpp/dump_args.h"
|
16
|
+
|
17
|
+
#include "absl/log/check.h"
|
18
|
+
#include "absl/strings/ascii.h"
|
19
|
+
#include "absl/strings/string_view.h"
|
20
|
+
|
21
|
+
namespace grpc_core {
|
22
|
+
namespace dump_args_detail {
|
23
|
+
|
24
|
+
std::ostream& operator<<(std::ostream& out, const DumpArgs& args) {
|
25
|
+
// Parse the argument string into a vector of keys.
|
26
|
+
// #__VA_ARGS__ produces a stringified version of the arguments passed to the
|
27
|
+
// macro. It's comma separated, and we can use that to split the string into
|
28
|
+
// keys. Those keys might include parenthesis for e.g. argument lists, and so
|
29
|
+
// we need to skip commas that are inside parenthesis.
|
30
|
+
std::vector<absl::string_view> keys;
|
31
|
+
int depth = 0;
|
32
|
+
const char* start = args.arg_string_;
|
33
|
+
for (const char* p = args.arg_string_; *p; ++p) {
|
34
|
+
if (*p == '(') {
|
35
|
+
++depth;
|
36
|
+
} else if (*p == ')') {
|
37
|
+
--depth;
|
38
|
+
} else if (*p == ',' && depth == 0) {
|
39
|
+
keys.push_back(absl::string_view(start, p - start));
|
40
|
+
start = p + 1;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
keys.push_back(start);
|
44
|
+
CHECK_EQ(keys.size(), args.arg_dumpers_.size());
|
45
|
+
for (size_t i = 0; i < keys.size(); i++) {
|
46
|
+
if (i != 0) out << ", ";
|
47
|
+
out << absl::StripAsciiWhitespace(keys[i]) << " = ";
|
48
|
+
args.arg_dumpers_[i](out);
|
49
|
+
}
|
50
|
+
return out;
|
51
|
+
}
|
52
|
+
|
53
|
+
} // namespace dump_args_detail
|
54
|
+
} // namespace grpc_core
|
@@ -0,0 +1,69 @@
|
|
1
|
+
// Copyright 2024 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_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H
|
16
|
+
#define GRPC_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H
|
17
|
+
|
18
|
+
#include <ostream>
|
19
|
+
#include <vector>
|
20
|
+
|
21
|
+
#include "absl/functional/any_invocable.h"
|
22
|
+
|
23
|
+
namespace grpc_core {
|
24
|
+
namespace dump_args_detail {
|
25
|
+
|
26
|
+
// Helper function... just ignore the initializer list passed into it.
|
27
|
+
// Allows doing 'statements' via parameter pack expansion in C++11 - given
|
28
|
+
// template <typename... Ts>:
|
29
|
+
// do_these_things({foo<Ts>()...});
|
30
|
+
// will execute foo<T>() for each T in Ts.
|
31
|
+
template <typename T>
|
32
|
+
void do_these_things(std::initializer_list<T>) {}
|
33
|
+
|
34
|
+
class DumpArgs {
|
35
|
+
public:
|
36
|
+
template <typename... Args>
|
37
|
+
explicit DumpArgs(const char* arg_string, const Args&... args)
|
38
|
+
: arg_string_(arg_string) {
|
39
|
+
do_these_things({AddDumper(&args)...});
|
40
|
+
}
|
41
|
+
|
42
|
+
friend std::ostream& operator<<(std::ostream& out, const DumpArgs& args);
|
43
|
+
|
44
|
+
private:
|
45
|
+
template <typename T>
|
46
|
+
int AddDumper(T* p) {
|
47
|
+
arg_dumpers_.push_back([p](std::ostream& os) { os << *p; });
|
48
|
+
return 0;
|
49
|
+
}
|
50
|
+
|
51
|
+
const char* arg_string_;
|
52
|
+
std::vector<absl::AnyInvocable<void(std::ostream&) const>> arg_dumpers_;
|
53
|
+
};
|
54
|
+
|
55
|
+
} // namespace dump_args_detail
|
56
|
+
} // namespace grpc_core
|
57
|
+
|
58
|
+
// Helper to print a list of variables and their values.
|
59
|
+
// Each type must be streamable to std::ostream.
|
60
|
+
// Usage:
|
61
|
+
// int a = 1;
|
62
|
+
// int b = 2;
|
63
|
+
// LOG(INFO) << GRPC_DUMP_ARGS(a, b)
|
64
|
+
// Output:
|
65
|
+
// a = 1, b = 2
|
66
|
+
#define GRPC_DUMP_ARGS(...) \
|
67
|
+
grpc_core::dump_args_detail::DumpArgs(#__VA_ARGS__, __VA_ARGS__)
|
68
|
+
|
69
|
+
#endif // GRPC_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H
|
@@ -0,0 +1,70 @@
|
|
1
|
+
// Copyright 2024 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include "absl/strings/string_view.h"
|
16
|
+
|
17
|
+
namespace grpc_core {
|
18
|
+
|
19
|
+
namespace {
|
20
|
+
bool IsGlob(absl::string_view trace_glob) {
|
21
|
+
return std::any_of(trace_glob.begin(), trace_glob.end(),
|
22
|
+
[](const char c) { return c == '?' || c == '*'; });
|
23
|
+
}
|
24
|
+
} // namespace
|
25
|
+
|
26
|
+
bool GlobMatch(absl::string_view name, absl::string_view pattern) {
|
27
|
+
if (!IsGlob(pattern)) return name == pattern;
|
28
|
+
size_t name_idx = 0;
|
29
|
+
size_t trace_idx = 0;
|
30
|
+
// pointers for iterative wildcard * matching.
|
31
|
+
size_t name_next_idx = name_idx;
|
32
|
+
size_t trace_next_idx = trace_idx;
|
33
|
+
|
34
|
+
while (trace_idx < pattern.length() || name_idx < name.length()) {
|
35
|
+
if (trace_idx < pattern.length()) {
|
36
|
+
switch (pattern.at(trace_idx)) {
|
37
|
+
case '?':
|
38
|
+
if (name_idx < name.length()) {
|
39
|
+
++trace_idx;
|
40
|
+
++name_idx;
|
41
|
+
continue;
|
42
|
+
}
|
43
|
+
break;
|
44
|
+
case '*':
|
45
|
+
trace_next_idx = trace_idx;
|
46
|
+
name_next_idx = name_idx + 1;
|
47
|
+
++trace_idx;
|
48
|
+
continue;
|
49
|
+
default:
|
50
|
+
if (name_idx < name.length() &&
|
51
|
+
name.at(name_idx) == pattern.at(trace_idx)) {
|
52
|
+
++trace_idx;
|
53
|
+
++name_idx;
|
54
|
+
continue;
|
55
|
+
}
|
56
|
+
break;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
// Failed to match a character. Restart if possible.
|
60
|
+
if (name_next_idx > 0 && name_next_idx <= name.length()) {
|
61
|
+
trace_idx = trace_next_idx;
|
62
|
+
name_idx = name_next_idx;
|
63
|
+
continue;
|
64
|
+
}
|
65
|
+
return false;
|
66
|
+
}
|
67
|
+
return true;
|
68
|
+
}
|
69
|
+
|
70
|
+
} // namespace grpc_core
|
@@ -0,0 +1,29 @@
|
|
1
|
+
// Copyright 2024 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_SRC_CORE_LIB_GPRPP_GLOB_H
|
16
|
+
#define GRPC_SRC_CORE_LIB_GPRPP_GLOB_H
|
17
|
+
|
18
|
+
#include "absl/strings/string_view.h"
|
19
|
+
|
20
|
+
namespace grpc_core {
|
21
|
+
|
22
|
+
// A basic glob matcher based on https://research.swtch.com/glob.
|
23
|
+
// This supports `?` (a single wildcard character), and `*` (multiple wildcard
|
24
|
+
// characters).
|
25
|
+
bool GlobMatch(absl::string_view name, absl::string_view pattern);
|
26
|
+
|
27
|
+
} // namespace grpc_core
|
28
|
+
|
29
|
+
#endif // GRPC_SRC_CORE_LIB_GPRPP_GLOB_H
|
@@ -28,8 +28,7 @@
|
|
28
28
|
#include <sys/stat.h>
|
29
29
|
|
30
30
|
#include "absl/log/check.h"
|
31
|
-
|
32
|
-
#include <grpc/support/log.h>
|
31
|
+
#include "absl/log/log.h"
|
33
32
|
|
34
33
|
#include "src/core/lib/gprpp/stat.h"
|
35
34
|
#include "src/core/lib/gprpp/strerror.h"
|
@@ -42,8 +41,8 @@ absl::Status GetFileModificationTime(const char* filename, time_t* timestamp) {
|
|
42
41
|
struct stat buf;
|
43
42
|
if (stat(filename, &buf) != 0) {
|
44
43
|
std::string error_msg = StrError(errno);
|
45
|
-
|
46
|
-
|
44
|
+
LOG(ERROR) << "stat failed for filename " << filename << " with error "
|
45
|
+
<< error_msg;
|
47
46
|
return absl::Status(absl::StatusCode::kInternal, error_msg);
|
48
47
|
}
|
49
48
|
// Last file/directory modification time.
|
@@ -33,17 +33,17 @@
|
|
33
33
|
#include <unistd.h>
|
34
34
|
|
35
35
|
#include "absl/log/check.h"
|
36
|
+
#include "absl/log/log.h"
|
36
37
|
|
37
|
-
#include <grpc/support/log.h>
|
38
38
|
#include <grpc/support/sync.h>
|
39
39
|
#include <grpc/support/thd_id.h>
|
40
40
|
#include <grpc/support/time.h>
|
41
41
|
|
42
|
-
#include "src/core/lib/gpr/useful.h"
|
43
42
|
#include "src/core/lib/gprpp/crash.h"
|
44
43
|
#include "src/core/lib/gprpp/fork.h"
|
45
44
|
#include "src/core/lib/gprpp/strerror.h"
|
46
45
|
#include "src/core/lib/gprpp/thd.h"
|
46
|
+
#include "src/core/util/useful.h"
|
47
47
|
|
48
48
|
namespace grpc_core {
|
49
49
|
namespace {
|
@@ -157,8 +157,7 @@ class ThreadInternalsPosix : public internal::ThreadInternalsInterface {
|
|
157
157
|
CHECK_EQ(pthread_attr_destroy(&attr), 0);
|
158
158
|
|
159
159
|
if (!(*success)) {
|
160
|
-
|
161
|
-
StrError(pthread_create_err).c_str());
|
160
|
+
LOG(ERROR) << "pthread_create failed: " << StrError(pthread_create_err);
|
162
161
|
// don't use gpr_free, as this was allocated using malloc (see above)
|
163
162
|
free(info);
|
164
163
|
if (options.tracked()) {
|
@@ -198,8 +197,8 @@ class ThreadInternalsPosix : public internal::ThreadInternalsInterface {
|
|
198
197
|
void Thread::Signal(gpr_thd_id tid, int sig) {
|
199
198
|
auto kill_err = pthread_kill((pthread_t)tid, sig);
|
200
199
|
if (kill_err != 0) {
|
201
|
-
|
202
|
-
|
200
|
+
LOG(ERROR) << "pthread_kill for tid " << tid
|
201
|
+
<< " failed: " << StrError(kill_err);
|
203
202
|
}
|
204
203
|
}
|
205
204
|
|
@@ -207,13 +206,13 @@ void Thread::Signal(gpr_thd_id tid, int sig) {
|
|
207
206
|
void Thread::Kill(gpr_thd_id tid) {
|
208
207
|
auto cancel_err = pthread_cancel((pthread_t)tid);
|
209
208
|
if (cancel_err != 0) {
|
210
|
-
|
211
|
-
|
209
|
+
LOG(ERROR) << "pthread_cancel for tid " << tid
|
210
|
+
<< " failed: " << StrError(cancel_err);
|
212
211
|
}
|
213
212
|
}
|
214
213
|
#else // GPR_ANDROID
|
215
214
|
void Thread::Kill(gpr_thd_id /* tid */) {
|
216
|
-
|
215
|
+
VLOG(2) << "Thread::Kill is not supported on Android.";
|
217
216
|
}
|
218
217
|
#endif
|
219
218
|
|
@@ -24,8 +24,8 @@
|
|
24
24
|
#include <cinttypes>
|
25
25
|
|
26
26
|
#include "absl/log/check.h"
|
27
|
+
#include "absl/log/log.h"
|
27
28
|
|
28
|
-
#include <grpc/support/log.h>
|
29
29
|
#include <grpc/support/port_platform.h>
|
30
30
|
|
31
31
|
#include "src/core/lib/gprpp/atomic_utils.h"
|
@@ -73,8 +73,8 @@ class RefCount {
|
|
73
73
|
#ifndef NDEBUG
|
74
74
|
const Value prior = value_.fetch_add(n, std::memory_order_relaxed);
|
75
75
|
if (trace_ != nullptr) {
|
76
|
-
|
77
|
-
|
76
|
+
LOG(INFO) << trace_ << ":" << this << " ref " << prior << " -> "
|
77
|
+
<< prior + n;
|
78
78
|
}
|
79
79
|
#else
|
80
80
|
value_.fetch_add(n, std::memory_order_relaxed);
|
@@ -84,9 +84,9 @@ class RefCount {
|
|
84
84
|
#ifndef NDEBUG
|
85
85
|
const Value prior = value_.fetch_add(n, std::memory_order_relaxed);
|
86
86
|
if (trace_ != nullptr) {
|
87
|
-
|
88
|
-
|
89
|
-
|
87
|
+
LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
|
88
|
+
<< location.line() << " ref " << prior << " -> " << prior + n
|
89
|
+
<< " " << reason;
|
90
90
|
}
|
91
91
|
#else
|
92
92
|
// Use conditionally-important parameters
|
@@ -101,8 +101,8 @@ class RefCount {
|
|
101
101
|
#ifndef NDEBUG
|
102
102
|
const Value prior = value_.fetch_add(1, std::memory_order_relaxed);
|
103
103
|
if (trace_ != nullptr) {
|
104
|
-
|
105
|
-
|
104
|
+
LOG(INFO) << trace_ << ":" << this << " ref " << prior << " -> "
|
105
|
+
<< prior + 1;
|
106
106
|
}
|
107
107
|
assert(prior > 0);
|
108
108
|
#else
|
@@ -113,9 +113,9 @@ class RefCount {
|
|
113
113
|
#ifndef NDEBUG
|
114
114
|
const Value prior = value_.fetch_add(1, std::memory_order_relaxed);
|
115
115
|
if (trace_ != nullptr) {
|
116
|
-
|
117
|
-
|
118
|
-
|
116
|
+
LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
|
117
|
+
<< location.line() << " ref " << prior << " -> " << prior + 1
|
118
|
+
<< " " << reason;
|
119
119
|
}
|
120
120
|
assert(prior > 0);
|
121
121
|
#else
|
@@ -130,8 +130,8 @@ class RefCount {
|
|
130
130
|
#ifndef NDEBUG
|
131
131
|
if (trace_ != nullptr) {
|
132
132
|
const Value prior = get();
|
133
|
-
|
134
|
-
|
133
|
+
LOG(INFO) << trace_ << ":" << this << " ref_if_non_zero " << prior
|
134
|
+
<< " -> " << prior + 1;
|
135
135
|
}
|
136
136
|
#endif
|
137
137
|
return IncrementIfNonzero(&value_);
|
@@ -140,10 +140,9 @@ class RefCount {
|
|
140
140
|
#ifndef NDEBUG
|
141
141
|
if (trace_ != nullptr) {
|
142
142
|
const Value prior = get();
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
reason);
|
143
|
+
LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
|
144
|
+
<< location.line() << " ref_if_non_zero " << prior << " -> "
|
145
|
+
<< prior + 1 << " " << reason;
|
147
146
|
}
|
148
147
|
#endif
|
149
148
|
// Avoid unused-parameter warnings for debug-only parameters
|
@@ -163,8 +162,8 @@ class RefCount {
|
|
163
162
|
const Value prior = value_.fetch_sub(1, std::memory_order_acq_rel);
|
164
163
|
#ifndef NDEBUG
|
165
164
|
if (trace != nullptr) {
|
166
|
-
|
167
|
-
|
165
|
+
LOG(INFO) << trace << ":" << this << " unref " << prior << " -> "
|
166
|
+
<< prior - 1;
|
168
167
|
}
|
169
168
|
DCHECK_GT(prior, 0);
|
170
169
|
#endif
|
@@ -180,9 +179,9 @@ class RefCount {
|
|
180
179
|
const Value prior = value_.fetch_sub(1, std::memory_order_acq_rel);
|
181
180
|
#ifndef NDEBUG
|
182
181
|
if (trace != nullptr) {
|
183
|
-
|
184
|
-
|
185
|
-
|
182
|
+
LOG(INFO) << trace << ":" << this << " " << location.file() << ":"
|
183
|
+
<< location.line() << " unref " << prior << " -> " << prior - 1
|
184
|
+
<< " " << reason;
|
186
185
|
}
|
187
186
|
DCHECK_GT(prior, 0);
|
188
187
|
#else
|
@@ -246,6 +245,15 @@ struct UnrefCallDtor {
|
|
246
245
|
}
|
247
246
|
};
|
248
247
|
|
248
|
+
// Call the Destroy method on the object. This is useful when the object
|
249
|
+
// needs precise control of how it's deallocated.
|
250
|
+
struct UnrefCallDestroy {
|
251
|
+
template <typename T>
|
252
|
+
void operator()(T* p) const {
|
253
|
+
p->Destroy();
|
254
|
+
}
|
255
|
+
};
|
256
|
+
|
249
257
|
// A base class for reference-counted objects.
|
250
258
|
// New objects should be created via new and start with a refcount of 1.
|
251
259
|
// When the refcount reaches 0, executes the specified UnrefBehavior.
|
@@ -63,17 +63,19 @@ class SingleSetPtr {
|
|
63
63
|
void Reset() { Delete(p_.exchange(nullptr, std::memory_order_acq_rel)); }
|
64
64
|
|
65
65
|
bool is_set() const {
|
66
|
-
T* p =
|
66
|
+
T* p = Get();
|
67
67
|
return p != nullptr;
|
68
68
|
}
|
69
69
|
|
70
|
+
T* Get() const { return p_.load(std::memory_order_acquire); }
|
71
|
+
|
70
72
|
T* operator->() const {
|
71
|
-
T* p =
|
73
|
+
T* p = Get();
|
72
74
|
DCHECK_NE(p, nullptr);
|
73
75
|
return p;
|
74
76
|
}
|
75
77
|
|
76
|
-
T& operator*() const { return *
|
78
|
+
T& operator*() const { return *Get(); }
|
77
79
|
|
78
80
|
private:
|
79
81
|
static void Delete(T* p) {
|