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
@@ -33,6 +33,7 @@
|
|
33
33
|
#include "src/core/lib/channel/channel_args.h"
|
34
34
|
#include "src/core/lib/channel/channel_trace.h"
|
35
35
|
#include "src/core/lib/channel/channelz.h"
|
36
|
+
#include "src/core/lib/channel/channelz_registry.h"
|
36
37
|
#include "src/core/lib/debug/stats.h"
|
37
38
|
#include "src/core/lib/gpr/string.h"
|
38
39
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
@@ -59,23 +60,6 @@ typedef struct registered_call {
|
|
59
60
|
struct registered_call* next;
|
60
61
|
} registered_call;
|
61
62
|
|
62
|
-
struct grpc_channel {
|
63
|
-
int is_client;
|
64
|
-
grpc_compression_options compression_options;
|
65
|
-
|
66
|
-
gpr_atm call_size_estimate;
|
67
|
-
grpc_resource_user* resource_user;
|
68
|
-
|
69
|
-
gpr_mu registered_call_mu;
|
70
|
-
registered_call* registered_calls;
|
71
|
-
|
72
|
-
grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_channel;
|
73
|
-
|
74
|
-
char* target;
|
75
|
-
};
|
76
|
-
|
77
|
-
#define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack*)((c) + 1))
|
78
|
-
|
79
63
|
static void destroy_channel(void* arg, grpc_error* error);
|
80
64
|
|
81
65
|
grpc_channel* grpc_channel_create_with_builder(
|
@@ -103,18 +87,9 @@ grpc_channel* grpc_channel_create_with_builder(
|
|
103
87
|
grpc_channel_args_destroy(args);
|
104
88
|
return channel;
|
105
89
|
}
|
106
|
-
|
107
90
|
channel->target = target;
|
108
91
|
channel->resource_user = resource_user;
|
109
92
|
channel->is_client = grpc_channel_stack_type_is_client(channel_stack_type);
|
110
|
-
bool channelz_enabled = GRPC_ENABLE_CHANNELZ_DEFAULT;
|
111
|
-
size_t channel_tracer_max_memory =
|
112
|
-
GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT;
|
113
|
-
bool internal_channel = false;
|
114
|
-
// this creates the default ChannelNode. Different types of channels may
|
115
|
-
// override this to ensure a correct ChannelNode is created.
|
116
|
-
grpc_core::channelz::ChannelNodeCreationFunc channel_node_create_func =
|
117
|
-
grpc_core::channelz::ChannelNode::MakeChannelNode;
|
118
93
|
gpr_mu_init(&channel->registered_call_mu);
|
119
94
|
channel->registered_calls = nullptr;
|
120
95
|
|
@@ -146,40 +121,16 @@ grpc_channel* grpc_channel_create_with_builder(
|
|
146
121
|
channel->compression_options.enabled_algorithms_bitset =
|
147
122
|
static_cast<uint32_t>(args->args[i].value.integer) |
|
148
123
|
0x1; /* always support no compression */
|
149
|
-
} else if (0 == strcmp(args->args[i].key,
|
150
|
-
GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE)) {
|
151
|
-
const grpc_integer_options options = {
|
152
|
-
GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX};
|
153
|
-
channel_tracer_max_memory =
|
154
|
-
(size_t)grpc_channel_arg_get_integer(&args->args[i], options);
|
155
|
-
} else if (0 == strcmp(args->args[i].key, GRPC_ARG_ENABLE_CHANNELZ)) {
|
156
|
-
// channelz will not be enabled by default until all concerns in
|
157
|
-
// https://github.com/grpc/grpc/issues/15986 are addressed.
|
158
|
-
channelz_enabled = grpc_channel_arg_get_bool(
|
159
|
-
&args->args[i], GRPC_ENABLE_CHANNELZ_DEFAULT);
|
160
|
-
} else if (0 == strcmp(args->args[i].key,
|
161
|
-
GRPC_ARG_CHANNELZ_CHANNEL_NODE_CREATION_FUNC)) {
|
124
|
+
} else if (0 == strcmp(args->args[i].key, GRPC_ARG_CHANNELZ_CHANNEL_NODE)) {
|
162
125
|
GPR_ASSERT(args->args[i].type == GRPC_ARG_POINTER);
|
163
126
|
GPR_ASSERT(args->args[i].value.pointer.p != nullptr);
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
} else if (0 == strcmp(args->args[i].key,
|
168
|
-
GRPC_ARG_CHANNELZ_CHANNEL_IS_INTERNAL_CHANNEL)) {
|
169
|
-
internal_channel = grpc_channel_arg_get_bool(&args->args[i], false);
|
127
|
+
channel->channelz_node = static_cast<grpc_core::channelz::ChannelNode*>(
|
128
|
+
args->args[i].value.pointer.p)
|
129
|
+
->Ref();
|
170
130
|
}
|
171
131
|
}
|
172
132
|
|
173
133
|
grpc_channel_args_destroy(args);
|
174
|
-
// we only need to do the channelz bookkeeping for clients here. The channelz
|
175
|
-
// bookkeeping for server channels occurs in src/core/lib/surface/server.cc
|
176
|
-
if (channelz_enabled && channel->is_client) {
|
177
|
-
channel->channelz_channel = channel_node_create_func(
|
178
|
-
channel, channel_tracer_max_memory, !internal_channel);
|
179
|
-
channel->channelz_channel->AddTraceEvent(
|
180
|
-
grpc_core::channelz::ChannelTrace::Severity::Info,
|
181
|
-
grpc_slice_from_static_string("Channel created"));
|
182
|
-
}
|
183
134
|
return channel;
|
184
135
|
}
|
185
136
|
|
@@ -214,11 +165,71 @@ static grpc_channel_args* build_channel_args(
|
|
214
165
|
return grpc_channel_args_copy_and_add(input_args, new_args, num_new_args);
|
215
166
|
}
|
216
167
|
|
217
|
-
|
218
|
-
|
219
|
-
|
168
|
+
namespace {
|
169
|
+
|
170
|
+
void* channelz_node_copy(void* p) {
|
171
|
+
grpc_core::channelz::ChannelNode* node =
|
172
|
+
static_cast<grpc_core::channelz::ChannelNode*>(p);
|
173
|
+
node->Ref().release();
|
174
|
+
return p;
|
175
|
+
}
|
176
|
+
void channelz_node_destroy(void* p) {
|
177
|
+
grpc_core::channelz::ChannelNode* node =
|
178
|
+
static_cast<grpc_core::channelz::ChannelNode*>(p);
|
179
|
+
node->Unref();
|
180
|
+
}
|
181
|
+
int channelz_node_cmp(void* p1, void* p2) { return GPR_ICMP(p1, p2); }
|
182
|
+
const grpc_arg_pointer_vtable channelz_node_arg_vtable = {
|
183
|
+
channelz_node_copy, channelz_node_destroy, channelz_node_cmp};
|
184
|
+
|
185
|
+
void CreateChannelzNode(grpc_channel_stack_builder* builder) {
|
186
|
+
const grpc_channel_args* args =
|
187
|
+
grpc_channel_stack_builder_get_channel_arguments(builder);
|
188
|
+
// Check whether channelz is enabled.
|
189
|
+
const bool channelz_enabled = grpc_channel_arg_get_bool(
|
190
|
+
grpc_channel_args_find(args, GRPC_ARG_ENABLE_CHANNELZ),
|
191
|
+
GRPC_ENABLE_CHANNELZ_DEFAULT);
|
192
|
+
if (!channelz_enabled) return;
|
193
|
+
// Get parameters needed to create the channelz node.
|
194
|
+
const size_t channel_tracer_max_memory = grpc_channel_arg_get_integer(
|
195
|
+
grpc_channel_args_find(args,
|
196
|
+
GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE),
|
197
|
+
{GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
|
198
|
+
const intptr_t channelz_parent_uuid =
|
199
|
+
grpc_core::channelz::GetParentUuidFromArgs(*args);
|
200
|
+
// Create the channelz node.
|
201
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_node =
|
202
|
+
grpc_core::MakeRefCounted<grpc_core::channelz::ChannelNode>(
|
203
|
+
grpc_core::UniquePtr<char>(
|
204
|
+
gpr_strdup(grpc_channel_stack_builder_get_target(builder))),
|
205
|
+
channel_tracer_max_memory, channelz_parent_uuid);
|
206
|
+
channelz_node->AddTraceEvent(
|
207
|
+
grpc_core::channelz::ChannelTrace::Severity::Info,
|
208
|
+
grpc_slice_from_static_string("Channel created"));
|
209
|
+
// Update parent channel node, if any.
|
210
|
+
if (channelz_parent_uuid > 0) {
|
211
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> parent_node =
|
212
|
+
grpc_core::channelz::ChannelzRegistry::Get(channelz_parent_uuid);
|
213
|
+
if (parent_node != nullptr) {
|
214
|
+
grpc_core::channelz::ChannelNode* parent =
|
215
|
+
static_cast<grpc_core::channelz::ChannelNode*>(parent_node.get());
|
216
|
+
parent->AddChildChannel(channelz_node->uuid());
|
217
|
+
}
|
218
|
+
}
|
219
|
+
// Add channelz node to channel args.
|
220
|
+
// We remove the arg for the parent uuid, since we no longer need it.
|
221
|
+
grpc_arg new_arg = grpc_channel_arg_pointer_create(
|
222
|
+
const_cast<char*>(GRPC_ARG_CHANNELZ_CHANNEL_NODE), channelz_node.get(),
|
223
|
+
&channelz_node_arg_vtable);
|
224
|
+
const char* args_to_remove[] = {GRPC_ARG_CHANNELZ_PARENT_UUID};
|
225
|
+
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
226
|
+
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
227
|
+
grpc_channel_stack_builder_set_channel_arguments(builder, new_args);
|
228
|
+
grpc_channel_args_destroy(new_args);
|
220
229
|
}
|
221
230
|
|
231
|
+
} // namespace
|
232
|
+
|
222
233
|
grpc_channel* grpc_channel_create(const char* target,
|
223
234
|
const grpc_channel_args* input_args,
|
224
235
|
grpc_channel_stack_type channel_stack_type,
|
@@ -241,9 +252,12 @@ grpc_channel* grpc_channel_create(const char* target,
|
|
241
252
|
}
|
242
253
|
return nullptr;
|
243
254
|
}
|
244
|
-
|
245
|
-
|
246
|
-
|
255
|
+
// We only need to do this for clients here. For servers, this will be
|
256
|
+
// done in src/core/lib/surface/server.cc.
|
257
|
+
if (grpc_channel_stack_type_is_client(channel_stack_type)) {
|
258
|
+
CreateChannelzNode(builder);
|
259
|
+
}
|
260
|
+
return grpc_channel_create_with_builder(builder, channel_stack_type);
|
247
261
|
}
|
248
262
|
|
249
263
|
size_t grpc_channel_get_call_size_estimate(grpc_channel* channel) {
|
@@ -421,29 +435,23 @@ grpc_call* grpc_channel_create_registered_call(
|
|
421
435
|
return call;
|
422
436
|
}
|
423
437
|
|
424
|
-
#ifndef NDEBUG
|
425
|
-
#define REF_REASON reason
|
426
|
-
#define REF_ARG , const char* reason
|
427
|
-
#else
|
428
|
-
#define REF_REASON ""
|
429
|
-
#define REF_ARG
|
430
|
-
#endif
|
431
|
-
void grpc_channel_internal_ref(grpc_channel* c REF_ARG) {
|
432
|
-
GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(c), REF_REASON);
|
433
|
-
}
|
434
|
-
|
435
|
-
void grpc_channel_internal_unref(grpc_channel* c REF_ARG) {
|
436
|
-
GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(c), REF_REASON);
|
437
|
-
}
|
438
|
-
|
439
438
|
static void destroy_channel(void* arg, grpc_error* error) {
|
440
439
|
grpc_channel* channel = static_cast<grpc_channel*>(arg);
|
441
|
-
if (channel->
|
442
|
-
channel->
|
440
|
+
if (channel->channelz_node != nullptr) {
|
441
|
+
if (channel->channelz_node->parent_uuid() > 0) {
|
442
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> parent_node =
|
443
|
+
grpc_core::channelz::ChannelzRegistry::Get(
|
444
|
+
channel->channelz_node->parent_uuid());
|
445
|
+
if (parent_node != nullptr) {
|
446
|
+
grpc_core::channelz::ChannelNode* parent =
|
447
|
+
static_cast<grpc_core::channelz::ChannelNode*>(parent_node.get());
|
448
|
+
parent->RemoveChildChannel(channel->channelz_node->uuid());
|
449
|
+
}
|
450
|
+
}
|
451
|
+
channel->channelz_node->AddTraceEvent(
|
443
452
|
grpc_core::channelz::ChannelTrace::Severity::Info,
|
444
453
|
grpc_slice_from_static_string("Channel destroyed"));
|
445
|
-
channel->
|
446
|
-
channel->channelz_channel.reset();
|
454
|
+
channel->channelz_node.reset();
|
447
455
|
}
|
448
456
|
grpc_channel_stack_destroy(CHANNEL_STACK_FROM_CHANNEL(channel));
|
449
457
|
while (channel->registered_calls) {
|
@@ -475,25 +483,9 @@ void grpc_channel_destroy(grpc_channel* channel) {
|
|
475
483
|
GRPC_CHANNEL_INTERNAL_UNREF(channel, "channel");
|
476
484
|
}
|
477
485
|
|
478
|
-
|
479
|
-
|
480
|
-
}
|
481
|
-
|
482
|
-
grpc_compression_options grpc_channel_compression_options(
|
483
|
-
const grpc_channel* channel) {
|
484
|
-
return channel->compression_options;
|
485
|
-
}
|
486
|
-
|
487
|
-
grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_channel* channel, int i) {
|
486
|
+
grpc_mdelem grpc_channel_get_reffed_status_elem_slowpath(grpc_channel* channel,
|
487
|
+
int i) {
|
488
488
|
char tmp[GPR_LTOA_MIN_BUFSIZE];
|
489
|
-
switch (i) {
|
490
|
-
case 0:
|
491
|
-
return GRPC_MDELEM_GRPC_STATUS_0;
|
492
|
-
case 1:
|
493
|
-
return GRPC_MDELEM_GRPC_STATUS_1;
|
494
|
-
case 2:
|
495
|
-
return GRPC_MDELEM_GRPC_STATUS_2;
|
496
|
-
}
|
497
489
|
gpr_ltoa(i, tmp);
|
498
490
|
return grpc_mdelem_from_slices(GRPC_MDSTR_GRPC_STATUS,
|
499
491
|
grpc_slice_from_copied_string(tmp));
|
@@ -59,22 +59,76 @@ grpc_core::channelz::ChannelNode* grpc_channel_get_channelz_node(
|
|
59
59
|
status_code.
|
60
60
|
|
61
61
|
The returned elem is owned by the caller. */
|
62
|
-
grpc_mdelem
|
63
|
-
|
62
|
+
grpc_mdelem grpc_channel_get_reffed_status_elem_slowpath(grpc_channel* channel,
|
63
|
+
int status_code);
|
64
|
+
inline grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_channel* channel,
|
65
|
+
int status_code) {
|
66
|
+
switch (status_code) {
|
67
|
+
case 0:
|
68
|
+
return GRPC_MDELEM_GRPC_STATUS_0;
|
69
|
+
case 1:
|
70
|
+
return GRPC_MDELEM_GRPC_STATUS_1;
|
71
|
+
case 2:
|
72
|
+
return GRPC_MDELEM_GRPC_STATUS_2;
|
73
|
+
}
|
74
|
+
return grpc_channel_get_reffed_status_elem_slowpath(channel, status_code);
|
75
|
+
}
|
64
76
|
|
65
77
|
size_t grpc_channel_get_call_size_estimate(grpc_channel* channel);
|
66
78
|
void grpc_channel_update_call_size_estimate(grpc_channel* channel, size_t size);
|
67
79
|
|
80
|
+
struct registered_call;
|
81
|
+
struct grpc_channel {
|
82
|
+
int is_client;
|
83
|
+
grpc_compression_options compression_options;
|
84
|
+
|
85
|
+
gpr_atm call_size_estimate;
|
86
|
+
grpc_resource_user* resource_user;
|
87
|
+
|
88
|
+
gpr_mu registered_call_mu;
|
89
|
+
registered_call* registered_calls;
|
90
|
+
|
91
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_node;
|
92
|
+
|
93
|
+
char* target;
|
94
|
+
};
|
95
|
+
#define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack*)((c) + 1))
|
96
|
+
|
97
|
+
inline grpc_compression_options grpc_channel_compression_options(
|
98
|
+
const grpc_channel* channel) {
|
99
|
+
return channel->compression_options;
|
100
|
+
}
|
101
|
+
|
102
|
+
inline grpc_channel_stack* grpc_channel_get_channel_stack(
|
103
|
+
grpc_channel* channel) {
|
104
|
+
return CHANNEL_STACK_FROM_CHANNEL(channel);
|
105
|
+
}
|
106
|
+
|
107
|
+
inline grpc_core::channelz::ChannelNode* grpc_channel_get_channelz_node(
|
108
|
+
grpc_channel* channel) {
|
109
|
+
return channel->channelz_node.get();
|
110
|
+
}
|
111
|
+
|
68
112
|
#ifndef NDEBUG
|
69
|
-
void grpc_channel_internal_ref(grpc_channel* channel,
|
70
|
-
|
113
|
+
inline void grpc_channel_internal_ref(grpc_channel* channel,
|
114
|
+
const char* reason) {
|
115
|
+
GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(channel), reason);
|
116
|
+
}
|
117
|
+
inline void grpc_channel_internal_unref(grpc_channel* channel,
|
118
|
+
const char* reason) {
|
119
|
+
GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(channel), reason);
|
120
|
+
}
|
71
121
|
#define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
|
72
122
|
grpc_channel_internal_ref(channel, reason)
|
73
123
|
#define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \
|
74
124
|
grpc_channel_internal_unref(channel, reason)
|
75
125
|
#else
|
76
|
-
void grpc_channel_internal_ref(grpc_channel* channel)
|
77
|
-
|
126
|
+
inline void grpc_channel_internal_ref(grpc_channel* channel) {
|
127
|
+
GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(channel), "unused");
|
128
|
+
}
|
129
|
+
inline void grpc_channel_internal_unref(grpc_channel* channel) {
|
130
|
+
GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(channel), "unused");
|
131
|
+
}
|
78
132
|
#define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
|
79
133
|
grpc_channel_internal_ref(channel)
|
80
134
|
#define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \
|
@@ -45,6 +45,11 @@ void grpc_channel_init_init(void);
|
|
45
45
|
/// registration order (in the case of a tie).
|
46
46
|
/// Stages are registered against one of the pre-determined channel stack
|
47
47
|
/// types.
|
48
|
+
/// If the channel stack type is GRPC_CLIENT_SUBCHANNEL, the caller should
|
49
|
+
/// ensure that subchannels with different filter lists will always have
|
50
|
+
/// different channel args. This requires setting a channel arg in case the
|
51
|
+
/// registration function relies on some condition other than channel args to
|
52
|
+
/// decide whether to add a filter or not.
|
48
53
|
void grpc_channel_init_register_stage(grpc_channel_stack_type type,
|
49
54
|
int priority,
|
50
55
|
grpc_channel_init_stage stage_fn,
|