grpc 1.9.1 → 1.10.0.pre1
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 +2654 -953
- data/etc/roots.pem +282 -683
- data/include/grpc/compression.h +9 -26
- data/include/grpc/grpc.h +10 -24
- data/include/grpc/grpc_security.h +7 -1
- data/include/grpc/impl/codegen/compression_types.h +5 -62
- data/include/grpc/impl/codegen/grpc_types.h +10 -6
- data/include/grpc/module.modulemap +1 -10
- data/include/grpc/support/alloc.h +3 -2
- data/include/grpc/support/log.h +1 -2
- data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
- data/src/boringssl/err_data.c +550 -496
- data/src/core/ext/census/grpc_context.cc +2 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
- data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
- data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
- data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
- data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver.cc +6 -52
- data/src/core/ext/filters/client_channel/resolver.h +98 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
- data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
- data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
- data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
- data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
- data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
- data/src/core/ext/filters/client_channel/subchannel.h +38 -45
- data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
- data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
- data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
- data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
- data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
- data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
- data/src/core/lib/{gpr → avl}/avl.cc +61 -57
- data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
- data/src/core/lib/backoff/backoff.cc +6 -5
- data/src/core/lib/channel/channel_args.cc +23 -109
- data/src/core/lib/channel/channel_args.h +5 -31
- data/src/core/lib/channel/channel_stack.cc +11 -8
- data/src/core/lib/channel/channel_stack_builder.cc +10 -7
- data/src/core/lib/channel/connected_channel.cc +18 -17
- data/src/core/lib/channel/handshaker.cc +8 -8
- data/src/core/lib/channel/handshaker_registry.cc +3 -2
- data/src/core/lib/compression/algorithm_metadata.h +13 -6
- data/src/core/lib/compression/compression.cc +72 -183
- data/src/core/lib/compression/compression_internal.cc +274 -0
- data/src/core/lib/compression/compression_internal.h +86 -0
- data/src/core/lib/compression/message_compress.cc +15 -15
- data/src/core/lib/compression/message_compress.h +4 -3
- data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
- data/src/core/lib/compression/stream_compression_identity.cc +1 -1
- data/src/core/lib/debug/stats.cc +10 -8
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/trace.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +7 -11
- data/src/core/lib/gpr/arena.cc +34 -12
- data/src/core/lib/gpr/atm.cc +2 -1
- data/src/core/lib/gpr/cpu_linux.cc +3 -3
- data/src/core/lib/gpr/cpu_posix.cc +2 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -1
- data/src/core/lib/gpr/env_windows.cc +4 -4
- data/src/core/lib/gpr/fork.cc +16 -2
- data/src/core/lib/gpr/host_port.cc +5 -4
- data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
- data/src/core/lib/gpr/log.cc +5 -4
- data/src/core/lib/gpr/log_linux.cc +1 -1
- data/src/core/lib/gpr/mpscq.cc +1 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -4
- data/src/core/lib/gpr/string.cc +19 -16
- data/src/core/lib/gpr/string_posix.cc +3 -3
- data/src/core/lib/gpr/sync_posix.cc +5 -9
- data/src/core/lib/gpr/thd.cc +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
- data/src/core/lib/gpr/thd_posix.cc +6 -4
- data/src/core/lib/gpr/thd_windows.cc +3 -1
- data/src/core/lib/gpr/time.cc +6 -4
- data/src/core/lib/gpr/time_posix.cc +2 -2
- data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
- data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
- data/src/core/lib/gpr/tls_pthread.cc +1 -1
- data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
- data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
- data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
- data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
- data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
- data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
- data/src/core/lib/http/format_request.cc +3 -3
- data/src/core/lib/http/httpcli.cc +6 -7
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- data/src/core/lib/http/parser.cc +16 -12
- data/src/core/lib/iomgr/call_combiner.cc +12 -13
- data/src/core/lib/iomgr/closure.h +4 -6
- data/src/core/lib/iomgr/combiner.cc +10 -21
- data/src/core/lib/iomgr/error.cc +50 -55
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
- data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
- data/src/core/lib/iomgr/ev_posix.cc +47 -6
- data/src/core/lib/iomgr/exec_ctx.cc +10 -10
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +16 -13
- data/src/core/lib/iomgr/fork_posix.cc +1 -3
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
- data/src/core/lib/iomgr/iomgr_uv.h +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
- data/src/core/lib/iomgr/load_file.cc +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +36 -34
- data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_mutator.cc +7 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
- data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +47 -55
- data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -14
- data/src/core/lib/iomgr/timer_heap.cc +8 -7
- data/src/core/lib/iomgr/timer_manager.cc +4 -3
- data/src/core/lib/iomgr/udp_server.cc +24 -16
- data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
- data/src/core/lib/json/json.cc +1 -1
- data/src/core/lib/json/json_reader.cc +8 -6
- data/src/core/lib/json/json_string.cc +19 -18
- data/src/core/lib/json/json_writer.cc +10 -8
- data/src/core/lib/profiling/basic_timers.cc +1 -1
- data/src/core/lib/profiling/timers.h +3 -20
- data/src/core/lib/security/context/security_context.cc +16 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
- data/src/core/lib/security/credentials/credentials.cc +9 -8
- data/src/core/lib/security/credentials/credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
- data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
- data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
- data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
- data/src/core/lib/security/transport/security_handshaker.cc +19 -18
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/slice/b64.cc +19 -16
- data/src/core/lib/slice/percent_encoding.cc +5 -5
- data/src/core/lib/slice/slice.cc +35 -33
- data/src/core/lib/slice/slice_buffer.cc +16 -14
- data/src/core/lib/slice/slice_hash_table.cc +3 -2
- data/src/core/lib/slice/slice_intern.cc +21 -25
- data/src/core/lib/slice/slice_string_helpers.cc +45 -9
- data/src/core/lib/slice/slice_string_helpers.h +6 -0
- data/src/core/lib/surface/byte_buffer.cc +2 -2
- data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
- data/src/core/lib/surface/call.cc +171 -260
- data/src/core/lib/surface/call_test_only.h +1 -13
- data/src/core/lib/surface/channel.cc +20 -43
- data/src/core/lib/surface/channel_init.cc +7 -7
- data/src/core/lib/surface/channel_ping.cc +2 -2
- data/src/core/lib/surface/completion_queue.cc +69 -75
- data/src/core/lib/surface/init.cc +4 -5
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/server.cc +64 -59
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +6 -5
- data/src/core/lib/transport/byte_stream.cc +23 -14
- data/src/core/lib/transport/byte_stream.h +1 -1
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/error_utils.cc +10 -7
- data/src/core/lib/transport/metadata.cc +27 -26
- data/src/core/lib/transport/metadata.h +1 -1
- data/src/core/lib/transport/pid_controller.cc +2 -1
- data/src/core/lib/transport/service_config.cc +5 -5
- data/src/core/lib/transport/static_metadata.cc +225 -222
- data/src/core/lib/transport/static_metadata.h +77 -76
- data/src/core/lib/transport/timeout_encoding.cc +3 -2
- data/src/core/lib/transport/transport.cc +6 -5
- data/src/core/lib/transport/transport_op_string.cc +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts_transport_security.cc +61 -0
- data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
- data/src/core/tsi/fake_transport_security.cc +59 -43
- data/src/core/tsi/ssl_transport_security.cc +122 -107
- data/src/core/tsi/transport_security.cc +3 -3
- data/src/core/tsi/transport_security_adapter.cc +16 -10
- data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +3 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
- data/src/ruby/ext/grpc/rb_server.c +52 -28
- data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +1 -1
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +4 -2
- data/src/ruby/spec/generic/active_call_spec.rb +2 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
- data/src/ruby/spec/server_spec.rb +26 -7
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
- data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
- data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
- data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
- data/third_party/boringssl/crypto/base64/base64.c +65 -43
- data/third_party/boringssl/crypto/bio/bio.c +134 -110
- data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
- data/third_party/boringssl/crypto/bio/connect.c +17 -17
- data/third_party/boringssl/crypto/bio/fd.c +2 -1
- data/third_party/boringssl/crypto/bio/file.c +14 -14
- data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
- data/third_party/boringssl/crypto/bio/internal.h +14 -14
- data/third_party/boringssl/crypto/bio/pair.c +45 -45
- data/third_party/boringssl/crypto/bio/printf.c +6 -10
- data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
- data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
- data/third_party/boringssl/crypto/buf/buf.c +20 -44
- data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
- data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
- data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
- data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
- data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
- data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
- data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
- data/third_party/boringssl/crypto/conf/conf.c +32 -20
- data/third_party/boringssl/crypto/conf/internal.h +3 -3
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
- data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
- data/third_party/boringssl/crypto/cpu-intel.c +68 -43
- data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
- data/third_party/boringssl/crypto/crypto.c +54 -32
- data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
- data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
- data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
- data/third_party/boringssl/crypto/dh/check.c +33 -34
- data/third_party/boringssl/crypto/dh/dh.c +72 -36
- data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
- data/third_party/boringssl/crypto/dh/params.c +1 -161
- data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
- data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
- data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
- data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
- data/third_party/boringssl/crypto/engine/engine.c +6 -6
- data/third_party/boringssl/crypto/err/err.c +197 -106
- data/third_party/boringssl/crypto/err/internal.h +58 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
- data/third_party/boringssl/crypto/evp/evp.c +6 -11
- data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
- data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
- data/third_party/boringssl/crypto/evp/internal.h +66 -51
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
- data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
- data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
- data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
- data/third_party/boringssl/crypto/evp/print.c +5 -36
- data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
- data/third_party/boringssl/crypto/ex_data.c +15 -45
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
- data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
- data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
- data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
- data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
- data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
- data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
- data/third_party/boringssl/crypto/internal.h +301 -233
- data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
- data/third_party/boringssl/crypto/mem.c +76 -33
- data/third_party/boringssl/crypto/obj/obj.c +44 -28
- data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
- data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
- data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
- data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
- data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
- data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
- data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
- data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
- data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
- data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
- data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
- data/third_party/boringssl/crypto/pool/internal.h +2 -2
- data/third_party/boringssl/crypto/pool/pool.c +15 -15
- data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
- data/third_party/boringssl/crypto/refcount_c11.c +2 -2
- data/third_party/boringssl/crypto/refcount_lock.c +1 -1
- data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
- data/third_party/boringssl/crypto/stack/stack.c +13 -13
- data/third_party/boringssl/crypto/thread_none.c +1 -1
- data/third_party/boringssl/crypto/thread_pthread.c +1 -1
- data/third_party/boringssl/crypto/thread_win.c +40 -40
- data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
- data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
- data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
- data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
- data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
- data/third_party/boringssl/crypto/x509/by_file.c +2 -2
- data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
- data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
- data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
- data/third_party/boringssl/crypto/x509/x_name.c +13 -16
- data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
- data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
- data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
- data/third_party/boringssl/include/openssl/aead.h +280 -191
- data/third_party/boringssl/include/openssl/aes.h +50 -50
- data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
- data/third_party/boringssl/include/openssl/asn1.h +14 -77
- data/third_party/boringssl/include/openssl/asn1t.h +11 -15
- data/third_party/boringssl/include/openssl/base.h +78 -51
- data/third_party/boringssl/include/openssl/base64.h +68 -68
- data/third_party/boringssl/include/openssl/bio.h +472 -406
- data/third_party/boringssl/include/openssl/blowfish.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +454 -435
- data/third_party/boringssl/include/openssl/buf.h +27 -27
- data/third_party/boringssl/include/openssl/bytestring.h +282 -267
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/chacha.h +5 -5
- data/third_party/boringssl/include/openssl/cipher.h +209 -200
- data/third_party/boringssl/include/openssl/cmac.h +27 -27
- data/third_party/boringssl/include/openssl/conf.h +49 -46
- data/third_party/boringssl/include/openssl/cpu.h +60 -45
- data/third_party/boringssl/include/openssl/crypto.h +59 -35
- data/third_party/boringssl/include/openssl/curve25519.h +97 -92
- data/third_party/boringssl/include/openssl/des.h +25 -25
- data/third_party/boringssl/include/openssl/dh.h +98 -97
- data/third_party/boringssl/include/openssl/digest.h +143 -114
- data/third_party/boringssl/include/openssl/dsa.h +217 -202
- data/third_party/boringssl/include/openssl/ec.h +132 -131
- data/third_party/boringssl/include/openssl/ec_key.h +132 -128
- data/third_party/boringssl/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
- data/third_party/boringssl/include/openssl/engine.h +38 -38
- data/third_party/boringssl/include/openssl/err.h +189 -219
- data/third_party/boringssl/include/openssl/evp.h +473 -397
- data/third_party/boringssl/include/openssl/ex_data.h +46 -56
- data/third_party/boringssl/include/openssl/hkdf.h +17 -17
- data/third_party/boringssl/include/openssl/hmac.h +55 -43
- data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
- data/third_party/boringssl/include/openssl/lhash.h +67 -67
- data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
- data/third_party/boringssl/include/openssl/md4.h +14 -14
- data/third_party/boringssl/include/openssl/md5.h +14 -14
- data/third_party/boringssl/include/openssl/mem.h +39 -33
- data/third_party/boringssl/include/openssl/nid.h +43 -0
- data/third_party/boringssl/include/openssl/obj.h +93 -87
- data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
- data/third_party/boringssl/include/openssl/pem.h +2 -122
- data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
- data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
- data/third_party/boringssl/include/openssl/poly1305.h +11 -11
- data/third_party/boringssl/include/openssl/pool.h +29 -25
- data/third_party/boringssl/include/openssl/rand.h +48 -45
- data/third_party/boringssl/include/openssl/rc4.h +9 -9
- data/third_party/boringssl/include/openssl/ripemd.h +13 -13
- data/third_party/boringssl/include/openssl/rsa.h +371 -340
- data/third_party/boringssl/include/openssl/sha.h +71 -71
- data/third_party/boringssl/include/openssl/span.h +191 -0
- data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
- data/third_party/boringssl/include/openssl/ssl3.h +39 -122
- data/third_party/boringssl/include/openssl/stack.h +355 -164
- data/third_party/boringssl/include/openssl/thread.h +43 -43
- data/third_party/boringssl/include/openssl/tls1.h +60 -63
- data/third_party/boringssl/include/openssl/type_check.h +10 -14
- data/third_party/boringssl/include/openssl/x509.h +41 -116
- data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
- data/third_party/boringssl/include/openssl/x509v3.h +27 -21
- data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
- data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
- data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
- data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
- data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
- data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
- data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
- data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
- data/third_party/boringssl/ssl/handshake.cc +547 -0
- data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
- data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
- data/third_party/boringssl/ssl/internal.h +2027 -1280
- data/third_party/boringssl/ssl/s3_both.cc +603 -0
- data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
- data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
- data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
- data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
- data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
- data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
- data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
- data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
- data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
- data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
- data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
- data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
- data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
- data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
- data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
- data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
- data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
- data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
- data/third_party/boringssl/ssl/tls13_client.cc +842 -0
- data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
- data/third_party/boringssl/ssl/tls13_server.cc +967 -0
- data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
- data/third_party/boringssl/ssl/tls_record.cc +675 -0
- metadata +117 -168
- data/include/grpc/support/cmdline.h +0 -88
- data/include/grpc/support/subprocess.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
- data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
- data/src/core/lib/gpr/cmdline.cc +0 -330
- data/src/core/lib/gpr/subprocess_posix.cc +0 -99
- data/src/core/lib/gpr/subprocess_windows.cc +0 -126
- data/src/core/lib/surface/alarm.cc +0 -137
- data/src/core/lib/surface/alarm_internal.h +0 -40
- data/src/core/tsi/gts_transport_security.cc +0 -40
- data/third_party/boringssl/crypto/aes/aes.c +0 -1142
- data/third_party/boringssl/crypto/aes/internal.h +0 -87
- data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
- data/third_party/boringssl/crypto/bn/add.c +0 -377
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
- data/third_party/boringssl/crypto/bn/bn.c +0 -365
- data/third_party/boringssl/crypto/bn/cmp.c +0 -239
- data/third_party/boringssl/crypto/bn/ctx.c +0 -313
- data/third_party/boringssl/crypto/bn/div.c +0 -728
- data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
- data/third_party/boringssl/crypto/bn/gcd.c +0 -635
- data/third_party/boringssl/crypto/bn/generic.c +0 -707
- data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
- data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
- data/third_party/boringssl/crypto/bn/mul.c +0 -871
- data/third_party/boringssl/crypto/bn/prime.c +0 -861
- data/third_party/boringssl/crypto/bn/random.c +0 -343
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
- data/third_party/boringssl/crypto/bn/shift.c +0 -307
- data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
- data/third_party/boringssl/crypto/cipher/aead.c +0 -156
- data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
- data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
- data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/des/des.c +0 -771
- data/third_party/boringssl/crypto/digest/digest.c +0 -251
- data/third_party/boringssl/crypto/digest/digests.c +0 -358
- data/third_party/boringssl/crypto/ec/ec.c +0 -847
- data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
- data/third_party/boringssl/crypto/ec/oct.c +0 -416
- data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
- data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
- data/third_party/boringssl/crypto/ec/simple.c +0 -1118
- data/third_party/boringssl/crypto/ec/util-64.c +0 -109
- data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
- data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
- data/third_party/boringssl/crypto/md4/md4.c +0 -236
- data/third_party/boringssl/crypto/md5/md5.c +0 -285
- data/third_party/boringssl/crypto/modes/cbc.c +0 -212
- data/third_party/boringssl/crypto/modes/cfb.c +0 -230
- data/third_party/boringssl/crypto/modes/ctr.c +0 -219
- data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
- data/third_party/boringssl/crypto/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/modes/polyval.c +0 -94
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
- data/third_party/boringssl/crypto/rand/rand.c +0 -244
- data/third_party/boringssl/crypto/rand/urandom.c +0 -335
- data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
- data/third_party/boringssl/crypto/rsa/padding.c +0 -708
- data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
- data/third_party/boringssl/crypto/sha/sha1.c +0 -355
- data/third_party/boringssl/crypto/sha/sha256.c +0 -329
- data/third_party/boringssl/crypto/sha/sha512.c +0 -609
- data/third_party/boringssl/crypto/x509/x509type.c +0 -126
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
- data/third_party/boringssl/ssl/handshake_client.c +0 -1883
- data/third_party/boringssl/ssl/handshake_server.c +0 -1950
- data/third_party/boringssl/ssl/s3_both.c +0 -895
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
- data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
- data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
- data/third_party/boringssl/ssl/tls13_client.c +0 -712
- data/third_party/boringssl/ssl/tls13_server.c +0 -680
- data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -31,5 +31,6 @@ void grpc_census_call_set_context(grpc_call* call, census_context* context) {
|
|
31
31
|
|
32
32
|
census_context* grpc_census_call_get_context(grpc_call* call) {
|
33
33
|
GRPC_API_TRACE("grpc_census_call_get_context(call=%p)", 1, (call));
|
34
|
-
return
|
34
|
+
return static_cast<census_context*>(
|
35
|
+
grpc_call_context_get(call, GRPC_CONTEXT_TRACING));
|
35
36
|
}
|
@@ -80,7 +80,7 @@ static void backup_poller_shutdown_unref(backup_poller* p) {
|
|
80
80
|
}
|
81
81
|
|
82
82
|
static void done_poller(void* arg, grpc_error* error) {
|
83
|
-
backup_poller_shutdown_unref((
|
83
|
+
backup_poller_shutdown_unref(static_cast<backup_poller*>(arg));
|
84
84
|
}
|
85
85
|
|
86
86
|
static void g_poller_unref() {
|
@@ -102,7 +102,7 @@ static void g_poller_unref() {
|
|
102
102
|
}
|
103
103
|
|
104
104
|
static void run_poller(void* arg, grpc_error* error) {
|
105
|
-
backup_poller* p = (
|
105
|
+
backup_poller* p = static_cast<backup_poller*>(arg);
|
106
106
|
if (error != GRPC_ERROR_NONE) {
|
107
107
|
if (error != GRPC_ERROR_CANCELLED) {
|
108
108
|
GRPC_LOG_IF_ERROR("run_poller", GRPC_ERROR_REF(error));
|
@@ -133,8 +133,9 @@ void grpc_client_channel_start_backup_polling(
|
|
133
133
|
}
|
134
134
|
gpr_mu_lock(&g_poller_mu);
|
135
135
|
if (g_poller == nullptr) {
|
136
|
-
g_poller = (
|
137
|
-
g_poller->pollset =
|
136
|
+
g_poller = static_cast<backup_poller*>(gpr_zalloc(sizeof(backup_poller)));
|
137
|
+
g_poller->pollset =
|
138
|
+
static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
|
138
139
|
g_poller->shutting_down = false;
|
139
140
|
grpc_pollset_init(g_poller->pollset, &g_poller->pollset_mu);
|
140
141
|
gpr_ref_init(&g_poller->refs, 0);
|
@@ -89,7 +89,7 @@ static void delete_state_watcher(state_watcher* w) {
|
|
89
89
|
|
90
90
|
static void finished_completion(void* pw, grpc_cq_completion* ignored) {
|
91
91
|
bool should_delete = false;
|
92
|
-
state_watcher* w = (
|
92
|
+
state_watcher* w = static_cast<state_watcher*>(pw);
|
93
93
|
gpr_mu_lock(&w->mu);
|
94
94
|
switch (w->phase) {
|
95
95
|
case WAITING:
|
@@ -162,11 +162,11 @@ static void partly_done(state_watcher* w, bool due_to_completion,
|
|
162
162
|
}
|
163
163
|
|
164
164
|
static void watch_complete(void* pw, grpc_error* error) {
|
165
|
-
partly_done((
|
165
|
+
partly_done(static_cast<state_watcher*>(pw), true, GRPC_ERROR_REF(error));
|
166
166
|
}
|
167
167
|
|
168
168
|
static void timeout_complete(void* pw, grpc_error* error) {
|
169
|
-
partly_done((
|
169
|
+
partly_done(static_cast<state_watcher*>(pw), false, GRPC_ERROR_REF(error));
|
170
170
|
}
|
171
171
|
|
172
172
|
int grpc_channel_num_external_connectivity_watchers(grpc_channel* channel) {
|
@@ -182,7 +182,7 @@ typedef struct watcher_timer_init_arg {
|
|
182
182
|
} watcher_timer_init_arg;
|
183
183
|
|
184
184
|
static void watcher_timer_init(void* arg, grpc_error* error_ignored) {
|
185
|
-
watcher_timer_init_arg* wa = (
|
185
|
+
watcher_timer_init_arg* wa = static_cast<watcher_timer_init_arg*>(arg);
|
186
186
|
|
187
187
|
grpc_timer_init(&wa->w->alarm, grpc_timespec_to_millis_round_up(wa->deadline),
|
188
188
|
&wa->w->on_timeout);
|
@@ -201,7 +201,7 @@ void grpc_channel_watch_connectivity_state(
|
|
201
201
|
grpc_channel_element* client_channel_elem =
|
202
202
|
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
203
203
|
grpc_core::ExecCtx exec_ctx;
|
204
|
-
state_watcher* w = (
|
204
|
+
state_watcher* w = static_cast<state_watcher*>(gpr_malloc(sizeof(*w)));
|
205
205
|
|
206
206
|
GRPC_API_TRACE(
|
207
207
|
"grpc_channel_watch_connectivity_state("
|
@@ -227,8 +227,8 @@ void grpc_channel_watch_connectivity_state(
|
|
227
227
|
w->channel = channel;
|
228
228
|
w->error = nullptr;
|
229
229
|
|
230
|
-
watcher_timer_init_arg* wa =
|
231
|
-
|
230
|
+
watcher_timer_init_arg* wa = static_cast<watcher_timer_init_arg*>(
|
231
|
+
gpr_malloc(sizeof(watcher_timer_init_arg)));
|
232
232
|
wa->w = w;
|
233
233
|
wa->deadline = deadline;
|
234
234
|
GRPC_CLOSURE_INIT(&w->watcher_timer_init, watcher_timer_init, wa,
|
@@ -29,7 +29,6 @@
|
|
29
29
|
#include <grpc/support/log.h>
|
30
30
|
#include <grpc/support/string_util.h>
|
31
31
|
#include <grpc/support/sync.h>
|
32
|
-
#include <grpc/support/useful.h>
|
33
32
|
|
34
33
|
#include "src/core/ext/filters/client_channel/backup_poller.h"
|
35
34
|
#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
|
@@ -89,10 +88,10 @@ static void method_parameters_unref(method_parameters* method_params) {
|
|
89
88
|
|
90
89
|
// Wrappers to pass to grpc_service_config_create_method_config_table().
|
91
90
|
static void* method_parameters_ref_wrapper(void* value) {
|
92
|
-
return method_parameters_ref((
|
91
|
+
return method_parameters_ref(static_cast<method_parameters*>(value));
|
93
92
|
}
|
94
93
|
static void method_parameters_unref_wrapper(void* value) {
|
95
|
-
method_parameters_unref((
|
94
|
+
method_parameters_unref(static_cast<method_parameters*>(value));
|
96
95
|
}
|
97
96
|
|
98
97
|
static bool parse_wait_for_ready(grpc_json* field,
|
@@ -120,7 +119,7 @@ static bool parse_timeout(grpc_json* field, grpc_millis* timeout) {
|
|
120
119
|
gpr_free(buf);
|
121
120
|
return false;
|
122
121
|
}
|
123
|
-
int num_digits = (
|
122
|
+
int num_digits = static_cast<int>(strlen(decimal_point + 1));
|
124
123
|
if (num_digits > 9) { // We don't accept greater precision than nanos.
|
125
124
|
gpr_free(buf);
|
126
125
|
return false;
|
@@ -150,7 +149,7 @@ static void* method_parameters_create_from_json(const grpc_json* json) {
|
|
150
149
|
}
|
151
150
|
}
|
152
151
|
method_parameters* value =
|
153
|
-
(
|
152
|
+
static_cast<method_parameters*>(gpr_malloc(sizeof(method_parameters)));
|
154
153
|
gpr_ref_init(&value->refs, 1);
|
155
154
|
value->timeout = timeout;
|
156
155
|
value->wait_for_ready = wait_for_ready;
|
@@ -165,7 +164,7 @@ struct external_connectivity_watcher;
|
|
165
164
|
|
166
165
|
typedef struct client_channel_channel_data {
|
167
166
|
/** resolver for this channel */
|
168
|
-
|
167
|
+
grpc_core::OrphanablePtr<grpc_core::Resolver> resolver;
|
169
168
|
/** have we started resolving this channel */
|
170
169
|
bool started_resolving;
|
171
170
|
/** is deadline checking enabled? */
|
@@ -176,7 +175,7 @@ typedef struct client_channel_channel_data {
|
|
176
175
|
/** combiner protecting all variables below in this data structure */
|
177
176
|
grpc_combiner* combiner;
|
178
177
|
/** currently active load balancer */
|
179
|
-
|
178
|
+
grpc_core::OrphanablePtr<grpc_core::LoadBalancingPolicy> lb_policy;
|
180
179
|
/** retry throttle data */
|
181
180
|
grpc_server_retry_throttle_data* retry_throttle_data;
|
182
181
|
/** maps method names to method_parameters structs */
|
@@ -213,7 +212,7 @@ typedef struct {
|
|
213
212
|
channel_data* chand;
|
214
213
|
/** used as an identifier, don't dereference it because the LB policy may be
|
215
214
|
* non-existing when the callback is run */
|
216
|
-
|
215
|
+
grpc_core::LoadBalancingPolicy* lb_policy;
|
217
216
|
grpc_closure closure;
|
218
217
|
} reresolution_request_args;
|
219
218
|
|
@@ -224,11 +223,11 @@ typedef struct {
|
|
224
223
|
channel_data* chand;
|
225
224
|
grpc_closure on_changed;
|
226
225
|
grpc_connectivity_state state;
|
227
|
-
|
226
|
+
grpc_core::LoadBalancingPolicy* lb_policy;
|
228
227
|
} lb_policy_connectivity_watcher;
|
229
228
|
|
230
229
|
static void watch_lb_policy_locked(channel_data* chand,
|
231
|
-
|
230
|
+
grpc_core::LoadBalancingPolicy* lb_policy,
|
232
231
|
grpc_connectivity_state current_state);
|
233
232
|
|
234
233
|
static void set_channel_connectivity_state_locked(channel_data* chand,
|
@@ -242,15 +241,13 @@ static void set_channel_connectivity_state_locked(channel_data* chand,
|
|
242
241
|
if (chand->lb_policy != nullptr) {
|
243
242
|
if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
244
243
|
/* cancel picks with wait_for_ready=false */
|
245
|
-
|
246
|
-
chand->lb_policy,
|
244
|
+
chand->lb_policy->CancelMatchingPicksLocked(
|
247
245
|
/* mask= */ GRPC_INITIAL_METADATA_WAIT_FOR_READY,
|
248
246
|
/* check= */ 0, GRPC_ERROR_REF(error));
|
249
247
|
} else if (state == GRPC_CHANNEL_SHUTDOWN) {
|
250
248
|
/* cancel all picks */
|
251
|
-
|
252
|
-
|
253
|
-
GRPC_ERROR_REF(error));
|
249
|
+
chand->lb_policy->CancelMatchingPicksLocked(/* mask= */ 0, /* check= */ 0,
|
250
|
+
GRPC_ERROR_REF(error));
|
254
251
|
}
|
255
252
|
}
|
256
253
|
if (grpc_client_channel_trace.enabled()) {
|
@@ -261,9 +258,10 @@ static void set_channel_connectivity_state_locked(channel_data* chand,
|
|
261
258
|
}
|
262
259
|
|
263
260
|
static void on_lb_policy_state_changed_locked(void* arg, grpc_error* error) {
|
264
|
-
lb_policy_connectivity_watcher* w =
|
261
|
+
lb_policy_connectivity_watcher* w =
|
262
|
+
static_cast<lb_policy_connectivity_watcher*>(arg);
|
265
263
|
/* check if the notification is for the latest policy */
|
266
|
-
if (w->lb_policy == w->chand->lb_policy) {
|
264
|
+
if (w->lb_policy == w->chand->lb_policy.get()) {
|
267
265
|
if (grpc_client_channel_trace.enabled()) {
|
268
266
|
gpr_log(GPR_DEBUG, "chand=%p: lb_policy=%p state changed to %s", w->chand,
|
269
267
|
w->lb_policy, grpc_connectivity_state_name(w->state));
|
@@ -279,18 +277,17 @@ static void on_lb_policy_state_changed_locked(void* arg, grpc_error* error) {
|
|
279
277
|
}
|
280
278
|
|
281
279
|
static void watch_lb_policy_locked(channel_data* chand,
|
282
|
-
|
280
|
+
grpc_core::LoadBalancingPolicy* lb_policy,
|
283
281
|
grpc_connectivity_state current_state) {
|
284
282
|
lb_policy_connectivity_watcher* w =
|
285
|
-
(
|
283
|
+
static_cast<lb_policy_connectivity_watcher*>(gpr_malloc(sizeof(*w)));
|
286
284
|
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "watch_lb_policy");
|
287
285
|
w->chand = chand;
|
288
286
|
GRPC_CLOSURE_INIT(&w->on_changed, on_lb_policy_state_changed_locked, w,
|
289
287
|
grpc_combiner_scheduler(chand->combiner));
|
290
288
|
w->state = current_state;
|
291
289
|
w->lb_policy = lb_policy;
|
292
|
-
|
293
|
-
&w->on_changed);
|
290
|
+
lb_policy->NotifyOnStateChangeLocked(&w->state, &w->on_changed);
|
294
291
|
}
|
295
292
|
|
296
293
|
static void start_resolving_locked(channel_data* chand) {
|
@@ -300,8 +297,8 @@ static void start_resolving_locked(channel_data* chand) {
|
|
300
297
|
GPR_ASSERT(!chand->started_resolving);
|
301
298
|
chand->started_resolving = true;
|
302
299
|
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
|
303
|
-
|
304
|
-
|
300
|
+
chand->resolver->NextLocked(&chand->resolver_result,
|
301
|
+
&chand->on_resolver_result_changed);
|
305
302
|
}
|
306
303
|
|
307
304
|
typedef struct {
|
@@ -311,7 +308,7 @@ typedef struct {
|
|
311
308
|
|
312
309
|
static void parse_retry_throttle_params(const grpc_json* field, void* arg) {
|
313
310
|
service_config_parsing_state* parsing_state =
|
314
|
-
(
|
311
|
+
static_cast<service_config_parsing_state*>(arg);
|
315
312
|
if (strcmp(field->key, "retryThrottling") == 0) {
|
316
313
|
if (parsing_state->retry_throttle_data != nullptr) return; // Duplicate.
|
317
314
|
if (field->type != GRPC_JSON_OBJECT) return;
|
@@ -335,7 +332,7 @@ static void parse_retry_throttle_params(const grpc_json* field, void* arg) {
|
|
335
332
|
uint32_t decimal_value = 0;
|
336
333
|
const char* decimal_point = strchr(sub_field->value, '.');
|
337
334
|
if (decimal_point != nullptr) {
|
338
|
-
whole_len =
|
335
|
+
whole_len = static_cast<size_t>(decimal_point - sub_field->value);
|
339
336
|
multiplier = 1000;
|
340
337
|
size_t decimal_len = strlen(decimal_point + 1);
|
341
338
|
if (decimal_len > 3) decimal_len = 3;
|
@@ -354,7 +351,8 @@ static void parse_retry_throttle_params(const grpc_json* field, void* arg) {
|
|
354
351
|
&whole_value)) {
|
355
352
|
return;
|
356
353
|
}
|
357
|
-
milli_token_ratio =
|
354
|
+
milli_token_ratio =
|
355
|
+
static_cast<int>((whole_value * multiplier) + decimal_value);
|
358
356
|
if (milli_token_ratio <= 0) return;
|
359
357
|
}
|
360
358
|
}
|
@@ -365,11 +363,12 @@ static void parse_retry_throttle_params(const grpc_json* field, void* arg) {
|
|
365
363
|
}
|
366
364
|
|
367
365
|
static void request_reresolution_locked(void* arg, grpc_error* error) {
|
368
|
-
reresolution_request_args* args =
|
366
|
+
reresolution_request_args* args =
|
367
|
+
static_cast<reresolution_request_args*>(arg);
|
369
368
|
channel_data* chand = args->chand;
|
370
369
|
// If this invocation is for a stale LB policy, treat it as an LB shutdown
|
371
370
|
// signal.
|
372
|
-
if (args->lb_policy != chand->lb_policy || error != GRPC_ERROR_NONE ||
|
371
|
+
if (args->lb_policy != chand->lb_policy.get() || error != GRPC_ERROR_NONE ||
|
373
372
|
chand->resolver == nullptr) {
|
374
373
|
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "re-resolution");
|
375
374
|
gpr_free(args);
|
@@ -378,42 +377,39 @@ static void request_reresolution_locked(void* arg, grpc_error* error) {
|
|
378
377
|
if (grpc_client_channel_trace.enabled()) {
|
379
378
|
gpr_log(GPR_DEBUG, "chand=%p: started name re-resolving", chand);
|
380
379
|
}
|
381
|
-
|
380
|
+
chand->resolver->RequestReresolutionLocked();
|
382
381
|
// Give back the closure to the LB policy.
|
383
|
-
|
382
|
+
chand->lb_policy->SetReresolutionClosureLocked(&args->closure);
|
384
383
|
}
|
385
384
|
|
386
385
|
static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
|
387
|
-
channel_data* chand = (
|
386
|
+
channel_data* chand = static_cast<channel_data*>(arg);
|
388
387
|
if (grpc_client_channel_trace.enabled()) {
|
389
388
|
gpr_log(GPR_DEBUG, "chand=%p: got resolver result: error=%s", chand,
|
390
389
|
grpc_error_string(error));
|
391
390
|
}
|
392
391
|
// Extract the following fields from the resolver result, if non-NULL.
|
393
392
|
bool lb_policy_updated = false;
|
393
|
+
bool lb_policy_created = false;
|
394
394
|
char* lb_policy_name_dup = nullptr;
|
395
395
|
bool lb_policy_name_changed = false;
|
396
|
-
|
396
|
+
grpc_core::OrphanablePtr<grpc_core::LoadBalancingPolicy> new_lb_policy;
|
397
397
|
char* service_config_json = nullptr;
|
398
398
|
grpc_server_retry_throttle_data* retry_throttle_data = nullptr;
|
399
399
|
grpc_slice_hash_table* method_params_table = nullptr;
|
400
400
|
if (chand->resolver_result != nullptr) {
|
401
401
|
if (chand->resolver != nullptr) {
|
402
402
|
// Find LB policy name.
|
403
|
-
const char* lb_policy_name = nullptr;
|
404
403
|
const grpc_arg* channel_arg = grpc_channel_args_find(
|
405
404
|
chand->resolver_result, GRPC_ARG_LB_POLICY_NAME);
|
406
|
-
|
407
|
-
GPR_ASSERT(channel_arg->type == GRPC_ARG_STRING);
|
408
|
-
lb_policy_name = channel_arg->value.string;
|
409
|
-
}
|
405
|
+
const char* lb_policy_name = grpc_channel_arg_get_string(channel_arg);
|
410
406
|
// Special case: If at least one balancer address is present, we use
|
411
407
|
// the grpclb policy, regardless of what the resolver actually specified.
|
412
408
|
channel_arg =
|
413
409
|
grpc_channel_args_find(chand->resolver_result, GRPC_ARG_LB_ADDRESSES);
|
414
410
|
if (channel_arg != nullptr && channel_arg->type == GRPC_ARG_POINTER) {
|
415
411
|
grpc_lb_addresses* addresses =
|
416
|
-
(
|
412
|
+
static_cast<grpc_lb_addresses*>(channel_arg->value.pointer.p);
|
417
413
|
bool found_balancer_address = false;
|
418
414
|
for (size_t i = 0; i < addresses->num_addresses; ++i) {
|
419
415
|
if (addresses->addresses[i].is_balancer) {
|
@@ -435,10 +431,7 @@ static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
|
|
435
431
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
436
432
|
// above.
|
437
433
|
if (lb_policy_name == nullptr) lb_policy_name = "pick_first";
|
438
|
-
|
439
|
-
lb_policy_args.args = chand->resolver_result;
|
440
|
-
lb_policy_args.client_channel_factory = chand->client_channel_factory;
|
441
|
-
lb_policy_args.combiner = chand->combiner;
|
434
|
+
|
442
435
|
// Check to see if we're already using the right LB policy.
|
443
436
|
// Note: It's safe to use chand->info_lb_policy_name here without
|
444
437
|
// taking a lock on chand->info_mu, because this function is the
|
@@ -450,39 +443,46 @@ static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
|
|
450
443
|
if (chand->lb_policy != nullptr && !lb_policy_name_changed) {
|
451
444
|
// Continue using the same LB policy. Update with new addresses.
|
452
445
|
lb_policy_updated = true;
|
453
|
-
|
446
|
+
chand->lb_policy->UpdateLocked(*chand->resolver_result);
|
454
447
|
} else {
|
455
448
|
// Instantiate new LB policy.
|
456
|
-
|
449
|
+
grpc_core::LoadBalancingPolicy::Args lb_policy_args;
|
450
|
+
lb_policy_args.combiner = chand->combiner;
|
451
|
+
lb_policy_args.client_channel_factory = chand->client_channel_factory;
|
452
|
+
lb_policy_args.args = chand->resolver_result;
|
453
|
+
new_lb_policy =
|
454
|
+
grpc_core::LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
|
455
|
+
lb_policy_name, lb_policy_args);
|
457
456
|
if (new_lb_policy == nullptr) {
|
458
457
|
gpr_log(GPR_ERROR, "could not create LB policy \"%s\"",
|
459
458
|
lb_policy_name);
|
460
459
|
} else {
|
460
|
+
lb_policy_created = true;
|
461
461
|
reresolution_request_args* args =
|
462
|
-
|
462
|
+
static_cast<reresolution_request_args*>(
|
463
|
+
gpr_zalloc(sizeof(*args)));
|
463
464
|
args->chand = chand;
|
464
|
-
args->lb_policy = new_lb_policy;
|
465
|
+
args->lb_policy = new_lb_policy.get();
|
465
466
|
GRPC_CLOSURE_INIT(&args->closure, request_reresolution_locked, args,
|
466
467
|
grpc_combiner_scheduler(chand->combiner));
|
467
468
|
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "re-resolution");
|
468
|
-
|
469
|
-
&args->closure);
|
469
|
+
new_lb_policy->SetReresolutionClosureLocked(&args->closure);
|
470
470
|
}
|
471
471
|
}
|
472
472
|
// Find service config.
|
473
473
|
channel_arg = grpc_channel_args_find(chand->resolver_result,
|
474
474
|
GRPC_ARG_SERVICE_CONFIG);
|
475
|
-
|
476
|
-
|
477
|
-
|
475
|
+
service_config_json =
|
476
|
+
gpr_strdup(grpc_channel_arg_get_string(channel_arg));
|
477
|
+
if (service_config_json != nullptr) {
|
478
478
|
grpc_service_config* service_config =
|
479
479
|
grpc_service_config_create(service_config_json);
|
480
480
|
if (service_config != nullptr) {
|
481
481
|
channel_arg = grpc_channel_args_find(chand->resolver_result,
|
482
482
|
GRPC_ARG_SERVER_URI);
|
483
|
-
|
484
|
-
GPR_ASSERT(
|
485
|
-
grpc_uri* uri = grpc_uri_parse(
|
483
|
+
const char* server_uri = grpc_channel_arg_get_string(channel_arg);
|
484
|
+
GPR_ASSERT(server_uri != nullptr);
|
485
|
+
grpc_uri* uri = grpc_uri_parse(server_uri, true);
|
486
486
|
GPR_ASSERT(uri->path[0] != '\0');
|
487
487
|
service_config_parsing_state parsing_state;
|
488
488
|
memset(&parsing_state, 0, sizeof(parsing_state));
|
@@ -549,14 +549,14 @@ static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
|
|
549
549
|
if (chand->lb_policy != nullptr) {
|
550
550
|
if (grpc_client_channel_trace.enabled()) {
|
551
551
|
gpr_log(GPR_DEBUG, "chand=%p: unreffing lb_policy=%p", chand,
|
552
|
-
chand->lb_policy);
|
552
|
+
chand->lb_policy.get());
|
553
553
|
}
|
554
|
-
grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties,
|
554
|
+
grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties(),
|
555
555
|
chand->interested_parties);
|
556
|
-
|
557
|
-
|
556
|
+
chand->lb_policy->HandOffPendingPicksLocked(new_lb_policy.get());
|
557
|
+
chand->lb_policy.reset();
|
558
558
|
}
|
559
|
-
chand->lb_policy = new_lb_policy;
|
559
|
+
chand->lb_policy = std::move(new_lb_policy);
|
560
560
|
}
|
561
561
|
// Now that we've swapped out the relevant fields of chand, check for
|
562
562
|
// error or shutdown.
|
@@ -568,55 +568,52 @@ static void on_resolver_result_changed_locked(void* arg, grpc_error* error) {
|
|
568
568
|
if (grpc_client_channel_trace.enabled()) {
|
569
569
|
gpr_log(GPR_DEBUG, "chand=%p: shutting down resolver", chand);
|
570
570
|
}
|
571
|
-
|
572
|
-
GRPC_RESOLVER_UNREF(chand->resolver, "channel");
|
573
|
-
chand->resolver = nullptr;
|
571
|
+
chand->resolver.reset();
|
574
572
|
}
|
575
573
|
set_channel_connectivity_state_locked(
|
576
574
|
chand, GRPC_CHANNEL_SHUTDOWN,
|
577
575
|
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
578
576
|
"Got resolver result after disconnection", &error, 1),
|
579
577
|
"resolver_gone");
|
580
|
-
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "resolver");
|
581
578
|
grpc_closure_list_fail_all(&chand->waiting_for_resolver_result_closures,
|
582
579
|
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
583
580
|
"Channel disconnected", &error, 1));
|
584
581
|
GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures);
|
582
|
+
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack, "resolver");
|
585
583
|
} else { // Not shutting down.
|
586
584
|
grpc_connectivity_state state = GRPC_CHANNEL_TRANSIENT_FAILURE;
|
587
585
|
grpc_error* state_error =
|
588
586
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("No load balancing policy");
|
589
|
-
if (
|
587
|
+
if (lb_policy_created) {
|
590
588
|
if (grpc_client_channel_trace.enabled()) {
|
591
589
|
gpr_log(GPR_DEBUG, "chand=%p: initializing new LB policy", chand);
|
592
590
|
}
|
593
591
|
GRPC_ERROR_UNREF(state_error);
|
594
|
-
state =
|
595
|
-
|
596
|
-
grpc_pollset_set_add_pollset_set(new_lb_policy->interested_parties,
|
592
|
+
state = chand->lb_policy->CheckConnectivityLocked(&state_error);
|
593
|
+
grpc_pollset_set_add_pollset_set(chand->lb_policy->interested_parties(),
|
597
594
|
chand->interested_parties);
|
598
595
|
GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures);
|
599
596
|
if (chand->exit_idle_when_lb_policy_arrives) {
|
600
|
-
|
597
|
+
chand->lb_policy->ExitIdleLocked();
|
601
598
|
chand->exit_idle_when_lb_policy_arrives = false;
|
602
599
|
}
|
603
|
-
watch_lb_policy_locked(chand,
|
600
|
+
watch_lb_policy_locked(chand, chand->lb_policy.get(), state);
|
604
601
|
}
|
605
602
|
if (!lb_policy_updated) {
|
606
603
|
set_channel_connectivity_state_locked(
|
607
604
|
chand, state, GRPC_ERROR_REF(state_error), "new_lb+resolver");
|
608
605
|
}
|
609
|
-
|
610
|
-
|
606
|
+
chand->resolver->NextLocked(&chand->resolver_result,
|
607
|
+
&chand->on_resolver_result_changed);
|
611
608
|
GRPC_ERROR_UNREF(state_error);
|
612
609
|
}
|
613
610
|
}
|
614
611
|
|
615
612
|
static void start_transport_op_locked(void* arg, grpc_error* error_ignored) {
|
616
|
-
grpc_transport_op* op = (
|
613
|
+
grpc_transport_op* op = static_cast<grpc_transport_op*>(arg);
|
617
614
|
grpc_channel_element* elem =
|
618
|
-
(
|
619
|
-
channel_data* chand = (
|
615
|
+
static_cast<grpc_channel_element*>(op->handler_private.extra_arg);
|
616
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
620
617
|
|
621
618
|
if (op->on_connectivity_state_change != nullptr) {
|
622
619
|
grpc_connectivity_state_notify_on_state_change(
|
@@ -635,8 +632,8 @@ static void start_transport_op_locked(void* arg, grpc_error* error_ignored) {
|
|
635
632
|
op->send_ping.on_ack,
|
636
633
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Ping with no load balancing"));
|
637
634
|
} else {
|
638
|
-
|
639
|
-
|
635
|
+
chand->lb_policy->PingOneLocked(op->send_ping.on_initiate,
|
636
|
+
op->send_ping.on_ack);
|
640
637
|
op->bind_pollset = nullptr;
|
641
638
|
}
|
642
639
|
op->send_ping.on_initiate = nullptr;
|
@@ -648,20 +645,16 @@ static void start_transport_op_locked(void* arg, grpc_error* error_ignored) {
|
|
648
645
|
set_channel_connectivity_state_locked(
|
649
646
|
chand, GRPC_CHANNEL_SHUTDOWN,
|
650
647
|
GRPC_ERROR_REF(op->disconnect_with_error), "disconnect");
|
651
|
-
|
652
|
-
GRPC_RESOLVER_UNREF(chand->resolver, "channel");
|
653
|
-
chand->resolver = nullptr;
|
648
|
+
chand->resolver.reset();
|
654
649
|
if (!chand->started_resolving) {
|
655
650
|
grpc_closure_list_fail_all(&chand->waiting_for_resolver_result_closures,
|
656
651
|
GRPC_ERROR_REF(op->disconnect_with_error));
|
657
652
|
GRPC_CLOSURE_LIST_SCHED(&chand->waiting_for_resolver_result_closures);
|
658
653
|
}
|
659
654
|
if (chand->lb_policy != nullptr) {
|
660
|
-
grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties,
|
655
|
+
grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties(),
|
661
656
|
chand->interested_parties);
|
662
|
-
|
663
|
-
GRPC_LB_POLICY_UNREF(chand->lb_policy, "channel");
|
664
|
-
chand->lb_policy = nullptr;
|
657
|
+
chand->lb_policy.reset();
|
665
658
|
}
|
666
659
|
}
|
667
660
|
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
@@ -673,7 +666,7 @@ static void start_transport_op_locked(void* arg, grpc_error* error_ignored) {
|
|
673
666
|
|
674
667
|
static void cc_start_transport_op(grpc_channel_element* elem,
|
675
668
|
grpc_transport_op* op) {
|
676
|
-
channel_data* chand = (
|
669
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
677
670
|
|
678
671
|
GPR_ASSERT(op->set_accept_stream == false);
|
679
672
|
if (op->bind_pollset != nullptr) {
|
@@ -690,7 +683,7 @@ static void cc_start_transport_op(grpc_channel_element* elem,
|
|
690
683
|
|
691
684
|
static void cc_get_channel_info(grpc_channel_element* elem,
|
692
685
|
const grpc_channel_info* info) {
|
693
|
-
channel_data* chand = (
|
686
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
694
687
|
gpr_mu_lock(&chand->info_mu);
|
695
688
|
if (info->lb_policy_name != nullptr) {
|
696
689
|
*info->lb_policy_name = chand->info_lb_policy_name == nullptr
|
@@ -709,7 +702,7 @@ static void cc_get_channel_info(grpc_channel_element* elem,
|
|
709
702
|
/* Constructor for channel_data */
|
710
703
|
static grpc_error* cc_init_channel_elem(grpc_channel_element* elem,
|
711
704
|
grpc_channel_element_args* args) {
|
712
|
-
channel_data* chand = (
|
705
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
713
706
|
GPR_ASSERT(args->is_last);
|
714
707
|
GPR_ASSERT(elem->filter == &grpc_client_channel_filter);
|
715
708
|
// Initialize data members.
|
@@ -741,9 +734,9 @@ static grpc_error* cc_init_channel_elem(grpc_channel_element* elem,
|
|
741
734
|
"client channel factory arg must be a pointer");
|
742
735
|
}
|
743
736
|
grpc_client_channel_factory_ref(
|
744
|
-
(
|
737
|
+
static_cast<grpc_client_channel_factory*>(arg->value.pointer.p));
|
745
738
|
chand->client_channel_factory =
|
746
|
-
(
|
739
|
+
static_cast<grpc_client_channel_factory*>(arg->value.pointer.p);
|
747
740
|
// Get server name to resolve, using proxy mapper if needed.
|
748
741
|
arg = grpc_channel_args_find(args->channel_args, GRPC_ARG_SERVER_URI);
|
749
742
|
if (arg == nullptr) {
|
@@ -759,7 +752,7 @@ static grpc_error* cc_init_channel_elem(grpc_channel_element* elem,
|
|
759
752
|
grpc_proxy_mappers_map_name(arg->value.string, args->channel_args,
|
760
753
|
&proxy_name, &new_args);
|
761
754
|
// Instantiate resolver.
|
762
|
-
chand->resolver =
|
755
|
+
chand->resolver = grpc_core::ResolverRegistry::CreateResolver(
|
763
756
|
proxy_name != nullptr ? proxy_name : arg->value.string,
|
764
757
|
new_args != nullptr ? new_args : args->channel_args,
|
765
758
|
chand->interested_parties, chand->combiner);
|
@@ -774,17 +767,16 @@ static grpc_error* cc_init_channel_elem(grpc_channel_element* elem,
|
|
774
767
|
}
|
775
768
|
|
776
769
|
static void shutdown_resolver_locked(void* arg, grpc_error* error) {
|
777
|
-
|
778
|
-
|
779
|
-
GRPC_RESOLVER_UNREF(resolver, "channel");
|
770
|
+
grpc_core::Resolver* resolver = static_cast<grpc_core::Resolver*>(arg);
|
771
|
+
resolver->Orphan();
|
780
772
|
}
|
781
773
|
|
782
774
|
/* Destructor for channel_data */
|
783
775
|
static void cc_destroy_channel_elem(grpc_channel_element* elem) {
|
784
|
-
channel_data* chand = (
|
776
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
785
777
|
if (chand->resolver != nullptr) {
|
786
778
|
GRPC_CLOSURE_SCHED(
|
787
|
-
GRPC_CLOSURE_CREATE(shutdown_resolver_locked, chand->resolver,
|
779
|
+
GRPC_CLOSURE_CREATE(shutdown_resolver_locked, chand->resolver.release(),
|
788
780
|
grpc_combiner_scheduler(chand->combiner)),
|
789
781
|
GRPC_ERROR_NONE);
|
790
782
|
}
|
@@ -792,10 +784,9 @@ static void cc_destroy_channel_elem(grpc_channel_element* elem) {
|
|
792
784
|
grpc_client_channel_factory_unref(chand->client_channel_factory);
|
793
785
|
}
|
794
786
|
if (chand->lb_policy != nullptr) {
|
795
|
-
grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties,
|
787
|
+
grpc_pollset_set_del_pollset_set(chand->lb_policy->interested_parties(),
|
796
788
|
chand->interested_parties);
|
797
|
-
|
798
|
-
GRPC_LB_POLICY_UNREF(chand->lb_policy, "channel");
|
789
|
+
chand->lb_policy.reset();
|
799
790
|
}
|
800
791
|
gpr_free(chand->info_lb_policy_name);
|
801
792
|
gpr_free(chand->info_service_config_json);
|
@@ -855,7 +846,7 @@ typedef struct client_channel_call_data {
|
|
855
846
|
grpc_subchannel_call* subchannel_call;
|
856
847
|
grpc_error* error;
|
857
848
|
|
858
|
-
|
849
|
+
grpc_core::LoadBalancingPolicy::PickState pick;
|
859
850
|
grpc_closure lb_pick_closure;
|
860
851
|
grpc_closure lb_pick_cancel_closure;
|
861
852
|
|
@@ -873,7 +864,7 @@ typedef struct client_channel_call_data {
|
|
873
864
|
|
874
865
|
grpc_subchannel_call* grpc_client_channel_get_subchannel_call(
|
875
866
|
grpc_call_element* elem) {
|
876
|
-
call_data* calld = (
|
867
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
877
868
|
return calld->subchannel_call;
|
878
869
|
}
|
879
870
|
|
@@ -892,7 +883,7 @@ static void waiting_for_pick_batches_add(
|
|
892
883
|
|
893
884
|
// This is called via the call combiner, so access to calld is synchronized.
|
894
885
|
static void fail_pending_batch_in_call_combiner(void* arg, grpc_error* error) {
|
895
|
-
call_data* calld = (
|
886
|
+
call_data* calld = static_cast<call_data*>(arg);
|
896
887
|
if (calld->waiting_for_pick_batches_count > 0) {
|
897
888
|
--calld->waiting_for_pick_batches_count;
|
898
889
|
grpc_transport_stream_op_batch_finish_with_failure(
|
@@ -904,7 +895,7 @@ static void fail_pending_batch_in_call_combiner(void* arg, grpc_error* error) {
|
|
904
895
|
// This is called via the call combiner, so access to calld is synchronized.
|
905
896
|
static void waiting_for_pick_batches_fail(grpc_call_element* elem,
|
906
897
|
grpc_error* error) {
|
907
|
-
call_data* calld = (
|
898
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
908
899
|
if (grpc_client_channel_trace.enabled()) {
|
909
900
|
gpr_log(GPR_DEBUG,
|
910
901
|
"chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
|
@@ -932,7 +923,7 @@ static void waiting_for_pick_batches_fail(grpc_call_element* elem,
|
|
932
923
|
|
933
924
|
// This is called via the call combiner, so access to calld is synchronized.
|
934
925
|
static void run_pending_batch_in_call_combiner(void* arg, grpc_error* ignored) {
|
935
|
-
call_data* calld = (
|
926
|
+
call_data* calld = static_cast<call_data*>(arg);
|
936
927
|
if (calld->waiting_for_pick_batches_count > 0) {
|
937
928
|
--calld->waiting_for_pick_batches_count;
|
938
929
|
grpc_subchannel_call_process_op(
|
@@ -943,8 +934,8 @@ static void run_pending_batch_in_call_combiner(void* arg, grpc_error* ignored) {
|
|
943
934
|
|
944
935
|
// This is called via the call combiner, so access to calld is synchronized.
|
945
936
|
static void waiting_for_pick_batches_resume(grpc_call_element* elem) {
|
946
|
-
channel_data* chand = (
|
947
|
-
call_data* calld = (
|
937
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
938
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
948
939
|
if (grpc_client_channel_trace.enabled()) {
|
949
940
|
gpr_log(GPR_DEBUG,
|
950
941
|
"chand=%p calld=%p: sending %" PRIuPTR
|
@@ -968,8 +959,8 @@ static void waiting_for_pick_batches_resume(grpc_call_element* elem) {
|
|
968
959
|
// Applies service config to the call. Must be invoked once we know
|
969
960
|
// that the resolver has returned results to the channel.
|
970
961
|
static void apply_service_config_to_call_locked(grpc_call_element* elem) {
|
971
|
-
channel_data* chand = (
|
972
|
-
call_data* calld = (
|
962
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
963
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
973
964
|
if (grpc_client_channel_trace.enabled()) {
|
974
965
|
gpr_log(GPR_DEBUG, "chand=%p calld=%p: applying service config to call",
|
975
966
|
chand, calld);
|
@@ -979,8 +970,8 @@ static void apply_service_config_to_call_locked(grpc_call_element* elem) {
|
|
979
970
|
grpc_server_retry_throttle_data_ref(chand->retry_throttle_data);
|
980
971
|
}
|
981
972
|
if (chand->method_params_table != nullptr) {
|
982
|
-
calld->method_params =
|
983
|
-
chand->method_params_table, calld->path);
|
973
|
+
calld->method_params = static_cast<method_parameters*>(
|
974
|
+
grpc_method_config_table_get(chand->method_params_table, calld->path));
|
984
975
|
if (calld->method_params != nullptr) {
|
985
976
|
method_parameters_ref(calld->method_params);
|
986
977
|
// If the deadline from the service config is shorter than the one
|
@@ -1001,9 +992,9 @@ static void apply_service_config_to_call_locked(grpc_call_element* elem) {
|
|
1001
992
|
|
1002
993
|
static void create_subchannel_call_locked(grpc_call_element* elem,
|
1003
994
|
grpc_error* error) {
|
1004
|
-
channel_data* chand = (
|
1005
|
-
call_data* calld = (
|
1006
|
-
const
|
995
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
996
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
997
|
+
const grpc_core::ConnectedSubchannel::CallArgs call_args = {
|
1007
998
|
calld->pollent, // pollent
|
1008
999
|
calld->path, // path
|
1009
1000
|
calld->call_start_time, // start_time
|
@@ -1012,8 +1003,8 @@ static void create_subchannel_call_locked(grpc_call_element* elem,
|
|
1012
1003
|
calld->pick.subchannel_call_context, // context
|
1013
1004
|
calld->call_combiner // call_combiner
|
1014
1005
|
};
|
1015
|
-
grpc_error* new_error =
|
1016
|
-
|
1006
|
+
grpc_error* new_error = calld->pick.connected_subchannel->CreateCall(
|
1007
|
+
call_args, &calld->subchannel_call);
|
1017
1008
|
if (grpc_client_channel_trace.enabled()) {
|
1018
1009
|
gpr_log(GPR_DEBUG, "chand=%p calld=%p: create subchannel_call=%p: error=%s",
|
1019
1010
|
chand, calld, calld->subchannel_call, grpc_error_string(new_error));
|
@@ -1029,8 +1020,8 @@ static void create_subchannel_call_locked(grpc_call_element* elem,
|
|
1029
1020
|
|
1030
1021
|
// Invoked when a pick is completed, on both success or failure.
|
1031
1022
|
static void pick_done_locked(grpc_call_element* elem, grpc_error* error) {
|
1032
|
-
call_data* calld = (
|
1033
|
-
channel_data* chand = (
|
1023
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1024
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1034
1025
|
if (calld->pick.connected_subchannel == nullptr) {
|
1035
1026
|
// Failed to create subchannel.
|
1036
1027
|
GRPC_ERROR_UNREF(calld->error);
|
@@ -1057,8 +1048,8 @@ static void pick_done_locked(grpc_call_element* elem, grpc_error* error) {
|
|
1057
1048
|
// pick was done asynchronously. Removes the call's polling entity from
|
1058
1049
|
// chand->interested_parties before invoking pick_done_locked().
|
1059
1050
|
static void async_pick_done_locked(grpc_call_element* elem, grpc_error* error) {
|
1060
|
-
channel_data* chand = (
|
1061
|
-
call_data* calld = (
|
1051
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1052
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1062
1053
|
grpc_polling_entity_del_from_pollset_set(calld->pollent,
|
1063
1054
|
chand->interested_parties);
|
1064
1055
|
pick_done_locked(elem, error);
|
@@ -1067,29 +1058,28 @@ static void async_pick_done_locked(grpc_call_element* elem, grpc_error* error) {
|
|
1067
1058
|
// Note: This runs under the client_channel combiner, but will NOT be
|
1068
1059
|
// holding the call combiner.
|
1069
1060
|
static void pick_callback_cancel_locked(void* arg, grpc_error* error) {
|
1070
|
-
grpc_call_element* elem = (
|
1071
|
-
channel_data* chand = (
|
1072
|
-
call_data* calld = (
|
1061
|
+
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1062
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1063
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1073
1064
|
// Note: chand->lb_policy may have changed since we started our pick,
|
1074
1065
|
// in which case we will be cancelling the pick on a policy other than
|
1075
1066
|
// the one we started it on. However, this will just be a no-op.
|
1076
1067
|
if (error != GRPC_ERROR_NONE && chand->lb_policy != nullptr) {
|
1077
1068
|
if (grpc_client_channel_trace.enabled()) {
|
1078
1069
|
gpr_log(GPR_DEBUG, "chand=%p calld=%p: cancelling pick from LB policy %p",
|
1079
|
-
chand, calld, chand->lb_policy);
|
1070
|
+
chand, calld, chand->lb_policy.get());
|
1080
1071
|
}
|
1081
|
-
|
1082
|
-
GRPC_ERROR_REF(error));
|
1072
|
+
chand->lb_policy->CancelPickLocked(&calld->pick, GRPC_ERROR_REF(error));
|
1083
1073
|
}
|
1084
1074
|
GRPC_CALL_STACK_UNREF(calld->owning_call, "pick_callback_cancel");
|
1085
1075
|
}
|
1086
1076
|
|
1087
|
-
// Callback invoked by
|
1077
|
+
// Callback invoked by LoadBalancingPolicy::PickLocked() for async picks.
|
1088
1078
|
// Unrefs the LB policy and invokes async_pick_done_locked().
|
1089
1079
|
static void pick_callback_done_locked(void* arg, grpc_error* error) {
|
1090
|
-
grpc_call_element* elem = (
|
1091
|
-
channel_data* chand = (
|
1092
|
-
call_data* calld = (
|
1080
|
+
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1081
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1082
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1093
1083
|
if (grpc_client_channel_trace.enabled()) {
|
1094
1084
|
gpr_log(GPR_DEBUG, "chand=%p calld=%p: pick completed asynchronously",
|
1095
1085
|
chand, calld);
|
@@ -1098,15 +1088,14 @@ static void pick_callback_done_locked(void* arg, grpc_error* error) {
|
|
1098
1088
|
GRPC_CALL_STACK_UNREF(calld->owning_call, "pick_callback");
|
1099
1089
|
}
|
1100
1090
|
|
1101
|
-
//
|
1102
|
-
//
|
1103
|
-
// returns true.
|
1091
|
+
// Starts a pick on chand->lb_policy.
|
1092
|
+
// Returns true if pick is completed synchronously.
|
1104
1093
|
static bool pick_callback_start_locked(grpc_call_element* elem) {
|
1105
|
-
channel_data* chand = (
|
1106
|
-
call_data* calld = (
|
1094
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1095
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1107
1096
|
if (grpc_client_channel_trace.enabled()) {
|
1108
1097
|
gpr_log(GPR_DEBUG, "chand=%p calld=%p: starting pick on lb_policy=%p",
|
1109
|
-
chand, calld, chand->lb_policy);
|
1098
|
+
chand, calld, chand->lb_policy.get());
|
1110
1099
|
}
|
1111
1100
|
apply_service_config_to_call_locked(elem);
|
1112
1101
|
// If the application explicitly set wait_for_ready, use that.
|
@@ -1136,10 +1125,9 @@ static bool pick_callback_start_locked(grpc_call_element* elem) {
|
|
1136
1125
|
grpc_combiner_scheduler(chand->combiner));
|
1137
1126
|
calld->pick.on_complete = &calld->lb_pick_closure;
|
1138
1127
|
GRPC_CALL_STACK_REF(calld->owning_call, "pick_callback");
|
1139
|
-
const bool pick_done =
|
1140
|
-
grpc_lb_policy_pick_locked(chand->lb_policy, &calld->pick);
|
1128
|
+
const bool pick_done = chand->lb_policy->PickLocked(&calld->pick);
|
1141
1129
|
if (pick_done) {
|
1142
|
-
|
1130
|
+
// Pick completed synchronously.
|
1143
1131
|
if (grpc_client_channel_trace.enabled()) {
|
1144
1132
|
gpr_log(GPR_DEBUG, "chand=%p calld=%p: pick completed synchronously",
|
1145
1133
|
chand, calld);
|
@@ -1167,7 +1155,8 @@ typedef struct {
|
|
1167
1155
|
// holding the call combiner.
|
1168
1156
|
static void pick_after_resolver_result_cancel_locked(void* arg,
|
1169
1157
|
grpc_error* error) {
|
1170
|
-
pick_after_resolver_result_args* args =
|
1158
|
+
pick_after_resolver_result_args* args =
|
1159
|
+
static_cast<pick_after_resolver_result_args*>(arg);
|
1171
1160
|
if (args->finished) {
|
1172
1161
|
gpr_free(args);
|
1173
1162
|
return;
|
@@ -1181,8 +1170,8 @@ static void pick_after_resolver_result_cancel_locked(void* arg,
|
|
1181
1170
|
// async_pick_done_locked() to propagate the error back to the caller.
|
1182
1171
|
args->finished = true;
|
1183
1172
|
grpc_call_element* elem = args->elem;
|
1184
|
-
channel_data* chand = (
|
1185
|
-
call_data* calld = (
|
1173
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1174
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1186
1175
|
if (grpc_client_channel_trace.enabled()) {
|
1187
1176
|
gpr_log(GPR_DEBUG,
|
1188
1177
|
"chand=%p calld=%p: cancelling pick waiting for resolver result",
|
@@ -1201,7 +1190,8 @@ static void pick_after_resolver_result_start_locked(grpc_call_element* elem);
|
|
1201
1190
|
|
1202
1191
|
static void pick_after_resolver_result_done_locked(void* arg,
|
1203
1192
|
grpc_error* error) {
|
1204
|
-
pick_after_resolver_result_args* args =
|
1193
|
+
pick_after_resolver_result_args* args =
|
1194
|
+
static_cast<pick_after_resolver_result_args*>(arg);
|
1205
1195
|
if (args->finished) {
|
1206
1196
|
/* cancelled, do nothing */
|
1207
1197
|
if (grpc_client_channel_trace.enabled()) {
|
@@ -1212,8 +1202,8 @@ static void pick_after_resolver_result_done_locked(void* arg,
|
|
1212
1202
|
}
|
1213
1203
|
args->finished = true;
|
1214
1204
|
grpc_call_element* elem = args->elem;
|
1215
|
-
channel_data* chand = (
|
1216
|
-
call_data* calld = (
|
1205
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1206
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1217
1207
|
if (error != GRPC_ERROR_NONE) {
|
1218
1208
|
if (grpc_client_channel_trace.enabled()) {
|
1219
1209
|
gpr_log(GPR_DEBUG, "chand=%p calld=%p: resolver failed to return data",
|
@@ -1261,15 +1251,15 @@ static void pick_after_resolver_result_done_locked(void* arg,
|
|
1261
1251
|
}
|
1262
1252
|
|
1263
1253
|
static void pick_after_resolver_result_start_locked(grpc_call_element* elem) {
|
1264
|
-
channel_data* chand = (
|
1265
|
-
call_data* calld = (
|
1254
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1255
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1266
1256
|
if (grpc_client_channel_trace.enabled()) {
|
1267
1257
|
gpr_log(GPR_DEBUG,
|
1268
1258
|
"chand=%p calld=%p: deferring pick pending resolver result", chand,
|
1269
1259
|
calld);
|
1270
1260
|
}
|
1271
1261
|
pick_after_resolver_result_args* args =
|
1272
|
-
(
|
1262
|
+
static_cast<pick_after_resolver_result_args*>(gpr_zalloc(sizeof(*args)));
|
1273
1263
|
args->elem = elem;
|
1274
1264
|
GRPC_CLOSURE_INIT(&args->closure, pick_after_resolver_result_done_locked,
|
1275
1265
|
args, grpc_combiner_scheduler(chand->combiner));
|
@@ -1283,9 +1273,9 @@ static void pick_after_resolver_result_start_locked(grpc_call_element* elem) {
|
|
1283
1273
|
}
|
1284
1274
|
|
1285
1275
|
static void start_pick_locked(void* arg, grpc_error* ignored) {
|
1286
|
-
grpc_call_element* elem = (
|
1287
|
-
call_data* calld = (
|
1288
|
-
channel_data* chand = (
|
1276
|
+
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1277
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1278
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1289
1279
|
GPR_ASSERT(calld->pick.connected_subchannel == nullptr);
|
1290
1280
|
if (chand->lb_policy != nullptr) {
|
1291
1281
|
// We already have an LB policy, so ask it for a pick.
|
@@ -1316,8 +1306,8 @@ static void start_pick_locked(void* arg, grpc_error* ignored) {
|
|
1316
1306
|
}
|
1317
1307
|
|
1318
1308
|
static void on_complete(void* arg, grpc_error* error) {
|
1319
|
-
grpc_call_element* elem = (
|
1320
|
-
call_data* calld = (
|
1309
|
+
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1310
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1321
1311
|
if (calld->retry_throttle_data != nullptr) {
|
1322
1312
|
if (error == GRPC_ERROR_NONE) {
|
1323
1313
|
grpc_server_retry_throttle_data_record_success(
|
@@ -1336,12 +1326,12 @@ static void on_complete(void* arg, grpc_error* error) {
|
|
1336
1326
|
|
1337
1327
|
static void cc_start_transport_stream_op_batch(
|
1338
1328
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
1339
|
-
|
1340
|
-
|
1329
|
+
GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
|
1330
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1331
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1341
1332
|
if (chand->deadline_checking_enabled) {
|
1342
1333
|
grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
|
1343
1334
|
}
|
1344
|
-
GPR_TIMER_BEGIN("cc_start_transport_stream_op_batch", 0);
|
1345
1335
|
// If we've previously been cancelled, immediately fail any new batches.
|
1346
1336
|
if (calld->error != GRPC_ERROR_NONE) {
|
1347
1337
|
if (grpc_client_channel_trace.enabled()) {
|
@@ -1350,7 +1340,7 @@ static void cc_start_transport_stream_op_batch(
|
|
1350
1340
|
}
|
1351
1341
|
grpc_transport_stream_op_batch_finish_with_failure(
|
1352
1342
|
batch, GRPC_ERROR_REF(calld->error), calld->call_combiner);
|
1353
|
-
|
1343
|
+
return;
|
1354
1344
|
}
|
1355
1345
|
if (batch->cancel_stream) {
|
1356
1346
|
// Stash a copy of cancel_error in our call data, so that we can use
|
@@ -1372,7 +1362,7 @@ static void cc_start_transport_stream_op_batch(
|
|
1372
1362
|
waiting_for_pick_batches_add(calld, batch);
|
1373
1363
|
waiting_for_pick_batches_fail(elem, GRPC_ERROR_REF(calld->error));
|
1374
1364
|
}
|
1375
|
-
|
1365
|
+
return;
|
1376
1366
|
}
|
1377
1367
|
// Intercept on_complete for recv_trailing_metadata so that we can
|
1378
1368
|
// check retry throttle status.
|
@@ -1394,7 +1384,7 @@ static void cc_start_transport_stream_op_batch(
|
|
1394
1384
|
calld, calld->subchannel_call);
|
1395
1385
|
}
|
1396
1386
|
grpc_subchannel_call_process_op(calld->subchannel_call, batch);
|
1397
|
-
|
1387
|
+
return;
|
1398
1388
|
}
|
1399
1389
|
// We do not yet have a subchannel call.
|
1400
1390
|
// Add the batch to the waiting-for-pick list.
|
@@ -1420,15 +1410,13 @@ static void cc_start_transport_stream_op_batch(
|
|
1420
1410
|
GRPC_CALL_COMBINER_STOP(calld->call_combiner,
|
1421
1411
|
"batch does not include send_initial_metadata");
|
1422
1412
|
}
|
1423
|
-
done:
|
1424
|
-
GPR_TIMER_END("cc_start_transport_stream_op_batch", 0);
|
1425
1413
|
}
|
1426
1414
|
|
1427
1415
|
/* Constructor for call_data */
|
1428
1416
|
static grpc_error* cc_init_call_elem(grpc_call_element* elem,
|
1429
1417
|
const grpc_call_element_args* args) {
|
1430
|
-
call_data* calld = (
|
1431
|
-
channel_data* chand = (
|
1418
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1419
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1432
1420
|
// Initialize data members.
|
1433
1421
|
calld->path = grpc_slice_ref_internal(args->path);
|
1434
1422
|
calld->call_start_time = args->start_time;
|
@@ -1447,8 +1435,8 @@ static grpc_error* cc_init_call_elem(grpc_call_element* elem,
|
|
1447
1435
|
static void cc_destroy_call_elem(grpc_call_element* elem,
|
1448
1436
|
const grpc_call_final_info* final_info,
|
1449
1437
|
grpc_closure* then_schedule_closure) {
|
1450
|
-
call_data* calld = (
|
1451
|
-
channel_data* chand = (
|
1438
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1439
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1452
1440
|
if (chand->deadline_checking_enabled) {
|
1453
1441
|
grpc_deadline_state_destroy(elem);
|
1454
1442
|
}
|
@@ -1466,7 +1454,7 @@ static void cc_destroy_call_elem(grpc_call_element* elem,
|
|
1466
1454
|
}
|
1467
1455
|
GPR_ASSERT(calld->waiting_for_pick_batches_count == 0);
|
1468
1456
|
if (calld->pick.connected_subchannel != nullptr) {
|
1469
|
-
|
1457
|
+
calld->pick.connected_subchannel.reset();
|
1470
1458
|
}
|
1471
1459
|
for (size_t i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
|
1472
1460
|
if (calld->pick.subchannel_call_context[i].value != nullptr) {
|
@@ -1479,7 +1467,7 @@ static void cc_destroy_call_elem(grpc_call_element* elem,
|
|
1479
1467
|
|
1480
1468
|
static void cc_set_pollset_or_pollset_set(grpc_call_element* elem,
|
1481
1469
|
grpc_polling_entity* pollent) {
|
1482
|
-
call_data* calld = (
|
1470
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
1483
1471
|
calld->pollent = pollent;
|
1484
1472
|
}
|
1485
1473
|
|
@@ -1502,9 +1490,9 @@ const grpc_channel_filter grpc_client_channel_filter = {
|
|
1502
1490
|
};
|
1503
1491
|
|
1504
1492
|
static void try_to_connect_locked(void* arg, grpc_error* error_ignored) {
|
1505
|
-
channel_data* chand = (
|
1493
|
+
channel_data* chand = static_cast<channel_data*>(arg);
|
1506
1494
|
if (chand->lb_policy != nullptr) {
|
1507
|
-
|
1495
|
+
chand->lb_policy->ExitIdleLocked();
|
1508
1496
|
} else {
|
1509
1497
|
chand->exit_idle_when_lb_policy_arrives = true;
|
1510
1498
|
if (!chand->started_resolving && chand->resolver != nullptr) {
|
@@ -1516,7 +1504,7 @@ static void try_to_connect_locked(void* arg, grpc_error* error_ignored) {
|
|
1516
1504
|
|
1517
1505
|
grpc_connectivity_state grpc_client_channel_check_connectivity_state(
|
1518
1506
|
grpc_channel_element* elem, int try_to_connect) {
|
1519
|
-
channel_data* chand = (
|
1507
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1520
1508
|
grpc_connectivity_state out =
|
1521
1509
|
grpc_connectivity_state_check(&chand->state_tracker);
|
1522
1510
|
if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
|
@@ -1587,7 +1575,7 @@ static void external_connectivity_watcher_list_remove(
|
|
1587
1575
|
|
1588
1576
|
int grpc_client_channel_num_external_connectivity_watchers(
|
1589
1577
|
grpc_channel_element* elem) {
|
1590
|
-
channel_data* chand = (
|
1578
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1591
1579
|
int count = 0;
|
1592
1580
|
|
1593
1581
|
gpr_mu_lock(&chand->external_connectivity_watcher_list_mu);
|
@@ -1603,7 +1591,8 @@ int grpc_client_channel_num_external_connectivity_watchers(
|
|
1603
1591
|
}
|
1604
1592
|
|
1605
1593
|
static void on_external_watch_complete_locked(void* arg, grpc_error* error) {
|
1606
|
-
external_connectivity_watcher* w =
|
1594
|
+
external_connectivity_watcher* w =
|
1595
|
+
static_cast<external_connectivity_watcher*>(arg);
|
1607
1596
|
grpc_closure* follow_up = w->on_complete;
|
1608
1597
|
grpc_polling_entity_del_from_pollset_set(&w->pollent,
|
1609
1598
|
w->chand->interested_parties);
|
@@ -1616,7 +1605,8 @@ static void on_external_watch_complete_locked(void* arg, grpc_error* error) {
|
|
1616
1605
|
|
1617
1606
|
static void watch_connectivity_state_locked(void* arg,
|
1618
1607
|
grpc_error* error_ignored) {
|
1619
|
-
external_connectivity_watcher* w =
|
1608
|
+
external_connectivity_watcher* w =
|
1609
|
+
static_cast<external_connectivity_watcher*>(arg);
|
1620
1610
|
external_connectivity_watcher* found = nullptr;
|
1621
1611
|
if (w->state != nullptr) {
|
1622
1612
|
external_connectivity_watcher_list_append(w->chand, w);
|
@@ -1645,9 +1635,9 @@ void grpc_client_channel_watch_connectivity_state(
|
|
1645
1635
|
grpc_channel_element* elem, grpc_polling_entity pollent,
|
1646
1636
|
grpc_connectivity_state* state, grpc_closure* closure,
|
1647
1637
|
grpc_closure* watcher_timer_init) {
|
1648
|
-
channel_data* chand = (
|
1638
|
+
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
1649
1639
|
external_connectivity_watcher* w =
|
1650
|
-
(
|
1640
|
+
static_cast<external_connectivity_watcher*>(gpr_zalloc(sizeof(*w)));
|
1651
1641
|
w->chand = chand;
|
1652
1642
|
w->pollent = pollent;
|
1653
1643
|
w->on_complete = closure;
|