grpc 1.8.7 → 1.9.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 +549 -325
- data/include/grpc/impl/codegen/grpc_types.h +1 -2
- data/include/grpc/impl/codegen/port_platform.h +46 -5
- data/include/grpc/impl/codegen/slice.h +1 -2
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice_buffer.h +1 -2
- data/include/grpc/support/log.h +4 -2
- data/include/grpc/support/thd.h +4 -1
- data/include/grpc/support/tls.h +6 -0
- data/include/grpc/support/tls_gcc.h +5 -40
- data/include/grpc/support/tls_msvc.h +9 -0
- data/include/grpc/support/tls_pthread.h +9 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +32 -29
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +26 -32
- data/src/core/ext/filters/client_channel/client_channel.cc +325 -356
- data/src/core/ext/filters/client_channel/client_channel.h +4 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +9 -14
- data/src/core/ext/filters/client_channel/client_channel_factory.h +7 -20
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +7 -10
- data/src/core/ext/filters/client_channel/connector.cc +6 -7
- data/src/core/ext/filters/client_channel/connector.h +6 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +38 -50
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +9 -13
- data/src/core/ext/filters/client_channel/http_proxy.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy.cc +72 -94
- data/src/core/ext/filters/client_channel/lb_policy.h +83 -92
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +474 -591
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +2 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +9 -12
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +160 -182
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -221
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +24 -35
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -20
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -15
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -9
- data/src/core/ext/filters/client_channel/parse_address.cc +1 -1
- data/src/core/ext/filters/client_channel/parse_address.h +0 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +6 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.h +6 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +13 -17
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -12
- data/src/core/ext/filters/client_channel/resolver.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver.h +14 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +27 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -11
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +53 -66
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +25 -33
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -9
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver_factory.cc +2 -3
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -12
- data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
- data/src/core/ext/filters/client_channel/resolver_registry.h +3 -12
- data/src/core/ext/filters/client_channel/retry_throttle.h +0 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +289 -301
- data/src/core/ext/filters/client_channel/subchannel.h +57 -84
- data/src/core/ext/filters/client_channel/subchannel_index.cc +30 -33
- data/src/core/ext/filters/client_channel/subchannel_index.h +4 -16
- data/src/core/ext/filters/client_channel/uri_parser.cc +13 -17
- data/src/core/ext/filters/client_channel/uri_parser.h +1 -10
- data/src/core/ext/filters/deadline/deadline_filter.cc +49 -67
- data/src/core/ext/filters/deadline/deadline_filter.h +4 -14
- data/src/core/ext/filters/http/client/http_client_filter.cc +60 -77
- data/src/core/ext/filters/http/client/http_client_filter.h +0 -8
- data/src/core/ext/filters/http/http_filters_plugin.cc +4 -6
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +63 -79
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +57 -71
- data/src/core/ext/filters/http/server/http_server_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +19 -24
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +3 -3
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -8
- data/src/core/ext/filters/max_age/max_age_filter.cc +49 -62
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -8
- data/src/core/ext/filters/message_size/message_size_filter.cc +23 -29
- data/src/core/ext/filters/message_size/message_size_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -8
- data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +33 -40
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +15 -17
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +8 -8
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +23 -28
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +50 -57
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -10
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -10
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -9
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +516 -636
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/flow_control.h +196 -53
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +31 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +63 -81
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +230 -318
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -7
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -8
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +8 -11
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +4 -13
- data/src/core/ext/transport/chttp2/transport/internal.h +51 -75
- data/src/core/ext/transport/chttp2/transport/parsing.cc +83 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -8
- data/src/core/ext/transport/chttp2/transport/varint.h +0 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +61 -65
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +177 -188
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -8
- data/src/core/lib/backoff/backoff.cc +39 -44
- data/src/core/lib/backoff/backoff.h +61 -57
- data/src/core/lib/channel/channel_args.cc +8 -10
- data/src/core/lib/channel/channel_args.h +4 -13
- data/src/core/lib/channel/channel_stack.cc +19 -27
- data/src/core/lib/channel/channel_stack.h +27 -47
- data/src/core/lib/channel/channel_stack_builder.cc +11 -14
- data/src/core/lib/channel/channel_stack_builder.h +4 -15
- data/src/core/lib/channel/connected_channel.cc +23 -36
- data/src/core/lib/channel/connected_channel.h +1 -10
- data/src/core/lib/channel/handshaker.cc +31 -40
- data/src/core/lib/channel/handshaker.h +14 -25
- data/src/core/lib/channel/handshaker_factory.cc +6 -6
- data/src/core/lib/channel/handshaker_factory.h +5 -15
- data/src/core/lib/channel/handshaker_registry.cc +9 -13
- data/src/core/lib/channel/handshaker_registry.h +2 -11
- data/src/core/lib/compression/algorithm_metadata.h +0 -8
- data/src/core/lib/compression/message_compress.cc +19 -23
- data/src/core/lib/compression/message_compress.h +2 -12
- data/src/core/lib/compression/stream_compression.cc +1 -1
- data/src/core/lib/compression/stream_compression.h +0 -8
- data/src/core/lib/compression/stream_compression_gzip.cc +12 -11
- data/src/core/lib/compression/stream_compression_gzip.h +0 -8
- data/src/core/lib/compression/stream_compression_identity.h +0 -8
- data/src/core/lib/debug/stats.cc +4 -4
- data/src/core/lib/debug/stats.h +9 -19
- data/src/core/lib/debug/stats_data.cc +85 -116
- data/src/core/lib/debug/stats_data.h +236 -312
- data/src/core/lib/debug/trace.cc +1 -1
- data/src/core/lib/debug/trace.h +0 -12
- data/src/core/lib/{support → gpr++}/abstract.h +8 -3
- data/src/core/lib/{support → gpr++}/atomic.h +5 -5
- data/src/core/lib/{support → gpr++}/atomic_with_atm.h +3 -3
- data/src/core/lib/{support → gpr++}/atomic_with_std.h +3 -3
- data/src/core/lib/gpr++/debug_location.h +52 -0
- data/src/core/lib/gpr++/inlined_vector.h +112 -0
- data/src/core/lib/{support → gpr++}/manual_constructor.h +2 -2
- data/src/core/lib/{support → gpr++}/memory.h +3 -3
- data/src/core/lib/gpr++/orphanable.h +171 -0
- data/src/core/lib/gpr++/ref_counted.h +133 -0
- data/src/core/lib/gpr++/ref_counted_ptr.h +99 -0
- data/src/core/lib/{support → gpr}/alloc.cc +0 -0
- data/src/core/lib/{support → gpr}/arena.cc +1 -1
- data/src/core/lib/{support → gpr}/arena.h +3 -11
- data/src/core/lib/{support → gpr}/atm.cc +0 -0
- data/src/core/lib/{support → gpr}/avl.cc +0 -0
- data/src/core/lib/{support → gpr}/cmdline.cc +1 -1
- data/src/core/lib/{support → gpr}/cpu_iphone.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_linux.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/env.h +3 -11
- data/src/core/lib/{support → gpr}/env_linux.cc +2 -2
- data/src/core/lib/{support → gpr}/env_posix.cc +4 -4
- data/src/core/lib/{support → gpr}/env_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.h +3 -3
- data/src/core/lib/{support → gpr}/host_port.cc +1 -1
- data/src/core/lib/{support → gpr}/log.cc +3 -3
- data/src/core/lib/{support → gpr}/log_android.cc +3 -3
- data/src/core/lib/{support → gpr}/log_linux.cc +1 -1
- data/src/core/lib/{support → gpr}/log_posix.cc +5 -5
- data/src/core/lib/{support → gpr}/log_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/mpscq.cc +1 -1
- data/src/core/lib/{support → gpr}/mpscq.h +3 -10
- data/src/core/lib/{support → gpr}/murmur_hash.cc +1 -1
- data/src/core/lib/{support → gpr}/murmur_hash.h +3 -11
- data/src/core/lib/{support → gpr}/spinlock.h +3 -3
- data/src/core/lib/{support → gpr}/string.cc +1 -1
- data/src/core/lib/{support → gpr}/string.h +3 -10
- data/src/core/lib/{support → gpr}/string_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/string_util_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/string_windows.cc +1 -1
- data/src/core/lib/{support → gpr}/string_windows.h +3 -11
- data/src/core/lib/{support → gpr}/subprocess_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/subprocess_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/sync.cc +0 -0
- data/src/core/lib/{support → gpr}/sync_posix.cc +10 -1
- data/src/core/lib/{support → gpr}/sync_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/thd.cc +0 -0
- data/src/core/lib/{support → gpr}/thd_internal.h +3 -3
- data/src/core/lib/{support → gpr}/thd_posix.cc +18 -2
- data/src/core/lib/{support → gpr}/thd_windows.cc +2 -1
- data/src/core/lib/{support → gpr}/time.cc +0 -0
- data/src/core/lib/{support → gpr}/time_posix.cc +2 -4
- data/src/core/lib/{support → gpr}/time_precise.cc +1 -1
- data/src/core/lib/{support → gpr}/time_precise.h +3 -11
- data/src/core/lib/{support → gpr}/time_windows.cc +1 -3
- data/src/core/lib/{support → gpr}/tls_pthread.cc +0 -0
- data/src/core/lib/{support → gpr}/tmpfile.h +3 -11
- data/src/core/lib/{support → gpr}/tmpfile_msys.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_posix.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/wrap_memcpy.cc +0 -0
- data/src/core/lib/http/format_request.cc +1 -1
- data/src/core/lib/http/format_request.h +0 -8
- data/src/core/lib/http/httpcli.cc +55 -74
- data/src/core/lib/http/httpcli.h +13 -22
- data/src/core/lib/http/httpcli_security_connector.cc +27 -33
- data/src/core/lib/http/parser.h +0 -8
- data/src/core/lib/iomgr/block_annotate.h +10 -17
- data/src/core/lib/iomgr/call_combiner.cc +14 -17
- data/src/core/lib/iomgr/call_combiner.h +16 -34
- data/src/core/lib/iomgr/closure.h +24 -37
- data/src/core/lib/iomgr/combiner.cc +62 -66
- data/src/core/lib/iomgr/combiner.h +6 -16
- data/src/core/lib/iomgr/endpoint.cc +15 -21
- data/src/core/lib/iomgr/endpoint.h +16 -33
- data/src/core/lib/iomgr/endpoint_pair.h +0 -8
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +4 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +4 -6
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error.h +4 -9
- data/src/core/lib/iomgr/error_internal.h +0 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +110 -117
- data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollex_linux.cc +111 -141
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +83 -109
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -10
- data/src/core/lib/iomgr/ev_poll_posix.cc +103 -125
- data/src/core/lib/iomgr/ev_poll_posix.h +0 -8
- data/src/core/lib/iomgr/ev_posix.cc +35 -50
- data/src/core/lib/iomgr/ev_posix.h +27 -53
- data/src/core/lib/iomgr/exec_ctx.cc +46 -78
- data/src/core/lib/iomgr/exec_ctx.h +127 -60
- data/src/core/lib/iomgr/executor.cc +34 -38
- data/src/core/lib/iomgr/executor.h +3 -11
- data/src/core/lib/iomgr/fork_posix.cc +13 -12
- data/src/core/lib/iomgr/gethostname.h +0 -8
- data/src/core/lib/iomgr/gethostname_sysconf.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +14 -16
- data/src/core/lib/iomgr/iocp_windows.h +1 -10
- data/src/core/lib/iomgr/iomgr.cc +60 -59
- data/src/core/lib/iomgr/iomgr.h +3 -12
- data/src/core/lib/iomgr/iomgr_internal.h +0 -8
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -3
- data/src/core/lib/iomgr/iomgr_uv.h +0 -8
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +0 -8
- data/src/core/lib/iomgr/lockfree_event.cc +7 -8
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/polling_entity.cc +6 -10
- data/src/core/lib/iomgr/polling_entity.h +2 -11
- data/src/core/lib/iomgr/pollset.h +4 -13
- data/src/core/lib/iomgr/pollset_set.h +5 -18
- data/src/core/lib/iomgr/pollset_set_uv.cc +5 -10
- data/src/core/lib/iomgr/pollset_set_windows.cc +5 -10
- data/src/core/lib/iomgr/pollset_uv.cc +8 -9
- data/src/core/lib/iomgr/pollset_uv.h +0 -8
- data/src/core/lib/iomgr/pollset_windows.cc +14 -15
- data/src/core/lib/iomgr/pollset_windows.h +0 -8
- data/src/core/lib/iomgr/port.h +6 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -10
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -12
- data/src/core/lib/iomgr/resolve_address_uv.cc +7 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -9
- data/src/core/lib/iomgr/resource_quota.cc +77 -107
- data/src/core/lib/iomgr/resource_quota.h +8 -25
- data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.h +0 -8
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -9
- data/src/core/lib/iomgr/socket_utils.h +0 -8
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +0 -8
- data/src/core/lib/iomgr/socket_windows.cc +8 -11
- data/src/core/lib/iomgr/socket_windows.h +3 -14
- data/src/core/lib/iomgr/tcp_client.h +1 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +94 -78
- data/src/core/lib/iomgr/tcp_client_posix.h +36 -8
- data/src/core/lib/iomgr/tcp_client_uv.cc +16 -23
- data/src/core/lib/iomgr/tcp_client_windows.cc +22 -25
- data/src/core/lib/iomgr/tcp_posix.cc +131 -153
- data/src/core/lib/iomgr/tcp_posix.h +3 -12
- data/src/core/lib/iomgr/tcp_server.h +6 -17
- data/src/core/lib/iomgr/tcp_server_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_uv.cc +23 -34
- data/src/core/lib/iomgr/tcp_server_windows.cc +24 -34
- data/src/core/lib/iomgr/tcp_uv.cc +42 -56
- data/src/core/lib/iomgr/tcp_uv.h +0 -8
- data/src/core/lib/iomgr/tcp_windows.cc +43 -50
- data/src/core/lib/iomgr/tcp_windows.h +1 -9
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -8
- data/src/core/lib/iomgr/timer.h +6 -15
- data/src/core/lib/iomgr/timer_generic.cc +22 -27
- data/src/core/lib/iomgr/timer_heap.h +0 -8
- data/src/core/lib/iomgr/timer_manager.cc +17 -19
- data/src/core/lib/iomgr/timer_manager.h +0 -8
- data/src/core/lib/iomgr/timer_uv.cc +12 -14
- data/src/core/lib/iomgr/udp_server.cc +148 -54
- data/src/core/lib/iomgr/udp_server.h +16 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.h +12 -20
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -8
- data/src/core/lib/json/json.h +0 -8
- data/src/core/lib/json/json_reader.h +0 -8
- data/src/core/lib/json/json_writer.h +0 -8
- data/src/core/lib/profiling/basic_timers.cc +3 -2
- data/src/core/lib/profiling/timers.h +0 -8
- data/src/core/lib/security/context/security_context.cc +9 -10
- data/src/core/lib/security/context/security_context.h +0 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +23 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -8
- data/src/core/lib/security/credentials/credentials.cc +33 -42
- data/src/core/lib/security/credentials/credentials.h +24 -43
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +16 -22
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -8
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +28 -34
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -13
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +0 -8
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -20
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -10
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +56 -72
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -17
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +47 -55
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +23 -28
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -13
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -8
- data/src/core/lib/security/transport/auth_filters.h +0 -8
- data/src/core/lib/security/transport/client_auth_filter.cc +45 -54
- data/src/core/lib/security/transport/lb_targets_info.cc +2 -2
- data/src/core/lib/security/transport/lb_targets_info.h +0 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -68
- data/src/core/lib/security/transport/secure_endpoint.h +0 -8
- data/src/core/lib/security/transport/security_connector.cc +62 -86
- data/src/core/lib/security/transport/security_connector.h +22 -39
- data/src/core/lib/security/transport/security_handshaker.cc +83 -106
- data/src/core/lib/security/transport/security_handshaker.h +1 -10
- data/src/core/lib/security/transport/server_auth_filter.cc +31 -38
- data/src/core/lib/security/transport/tsi_error.h +0 -8
- data/src/core/lib/security/util/json_util.h +0 -8
- data/src/core/lib/slice/b64.cc +5 -6
- data/src/core/lib/slice/b64.h +3 -12
- data/src/core/lib/slice/percent_encoding.h +0 -8
- data/src/core/lib/slice/slice.cc +8 -9
- data/src/core/lib/slice/slice_buffer.cc +11 -16
- data/src/core/lib/slice/slice_hash_table.cc +5 -7
- data/src/core/lib/slice/slice_hash_table.h +2 -12
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +4 -15
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/slice/slice_string_helpers.h +1 -9
- data/src/core/lib/surface/alarm.cc +11 -14
- data/src/core/lib/surface/alarm_internal.h +0 -8
- data/src/core/lib/surface/byte_buffer.cc +2 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +7 -9
- data/src/core/lib/surface/call.cc +198 -241
- data/src/core/lib/surface/call.h +9 -23
- data/src/core/lib/surface/call_details.cc +3 -4
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_test_only.h +0 -8
- data/src/core/lib/surface/channel.cc +53 -64
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -12
- data/src/core/lib/surface/channel_ping.cc +7 -9
- data/src/core/lib/surface/channel_stack_type.h +0 -8
- data/src/core/lib/surface/completion_queue.cc +158 -176
- data/src/core/lib/surface/completion_queue.h +9 -20
- data/src/core/lib/surface/completion_queue_factory.h +0 -8
- data/src/core/lib/surface/event_string.cc +1 -1
- data/src/core/lib/surface/event_string.h +0 -8
- data/src/core/lib/surface/init.cc +27 -25
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +30 -33
- data/src/core/lib/surface/lame_client.h +0 -8
- data/src/core/lib/surface/server.cc +151 -203
- data/src/core/lib/surface/server.h +7 -16
- data/src/core/lib/surface/validate_metadata.h +0 -8
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +1 -1
- data/src/core/lib/transport/byte_stream.cc +24 -38
- data/src/core/lib/transport/byte_stream.h +10 -25
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/connectivity_state.h +4 -14
- data/src/core/lib/transport/error_utils.cc +6 -6
- data/src/core/lib/transport/error_utils.h +2 -11
- data/src/core/lib/transport/metadata.cc +21 -23
- data/src/core/lib/transport/metadata.h +8 -20
- data/src/core/lib/transport/metadata_batch.cc +34 -45
- data/src/core/lib/transport/metadata_batch.h +18 -32
- data/src/core/lib/transport/service_config.cc +11 -15
- data/src/core/lib/transport/service_config.h +3 -13
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/static_metadata.h +1 -7
- data/src/core/lib/transport/status_conversion.cc +2 -3
- data/src/core/lib/transport/status_conversion.h +1 -10
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -9
- data/src/core/lib/transport/transport.cc +36 -50
- data/src/core/lib/transport/transport.h +28 -30
- data/src/core/lib/transport/transport_impl.h +12 -23
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -34
- data/src/core/tsi/fake_transport_security.cc +7 -10
- data/src/core/tsi/fake_transport_security.h +0 -8
- data/src/core/tsi/gts_transport_security.cc +2 -2
- data/src/core/tsi/gts_transport_security.h +0 -8
- data/src/core/tsi/ssl_transport_security.cc +3 -0
- data/src/core/tsi/ssl_transport_security.h +0 -8
- data/src/core/tsi/ssl_types.h +0 -8
- data/src/core/tsi/transport_security.h +1 -9
- data/src/core/tsi/transport_security_adapter.h +0 -8
- data/src/core/tsi/transport_security_grpc.cc +11 -18
- data/src/core/tsi/transport_security_grpc.h +9 -21
- data/src/core/tsi/transport_security_interface.h +0 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -30
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -48
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_connection_spec.rb +2 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +2 -2
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/interceptor_registry_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +12 -12
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +3 -2
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +9 -9
- data/src/ruby/spec/support/helpers.rb +35 -1
- metadata +68 -66
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +0 -26
- data/include/grpc/support/histogram.h +0 -64
- data/src/core/lib/support/histogram.cc +0 -227
@@ -22,10 +22,6 @@
|
|
22
22
|
#include <stddef.h>
|
23
23
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
24
24
|
|
25
|
-
#ifdef __cplusplus
|
26
|
-
extern "C" {
|
27
|
-
#endif
|
28
|
-
|
29
25
|
typedef struct {
|
30
26
|
char* scheme;
|
31
27
|
char* authority;
|
@@ -41,8 +37,7 @@ typedef struct {
|
|
41
37
|
} grpc_uri;
|
42
38
|
|
43
39
|
/** parse a uri, return NULL on failure */
|
44
|
-
grpc_uri* grpc_uri_parse(
|
45
|
-
bool suppress_errors);
|
40
|
+
grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors);
|
46
41
|
|
47
42
|
/** return the part of a query string after the '=' in "?key=xxx&...", or NULL
|
48
43
|
* if key is not present */
|
@@ -51,8 +46,4 @@ const char* grpc_uri_get_query_arg(const grpc_uri* uri, const char* key);
|
|
51
46
|
/** destroy a uri */
|
52
47
|
void grpc_uri_destroy(grpc_uri* uri);
|
53
48
|
|
54
|
-
#ifdef __cplusplus
|
55
|
-
}
|
56
|
-
#endif
|
57
|
-
|
58
49
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_URI_PARSER_H */
|
@@ -36,18 +36,16 @@
|
|
36
36
|
|
37
37
|
// The on_complete callback used when sending a cancel_error batch down the
|
38
38
|
// filter stack. Yields the call combiner when the batch returns.
|
39
|
-
static void yield_call_combiner(
|
40
|
-
grpc_error* ignored) {
|
39
|
+
static void yield_call_combiner(void* arg, grpc_error* ignored) {
|
41
40
|
grpc_deadline_state* deadline_state = (grpc_deadline_state*)arg;
|
42
|
-
GRPC_CALL_COMBINER_STOP(
|
41
|
+
GRPC_CALL_COMBINER_STOP(deadline_state->call_combiner,
|
43
42
|
"got on_complete from cancel_stream batch");
|
44
|
-
GRPC_CALL_STACK_UNREF(
|
43
|
+
GRPC_CALL_STACK_UNREF(deadline_state->call_stack, "deadline_timer");
|
45
44
|
}
|
46
45
|
|
47
46
|
// This is called via the call combiner, so access to deadline_state is
|
48
47
|
// synchronized.
|
49
|
-
static void send_cancel_op_in_call_combiner(
|
50
|
-
grpc_error* error) {
|
48
|
+
static void send_cancel_op_in_call_combiner(void* arg, grpc_error* error) {
|
51
49
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
52
50
|
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
53
51
|
grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op(
|
@@ -55,37 +53,34 @@ static void send_cancel_op_in_call_combiner(grpc_exec_ctx* exec_ctx, void* arg,
|
|
55
53
|
deadline_state, grpc_schedule_on_exec_ctx));
|
56
54
|
batch->cancel_stream = true;
|
57
55
|
batch->payload->cancel_stream.cancel_error = GRPC_ERROR_REF(error);
|
58
|
-
elem->filter->start_transport_stream_op_batch(
|
56
|
+
elem->filter->start_transport_stream_op_batch(elem, batch);
|
59
57
|
}
|
60
58
|
|
61
59
|
// Timer callback.
|
62
|
-
static void timer_callback(
|
63
|
-
grpc_error* error) {
|
60
|
+
static void timer_callback(void* arg, grpc_error* error) {
|
64
61
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
65
62
|
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
66
63
|
if (error != GRPC_ERROR_CANCELLED) {
|
67
64
|
error = grpc_error_set_int(
|
68
65
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Deadline Exceeded"),
|
69
66
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_DEADLINE_EXCEEDED);
|
70
|
-
grpc_call_combiner_cancel(
|
67
|
+
grpc_call_combiner_cancel(deadline_state->call_combiner,
|
71
68
|
GRPC_ERROR_REF(error));
|
72
69
|
GRPC_CLOSURE_INIT(&deadline_state->timer_callback,
|
73
70
|
send_cancel_op_in_call_combiner, elem,
|
74
71
|
grpc_schedule_on_exec_ctx);
|
75
|
-
GRPC_CALL_COMBINER_START(
|
72
|
+
GRPC_CALL_COMBINER_START(deadline_state->call_combiner,
|
76
73
|
&deadline_state->timer_callback, error,
|
77
74
|
"deadline exceeded -- sending cancel_stream op");
|
78
75
|
} else {
|
79
|
-
GRPC_CALL_STACK_UNREF(
|
80
|
-
"deadline_timer");
|
76
|
+
GRPC_CALL_STACK_UNREF(deadline_state->call_stack, "deadline_timer");
|
81
77
|
}
|
82
78
|
}
|
83
79
|
|
84
80
|
// Starts the deadline timer.
|
85
81
|
// This is called via the call combiner, so access to deadline_state is
|
86
82
|
// synchronized.
|
87
|
-
static void start_timer_if_needed(
|
88
|
-
grpc_call_element* elem,
|
83
|
+
static void start_timer_if_needed(grpc_call_element* elem,
|
89
84
|
grpc_millis deadline) {
|
90
85
|
if (deadline == GRPC_MILLIS_INF_FUTURE) {
|
91
86
|
return;
|
@@ -113,17 +108,16 @@ static void start_timer_if_needed(grpc_exec_ctx* exec_ctx,
|
|
113
108
|
}
|
114
109
|
GPR_ASSERT(closure != nullptr);
|
115
110
|
GRPC_CALL_STACK_REF(deadline_state->call_stack, "deadline_timer");
|
116
|
-
grpc_timer_init(
|
111
|
+
grpc_timer_init(&deadline_state->timer, deadline, closure);
|
117
112
|
}
|
118
113
|
|
119
114
|
// Cancels the deadline timer.
|
120
115
|
// This is called via the call combiner, so access to deadline_state is
|
121
116
|
// synchronized.
|
122
|
-
static void cancel_timer_if_needed(
|
123
|
-
grpc_deadline_state* deadline_state) {
|
117
|
+
static void cancel_timer_if_needed(grpc_deadline_state* deadline_state) {
|
124
118
|
if (deadline_state->timer_state == GRPC_DEADLINE_STATE_PENDING) {
|
125
119
|
deadline_state->timer_state = GRPC_DEADLINE_STATE_FINISHED;
|
126
|
-
grpc_timer_cancel(
|
120
|
+
grpc_timer_cancel(&deadline_state->timer);
|
127
121
|
} else {
|
128
122
|
// timer was either in STATE_INITAL (nothing to cancel)
|
129
123
|
// OR in STATE_FINISHED (again nothing to cancel)
|
@@ -131,12 +125,11 @@ static void cancel_timer_if_needed(grpc_exec_ctx* exec_ctx,
|
|
131
125
|
}
|
132
126
|
|
133
127
|
// Callback run when the call is complete.
|
134
|
-
static void on_complete(
|
128
|
+
static void on_complete(void* arg, grpc_error* error) {
|
135
129
|
grpc_deadline_state* deadline_state = (grpc_deadline_state*)arg;
|
136
|
-
cancel_timer_if_needed(
|
130
|
+
cancel_timer_if_needed(deadline_state);
|
137
131
|
// Invoke the next callback.
|
138
|
-
GRPC_CLOSURE_RUN(
|
139
|
-
GRPC_ERROR_REF(error));
|
132
|
+
GRPC_CLOSURE_RUN(deadline_state->next_on_complete, GRPC_ERROR_REF(error));
|
140
133
|
}
|
141
134
|
|
142
135
|
// Inject our own on_complete callback into op.
|
@@ -156,8 +149,7 @@ struct start_timer_after_init_state {
|
|
156
149
|
grpc_millis deadline;
|
157
150
|
grpc_closure closure;
|
158
151
|
};
|
159
|
-
static void start_timer_after_init(
|
160
|
-
grpc_error* error) {
|
152
|
+
static void start_timer_after_init(void* arg, grpc_error* error) {
|
161
153
|
struct start_timer_after_init_state* state =
|
162
154
|
(struct start_timer_after_init_state*)arg;
|
163
155
|
grpc_deadline_state* deadline_state =
|
@@ -166,18 +158,18 @@ static void start_timer_after_init(grpc_exec_ctx* exec_ctx, void* arg,
|
|
166
158
|
// We are initially called without holding the call combiner, so we
|
167
159
|
// need to bounce ourselves into it.
|
168
160
|
state->in_call_combiner = true;
|
169
|
-
GRPC_CALL_COMBINER_START(
|
170
|
-
|
161
|
+
GRPC_CALL_COMBINER_START(deadline_state->call_combiner, &state->closure,
|
162
|
+
GRPC_ERROR_REF(error),
|
171
163
|
"scheduling deadline timer");
|
172
164
|
return;
|
173
165
|
}
|
174
|
-
start_timer_if_needed(
|
166
|
+
start_timer_if_needed(state->elem, state->deadline);
|
175
167
|
gpr_free(state);
|
176
|
-
GRPC_CALL_COMBINER_STOP(
|
168
|
+
GRPC_CALL_COMBINER_STOP(deadline_state->call_combiner,
|
177
169
|
"done scheduling deadline timer");
|
178
170
|
}
|
179
171
|
|
180
|
-
void grpc_deadline_state_init(
|
172
|
+
void grpc_deadline_state_init(grpc_call_element* elem,
|
181
173
|
grpc_call_stack* call_stack,
|
182
174
|
grpc_call_combiner* call_combiner,
|
183
175
|
grpc_millis deadline) {
|
@@ -200,29 +192,27 @@ void grpc_deadline_state_init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
|
200
192
|
state->deadline = deadline;
|
201
193
|
GRPC_CLOSURE_INIT(&state->closure, start_timer_after_init, state,
|
202
194
|
grpc_schedule_on_exec_ctx);
|
203
|
-
GRPC_CLOSURE_SCHED(
|
195
|
+
GRPC_CLOSURE_SCHED(&state->closure, GRPC_ERROR_NONE);
|
204
196
|
}
|
205
197
|
}
|
206
198
|
|
207
|
-
void grpc_deadline_state_destroy(
|
208
|
-
grpc_call_element* elem) {
|
199
|
+
void grpc_deadline_state_destroy(grpc_call_element* elem) {
|
209
200
|
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
210
|
-
cancel_timer_if_needed(
|
201
|
+
cancel_timer_if_needed(deadline_state);
|
211
202
|
}
|
212
203
|
|
213
|
-
void grpc_deadline_state_reset(
|
204
|
+
void grpc_deadline_state_reset(grpc_call_element* elem,
|
214
205
|
grpc_millis new_deadline) {
|
215
206
|
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
216
|
-
cancel_timer_if_needed(
|
217
|
-
start_timer_if_needed(
|
207
|
+
cancel_timer_if_needed(deadline_state);
|
208
|
+
start_timer_if_needed(elem, new_deadline);
|
218
209
|
}
|
219
210
|
|
220
211
|
void grpc_deadline_state_client_start_transport_stream_op_batch(
|
221
|
-
|
222
|
-
grpc_transport_stream_op_batch* op) {
|
212
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
|
223
213
|
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
224
214
|
if (op->cancel_stream) {
|
225
|
-
cancel_timer_if_needed(
|
215
|
+
cancel_timer_if_needed(deadline_state);
|
226
216
|
} else {
|
227
217
|
// Make sure we know when the call is complete, so that we can cancel
|
228
218
|
// the timer.
|
@@ -237,16 +227,14 @@ void grpc_deadline_state_client_start_transport_stream_op_batch(
|
|
237
227
|
//
|
238
228
|
|
239
229
|
// Constructor for channel_data. Used for both client and server filters.
|
240
|
-
static grpc_error* init_channel_elem(
|
241
|
-
grpc_channel_element* elem,
|
230
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
242
231
|
grpc_channel_element_args* args) {
|
243
232
|
GPR_ASSERT(!args->is_last);
|
244
233
|
return GRPC_ERROR_NONE;
|
245
234
|
}
|
246
235
|
|
247
236
|
// Destructor for channel_data. Used for both client and server filters.
|
248
|
-
static void destroy_channel_elem(
|
249
|
-
grpc_channel_element* elem) {}
|
237
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {}
|
250
238
|
|
251
239
|
// Call data used for both client and server filter.
|
252
240
|
typedef struct base_call_data {
|
@@ -266,50 +254,45 @@ typedef struct server_call_data {
|
|
266
254
|
} server_call_data;
|
267
255
|
|
268
256
|
// Constructor for call_data. Used for both client and server filters.
|
269
|
-
static grpc_error* init_call_elem(
|
270
|
-
grpc_call_element* elem,
|
257
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
271
258
|
const grpc_call_element_args* args) {
|
272
|
-
grpc_deadline_state_init(
|
273
|
-
args->
|
259
|
+
grpc_deadline_state_init(elem, args->call_stack, args->call_combiner,
|
260
|
+
args->deadline);
|
274
261
|
return GRPC_ERROR_NONE;
|
275
262
|
}
|
276
263
|
|
277
264
|
// Destructor for call_data. Used for both client and server filters.
|
278
|
-
static void destroy_call_elem(
|
265
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
279
266
|
const grpc_call_final_info* final_info,
|
280
267
|
grpc_closure* ignored) {
|
281
|
-
grpc_deadline_state_destroy(
|
268
|
+
grpc_deadline_state_destroy(elem);
|
282
269
|
}
|
283
270
|
|
284
271
|
// Method for starting a call op for client filter.
|
285
272
|
static void client_start_transport_stream_op_batch(
|
286
|
-
|
287
|
-
|
288
|
-
grpc_deadline_state_client_start_transport_stream_op_batch(exec_ctx, elem,
|
289
|
-
op);
|
273
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
|
274
|
+
grpc_deadline_state_client_start_transport_stream_op_batch(elem, op);
|
290
275
|
// Chain to next filter.
|
291
|
-
grpc_call_next_op(
|
276
|
+
grpc_call_next_op(elem, op);
|
292
277
|
}
|
293
278
|
|
294
279
|
// Callback for receiving initial metadata on the server.
|
295
|
-
static void recv_initial_metadata_ready(
|
296
|
-
grpc_error* error) {
|
280
|
+
static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
|
297
281
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
298
282
|
server_call_data* calld = (server_call_data*)elem->call_data;
|
299
283
|
// Get deadline from metadata and start the timer if needed.
|
300
|
-
start_timer_if_needed(
|
284
|
+
start_timer_if_needed(elem, calld->recv_initial_metadata->deadline);
|
301
285
|
// Invoke the next callback.
|
302
286
|
calld->next_recv_initial_metadata_ready->cb(
|
303
|
-
|
287
|
+
calld->next_recv_initial_metadata_ready->cb_arg, error);
|
304
288
|
}
|
305
289
|
|
306
290
|
// Method for starting a call op for server filter.
|
307
291
|
static void server_start_transport_stream_op_batch(
|
308
|
-
|
309
|
-
grpc_transport_stream_op_batch* op) {
|
292
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
|
310
293
|
server_call_data* calld = (server_call_data*)elem->call_data;
|
311
294
|
if (op->cancel_stream) {
|
312
|
-
cancel_timer_if_needed(
|
295
|
+
cancel_timer_if_needed(&calld->base.deadline_state);
|
313
296
|
} else {
|
314
297
|
// If we're receiving initial metadata, we need to get the deadline
|
315
298
|
// from the recv_initial_metadata_ready callback. So we inject our
|
@@ -335,7 +318,7 @@ static void server_start_transport_stream_op_batch(
|
|
335
318
|
}
|
336
319
|
}
|
337
320
|
// Chain to next filter.
|
338
|
-
grpc_call_next_op(
|
321
|
+
grpc_call_next_op(elem, op);
|
339
322
|
}
|
340
323
|
|
341
324
|
const grpc_channel_filter grpc_client_deadline_filter = {
|
@@ -372,8 +355,7 @@ bool grpc_deadline_checking_enabled(const grpc_channel_args* channel_args) {
|
|
372
355
|
!grpc_channel_args_want_minimal_stack(channel_args));
|
373
356
|
}
|
374
357
|
|
375
|
-
static bool maybe_add_deadline_filter(
|
376
|
-
grpc_channel_stack_builder* builder,
|
358
|
+
static bool maybe_add_deadline_filter(grpc_channel_stack_builder* builder,
|
377
359
|
void* arg) {
|
378
360
|
return grpc_deadline_checking_enabled(
|
379
361
|
grpc_channel_stack_builder_get_channel_arguments(builder))
|
@@ -382,7 +364,7 @@ static bool maybe_add_deadline_filter(grpc_exec_ctx* exec_ctx,
|
|
382
364
|
: true;
|
383
365
|
}
|
384
366
|
|
385
|
-
|
367
|
+
void grpc_deadline_filter_init(void) {
|
386
368
|
grpc_channel_init_register_stage(
|
387
369
|
GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
388
370
|
maybe_add_deadline_filter, (void*)&grpc_client_deadline_filter);
|
@@ -391,4 +373,4 @@ extern "C" void grpc_deadline_filter_init(void) {
|
|
391
373
|
maybe_add_deadline_filter, (void*)&grpc_server_deadline_filter);
|
392
374
|
}
|
393
375
|
|
394
|
-
|
376
|
+
void grpc_deadline_filter_shutdown(void) {}
|
@@ -20,10 +20,6 @@
|
|
20
20
|
#include "src/core/lib/channel/channel_stack.h"
|
21
21
|
#include "src/core/lib/iomgr/timer.h"
|
22
22
|
|
23
|
-
#ifdef __cplusplus
|
24
|
-
extern "C" {
|
25
|
-
#endif
|
26
|
-
|
27
23
|
typedef enum grpc_deadline_timer_state {
|
28
24
|
GRPC_DEADLINE_STATE_INITIAL,
|
29
25
|
GRPC_DEADLINE_STATE_PENDING,
|
@@ -53,13 +49,12 @@ typedef struct grpc_deadline_state {
|
|
53
49
|
//
|
54
50
|
|
55
51
|
// assumes elem->call_data is zero'd
|
56
|
-
void grpc_deadline_state_init(
|
52
|
+
void grpc_deadline_state_init(grpc_call_element* elem,
|
57
53
|
grpc_call_stack* call_stack,
|
58
54
|
grpc_call_combiner* call_combiner,
|
59
55
|
grpc_millis deadline);
|
60
56
|
|
61
|
-
void grpc_deadline_state_destroy(
|
62
|
-
grpc_call_element* elem);
|
57
|
+
void grpc_deadline_state_destroy(grpc_call_element* elem);
|
63
58
|
|
64
59
|
// Cancels the existing timer and starts a new one with new_deadline.
|
65
60
|
//
|
@@ -70,7 +65,7 @@ void grpc_deadline_state_destroy(grpc_exec_ctx* exec_ctx,
|
|
70
65
|
// deadline may result in the timer being called twice.
|
71
66
|
//
|
72
67
|
// Note: Must be called while holding the call combiner.
|
73
|
-
void grpc_deadline_state_reset(
|
68
|
+
void grpc_deadline_state_reset(grpc_call_element* elem,
|
74
69
|
grpc_millis new_deadline);
|
75
70
|
|
76
71
|
// To be called from the client-side filter's start_transport_stream_op_batch()
|
@@ -82,8 +77,7 @@ void grpc_deadline_state_reset(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
|
82
77
|
//
|
83
78
|
// Note: Must be called while holding the call combiner.
|
84
79
|
void grpc_deadline_state_client_start_transport_stream_op_batch(
|
85
|
-
|
86
|
-
grpc_transport_stream_op_batch* op);
|
80
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* op);
|
87
81
|
|
88
82
|
// Should deadline checking be performed (according to channel args)
|
89
83
|
bool grpc_deadline_checking_enabled(const grpc_channel_args* args);
|
@@ -94,8 +88,4 @@ bool grpc_deadline_checking_enabled(const grpc_channel_args* args);
|
|
94
88
|
extern const grpc_channel_filter grpc_client_deadline_filter;
|
95
89
|
extern const grpc_channel_filter grpc_server_deadline_filter;
|
96
90
|
|
97
|
-
#ifdef __cplusplus
|
98
|
-
}
|
99
|
-
#endif
|
100
|
-
|
101
91
|
#endif /* GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H */
|
@@ -20,12 +20,12 @@
|
|
20
20
|
#include <grpc/support/log.h>
|
21
21
|
#include <grpc/support/string_util.h>
|
22
22
|
#include <string.h>
|
23
|
+
#include "src/core/lib/gpr/string.h"
|
23
24
|
#include "src/core/lib/profiling/timers.h"
|
24
25
|
#include "src/core/lib/slice/b64.h"
|
25
26
|
#include "src/core/lib/slice/percent_encoding.h"
|
26
27
|
#include "src/core/lib/slice/slice_internal.h"
|
27
28
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
28
|
-
#include "src/core/lib/support/string.h"
|
29
29
|
#include "src/core/lib/transport/static_metadata.h"
|
30
30
|
#include "src/core/lib/transport/transport_impl.h"
|
31
31
|
|
@@ -35,7 +35,8 @@
|
|
35
35
|
/* default maximum size of payload eligable for GET request */
|
36
36
|
static const size_t kMaxPayloadSizeForGet = 2048;
|
37
37
|
|
38
|
-
|
38
|
+
namespace {
|
39
|
+
struct call_data {
|
39
40
|
grpc_call_combiner* call_combiner;
|
40
41
|
// State for handling send_initial_metadata ops.
|
41
42
|
grpc_linked_mdelem method;
|
@@ -60,20 +61,20 @@ typedef struct call_data {
|
|
60
61
|
grpc_closure on_send_message_next_done;
|
61
62
|
grpc_closure* original_send_message_on_complete;
|
62
63
|
grpc_closure send_message_on_complete;
|
63
|
-
}
|
64
|
+
};
|
64
65
|
|
65
|
-
|
66
|
+
struct channel_data {
|
66
67
|
grpc_mdelem static_scheme;
|
67
68
|
grpc_mdelem user_agent;
|
68
69
|
size_t max_payload_size_for_get;
|
69
|
-
}
|
70
|
+
};
|
71
|
+
} // namespace
|
70
72
|
|
71
|
-
static grpc_error* client_filter_incoming_metadata(
|
72
|
-
grpc_call_element* elem,
|
73
|
+
static grpc_error* client_filter_incoming_metadata(grpc_call_element* elem,
|
73
74
|
grpc_metadata_batch* b) {
|
74
75
|
if (b->idx.named.status != nullptr) {
|
75
76
|
if (grpc_mdelem_eq(b->idx.named.status->md, GRPC_MDELEM_STATUS_200)) {
|
76
|
-
grpc_metadata_batch_remove(
|
77
|
+
grpc_metadata_batch_remove(b, b->idx.named.status);
|
77
78
|
} else {
|
78
79
|
char* val = grpc_dump_slice(GRPC_MDVALUE(b->idx.named.status->md),
|
79
80
|
GPR_DUMP_ASCII);
|
@@ -98,10 +99,9 @@ static grpc_error* client_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
98
99
|
GRPC_MDVALUE(b->idx.named.grpc_message->md));
|
99
100
|
if (grpc_slice_is_equivalent(pct_decoded_msg,
|
100
101
|
GRPC_MDVALUE(b->idx.named.grpc_message->md))) {
|
101
|
-
grpc_slice_unref_internal(
|
102
|
+
grpc_slice_unref_internal(pct_decoded_msg);
|
102
103
|
} else {
|
103
|
-
grpc_metadata_batch_set_value(
|
104
|
-
pct_decoded_msg);
|
104
|
+
grpc_metadata_batch_set_value(b->idx.named.grpc_message, pct_decoded_msg);
|
105
105
|
}
|
106
106
|
}
|
107
107
|
|
@@ -131,60 +131,53 @@ static grpc_error* client_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
131
131
|
gpr_free(val);
|
132
132
|
}
|
133
133
|
}
|
134
|
-
grpc_metadata_batch_remove(
|
134
|
+
grpc_metadata_batch_remove(b, b->idx.named.content_type);
|
135
135
|
}
|
136
136
|
|
137
137
|
return GRPC_ERROR_NONE;
|
138
138
|
}
|
139
139
|
|
140
|
-
static void recv_initial_metadata_ready(
|
141
|
-
void* user_data, grpc_error* error) {
|
140
|
+
static void recv_initial_metadata_ready(void* user_data, grpc_error* error) {
|
142
141
|
grpc_call_element* elem = (grpc_call_element*)user_data;
|
143
142
|
call_data* calld = (call_data*)elem->call_data;
|
144
143
|
if (error == GRPC_ERROR_NONE) {
|
145
|
-
error = client_filter_incoming_metadata(
|
146
|
-
calld->recv_initial_metadata);
|
144
|
+
error = client_filter_incoming_metadata(elem, calld->recv_initial_metadata);
|
147
145
|
} else {
|
148
146
|
GRPC_ERROR_REF(error);
|
149
147
|
}
|
150
|
-
GRPC_CLOSURE_RUN(
|
151
|
-
error);
|
148
|
+
GRPC_CLOSURE_RUN(calld->original_recv_initial_metadata_ready, error);
|
152
149
|
}
|
153
150
|
|
154
|
-
static void recv_trailing_metadata_on_complete(
|
155
|
-
void* user_data,
|
151
|
+
static void recv_trailing_metadata_on_complete(void* user_data,
|
156
152
|
grpc_error* error) {
|
157
153
|
grpc_call_element* elem = (grpc_call_element*)user_data;
|
158
154
|
call_data* calld = (call_data*)elem->call_data;
|
159
155
|
if (error == GRPC_ERROR_NONE) {
|
160
|
-
error =
|
161
|
-
|
156
|
+
error =
|
157
|
+
client_filter_incoming_metadata(elem, calld->recv_trailing_metadata);
|
162
158
|
} else {
|
163
159
|
GRPC_ERROR_REF(error);
|
164
160
|
}
|
165
|
-
GRPC_CLOSURE_RUN(
|
166
|
-
error);
|
161
|
+
GRPC_CLOSURE_RUN(calld->original_recv_trailing_metadata_on_complete, error);
|
167
162
|
}
|
168
163
|
|
169
|
-
static void send_message_on_complete(
|
170
|
-
grpc_error* error) {
|
164
|
+
static void send_message_on_complete(void* arg, grpc_error* error) {
|
171
165
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
172
166
|
call_data* calld = (call_data*)elem->call_data;
|
173
|
-
grpc_byte_stream_cache_destroy(
|
174
|
-
GRPC_CLOSURE_RUN(
|
167
|
+
grpc_byte_stream_cache_destroy(&calld->send_message_cache);
|
168
|
+
GRPC_CLOSURE_RUN(calld->original_send_message_on_complete,
|
175
169
|
GRPC_ERROR_REF(error));
|
176
170
|
}
|
177
171
|
|
178
172
|
// Pulls a slice from the send_message byte stream, updating
|
179
173
|
// calld->send_message_bytes_read.
|
180
|
-
static grpc_error* pull_slice_from_send_message(
|
181
|
-
call_data* calld) {
|
174
|
+
static grpc_error* pull_slice_from_send_message(call_data* calld) {
|
182
175
|
grpc_slice incoming_slice;
|
183
176
|
grpc_error* error = grpc_byte_stream_pull(
|
184
|
-
|
177
|
+
&calld->send_message_caching_stream.base, &incoming_slice);
|
185
178
|
if (error == GRPC_ERROR_NONE) {
|
186
179
|
calld->send_message_bytes_read += GRPC_SLICE_LENGTH(incoming_slice);
|
187
|
-
grpc_slice_unref_internal(
|
180
|
+
grpc_slice_unref_internal(incoming_slice);
|
188
181
|
}
|
189
182
|
return error;
|
190
183
|
}
|
@@ -194,12 +187,10 @@ static grpc_error* pull_slice_from_send_message(grpc_exec_ctx* exec_ctx,
|
|
194
187
|
// calld->send_message_caching_stream.base.length, then we have completed
|
195
188
|
// reading from the byte stream; otherwise, an async read has been dispatched
|
196
189
|
// and on_send_message_next_done() will be invoked when it is complete.
|
197
|
-
static grpc_error* read_all_available_send_message_data(
|
198
|
-
|
199
|
-
while (grpc_byte_stream_next(exec_ctx,
|
200
|
-
&calld->send_message_caching_stream.base,
|
190
|
+
static grpc_error* read_all_available_send_message_data(call_data* calld) {
|
191
|
+
while (grpc_byte_stream_next(&calld->send_message_caching_stream.base,
|
201
192
|
~(size_t)0, &calld->on_send_message_next_done)) {
|
202
|
-
grpc_error* error = pull_slice_from_send_message(
|
193
|
+
grpc_error* error = pull_slice_from_send_message(calld);
|
203
194
|
if (error != GRPC_ERROR_NONE) return error;
|
204
195
|
if (calld->send_message_bytes_read ==
|
205
196
|
calld->send_message_caching_stream.base.length) {
|
@@ -210,19 +201,18 @@ static grpc_error* read_all_available_send_message_data(grpc_exec_ctx* exec_ctx,
|
|
210
201
|
}
|
211
202
|
|
212
203
|
// Async callback for grpc_byte_stream_next().
|
213
|
-
static void on_send_message_next_done(
|
214
|
-
grpc_error* error) {
|
204
|
+
static void on_send_message_next_done(void* arg, grpc_error* error) {
|
215
205
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
216
206
|
call_data* calld = (call_data*)elem->call_data;
|
217
207
|
if (error != GRPC_ERROR_NONE) {
|
218
208
|
grpc_transport_stream_op_batch_finish_with_failure(
|
219
|
-
|
209
|
+
calld->send_message_batch, error, calld->call_combiner);
|
220
210
|
return;
|
221
211
|
}
|
222
|
-
error = pull_slice_from_send_message(
|
212
|
+
error = pull_slice_from_send_message(calld);
|
223
213
|
if (error != GRPC_ERROR_NONE) {
|
224
214
|
grpc_transport_stream_op_batch_finish_with_failure(
|
225
|
-
|
215
|
+
calld->send_message_batch, error, calld->call_combiner);
|
226
216
|
return;
|
227
217
|
}
|
228
218
|
// There may or may not be more to read, but we don't care. If we got
|
@@ -230,7 +220,7 @@ static void on_send_message_next_done(grpc_exec_ctx* exec_ctx, void* arg,
|
|
230
220
|
// synchronously, so we were not able to do a cached call. Instead,
|
231
221
|
// we just reset the byte stream and then send down the batch as-is.
|
232
222
|
grpc_caching_byte_stream_reset(&calld->send_message_caching_stream);
|
233
|
-
grpc_call_next_op(
|
223
|
+
grpc_call_next_op(elem, calld->send_message_batch);
|
234
224
|
}
|
235
225
|
|
236
226
|
static char* slice_buffer_to_string(grpc_slice_buffer* slice_buffer) {
|
@@ -248,8 +238,7 @@ static char* slice_buffer_to_string(grpc_slice_buffer* slice_buffer) {
|
|
248
238
|
|
249
239
|
// Modifies the path entry in the batch's send_initial_metadata to
|
250
240
|
// append the base64-encoded query for a GET request.
|
251
|
-
static grpc_error* update_path_for_get(
|
252
|
-
grpc_call_element* elem,
|
241
|
+
static grpc_error* update_path_for_get(grpc_call_element* elem,
|
253
242
|
grpc_transport_stream_op_batch* batch) {
|
254
243
|
call_data* calld = (call_data*)elem->call_data;
|
255
244
|
grpc_slice path_slice =
|
@@ -282,24 +271,22 @@ static grpc_error* update_path_for_get(grpc_exec_ctx* exec_ctx,
|
|
282
271
|
grpc_slice_sub_no_ref(path_with_query_slice, 0, strlen(t));
|
283
272
|
/* substitute previous path with the new path+query */
|
284
273
|
grpc_mdelem mdelem_path_and_query =
|
285
|
-
grpc_mdelem_from_slices(
|
274
|
+
grpc_mdelem_from_slices(GRPC_MDSTR_PATH, path_with_query_slice);
|
286
275
|
grpc_metadata_batch* b =
|
287
276
|
batch->payload->send_initial_metadata.send_initial_metadata;
|
288
|
-
return grpc_metadata_batch_substitute(
|
277
|
+
return grpc_metadata_batch_substitute(b, b->idx.named.path,
|
289
278
|
mdelem_path_and_query);
|
290
279
|
}
|
291
280
|
|
292
|
-
static void remove_if_present(
|
293
|
-
grpc_metadata_batch* batch,
|
281
|
+
static void remove_if_present(grpc_metadata_batch* batch,
|
294
282
|
grpc_metadata_batch_callouts_index idx) {
|
295
283
|
if (batch->idx.array[idx] != nullptr) {
|
296
|
-
grpc_metadata_batch_remove(
|
284
|
+
grpc_metadata_batch_remove(batch, batch->idx.array[idx]);
|
297
285
|
}
|
298
286
|
}
|
299
287
|
|
300
288
|
static void hc_start_transport_stream_op_batch(
|
301
|
-
|
302
|
-
grpc_transport_stream_op_batch* batch) {
|
289
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
303
290
|
call_data* calld = (call_data*)elem->call_data;
|
304
291
|
channel_data* channeld = (channel_data*)elem->channel_data;
|
305
292
|
GPR_TIMER_BEGIN("hc_start_transport_stream_op_batch", 0);
|
@@ -345,17 +332,16 @@ static void hc_start_transport_stream_op_batch(
|
|
345
332
|
calld->original_send_message_on_complete = batch->on_complete;
|
346
333
|
batch->on_complete = &calld->send_message_on_complete;
|
347
334
|
calld->send_message_batch = batch;
|
348
|
-
error = read_all_available_send_message_data(
|
335
|
+
error = read_all_available_send_message_data(calld);
|
349
336
|
if (error != GRPC_ERROR_NONE) goto done;
|
350
337
|
// If all the data has been read, then we can use GET.
|
351
338
|
if (calld->send_message_bytes_read ==
|
352
339
|
calld->send_message_caching_stream.base.length) {
|
353
340
|
method = GRPC_MDELEM_METHOD_GET;
|
354
|
-
error = update_path_for_get(
|
341
|
+
error = update_path_for_get(elem, batch);
|
355
342
|
if (error != GRPC_ERROR_NONE) goto done;
|
356
343
|
batch->send_message = false;
|
357
|
-
grpc_byte_stream_destroy(
|
358
|
-
&calld->send_message_caching_stream.base);
|
344
|
+
grpc_byte_stream_destroy(&calld->send_message_caching_stream.base);
|
359
345
|
} else {
|
360
346
|
// Not all data is available. The batch will be sent down
|
361
347
|
// asynchronously in on_send_message_next_done().
|
@@ -372,41 +358,41 @@ static void hc_start_transport_stream_op_batch(
|
|
372
358
|
}
|
373
359
|
|
374
360
|
remove_if_present(
|
375
|
-
|
361
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
376
362
|
GRPC_BATCH_METHOD);
|
377
363
|
remove_if_present(
|
378
|
-
|
364
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
379
365
|
GRPC_BATCH_SCHEME);
|
380
366
|
remove_if_present(
|
381
|
-
|
367
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
382
368
|
GRPC_BATCH_TE);
|
383
369
|
remove_if_present(
|
384
|
-
|
370
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
385
371
|
GRPC_BATCH_CONTENT_TYPE);
|
386
372
|
remove_if_present(
|
387
|
-
|
373
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
388
374
|
GRPC_BATCH_USER_AGENT);
|
389
375
|
|
390
376
|
/* Send : prefixed headers, which have to be before any application
|
391
377
|
layer headers. */
|
392
378
|
error = grpc_metadata_batch_add_head(
|
393
|
-
|
379
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
394
380
|
&calld->method, method);
|
395
381
|
if (error != GRPC_ERROR_NONE) goto done;
|
396
382
|
error = grpc_metadata_batch_add_head(
|
397
|
-
|
383
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
398
384
|
&calld->scheme, channeld->static_scheme);
|
399
385
|
if (error != GRPC_ERROR_NONE) goto done;
|
400
386
|
error = grpc_metadata_batch_add_tail(
|
401
|
-
|
387
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
402
388
|
&calld->te_trailers, GRPC_MDELEM_TE_TRAILERS);
|
403
389
|
if (error != GRPC_ERROR_NONE) goto done;
|
404
390
|
error = grpc_metadata_batch_add_tail(
|
405
|
-
|
391
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
406
392
|
&calld->content_type, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC);
|
407
393
|
if (error != GRPC_ERROR_NONE) goto done;
|
408
394
|
error = grpc_metadata_batch_add_tail(
|
409
|
-
|
395
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
410
396
|
&calld->user_agent, GRPC_MDELEM_REF(channeld->user_agent));
|
411
397
|
if (error != GRPC_ERROR_NONE) goto done;
|
412
398
|
}
|
@@ -414,16 +400,15 @@ static void hc_start_transport_stream_op_batch(
|
|
414
400
|
done:
|
415
401
|
if (error != GRPC_ERROR_NONE) {
|
416
402
|
grpc_transport_stream_op_batch_finish_with_failure(
|
417
|
-
|
403
|
+
calld->send_message_batch, error, calld->call_combiner);
|
418
404
|
} else if (!batch_will_be_handled_asynchronously) {
|
419
|
-
grpc_call_next_op(
|
405
|
+
grpc_call_next_op(elem, batch);
|
420
406
|
}
|
421
407
|
GPR_TIMER_END("hc_start_transport_stream_op_batch", 0);
|
422
408
|
}
|
423
409
|
|
424
410
|
/* Constructor for call_data */
|
425
|
-
static grpc_error* init_call_elem(
|
426
|
-
grpc_call_element* elem,
|
411
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
427
412
|
const grpc_call_element_args* args) {
|
428
413
|
call_data* calld = (call_data*)elem->call_data;
|
429
414
|
calld->call_combiner = args->call_combiner;
|
@@ -441,7 +426,7 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
|
|
441
426
|
}
|
442
427
|
|
443
428
|
/* Destructor for call_data */
|
444
|
-
static void destroy_call_elem(
|
429
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
445
430
|
const grpc_call_final_info* final_info,
|
446
431
|
grpc_closure* ignored) {}
|
447
432
|
|
@@ -533,8 +518,7 @@ static grpc_slice user_agent_from_args(const grpc_channel_args* args,
|
|
533
518
|
}
|
534
519
|
|
535
520
|
/* Constructor for channel_data */
|
536
|
-
static grpc_error* init_channel_elem(
|
537
|
-
grpc_channel_element* elem,
|
521
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
538
522
|
grpc_channel_element_args* args) {
|
539
523
|
channel_data* chand = (channel_data*)elem->channel_data;
|
540
524
|
GPR_ASSERT(!args->is_last);
|
@@ -543,17 +527,16 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
543
527
|
chand->max_payload_size_for_get =
|
544
528
|
max_payload_size_from_args(args->channel_args);
|
545
529
|
chand->user_agent = grpc_mdelem_from_slices(
|
546
|
-
|
530
|
+
GRPC_MDSTR_USER_AGENT,
|
547
531
|
user_agent_from_args(args->channel_args,
|
548
532
|
args->optional_transport->vtable->name));
|
549
533
|
return GRPC_ERROR_NONE;
|
550
534
|
}
|
551
535
|
|
552
536
|
/* Destructor for channel data */
|
553
|
-
static void destroy_channel_elem(
|
554
|
-
grpc_channel_element* elem) {
|
537
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {
|
555
538
|
channel_data* chand = (channel_data*)elem->channel_data;
|
556
|
-
GRPC_MDELEM_UNREF(
|
539
|
+
GRPC_MDELEM_UNREF(chand->user_agent);
|
557
540
|
}
|
558
541
|
|
559
542
|
const grpc_channel_filter grpc_http_client_filter = {
|