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
@@ -23,10 +23,6 @@
|
|
23
23
|
|
24
24
|
#include "src/core/lib/channel/channel_stack.h"
|
25
25
|
|
26
|
-
#ifdef __cplusplus
|
27
|
-
extern "C" {
|
28
|
-
#endif
|
29
|
-
|
30
26
|
/** Compression filter for outgoing data.
|
31
27
|
*
|
32
28
|
* See <grpc/compression.h> for the available compression settings.
|
@@ -51,9 +47,5 @@ extern "C" {
|
|
51
47
|
|
52
48
|
extern const grpc_channel_filter grpc_message_compress_filter;
|
53
49
|
|
54
|
-
#ifdef __cplusplus
|
55
|
-
}
|
56
|
-
#endif
|
57
|
-
|
58
50
|
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_MESSAGE_COMPRESS_FILTER_H \
|
59
51
|
*/
|
@@ -31,7 +31,8 @@
|
|
31
31
|
#define EXPECTED_CONTENT_TYPE "application/grpc"
|
32
32
|
#define EXPECTED_CONTENT_TYPE_LENGTH sizeof(EXPECTED_CONTENT_TYPE) - 1
|
33
33
|
|
34
|
-
|
34
|
+
namespace {
|
35
|
+
struct call_data {
|
35
36
|
grpc_call_combiner* call_combiner;
|
36
37
|
|
37
38
|
grpc_linked_mdelem status;
|
@@ -60,14 +61,14 @@ typedef struct call_data {
|
|
60
61
|
grpc_closure hs_on_recv;
|
61
62
|
grpc_closure hs_on_complete;
|
62
63
|
grpc_closure hs_recv_message_ready;
|
63
|
-
}
|
64
|
+
};
|
64
65
|
|
65
|
-
|
66
|
+
struct channel_data {
|
66
67
|
uint8_t unused;
|
67
|
-
}
|
68
|
+
};
|
69
|
+
} // namespace
|
68
70
|
|
69
|
-
static grpc_error* server_filter_outgoing_metadata(
|
70
|
-
grpc_call_element* elem,
|
71
|
+
static grpc_error* server_filter_outgoing_metadata(grpc_call_element* elem,
|
71
72
|
grpc_metadata_batch* b) {
|
72
73
|
if (b->idx.named.grpc_message != nullptr) {
|
73
74
|
grpc_slice pct_encoded_msg = grpc_percent_encode_slice(
|
@@ -75,10 +76,9 @@ static grpc_error* server_filter_outgoing_metadata(grpc_exec_ctx* exec_ctx,
|
|
75
76
|
grpc_compatible_percent_encoding_unreserved_bytes);
|
76
77
|
if (grpc_slice_is_equivalent(pct_encoded_msg,
|
77
78
|
GRPC_MDVALUE(b->idx.named.grpc_message->md))) {
|
78
|
-
grpc_slice_unref_internal(
|
79
|
+
grpc_slice_unref_internal(pct_encoded_msg);
|
79
80
|
} else {
|
80
|
-
grpc_metadata_batch_set_value(
|
81
|
-
pct_encoded_msg);
|
81
|
+
grpc_metadata_batch_set_value(b->idx.named.grpc_message, pct_encoded_msg);
|
82
82
|
}
|
83
83
|
}
|
84
84
|
return GRPC_ERROR_NONE;
|
@@ -93,8 +93,7 @@ static void add_error(const char* error_name, grpc_error** cumulative,
|
|
93
93
|
*cumulative = grpc_error_add_child(*cumulative, new_err);
|
94
94
|
}
|
95
95
|
|
96
|
-
static grpc_error* server_filter_incoming_metadata(
|
97
|
-
grpc_call_element* elem,
|
96
|
+
static grpc_error* server_filter_incoming_metadata(grpc_call_element* elem,
|
98
97
|
grpc_metadata_batch* b) {
|
99
98
|
call_data* calld = (call_data*)elem->call_data;
|
100
99
|
grpc_error* error = GRPC_ERROR_NONE;
|
@@ -123,7 +122,7 @@ static grpc_error* server_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
123
122
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
|
124
123
|
b->idx.named.method->md));
|
125
124
|
}
|
126
|
-
grpc_metadata_batch_remove(
|
125
|
+
grpc_metadata_batch_remove(b, b->idx.named.method);
|
127
126
|
} else {
|
128
127
|
add_error(
|
129
128
|
error_name, &error,
|
@@ -139,7 +138,7 @@ static grpc_error* server_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
139
138
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
|
140
139
|
b->idx.named.te->md));
|
141
140
|
}
|
142
|
-
grpc_metadata_batch_remove(
|
141
|
+
grpc_metadata_batch_remove(b, b->idx.named.te);
|
143
142
|
} else {
|
144
143
|
add_error(error_name, &error,
|
145
144
|
grpc_error_set_str(
|
@@ -156,7 +155,7 @@ static grpc_error* server_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
156
155
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
|
157
156
|
b->idx.named.scheme->md));
|
158
157
|
}
|
159
|
-
grpc_metadata_batch_remove(
|
158
|
+
grpc_metadata_batch_remove(b, b->idx.named.scheme);
|
160
159
|
} else {
|
161
160
|
add_error(
|
162
161
|
error_name, &error,
|
@@ -191,7 +190,7 @@ static grpc_error* server_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
191
190
|
gpr_free(val);
|
192
191
|
}
|
193
192
|
}
|
194
|
-
grpc_metadata_batch_remove(
|
193
|
+
grpc_metadata_batch_remove(b, b->idx.named.content_type);
|
195
194
|
}
|
196
195
|
|
197
196
|
if (b->idx.named.path == nullptr) {
|
@@ -218,22 +217,21 @@ static grpc_error* server_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
218
217
|
|
219
218
|
/* substitute path metadata with just the path (not query) */
|
220
219
|
grpc_mdelem mdelem_path_without_query = grpc_mdelem_from_slices(
|
221
|
-
|
220
|
+
GRPC_MDSTR_PATH, grpc_slice_sub(path_slice, 0, offset));
|
222
221
|
|
223
|
-
grpc_metadata_batch_substitute(
|
222
|
+
grpc_metadata_batch_substitute(b, b->idx.named.path,
|
224
223
|
mdelem_path_without_query);
|
225
224
|
|
226
225
|
/* decode payload from query and add to the slice buffer to be returned */
|
227
226
|
const int k_url_safe = 1;
|
228
|
-
grpc_slice_buffer_add(
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
GRPC_SLICE_LENGTH(query_slice), k_url_safe));
|
227
|
+
grpc_slice_buffer_add(&calld->read_slice_buffer,
|
228
|
+
grpc_base64_decode_with_len(
|
229
|
+
(const char*)GRPC_SLICE_START_PTR(query_slice),
|
230
|
+
GRPC_SLICE_LENGTH(query_slice), k_url_safe));
|
233
231
|
grpc_slice_buffer_stream_init(&calld->read_stream,
|
234
232
|
&calld->read_slice_buffer, 0);
|
235
233
|
calld->seen_path_with_query = true;
|
236
|
-
grpc_slice_unref_internal(
|
234
|
+
grpc_slice_unref_internal(query_slice);
|
237
235
|
} else {
|
238
236
|
gpr_log(GPR_ERROR, "GET request without QUERY");
|
239
237
|
}
|
@@ -242,14 +240,14 @@ static grpc_error* server_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
242
240
|
if (b->idx.named.host != nullptr && b->idx.named.authority == nullptr) {
|
243
241
|
grpc_linked_mdelem* el = b->idx.named.host;
|
244
242
|
grpc_mdelem md = GRPC_MDELEM_REF(el->md);
|
245
|
-
grpc_metadata_batch_remove(
|
243
|
+
grpc_metadata_batch_remove(b, el);
|
246
244
|
add_error(error_name, &error,
|
247
245
|
grpc_metadata_batch_add_head(
|
248
|
-
|
246
|
+
b, el,
|
249
247
|
grpc_mdelem_from_slices(
|
250
|
-
|
248
|
+
GRPC_MDSTR_AUTHORITY,
|
251
249
|
grpc_slice_ref_internal(GRPC_MDVALUE(md)))));
|
252
|
-
GRPC_MDELEM_UNREF(
|
250
|
+
GRPC_MDELEM_UNREF(md);
|
253
251
|
}
|
254
252
|
|
255
253
|
if (b->idx.named.authority == nullptr) {
|
@@ -263,21 +261,18 @@ static grpc_error* server_filter_incoming_metadata(grpc_exec_ctx* exec_ctx,
|
|
263
261
|
return error;
|
264
262
|
}
|
265
263
|
|
266
|
-
static void hs_on_recv(
|
267
|
-
grpc_error* err) {
|
264
|
+
static void hs_on_recv(void* user_data, grpc_error* err) {
|
268
265
|
grpc_call_element* elem = (grpc_call_element*)user_data;
|
269
266
|
call_data* calld = (call_data*)elem->call_data;
|
270
267
|
if (err == GRPC_ERROR_NONE) {
|
271
|
-
err = server_filter_incoming_metadata(
|
272
|
-
calld->recv_initial_metadata);
|
268
|
+
err = server_filter_incoming_metadata(elem, calld->recv_initial_metadata);
|
273
269
|
} else {
|
274
270
|
GRPC_ERROR_REF(err);
|
275
271
|
}
|
276
|
-
GRPC_CLOSURE_RUN(
|
272
|
+
GRPC_CLOSURE_RUN(calld->on_done_recv, err);
|
277
273
|
}
|
278
274
|
|
279
|
-
static void hs_on_complete(
|
280
|
-
grpc_error* err) {
|
275
|
+
static void hs_on_complete(void* user_data, grpc_error* err) {
|
281
276
|
grpc_call_element* elem = (grpc_call_element*)user_data;
|
282
277
|
call_data* calld = (call_data*)elem->call_data;
|
283
278
|
/* Call recv_message_ready if we got the payload via the path field */
|
@@ -287,17 +282,16 @@ static void hs_on_complete(grpc_exec_ctx* exec_ctx, void* user_data,
|
|
287
282
|
: (grpc_byte_stream*)&calld->read_stream;
|
288
283
|
// Re-enter call combiner for recv_message_ready, since the surface
|
289
284
|
// code will release the call combiner for each callback it receives.
|
290
|
-
GRPC_CALL_COMBINER_START(
|
291
|
-
|
285
|
+
GRPC_CALL_COMBINER_START(calld->call_combiner, calld->recv_message_ready,
|
286
|
+
GRPC_ERROR_REF(err),
|
292
287
|
"resuming recv_message_ready from on_complete");
|
293
288
|
calld->recv_message_ready = nullptr;
|
294
289
|
calld->payload_bin_delivered = true;
|
295
290
|
}
|
296
|
-
GRPC_CLOSURE_RUN(
|
291
|
+
GRPC_CLOSURE_RUN(calld->on_complete, GRPC_ERROR_REF(err));
|
297
292
|
}
|
298
293
|
|
299
|
-
static void hs_recv_message_ready(
|
300
|
-
grpc_error* err) {
|
294
|
+
static void hs_recv_message_ready(void* user_data, grpc_error* err) {
|
301
295
|
grpc_call_element* elem = (grpc_call_element*)user_data;
|
302
296
|
call_data* calld = (call_data*)elem->call_data;
|
303
297
|
if (calld->seen_path_with_query) {
|
@@ -305,15 +299,14 @@ static void hs_recv_message_ready(grpc_exec_ctx* exec_ctx, void* user_data,
|
|
305
299
|
// returned in hs_on_complete callback.
|
306
300
|
// Note that we release the call combiner here, so that other
|
307
301
|
// callbacks can run.
|
308
|
-
GRPC_CALL_COMBINER_STOP(
|
302
|
+
GRPC_CALL_COMBINER_STOP(calld->call_combiner,
|
309
303
|
"pausing recv_message_ready until on_complete");
|
310
304
|
} else {
|
311
|
-
GRPC_CLOSURE_RUN(
|
305
|
+
GRPC_CLOSURE_RUN(calld->recv_message_ready, GRPC_ERROR_REF(err));
|
312
306
|
}
|
313
307
|
}
|
314
308
|
|
315
|
-
static grpc_error* hs_mutate_op(
|
316
|
-
grpc_call_element* elem,
|
309
|
+
static grpc_error* hs_mutate_op(grpc_call_element* elem,
|
317
310
|
grpc_transport_stream_op_batch* op) {
|
318
311
|
/* grab pointers to our data from the call element */
|
319
312
|
call_data* calld = (call_data*)elem->call_data;
|
@@ -321,21 +314,19 @@ static grpc_error* hs_mutate_op(grpc_exec_ctx* exec_ctx,
|
|
321
314
|
if (op->send_initial_metadata) {
|
322
315
|
grpc_error* error = GRPC_ERROR_NONE;
|
323
316
|
static const char* error_name = "Failed sending initial metadata";
|
317
|
+
add_error(error_name, &error,
|
318
|
+
grpc_metadata_batch_add_head(
|
319
|
+
op->payload->send_initial_metadata.send_initial_metadata,
|
320
|
+
&calld->status, GRPC_MDELEM_STATUS_200));
|
321
|
+
add_error(error_name, &error,
|
322
|
+
grpc_metadata_batch_add_tail(
|
323
|
+
op->payload->send_initial_metadata.send_initial_metadata,
|
324
|
+
&calld->content_type,
|
325
|
+
GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC));
|
324
326
|
add_error(
|
325
327
|
error_name, &error,
|
326
|
-
|
327
|
-
|
328
|
-
&calld->status, GRPC_MDELEM_STATUS_200));
|
329
|
-
add_error(
|
330
|
-
error_name, &error,
|
331
|
-
grpc_metadata_batch_add_tail(
|
332
|
-
exec_ctx, op->payload->send_initial_metadata.send_initial_metadata,
|
333
|
-
&calld->content_type,
|
334
|
-
GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC));
|
335
|
-
add_error(error_name, &error,
|
336
|
-
server_filter_outgoing_metadata(
|
337
|
-
exec_ctx, elem,
|
338
|
-
op->payload->send_initial_metadata.send_initial_metadata));
|
328
|
+
server_filter_outgoing_metadata(
|
329
|
+
elem, op->payload->send_initial_metadata.send_initial_metadata));
|
339
330
|
if (error != GRPC_ERROR_NONE) return error;
|
340
331
|
}
|
341
332
|
|
@@ -367,8 +358,7 @@ static grpc_error* hs_mutate_op(grpc_exec_ctx* exec_ctx,
|
|
367
358
|
|
368
359
|
if (op->send_trailing_metadata) {
|
369
360
|
grpc_error* error = server_filter_outgoing_metadata(
|
370
|
-
|
371
|
-
op->payload->send_trailing_metadata.send_trailing_metadata);
|
361
|
+
elem, op->payload->send_trailing_metadata.send_trailing_metadata);
|
372
362
|
if (error != GRPC_ERROR_NONE) return error;
|
373
363
|
}
|
374
364
|
|
@@ -376,23 +366,21 @@ static grpc_error* hs_mutate_op(grpc_exec_ctx* exec_ctx,
|
|
376
366
|
}
|
377
367
|
|
378
368
|
static void hs_start_transport_stream_op_batch(
|
379
|
-
|
380
|
-
grpc_transport_stream_op_batch* op) {
|
369
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
|
381
370
|
call_data* calld = (call_data*)elem->call_data;
|
382
371
|
GPR_TIMER_BEGIN("hs_start_transport_stream_op_batch", 0);
|
383
|
-
grpc_error* error = hs_mutate_op(
|
372
|
+
grpc_error* error = hs_mutate_op(elem, op);
|
384
373
|
if (error != GRPC_ERROR_NONE) {
|
385
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
374
|
+
grpc_transport_stream_op_batch_finish_with_failure(op, error,
|
386
375
|
calld->call_combiner);
|
387
376
|
} else {
|
388
|
-
grpc_call_next_op(
|
377
|
+
grpc_call_next_op(elem, op);
|
389
378
|
}
|
390
379
|
GPR_TIMER_END("hs_start_transport_stream_op_batch", 0);
|
391
380
|
}
|
392
381
|
|
393
382
|
/* Constructor for call_data */
|
394
|
-
static grpc_error* init_call_elem(
|
395
|
-
grpc_call_element* elem,
|
383
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
396
384
|
const grpc_call_element_args* args) {
|
397
385
|
/* grab pointers to our data from the call element */
|
398
386
|
call_data* calld = (call_data*)elem->call_data;
|
@@ -409,24 +397,22 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
|
|
409
397
|
}
|
410
398
|
|
411
399
|
/* Destructor for call_data */
|
412
|
-
static void destroy_call_elem(
|
400
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
413
401
|
const grpc_call_final_info* final_info,
|
414
402
|
grpc_closure* ignored) {
|
415
403
|
call_data* calld = (call_data*)elem->call_data;
|
416
|
-
grpc_slice_buffer_destroy_internal(
|
404
|
+
grpc_slice_buffer_destroy_internal(&calld->read_slice_buffer);
|
417
405
|
}
|
418
406
|
|
419
407
|
/* Constructor for channel_data */
|
420
|
-
static grpc_error* init_channel_elem(
|
421
|
-
grpc_channel_element* elem,
|
408
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
422
409
|
grpc_channel_element_args* args) {
|
423
410
|
GPR_ASSERT(!args->is_last);
|
424
411
|
return GRPC_ERROR_NONE;
|
425
412
|
}
|
426
413
|
|
427
414
|
/* Destructor for channel data */
|
428
|
-
static void destroy_channel_elem(
|
429
|
-
grpc_channel_element* elem) {}
|
415
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {}
|
430
416
|
|
431
417
|
const grpc_channel_filter grpc_http_server_filter = {
|
432
418
|
hs_start_transport_stream_op_batch,
|
@@ -21,15 +21,7 @@
|
|
21
21
|
|
22
22
|
#include "src/core/lib/channel/channel_stack.h"
|
23
23
|
|
24
|
-
#ifdef __cplusplus
|
25
|
-
extern "C" {
|
26
|
-
#endif
|
27
|
-
|
28
24
|
/* Processes metadata on the client side for HTTP2 transports */
|
29
25
|
extern const grpc_channel_filter grpc_http_server_filter;
|
30
26
|
|
31
|
-
#ifdef __cplusplus
|
32
|
-
}
|
33
|
-
#endif
|
34
|
-
|
35
27
|
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H */
|
@@ -31,7 +31,8 @@
|
|
31
31
|
#include "src/core/lib/slice/slice_internal.h"
|
32
32
|
#include "src/core/lib/transport/static_metadata.h"
|
33
33
|
|
34
|
-
|
34
|
+
namespace {
|
35
|
+
struct call_data {
|
35
36
|
intptr_t id; /**< an id unique to the call */
|
36
37
|
bool have_trailing_md_string;
|
37
38
|
grpc_slice trailing_md_string;
|
@@ -48,14 +49,14 @@ typedef struct call_data {
|
|
48
49
|
/* to get notified of the availability of the incoming initial metadata. */
|
49
50
|
grpc_closure on_initial_md_ready;
|
50
51
|
grpc_metadata_batch* recv_initial_metadata;
|
51
|
-
}
|
52
|
+
};
|
52
53
|
|
53
|
-
|
54
|
+
struct channel_data {
|
54
55
|
intptr_t id; /**< an id unique to the channel */
|
55
|
-
}
|
56
|
+
};
|
57
|
+
} // namespace
|
56
58
|
|
57
|
-
static void on_initial_md_ready(
|
58
|
-
grpc_error* err) {
|
59
|
+
static void on_initial_md_ready(void* user_data, grpc_error* err) {
|
59
60
|
grpc_call_element* elem = (grpc_call_element*)user_data;
|
60
61
|
call_data* calld = (call_data*)elem->call_data;
|
61
62
|
|
@@ -73,20 +74,19 @@ static void on_initial_md_ready(grpc_exec_ctx* exec_ctx, void* user_data,
|
|
73
74
|
GRPC_MDVALUE(calld->recv_initial_metadata->idx.named.lb_token->md));
|
74
75
|
calld->have_initial_md_string = true;
|
75
76
|
grpc_metadata_batch_remove(
|
76
|
-
|
77
|
+
calld->recv_initial_metadata,
|
77
78
|
calld->recv_initial_metadata->idx.named.lb_token);
|
78
79
|
}
|
79
80
|
} else {
|
80
81
|
GRPC_ERROR_REF(err);
|
81
82
|
}
|
82
83
|
calld->ops_recv_initial_metadata_ready->cb(
|
83
|
-
|
84
|
+
calld->ops_recv_initial_metadata_ready->cb_arg, err);
|
84
85
|
GRPC_ERROR_UNREF(err);
|
85
86
|
}
|
86
87
|
|
87
88
|
/* Constructor for call_data */
|
88
|
-
static grpc_error* init_call_elem(
|
89
|
-
grpc_call_element* elem,
|
89
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
90
90
|
const grpc_call_element_args* args) {
|
91
91
|
call_data* calld = (call_data*)elem->call_data;
|
92
92
|
calld->id = (intptr_t)args->call_stack;
|
@@ -108,7 +108,7 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
|
|
108
108
|
}
|
109
109
|
|
110
110
|
/* Destructor for call_data */
|
111
|
-
static void destroy_call_elem(
|
111
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
112
112
|
const grpc_call_final_info* final_info,
|
113
113
|
grpc_closure* ignored) {
|
114
114
|
call_data* calld = (call_data*)elem->call_data;
|
@@ -125,19 +125,18 @@ static void destroy_call_elem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
|
125
125
|
*/
|
126
126
|
|
127
127
|
if (calld->have_initial_md_string) {
|
128
|
-
grpc_slice_unref_internal(
|
128
|
+
grpc_slice_unref_internal(calld->initial_md_string);
|
129
129
|
}
|
130
130
|
if (calld->have_trailing_md_string) {
|
131
|
-
grpc_slice_unref_internal(
|
131
|
+
grpc_slice_unref_internal(calld->trailing_md_string);
|
132
132
|
}
|
133
133
|
if (calld->have_service_method) {
|
134
|
-
grpc_slice_unref_internal(
|
134
|
+
grpc_slice_unref_internal(calld->service_method);
|
135
135
|
}
|
136
136
|
}
|
137
137
|
|
138
138
|
/* Constructor for channel_data */
|
139
|
-
static grpc_error* init_channel_elem(
|
140
|
-
grpc_channel_element* elem,
|
139
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
141
140
|
grpc_channel_element_args* args) {
|
142
141
|
GPR_ASSERT(!args->is_last);
|
143
142
|
|
@@ -158,8 +157,7 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
158
157
|
}
|
159
158
|
|
160
159
|
/* Destructor for channel data */
|
161
|
-
static void destroy_channel_elem(
|
162
|
-
grpc_channel_element* elem) {
|
160
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {
|
163
161
|
/* TODO(dgq): do something with the data
|
164
162
|
channel_data *chand = elem->channel_data;
|
165
163
|
grpc_load_reporting_call_data lr_call_data = {
|
@@ -173,8 +171,7 @@ static void destroy_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
173
171
|
*/
|
174
172
|
}
|
175
173
|
|
176
|
-
static grpc_filtered_mdelem lr_trailing_md_filter(
|
177
|
-
void* user_data,
|
174
|
+
static grpc_filtered_mdelem lr_trailing_md_filter(void* user_data,
|
178
175
|
grpc_mdelem md) {
|
179
176
|
grpc_call_element* elem = (grpc_call_element*)user_data;
|
180
177
|
call_data* calld = (call_data*)elem->call_data;
|
@@ -186,8 +183,7 @@ static grpc_filtered_mdelem lr_trailing_md_filter(grpc_exec_ctx* exec_ctx,
|
|
186
183
|
}
|
187
184
|
|
188
185
|
static void lr_start_transport_stream_op_batch(
|
189
|
-
|
190
|
-
grpc_transport_stream_op_batch* op) {
|
186
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
|
191
187
|
GPR_TIMER_BEGIN("lr_start_transport_stream_op_batch", 0);
|
192
188
|
call_data* calld = (call_data*)elem->call_data;
|
193
189
|
|
@@ -203,12 +199,11 @@ static void lr_start_transport_stream_op_batch(
|
|
203
199
|
GRPC_LOG_IF_ERROR(
|
204
200
|
"grpc_metadata_batch_filter",
|
205
201
|
grpc_metadata_batch_filter(
|
206
|
-
exec_ctx,
|
207
202
|
op->payload->send_trailing_metadata.send_trailing_metadata,
|
208
203
|
lr_trailing_md_filter, elem,
|
209
204
|
"LR trailing metadata filtering error"));
|
210
205
|
}
|
211
|
-
grpc_call_next_op(
|
206
|
+
grpc_call_next_op(elem, op);
|
212
207
|
|
213
208
|
GPR_TIMER_END("lr_start_transport_stream_op_batch", 0);
|
214
209
|
}
|