grpc 1.18.0 → 1.22.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +4731 -7404
- data/etc/roots.pem +146 -0
- data/include/grpc/grpc.h +11 -6
- data/include/grpc/grpc_security.h +297 -4
- data/include/grpc/grpc_security_constants.h +1 -1
- data/include/grpc/impl/codegen/byte_buffer.h +13 -0
- data/include/grpc/impl/codegen/gpr_types.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +30 -7
- data/include/grpc/impl/codegen/port_platform.h +88 -7
- data/include/grpc/impl/codegen/slice.h +2 -22
- data/include/grpc/impl/codegen/status.h +2 -1
- data/include/grpc/impl/codegen/sync_posix.h +18 -0
- data/include/grpc/slice.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +21 -16
- data/src/core/ext/filters/client_channel/backup_poller.h +8 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +3 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +2435 -1557
- data/src/core/ext/filters/client_channel/client_channel.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -89
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +8 -33
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +22 -34
- data/src/core/ext/filters/client_channel/client_channel_factory.h +19 -38
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -11
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +179 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +68 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +59 -55
- data/src/core/ext/filters/client_channel/health/health_check_client.h +20 -9
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +146 -157
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +29 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +844 -859
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +16 -12
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +185 -312
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +143 -375
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +192 -245
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +1554 -955
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_secure.cc +0 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.cc +115 -22
- data/src/core/ext/filters/client_channel/lb_policy.h +260 -129
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +5 -2
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +107 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -3
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +96 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +56 -0
- data/src/core/ext/filters/client_channel/parse_address.cc +24 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +121 -122
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +84 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +179 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +24 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +111 -47
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +7 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +39 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +0 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -64
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +28 -0
- data/src/core/{lib/iomgr/network_status_tracker.cc → ext/filters/client_channel/resolver/dns/dns_resolver_selection.h} +8 -15
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +36 -82
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +111 -72
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +13 -8
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +28 -63
- data/src/core/ext/filters/client_channel/resolver.cc +54 -1
- data/src/core/ext/filters/client_channel/resolver.h +52 -23
- data/src/core/ext/filters/client_channel/resolver_factory.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_registry.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver_registry.h +5 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +368 -241
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +58 -76
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +543 -0
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +139 -0
- data/src/core/ext/filters/client_channel/server_address.cc +4 -54
- data/src/core/ext/filters/client_channel/server_address.h +1 -13
- data/src/core/ext/filters/client_channel/service_config.cc +329 -0
- data/src/core/ext/filters/client_channel/service_config.h +205 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +803 -838
- data/src/core/ext/filters/client_channel/subchannel.h +295 -128
- data/src/core/ext/filters/client_channel/subchannel_interface.h +113 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +97 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +94 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/http/client/http_client_filter.cc +7 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +4 -3
- data/src/core/ext/filters/http/server/http_server_filter.cc +18 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +5 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +119 -77
- data/src/core/ext/filters/message_size/message_size_filter.h +33 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +13 -12
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +45 -47
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +134 -143
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +68 -21
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +4 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +9 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +156 -94
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -37
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +8 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +74 -55
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +33 -11
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -2
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +7 -14
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -1
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +9 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +43 -30
- data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -70
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +70 -33
- data/src/core/ext/transport/inproc/inproc_transport.cc +26 -18
- data/src/core/lib/channel/channel_args.cc +2 -101
- data/src/core/lib/channel/channel_args.h +3 -37
- data/src/core/lib/channel/channel_stack.h +10 -6
- data/src/core/lib/channel/channel_trace.cc +4 -4
- data/src/core/lib/channel/channel_trace.h +4 -4
- data/src/core/lib/channel/channelz.cc +168 -38
- data/src/core/lib/channel/channelz.h +40 -44
- data/src/core/lib/channel/channelz_registry.cc +75 -107
- data/src/core/lib/channel/channelz_registry.h +10 -28
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/context.h +2 -2
- data/src/core/lib/channel/handshaker.cc +151 -218
- data/src/core/lib/channel/handshaker.h +110 -101
- data/src/core/lib/channel/handshaker_factory.h +11 -19
- data/src/core/lib/channel/handshaker_registry.cc +67 -51
- data/src/core/lib/channel/handshaker_registry.h +21 -16
- data/src/core/lib/compression/algorithm_metadata.h +3 -3
- data/src/core/lib/compression/compression.cc +14 -9
- data/src/core/lib/compression/compression_args.cc +127 -0
- data/src/core/lib/compression/compression_args.h +55 -0
- data/src/core/lib/compression/compression_internal.cc +16 -12
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/compression/stream_compression.cc +3 -2
- data/src/core/lib/compression/stream_compression.h +2 -2
- data/src/core/lib/compression/stream_compression_gzip.cc +9 -9
- data/src/core/lib/debug/trace.cc +13 -7
- data/src/core/lib/debug/trace.h +14 -1
- data/src/core/lib/gpr/arena.h +13 -9
- data/src/core/lib/gpr/cpu_posix.cc +5 -3
- data/src/core/lib/gpr/env.h +3 -6
- data/src/core/lib/gpr/env_linux.cc +6 -1
- data/src/core/lib/gpr/env_posix.cc +5 -0
- data/src/core/lib/gpr/env_windows.cc +7 -5
- data/src/core/lib/gpr/log.cc +9 -13
- data/src/core/lib/gpr/log_posix.cc +2 -1
- data/src/core/lib/gpr/string.cc +20 -7
- data/src/core/lib/gpr/string.h +10 -3
- data/src/core/lib/gpr/sync_posix.cc +65 -4
- data/src/core/lib/gpr/time.cc +8 -0
- data/src/core/lib/gpr/time_posix.cc +21 -2
- data/src/core/lib/gprpp/arena.cc +103 -0
- data/src/core/lib/gprpp/arena.h +121 -0
- data/src/core/lib/gprpp/atomic.h +75 -5
- data/src/core/lib/gprpp/fork.cc +13 -32
- data/src/core/lib/gprpp/fork.h +5 -1
- data/src/core/lib/gprpp/global_config.h +96 -0
- data/src/core/lib/gprpp/global_config_custom.h +29 -0
- data/src/core/lib/gprpp/global_config_env.cc +135 -0
- data/src/core/lib/gprpp/global_config_env.h +131 -0
- data/src/core/lib/gprpp/global_config_generic.h +44 -0
- data/src/core/lib/gprpp/inlined_vector.h +8 -0
- data/src/core/lib/gprpp/map.h +436 -0
- data/src/core/lib/gprpp/memory.h +2 -2
- data/src/core/lib/gprpp/optional.h +48 -0
- data/src/core/lib/gprpp/orphanable.h +6 -5
- data/src/core/lib/gprpp/{mutex_lock.h → pair.h} +15 -19
- data/src/core/lib/gprpp/ref_counted.h +36 -17
- data/src/core/lib/gprpp/sync.h +126 -0
- data/src/core/lib/gprpp/thd.h +42 -7
- data/src/core/lib/gprpp/thd_posix.cc +31 -13
- data/src/core/lib/gprpp/thd_windows.cc +47 -34
- data/src/core/lib/http/httpcli.cc +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +13 -15
- data/src/core/lib/http/parser.cc +3 -2
- data/src/core/lib/http/parser.h +2 -1
- data/src/core/lib/iomgr/buffer_list.cc +182 -24
- data/src/core/lib/iomgr/buffer_list.h +72 -10
- data/src/core/lib/iomgr/call_combiner.cc +84 -90
- data/src/core/lib/iomgr/call_combiner.h +75 -82
- data/src/core/lib/iomgr/cfstream_handle.cc +203 -0
- data/src/core/lib/iomgr/cfstream_handle.h +86 -0
- data/src/core/lib/iomgr/combiner.cc +11 -3
- data/src/core/lib/iomgr/combiner.h +1 -1
- data/src/core/lib/iomgr/endpoint.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +3 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +375 -0
- data/src/core/lib/iomgr/endpoint_cfstream.h +49 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
- data/src/core/lib/iomgr/error.cc +21 -17
- data/src/core/lib/iomgr/error.h +36 -6
- data/src/core/lib/iomgr/error_cfstream.cc +52 -0
- data/src/core/lib/iomgr/error_cfstream.h +31 -0
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +44 -28
- data/src/core/lib/iomgr/ev_epollex_linux.cc +173 -194
- data/src/core/lib/iomgr/ev_poll_posix.cc +16 -487
- data/src/core/lib/iomgr/ev_posix.cc +29 -19
- data/src/core/lib/iomgr/ev_posix.h +19 -3
- data/src/core/lib/iomgr/ev_windows.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -0
- data/src/core/lib/iomgr/exec_ctx.h +137 -8
- data/src/core/lib/iomgr/executor.cc +147 -95
- data/src/core/lib/iomgr/executor.h +55 -49
- data/src/core/lib/iomgr/fork_posix.cc +6 -5
- data/src/core/lib/{gprpp/atomic_with_std.h → iomgr/grpc_if_nametoindex.h} +8 -13
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +42 -0
- data/src/core/lib/iomgr/{network_status_tracker.h → grpc_if_nametoindex_unsupported.cc} +15 -9
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.h +105 -3
- data/src/core/lib/iomgr/iomgr.cc +20 -13
- data/src/core/lib/iomgr/iomgr.h +15 -0
- data/src/core/lib/iomgr/iomgr_custom.cc +17 -3
- data/src/core/lib/iomgr/iomgr_custom.h +2 -0
- data/src/core/lib/iomgr/iomgr_internal.cc +10 -0
- data/src/core/lib/iomgr/iomgr_internal.h +12 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +19 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +93 -0
- data/src/core/lib/iomgr/iomgr_windows.cc +18 -2
- data/src/core/lib/iomgr/lockfree_event.cc +4 -4
- data/src/core/lib/iomgr/port.h +35 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +2 -1
- data/src/core/lib/iomgr/resource_quota.cc +40 -37
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +6 -2
- data/src/core/lib/iomgr/socket_windows.cc +19 -0
- data/src/core/lib/iomgr/socket_windows.h +8 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +216 -0
- data/src/core/lib/iomgr/tcp_client_custom.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
- data/src/core/lib/iomgr/tcp_custom.cc +10 -14
- data/src/core/lib/iomgr/tcp_posix.cc +256 -140
- data/src/core/lib/iomgr/tcp_server.cc +5 -0
- data/src/core/lib/iomgr/tcp_server.h +24 -0
- data/src/core/lib/iomgr/tcp_server_custom.cc +14 -12
- data/src/core/lib/iomgr/tcp_server_posix.cc +86 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -11
- data/src/core/lib/iomgr/tcp_uv.cc +5 -7
- data/src/core/lib/iomgr/tcp_windows.cc +8 -14
- data/src/core/lib/iomgr/timer.h +2 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -16
- data/src/core/lib/iomgr/timer_manager.cc +20 -11
- data/src/core/lib/iomgr/udp_server.cc +8 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -19
- data/src/core/lib/json/json.cc +1 -4
- data/src/core/lib/profiling/basic_timers.cc +10 -4
- data/src/core/lib/security/context/security_context.cc +6 -7
- data/src/core/lib/security/context/security_context.h +3 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -0
- data/src/core/lib/security/credentials/credentials.h +9 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +10 -6
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +3 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +9 -8
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +192 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +210 -0
- data/src/core/lib/security/credentials/tls/spiffe_credentials.cc +129 -0
- data/src/core/lib/security/credentials/tls/spiffe_credentials.h +62 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -8
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -12
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +7 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +10 -8
- data/src/core/lib/security/security_connector/security_connector.cc +0 -1
- data/src/core/lib/security/security_connector/security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +39 -38
- data/src/core/lib/security/security_connector/ssl_utils.cc +164 -26
- data/src/core/lib/security/security_connector/ssl_utils.h +70 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +426 -0
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +122 -0
- data/src/core/lib/security/transport/auth_filters.h +5 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +55 -50
- data/src/core/lib/security/transport/secure_endpoint.cc +6 -6
- data/src/core/lib/security/transport/security_handshaker.cc +271 -303
- data/src/core/lib/security/transport/security_handshaker.h +11 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -3
- data/src/core/lib/slice/b64.h +2 -2
- data/src/core/lib/slice/percent_encoding.cc +3 -3
- data/src/core/lib/slice/percent_encoding.h +3 -3
- data/src/core/lib/slice/slice.cc +174 -122
- data/src/core/lib/slice/slice_buffer.cc +54 -21
- data/src/core/lib/slice/slice_hash_table.h +4 -4
- data/src/core/lib/slice/slice_intern.cc +49 -107
- data/src/core/lib/slice/slice_internal.h +264 -3
- data/src/core/lib/slice/slice_string_helpers.cc +10 -1
- data/src/core/lib/slice/slice_string_helpers.h +3 -1
- data/src/core/lib/slice/slice_utils.h +50 -0
- data/src/core/lib/slice/slice_weak_hash_table.h +6 -6
- data/src/core/lib/surface/api_trace.h +1 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +17 -0
- data/src/core/lib/surface/call.cc +67 -46
- data/src/core/lib/surface/call.h +7 -2
- data/src/core/lib/surface/call_details.cc +0 -1
- data/src/core/lib/surface/channel.cc +89 -97
- data/src/core/lib/surface/channel.h +60 -6
- data/src/core/lib/surface/channel_init.h +5 -0
- data/src/core/lib/surface/completion_queue.cc +221 -216
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +82 -33
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +5 -7
- data/src/core/lib/surface/server.cc +42 -47
- data/src/core/lib/surface/validate_metadata.cc +14 -8
- data/src/core/lib/surface/validate_metadata.h +13 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.cc +3 -3
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/connectivity_state.cc +10 -40
- data/src/core/lib/transport/connectivity_state.h +0 -8
- data/src/core/lib/transport/error_utils.cc +12 -0
- data/src/core/lib/transport/metadata.cc +258 -267
- data/src/core/lib/transport/metadata.h +227 -16
- data/src/core/lib/transport/metadata_batch.cc +1 -1
- data/src/core/lib/transport/metadata_batch.h +1 -1
- data/src/core/lib/transport/static_metadata.cc +477 -399
- data/src/core/lib/transport/static_metadata.h +273 -182
- data/src/core/lib/transport/status_metadata.cc +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -1
- data/src/core/lib/transport/transport.cc +39 -72
- data/src/core/lib/transport/transport.h +59 -24
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +4 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -1
- data/src/core/tsi/fake_transport_security.cc +4 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +12 -10
- data/src/core/tsi/ssl_transport_security.h +24 -4
- data/src/ruby/bin/math_pb.rb +18 -16
- data/src/ruby/ext/grpc/extconf.rb +12 -4
- data/src/ruby/ext/grpc/rb_call_credentials.c +8 -5
- data/src/ruby/ext/grpc/rb_channel.c +14 -10
- data/src/ruby/ext/grpc/rb_channel_credentials.c +8 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +9 -7
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc.c +23 -24
- data/src/ruby/ext/grpc/rb_grpc.h +4 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +24 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -0
- data/src/ruby/ext/grpc/rb_server.c +8 -4
- data/src/ruby/lib/grpc/errors.rb +22 -3
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/README.md +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +13 -10
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +18 -0
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +58 -56
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -0
- data/src/ruby/spec/errors_spec.rb +141 -0
- data/third_party/cares/cares/ares.h +12 -0
- data/third_party/cares/cares/ares_create_query.c +5 -1
- data/third_party/cares/cares/ares_data.c +74 -73
- data/third_party/cares/cares/ares_destroy.c +6 -1
- data/third_party/cares/cares/ares_gethostbyaddr.c +5 -5
- data/third_party/cares/cares/ares_gethostbyname.c +15 -4
- data/third_party/cares/cares/ares_getnameinfo.c +11 -0
- data/third_party/cares/cares/ares_init.c +274 -173
- data/third_party/cares/cares/ares_library_init.c +21 -3
- data/third_party/cares/cares/ares_options.c +6 -2
- data/third_party/cares/cares/ares_parse_naptr_reply.c +7 -6
- data/third_party/cares/cares/ares_parse_ptr_reply.c +4 -2
- data/third_party/cares/cares/ares_platform.c +7 -0
- data/third_party/cares/cares/ares_private.h +19 -11
- data/third_party/cares/cares/ares_process.c +27 -2
- data/third_party/cares/cares/ares_rules.h +1 -1
- data/third_party/cares/cares/ares_search.c +7 -0
- data/third_party/cares/cares/ares_send.c +6 -0
- data/third_party/cares/cares/ares_strsplit.c +174 -0
- data/third_party/cares/cares/ares_strsplit.h +43 -0
- data/third_party/cares/cares/ares_version.h +4 -4
- data/third_party/cares/cares/config-win32.h +1 -1
- data/third_party/cares/cares/inet_ntop.c +2 -3
- data/third_party/cares/config_darwin/ares_config.h +3 -0
- data/third_party/cares/config_freebsd/ares_config.h +3 -0
- data/third_party/cares/config_linux/ares_config.h +3 -0
- data/third_party/cares/config_openbsd/ares_config.h +3 -0
- metadata +83 -48
- data/src/core/ext/filters/client_channel/request_routing.cc +0 -936
- data/src/core/ext/filters/client_channel/request_routing.h +0 -177
- data/src/core/ext/filters/client_channel/subchannel_index.cc +0 -248
- data/src/core/ext/filters/client_channel/subchannel_index.h +0 -76
- data/src/core/lib/channel/handshaker_factory.cc +0 -42
- data/src/core/lib/gpr/arena.cc +0 -192
- data/src/core/lib/gprpp/atomic_with_atm.h +0 -57
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +0 -107
- data/src/core/lib/iomgr/wakeup_fd_cv.h +0 -69
- data/src/core/lib/transport/service_config.cc +0 -106
- data/src/core/lib/transport/service_config.h +0 -249
@@ -18,19 +18,20 @@
|
|
18
18
|
|
19
19
|
#include <grpc/impl/codegen/port_platform.h>
|
20
20
|
|
21
|
+
#include <algorithm>
|
22
|
+
#include <cstring>
|
23
|
+
|
21
24
|
#include "src/core/lib/channel/channel_trace.h"
|
22
25
|
#include "src/core/lib/channel/channelz.h"
|
23
26
|
#include "src/core/lib/channel/channelz_registry.h"
|
24
27
|
#include "src/core/lib/gpr/useful.h"
|
25
28
|
#include "src/core/lib/gprpp/memory.h"
|
26
|
-
#include "src/core/lib/gprpp/
|
29
|
+
#include "src/core/lib/gprpp/sync.h"
|
27
30
|
|
28
31
|
#include <grpc/support/alloc.h>
|
29
32
|
#include <grpc/support/log.h>
|
30
33
|
#include <grpc/support/sync.h>
|
31
34
|
|
32
|
-
#include <cstring>
|
33
|
-
|
34
35
|
namespace grpc_core {
|
35
36
|
namespace channelz {
|
36
37
|
namespace {
|
@@ -51,102 +52,58 @@ ChannelzRegistry* ChannelzRegistry::Default() {
|
|
51
52
|
return g_channelz_registry;
|
52
53
|
}
|
53
54
|
|
54
|
-
ChannelzRegistry::ChannelzRegistry() { gpr_mu_init(&mu_); }
|
55
|
-
|
56
|
-
ChannelzRegistry::~ChannelzRegistry() { gpr_mu_destroy(&mu_); }
|
57
|
-
|
58
55
|
void ChannelzRegistry::InternalRegister(BaseNode* node) {
|
59
56
|
MutexLock lock(&mu_);
|
60
|
-
entities_.push_back(node);
|
61
57
|
node->uuid_ = ++uuid_generator_;
|
62
|
-
|
63
|
-
|
64
|
-
void ChannelzRegistry::MaybePerformCompactionLocked() {
|
65
|
-
constexpr double kEmptinessTheshold = 1 / 3;
|
66
|
-
double emptiness_ratio =
|
67
|
-
double(num_empty_slots_) / double(entities_.capacity());
|
68
|
-
if (emptiness_ratio > kEmptinessTheshold) {
|
69
|
-
int front = 0;
|
70
|
-
for (size_t i = 0; i < entities_.size(); ++i) {
|
71
|
-
if (entities_[i] != nullptr) {
|
72
|
-
entities_[front++] = entities_[i];
|
73
|
-
}
|
74
|
-
}
|
75
|
-
for (int i = 0; i < num_empty_slots_; ++i) {
|
76
|
-
entities_.pop_back();
|
77
|
-
}
|
78
|
-
num_empty_slots_ = 0;
|
79
|
-
}
|
80
|
-
}
|
81
|
-
|
82
|
-
int ChannelzRegistry::FindByUuidLocked(intptr_t target_uuid,
|
83
|
-
bool direct_hit_needed) {
|
84
|
-
int left = 0;
|
85
|
-
int right = int(entities_.size() - 1);
|
86
|
-
while (left <= right) {
|
87
|
-
int true_middle = left + (right - left) / 2;
|
88
|
-
int first_non_null = true_middle;
|
89
|
-
while (first_non_null < right && entities_[first_non_null] == nullptr) {
|
90
|
-
first_non_null++;
|
91
|
-
}
|
92
|
-
if (entities_[first_non_null] == nullptr) {
|
93
|
-
right = true_middle - 1;
|
94
|
-
continue;
|
95
|
-
}
|
96
|
-
intptr_t uuid = entities_[first_non_null]->uuid();
|
97
|
-
if (uuid == target_uuid) {
|
98
|
-
return int(first_non_null);
|
99
|
-
}
|
100
|
-
if (uuid < target_uuid) {
|
101
|
-
left = first_non_null + 1;
|
102
|
-
} else {
|
103
|
-
right = true_middle - 1;
|
104
|
-
}
|
105
|
-
}
|
106
|
-
return direct_hit_needed ? -1 : left;
|
58
|
+
node_map_[node->uuid_] = node;
|
107
59
|
}
|
108
60
|
|
109
61
|
void ChannelzRegistry::InternalUnregister(intptr_t uuid) {
|
110
62
|
GPR_ASSERT(uuid >= 1);
|
111
63
|
MutexLock lock(&mu_);
|
112
64
|
GPR_ASSERT(uuid <= uuid_generator_);
|
113
|
-
|
114
|
-
GPR_ASSERT(idx >= 0);
|
115
|
-
entities_[idx] = nullptr;
|
116
|
-
num_empty_slots_++;
|
117
|
-
MaybePerformCompactionLocked();
|
65
|
+
node_map_.erase(uuid);
|
118
66
|
}
|
119
67
|
|
120
|
-
BaseNode
|
68
|
+
RefCountedPtr<BaseNode> ChannelzRegistry::InternalGet(intptr_t uuid) {
|
121
69
|
MutexLock lock(&mu_);
|
122
70
|
if (uuid < 1 || uuid > uuid_generator_) {
|
123
71
|
return nullptr;
|
124
72
|
}
|
125
|
-
|
126
|
-
|
73
|
+
auto it = node_map_.find(uuid);
|
74
|
+
if (it == node_map_.end()) return nullptr;
|
75
|
+
// Found node. Return only if its refcount is not zero (i.e., when we
|
76
|
+
// know that there is no other thread about to destroy it).
|
77
|
+
BaseNode* node = it->second;
|
78
|
+
if (!node->RefIfNonZero()) return nullptr;
|
79
|
+
return RefCountedPtr<BaseNode>(node);
|
127
80
|
}
|
128
81
|
|
129
82
|
char* ChannelzRegistry::InternalGetTopChannels(intptr_t start_channel_id) {
|
130
|
-
MutexLock lock(&mu_);
|
131
83
|
grpc_json* top_level_json = grpc_json_create(GRPC_JSON_OBJECT);
|
132
84
|
grpc_json* json = top_level_json;
|
133
85
|
grpc_json* json_iterator = nullptr;
|
134
|
-
InlinedVector<BaseNode
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
86
|
+
InlinedVector<RefCountedPtr<BaseNode>, 10> top_level_channels;
|
87
|
+
RefCountedPtr<BaseNode> node_after_pagination_limit;
|
88
|
+
{
|
89
|
+
MutexLock lock(&mu_);
|
90
|
+
for (auto it = node_map_.lower_bound(start_channel_id);
|
91
|
+
it != node_map_.end(); ++it) {
|
92
|
+
BaseNode* node = it->second;
|
93
|
+
if (node->type() == BaseNode::EntityType::kTopLevelChannel &&
|
94
|
+
node->RefIfNonZero()) {
|
95
|
+
// Check if we are over pagination limit to determine if we need to set
|
96
|
+
// the "end" element. If we don't go through this block, we know that
|
97
|
+
// when the loop terminates, we have <= to kPaginationLimit.
|
98
|
+
// Note that because we have already increased this node's
|
99
|
+
// refcount, we need to decrease it, but we can't unref while
|
100
|
+
// holding the lock, because this may lead to a deadlock.
|
101
|
+
if (top_level_channels.size() == kPaginationLimit) {
|
102
|
+
node_after_pagination_limit.reset(node);
|
103
|
+
break;
|
104
|
+
}
|
105
|
+
top_level_channels.emplace_back(node);
|
148
106
|
}
|
149
|
-
top_level_channels.push_back(entities_[i]);
|
150
107
|
}
|
151
108
|
}
|
152
109
|
if (!top_level_channels.empty()) {
|
@@ -159,7 +116,7 @@ char* ChannelzRegistry::InternalGetTopChannels(intptr_t start_channel_id) {
|
|
159
116
|
grpc_json_link_child(array_parent, channel_json, json_iterator);
|
160
117
|
}
|
161
118
|
}
|
162
|
-
if (
|
119
|
+
if (node_after_pagination_limit == nullptr) {
|
163
120
|
grpc_json_create_child(nullptr, json, "end", nullptr, GRPC_JSON_TRUE,
|
164
121
|
false);
|
165
122
|
}
|
@@ -169,26 +126,30 @@ char* ChannelzRegistry::InternalGetTopChannels(intptr_t start_channel_id) {
|
|
169
126
|
}
|
170
127
|
|
171
128
|
char* ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
|
172
|
-
MutexLock lock(&mu_);
|
173
129
|
grpc_json* top_level_json = grpc_json_create(GRPC_JSON_OBJECT);
|
174
130
|
grpc_json* json = top_level_json;
|
175
131
|
grpc_json* json_iterator = nullptr;
|
176
|
-
InlinedVector<BaseNode
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
132
|
+
InlinedVector<RefCountedPtr<BaseNode>, 10> servers;
|
133
|
+
RefCountedPtr<BaseNode> node_after_pagination_limit;
|
134
|
+
{
|
135
|
+
MutexLock lock(&mu_);
|
136
|
+
for (auto it = node_map_.lower_bound(start_server_id);
|
137
|
+
it != node_map_.end(); ++it) {
|
138
|
+
BaseNode* node = it->second;
|
139
|
+
if (node->type() == BaseNode::EntityType::kServer &&
|
140
|
+
node->RefIfNonZero()) {
|
141
|
+
// Check if we are over pagination limit to determine if we need to set
|
142
|
+
// the "end" element. If we don't go through this block, we know that
|
143
|
+
// when the loop terminates, we have <= to kPaginationLimit.
|
144
|
+
// Note that because we have already increased this node's
|
145
|
+
// refcount, we need to decrease it, but we can't unref while
|
146
|
+
// holding the lock, because this may lead to a deadlock.
|
147
|
+
if (servers.size() == kPaginationLimit) {
|
148
|
+
node_after_pagination_limit.reset(node);
|
149
|
+
break;
|
150
|
+
}
|
151
|
+
servers.emplace_back(node);
|
190
152
|
}
|
191
|
-
servers.push_back(entities_[i]);
|
192
153
|
}
|
193
154
|
}
|
194
155
|
if (!servers.empty()) {
|
@@ -201,7 +162,7 @@ char* ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
|
|
201
162
|
grpc_json_link_child(array_parent, server_json, json_iterator);
|
202
163
|
}
|
203
164
|
}
|
204
|
-
if (
|
165
|
+
if (node_after_pagination_limit == nullptr) {
|
205
166
|
grpc_json_create_child(nullptr, json, "end", nullptr, GRPC_JSON_TRUE,
|
206
167
|
false);
|
207
168
|
}
|
@@ -211,14 +172,21 @@ char* ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
|
|
211
172
|
}
|
212
173
|
|
213
174
|
void ChannelzRegistry::InternalLogAllEntities() {
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
175
|
+
InlinedVector<RefCountedPtr<BaseNode>, 10> nodes;
|
176
|
+
{
|
177
|
+
MutexLock lock(&mu_);
|
178
|
+
for (auto& p : node_map_) {
|
179
|
+
BaseNode* node = p.second;
|
180
|
+
if (node->RefIfNonZero()) {
|
181
|
+
nodes.emplace_back(node);
|
182
|
+
}
|
220
183
|
}
|
221
184
|
}
|
185
|
+
for (size_t i = 0; i < nodes.size(); ++i) {
|
186
|
+
char* json = nodes[i]->RenderJsonString();
|
187
|
+
gpr_log(GPR_INFO, "%s", json);
|
188
|
+
gpr_free(json);
|
189
|
+
}
|
222
190
|
}
|
223
191
|
|
224
192
|
} // namespace channelz
|
@@ -234,7 +202,7 @@ char* grpc_channelz_get_servers(intptr_t start_server_id) {
|
|
234
202
|
}
|
235
203
|
|
236
204
|
char* grpc_channelz_get_server(intptr_t server_id) {
|
237
|
-
grpc_core::channelz::BaseNode
|
205
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> server_node =
|
238
206
|
grpc_core::channelz::ChannelzRegistry::Get(server_id);
|
239
207
|
if (server_node == nullptr ||
|
240
208
|
server_node->type() !=
|
@@ -254,7 +222,7 @@ char* grpc_channelz_get_server(intptr_t server_id) {
|
|
254
222
|
char* grpc_channelz_get_server_sockets(intptr_t server_id,
|
255
223
|
intptr_t start_socket_id,
|
256
224
|
intptr_t max_results) {
|
257
|
-
grpc_core::channelz::BaseNode
|
225
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> base_node =
|
258
226
|
grpc_core::channelz::ChannelzRegistry::Get(server_id);
|
259
227
|
if (base_node == nullptr ||
|
260
228
|
base_node->type() != grpc_core::channelz::BaseNode::EntityType::kServer) {
|
@@ -263,12 +231,12 @@ char* grpc_channelz_get_server_sockets(intptr_t server_id,
|
|
263
231
|
// This cast is ok since we have just checked to make sure base_node is
|
264
232
|
// actually a server node
|
265
233
|
grpc_core::channelz::ServerNode* server_node =
|
266
|
-
static_cast<grpc_core::channelz::ServerNode*>(base_node);
|
234
|
+
static_cast<grpc_core::channelz::ServerNode*>(base_node.get());
|
267
235
|
return server_node->RenderServerSockets(start_socket_id, max_results);
|
268
236
|
}
|
269
237
|
|
270
238
|
char* grpc_channelz_get_channel(intptr_t channel_id) {
|
271
|
-
grpc_core::channelz::BaseNode
|
239
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> channel_node =
|
272
240
|
grpc_core::channelz::ChannelzRegistry::Get(channel_id);
|
273
241
|
if (channel_node == nullptr ||
|
274
242
|
(channel_node->type() !=
|
@@ -288,7 +256,7 @@ char* grpc_channelz_get_channel(intptr_t channel_id) {
|
|
288
256
|
}
|
289
257
|
|
290
258
|
char* grpc_channelz_get_subchannel(intptr_t subchannel_id) {
|
291
|
-
grpc_core::channelz::BaseNode
|
259
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> subchannel_node =
|
292
260
|
grpc_core::channelz::ChannelzRegistry::Get(subchannel_id);
|
293
261
|
if (subchannel_node == nullptr ||
|
294
262
|
subchannel_node->type() !=
|
@@ -306,7 +274,7 @@ char* grpc_channelz_get_subchannel(intptr_t subchannel_id) {
|
|
306
274
|
}
|
307
275
|
|
308
276
|
char* grpc_channelz_get_socket(intptr_t socket_id) {
|
309
|
-
grpc_core::channelz::BaseNode
|
277
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> socket_node =
|
310
278
|
grpc_core::channelz::ChannelzRegistry::Get(socket_id);
|
311
279
|
if (socket_node == nullptr ||
|
312
280
|
socket_node->type() !=
|
@@ -21,19 +21,16 @@
|
|
21
21
|
|
22
22
|
#include <grpc/impl/codegen/port_platform.h>
|
23
23
|
|
24
|
+
#include <stdint.h>
|
25
|
+
|
24
26
|
#include "src/core/lib/channel/channel_trace.h"
|
25
27
|
#include "src/core/lib/channel/channelz.h"
|
26
|
-
#include "src/core/lib/gprpp/
|
27
|
-
|
28
|
-
#include <stdint.h>
|
28
|
+
#include "src/core/lib/gprpp/map.h"
|
29
|
+
#include "src/core/lib/gprpp/sync.h"
|
29
30
|
|
30
31
|
namespace grpc_core {
|
31
32
|
namespace channelz {
|
32
33
|
|
33
|
-
namespace testing {
|
34
|
-
class ChannelzRegistryPeer;
|
35
|
-
}
|
36
|
-
|
37
34
|
// singleton registry object to track all objects that are needed to support
|
38
35
|
// channelz bookkeeping. All objects share globally distributed uuids.
|
39
36
|
class ChannelzRegistry {
|
@@ -48,7 +45,9 @@ class ChannelzRegistry {
|
|
48
45
|
return Default()->InternalRegister(node);
|
49
46
|
}
|
50
47
|
static void Unregister(intptr_t uuid) { Default()->InternalUnregister(uuid); }
|
51
|
-
static BaseNode
|
48
|
+
static RefCountedPtr<BaseNode> Get(intptr_t uuid) {
|
49
|
+
return Default()->InternalGet(uuid);
|
50
|
+
}
|
52
51
|
|
53
52
|
// Returns the allocated JSON string that represents the proto
|
54
53
|
// GetTopChannelsResponse as per channelz.proto.
|
@@ -67,13 +66,6 @@ class ChannelzRegistry {
|
|
67
66
|
static void LogAllEntities() { Default()->InternalLogAllEntities(); }
|
68
67
|
|
69
68
|
private:
|
70
|
-
GPRC_ALLOW_CLASS_TO_USE_NON_PUBLIC_NEW
|
71
|
-
GPRC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
|
72
|
-
friend class testing::ChannelzRegistryPeer;
|
73
|
-
|
74
|
-
ChannelzRegistry();
|
75
|
-
~ChannelzRegistry();
|
76
|
-
|
77
69
|
// Returned the singleton instance of ChannelzRegistry;
|
78
70
|
static ChannelzRegistry* Default();
|
79
71
|
|
@@ -86,27 +78,17 @@ class ChannelzRegistry {
|
|
86
78
|
|
87
79
|
// if object with uuid has previously been registered as the correct type,
|
88
80
|
// returns the void* associated with that uuid. Else returns nullptr.
|
89
|
-
BaseNode
|
81
|
+
RefCountedPtr<BaseNode> InternalGet(intptr_t uuid);
|
90
82
|
|
91
83
|
char* InternalGetTopChannels(intptr_t start_channel_id);
|
92
84
|
char* InternalGetServers(intptr_t start_server_id);
|
93
85
|
|
94
|
-
// If entities_ has over a certain threshold of empty slots, it will
|
95
|
-
// compact the vector and move all used slots to the front.
|
96
|
-
void MaybePerformCompactionLocked();
|
97
|
-
|
98
|
-
// Performs binary search on entities_ to find the index with that uuid.
|
99
|
-
// If direct_hit_needed, then will return -1 in case of absence.
|
100
|
-
// Else, will return idx of the first uuid higher than the target.
|
101
|
-
int FindByUuidLocked(intptr_t uuid, bool direct_hit_needed);
|
102
|
-
|
103
86
|
void InternalLogAllEntities();
|
104
87
|
|
105
88
|
// protects members
|
106
|
-
|
107
|
-
|
89
|
+
Mutex mu_;
|
90
|
+
Map<intptr_t, BaseNode*> node_map_;
|
108
91
|
intptr_t uuid_generator_ = 0;
|
109
|
-
int num_empty_slots_ = 0;
|
110
92
|
};
|
111
93
|
|
112
94
|
} // namespace channelz
|
@@ -41,12 +41,12 @@ typedef struct connected_channel_channel_data {
|
|
41
41
|
typedef struct {
|
42
42
|
grpc_closure closure;
|
43
43
|
grpc_closure* original_closure;
|
44
|
-
|
44
|
+
grpc_core::CallCombiner* call_combiner;
|
45
45
|
const char* reason;
|
46
46
|
} callback_state;
|
47
47
|
|
48
48
|
typedef struct connected_channel_call_data {
|
49
|
-
|
49
|
+
grpc_core::CallCombiner* call_combiner;
|
50
50
|
// Closures used for returning results on the call combiner.
|
51
51
|
callback_state on_complete[6]; // Max number of pending batches.
|
52
52
|
callback_state recv_initial_metadata_ready;
|
@@ -35,8 +35,8 @@ typedef enum {
|
|
35
35
|
/// Reserved for traffic_class_context.
|
36
36
|
GRPC_CONTEXT_TRAFFIC,
|
37
37
|
|
38
|
-
///
|
39
|
-
|
38
|
+
/// Holds a pointer to ServiceConfig::CallData associated with this call.
|
39
|
+
GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA,
|
40
40
|
|
41
41
|
GRPC_CONTEXT_COUNT
|
42
42
|
} grpc_context_index;
|