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
@@ -20,18 +20,10 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/channel/channel_stack.h"
|
22
22
|
|
23
|
-
#ifdef __cplusplus
|
24
|
-
extern "C" {
|
25
|
-
#endif
|
26
|
-
|
27
23
|
/* Processes metadata on the client side for HTTP2 transports */
|
28
24
|
extern const grpc_channel_filter grpc_http_client_filter;
|
29
25
|
|
30
26
|
/* Channel arg to determine maximum size of payload eligable for GET request */
|
31
27
|
#define GRPC_ARG_MAX_PAYLOAD_SIZE_FOR_GET "grpc.max_payload_size_for_get"
|
32
28
|
|
33
|
-
#ifdef __cplusplus
|
34
|
-
}
|
35
|
-
#endif
|
36
|
-
|
37
29
|
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H */
|
@@ -40,8 +40,7 @@ static bool is_building_http_like_transport(
|
|
40
40
|
return t != nullptr && strstr(t->vtable->name, "http");
|
41
41
|
}
|
42
42
|
|
43
|
-
static bool maybe_add_optional_filter(
|
44
|
-
grpc_channel_stack_builder* builder,
|
43
|
+
static bool maybe_add_optional_filter(grpc_channel_stack_builder* builder,
|
45
44
|
void* arg) {
|
46
45
|
if (!is_building_http_like_transport(builder)) return true;
|
47
46
|
optional_filter* filtarg = (optional_filter*)arg;
|
@@ -55,8 +54,7 @@ static bool maybe_add_optional_filter(grpc_exec_ctx* exec_ctx,
|
|
55
54
|
: true;
|
56
55
|
}
|
57
56
|
|
58
|
-
static bool maybe_add_required_filter(
|
59
|
-
grpc_channel_stack_builder* builder,
|
57
|
+
static bool maybe_add_required_filter(grpc_channel_stack_builder* builder,
|
60
58
|
void* arg) {
|
61
59
|
return is_building_http_like_transport(builder)
|
62
60
|
? grpc_channel_stack_builder_prepend_filter(
|
@@ -64,7 +62,7 @@ static bool maybe_add_required_filter(grpc_exec_ctx* exec_ctx,
|
|
64
62
|
: true;
|
65
63
|
}
|
66
64
|
|
67
|
-
|
65
|
+
void grpc_http_filters_init(void) {
|
68
66
|
grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
|
69
67
|
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
70
68
|
maybe_add_optional_filter, &compress_filter);
|
@@ -85,4 +83,4 @@ extern "C" void grpc_http_filters_init(void) {
|
|
85
83
|
maybe_add_required_filter, (void*)&grpc_http_server_filter);
|
86
84
|
}
|
87
85
|
|
88
|
-
|
86
|
+
void grpc_http_filters_shutdown(void) {}
|
@@ -28,23 +28,24 @@
|
|
28
28
|
#include "src/core/lib/channel/channel_args.h"
|
29
29
|
#include "src/core/lib/compression/algorithm_metadata.h"
|
30
30
|
#include "src/core/lib/compression/message_compress.h"
|
31
|
+
#include "src/core/lib/gpr/string.h"
|
31
32
|
#include "src/core/lib/profiling/timers.h"
|
32
33
|
#include "src/core/lib/slice/slice_internal.h"
|
33
34
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
34
|
-
#include "src/core/lib/support/string.h"
|
35
35
|
#include "src/core/lib/surface/call.h"
|
36
36
|
#include "src/core/lib/transport/static_metadata.h"
|
37
37
|
|
38
|
-
|
38
|
+
namespace {
|
39
|
+
enum initial_metadata_state {
|
39
40
|
// Initial metadata not yet seen.
|
40
41
|
INITIAL_METADATA_UNSEEN = 0,
|
41
42
|
// Initial metadata seen; compression algorithm set.
|
42
43
|
HAS_COMPRESSION_ALGORITHM,
|
43
44
|
// Initial metadata seen; no compression algorithm set.
|
44
45
|
NO_COMPRESSION_ALGORITHM,
|
45
|
-
}
|
46
|
+
};
|
46
47
|
|
47
|
-
|
48
|
+
struct call_data {
|
48
49
|
grpc_call_combiner* call_combiner;
|
49
50
|
grpc_linked_mdelem compression_algorithm_storage;
|
50
51
|
grpc_linked_mdelem stream_compression_algorithm_storage;
|
@@ -62,9 +63,9 @@ typedef struct call_data {
|
|
62
63
|
grpc_closure* original_send_message_on_complete;
|
63
64
|
grpc_closure send_message_on_complete;
|
64
65
|
grpc_closure on_send_message_next_done;
|
65
|
-
}
|
66
|
+
};
|
66
67
|
|
67
|
-
|
68
|
+
struct channel_data {
|
68
69
|
/** The default, channel-level, compression algorithm */
|
69
70
|
grpc_compression_algorithm default_compression_algorithm;
|
70
71
|
/** Bitset of enabled algorithms */
|
@@ -78,7 +79,8 @@ typedef struct channel_data {
|
|
78
79
|
uint32_t enabled_stream_compression_algorithms_bitset;
|
79
80
|
/** Supported stream compression algorithms */
|
80
81
|
uint32_t supported_stream_compression_algorithms;
|
81
|
-
}
|
82
|
+
};
|
83
|
+
} // namespace
|
82
84
|
|
83
85
|
static bool skip_compression(grpc_call_element* elem, uint32_t flags,
|
84
86
|
bool has_compression_algorithm) {
|
@@ -100,12 +102,11 @@ static bool skip_compression(grpc_call_element* elem, uint32_t flags,
|
|
100
102
|
|
101
103
|
/** Filter initial metadata */
|
102
104
|
static grpc_error* process_send_initial_metadata(
|
103
|
-
|
104
|
-
grpc_metadata_batch* initial_metadata,
|
105
|
+
grpc_call_element* elem, grpc_metadata_batch* initial_metadata,
|
105
106
|
bool* has_compression_algorithm) GRPC_MUST_USE_RESULT;
|
106
107
|
static grpc_error* process_send_initial_metadata(
|
107
|
-
|
108
|
-
|
108
|
+
grpc_call_element* elem, grpc_metadata_batch* initial_metadata,
|
109
|
+
bool* has_compression_algorithm) {
|
109
110
|
call_data* calld = (call_data*)elem->call_data;
|
110
111
|
channel_data* channeld = (channel_data*)elem->channel_data;
|
111
112
|
*has_compression_algorithm = false;
|
@@ -137,13 +138,13 @@ static grpc_error* process_send_initial_metadata(
|
|
137
138
|
}
|
138
139
|
*has_compression_algorithm = true;
|
139
140
|
grpc_metadata_batch_remove(
|
140
|
-
|
141
|
+
initial_metadata,
|
141
142
|
initial_metadata->idx.named.grpc_internal_stream_encoding_request);
|
142
143
|
/* Disable message-wise compression */
|
143
144
|
calld->compression_algorithm = GRPC_COMPRESS_NONE;
|
144
145
|
if (initial_metadata->idx.named.grpc_internal_encoding_request != nullptr) {
|
145
146
|
grpc_metadata_batch_remove(
|
146
|
-
|
147
|
+
initial_metadata,
|
147
148
|
initial_metadata->idx.named.grpc_internal_encoding_request);
|
148
149
|
}
|
149
150
|
} else if (initial_metadata->idx.named.grpc_internal_encoding_request !=
|
@@ -160,7 +161,7 @@ static grpc_error* process_send_initial_metadata(
|
|
160
161
|
}
|
161
162
|
*has_compression_algorithm = true;
|
162
163
|
grpc_metadata_batch_remove(
|
163
|
-
|
164
|
+
initial_metadata,
|
164
165
|
initial_metadata->idx.named.grpc_internal_encoding_request);
|
165
166
|
} else {
|
166
167
|
/* If no algorithm was found in the metadata and we aren't
|
@@ -181,12 +182,11 @@ static grpc_error* process_send_initial_metadata(
|
|
181
182
|
/* hint compression algorithm */
|
182
183
|
if (stream_compression_algorithm != GRPC_STREAM_COMPRESS_NONE) {
|
183
184
|
error = grpc_metadata_batch_add_tail(
|
184
|
-
|
185
|
-
&calld->stream_compression_algorithm_storage,
|
185
|
+
initial_metadata, &calld->stream_compression_algorithm_storage,
|
186
186
|
grpc_stream_compression_encoding_mdelem(stream_compression_algorithm));
|
187
187
|
} else if (calld->compression_algorithm != GRPC_COMPRESS_NONE) {
|
188
188
|
error = grpc_metadata_batch_add_tail(
|
189
|
-
|
189
|
+
initial_metadata, &calld->compression_algorithm_storage,
|
190
190
|
grpc_compression_encoding_mdelem(calld->compression_algorithm));
|
191
191
|
}
|
192
192
|
|
@@ -194,7 +194,7 @@ static grpc_error* process_send_initial_metadata(
|
|
194
194
|
|
195
195
|
/* convey supported compression algorithms */
|
196
196
|
error = grpc_metadata_batch_add_tail(
|
197
|
-
|
197
|
+
initial_metadata, &calld->accept_encoding_storage,
|
198
198
|
GRPC_MDELEM_ACCEPT_ENCODING_FOR_ALGORITHMS(
|
199
199
|
channeld->supported_compression_algorithms));
|
200
200
|
|
@@ -203,7 +203,7 @@ static grpc_error* process_send_initial_metadata(
|
|
203
203
|
/* Do not overwrite accept-encoding header if it already presents. */
|
204
204
|
if (!initial_metadata->idx.named.accept_encoding) {
|
205
205
|
error = grpc_metadata_batch_add_tail(
|
206
|
-
|
206
|
+
initial_metadata, &calld->accept_stream_encoding_storage,
|
207
207
|
GRPC_MDELEM_ACCEPT_STREAM_ENCODING_FOR_ALGORITHMS(
|
208
208
|
channeld->supported_stream_compression_algorithms));
|
209
209
|
}
|
@@ -211,17 +211,15 @@ static grpc_error* process_send_initial_metadata(
|
|
211
211
|
return error;
|
212
212
|
}
|
213
213
|
|
214
|
-
static void send_message_on_complete(
|
215
|
-
grpc_error* error) {
|
214
|
+
static void send_message_on_complete(void* arg, grpc_error* error) {
|
216
215
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
217
216
|
call_data* calld = (call_data*)elem->call_data;
|
218
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
219
|
-
GRPC_CLOSURE_RUN(
|
217
|
+
grpc_slice_buffer_reset_and_unref_internal(&calld->slices);
|
218
|
+
GRPC_CLOSURE_RUN(calld->original_send_message_on_complete,
|
220
219
|
GRPC_ERROR_REF(error));
|
221
220
|
}
|
222
221
|
|
223
|
-
static void send_message_batch_continue(
|
224
|
-
grpc_call_element* elem) {
|
222
|
+
static void send_message_batch_continue(grpc_call_element* elem) {
|
225
223
|
call_data* calld = (call_data*)elem->call_data;
|
226
224
|
// Note: The call to grpc_call_next_op() results in yielding the
|
227
225
|
// call combiner, so we need to clear calld->send_message_batch
|
@@ -229,19 +227,18 @@ static void send_message_batch_continue(grpc_exec_ctx* exec_ctx,
|
|
229
227
|
grpc_transport_stream_op_batch* send_message_batch =
|
230
228
|
calld->send_message_batch;
|
231
229
|
calld->send_message_batch = nullptr;
|
232
|
-
grpc_call_next_op(
|
230
|
+
grpc_call_next_op(elem, send_message_batch);
|
233
231
|
}
|
234
232
|
|
235
|
-
static void finish_send_message(
|
236
|
-
grpc_call_element* elem) {
|
233
|
+
static void finish_send_message(grpc_call_element* elem) {
|
237
234
|
call_data* calld = (call_data*)elem->call_data;
|
238
235
|
// Compress the data if appropriate.
|
239
236
|
grpc_slice_buffer tmp;
|
240
237
|
grpc_slice_buffer_init(&tmp);
|
241
238
|
uint32_t send_flags =
|
242
239
|
calld->send_message_batch->payload->send_message.send_message->flags;
|
243
|
-
bool did_compress =
|
244
|
-
|
240
|
+
bool did_compress =
|
241
|
+
grpc_msg_compress(calld->compression_algorithm, &calld->slices, &tmp);
|
245
242
|
if (did_compress) {
|
246
243
|
if (grpc_compression_trace.enabled()) {
|
247
244
|
const char* algo_name;
|
@@ -268,11 +265,11 @@ static void finish_send_message(grpc_exec_ctx* exec_ctx,
|
|
268
265
|
algo_name, calld->slices.length);
|
269
266
|
}
|
270
267
|
}
|
271
|
-
grpc_slice_buffer_destroy_internal(
|
268
|
+
grpc_slice_buffer_destroy_internal(&tmp);
|
272
269
|
// Swap out the original byte stream with our new one and send the
|
273
270
|
// batch down.
|
274
271
|
grpc_byte_stream_destroy(
|
275
|
-
|
272
|
+
calld->send_message_batch->payload->send_message.send_message);
|
276
273
|
grpc_slice_buffer_stream_init(&calld->replacement_stream, &calld->slices,
|
277
274
|
send_flags);
|
278
275
|
calld->send_message_batch->payload->send_message.send_message =
|
@@ -280,27 +277,24 @@ static void finish_send_message(grpc_exec_ctx* exec_ctx,
|
|
280
277
|
calld->original_send_message_on_complete =
|
281
278
|
calld->send_message_batch->on_complete;
|
282
279
|
calld->send_message_batch->on_complete = &calld->send_message_on_complete;
|
283
|
-
send_message_batch_continue(
|
280
|
+
send_message_batch_continue(elem);
|
284
281
|
}
|
285
282
|
|
286
|
-
static void fail_send_message_batch_in_call_combiner(
|
287
|
-
void* arg,
|
283
|
+
static void fail_send_message_batch_in_call_combiner(void* arg,
|
288
284
|
grpc_error* error) {
|
289
285
|
call_data* calld = (call_data*)arg;
|
290
286
|
if (calld->send_message_batch != nullptr) {
|
291
287
|
grpc_transport_stream_op_batch_finish_with_failure(
|
292
|
-
|
293
|
-
calld->call_combiner);
|
288
|
+
calld->send_message_batch, GRPC_ERROR_REF(error), calld->call_combiner);
|
294
289
|
calld->send_message_batch = nullptr;
|
295
290
|
}
|
296
291
|
}
|
297
292
|
|
298
293
|
// Pulls a slice from the send_message byte stream and adds it to calld->slices.
|
299
|
-
static grpc_error* pull_slice_from_send_message(
|
300
|
-
call_data* calld) {
|
294
|
+
static grpc_error* pull_slice_from_send_message(call_data* calld) {
|
301
295
|
grpc_slice incoming_slice;
|
302
296
|
grpc_error* error = grpc_byte_stream_pull(
|
303
|
-
|
297
|
+
calld->send_message_batch->payload->send_message.send_message,
|
304
298
|
&incoming_slice);
|
305
299
|
if (error == GRPC_ERROR_NONE) {
|
306
300
|
grpc_slice_buffer_add(&calld->slices, incoming_slice);
|
@@ -312,69 +306,65 @@ static grpc_error* pull_slice_from_send_message(grpc_exec_ctx* exec_ctx,
|
|
312
306
|
// If all data has been read, invokes finish_send_message(). Otherwise,
|
313
307
|
// an async call to grpc_byte_stream_next() has been started, which will
|
314
308
|
// eventually result in calling on_send_message_next_done().
|
315
|
-
static void continue_reading_send_message(
|
316
|
-
grpc_call_element* elem) {
|
309
|
+
static void continue_reading_send_message(grpc_call_element* elem) {
|
317
310
|
call_data* calld = (call_data*)elem->call_data;
|
318
311
|
while (grpc_byte_stream_next(
|
319
|
-
|
320
|
-
|
321
|
-
grpc_error* error = pull_slice_from_send_message(
|
312
|
+
calld->send_message_batch->payload->send_message.send_message, ~(size_t)0,
|
313
|
+
&calld->on_send_message_next_done)) {
|
314
|
+
grpc_error* error = pull_slice_from_send_message(calld);
|
322
315
|
if (error != GRPC_ERROR_NONE) {
|
323
316
|
// Closure callback; does not take ownership of error.
|
324
|
-
fail_send_message_batch_in_call_combiner(
|
317
|
+
fail_send_message_batch_in_call_combiner(calld, error);
|
325
318
|
GRPC_ERROR_UNREF(error);
|
326
319
|
return;
|
327
320
|
}
|
328
321
|
if (calld->slices.length ==
|
329
322
|
calld->send_message_batch->payload->send_message.send_message->length) {
|
330
|
-
finish_send_message(
|
323
|
+
finish_send_message(elem);
|
331
324
|
break;
|
332
325
|
}
|
333
326
|
}
|
334
327
|
}
|
335
328
|
|
336
329
|
// Async callback for grpc_byte_stream_next().
|
337
|
-
static void on_send_message_next_done(
|
338
|
-
grpc_error* error) {
|
330
|
+
static void on_send_message_next_done(void* arg, grpc_error* error) {
|
339
331
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
340
332
|
call_data* calld = (call_data*)elem->call_data;
|
341
333
|
if (error != GRPC_ERROR_NONE) {
|
342
334
|
// Closure callback; does not take ownership of error.
|
343
|
-
fail_send_message_batch_in_call_combiner(
|
335
|
+
fail_send_message_batch_in_call_combiner(calld, error);
|
344
336
|
return;
|
345
337
|
}
|
346
|
-
error = pull_slice_from_send_message(
|
338
|
+
error = pull_slice_from_send_message(calld);
|
347
339
|
if (error != GRPC_ERROR_NONE) {
|
348
340
|
// Closure callback; does not take ownership of error.
|
349
|
-
fail_send_message_batch_in_call_combiner(
|
341
|
+
fail_send_message_batch_in_call_combiner(calld, error);
|
350
342
|
GRPC_ERROR_UNREF(error);
|
351
343
|
return;
|
352
344
|
}
|
353
345
|
if (calld->slices.length ==
|
354
346
|
calld->send_message_batch->payload->send_message.send_message->length) {
|
355
|
-
finish_send_message(
|
347
|
+
finish_send_message(elem);
|
356
348
|
} else {
|
357
|
-
continue_reading_send_message(
|
349
|
+
continue_reading_send_message(elem);
|
358
350
|
}
|
359
351
|
}
|
360
352
|
|
361
|
-
static void start_send_message_batch(
|
362
|
-
grpc_error* unused) {
|
353
|
+
static void start_send_message_batch(void* arg, grpc_error* unused) {
|
363
354
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
364
355
|
call_data* calld = (call_data*)elem->call_data;
|
365
356
|
if (skip_compression(
|
366
357
|
elem,
|
367
358
|
calld->send_message_batch->payload->send_message.send_message->flags,
|
368
359
|
calld->send_initial_metadata_state == HAS_COMPRESSION_ALGORITHM)) {
|
369
|
-
send_message_batch_continue(
|
360
|
+
send_message_batch_continue(elem);
|
370
361
|
} else {
|
371
|
-
continue_reading_send_message(
|
362
|
+
continue_reading_send_message(elem);
|
372
363
|
}
|
373
364
|
}
|
374
365
|
|
375
366
|
static void compress_start_transport_stream_op_batch(
|
376
|
-
|
377
|
-
grpc_transport_stream_op_batch* batch) {
|
367
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
378
368
|
call_data* calld = (call_data*)elem->call_data;
|
379
369
|
GPR_TIMER_BEGIN("compress_start_transport_stream_op_batch", 0);
|
380
370
|
// Handle cancel_stream.
|
@@ -385,21 +375,19 @@ static void compress_start_transport_stream_op_batch(
|
|
385
375
|
if (calld->send_message_batch != nullptr) {
|
386
376
|
if (calld->send_initial_metadata_state == INITIAL_METADATA_UNSEEN) {
|
387
377
|
GRPC_CALL_COMBINER_START(
|
388
|
-
|
378
|
+
calld->call_combiner,
|
389
379
|
GRPC_CLOSURE_CREATE(fail_send_message_batch_in_call_combiner, calld,
|
390
380
|
grpc_schedule_on_exec_ctx),
|
391
381
|
GRPC_ERROR_REF(calld->cancel_error), "failing send_message op");
|
392
382
|
} else {
|
393
383
|
grpc_byte_stream_shutdown(
|
394
|
-
exec_ctx,
|
395
384
|
calld->send_message_batch->payload->send_message.send_message,
|
396
385
|
GRPC_ERROR_REF(calld->cancel_error));
|
397
386
|
}
|
398
387
|
}
|
399
388
|
} else if (calld->cancel_error != GRPC_ERROR_NONE) {
|
400
389
|
grpc_transport_stream_op_batch_finish_with_failure(
|
401
|
-
|
402
|
-
calld->call_combiner);
|
390
|
+
batch, GRPC_ERROR_REF(calld->cancel_error), calld->call_combiner);
|
403
391
|
goto done;
|
404
392
|
}
|
405
393
|
// Handle send_initial_metadata.
|
@@ -407,11 +395,10 @@ static void compress_start_transport_stream_op_batch(
|
|
407
395
|
GPR_ASSERT(calld->send_initial_metadata_state == INITIAL_METADATA_UNSEEN);
|
408
396
|
bool has_compression_algorithm;
|
409
397
|
grpc_error* error = process_send_initial_metadata(
|
410
|
-
|
411
|
-
batch->payload->send_initial_metadata.send_initial_metadata,
|
398
|
+
elem, batch->payload->send_initial_metadata.send_initial_metadata,
|
412
399
|
&has_compression_algorithm);
|
413
400
|
if (error != GRPC_ERROR_NONE) {
|
414
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
401
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
415
402
|
calld->call_combiner);
|
416
403
|
goto done;
|
417
404
|
}
|
@@ -425,7 +412,7 @@ static void compress_start_transport_stream_op_batch(
|
|
425
412
|
// the call stack) will release the call combiner for each batch it sees.
|
426
413
|
if (calld->send_message_batch != nullptr) {
|
427
414
|
GRPC_CALL_COMBINER_START(
|
428
|
-
|
415
|
+
calld->call_combiner,
|
429
416
|
&calld->start_send_message_batch_in_call_combiner, GRPC_ERROR_NONE,
|
430
417
|
"starting send_message after send_initial_metadata");
|
431
418
|
}
|
@@ -440,22 +427,21 @@ static void compress_start_transport_stream_op_batch(
|
|
440
427
|
// send_initial_metadata.
|
441
428
|
if (calld->send_initial_metadata_state == INITIAL_METADATA_UNSEEN) {
|
442
429
|
GRPC_CALL_COMBINER_STOP(
|
443
|
-
|
430
|
+
calld->call_combiner,
|
444
431
|
"send_message batch pending send_initial_metadata");
|
445
432
|
goto done;
|
446
433
|
}
|
447
|
-
start_send_message_batch(
|
434
|
+
start_send_message_batch(elem, GRPC_ERROR_NONE);
|
448
435
|
} else {
|
449
436
|
// Pass control down the stack.
|
450
|
-
grpc_call_next_op(
|
437
|
+
grpc_call_next_op(elem, batch);
|
451
438
|
}
|
452
439
|
done:
|
453
440
|
GPR_TIMER_END("compress_start_transport_stream_op_batch", 0);
|
454
441
|
}
|
455
442
|
|
456
443
|
/* Constructor for call_data */
|
457
|
-
static grpc_error* init_call_elem(
|
458
|
-
grpc_call_element* elem,
|
444
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
459
445
|
const grpc_call_element_args* args) {
|
460
446
|
call_data* calld = (call_data*)elem->call_data;
|
461
447
|
calld->call_combiner = args->call_combiner;
|
@@ -471,17 +457,16 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
|
|
471
457
|
}
|
472
458
|
|
473
459
|
/* Destructor for call_data */
|
474
|
-
static void destroy_call_elem(
|
460
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
475
461
|
const grpc_call_final_info* final_info,
|
476
462
|
grpc_closure* ignored) {
|
477
463
|
call_data* calld = (call_data*)elem->call_data;
|
478
|
-
grpc_slice_buffer_destroy_internal(
|
464
|
+
grpc_slice_buffer_destroy_internal(&calld->slices);
|
479
465
|
GRPC_ERROR_UNREF(calld->cancel_error);
|
480
466
|
}
|
481
467
|
|
482
468
|
/* Constructor for channel_data */
|
483
|
-
static grpc_error* init_channel_elem(
|
484
|
-
grpc_channel_element* elem,
|
469
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
485
470
|
grpc_channel_element_args* args) {
|
486
471
|
channel_data* channeld = (channel_data*)elem->channel_data;
|
487
472
|
|
@@ -531,8 +516,7 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
531
516
|
}
|
532
517
|
|
533
518
|
/* Destructor for channel data */
|
534
|
-
static void destroy_channel_elem(
|
535
|
-
grpc_channel_element* elem) {}
|
519
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {}
|
536
520
|
|
537
521
|
const grpc_channel_filter grpc_message_compress_filter = {
|
538
522
|
compress_start_transport_stream_op_batch,
|