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
@@ -23,8 +23,8 @@
|
|
23
23
|
|
24
24
|
#include <grpc/support/alloc.h>
|
25
25
|
#include <grpc/support/log.h>
|
26
|
-
#include <grpc/support/useful.h>
|
27
26
|
|
27
|
+
#include "src/core/lib/gpr/useful.h"
|
28
28
|
#include "src/core/lib/slice/slice_internal.h"
|
29
29
|
|
30
30
|
/* grow a buffer; requires GRPC_SLICE_BUFFER_INLINE_ELEMENTS > 1 */
|
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
static void maybe_embiggen(grpc_slice_buffer* sb) {
|
34
34
|
/* How far away from sb->base_slices is sb->slices pointer */
|
35
|
-
size_t slice_offset =
|
35
|
+
size_t slice_offset = static_cast<size_t>(sb->slices - sb->base_slices);
|
36
36
|
size_t slice_count = sb->count + slice_offset;
|
37
37
|
|
38
38
|
if (slice_count == sb->capacity) {
|
@@ -45,12 +45,12 @@ static void maybe_embiggen(grpc_slice_buffer* sb) {
|
|
45
45
|
sb->capacity = GROW(sb->capacity);
|
46
46
|
GPR_ASSERT(sb->capacity > slice_count);
|
47
47
|
if (sb->base_slices == sb->inlined) {
|
48
|
-
sb->base_slices =
|
49
|
-
|
48
|
+
sb->base_slices = static_cast<grpc_slice*>(
|
49
|
+
gpr_malloc(sb->capacity * sizeof(grpc_slice)));
|
50
50
|
memcpy(sb->base_slices, sb->inlined, slice_count * sizeof(grpc_slice));
|
51
51
|
} else {
|
52
|
-
sb->base_slices =
|
53
|
-
sb->base_slices, sb->capacity * sizeof(grpc_slice));
|
52
|
+
sb->base_slices = static_cast<grpc_slice*>(
|
53
|
+
gpr_realloc(sb->base_slices, sb->capacity * sizeof(grpc_slice)));
|
54
54
|
}
|
55
55
|
|
56
56
|
sb->slices = sb->base_slices + slice_offset;
|
@@ -89,7 +89,8 @@ uint8_t* grpc_slice_buffer_tiny_add(grpc_slice_buffer* sb, size_t n) {
|
|
89
89
|
if ((back->data.inlined.length + n) > sizeof(back->data.inlined.bytes))
|
90
90
|
goto add_new;
|
91
91
|
out = back->data.inlined.bytes + back->data.inlined.length;
|
92
|
-
back->data.inlined.length =
|
92
|
+
back->data.inlined.length =
|
93
|
+
static_cast<uint8_t>(back->data.inlined.length + n);
|
93
94
|
return out;
|
94
95
|
|
95
96
|
add_new:
|
@@ -97,7 +98,7 @@ add_new:
|
|
97
98
|
back = &sb->slices[sb->count];
|
98
99
|
sb->count++;
|
99
100
|
back->refcount = nullptr;
|
100
|
-
back->data.inlined.length = (
|
101
|
+
back->data.inlined.length = static_cast<uint8_t>(n);
|
101
102
|
return back->data.inlined.bytes;
|
102
103
|
}
|
103
104
|
|
@@ -125,8 +126,8 @@ void grpc_slice_buffer_add(grpc_slice_buffer* sb, grpc_slice s) {
|
|
125
126
|
GRPC_SLICE_INLINED_SIZE) {
|
126
127
|
memcpy(back->data.inlined.bytes + back->data.inlined.length,
|
127
128
|
s.data.inlined.bytes, s.data.inlined.length);
|
128
|
-
back->data.inlined.length =
|
129
|
-
|
129
|
+
back->data.inlined.length = static_cast<uint8_t>(
|
130
|
+
back->data.inlined.length + s.data.inlined.length);
|
130
131
|
} else {
|
131
132
|
size_t cp1 = GRPC_SLICE_INLINED_SIZE - back->data.inlined.length;
|
132
133
|
memcpy(back->data.inlined.bytes + back->data.inlined.length,
|
@@ -136,7 +137,8 @@ void grpc_slice_buffer_add(grpc_slice_buffer* sb, grpc_slice s) {
|
|
136
137
|
back = &sb->slices[n];
|
137
138
|
sb->count = n + 1;
|
138
139
|
back->refcount = nullptr;
|
139
|
-
back->data.inlined.length =
|
140
|
+
back->data.inlined.length =
|
141
|
+
static_cast<uint8_t>(s.data.inlined.length - cp1);
|
140
142
|
memcpy(back->data.inlined.bytes, s.data.inlined.bytes + cp1,
|
141
143
|
s.data.inlined.length - cp1);
|
142
144
|
}
|
@@ -177,8 +179,8 @@ void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer* sb) {
|
|
177
179
|
}
|
178
180
|
|
179
181
|
void grpc_slice_buffer_swap(grpc_slice_buffer* a, grpc_slice_buffer* b) {
|
180
|
-
size_t a_offset =
|
181
|
-
size_t b_offset =
|
182
|
+
size_t a_offset = static_cast<size_t>(a->slices - a->base_slices);
|
183
|
+
size_t b_offset = static_cast<size_t>(b->slices - b->base_slices);
|
182
184
|
|
183
185
|
size_t a_count = a->count + a_offset;
|
184
186
|
size_t b_count = b->count + b_offset;
|
@@ -287,7 +289,7 @@ void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer* src, size_t n,
|
|
287
289
|
|
288
290
|
void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer* src, size_t n,
|
289
291
|
void* dst) {
|
290
|
-
char* dstp = (
|
292
|
+
char* dstp = static_cast<char*>(dst);
|
291
293
|
GPR_ASSERT(src->length >= n);
|
292
294
|
|
293
295
|
while (n > 0) {
|
@@ -60,14 +60,15 @@ grpc_slice_hash_table* grpc_slice_hash_table_create(
|
|
60
60
|
size_t num_entries, grpc_slice_hash_table_entry* entries,
|
61
61
|
void (*destroy_value)(void* value), int (*value_cmp)(void* a, void* b)) {
|
62
62
|
grpc_slice_hash_table* table =
|
63
|
-
(
|
63
|
+
static_cast<grpc_slice_hash_table*>(gpr_zalloc(sizeof(*table)));
|
64
64
|
gpr_ref_init(&table->refs, 1);
|
65
65
|
table->destroy_value = destroy_value;
|
66
66
|
table->value_cmp = value_cmp;
|
67
67
|
// Keep load factor low to improve performance of lookups.
|
68
68
|
table->size = num_entries * 2;
|
69
69
|
const size_t entry_size = sizeof(grpc_slice_hash_table_entry) * table->size;
|
70
|
-
table->entries =
|
70
|
+
table->entries =
|
71
|
+
static_cast<grpc_slice_hash_table_entry*>(gpr_zalloc(entry_size));
|
71
72
|
for (size_t i = 0; i < num_entries; ++i) {
|
72
73
|
grpc_slice_hash_table_entry* entry = &entries[i];
|
73
74
|
grpc_slice_hash_table_add(table, entry->key, entry->value);
|
@@ -70,7 +70,7 @@ static uint32_t max_static_metadata_hash_probe;
|
|
70
70
|
static uint32_t static_metadata_hash_values[GRPC_STATIC_MDSTR_COUNT];
|
71
71
|
|
72
72
|
static void interned_slice_ref(void* p) {
|
73
|
-
interned_slice_refcount* s = (
|
73
|
+
interned_slice_refcount* s = static_cast<interned_slice_refcount*>(p);
|
74
74
|
GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&s->refcnt, 1) > 0);
|
75
75
|
}
|
76
76
|
|
@@ -91,22 +91,25 @@ static void interned_slice_destroy(interned_slice_refcount* s) {
|
|
91
91
|
}
|
92
92
|
|
93
93
|
static void interned_slice_unref(void* p) {
|
94
|
-
interned_slice_refcount* s = (
|
94
|
+
interned_slice_refcount* s = static_cast<interned_slice_refcount*>(p);
|
95
95
|
if (1 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
|
96
96
|
interned_slice_destroy(s);
|
97
97
|
}
|
98
98
|
}
|
99
99
|
|
100
100
|
static void interned_slice_sub_ref(void* p) {
|
101
|
-
interned_slice_ref(((
|
101
|
+
interned_slice_ref((static_cast<char*>(p)) -
|
102
|
+
offsetof(interned_slice_refcount, sub));
|
102
103
|
}
|
103
104
|
|
104
105
|
static void interned_slice_sub_unref(void* p) {
|
105
|
-
interned_slice_unref(((
|
106
|
+
interned_slice_unref((static_cast<char*>(p)) -
|
107
|
+
offsetof(interned_slice_refcount, sub));
|
106
108
|
}
|
107
109
|
|
108
110
|
static uint32_t interned_slice_hash(grpc_slice slice) {
|
109
|
-
interned_slice_refcount* s =
|
111
|
+
interned_slice_refcount* s =
|
112
|
+
reinterpret_cast<interned_slice_refcount*>(slice.refcount);
|
110
113
|
return s->hash;
|
111
114
|
}
|
112
115
|
|
@@ -122,15 +125,15 @@ static const grpc_slice_refcount_vtable interned_slice_sub_vtable = {
|
|
122
125
|
grpc_slice_default_eq_impl, grpc_slice_default_hash_impl};
|
123
126
|
|
124
127
|
static void grow_shard(slice_shard* shard) {
|
128
|
+
GPR_TIMER_SCOPE("grow_strtab", 0);
|
129
|
+
|
125
130
|
size_t capacity = shard->capacity * 2;
|
126
131
|
size_t i;
|
127
132
|
interned_slice_refcount** strtab;
|
128
133
|
interned_slice_refcount *s, *next;
|
129
134
|
|
130
|
-
|
131
|
-
|
132
|
-
strtab = (interned_slice_refcount**)gpr_zalloc(
|
133
|
-
sizeof(interned_slice_refcount*) * capacity);
|
135
|
+
strtab = static_cast<interned_slice_refcount**>(
|
136
|
+
gpr_zalloc(sizeof(interned_slice_refcount*) * capacity));
|
134
137
|
|
135
138
|
for (i = 0; i < shard->capacity; i++) {
|
136
139
|
for (s = shard->strs[i]; s; s = next) {
|
@@ -140,18 +143,15 @@ static void grow_shard(slice_shard* shard) {
|
|
140
143
|
strtab[idx] = s;
|
141
144
|
}
|
142
145
|
}
|
143
|
-
|
144
146
|
gpr_free(shard->strs);
|
145
147
|
shard->strs = strtab;
|
146
148
|
shard->capacity = capacity;
|
147
|
-
|
148
|
-
GPR_TIMER_END("grow_strtab", 0);
|
149
149
|
}
|
150
150
|
|
151
151
|
static grpc_slice materialize(interned_slice_refcount* s) {
|
152
152
|
grpc_slice slice;
|
153
153
|
slice.refcount = &s->base;
|
154
|
-
slice.data.refcounted.bytes =
|
154
|
+
slice.data.refcounted.bytes = reinterpret_cast<uint8_t*>(s + 1);
|
155
155
|
slice.data.refcounted.length = s->length;
|
156
156
|
return slice;
|
157
157
|
}
|
@@ -200,9 +200,8 @@ bool grpc_slice_is_interned(grpc_slice slice) {
|
|
200
200
|
}
|
201
201
|
|
202
202
|
grpc_slice grpc_slice_intern(grpc_slice slice) {
|
203
|
-
|
203
|
+
GPR_TIMER_SCOPE("grpc_slice_intern", 0);
|
204
204
|
if (GRPC_IS_STATIC_METADATA_STRING(slice)) {
|
205
|
-
GPR_TIMER_END("grpc_slice_intern", 0);
|
206
205
|
return slice;
|
207
206
|
}
|
208
207
|
|
@@ -212,7 +211,6 @@ grpc_slice grpc_slice_intern(grpc_slice slice) {
|
|
212
211
|
static_metadata_hash[(hash + i) % GPR_ARRAY_SIZE(static_metadata_hash)];
|
213
212
|
if (ent.hash == hash && ent.idx < GRPC_STATIC_MDSTR_COUNT &&
|
214
213
|
grpc_slice_eq(grpc_static_slice_table[ent.idx], slice)) {
|
215
|
-
GPR_TIMER_END("grpc_slice_intern", 0);
|
216
214
|
return grpc_static_slice_table[ent.idx];
|
217
215
|
}
|
218
216
|
}
|
@@ -235,7 +233,6 @@ grpc_slice grpc_slice_intern(grpc_slice slice) {
|
|
235
233
|
/* and treat this as if we were never here... sshhh */
|
236
234
|
} else {
|
237
235
|
gpr_mu_unlock(&shard->mu);
|
238
|
-
GPR_TIMER_END("grpc_slice_intern", 0);
|
239
236
|
return materialize(s);
|
240
237
|
}
|
241
238
|
}
|
@@ -243,8 +240,8 @@ grpc_slice grpc_slice_intern(grpc_slice slice) {
|
|
243
240
|
|
244
241
|
/* not found: create a new string */
|
245
242
|
/* string data goes after the internal_string header */
|
246
|
-
s =
|
247
|
-
|
243
|
+
s = static_cast<interned_slice_refcount*>(
|
244
|
+
gpr_malloc(sizeof(*s) + GRPC_SLICE_LENGTH(slice)));
|
248
245
|
gpr_atm_rel_store(&s->refcnt, 1);
|
249
246
|
s->length = GRPC_SLICE_LENGTH(slice);
|
250
247
|
s->hash = hash;
|
@@ -264,7 +261,6 @@ grpc_slice grpc_slice_intern(grpc_slice slice) {
|
|
264
261
|
|
265
262
|
gpr_mu_unlock(&shard->mu);
|
266
263
|
|
267
|
-
GPR_TIMER_END("grpc_slice_intern", 0);
|
268
264
|
return materialize(s);
|
269
265
|
}
|
270
266
|
|
@@ -275,15 +271,15 @@ void grpc_test_only_set_slice_hash_seed(uint32_t seed) {
|
|
275
271
|
|
276
272
|
void grpc_slice_intern_init(void) {
|
277
273
|
if (!g_forced_hash_seed) {
|
278
|
-
g_hash_seed = (
|
274
|
+
g_hash_seed = static_cast<uint32_t>(gpr_now(GPR_CLOCK_REALTIME).tv_nsec);
|
279
275
|
}
|
280
276
|
for (size_t i = 0; i < SHARD_COUNT; i++) {
|
281
277
|
slice_shard* shard = &g_shards[i];
|
282
278
|
gpr_mu_init(&shard->mu);
|
283
279
|
shard->count = 0;
|
284
280
|
shard->capacity = INITIAL_SHARD_CAPACITY;
|
285
|
-
shard->strs =
|
286
|
-
|
281
|
+
shard->strs = static_cast<interned_slice_refcount**>(
|
282
|
+
gpr_zalloc(sizeof(*shard->strs) * shard->capacity));
|
287
283
|
}
|
288
284
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(static_metadata_hash); i++) {
|
289
285
|
static_metadata_hash[i].hash = 0;
|
@@ -298,9 +294,9 @@ void grpc_slice_intern_init(void) {
|
|
298
294
|
GPR_ARRAY_SIZE(static_metadata_hash);
|
299
295
|
if (static_metadata_hash[slot].idx == GRPC_STATIC_MDSTR_COUNT) {
|
300
296
|
static_metadata_hash[slot].hash = static_metadata_hash_values[i];
|
301
|
-
static_metadata_hash[slot].idx = (
|
297
|
+
static_metadata_hash[slot].idx = static_cast<uint32_t>(i);
|
302
298
|
if (j > max_static_metadata_hash_probe) {
|
303
|
-
max_static_metadata_hash_probe = (
|
299
|
+
max_static_metadata_hash_probe = static_cast<uint32_t>(j);
|
304
300
|
}
|
305
301
|
break;
|
306
302
|
}
|
@@ -26,8 +26,8 @@
|
|
26
26
|
#include "src/core/lib/slice/slice_internal.h"
|
27
27
|
|
28
28
|
char* grpc_dump_slice(grpc_slice s, uint32_t flags) {
|
29
|
-
return gpr_dump(
|
30
|
-
flags);
|
29
|
+
return gpr_dump(reinterpret_cast<const char*> GRPC_SLICE_START_PTR(s),
|
30
|
+
GRPC_SLICE_LENGTH(s), flags);
|
31
31
|
}
|
32
32
|
|
33
33
|
/** Finds the initial (\a begin) and final (\a end) offsets of the next
|
@@ -56,25 +56,61 @@ static int slice_find_separator_offset(const grpc_slice str, const char* sep,
|
|
56
56
|
return 0;
|
57
57
|
}
|
58
58
|
|
59
|
-
void
|
59
|
+
static void skip_leading_trailing_spaces(const uint8_t* str_buffer,
|
60
|
+
size_t* begin, size_t* end) {
|
61
|
+
while (*begin < *end && str_buffer[*begin] == ' ') {
|
62
|
+
(*begin)++;
|
63
|
+
}
|
64
|
+
while (*begin < *end && str_buffer[*end - 1] == ' ') {
|
65
|
+
(*end)--;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
static void grpc_slice_split_inner(grpc_slice str, const char* sep,
|
70
|
+
grpc_slice_buffer* dst, bool no_space) {
|
60
71
|
const size_t sep_len = strlen(sep);
|
61
72
|
size_t begin, end;
|
73
|
+
const uint8_t* str_buffer = GRPC_SLICE_START_PTR(str);
|
74
|
+
size_t sep_pos;
|
62
75
|
|
63
76
|
GPR_ASSERT(sep_len > 0);
|
64
77
|
|
65
78
|
if (slice_find_separator_offset(str, sep, 0, &begin, &end) != 0) {
|
66
79
|
do {
|
80
|
+
sep_pos = end;
|
81
|
+
if (no_space) {
|
82
|
+
skip_leading_trailing_spaces(str_buffer, &begin, &end);
|
83
|
+
}
|
67
84
|
grpc_slice_buffer_add_indexed(dst, grpc_slice_sub(str, begin, end));
|
68
|
-
} while (slice_find_separator_offset(str, sep,
|
85
|
+
} while (slice_find_separator_offset(str, sep, sep_pos + sep_len, &begin,
|
69
86
|
&end) != 0);
|
70
|
-
|
71
|
-
|
87
|
+
begin = sep_pos + sep_len;
|
88
|
+
end = GRPC_SLICE_LENGTH(str);
|
89
|
+
if (no_space) {
|
90
|
+
skip_leading_trailing_spaces(str_buffer, &begin, &end);
|
91
|
+
}
|
92
|
+
grpc_slice_buffer_add_indexed(dst, grpc_slice_sub(str, begin, end));
|
72
93
|
} else { /* no sep found, add whole input */
|
73
|
-
|
94
|
+
begin = 0;
|
95
|
+
end = GRPC_SLICE_LENGTH(str);
|
96
|
+
if (no_space) {
|
97
|
+
skip_leading_trailing_spaces(str_buffer, &begin, &end);
|
98
|
+
}
|
99
|
+
grpc_slice_buffer_add_indexed(dst, grpc_slice_sub(str, begin, end));
|
74
100
|
}
|
75
101
|
}
|
76
102
|
|
103
|
+
void grpc_slice_split(grpc_slice str, const char* sep, grpc_slice_buffer* dst) {
|
104
|
+
grpc_slice_split_inner(str, sep, dst, false);
|
105
|
+
}
|
106
|
+
|
107
|
+
void grpc_slice_split_without_space(grpc_slice str, const char* sep,
|
108
|
+
grpc_slice_buffer* dst) {
|
109
|
+
grpc_slice_split_inner(str, sep, dst, true);
|
110
|
+
}
|
111
|
+
|
77
112
|
bool grpc_parse_slice_to_uint32(grpc_slice str, uint32_t* result) {
|
78
|
-
return gpr_parse_bytes_to_uint32(
|
79
|
-
|
113
|
+
return gpr_parse_bytes_to_uint32(
|
114
|
+
reinterpret_cast<const char*> GRPC_SLICE_START_PTR(str),
|
115
|
+
GRPC_SLICE_LENGTH(str), result) != 0;
|
80
116
|
}
|
@@ -35,6 +35,12 @@ char* grpc_dump_slice(grpc_slice slice, uint32_t flags);
|
|
35
35
|
* should be a properly initialized instance. */
|
36
36
|
void grpc_slice_split(grpc_slice str, const char* sep, grpc_slice_buffer* dst);
|
37
37
|
|
38
|
+
/** Split \a str by the separator \a sep and remove the leading and trailing
|
39
|
+
* spaces of each resulting token. Results are stored in \a dst, which should be
|
40
|
+
* a properly initialized instance. */
|
41
|
+
void grpc_slice_split_without_space(grpc_slice str, const char* sep,
|
42
|
+
grpc_slice_buffer* dst);
|
43
|
+
|
38
44
|
bool grpc_parse_slice_to_uint32(grpc_slice str, uint32_t* result);
|
39
45
|
|
40
46
|
#endif /* GRPC_CORE_LIB_SLICE_SLICE_STRING_HELPERS_H */
|
@@ -33,7 +33,7 @@ grpc_byte_buffer* grpc_raw_compressed_byte_buffer_create(
|
|
33
33
|
grpc_compression_algorithm compression) {
|
34
34
|
size_t i;
|
35
35
|
grpc_byte_buffer* bb =
|
36
|
-
(
|
36
|
+
static_cast<grpc_byte_buffer*>(gpr_malloc(sizeof(grpc_byte_buffer)));
|
37
37
|
bb->type = GRPC_BB_RAW;
|
38
38
|
bb->data.raw.compression = compression;
|
39
39
|
grpc_slice_buffer_init(&bb->data.raw.slice_buffer);
|
@@ -47,7 +47,7 @@ grpc_byte_buffer* grpc_raw_compressed_byte_buffer_create(
|
|
47
47
|
grpc_byte_buffer* grpc_raw_byte_buffer_from_reader(
|
48
48
|
grpc_byte_buffer_reader* reader) {
|
49
49
|
grpc_byte_buffer* bb =
|
50
|
-
(
|
50
|
+
static_cast<grpc_byte_buffer*>(gpr_malloc(sizeof(grpc_byte_buffer)));
|
51
51
|
grpc_slice slice;
|
52
52
|
bb->type = GRPC_BB_RAW;
|
53
53
|
bb->data.raw.compression = GRPC_COMPRESS_NONE;
|
@@ -49,9 +49,12 @@ int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
|
|
49
49
|
case GRPC_BB_RAW:
|
50
50
|
grpc_slice_buffer_init(&decompressed_slices_buffer);
|
51
51
|
if (is_compressed(reader->buffer_in)) {
|
52
|
-
if (grpc_msg_decompress(
|
53
|
-
|
54
|
-
|
52
|
+
if (grpc_msg_decompress(
|
53
|
+
|
54
|
+
grpc_compression_algorithm_to_message_compression_algorithm(
|
55
|
+
reader->buffer_in->data.raw.compression),
|
56
|
+
&reader->buffer_in->data.raw.slice_buffer,
|
57
|
+
&decompressed_slices_buffer) == 0) {
|
55
58
|
gpr_log(GPR_ERROR,
|
56
59
|
"Unexpected error decompressing data for algorithm with enum "
|
57
60
|
"value '%d'.",
|
@@ -28,13 +28,13 @@
|
|
28
28
|
#include <grpc/support/alloc.h>
|
29
29
|
#include <grpc/support/log.h>
|
30
30
|
#include <grpc/support/string_util.h>
|
31
|
-
#include <grpc/support/useful.h>
|
32
31
|
|
33
32
|
#include "src/core/lib/channel/channel_stack.h"
|
34
33
|
#include "src/core/lib/compression/algorithm_metadata.h"
|
35
34
|
#include "src/core/lib/debug/stats.h"
|
36
35
|
#include "src/core/lib/gpr/arena.h"
|
37
36
|
#include "src/core/lib/gpr/string.h"
|
37
|
+
#include "src/core/lib/gpr/useful.h"
|
38
38
|
#include "src/core/lib/iomgr/timer.h"
|
39
39
|
#include "src/core/lib/profiling/timers.h"
|
40
40
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -97,7 +97,7 @@ static received_status unpack_received_status(gpr_atm atm) {
|
|
97
97
|
if ((atm & 1) == 0) {
|
98
98
|
return {false, GRPC_ERROR_NONE};
|
99
99
|
} else {
|
100
|
-
return {true, (grpc_error*)(atm & ~(
|
100
|
+
return {true, (grpc_error*)(atm & ~static_cast<gpr_atm>(1))};
|
101
101
|
}
|
102
102
|
}
|
103
103
|
|
@@ -201,7 +201,7 @@ struct grpc_call {
|
|
201
201
|
grpc_call_final_info final_info;
|
202
202
|
|
203
203
|
/* Compression algorithm for *incoming* data */
|
204
|
-
|
204
|
+
grpc_message_compression_algorithm incoming_message_compression_algorithm;
|
205
205
|
/* Stream compression algorithm for *incoming* data */
|
206
206
|
grpc_stream_compression_algorithm incoming_stream_compression_algorithm;
|
207
207
|
/* Supported encodings (compression algorithms), a bitset */
|
@@ -304,7 +304,7 @@ void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
|
|
304
304
|
static parent_call* get_or_create_parent_call(grpc_call* call) {
|
305
305
|
parent_call* p = (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
|
306
306
|
if (p == nullptr) {
|
307
|
-
p = (
|
307
|
+
p = static_cast<parent_call*>(gpr_arena_alloc(call->arena, sizeof(*p)));
|
308
308
|
gpr_mu_init(&p->child_list_mu);
|
309
309
|
if (!gpr_atm_rel_cas(&call->parent_call_atm, (gpr_atm) nullptr,
|
310
310
|
(gpr_atm)p)) {
|
@@ -321,17 +321,17 @@ static parent_call* get_parent_call(grpc_call* call) {
|
|
321
321
|
|
322
322
|
grpc_error* grpc_call_create(const grpc_call_create_args* args,
|
323
323
|
grpc_call** out_call) {
|
324
|
+
GPR_TIMER_SCOPE("grpc_call_create", 0);
|
324
325
|
size_t i, j;
|
325
326
|
grpc_error* error = GRPC_ERROR_NONE;
|
326
327
|
grpc_channel_stack* channel_stack =
|
327
328
|
grpc_channel_get_channel_stack(args->channel);
|
328
329
|
grpc_call* call;
|
329
|
-
GPR_TIMER_BEGIN("grpc_call_create", 0);
|
330
330
|
size_t initial_size = grpc_channel_get_call_size_estimate(args->channel);
|
331
331
|
GRPC_STATS_INC_CALL_INITIAL_SIZE(initial_size);
|
332
332
|
gpr_arena* arena = gpr_arena_create(initial_size);
|
333
|
-
call = (
|
334
|
-
arena, sizeof(grpc_call) + channel_stack->call_stack_size);
|
333
|
+
call = static_cast<grpc_call*>(gpr_arena_alloc(
|
334
|
+
arena, sizeof(grpc_call) + channel_stack->call_stack_size));
|
335
335
|
gpr_ref_init(&call->ext_ref, 1);
|
336
336
|
call->arena = arena;
|
337
337
|
grpc_call_combiner_init(&call->call_combiner);
|
@@ -340,7 +340,7 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
|
|
340
340
|
call->cq = args->cq;
|
341
341
|
call->start_time = gpr_now(GPR_CLOCK_MONOTONIC);
|
342
342
|
/* Always support no compression */
|
343
|
-
GPR_BITSET(&call->encodings_accepted_by_peer,
|
343
|
+
GPR_BITSET(&call->encodings_accepted_by_peer, GRPC_MESSAGE_COMPRESS_NONE);
|
344
344
|
call->is_client = args->server_transport_data == nullptr;
|
345
345
|
if (call->is_client) {
|
346
346
|
GRPC_STATS_INC_CLIENT_CALLS_CREATED();
|
@@ -360,7 +360,8 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
|
|
360
360
|
GRPC_MDVALUE(args->add_initial_metadata[i]));
|
361
361
|
}
|
362
362
|
}
|
363
|
-
call->send_extra_metadata_count =
|
363
|
+
call->send_extra_metadata_count =
|
364
|
+
static_cast<int>(args->add_initial_metadata_count);
|
364
365
|
} else {
|
365
366
|
GPR_ASSERT(args->add_initial_metadata_count == 0);
|
366
367
|
call->send_extra_metadata_count = 0;
|
@@ -376,7 +377,7 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
|
|
376
377
|
|
377
378
|
if (args->parent != nullptr) {
|
378
379
|
child_call* cc = call->child =
|
379
|
-
(
|
380
|
+
static_cast<child_call*>(gpr_arena_alloc(arena, sizeof(child_call)));
|
380
381
|
call->child->parent = args->parent;
|
381
382
|
|
382
383
|
GRPC_CALL_INTERNAL_REF(args->parent, "child");
|
@@ -449,9 +450,9 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
|
|
449
450
|
cancel_with_error(call, STATUS_FROM_API_OVERRIDE, GRPC_ERROR_CANCELLED);
|
450
451
|
}
|
451
452
|
if (args->cq != nullptr) {
|
452
|
-
GPR_ASSERT(
|
453
|
-
|
454
|
-
|
453
|
+
GPR_ASSERT(args->pollset_set_alternative == nullptr &&
|
454
|
+
"Only one of 'cq' and 'pollset_set_alternative' should be "
|
455
|
+
"non-nullptr.");
|
455
456
|
GRPC_CQ_INTERNAL_REF(args->cq, "bind");
|
456
457
|
call->pollent =
|
457
458
|
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq));
|
@@ -467,7 +468,6 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
|
|
467
468
|
|
468
469
|
grpc_slice_unref_internal(path);
|
469
470
|
|
470
|
-
GPR_TIMER_END("grpc_call_create", 0);
|
471
471
|
return error;
|
472
472
|
}
|
473
473
|
|
@@ -501,7 +501,7 @@ void grpc_call_internal_unref(grpc_call* c REF_ARG) {
|
|
501
501
|
}
|
502
502
|
|
503
503
|
static void release_call(void* call, grpc_error* error) {
|
504
|
-
grpc_call* c = (
|
504
|
+
grpc_call* c = static_cast<grpc_call*>(call);
|
505
505
|
grpc_channel* channel = c->channel;
|
506
506
|
grpc_call_combiner_destroy(&c->call_combiner);
|
507
507
|
gpr_free((char*)c->peer_string);
|
@@ -511,10 +511,10 @@ static void release_call(void* call, grpc_error* error) {
|
|
511
511
|
|
512
512
|
static void set_status_value_directly(grpc_status_code status, void* dest);
|
513
513
|
static void destroy_call(void* call, grpc_error* error) {
|
514
|
+
GPR_TIMER_SCOPE("destroy_call", 0);
|
514
515
|
size_t i;
|
515
516
|
int ii;
|
516
|
-
grpc_call* c = (
|
517
|
-
GPR_TIMER_BEGIN("destroy_call", 0);
|
517
|
+
grpc_call* c = static_cast<grpc_call*>(call);
|
518
518
|
for (i = 0; i < 2; i++) {
|
519
519
|
grpc_metadata_batch_destroy(
|
520
520
|
&c->metadata_batch[1 /* is_receiving */][i /* is_initial */]);
|
@@ -551,7 +551,6 @@ static void destroy_call(void* call, grpc_error* error) {
|
|
551
551
|
grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info,
|
552
552
|
GRPC_CLOSURE_INIT(&c->release_call, release_call, c,
|
553
553
|
grpc_schedule_on_exec_ctx));
|
554
|
-
GPR_TIMER_END("destroy_call", 0);
|
555
554
|
}
|
556
555
|
|
557
556
|
void grpc_call_ref(grpc_call* c) { gpr_ref(&c->ext_ref); }
|
@@ -559,10 +558,11 @@ void grpc_call_ref(grpc_call* c) { gpr_ref(&c->ext_ref); }
|
|
559
558
|
void grpc_call_unref(grpc_call* c) {
|
560
559
|
if (!gpr_unref(&c->ext_ref)) return;
|
561
560
|
|
561
|
+
GPR_TIMER_SCOPE("grpc_call_unref", 0);
|
562
|
+
|
562
563
|
child_call* cc = c->child;
|
563
564
|
grpc_core::ExecCtx exec_ctx;
|
564
565
|
|
565
|
-
GPR_TIMER_BEGIN("grpc_call_unref", 0);
|
566
566
|
GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c));
|
567
567
|
|
568
568
|
if (cc) {
|
@@ -594,8 +594,6 @@ void grpc_call_unref(grpc_call* c) {
|
|
594
594
|
grpc_call_combiner_set_notify_on_cancel(&c->call_combiner, nullptr);
|
595
595
|
}
|
596
596
|
GRPC_CALL_INTERNAL_UNREF(c, "destroy");
|
597
|
-
|
598
|
-
GPR_TIMER_END("grpc_call_unref", 0);
|
599
597
|
}
|
600
598
|
|
601
599
|
grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
|
@@ -610,13 +608,13 @@ grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
|
|
610
608
|
// This is called via the call combiner to start sending a batch down
|
611
609
|
// the filter stack.
|
612
610
|
static void execute_batch_in_call_combiner(void* arg, grpc_error* ignored) {
|
613
|
-
|
614
|
-
|
615
|
-
|
611
|
+
GPR_TIMER_SCOPE("execute_batch", 0);
|
612
|
+
grpc_transport_stream_op_batch* batch =
|
613
|
+
static_cast<grpc_transport_stream_op_batch*>(arg);
|
614
|
+
grpc_call* call = static_cast<grpc_call*>(batch->handler_private.extra_arg);
|
616
615
|
grpc_call_element* elem = CALL_ELEM_FROM_CALL(call, 0);
|
617
616
|
GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
|
618
617
|
elem->filter->start_transport_stream_op_batch(elem, batch);
|
619
|
-
GPR_TIMER_END("execute_batch", 0);
|
620
618
|
}
|
621
619
|
|
622
620
|
// start_batch_closure points to a caller-allocated closure to be used
|
@@ -671,7 +669,7 @@ typedef struct {
|
|
671
669
|
// The on_complete callback used when sending a cancel_stream batch down
|
672
670
|
// the filter stack. Yields the call combiner when the batch is done.
|
673
671
|
static void done_termination(void* arg, grpc_error* error) {
|
674
|
-
cancel_state* state = (
|
672
|
+
cancel_state* state = static_cast<cancel_state*>(arg);
|
675
673
|
GRPC_CALL_COMBINER_STOP(&state->call->call_combiner,
|
676
674
|
"on_complete for cancel_stream op");
|
677
675
|
GRPC_CALL_INTERNAL_UNREF(state->call, "termination");
|
@@ -687,7 +685,7 @@ static void cancel_with_error(grpc_call* c, status_source source,
|
|
687
685
|
// down the filter stack in a timely manner.
|
688
686
|
grpc_call_combiner_cancel(&c->call_combiner, GRPC_ERROR_REF(error));
|
689
687
|
set_status_from_error(c, source, GRPC_ERROR_REF(error));
|
690
|
-
cancel_state* state = (
|
688
|
+
cancel_state* state = static_cast<cancel_state*>(gpr_malloc(sizeof(*state)));
|
691
689
|
state->call = c;
|
692
690
|
GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state,
|
693
691
|
grpc_schedule_on_exec_ctx);
|
@@ -801,10 +799,10 @@ static void set_status_from_error(grpc_call* call, status_source source,
|
|
801
799
|
* COMPRESSION
|
802
800
|
*/
|
803
801
|
|
804
|
-
static void
|
805
|
-
grpc_call* call,
|
806
|
-
GPR_ASSERT(algo <
|
807
|
-
call->
|
802
|
+
static void set_incoming_message_compression_algorithm(
|
803
|
+
grpc_call* call, grpc_message_compression_algorithm algo) {
|
804
|
+
GPR_ASSERT(algo < GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT);
|
805
|
+
call->incoming_message_compression_algorithm = algo;
|
808
806
|
}
|
809
807
|
|
810
808
|
static void set_incoming_stream_compression_algorithm(
|
@@ -815,8 +813,10 @@ static void set_incoming_stream_compression_algorithm(
|
|
815
813
|
|
816
814
|
grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
|
817
815
|
grpc_call* call) {
|
818
|
-
grpc_compression_algorithm algorithm;
|
819
|
-
|
816
|
+
grpc_compression_algorithm algorithm = GRPC_COMPRESS_NONE;
|
817
|
+
grpc_compression_algorithm_from_message_stream_compression_algorithm(
|
818
|
+
&algorithm, call->incoming_message_compression_algorithm,
|
819
|
+
call->incoming_stream_compression_algorithm);
|
820
820
|
return algorithm;
|
821
821
|
}
|
822
822
|
|
@@ -826,13 +826,6 @@ static grpc_compression_algorithm compression_algorithm_for_level_locked(
|
|
826
826
|
call->encodings_accepted_by_peer);
|
827
827
|
}
|
828
828
|
|
829
|
-
static grpc_stream_compression_algorithm
|
830
|
-
stream_compression_algorithm_for_level_locked(
|
831
|
-
grpc_call* call, grpc_stream_compression_level level) {
|
832
|
-
return grpc_stream_compression_algorithm_for_level(
|
833
|
-
level, call->stream_encodings_accepted_by_peer);
|
834
|
-
}
|
835
|
-
|
836
829
|
uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
|
837
830
|
uint32_t flags;
|
838
831
|
flags = call->test_only_last_message_flags;
|
@@ -841,9 +834,11 @@ uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
|
|
841
834
|
|
842
835
|
static void destroy_encodings_accepted_by_peer(void* p) { return; }
|
843
836
|
|
844
|
-
static void set_encodings_accepted_by_peer(grpc_call* call, grpc_mdelem mdel
|
837
|
+
static void set_encodings_accepted_by_peer(grpc_call* call, grpc_mdelem mdel,
|
838
|
+
uint32_t* encodings_accepted_by_peer,
|
839
|
+
bool stream_encoding) {
|
845
840
|
size_t i;
|
846
|
-
|
841
|
+
uint32_t algorithm;
|
847
842
|
grpc_slice_buffer accept_encoding_parts;
|
848
843
|
grpc_slice accept_encoding_slice;
|
849
844
|
void* accepted_user_data;
|
@@ -851,69 +846,33 @@ static void set_encodings_accepted_by_peer(grpc_call* call, grpc_mdelem mdel) {
|
|
851
846
|
accepted_user_data =
|
852
847
|
grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer);
|
853
848
|
if (accepted_user_data != nullptr) {
|
854
|
-
|
855
|
-
|
849
|
+
*encodings_accepted_by_peer =
|
850
|
+
static_cast<uint32_t>(((uintptr_t)accepted_user_data) - 1);
|
856
851
|
return;
|
857
852
|
}
|
858
853
|
|
854
|
+
*encodings_accepted_by_peer = 0;
|
855
|
+
|
859
856
|
accept_encoding_slice = GRPC_MDVALUE(mdel);
|
860
857
|
grpc_slice_buffer_init(&accept_encoding_parts);
|
861
|
-
|
858
|
+
grpc_slice_split_without_space(accept_encoding_slice, ",",
|
859
|
+
&accept_encoding_parts);
|
862
860
|
|
863
|
-
|
864
|
-
* zeroes the whole grpc_call */
|
865
|
-
/* Always support no compression */
|
866
|
-
GPR_BITSET(&call->encodings_accepted_by_peer, GRPC_COMPRESS_NONE);
|
861
|
+
GPR_BITSET(encodings_accepted_by_peer, GRPC_COMPRESS_NONE);
|
867
862
|
for (i = 0; i < accept_encoding_parts.count; i++) {
|
863
|
+
int r;
|
868
864
|
grpc_slice accept_encoding_entry_slice = accept_encoding_parts.slices[i];
|
869
|
-
if (
|
870
|
-
|
871
|
-
|
865
|
+
if (!stream_encoding) {
|
866
|
+
r = grpc_message_compression_algorithm_parse(
|
867
|
+
accept_encoding_entry_slice,
|
868
|
+
reinterpret_cast<grpc_message_compression_algorithm*>(&algorithm));
|
872
869
|
} else {
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
"Invalid entry in accept encoding metadata: '%s'. Ignoring.",
|
877
|
-
accept_encoding_entry_str);
|
878
|
-
gpr_free(accept_encoding_entry_str);
|
870
|
+
r = grpc_stream_compression_algorithm_parse(
|
871
|
+
accept_encoding_entry_slice,
|
872
|
+
reinterpret_cast<grpc_stream_compression_algorithm*>(&algorithm));
|
879
873
|
}
|
880
|
-
|
881
|
-
|
882
|
-
grpc_slice_buffer_destroy_internal(&accept_encoding_parts);
|
883
|
-
|
884
|
-
grpc_mdelem_set_user_data(
|
885
|
-
mdel, destroy_encodings_accepted_by_peer,
|
886
|
-
(void*)(((uintptr_t)call->encodings_accepted_by_peer) + 1));
|
887
|
-
}
|
888
|
-
|
889
|
-
static void set_stream_encodings_accepted_by_peer(grpc_call* call,
|
890
|
-
grpc_mdelem mdel) {
|
891
|
-
size_t i;
|
892
|
-
grpc_stream_compression_algorithm algorithm;
|
893
|
-
grpc_slice_buffer accept_encoding_parts;
|
894
|
-
grpc_slice accept_encoding_slice;
|
895
|
-
void* accepted_user_data;
|
896
|
-
|
897
|
-
accepted_user_data =
|
898
|
-
grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer);
|
899
|
-
if (accepted_user_data != nullptr) {
|
900
|
-
call->stream_encodings_accepted_by_peer =
|
901
|
-
(uint32_t)(((uintptr_t)accepted_user_data) - 1);
|
902
|
-
return;
|
903
|
-
}
|
904
|
-
|
905
|
-
accept_encoding_slice = GRPC_MDVALUE(mdel);
|
906
|
-
grpc_slice_buffer_init(&accept_encoding_parts);
|
907
|
-
grpc_slice_split(accept_encoding_slice, ",", &accept_encoding_parts);
|
908
|
-
|
909
|
-
/* Always support no compression */
|
910
|
-
GPR_BITSET(&call->stream_encodings_accepted_by_peer,
|
911
|
-
GRPC_STREAM_COMPRESS_NONE);
|
912
|
-
for (i = 0; i < accept_encoding_parts.count; i++) {
|
913
|
-
grpc_slice accept_encoding_entry_slice = accept_encoding_parts.slices[i];
|
914
|
-
if (grpc_stream_compression_algorithm_parse(accept_encoding_entry_slice,
|
915
|
-
&algorithm)) {
|
916
|
-
GPR_BITSET(&call->stream_encodings_accepted_by_peer, algorithm);
|
874
|
+
if (r) {
|
875
|
+
GPR_BITSET(encodings_accepted_by_peer, algorithm);
|
917
876
|
} else {
|
918
877
|
char* accept_encoding_entry_str =
|
919
878
|
grpc_slice_to_c_string(accept_encoding_entry_slice);
|
@@ -928,7 +887,7 @@ static void set_stream_encodings_accepted_by_peer(grpc_call* call,
|
|
928
887
|
|
929
888
|
grpc_mdelem_set_user_data(
|
930
889
|
mdel, destroy_encodings_accepted_by_peer,
|
931
|
-
(void*)(((
|
890
|
+
(void*)((static_cast<uintptr_t>(*encodings_accepted_by_peer)) + 1));
|
932
891
|
}
|
933
892
|
|
934
893
|
uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
|
@@ -937,13 +896,6 @@ uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
|
|
937
896
|
return encodings_accepted_by_peer;
|
938
897
|
}
|
939
898
|
|
940
|
-
uint32_t grpc_call_test_only_get_stream_encodings_accepted_by_peer(
|
941
|
-
grpc_call* call) {
|
942
|
-
uint32_t stream_encodings_accepted_by_peer;
|
943
|
-
stream_encodings_accepted_by_peer = call->stream_encodings_accepted_by_peer;
|
944
|
-
return stream_encodings_accepted_by_peer;
|
945
|
-
}
|
946
|
-
|
947
899
|
grpc_stream_compression_algorithm
|
948
900
|
grpc_call_test_only_get_incoming_stream_encodings(grpc_call* call) {
|
949
901
|
return call->incoming_stream_compression_algorithm;
|
@@ -986,7 +938,7 @@ static int prepare_application_metadata(grpc_call* call, int count,
|
|
986
938
|
grpc_validate_header_nonbin_value_is_legal(md->value))) {
|
987
939
|
break;
|
988
940
|
}
|
989
|
-
l->md = grpc_mdelem_from_grpc_metadata((
|
941
|
+
l->md = grpc_mdelem_from_grpc_metadata(const_cast<grpc_metadata*>(md));
|
990
942
|
}
|
991
943
|
if (i != total_count) {
|
992
944
|
for (int j = 0; j < i; j++) {
|
@@ -1036,28 +988,30 @@ static uint32_t decode_status(grpc_mdelem md) {
|
|
1036
988
|
if (grpc_mdelem_eq(md, GRPC_MDELEM_GRPC_STATUS_2)) return 2;
|
1037
989
|
user_data = grpc_mdelem_get_user_data(md, destroy_status);
|
1038
990
|
if (user_data != nullptr) {
|
1039
|
-
status = (
|
991
|
+
status = (static_cast<uint32_t>((intptr_t)user_data)) - STATUS_OFFSET;
|
1040
992
|
} else {
|
1041
993
|
if (!grpc_parse_slice_to_uint32(GRPC_MDVALUE(md), &status)) {
|
1042
994
|
status = GRPC_STATUS_UNKNOWN; /* could not parse status code */
|
1043
995
|
}
|
1044
|
-
grpc_mdelem_set_user_data(
|
1045
|
-
|
996
|
+
grpc_mdelem_set_user_data(
|
997
|
+
md, destroy_status,
|
998
|
+
(void*)static_cast<intptr_t>(status + STATUS_OFFSET));
|
1046
999
|
}
|
1047
1000
|
return status;
|
1048
1001
|
}
|
1049
1002
|
|
1050
|
-
static
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1003
|
+
static grpc_message_compression_algorithm decode_message_compression(
|
1004
|
+
grpc_mdelem md) {
|
1005
|
+
grpc_message_compression_algorithm algorithm =
|
1006
|
+
grpc_message_compression_algorithm_from_slice(GRPC_MDVALUE(md));
|
1007
|
+
if (algorithm == GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT) {
|
1054
1008
|
char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
1055
1009
|
gpr_log(GPR_ERROR,
|
1056
|
-
"Invalid incoming compression algorithm: '%s'.
|
1057
|
-
"incoming data as uncompressed.",
|
1010
|
+
"Invalid incoming message compression algorithm: '%s'. "
|
1011
|
+
"Interpreting incoming data as uncompressed.",
|
1058
1012
|
md_c_str);
|
1059
1013
|
gpr_free(md_c_str);
|
1060
|
-
return
|
1014
|
+
return GRPC_MESSAGE_COMPRESS_NONE;
|
1061
1015
|
}
|
1062
1016
|
return algorithm;
|
1063
1017
|
}
|
@@ -1082,15 +1036,15 @@ static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
|
|
1082
1036
|
int is_trailing) {
|
1083
1037
|
if (b->list.count == 0) return;
|
1084
1038
|
if (is_trailing && call->buffered_metadata[1] == nullptr) return;
|
1085
|
-
|
1039
|
+
GPR_TIMER_SCOPE("publish_app_metadata", 0);
|
1086
1040
|
grpc_metadata_array* dest;
|
1087
1041
|
grpc_metadata* mdusr;
|
1088
1042
|
dest = call->buffered_metadata[is_trailing];
|
1089
1043
|
if (dest->count + b->list.count > dest->capacity) {
|
1090
1044
|
dest->capacity =
|
1091
1045
|
GPR_MAX(dest->capacity + b->list.count, dest->capacity * 3 / 2);
|
1092
|
-
dest->metadata =
|
1093
|
-
dest->metadata, sizeof(grpc_metadata) * dest->capacity);
|
1046
|
+
dest->metadata = static_cast<grpc_metadata*>(
|
1047
|
+
gpr_realloc(dest->metadata, sizeof(grpc_metadata) * dest->capacity));
|
1094
1048
|
}
|
1095
1049
|
for (grpc_linked_mdelem* l = b->list.head; l != nullptr; l = l->next) {
|
1096
1050
|
mdusr = &dest->metadata[dest->count++];
|
@@ -1098,47 +1052,44 @@ static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
|
|
1098
1052
|
mdusr->key = GRPC_MDKEY(l->md);
|
1099
1053
|
mdusr->value = GRPC_MDVALUE(l->md);
|
1100
1054
|
}
|
1101
|
-
GPR_TIMER_END("publish_app_metadata", 0);
|
1102
1055
|
}
|
1103
1056
|
|
1104
1057
|
static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
|
1105
1058
|
if (b->idx.named.content_encoding != nullptr) {
|
1106
|
-
|
1107
|
-
gpr_log(GPR_ERROR,
|
1108
|
-
"Received both content-encoding and grpc-encoding header. "
|
1109
|
-
"Ignoring grpc-encoding.");
|
1110
|
-
grpc_metadata_batch_remove(b, b->idx.named.grpc_encoding);
|
1111
|
-
}
|
1112
|
-
GPR_TIMER_BEGIN("incoming_stream_compression_algorithm", 0);
|
1059
|
+
GPR_TIMER_SCOPE("incoming_stream_compression_algorithm", 0);
|
1113
1060
|
set_incoming_stream_compression_algorithm(
|
1114
1061
|
call, decode_stream_compression(b->idx.named.content_encoding->md));
|
1115
|
-
GPR_TIMER_END("incoming_stream_compression_algorithm", 0);
|
1116
1062
|
grpc_metadata_batch_remove(b, b->idx.named.content_encoding);
|
1117
|
-
}
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1063
|
+
}
|
1064
|
+
if (b->idx.named.grpc_encoding != nullptr) {
|
1065
|
+
GPR_TIMER_SCOPE("incoming_message_compression_algorithm", 0);
|
1066
|
+
set_incoming_message_compression_algorithm(
|
1067
|
+
call, decode_message_compression(b->idx.named.grpc_encoding->md));
|
1122
1068
|
grpc_metadata_batch_remove(b, b->idx.named.grpc_encoding);
|
1123
1069
|
}
|
1070
|
+
uint32_t message_encodings_accepted_by_peer = 1u;
|
1071
|
+
uint32_t stream_encodings_accepted_by_peer = 1u;
|
1124
1072
|
if (b->idx.named.grpc_accept_encoding != nullptr) {
|
1125
|
-
|
1126
|
-
set_encodings_accepted_by_peer(call, b->idx.named.grpc_accept_encoding->md
|
1073
|
+
GPR_TIMER_SCOPE("encodings_accepted_by_peer", 0);
|
1074
|
+
set_encodings_accepted_by_peer(call, b->idx.named.grpc_accept_encoding->md,
|
1075
|
+
&message_encodings_accepted_by_peer, false);
|
1127
1076
|
grpc_metadata_batch_remove(b, b->idx.named.grpc_accept_encoding);
|
1128
|
-
GPR_TIMER_END("encodings_accepted_by_peer", 0);
|
1129
1077
|
}
|
1130
1078
|
if (b->idx.named.accept_encoding != nullptr) {
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1079
|
+
GPR_TIMER_SCOPE("stream_encodings_accepted_by_peer", 0);
|
1080
|
+
set_encodings_accepted_by_peer(call, b->idx.named.accept_encoding->md,
|
1081
|
+
&stream_encodings_accepted_by_peer, true);
|
1134
1082
|
grpc_metadata_batch_remove(b, b->idx.named.accept_encoding);
|
1135
|
-
GPR_TIMER_END("stream_encodings_accepted_by_peer", 0);
|
1136
1083
|
}
|
1084
|
+
call->encodings_accepted_by_peer =
|
1085
|
+
grpc_compression_bitset_from_message_stream_compression_bitset(
|
1086
|
+
message_encodings_accepted_by_peer,
|
1087
|
+
stream_encodings_accepted_by_peer);
|
1137
1088
|
publish_app_metadata(call, b, false);
|
1138
1089
|
}
|
1139
1090
|
|
1140
1091
|
static void recv_trailing_filter(void* args, grpc_metadata_batch* b) {
|
1141
|
-
grpc_call* call = (
|
1092
|
+
grpc_call* call = static_cast<grpc_call*>(args);
|
1142
1093
|
if (b->idx.named.grpc_status != nullptr) {
|
1143
1094
|
uint32_t status_code = decode_status(b->idx.named.grpc_status->md);
|
1144
1095
|
grpc_error* error =
|
@@ -1147,7 +1098,7 @@ static void recv_trailing_filter(void* args, grpc_metadata_batch* b) {
|
|
1147
1098
|
: grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1148
1099
|
"Error received from peer"),
|
1149
1100
|
GRPC_ERROR_INT_GRPC_STATUS,
|
1150
|
-
(
|
1101
|
+
static_cast<intptr_t>(status_code));
|
1151
1102
|
if (b->idx.named.grpc_message != nullptr) {
|
1152
1103
|
error = grpc_error_set_str(
|
1153
1104
|
error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
@@ -1172,11 +1123,11 @@ grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
|
|
1172
1123
|
*/
|
1173
1124
|
|
1174
1125
|
static void set_status_value_directly(grpc_status_code status, void* dest) {
|
1175
|
-
*(
|
1126
|
+
*static_cast<grpc_status_code*>(dest) = status;
|
1176
1127
|
}
|
1177
1128
|
|
1178
1129
|
static void set_cancelled_value(grpc_status_code status, void* dest) {
|
1179
|
-
*(
|
1130
|
+
*static_cast<int*>(dest) = (status != GRPC_STATUS_OK);
|
1180
1131
|
}
|
1181
1132
|
|
1182
1133
|
static bool are_write_flags_valid(uint32_t flags) {
|
@@ -1222,8 +1173,8 @@ static batch_control* allocate_batch_control(grpc_call* call,
|
|
1222
1173
|
int slot = batch_slot_for_op(ops[0].op);
|
1223
1174
|
batch_control** pslot = &call->active_batches[slot];
|
1224
1175
|
if (*pslot == nullptr) {
|
1225
|
-
*pslot =
|
1226
|
-
|
1176
|
+
*pslot = static_cast<batch_control*>(
|
1177
|
+
gpr_arena_alloc(call->arena, sizeof(batch_control)));
|
1227
1178
|
}
|
1228
1179
|
batch_control* bctl = *pslot;
|
1229
1180
|
if (bctl->call != nullptr) {
|
@@ -1237,14 +1188,14 @@ static batch_control* allocate_batch_control(grpc_call* call,
|
|
1237
1188
|
|
1238
1189
|
static void finish_batch_completion(void* user_data,
|
1239
1190
|
grpc_cq_completion* storage) {
|
1240
|
-
batch_control* bctl = (
|
1191
|
+
batch_control* bctl = static_cast<batch_control*>(user_data);
|
1241
1192
|
grpc_call* call = bctl->call;
|
1242
1193
|
bctl->call = nullptr;
|
1243
1194
|
GRPC_CALL_INTERNAL_UNREF(call, "completion");
|
1244
1195
|
}
|
1245
1196
|
|
1246
1197
|
static grpc_error* consolidate_batch_errors(batch_control* bctl) {
|
1247
|
-
size_t n = (
|
1198
|
+
size_t n = static_cast<size_t>(gpr_atm_acq_load(&bctl->num_errors));
|
1248
1199
|
if (n == 0) {
|
1249
1200
|
return GRPC_ERROR_NONE;
|
1250
1201
|
} else if (n == 1) {
|
@@ -1271,6 +1222,7 @@ static void post_batch_completion(batch_control* bctl) {
|
|
1271
1222
|
|
1272
1223
|
if (bctl->op.send_initial_metadata) {
|
1273
1224
|
grpc_metadata_batch_destroy(
|
1225
|
+
|
1274
1226
|
&call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]);
|
1275
1227
|
}
|
1276
1228
|
if (bctl->op.send_message) {
|
@@ -1278,6 +1230,7 @@ static void post_batch_completion(batch_control* bctl) {
|
|
1278
1230
|
}
|
1279
1231
|
if (bctl->op.send_trailing_metadata) {
|
1280
1232
|
grpc_metadata_batch_destroy(
|
1233
|
+
|
1281
1234
|
&call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */]);
|
1282
1235
|
}
|
1283
1236
|
if (bctl->op.recv_trailing_metadata) {
|
@@ -1382,7 +1335,7 @@ static void continue_receiving_slices(batch_control* bctl) {
|
|
1382
1335
|
}
|
1383
1336
|
|
1384
1337
|
static void receiving_slice_ready(void* bctlp, grpc_error* error) {
|
1385
|
-
batch_control* bctl = (
|
1338
|
+
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1386
1339
|
grpc_call* call = bctl->call;
|
1387
1340
|
grpc_byte_stream* bs = call->receiving_stream;
|
1388
1341
|
bool release_error = false;
|
@@ -1426,9 +1379,15 @@ static void process_data_after_md(batch_control* bctl) {
|
|
1426
1379
|
} else {
|
1427
1380
|
call->test_only_last_message_flags = call->receiving_stream->flags;
|
1428
1381
|
if ((call->receiving_stream->flags & GRPC_WRITE_INTERNAL_COMPRESS) &&
|
1429
|
-
(call->
|
1430
|
-
|
1431
|
-
|
1382
|
+
(call->incoming_message_compression_algorithm >
|
1383
|
+
GRPC_MESSAGE_COMPRESS_NONE)) {
|
1384
|
+
grpc_compression_algorithm algo;
|
1385
|
+
GPR_ASSERT(
|
1386
|
+
grpc_compression_algorithm_from_message_stream_compression_algorithm(
|
1387
|
+
&algo, call->incoming_message_compression_algorithm,
|
1388
|
+
(grpc_stream_compression_algorithm)0));
|
1389
|
+
*call->receiving_buffer =
|
1390
|
+
grpc_raw_compressed_byte_buffer_create(nullptr, 0, algo);
|
1432
1391
|
} else {
|
1433
1392
|
*call->receiving_buffer = grpc_raw_byte_buffer_create(nullptr, 0);
|
1434
1393
|
}
|
@@ -1439,7 +1398,7 @@ static void process_data_after_md(batch_control* bctl) {
|
|
1439
1398
|
}
|
1440
1399
|
|
1441
1400
|
static void receiving_stream_ready(void* bctlp, grpc_error* error) {
|
1442
|
-
batch_control* bctl = (
|
1401
|
+
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1443
1402
|
grpc_call* call = bctl->call;
|
1444
1403
|
if (error != GRPC_ERROR_NONE) {
|
1445
1404
|
if (call->receiving_stream != nullptr) {
|
@@ -1463,95 +1422,73 @@ static void receiving_stream_ready(void* bctlp, grpc_error* error) {
|
|
1463
1422
|
// before processing the received message.
|
1464
1423
|
static void receiving_stream_ready_in_call_combiner(void* bctlp,
|
1465
1424
|
grpc_error* error) {
|
1466
|
-
batch_control* bctl = (
|
1425
|
+
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1467
1426
|
grpc_call* call = bctl->call;
|
1468
1427
|
GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready");
|
1469
1428
|
receiving_stream_ready(bctlp, error);
|
1470
1429
|
}
|
1471
1430
|
|
1472
1431
|
static void validate_filtered_metadata(batch_control* bctl) {
|
1432
|
+
grpc_compression_algorithm compression_algorithm;
|
1473
1433
|
grpc_call* call = bctl->call;
|
1474
|
-
/* validate compression algorithms */
|
1475
1434
|
if (call->incoming_stream_compression_algorithm !=
|
1476
|
-
|
1477
|
-
|
1478
|
-
|
1435
|
+
GRPC_STREAM_COMPRESS_NONE &&
|
1436
|
+
call->incoming_message_compression_algorithm !=
|
1437
|
+
GRPC_MESSAGE_COMPRESS_NONE) {
|
1479
1438
|
char* error_msg = nullptr;
|
1480
|
-
|
1481
|
-
|
1482
|
-
|
1483
|
-
|
1484
|
-
|
1485
|
-
|
1486
|
-
|
1487
|
-
|
1488
|
-
} else if (grpc_compression_options_is_stream_compression_algorithm_enabled(
|
1489
|
-
&compression_options, algo) == 0) {
|
1490
|
-
/* check if algorithm is supported by current channel config */
|
1491
|
-
const char* algo_name = nullptr;
|
1492
|
-
grpc_stream_compression_algorithm_name(algo, &algo_name);
|
1493
|
-
gpr_asprintf(&error_msg, "Stream compression algorithm '%s' is disabled.",
|
1494
|
-
algo_name);
|
1495
|
-
gpr_log(GPR_ERROR, "%s", error_msg);
|
1496
|
-
cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED,
|
1497
|
-
error_msg);
|
1498
|
-
}
|
1439
|
+
gpr_asprintf(&error_msg,
|
1440
|
+
"Incoming stream has both stream compression (%d) and message "
|
1441
|
+
"compression (%d).",
|
1442
|
+
call->incoming_stream_compression_algorithm,
|
1443
|
+
call->incoming_message_compression_algorithm);
|
1444
|
+
gpr_log(GPR_ERROR, "%s", error_msg);
|
1445
|
+
cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_INTERNAL,
|
1446
|
+
error_msg);
|
1499
1447
|
gpr_free(error_msg);
|
1500
|
-
|
1501
|
-
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
}
|
1515
|
-
}
|
1516
|
-
} else if (call->incoming_compression_algorithm != GRPC_COMPRESS_NONE) {
|
1517
|
-
const grpc_compression_algorithm algo =
|
1518
|
-
call->incoming_compression_algorithm;
|
1448
|
+
} else if (
|
1449
|
+
grpc_compression_algorithm_from_message_stream_compression_algorithm(
|
1450
|
+
&compression_algorithm, call->incoming_message_compression_algorithm,
|
1451
|
+
call->incoming_stream_compression_algorithm) == 0) {
|
1452
|
+
char* error_msg = nullptr;
|
1453
|
+
gpr_asprintf(&error_msg,
|
1454
|
+
"Error in incoming message compression (%d) or stream "
|
1455
|
+
"compression (%d).",
|
1456
|
+
call->incoming_stream_compression_algorithm,
|
1457
|
+
call->incoming_message_compression_algorithm);
|
1458
|
+
cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_INTERNAL,
|
1459
|
+
error_msg);
|
1460
|
+
gpr_free(error_msg);
|
1461
|
+
} else {
|
1519
1462
|
char* error_msg = nullptr;
|
1520
1463
|
const grpc_compression_options compression_options =
|
1521
1464
|
grpc_channel_compression_options(call->channel);
|
1522
|
-
|
1523
|
-
if (algo >= GRPC_COMPRESS_ALGORITHMS_COUNT) {
|
1465
|
+
if (compression_algorithm >= GRPC_COMPRESS_ALGORITHMS_COUNT) {
|
1524
1466
|
gpr_asprintf(&error_msg, "Invalid compression algorithm value '%d'.",
|
1525
|
-
|
1467
|
+
compression_algorithm);
|
1526
1468
|
gpr_log(GPR_ERROR, "%s", error_msg);
|
1527
1469
|
cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED,
|
1528
1470
|
error_msg);
|
1529
1471
|
} else if (grpc_compression_options_is_algorithm_enabled(
|
1530
|
-
&compression_options,
|
1472
|
+
&compression_options, compression_algorithm) == 0) {
|
1531
1473
|
/* check if algorithm is supported by current channel config */
|
1532
1474
|
const char* algo_name = nullptr;
|
1533
|
-
grpc_compression_algorithm_name(
|
1475
|
+
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1534
1476
|
gpr_asprintf(&error_msg, "Compression algorithm '%s' is disabled.",
|
1535
1477
|
algo_name);
|
1536
1478
|
gpr_log(GPR_ERROR, "%s", error_msg);
|
1537
1479
|
cancel_with_status(call, STATUS_FROM_SURFACE, GRPC_STATUS_UNIMPLEMENTED,
|
1538
1480
|
error_msg);
|
1539
|
-
} else {
|
1540
|
-
call->incoming_compression_algorithm = algo;
|
1541
1481
|
}
|
1542
1482
|
gpr_free(error_msg);
|
1543
1483
|
|
1544
1484
|
GPR_ASSERT(call->encodings_accepted_by_peer != 0);
|
1545
|
-
if (!GPR_BITGET(call->encodings_accepted_by_peer,
|
1546
|
-
call->incoming_compression_algorithm)) {
|
1485
|
+
if (!GPR_BITGET(call->encodings_accepted_by_peer, compression_algorithm)) {
|
1547
1486
|
if (grpc_compression_trace.enabled()) {
|
1548
1487
|
const char* algo_name = nullptr;
|
1549
|
-
grpc_compression_algorithm_name(
|
1550
|
-
&algo_name);
|
1488
|
+
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1551
1489
|
gpr_log(GPR_ERROR,
|
1552
|
-
"Compression algorithm (
|
1553
|
-
"
|
1554
|
-
"'0x%x')",
|
1490
|
+
"Compression algorithm ('%s') not present in the bitset of "
|
1491
|
+
"accepted encodings ('0x%x')",
|
1555
1492
|
algo_name, call->encodings_accepted_by_peer);
|
1556
1493
|
}
|
1557
1494
|
}
|
@@ -1561,7 +1498,7 @@ static void validate_filtered_metadata(batch_control* bctl) {
|
|
1561
1498
|
static void add_batch_error(batch_control* bctl, grpc_error* error,
|
1562
1499
|
bool has_cancelled) {
|
1563
1500
|
if (error == GRPC_ERROR_NONE) return;
|
1564
|
-
int idx = (
|
1501
|
+
int idx = static_cast<int>(gpr_atm_full_fetch_add(&bctl->num_errors, 1));
|
1565
1502
|
if (idx == 0 && !has_cancelled) {
|
1566
1503
|
cancel_with_error(bctl->call, STATUS_FROM_CORE, GRPC_ERROR_REF(error));
|
1567
1504
|
}
|
@@ -1569,7 +1506,7 @@ static void add_batch_error(batch_control* bctl, grpc_error* error,
|
|
1569
1506
|
}
|
1570
1507
|
|
1571
1508
|
static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
|
1572
|
-
batch_control* bctl = (
|
1509
|
+
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1573
1510
|
grpc_call* call = bctl->call;
|
1574
1511
|
|
1575
1512
|
GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_initial_metadata_ready");
|
@@ -1581,9 +1518,8 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
|
|
1581
1518
|
recv_initial_filter(call, md);
|
1582
1519
|
|
1583
1520
|
/* TODO(ctiller): this could be moved into recv_initial_filter now */
|
1584
|
-
|
1521
|
+
GPR_TIMER_SCOPE("validate_filtered_metadata", 0);
|
1585
1522
|
validate_filtered_metadata(bctl);
|
1586
|
-
GPR_TIMER_END("validate_filtered_metadata", 0);
|
1587
1523
|
|
1588
1524
|
if (md->deadline != GRPC_MILLIS_INF_FUTURE && !call->is_client) {
|
1589
1525
|
call->send_deadline = md->deadline;
|
@@ -1622,7 +1558,7 @@ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
|
|
1622
1558
|
}
|
1623
1559
|
|
1624
1560
|
static void finish_batch(void* bctlp, grpc_error* error) {
|
1625
|
-
batch_control* bctl = (
|
1561
|
+
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1626
1562
|
grpc_call* call = bctl->call;
|
1627
1563
|
GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete");
|
1628
1564
|
add_batch_error(bctl, GRPC_ERROR_REF(error), false);
|
@@ -1636,6 +1572,8 @@ static void free_no_op_completion(void* p, grpc_cq_completion* completion) {
|
|
1636
1572
|
static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
1637
1573
|
size_t nops, void* notify_tag,
|
1638
1574
|
int is_notify_tag_closure) {
|
1575
|
+
GPR_TIMER_SCOPE("grpc_call_start_batch", 0);
|
1576
|
+
|
1639
1577
|
size_t i;
|
1640
1578
|
const grpc_op* op;
|
1641
1579
|
batch_control* bctl;
|
@@ -1644,15 +1582,15 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1644
1582
|
grpc_transport_stream_op_batch* stream_op;
|
1645
1583
|
grpc_transport_stream_op_batch_payload* stream_op_payload;
|
1646
1584
|
|
1647
|
-
GPR_TIMER_BEGIN("grpc_call_start_batch", 0);
|
1648
1585
|
GRPC_CALL_LOG_BATCH(GPR_INFO, call, ops, nops, notify_tag);
|
1649
1586
|
|
1650
1587
|
if (nops == 0) {
|
1651
1588
|
if (!is_notify_tag_closure) {
|
1652
1589
|
GPR_ASSERT(grpc_cq_begin_op(call->cq, notify_tag));
|
1653
|
-
grpc_cq_end_op(
|
1654
|
-
|
1655
|
-
|
1590
|
+
grpc_cq_end_op(call->cq, notify_tag, GRPC_ERROR_NONE,
|
1591
|
+
free_no_op_completion, nullptr,
|
1592
|
+
static_cast<grpc_cq_completion*>(
|
1593
|
+
gpr_malloc(sizeof(grpc_cq_completion))));
|
1656
1594
|
} else {
|
1657
1595
|
GRPC_CLOSURE_SCHED((grpc_closure*)notify_tag, GRPC_ERROR_NONE);
|
1658
1596
|
}
|
@@ -1666,7 +1604,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1666
1604
|
}
|
1667
1605
|
bctl->completion_data.notify_tag.tag = notify_tag;
|
1668
1606
|
bctl->completion_data.notify_tag.is_closure =
|
1669
|
-
|
1607
|
+
static_cast<uint8_t>(is_notify_tag_closure != 0);
|
1670
1608
|
|
1671
1609
|
stream_op = &bctl->op;
|
1672
1610
|
stream_op_payload = &call->stream_op_payload;
|
@@ -1694,56 +1632,28 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1694
1632
|
size_t additional_metadata_count = 0;
|
1695
1633
|
grpc_compression_level effective_compression_level =
|
1696
1634
|
GRPC_COMPRESS_LEVEL_NONE;
|
1697
|
-
grpc_stream_compression_level effective_stream_compression_level =
|
1698
|
-
GRPC_STREAM_COMPRESS_LEVEL_NONE;
|
1699
1635
|
bool level_set = false;
|
1700
|
-
|
1701
|
-
if (op->data.send_initial_metadata.maybe_stream_compression_level
|
1702
|
-
.is_set) {
|
1703
|
-
effective_stream_compression_level =
|
1704
|
-
op->data.send_initial_metadata.maybe_stream_compression_level
|
1705
|
-
.level;
|
1706
|
-
level_set = true;
|
1707
|
-
stream_compression = true;
|
1708
|
-
} else if (op->data.send_initial_metadata.maybe_compression_level
|
1709
|
-
.is_set) {
|
1636
|
+
if (op->data.send_initial_metadata.maybe_compression_level.is_set) {
|
1710
1637
|
effective_compression_level =
|
1711
1638
|
op->data.send_initial_metadata.maybe_compression_level.level;
|
1712
1639
|
level_set = true;
|
1713
1640
|
} else {
|
1714
1641
|
const grpc_compression_options copts =
|
1715
1642
|
grpc_channel_compression_options(call->channel);
|
1716
|
-
if (copts.
|
1717
|
-
level_set = true;
|
1718
|
-
effective_stream_compression_level =
|
1719
|
-
copts.default_stream_compression_level.level;
|
1720
|
-
stream_compression = true;
|
1721
|
-
} else if (copts.default_level.is_set) {
|
1643
|
+
if (copts.default_level.is_set) {
|
1722
1644
|
level_set = true;
|
1723
1645
|
effective_compression_level = copts.default_level.level;
|
1724
1646
|
}
|
1725
1647
|
}
|
1726
1648
|
if (level_set && !call->is_client) {
|
1727
|
-
|
1728
|
-
|
1729
|
-
|
1730
|
-
|
1731
|
-
|
1732
|
-
|
1733
|
-
|
1734
|
-
|
1735
|
-
} else {
|
1736
|
-
const grpc_compression_algorithm calgo =
|
1737
|
-
compression_algorithm_for_level_locked(
|
1738
|
-
call, effective_compression_level);
|
1739
|
-
/* the following will be picked up by the compress filter and used
|
1740
|
-
* as the call's compression algorithm. */
|
1741
|
-
call->compression_md.key =
|
1742
|
-
GRPC_MDSTR_GRPC_INTERNAL_ENCODING_REQUEST;
|
1743
|
-
call->compression_md.value =
|
1744
|
-
grpc_compression_algorithm_slice(calgo);
|
1745
|
-
additional_metadata_count++;
|
1746
|
-
}
|
1649
|
+
const grpc_compression_algorithm calgo =
|
1650
|
+
compression_algorithm_for_level_locked(
|
1651
|
+
call, effective_compression_level);
|
1652
|
+
/* the following will be picked up by the compress filter and used
|
1653
|
+
* as the call's compression algorithm. */
|
1654
|
+
call->compression_md.key = GRPC_MDSTR_GRPC_INTERNAL_ENCODING_REQUEST;
|
1655
|
+
call->compression_md.value = grpc_compression_algorithm_slice(calgo);
|
1656
|
+
additional_metadata_count++;
|
1747
1657
|
}
|
1748
1658
|
|
1749
1659
|
if (op->data.send_initial_metadata.count + additional_metadata_count >
|
@@ -1754,9 +1664,10 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1754
1664
|
stream_op->send_initial_metadata = true;
|
1755
1665
|
call->sent_initial_metadata = true;
|
1756
1666
|
if (!prepare_application_metadata(
|
1757
|
-
call, (
|
1667
|
+
call, static_cast<int>(op->data.send_initial_metadata.count),
|
1758
1668
|
op->data.send_initial_metadata.metadata, 0, call->is_client,
|
1759
|
-
&call->compression_md,
|
1669
|
+
&call->compression_md,
|
1670
|
+
static_cast<int>(additional_metadata_count))) {
|
1760
1671
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1761
1672
|
goto done_with_error;
|
1762
1673
|
}
|
@@ -1873,7 +1784,8 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1873
1784
|
}
|
1874
1785
|
if (!prepare_application_metadata(
|
1875
1786
|
call,
|
1876
|
-
(
|
1787
|
+
static_cast<int>(
|
1788
|
+
op->data.send_status_from_server.trailing_metadata_count),
|
1877
1789
|
op->data.send_status_from_server.trailing_metadata, 1, 1,
|
1878
1790
|
nullptr, 0)) {
|
1879
1791
|
for (int n = 0; n < call->send_extra_metadata_count; n++) {
|
@@ -2009,7 +1921,6 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
2009
1921
|
execute_batch(call, stream_op, &bctl->start_batch);
|
2010
1922
|
|
2011
1923
|
done:
|
2012
|
-
GPR_TIMER_END("grpc_call_start_batch", 0);
|
2013
1924
|
return error;
|
2014
1925
|
|
2015
1926
|
done_with_error:
|