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
@@ -0,0 +1,127 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2015 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
21
|
+
#include <limits.h>
|
22
|
+
#include <string.h>
|
23
|
+
|
24
|
+
#include <grpc/compression.h>
|
25
|
+
#include <grpc/grpc.h>
|
26
|
+
#include <grpc/support/alloc.h>
|
27
|
+
#include <grpc/support/log.h>
|
28
|
+
#include <grpc/support/string_util.h>
|
29
|
+
|
30
|
+
#include "src/core/lib/channel/channel_args.h"
|
31
|
+
#include "src/core/lib/compression/compression_args.h"
|
32
|
+
#include "src/core/lib/gpr/string.h"
|
33
|
+
#include "src/core/lib/gpr/useful.h"
|
34
|
+
|
35
|
+
grpc_compression_algorithm grpc_channel_args_get_compression_algorithm(
|
36
|
+
const grpc_channel_args* a) {
|
37
|
+
size_t i;
|
38
|
+
if (a == nullptr) return GRPC_COMPRESS_NONE;
|
39
|
+
for (i = 0; i < a->num_args; ++i) {
|
40
|
+
if (a->args[i].type == GRPC_ARG_INTEGER &&
|
41
|
+
!strcmp(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, a->args[i].key)) {
|
42
|
+
return static_cast<grpc_compression_algorithm>(a->args[i].value.integer);
|
43
|
+
break;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
return GRPC_COMPRESS_NONE;
|
47
|
+
}
|
48
|
+
|
49
|
+
grpc_channel_args* grpc_channel_args_set_compression_algorithm(
|
50
|
+
grpc_channel_args* a, grpc_compression_algorithm algorithm) {
|
51
|
+
GPR_ASSERT(algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT);
|
52
|
+
grpc_arg tmp;
|
53
|
+
tmp.type = GRPC_ARG_INTEGER;
|
54
|
+
tmp.key = (char*)GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM;
|
55
|
+
tmp.value.integer = algorithm;
|
56
|
+
return grpc_channel_args_copy_and_add(a, &tmp, 1);
|
57
|
+
}
|
58
|
+
|
59
|
+
/** Returns 1 if the argument for compression algorithm's enabled states bitset
|
60
|
+
* was found in \a a, returning the arg's value in \a states. Otherwise, returns
|
61
|
+
* 0. */
|
62
|
+
static int find_compression_algorithm_states_bitset(const grpc_channel_args* a,
|
63
|
+
int** states_arg) {
|
64
|
+
if (a != nullptr) {
|
65
|
+
size_t i;
|
66
|
+
for (i = 0; i < a->num_args; ++i) {
|
67
|
+
if (a->args[i].type == GRPC_ARG_INTEGER &&
|
68
|
+
!strcmp(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
|
69
|
+
a->args[i].key)) {
|
70
|
+
*states_arg = &a->args[i].value.integer;
|
71
|
+
**states_arg |= 0x1; /* forcefully enable support for no compression */
|
72
|
+
return 1;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
return 0; /* GPR_FALSE */
|
77
|
+
}
|
78
|
+
|
79
|
+
grpc_channel_args* grpc_channel_args_compression_algorithm_set_state(
|
80
|
+
grpc_channel_args** a, grpc_compression_algorithm algorithm, int state) {
|
81
|
+
int* states_arg = nullptr;
|
82
|
+
grpc_channel_args* result = *a;
|
83
|
+
const int states_arg_found =
|
84
|
+
find_compression_algorithm_states_bitset(*a, &states_arg);
|
85
|
+
|
86
|
+
if (grpc_channel_args_get_compression_algorithm(*a) == algorithm &&
|
87
|
+
state == 0) {
|
88
|
+
const char* algo_name = nullptr;
|
89
|
+
GPR_ASSERT(grpc_compression_algorithm_name(algorithm, &algo_name) != 0);
|
90
|
+
gpr_log(GPR_ERROR,
|
91
|
+
"Tried to disable default compression algorithm '%s'. The "
|
92
|
+
"operation has been ignored.",
|
93
|
+
algo_name);
|
94
|
+
} else if (states_arg_found) {
|
95
|
+
if (state != 0) {
|
96
|
+
GPR_BITSET((unsigned*)states_arg, algorithm);
|
97
|
+
} else if (algorithm != GRPC_COMPRESS_NONE) {
|
98
|
+
GPR_BITCLEAR((unsigned*)states_arg, algorithm);
|
99
|
+
}
|
100
|
+
} else {
|
101
|
+
/* create a new arg */
|
102
|
+
grpc_arg tmp;
|
103
|
+
tmp.type = GRPC_ARG_INTEGER;
|
104
|
+
tmp.key = (char*)GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET;
|
105
|
+
/* all enabled by default */
|
106
|
+
tmp.value.integer = (1u << GRPC_COMPRESS_ALGORITHMS_COUNT) - 1;
|
107
|
+
if (state != 0) {
|
108
|
+
GPR_BITSET((unsigned*)&tmp.value.integer, algorithm);
|
109
|
+
} else if (algorithm != GRPC_COMPRESS_NONE) {
|
110
|
+
GPR_BITCLEAR((unsigned*)&tmp.value.integer, algorithm);
|
111
|
+
}
|
112
|
+
result = grpc_channel_args_copy_and_add(*a, &tmp, 1);
|
113
|
+
grpc_channel_args_destroy(*a);
|
114
|
+
*a = result;
|
115
|
+
}
|
116
|
+
return result;
|
117
|
+
}
|
118
|
+
|
119
|
+
uint32_t grpc_channel_args_compression_algorithm_get_states(
|
120
|
+
const grpc_channel_args* a) {
|
121
|
+
int* states_arg;
|
122
|
+
if (find_compression_algorithm_states_bitset(a, &states_arg)) {
|
123
|
+
return static_cast<uint32_t>(*states_arg);
|
124
|
+
} else {
|
125
|
+
return (1u << GRPC_COMPRESS_ALGORITHMS_COUNT) - 1; /* All algs. enabled */
|
126
|
+
}
|
127
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2015 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#ifndef GRPC_CORE_LIB_COMPRESSION_COMPRESSION_ARGS_H
|
20
|
+
#define GRPC_CORE_LIB_COMPRESSION_COMPRESSION_ARGS_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#include <grpc/compression.h>
|
25
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
26
|
+
|
27
|
+
/** Returns the compression algorithm set in \a a. */
|
28
|
+
grpc_compression_algorithm grpc_channel_args_get_compression_algorithm(
|
29
|
+
const grpc_channel_args* a);
|
30
|
+
|
31
|
+
/** Returns a channel arg instance with compression enabled. If \a a is
|
32
|
+
* non-NULL, its args are copied. N.B. GRPC_COMPRESS_NONE disables compression
|
33
|
+
* for the channel. */
|
34
|
+
grpc_channel_args* grpc_channel_args_set_compression_algorithm(
|
35
|
+
grpc_channel_args* a, grpc_compression_algorithm algorithm);
|
36
|
+
|
37
|
+
/** Sets the support for the given compression algorithm. By default, all
|
38
|
+
* compression algorithms are enabled. It's an error to disable an algorithm set
|
39
|
+
* by grpc_channel_args_set_compression_algorithm.
|
40
|
+
*
|
41
|
+
* Returns an instance with the updated algorithm states. The \a a pointer is
|
42
|
+
* modified to point to the returned instance (which may be different from the
|
43
|
+
* input value of \a a). */
|
44
|
+
grpc_channel_args* grpc_channel_args_compression_algorithm_set_state(
|
45
|
+
grpc_channel_args** a, grpc_compression_algorithm algorithm, int state);
|
46
|
+
|
47
|
+
/** Returns the bitset representing the support state (true for enabled, false
|
48
|
+
* for disabled) for compression algorithms.
|
49
|
+
*
|
50
|
+
* The i-th bit of the returned bitset corresponds to the i-th entry in the
|
51
|
+
* grpc_compression_algorithm enum. */
|
52
|
+
uint32_t grpc_channel_args_compression_algorithm_get_states(
|
53
|
+
const grpc_channel_args* a);
|
54
|
+
|
55
|
+
#endif /* GRPC_CORE_LIB_COMPRESSION_COMPRESSION_ARGS_H */
|
@@ -26,25 +26,29 @@
|
|
26
26
|
#include "src/core/lib/compression/algorithm_metadata.h"
|
27
27
|
#include "src/core/lib/compression/compression_internal.h"
|
28
28
|
#include "src/core/lib/gpr/useful.h"
|
29
|
+
#include "src/core/lib/slice/slice_utils.h"
|
29
30
|
#include "src/core/lib/surface/api_trace.h"
|
30
31
|
#include "src/core/lib/transport/static_metadata.h"
|
31
32
|
|
32
33
|
/* Interfaces related to MD */
|
33
34
|
|
34
35
|
grpc_message_compression_algorithm
|
35
|
-
grpc_message_compression_algorithm_from_slice(grpc_slice str) {
|
36
|
-
if (
|
36
|
+
grpc_message_compression_algorithm_from_slice(const grpc_slice& str) {
|
37
|
+
if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY))
|
37
38
|
return GRPC_MESSAGE_COMPRESS_NONE;
|
38
|
-
if (
|
39
|
+
if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_DEFLATE))
|
39
40
|
return GRPC_MESSAGE_COMPRESS_DEFLATE;
|
40
|
-
if (
|
41
|
+
if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP))
|
42
|
+
return GRPC_MESSAGE_COMPRESS_GZIP;
|
41
43
|
return GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT;
|
42
44
|
}
|
43
45
|
|
44
46
|
grpc_stream_compression_algorithm grpc_stream_compression_algorithm_from_slice(
|
45
|
-
grpc_slice str) {
|
46
|
-
if (
|
47
|
-
|
47
|
+
const grpc_slice& str) {
|
48
|
+
if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY))
|
49
|
+
return GRPC_STREAM_COMPRESS_NONE;
|
50
|
+
if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP))
|
51
|
+
return GRPC_STREAM_COMPRESS_GZIP;
|
48
52
|
return GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT;
|
49
53
|
}
|
50
54
|
|
@@ -244,13 +248,13 @@ grpc_message_compression_algorithm grpc_message_compression_algorithm_for_level(
|
|
244
248
|
|
245
249
|
int grpc_message_compression_algorithm_parse(
|
246
250
|
grpc_slice value, grpc_message_compression_algorithm* algorithm) {
|
247
|
-
if (
|
251
|
+
if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_IDENTITY)) {
|
248
252
|
*algorithm = GRPC_MESSAGE_COMPRESS_NONE;
|
249
253
|
return 1;
|
250
|
-
} else if (
|
254
|
+
} else if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_DEFLATE)) {
|
251
255
|
*algorithm = GRPC_MESSAGE_COMPRESS_DEFLATE;
|
252
256
|
return 1;
|
253
|
-
} else if (
|
257
|
+
} else if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_GZIP)) {
|
254
258
|
*algorithm = GRPC_MESSAGE_COMPRESS_GZIP;
|
255
259
|
return 1;
|
256
260
|
} else {
|
@@ -263,10 +267,10 @@ int grpc_message_compression_algorithm_parse(
|
|
263
267
|
|
264
268
|
int grpc_stream_compression_algorithm_parse(
|
265
269
|
grpc_slice value, grpc_stream_compression_algorithm* algorithm) {
|
266
|
-
if (
|
270
|
+
if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_IDENTITY)) {
|
267
271
|
*algorithm = GRPC_STREAM_COMPRESS_NONE;
|
268
272
|
return 1;
|
269
|
-
} else if (
|
273
|
+
} else if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_GZIP)) {
|
270
274
|
*algorithm = GRPC_STREAM_COMPRESS_GZIP;
|
271
275
|
return 1;
|
272
276
|
} else {
|
@@ -35,7 +35,7 @@ typedef enum {
|
|
35
35
|
GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT
|
36
36
|
} grpc_message_compression_algorithm;
|
37
37
|
|
38
|
-
/** Stream
|
38
|
+
/** Stream compression algorithms supported by gRPC */
|
39
39
|
typedef enum {
|
40
40
|
GRPC_STREAM_COMPRESS_NONE = 0,
|
41
41
|
GRPC_STREAM_COMPRESS_GZIP,
|
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
#include "src/core/lib/compression/stream_compression.h"
|
24
24
|
#include "src/core/lib/compression/stream_compression_gzip.h"
|
25
|
+
#include "src/core/lib/slice/slice_utils.h"
|
25
26
|
|
26
27
|
extern const grpc_stream_compression_vtable
|
27
28
|
grpc_stream_compression_identity_vtable;
|
@@ -65,11 +66,11 @@ void grpc_stream_compression_context_destroy(
|
|
65
66
|
int grpc_stream_compression_method_parse(
|
66
67
|
grpc_slice value, bool is_compress,
|
67
68
|
grpc_stream_compression_method* method) {
|
68
|
-
if (
|
69
|
+
if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_IDENTITY)) {
|
69
70
|
*method = is_compress ? GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS
|
70
71
|
: GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS;
|
71
72
|
return 1;
|
72
|
-
} else if (
|
73
|
+
} else if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_GZIP)) {
|
73
74
|
*method = is_compress ? GRPC_STREAM_COMPRESSION_GZIP_COMPRESS
|
74
75
|
: GRPC_STREAM_COMPRESSION_GZIP_DECOMPRESS;
|
75
76
|
return 1;
|
@@ -68,7 +68,7 @@ struct grpc_stream_compression_vtable {
|
|
68
68
|
* at the end of compression. Emits at most \a max_output_size compressed bytes
|
69
69
|
* into \a out. If all the bytes in input buffer \a in are depleted and \a flush
|
70
70
|
* is not GRPC_STREAM_COMPRESSION_FLUSH_NONE, the corresponding flush method is
|
71
|
-
* executed. The total number of bytes emitted is
|
71
|
+
* executed. The total number of bytes emitted is outputted in \a output_size.
|
72
72
|
*
|
73
73
|
* A SYNC flush indicates that the entire messages in \a in can be decompressed
|
74
74
|
* from \a out. A FINISH flush implies a SYNC flush, and that any further
|
@@ -85,7 +85,7 @@ bool grpc_stream_compress(grpc_stream_compression_context* ctx,
|
|
85
85
|
* Decompress bytes provided in \a in with a given context. Emits at most \a
|
86
86
|
* max_output_size decompressed bytes into \a out. If decompression process
|
87
87
|
* reached the end of a gzip stream, \a end_of_context is set to true; otherwise
|
88
|
-
* it is set to false. The total number of bytes emitted is
|
88
|
+
* it is set to false. The total number of bytes emitted is outputted in \a
|
89
89
|
* output_size.
|
90
90
|
*/
|
91
91
|
bool grpc_stream_decompress(grpc_stream_compression_context* ctx,
|
@@ -53,25 +53,25 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx,
|
|
53
53
|
ctx->zs.avail_out = static_cast<uInt>(slice_size);
|
54
54
|
ctx->zs.next_out = GRPC_SLICE_START_PTR(slice_out);
|
55
55
|
while (ctx->zs.avail_out > 0 && in->length > 0 && !eoc) {
|
56
|
-
grpc_slice slice =
|
57
|
-
ctx->zs.avail_in = static_cast<uInt> GRPC_SLICE_LENGTH(slice);
|
58
|
-
ctx->zs.next_in = GRPC_SLICE_START_PTR(slice);
|
56
|
+
grpc_slice* slice = grpc_slice_buffer_peek_first(in);
|
57
|
+
ctx->zs.avail_in = static_cast<uInt> GRPC_SLICE_LENGTH(*slice);
|
58
|
+
ctx->zs.next_in = GRPC_SLICE_START_PTR(*slice);
|
59
59
|
r = ctx->flate(&ctx->zs, Z_NO_FLUSH);
|
60
60
|
if (r < 0 && r != Z_BUF_ERROR) {
|
61
61
|
gpr_log(GPR_ERROR, "zlib error (%d)", r);
|
62
62
|
grpc_slice_unref_internal(slice_out);
|
63
|
-
|
63
|
+
grpc_slice_buffer_remove_first(in);
|
64
64
|
return false;
|
65
65
|
} else if (r == Z_STREAM_END && ctx->flate == inflate) {
|
66
66
|
eoc = true;
|
67
67
|
}
|
68
68
|
if (ctx->zs.avail_in > 0) {
|
69
|
-
|
70
|
-
in,
|
71
|
-
|
72
|
-
|
69
|
+
grpc_slice_buffer_sub_first(
|
70
|
+
in, GRPC_SLICE_LENGTH(*slice) - ctx->zs.avail_in,
|
71
|
+
GRPC_SLICE_LENGTH(*slice));
|
72
|
+
} else {
|
73
|
+
grpc_slice_buffer_remove_first(in);
|
73
74
|
}
|
74
|
-
grpc_slice_unref_internal(slice);
|
75
75
|
}
|
76
76
|
if (flush != 0 && ctx->zs.avail_out > 0 && !eoc) {
|
77
77
|
GPR_ASSERT(in->length == 0);
|
data/src/core/lib/debug/trace.cc
CHANGED
@@ -26,7 +26,11 @@
|
|
26
26
|
#include <grpc/grpc.h>
|
27
27
|
#include <grpc/support/alloc.h>
|
28
28
|
#include <grpc/support/log.h>
|
29
|
-
|
29
|
+
|
30
|
+
GPR_GLOBAL_CONFIG_DEFINE_STRING(
|
31
|
+
grpc_trace, "",
|
32
|
+
"A comma separated list of tracers that provide additional insight into "
|
33
|
+
"how gRPC C core is processing requests via debug logs.");
|
30
34
|
|
31
35
|
int grpc_tracer_set_enabled(const char* name, int enabled);
|
32
36
|
|
@@ -133,12 +137,14 @@ static void parse(const char* s) {
|
|
133
137
|
gpr_free(strings);
|
134
138
|
}
|
135
139
|
|
136
|
-
void grpc_tracer_init(const char*
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
140
|
+
void grpc_tracer_init(const char* env_var_name) {
|
141
|
+
(void)env_var_name; // suppress unused variable error
|
142
|
+
grpc_tracer_init();
|
143
|
+
}
|
144
|
+
|
145
|
+
void grpc_tracer_init() {
|
146
|
+
grpc_core::UniquePtr<char> value = GPR_GLOBAL_CONFIG_GET(grpc_trace);
|
147
|
+
parse(value.get());
|
142
148
|
}
|
143
149
|
|
144
150
|
void grpc_tracer_shutdown(void) {}
|
data/src/core/lib/debug/trace.h
CHANGED
@@ -24,7 +24,15 @@
|
|
24
24
|
#include <grpc/support/atm.h>
|
25
25
|
#include <stdbool.h>
|
26
26
|
|
27
|
+
#include "src/core/lib/gprpp/global_config.h"
|
28
|
+
|
29
|
+
GPR_GLOBAL_CONFIG_DECLARE_STRING(grpc_trace);
|
30
|
+
|
31
|
+
// TODO(veblush): Remove this deprecated function once codes depending on this
|
32
|
+
// function are updated in the internal repo.
|
27
33
|
void grpc_tracer_init(const char* env_var_name);
|
34
|
+
|
35
|
+
void grpc_tracer_init();
|
28
36
|
void grpc_tracer_shutdown(void);
|
29
37
|
|
30
38
|
#if defined(__has_feature)
|
@@ -53,7 +61,8 @@ void grpc_tracer_enable_flag(grpc_core::TraceFlag* flag);
|
|
53
61
|
class TraceFlag {
|
54
62
|
public:
|
55
63
|
TraceFlag(bool default_enabled, const char* name);
|
56
|
-
//
|
64
|
+
// TraceFlag needs to be trivially destructible since it is used as global
|
65
|
+
// variable.
|
57
66
|
~TraceFlag() = default;
|
58
67
|
|
59
68
|
const char* name() const { return name_; }
|
@@ -64,6 +73,8 @@ class TraceFlag {
|
|
64
73
|
// wrapped language (wr don't want to force recompilation to get tracing).
|
65
74
|
// Internally, however, for performance reasons, we compile them out by
|
66
75
|
// default, since internal build systems make recompiling trivial.
|
76
|
+
//
|
77
|
+
// Prefer GRPC_TRACE_FLAG_ENABLED() macro instead of using enabled() directly.
|
67
78
|
#define GRPC_USE_TRACERS // tracers on by default in OSS
|
68
79
|
#if defined(GRPC_USE_TRACERS) || !defined(NDEBUG)
|
69
80
|
bool enabled() {
|
@@ -98,6 +109,8 @@ class TraceFlag {
|
|
98
109
|
#endif
|
99
110
|
};
|
100
111
|
|
112
|
+
#define GRPC_TRACE_FLAG_ENABLED(f) GPR_UNLIKELY((f).enabled())
|
113
|
+
|
101
114
|
#ifndef NDEBUG
|
102
115
|
typedef TraceFlag DebugOnlyTraceFlag;
|
103
116
|
#else
|
data/src/core/lib/gpr/arena.h
CHANGED
@@ -21,23 +21,27 @@
|
|
21
21
|
// the arena as a whole is freed
|
22
22
|
// Tracks the total memory allocated against it, so that future arenas can
|
23
23
|
// pre-allocate the right amount of memory
|
24
|
+
// This transitional API is deprecated and will be removed soon in favour of
|
25
|
+
// src/core/lib/gprpp/arena.h .
|
24
26
|
|
25
27
|
#ifndef GRPC_CORE_LIB_GPR_ARENA_H
|
26
28
|
#define GRPC_CORE_LIB_GPR_ARENA_H
|
27
29
|
|
28
30
|
#include <grpc/support/port_platform.h>
|
29
31
|
|
30
|
-
#include
|
31
|
-
|
32
|
-
typedef struct gpr_arena gpr_arena;
|
32
|
+
#include "src/core/lib/gprpp/arena.h"
|
33
33
|
|
34
|
+
// TODO(arjunroy) : Remove deprecated gpr_arena API once all callers are gone.
|
35
|
+
typedef class grpc_core::Arena gpr_arena;
|
34
36
|
// Create an arena, with \a initial_size bytes in the first allocated buffer
|
35
|
-
gpr_arena* gpr_arena_create(size_t initial_size)
|
36
|
-
|
37
|
-
|
37
|
+
inline gpr_arena* gpr_arena_create(size_t initial_size) {
|
38
|
+
return grpc_core::Arena::Create(initial_size);
|
39
|
+
}
|
38
40
|
// Destroy an arena, returning the total number of bytes allocated
|
39
|
-
size_t gpr_arena_destroy(gpr_arena* arena);
|
40
|
-
//
|
41
|
-
void
|
41
|
+
inline size_t gpr_arena_destroy(gpr_arena* arena) { return arena->Destroy(); }
|
42
|
+
// Allocate \a size bytes from the arena
|
43
|
+
inline void* gpr_arena_alloc(gpr_arena* arena, size_t size) {
|
44
|
+
return arena->Alloc(size);
|
45
|
+
}
|
42
46
|
|
43
47
|
#endif /* GRPC_CORE_LIB_GPR_ARENA_H */
|
@@ -25,7 +25,6 @@
|
|
25
25
|
#include <string.h>
|
26
26
|
#include <unistd.h>
|
27
27
|
|
28
|
-
#include <grpc/support/alloc.h>
|
29
28
|
#include <grpc/support/cpu.h>
|
30
29
|
#include <grpc/support/log.h>
|
31
30
|
#include <grpc/support/sync.h>
|
@@ -52,7 +51,7 @@ unsigned gpr_cpu_num_cores(void) {
|
|
52
51
|
|
53
52
|
static void delete_thread_id(void* value) {
|
54
53
|
if (value) {
|
55
|
-
|
54
|
+
free(value);
|
56
55
|
}
|
57
56
|
}
|
58
57
|
|
@@ -71,7 +70,10 @@ unsigned gpr_cpu_current_cpu(void) {
|
|
71
70
|
unsigned int* thread_id =
|
72
71
|
static_cast<unsigned int*>(pthread_getspecific(thread_id_key));
|
73
72
|
if (thread_id == nullptr) {
|
74
|
-
|
73
|
+
// Note we cannot use gpr_malloc here because this allocation can happen in
|
74
|
+
// a main thread and will only be free'd when the main thread exits, which
|
75
|
+
// will cause our internal memory counters to believe it is a leak.
|
76
|
+
thread_id = static_cast<unsigned int*>(malloc(sizeof(unsigned int)));
|
75
77
|
pthread_setspecific(thread_id_key, thread_id);
|
76
78
|
}
|
77
79
|
|
data/src/core/lib/gpr/env.h
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
/* Env utility functions */
|
27
27
|
|
28
28
|
/* Gets the environment variable value with the specified name.
|
29
|
-
Returns a newly allocated string. It is the
|
29
|
+
Returns a newly allocated string. It is the responsibility of the caller to
|
30
30
|
gpr_free the return value if not NULL (which means that the environment
|
31
31
|
variable exists). */
|
32
32
|
char* gpr_getenv(const char* name);
|
@@ -34,10 +34,7 @@ char* gpr_getenv(const char* name);
|
|
34
34
|
/* Sets the environment with the specified name to the specified value. */
|
35
35
|
void gpr_setenv(const char* name, const char* value);
|
36
36
|
|
37
|
-
/*
|
38
|
-
|
39
|
-
problem in which we need to check an env variable to configure the verbosity
|
40
|
-
level of logging. So DO NOT USE THIS. */
|
41
|
-
const char* gpr_getenv_silent(const char* name, char** dst);
|
37
|
+
/* Deletes the variable name from the environment. */
|
38
|
+
void gpr_unsetenv(const char* name);
|
42
39
|
|
43
40
|
#endif /* GRPC_CORE_LIB_GPR_ENV_H */
|
@@ -38,7 +38,7 @@
|
|
38
38
|
#include "src/core/lib/gpr/string.h"
|
39
39
|
#include "src/core/lib/gpr/useful.h"
|
40
40
|
|
41
|
-
const char* gpr_getenv_silent(const char* name, char** dst) {
|
41
|
+
static const char* gpr_getenv_silent(const char* name, char** dst) {
|
42
42
|
const char* insecure_func_used = nullptr;
|
43
43
|
char* result = nullptr;
|
44
44
|
#if defined(GPR_BACKWARDS_COMPATIBILITY_MODE)
|
@@ -79,4 +79,9 @@ void gpr_setenv(const char* name, const char* value) {
|
|
79
79
|
GPR_ASSERT(res == 0);
|
80
80
|
}
|
81
81
|
|
82
|
+
void gpr_unsetenv(const char* name) {
|
83
|
+
int res = unsetenv(name);
|
84
|
+
GPR_ASSERT(res == 0);
|
85
|
+
}
|
86
|
+
|
82
87
|
#endif /* GPR_LINUX_ENV */
|
@@ -30,11 +30,6 @@
|
|
30
30
|
#include "src/core/lib/gpr/string.h"
|
31
31
|
#include "src/core/lib/gpr/string_windows.h"
|
32
32
|
|
33
|
-
const char* gpr_getenv_silent(const char* name, char** dst) {
|
34
|
-
*dst = gpr_getenv(name);
|
35
|
-
return NULL;
|
36
|
-
}
|
37
|
-
|
38
33
|
char* gpr_getenv(const char* name) {
|
39
34
|
char* result = NULL;
|
40
35
|
DWORD size;
|
@@ -69,4 +64,11 @@ void gpr_setenv(const char* name, const char* value) {
|
|
69
64
|
GPR_ASSERT(res);
|
70
65
|
}
|
71
66
|
|
67
|
+
void gpr_unsetenv(const char* name) {
|
68
|
+
LPTSTR tname = gpr_char_to_tchar(name);
|
69
|
+
BOOL res = SetEnvironmentVariable(tname, NULL);
|
70
|
+
gpr_free(tname);
|
71
|
+
GPR_ASSERT(res);
|
72
|
+
}
|
73
|
+
|
72
74
|
#endif /* GPR_WINDOWS_ENV */
|
data/src/core/lib/gpr/log.cc
CHANGED
@@ -22,12 +22,15 @@
|
|
22
22
|
#include <grpc/support/atm.h>
|
23
23
|
#include <grpc/support/log.h>
|
24
24
|
|
25
|
-
#include "src/core/lib/gpr/env.h"
|
26
25
|
#include "src/core/lib/gpr/string.h"
|
26
|
+
#include "src/core/lib/gprpp/global_config.h"
|
27
27
|
|
28
28
|
#include <stdio.h>
|
29
29
|
#include <string.h>
|
30
30
|
|
31
|
+
GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_verbosity, "ERROR",
|
32
|
+
"Default gRPC logging verbosity")
|
33
|
+
|
31
34
|
void gpr_default_log(gpr_log_func_args* args);
|
32
35
|
static gpr_atm g_log_func = (gpr_atm)gpr_default_log;
|
33
36
|
static gpr_atm g_min_severity_to_print = GPR_LOG_VERBOSITY_UNSET;
|
@@ -72,29 +75,22 @@ void gpr_set_log_verbosity(gpr_log_severity min_severity_to_print) {
|
|
72
75
|
}
|
73
76
|
|
74
77
|
void gpr_log_verbosity_init() {
|
75
|
-
char
|
76
|
-
const char* insecure_getenv = gpr_getenv_silent("GRPC_VERBOSITY", &verbosity);
|
78
|
+
grpc_core::UniquePtr<char> verbosity = GPR_GLOBAL_CONFIG_GET(grpc_verbosity);
|
77
79
|
|
78
80
|
gpr_atm min_severity_to_print = GPR_LOG_SEVERITY_ERROR;
|
79
|
-
if (verbosity
|
80
|
-
if (gpr_stricmp(verbosity, "DEBUG") == 0) {
|
81
|
+
if (strlen(verbosity.get()) > 0) {
|
82
|
+
if (gpr_stricmp(verbosity.get(), "DEBUG") == 0) {
|
81
83
|
min_severity_to_print = static_cast<gpr_atm>(GPR_LOG_SEVERITY_DEBUG);
|
82
|
-
} else if (gpr_stricmp(verbosity, "INFO") == 0) {
|
84
|
+
} else if (gpr_stricmp(verbosity.get(), "INFO") == 0) {
|
83
85
|
min_severity_to_print = static_cast<gpr_atm>(GPR_LOG_SEVERITY_INFO);
|
84
|
-
} else if (gpr_stricmp(verbosity, "ERROR") == 0) {
|
86
|
+
} else if (gpr_stricmp(verbosity.get(), "ERROR") == 0) {
|
85
87
|
min_severity_to_print = static_cast<gpr_atm>(GPR_LOG_SEVERITY_ERROR);
|
86
88
|
}
|
87
|
-
gpr_free(verbosity);
|
88
89
|
}
|
89
90
|
if ((gpr_atm_no_barrier_load(&g_min_severity_to_print)) ==
|
90
91
|
GPR_LOG_VERBOSITY_UNSET) {
|
91
92
|
gpr_atm_no_barrier_store(&g_min_severity_to_print, min_severity_to_print);
|
92
93
|
}
|
93
|
-
|
94
|
-
if (insecure_getenv != nullptr) {
|
95
|
-
gpr_log(GPR_DEBUG, "Warning: insecure environment read function '%s' used",
|
96
|
-
insecure_getenv);
|
97
|
-
}
|
98
94
|
}
|
99
95
|
|
100
96
|
void gpr_set_log_function(gpr_log_func f) {
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <grpc/support/log.h>
|
25
25
|
#include <grpc/support/string_util.h>
|
26
26
|
#include <grpc/support/time.h>
|
27
|
+
#include <inttypes.h>
|
27
28
|
#include <pthread.h>
|
28
29
|
#include <stdarg.h>
|
29
30
|
#include <stdio.h>
|
@@ -83,7 +84,7 @@ void gpr_default_log(gpr_log_func_args* args) {
|
|
83
84
|
}
|
84
85
|
|
85
86
|
char* prefix;
|
86
|
-
gpr_asprintf(&prefix, "%s%s.%09d %
|
87
|
+
gpr_asprintf(&prefix, "%s%s.%09d %7" PRIdPTR " %s:%d]",
|
87
88
|
gpr_log_severity_string(args->severity), time_buffer,
|
88
89
|
(int)(now.tv_nsec), gettid(), display_file, args->line);
|
89
90
|
|