grpc 1.8.7 → 1.9.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +549 -325
- data/include/grpc/impl/codegen/grpc_types.h +1 -2
- data/include/grpc/impl/codegen/port_platform.h +46 -5
- data/include/grpc/impl/codegen/slice.h +1 -2
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice_buffer.h +1 -2
- data/include/grpc/support/log.h +4 -2
- data/include/grpc/support/thd.h +4 -1
- data/include/grpc/support/tls.h +6 -0
- data/include/grpc/support/tls_gcc.h +5 -40
- data/include/grpc/support/tls_msvc.h +9 -0
- data/include/grpc/support/tls_pthread.h +9 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +32 -29
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +26 -32
- data/src/core/ext/filters/client_channel/client_channel.cc +325 -356
- data/src/core/ext/filters/client_channel/client_channel.h +4 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +9 -14
- data/src/core/ext/filters/client_channel/client_channel_factory.h +7 -20
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +7 -10
- data/src/core/ext/filters/client_channel/connector.cc +6 -7
- data/src/core/ext/filters/client_channel/connector.h +6 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +38 -50
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +9 -13
- data/src/core/ext/filters/client_channel/http_proxy.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy.cc +72 -94
- data/src/core/ext/filters/client_channel/lb_policy.h +83 -92
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +474 -591
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +2 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +9 -12
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +160 -182
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -221
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +24 -35
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -20
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -15
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -9
- data/src/core/ext/filters/client_channel/parse_address.cc +1 -1
- data/src/core/ext/filters/client_channel/parse_address.h +0 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +6 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.h +6 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +13 -17
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -12
- data/src/core/ext/filters/client_channel/resolver.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver.h +14 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +27 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -11
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +53 -66
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +25 -33
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -9
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver_factory.cc +2 -3
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -12
- data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
- data/src/core/ext/filters/client_channel/resolver_registry.h +3 -12
- data/src/core/ext/filters/client_channel/retry_throttle.h +0 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +289 -301
- data/src/core/ext/filters/client_channel/subchannel.h +57 -84
- data/src/core/ext/filters/client_channel/subchannel_index.cc +30 -33
- data/src/core/ext/filters/client_channel/subchannel_index.h +4 -16
- data/src/core/ext/filters/client_channel/uri_parser.cc +13 -17
- data/src/core/ext/filters/client_channel/uri_parser.h +1 -10
- data/src/core/ext/filters/deadline/deadline_filter.cc +49 -67
- data/src/core/ext/filters/deadline/deadline_filter.h +4 -14
- data/src/core/ext/filters/http/client/http_client_filter.cc +60 -77
- data/src/core/ext/filters/http/client/http_client_filter.h +0 -8
- data/src/core/ext/filters/http/http_filters_plugin.cc +4 -6
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +63 -79
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +57 -71
- data/src/core/ext/filters/http/server/http_server_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +19 -24
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +3 -3
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -8
- data/src/core/ext/filters/max_age/max_age_filter.cc +49 -62
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -8
- data/src/core/ext/filters/message_size/message_size_filter.cc +23 -29
- data/src/core/ext/filters/message_size/message_size_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -8
- data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +33 -40
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +15 -17
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +8 -8
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +23 -28
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +50 -57
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -10
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -10
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -9
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +516 -636
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/flow_control.h +196 -53
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +31 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +63 -81
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +230 -318
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -7
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -8
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +8 -11
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +4 -13
- data/src/core/ext/transport/chttp2/transport/internal.h +51 -75
- data/src/core/ext/transport/chttp2/transport/parsing.cc +83 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -8
- data/src/core/ext/transport/chttp2/transport/varint.h +0 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +61 -65
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +177 -188
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -8
- data/src/core/lib/backoff/backoff.cc +39 -44
- data/src/core/lib/backoff/backoff.h +61 -57
- data/src/core/lib/channel/channel_args.cc +8 -10
- data/src/core/lib/channel/channel_args.h +4 -13
- data/src/core/lib/channel/channel_stack.cc +19 -27
- data/src/core/lib/channel/channel_stack.h +27 -47
- data/src/core/lib/channel/channel_stack_builder.cc +11 -14
- data/src/core/lib/channel/channel_stack_builder.h +4 -15
- data/src/core/lib/channel/connected_channel.cc +23 -36
- data/src/core/lib/channel/connected_channel.h +1 -10
- data/src/core/lib/channel/handshaker.cc +31 -40
- data/src/core/lib/channel/handshaker.h +14 -25
- data/src/core/lib/channel/handshaker_factory.cc +6 -6
- data/src/core/lib/channel/handshaker_factory.h +5 -15
- data/src/core/lib/channel/handshaker_registry.cc +9 -13
- data/src/core/lib/channel/handshaker_registry.h +2 -11
- data/src/core/lib/compression/algorithm_metadata.h +0 -8
- data/src/core/lib/compression/message_compress.cc +19 -23
- data/src/core/lib/compression/message_compress.h +2 -12
- data/src/core/lib/compression/stream_compression.cc +1 -1
- data/src/core/lib/compression/stream_compression.h +0 -8
- data/src/core/lib/compression/stream_compression_gzip.cc +12 -11
- data/src/core/lib/compression/stream_compression_gzip.h +0 -8
- data/src/core/lib/compression/stream_compression_identity.h +0 -8
- data/src/core/lib/debug/stats.cc +4 -4
- data/src/core/lib/debug/stats.h +9 -19
- data/src/core/lib/debug/stats_data.cc +85 -116
- data/src/core/lib/debug/stats_data.h +236 -312
- data/src/core/lib/debug/trace.cc +1 -1
- data/src/core/lib/debug/trace.h +0 -12
- data/src/core/lib/{support → gpr++}/abstract.h +8 -3
- data/src/core/lib/{support → gpr++}/atomic.h +5 -5
- data/src/core/lib/{support → gpr++}/atomic_with_atm.h +3 -3
- data/src/core/lib/{support → gpr++}/atomic_with_std.h +3 -3
- data/src/core/lib/gpr++/debug_location.h +52 -0
- data/src/core/lib/gpr++/inlined_vector.h +112 -0
- data/src/core/lib/{support → gpr++}/manual_constructor.h +2 -2
- data/src/core/lib/{support → gpr++}/memory.h +3 -3
- data/src/core/lib/gpr++/orphanable.h +171 -0
- data/src/core/lib/gpr++/ref_counted.h +133 -0
- data/src/core/lib/gpr++/ref_counted_ptr.h +99 -0
- data/src/core/lib/{support → gpr}/alloc.cc +0 -0
- data/src/core/lib/{support → gpr}/arena.cc +1 -1
- data/src/core/lib/{support → gpr}/arena.h +3 -11
- data/src/core/lib/{support → gpr}/atm.cc +0 -0
- data/src/core/lib/{support → gpr}/avl.cc +0 -0
- data/src/core/lib/{support → gpr}/cmdline.cc +1 -1
- data/src/core/lib/{support → gpr}/cpu_iphone.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_linux.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/env.h +3 -11
- data/src/core/lib/{support → gpr}/env_linux.cc +2 -2
- data/src/core/lib/{support → gpr}/env_posix.cc +4 -4
- data/src/core/lib/{support → gpr}/env_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.h +3 -3
- data/src/core/lib/{support → gpr}/host_port.cc +1 -1
- data/src/core/lib/{support → gpr}/log.cc +3 -3
- data/src/core/lib/{support → gpr}/log_android.cc +3 -3
- data/src/core/lib/{support → gpr}/log_linux.cc +1 -1
- data/src/core/lib/{support → gpr}/log_posix.cc +5 -5
- data/src/core/lib/{support → gpr}/log_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/mpscq.cc +1 -1
- data/src/core/lib/{support → gpr}/mpscq.h +3 -10
- data/src/core/lib/{support → gpr}/murmur_hash.cc +1 -1
- data/src/core/lib/{support → gpr}/murmur_hash.h +3 -11
- data/src/core/lib/{support → gpr}/spinlock.h +3 -3
- data/src/core/lib/{support → gpr}/string.cc +1 -1
- data/src/core/lib/{support → gpr}/string.h +3 -10
- data/src/core/lib/{support → gpr}/string_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/string_util_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/string_windows.cc +1 -1
- data/src/core/lib/{support → gpr}/string_windows.h +3 -11
- data/src/core/lib/{support → gpr}/subprocess_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/subprocess_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/sync.cc +0 -0
- data/src/core/lib/{support → gpr}/sync_posix.cc +10 -1
- data/src/core/lib/{support → gpr}/sync_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/thd.cc +0 -0
- data/src/core/lib/{support → gpr}/thd_internal.h +3 -3
- data/src/core/lib/{support → gpr}/thd_posix.cc +18 -2
- data/src/core/lib/{support → gpr}/thd_windows.cc +2 -1
- data/src/core/lib/{support → gpr}/time.cc +0 -0
- data/src/core/lib/{support → gpr}/time_posix.cc +2 -4
- data/src/core/lib/{support → gpr}/time_precise.cc +1 -1
- data/src/core/lib/{support → gpr}/time_precise.h +3 -11
- data/src/core/lib/{support → gpr}/time_windows.cc +1 -3
- data/src/core/lib/{support → gpr}/tls_pthread.cc +0 -0
- data/src/core/lib/{support → gpr}/tmpfile.h +3 -11
- data/src/core/lib/{support → gpr}/tmpfile_msys.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_posix.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/wrap_memcpy.cc +0 -0
- data/src/core/lib/http/format_request.cc +1 -1
- data/src/core/lib/http/format_request.h +0 -8
- data/src/core/lib/http/httpcli.cc +55 -74
- data/src/core/lib/http/httpcli.h +13 -22
- data/src/core/lib/http/httpcli_security_connector.cc +27 -33
- data/src/core/lib/http/parser.h +0 -8
- data/src/core/lib/iomgr/block_annotate.h +10 -17
- data/src/core/lib/iomgr/call_combiner.cc +14 -17
- data/src/core/lib/iomgr/call_combiner.h +16 -34
- data/src/core/lib/iomgr/closure.h +24 -37
- data/src/core/lib/iomgr/combiner.cc +62 -66
- data/src/core/lib/iomgr/combiner.h +6 -16
- data/src/core/lib/iomgr/endpoint.cc +15 -21
- data/src/core/lib/iomgr/endpoint.h +16 -33
- data/src/core/lib/iomgr/endpoint_pair.h +0 -8
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +4 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +4 -6
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error.h +4 -9
- data/src/core/lib/iomgr/error_internal.h +0 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +110 -117
- data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollex_linux.cc +111 -141
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +83 -109
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -10
- data/src/core/lib/iomgr/ev_poll_posix.cc +103 -125
- data/src/core/lib/iomgr/ev_poll_posix.h +0 -8
- data/src/core/lib/iomgr/ev_posix.cc +35 -50
- data/src/core/lib/iomgr/ev_posix.h +27 -53
- data/src/core/lib/iomgr/exec_ctx.cc +46 -78
- data/src/core/lib/iomgr/exec_ctx.h +127 -60
- data/src/core/lib/iomgr/executor.cc +34 -38
- data/src/core/lib/iomgr/executor.h +3 -11
- data/src/core/lib/iomgr/fork_posix.cc +13 -12
- data/src/core/lib/iomgr/gethostname.h +0 -8
- data/src/core/lib/iomgr/gethostname_sysconf.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +14 -16
- data/src/core/lib/iomgr/iocp_windows.h +1 -10
- data/src/core/lib/iomgr/iomgr.cc +60 -59
- data/src/core/lib/iomgr/iomgr.h +3 -12
- data/src/core/lib/iomgr/iomgr_internal.h +0 -8
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -3
- data/src/core/lib/iomgr/iomgr_uv.h +0 -8
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +0 -8
- data/src/core/lib/iomgr/lockfree_event.cc +7 -8
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/polling_entity.cc +6 -10
- data/src/core/lib/iomgr/polling_entity.h +2 -11
- data/src/core/lib/iomgr/pollset.h +4 -13
- data/src/core/lib/iomgr/pollset_set.h +5 -18
- data/src/core/lib/iomgr/pollset_set_uv.cc +5 -10
- data/src/core/lib/iomgr/pollset_set_windows.cc +5 -10
- data/src/core/lib/iomgr/pollset_uv.cc +8 -9
- data/src/core/lib/iomgr/pollset_uv.h +0 -8
- data/src/core/lib/iomgr/pollset_windows.cc +14 -15
- data/src/core/lib/iomgr/pollset_windows.h +0 -8
- data/src/core/lib/iomgr/port.h +6 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -10
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -12
- data/src/core/lib/iomgr/resolve_address_uv.cc +7 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -9
- data/src/core/lib/iomgr/resource_quota.cc +77 -107
- data/src/core/lib/iomgr/resource_quota.h +8 -25
- data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.h +0 -8
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -9
- data/src/core/lib/iomgr/socket_utils.h +0 -8
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +0 -8
- data/src/core/lib/iomgr/socket_windows.cc +8 -11
- data/src/core/lib/iomgr/socket_windows.h +3 -14
- data/src/core/lib/iomgr/tcp_client.h +1 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +94 -78
- data/src/core/lib/iomgr/tcp_client_posix.h +36 -8
- data/src/core/lib/iomgr/tcp_client_uv.cc +16 -23
- data/src/core/lib/iomgr/tcp_client_windows.cc +22 -25
- data/src/core/lib/iomgr/tcp_posix.cc +131 -153
- data/src/core/lib/iomgr/tcp_posix.h +3 -12
- data/src/core/lib/iomgr/tcp_server.h +6 -17
- data/src/core/lib/iomgr/tcp_server_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_uv.cc +23 -34
- data/src/core/lib/iomgr/tcp_server_windows.cc +24 -34
- data/src/core/lib/iomgr/tcp_uv.cc +42 -56
- data/src/core/lib/iomgr/tcp_uv.h +0 -8
- data/src/core/lib/iomgr/tcp_windows.cc +43 -50
- data/src/core/lib/iomgr/tcp_windows.h +1 -9
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -8
- data/src/core/lib/iomgr/timer.h +6 -15
- data/src/core/lib/iomgr/timer_generic.cc +22 -27
- data/src/core/lib/iomgr/timer_heap.h +0 -8
- data/src/core/lib/iomgr/timer_manager.cc +17 -19
- data/src/core/lib/iomgr/timer_manager.h +0 -8
- data/src/core/lib/iomgr/timer_uv.cc +12 -14
- data/src/core/lib/iomgr/udp_server.cc +148 -54
- data/src/core/lib/iomgr/udp_server.h +16 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.h +12 -20
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -8
- data/src/core/lib/json/json.h +0 -8
- data/src/core/lib/json/json_reader.h +0 -8
- data/src/core/lib/json/json_writer.h +0 -8
- data/src/core/lib/profiling/basic_timers.cc +3 -2
- data/src/core/lib/profiling/timers.h +0 -8
- data/src/core/lib/security/context/security_context.cc +9 -10
- data/src/core/lib/security/context/security_context.h +0 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +23 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -8
- data/src/core/lib/security/credentials/credentials.cc +33 -42
- data/src/core/lib/security/credentials/credentials.h +24 -43
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +16 -22
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -8
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +28 -34
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -13
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +0 -8
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -20
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -10
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +56 -72
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -17
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +47 -55
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +23 -28
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -13
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -8
- data/src/core/lib/security/transport/auth_filters.h +0 -8
- data/src/core/lib/security/transport/client_auth_filter.cc +45 -54
- data/src/core/lib/security/transport/lb_targets_info.cc +2 -2
- data/src/core/lib/security/transport/lb_targets_info.h +0 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -68
- data/src/core/lib/security/transport/secure_endpoint.h +0 -8
- data/src/core/lib/security/transport/security_connector.cc +62 -86
- data/src/core/lib/security/transport/security_connector.h +22 -39
- data/src/core/lib/security/transport/security_handshaker.cc +83 -106
- data/src/core/lib/security/transport/security_handshaker.h +1 -10
- data/src/core/lib/security/transport/server_auth_filter.cc +31 -38
- data/src/core/lib/security/transport/tsi_error.h +0 -8
- data/src/core/lib/security/util/json_util.h +0 -8
- data/src/core/lib/slice/b64.cc +5 -6
- data/src/core/lib/slice/b64.h +3 -12
- data/src/core/lib/slice/percent_encoding.h +0 -8
- data/src/core/lib/slice/slice.cc +8 -9
- data/src/core/lib/slice/slice_buffer.cc +11 -16
- data/src/core/lib/slice/slice_hash_table.cc +5 -7
- data/src/core/lib/slice/slice_hash_table.h +2 -12
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +4 -15
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/slice/slice_string_helpers.h +1 -9
- data/src/core/lib/surface/alarm.cc +11 -14
- data/src/core/lib/surface/alarm_internal.h +0 -8
- data/src/core/lib/surface/byte_buffer.cc +2 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +7 -9
- data/src/core/lib/surface/call.cc +198 -241
- data/src/core/lib/surface/call.h +9 -23
- data/src/core/lib/surface/call_details.cc +3 -4
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_test_only.h +0 -8
- data/src/core/lib/surface/channel.cc +53 -64
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -12
- data/src/core/lib/surface/channel_ping.cc +7 -9
- data/src/core/lib/surface/channel_stack_type.h +0 -8
- data/src/core/lib/surface/completion_queue.cc +158 -176
- data/src/core/lib/surface/completion_queue.h +9 -20
- data/src/core/lib/surface/completion_queue_factory.h +0 -8
- data/src/core/lib/surface/event_string.cc +1 -1
- data/src/core/lib/surface/event_string.h +0 -8
- data/src/core/lib/surface/init.cc +27 -25
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +30 -33
- data/src/core/lib/surface/lame_client.h +0 -8
- data/src/core/lib/surface/server.cc +151 -203
- data/src/core/lib/surface/server.h +7 -16
- data/src/core/lib/surface/validate_metadata.h +0 -8
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +1 -1
- data/src/core/lib/transport/byte_stream.cc +24 -38
- data/src/core/lib/transport/byte_stream.h +10 -25
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/connectivity_state.h +4 -14
- data/src/core/lib/transport/error_utils.cc +6 -6
- data/src/core/lib/transport/error_utils.h +2 -11
- data/src/core/lib/transport/metadata.cc +21 -23
- data/src/core/lib/transport/metadata.h +8 -20
- data/src/core/lib/transport/metadata_batch.cc +34 -45
- data/src/core/lib/transport/metadata_batch.h +18 -32
- data/src/core/lib/transport/service_config.cc +11 -15
- data/src/core/lib/transport/service_config.h +3 -13
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/static_metadata.h +1 -7
- data/src/core/lib/transport/status_conversion.cc +2 -3
- data/src/core/lib/transport/status_conversion.h +1 -10
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -9
- data/src/core/lib/transport/transport.cc +36 -50
- data/src/core/lib/transport/transport.h +28 -30
- data/src/core/lib/transport/transport_impl.h +12 -23
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -34
- data/src/core/tsi/fake_transport_security.cc +7 -10
- data/src/core/tsi/fake_transport_security.h +0 -8
- data/src/core/tsi/gts_transport_security.cc +2 -2
- data/src/core/tsi/gts_transport_security.h +0 -8
- data/src/core/tsi/ssl_transport_security.cc +3 -0
- data/src/core/tsi/ssl_transport_security.h +0 -8
- data/src/core/tsi/ssl_types.h +0 -8
- data/src/core/tsi/transport_security.h +1 -9
- data/src/core/tsi/transport_security_adapter.h +0 -8
- data/src/core/tsi/transport_security_grpc.cc +11 -18
- data/src/core/tsi/transport_security_grpc.h +9 -21
- data/src/core/tsi/transport_security_interface.h +0 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -30
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -48
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_connection_spec.rb +2 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +2 -2
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/interceptor_registry_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +12 -12
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +3 -2
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +9 -9
- data/src/ruby/spec/support/helpers.rb +35 -1
- metadata +68 -66
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +0 -26
- data/include/grpc/support/histogram.h +0 -64
- data/src/core/lib/support/histogram.cc +0 -227
@@ -22,15 +22,7 @@
|
|
22
22
|
#include "src/core/ext/filters/load_reporting/server_load_reporting_plugin.h"
|
23
23
|
#include "src/core/lib/channel/channel_stack.h"
|
24
24
|
|
25
|
-
#ifdef __cplusplus
|
26
|
-
extern "C" {
|
27
|
-
#endif
|
28
|
-
|
29
25
|
extern const grpc_channel_filter grpc_server_load_reporting_filter;
|
30
26
|
|
31
|
-
#ifdef __cplusplus
|
32
|
-
}
|
33
|
-
#endif
|
34
|
-
|
35
27
|
#endif /* GRPC_CORE_EXT_FILTERS_LOAD_REPORTING_SERVER_LOAD_REPORTING_FILTER_H \
|
36
28
|
*/
|
@@ -38,7 +38,7 @@ static bool is_load_reporting_enabled(const grpc_channel_args* a) {
|
|
38
38
|
}
|
39
39
|
|
40
40
|
static bool maybe_add_server_load_reporting_filter(
|
41
|
-
|
41
|
+
grpc_channel_stack_builder* builder, void* arg) {
|
42
42
|
const grpc_channel_args* args =
|
43
43
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
44
44
|
const grpc_channel_filter* filter = (const grpc_channel_filter*)arg;
|
@@ -61,10 +61,10 @@ grpc_arg grpc_load_reporting_enable_arg() {
|
|
61
61
|
|
62
62
|
/* Plugin registration */
|
63
63
|
|
64
|
-
|
64
|
+
void grpc_server_load_reporting_plugin_init(void) {
|
65
65
|
grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL, INT_MAX,
|
66
66
|
maybe_add_server_load_reporting_filter,
|
67
67
|
(void*)&grpc_server_load_reporting_filter);
|
68
68
|
}
|
69
69
|
|
70
|
-
|
70
|
+
void grpc_server_load_reporting_plugin_shutdown() {}
|
@@ -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
|
/** Identifiers for the invocation point of the users LR callback */
|
31
27
|
typedef enum grpc_load_reporting_source {
|
32
28
|
GRPC_LR_POINT_UNKNOWN = 0,
|
@@ -59,9 +55,5 @@ typedef struct grpc_load_reporting_call_data {
|
|
59
55
|
/** Return a \a grpc_arg enabling load reporting */
|
60
56
|
grpc_arg grpc_load_reporting_enable_arg();
|
61
57
|
|
62
|
-
#ifdef __cplusplus
|
63
|
-
}
|
64
|
-
#endif
|
65
|
-
|
66
58
|
#endif /* GRPC_CORE_EXT_FILTERS_LOAD_REPORTING_SERVER_LOAD_REPORTING_PLUGIN_H \
|
67
59
|
*/
|
@@ -37,7 +37,8 @@
|
|
37
37
|
#define MAX_CONNECTION_IDLE_INTEGER_OPTIONS \
|
38
38
|
{ DEFAULT_MAX_CONNECTION_IDLE_MS, 1, INT_MAX }
|
39
39
|
|
40
|
-
|
40
|
+
namespace {
|
41
|
+
struct channel_data {
|
41
42
|
/* We take a reference to the channel stack for the timer callback */
|
42
43
|
grpc_channel_stack* channel_stack;
|
43
44
|
/* Guards access to max_age_timer, max_age_timer_pending, max_age_grace_timer
|
@@ -84,77 +85,74 @@ typedef struct channel_data {
|
|
84
85
|
grpc_connectivity_state connectivity_state;
|
85
86
|
/* Number of active calls */
|
86
87
|
gpr_atm call_count;
|
87
|
-
}
|
88
|
+
};
|
89
|
+
} // namespace
|
88
90
|
|
89
91
|
/* Increase the nubmer of active calls. Before the increasement, if there are no
|
90
92
|
calls, the max_idle_timer should be cancelled. */
|
91
|
-
static void increase_call_count(
|
93
|
+
static void increase_call_count(channel_data* chand) {
|
92
94
|
if (gpr_atm_full_fetch_add(&chand->call_count, 1) == 0) {
|
93
|
-
grpc_timer_cancel(
|
95
|
+
grpc_timer_cancel(&chand->max_idle_timer);
|
94
96
|
}
|
95
97
|
}
|
96
98
|
|
97
99
|
/* Decrease the nubmer of active calls. After the decrement, if there are no
|
98
100
|
calls, the max_idle_timer should be started. */
|
99
|
-
static void decrease_call_count(
|
101
|
+
static void decrease_call_count(channel_data* chand) {
|
100
102
|
if (gpr_atm_full_fetch_add(&chand->call_count, -1) == 1) {
|
101
103
|
GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_idle_timer");
|
102
|
-
grpc_timer_init(
|
103
|
-
|
104
|
-
|
104
|
+
grpc_timer_init(
|
105
|
+
&chand->max_idle_timer,
|
106
|
+
grpc_core::ExecCtx::Get()->Now() + chand->max_connection_idle,
|
107
|
+
&chand->close_max_idle_channel);
|
105
108
|
}
|
106
109
|
}
|
107
110
|
|
108
|
-
static void start_max_idle_timer_after_init(
|
109
|
-
grpc_error* error) {
|
111
|
+
static void start_max_idle_timer_after_init(void* arg, grpc_error* error) {
|
110
112
|
channel_data* chand = (channel_data*)arg;
|
111
113
|
/* Decrease call_count. If there are no active calls at this time,
|
112
114
|
max_idle_timer will start here. If the number of active calls is not 0,
|
113
115
|
max_idle_timer will start after all the active calls end. */
|
114
|
-
decrease_call_count(
|
115
|
-
GRPC_CHANNEL_STACK_UNREF(
|
116
|
+
decrease_call_count(chand);
|
117
|
+
GRPC_CHANNEL_STACK_UNREF(chand->channel_stack,
|
116
118
|
"max_age start_max_idle_timer_after_init");
|
117
119
|
}
|
118
120
|
|
119
|
-
static void start_max_age_timer_after_init(
|
120
|
-
grpc_error* error) {
|
121
|
+
static void start_max_age_timer_after_init(void* arg, grpc_error* error) {
|
121
122
|
channel_data* chand = (channel_data*)arg;
|
122
123
|
gpr_mu_lock(&chand->max_age_timer_mu);
|
123
124
|
chand->max_age_timer_pending = true;
|
124
125
|
GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_timer");
|
125
|
-
grpc_timer_init(
|
126
|
-
|
126
|
+
grpc_timer_init(&chand->max_age_timer,
|
127
|
+
grpc_core::ExecCtx::Get()->Now() + chand->max_connection_age,
|
127
128
|
&chand->close_max_age_channel);
|
128
129
|
gpr_mu_unlock(&chand->max_age_timer_mu);
|
129
130
|
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
130
131
|
op->on_connectivity_state_change = &chand->channel_connectivity_changed;
|
131
132
|
op->connectivity_state = &chand->connectivity_state;
|
132
|
-
grpc_channel_next_op(
|
133
|
-
|
134
|
-
GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->channel_stack,
|
133
|
+
grpc_channel_next_op(grpc_channel_stack_element(chand->channel_stack, 0), op);
|
134
|
+
GRPC_CHANNEL_STACK_UNREF(chand->channel_stack,
|
135
135
|
"max_age start_max_age_timer_after_init");
|
136
136
|
}
|
137
137
|
|
138
|
-
static void start_max_age_grace_timer_after_goaway_op(
|
139
|
-
void* arg,
|
138
|
+
static void start_max_age_grace_timer_after_goaway_op(void* arg,
|
140
139
|
grpc_error* error) {
|
141
140
|
channel_data* chand = (channel_data*)arg;
|
142
141
|
gpr_mu_lock(&chand->max_age_timer_mu);
|
143
142
|
chand->max_age_grace_timer_pending = true;
|
144
143
|
GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_grace_timer");
|
145
144
|
grpc_timer_init(
|
146
|
-
|
145
|
+
&chand->max_age_grace_timer,
|
147
146
|
chand->max_connection_age_grace == GRPC_MILLIS_INF_FUTURE
|
148
147
|
? GRPC_MILLIS_INF_FUTURE
|
149
|
-
:
|
148
|
+
: grpc_core::ExecCtx::Get()->Now() + chand->max_connection_age_grace,
|
150
149
|
&chand->force_close_max_age_channel);
|
151
150
|
gpr_mu_unlock(&chand->max_age_timer_mu);
|
152
|
-
GRPC_CHANNEL_STACK_UNREF(
|
151
|
+
GRPC_CHANNEL_STACK_UNREF(chand->channel_stack,
|
153
152
|
"max_age start_max_age_grace_timer_after_goaway_op");
|
154
153
|
}
|
155
154
|
|
156
|
-
static void close_max_idle_channel(
|
157
|
-
grpc_error* error) {
|
155
|
+
static void close_max_idle_channel(void* arg, grpc_error* error) {
|
158
156
|
channel_data* chand = (channel_data*)arg;
|
159
157
|
if (error == GRPC_ERROR_NONE) {
|
160
158
|
/* Prevent the max idle timer from being set again */
|
@@ -165,16 +163,14 @@ static void close_max_idle_channel(grpc_exec_ctx* exec_ctx, void* arg,
|
|
165
163
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_NO_ERROR);
|
166
164
|
grpc_channel_element* elem =
|
167
165
|
grpc_channel_stack_element(chand->channel_stack, 0);
|
168
|
-
elem->filter->start_transport_op(
|
166
|
+
elem->filter->start_transport_op(elem, op);
|
169
167
|
} else if (error != GRPC_ERROR_CANCELLED) {
|
170
168
|
GRPC_LOG_IF_ERROR("close_max_idle_channel", error);
|
171
169
|
}
|
172
|
-
GRPC_CHANNEL_STACK_UNREF(
|
173
|
-
"max_age max_idle_timer");
|
170
|
+
GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_idle_timer");
|
174
171
|
}
|
175
172
|
|
176
|
-
static void close_max_age_channel(
|
177
|
-
grpc_error* error) {
|
173
|
+
static void close_max_age_channel(void* arg, grpc_error* error) {
|
178
174
|
channel_data* chand = (channel_data*)arg;
|
179
175
|
gpr_mu_lock(&chand->max_age_timer_mu);
|
180
176
|
chand->max_age_timer_pending = false;
|
@@ -189,16 +185,14 @@ static void close_max_age_channel(grpc_exec_ctx* exec_ctx, void* arg,
|
|
189
185
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_NO_ERROR);
|
190
186
|
grpc_channel_element* elem =
|
191
187
|
grpc_channel_stack_element(chand->channel_stack, 0);
|
192
|
-
elem->filter->start_transport_op(
|
188
|
+
elem->filter->start_transport_op(elem, op);
|
193
189
|
} else if (error != GRPC_ERROR_CANCELLED) {
|
194
190
|
GRPC_LOG_IF_ERROR("close_max_age_channel", error);
|
195
191
|
}
|
196
|
-
GRPC_CHANNEL_STACK_UNREF(
|
197
|
-
"max_age max_age_timer");
|
192
|
+
GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_age_timer");
|
198
193
|
}
|
199
194
|
|
200
|
-
static void force_close_max_age_channel(
|
201
|
-
grpc_error* error) {
|
195
|
+
static void force_close_max_age_channel(void* arg, grpc_error* error) {
|
202
196
|
channel_data* chand = (channel_data*)arg;
|
203
197
|
gpr_mu_lock(&chand->max_age_timer_mu);
|
204
198
|
chand->max_age_grace_timer_pending = false;
|
@@ -209,38 +203,36 @@ static void force_close_max_age_channel(grpc_exec_ctx* exec_ctx, void* arg,
|
|
209
203
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel reaches max age");
|
210
204
|
grpc_channel_element* elem =
|
211
205
|
grpc_channel_stack_element(chand->channel_stack, 0);
|
212
|
-
elem->filter->start_transport_op(
|
206
|
+
elem->filter->start_transport_op(elem, op);
|
213
207
|
} else if (error != GRPC_ERROR_CANCELLED) {
|
214
208
|
GRPC_LOG_IF_ERROR("force_close_max_age_channel", error);
|
215
209
|
}
|
216
|
-
GRPC_CHANNEL_STACK_UNREF(
|
217
|
-
"max_age max_age_grace_timer");
|
210
|
+
GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_age_grace_timer");
|
218
211
|
}
|
219
212
|
|
220
|
-
static void channel_connectivity_changed(
|
221
|
-
grpc_error* error) {
|
213
|
+
static void channel_connectivity_changed(void* arg, grpc_error* error) {
|
222
214
|
channel_data* chand = (channel_data*)arg;
|
223
215
|
if (chand->connectivity_state != GRPC_CHANNEL_SHUTDOWN) {
|
224
216
|
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
225
217
|
op->on_connectivity_state_change = &chand->channel_connectivity_changed;
|
226
218
|
op->connectivity_state = &chand->connectivity_state;
|
227
|
-
grpc_channel_next_op(
|
228
|
-
|
219
|
+
grpc_channel_next_op(grpc_channel_stack_element(chand->channel_stack, 0),
|
220
|
+
op);
|
229
221
|
} else {
|
230
222
|
gpr_mu_lock(&chand->max_age_timer_mu);
|
231
223
|
if (chand->max_age_timer_pending) {
|
232
|
-
grpc_timer_cancel(
|
224
|
+
grpc_timer_cancel(&chand->max_age_timer);
|
233
225
|
chand->max_age_timer_pending = false;
|
234
226
|
}
|
235
227
|
if (chand->max_age_grace_timer_pending) {
|
236
|
-
grpc_timer_cancel(
|
228
|
+
grpc_timer_cancel(&chand->max_age_grace_timer);
|
237
229
|
chand->max_age_grace_timer_pending = false;
|
238
230
|
}
|
239
231
|
gpr_mu_unlock(&chand->max_age_timer_mu);
|
240
232
|
/* If there are no active calls, this increasement will cancel
|
241
233
|
max_idle_timer, and prevent max_idle_timer from being started in the
|
242
234
|
future. */
|
243
|
-
increase_call_count(
|
235
|
+
increase_call_count(chand);
|
244
236
|
}
|
245
237
|
}
|
246
238
|
|
@@ -263,25 +255,23 @@ add_random_max_connection_age_jitter_and_convert_to_grpc_millis(int value) {
|
|
263
255
|
}
|
264
256
|
|
265
257
|
/* Constructor for call_data. */
|
266
|
-
static grpc_error* init_call_elem(
|
267
|
-
grpc_call_element* elem,
|
258
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
268
259
|
const grpc_call_element_args* args) {
|
269
260
|
channel_data* chand = (channel_data*)elem->channel_data;
|
270
|
-
increase_call_count(
|
261
|
+
increase_call_count(chand);
|
271
262
|
return GRPC_ERROR_NONE;
|
272
263
|
}
|
273
264
|
|
274
265
|
/* Destructor for call_data. */
|
275
|
-
static void destroy_call_elem(
|
266
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
276
267
|
const grpc_call_final_info* final_info,
|
277
268
|
grpc_closure* ignored) {
|
278
269
|
channel_data* chand = (channel_data*)elem->channel_data;
|
279
|
-
decrease_call_count(
|
270
|
+
decrease_call_count(chand);
|
280
271
|
}
|
281
272
|
|
282
273
|
/* Constructor for channel_data. */
|
283
|
-
static grpc_error* init_channel_elem(
|
284
|
-
grpc_channel_element* elem,
|
274
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
285
275
|
grpc_channel_element_args* args) {
|
286
276
|
channel_data* chand = (channel_data*)elem->channel_data;
|
287
277
|
gpr_mu_init(&chand->max_age_timer_mu);
|
@@ -351,8 +341,7 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
351
341
|
initialization is done. */
|
352
342
|
GRPC_CHANNEL_STACK_REF(chand->channel_stack,
|
353
343
|
"max_age start_max_age_timer_after_init");
|
354
|
-
GRPC_CLOSURE_SCHED(
|
355
|
-
GRPC_ERROR_NONE);
|
344
|
+
GRPC_CLOSURE_SCHED(&chand->start_max_age_timer_after_init, GRPC_ERROR_NONE);
|
356
345
|
}
|
357
346
|
|
358
347
|
/* Initialize the number of calls as 1, so that the max_idle_timer will not
|
@@ -361,15 +350,14 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
361
350
|
if (chand->max_connection_idle != GRPC_MILLIS_INF_FUTURE) {
|
362
351
|
GRPC_CHANNEL_STACK_REF(chand->channel_stack,
|
363
352
|
"max_age start_max_idle_timer_after_init");
|
364
|
-
GRPC_CLOSURE_SCHED(
|
353
|
+
GRPC_CLOSURE_SCHED(&chand->start_max_idle_timer_after_init,
|
365
354
|
GRPC_ERROR_NONE);
|
366
355
|
}
|
367
356
|
return GRPC_ERROR_NONE;
|
368
357
|
}
|
369
358
|
|
370
359
|
/* Destructor for channel_data. */
|
371
|
-
static void destroy_channel_elem(
|
372
|
-
grpc_channel_element* elem) {}
|
360
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {}
|
373
361
|
|
374
362
|
const grpc_channel_filter grpc_max_age_filter = {
|
375
363
|
grpc_call_next_op,
|
@@ -384,8 +372,7 @@ const grpc_channel_filter grpc_max_age_filter = {
|
|
384
372
|
grpc_channel_next_get_info,
|
385
373
|
"max_age"};
|
386
374
|
|
387
|
-
static bool maybe_add_max_age_filter(
|
388
|
-
grpc_channel_stack_builder* builder,
|
375
|
+
static bool maybe_add_max_age_filter(grpc_channel_stack_builder* builder,
|
389
376
|
void* arg) {
|
390
377
|
const grpc_channel_args* channel_args =
|
391
378
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
@@ -404,10 +391,10 @@ static bool maybe_add_max_age_filter(grpc_exec_ctx* exec_ctx,
|
|
404
391
|
}
|
405
392
|
}
|
406
393
|
|
407
|
-
|
394
|
+
void grpc_max_age_filter_init(void) {
|
408
395
|
grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL,
|
409
396
|
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
410
397
|
maybe_add_max_age_filter, nullptr);
|
411
398
|
}
|
412
399
|
|
413
|
-
|
400
|
+
void grpc_max_age_filter_shutdown(void) {}
|
@@ -19,14 +19,6 @@
|
|
19
19
|
|
20
20
|
#include "src/core/lib/channel/channel_stack.h"
|
21
21
|
|
22
|
-
#ifdef __cplusplus
|
23
|
-
extern "C" {
|
24
|
-
#endif
|
25
|
-
|
26
22
|
extern const grpc_channel_filter grpc_max_age_filter;
|
27
23
|
|
28
|
-
#ifdef __cplusplus
|
29
|
-
}
|
30
|
-
#endif
|
31
|
-
|
32
24
|
#endif /* GRPC_CORE_EXT_FILTERS_MAX_AGE_MAX_AGE_FILTER_H */
|
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
#include "src/core/lib/channel/channel_args.h"
|
28
28
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
29
|
-
#include "src/core/lib/
|
29
|
+
#include "src/core/lib/gpr/string.h"
|
30
30
|
#include "src/core/lib/surface/channel_init.h"
|
31
31
|
#include "src/core/lib/transport/service_config.h"
|
32
32
|
|
@@ -47,8 +47,7 @@ static void* refcounted_message_size_limits_ref(void* value) {
|
|
47
47
|
return value;
|
48
48
|
}
|
49
49
|
|
50
|
-
static void refcounted_message_size_limits_unref(
|
51
|
-
void* value) {
|
50
|
+
static void refcounted_message_size_limits_unref(void* value) {
|
52
51
|
refcounted_message_size_limits* limits =
|
53
52
|
(refcounted_message_size_limits*)value;
|
54
53
|
if (gpr_unref(&limits->refs)) {
|
@@ -87,7 +86,8 @@ static void* refcounted_message_size_limits_create_from_json(
|
|
87
86
|
return value;
|
88
87
|
}
|
89
88
|
|
90
|
-
|
89
|
+
namespace {
|
90
|
+
struct call_data {
|
91
91
|
grpc_call_combiner* call_combiner;
|
92
92
|
message_size_limits limits;
|
93
93
|
// Receive closures are chained: we inject this closure as the
|
@@ -98,18 +98,18 @@ typedef struct call_data {
|
|
98
98
|
grpc_byte_stream** recv_message;
|
99
99
|
// Original recv_message_ready callback, invoked after our own.
|
100
100
|
grpc_closure* next_recv_message_ready;
|
101
|
-
}
|
101
|
+
};
|
102
102
|
|
103
|
-
|
103
|
+
struct channel_data {
|
104
104
|
message_size_limits limits;
|
105
105
|
// Maps path names to refcounted_message_size_limits structs.
|
106
106
|
grpc_slice_hash_table* method_limit_table;
|
107
|
-
}
|
107
|
+
};
|
108
|
+
} // namespace
|
108
109
|
|
109
110
|
// Callback invoked when we receive a message. Here we check the max
|
110
111
|
// receive message size.
|
111
|
-
static void recv_message_ready(
|
112
|
-
grpc_error* error) {
|
112
|
+
static void recv_message_ready(void* user_data, grpc_error* error) {
|
113
113
|
grpc_call_element* elem = (grpc_call_element*)user_data;
|
114
114
|
call_data* calld = (call_data*)elem->call_data;
|
115
115
|
if (*calld->recv_message != nullptr && calld->limits.max_recv_size >= 0 &&
|
@@ -132,13 +132,12 @@ static void recv_message_ready(grpc_exec_ctx* exec_ctx, void* user_data,
|
|
132
132
|
GRPC_ERROR_REF(error);
|
133
133
|
}
|
134
134
|
// Invoke the next callback.
|
135
|
-
GRPC_CLOSURE_RUN(
|
135
|
+
GRPC_CLOSURE_RUN(calld->next_recv_message_ready, error);
|
136
136
|
}
|
137
137
|
|
138
138
|
// Start transport stream op.
|
139
139
|
static void start_transport_stream_op_batch(
|
140
|
-
|
141
|
-
grpc_transport_stream_op_batch* op) {
|
140
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
|
142
141
|
call_data* calld = (call_data*)elem->call_data;
|
143
142
|
// Check max send message size.
|
144
143
|
if (op->send_message && calld->limits.max_send_size >= 0 &&
|
@@ -149,7 +148,7 @@ static void start_transport_stream_op_batch(
|
|
149
148
|
op->payload->send_message.send_message->length,
|
150
149
|
calld->limits.max_send_size);
|
151
150
|
grpc_transport_stream_op_batch_finish_with_failure(
|
152
|
-
|
151
|
+
op,
|
153
152
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(message_string),
|
154
153
|
GRPC_ERROR_INT_GRPC_STATUS,
|
155
154
|
GRPC_STATUS_RESOURCE_EXHAUSTED),
|
@@ -165,12 +164,11 @@ static void start_transport_stream_op_batch(
|
|
165
164
|
op->payload->recv_message.recv_message_ready = &calld->recv_message_ready;
|
166
165
|
}
|
167
166
|
// Chain to the next filter.
|
168
|
-
grpc_call_next_op(
|
167
|
+
grpc_call_next_op(elem, op);
|
169
168
|
}
|
170
169
|
|
171
170
|
// Constructor for call_data.
|
172
|
-
static grpc_error* init_call_elem(
|
173
|
-
grpc_call_element* elem,
|
171
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
174
172
|
const grpc_call_element_args* args) {
|
175
173
|
channel_data* chand = (channel_data*)elem->channel_data;
|
176
174
|
call_data* calld = (call_data*)elem->call_data;
|
@@ -186,7 +184,7 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
|
|
186
184
|
if (chand->method_limit_table != nullptr) {
|
187
185
|
refcounted_message_size_limits* limits =
|
188
186
|
(refcounted_message_size_limits*)grpc_method_config_table_get(
|
189
|
-
|
187
|
+
chand->method_limit_table, args->path);
|
190
188
|
if (limits != nullptr) {
|
191
189
|
if (limits->limits.max_send_size >= 0 &&
|
192
190
|
(limits->limits.max_send_size < calld->limits.max_send_size ||
|
@@ -204,7 +202,7 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
|
|
204
202
|
}
|
205
203
|
|
206
204
|
// Destructor for call_data.
|
207
|
-
static void destroy_call_elem(
|
205
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
208
206
|
const grpc_call_final_info* final_info,
|
209
207
|
grpc_closure* ignored) {}
|
210
208
|
|
@@ -241,8 +239,7 @@ message_size_limits get_message_size_limits(
|
|
241
239
|
}
|
242
240
|
|
243
241
|
// Constructor for channel_data.
|
244
|
-
static grpc_error* init_channel_elem(
|
245
|
-
grpc_channel_element* elem,
|
242
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
246
243
|
grpc_channel_element_args* args) {
|
247
244
|
GPR_ASSERT(!args->is_last);
|
248
245
|
channel_data* chand = (channel_data*)elem->channel_data;
|
@@ -257,8 +254,7 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
257
254
|
if (service_config != nullptr) {
|
258
255
|
chand->method_limit_table =
|
259
256
|
grpc_service_config_create_method_config_table(
|
260
|
-
|
261
|
-
refcounted_message_size_limits_create_from_json,
|
257
|
+
service_config, refcounted_message_size_limits_create_from_json,
|
262
258
|
refcounted_message_size_limits_ref,
|
263
259
|
refcounted_message_size_limits_unref);
|
264
260
|
grpc_service_config_destroy(service_config);
|
@@ -268,10 +264,9 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
268
264
|
}
|
269
265
|
|
270
266
|
// Destructor for channel_data.
|
271
|
-
static void destroy_channel_elem(
|
272
|
-
grpc_channel_element* elem) {
|
267
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {
|
273
268
|
channel_data* chand = (channel_data*)elem->channel_data;
|
274
|
-
grpc_slice_hash_table_unref(
|
269
|
+
grpc_slice_hash_table_unref(chand->method_limit_table);
|
275
270
|
}
|
276
271
|
|
277
272
|
const grpc_channel_filter grpc_message_size_filter = {
|
@@ -287,8 +282,7 @@ const grpc_channel_filter grpc_message_size_filter = {
|
|
287
282
|
grpc_channel_next_get_info,
|
288
283
|
"message_size"};
|
289
284
|
|
290
|
-
static bool maybe_add_message_size_filter(
|
291
|
-
grpc_channel_stack_builder* builder,
|
285
|
+
static bool maybe_add_message_size_filter(grpc_channel_stack_builder* builder,
|
292
286
|
void* arg) {
|
293
287
|
const grpc_channel_args* channel_args =
|
294
288
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
@@ -310,7 +304,7 @@ static bool maybe_add_message_size_filter(grpc_exec_ctx* exec_ctx,
|
|
310
304
|
}
|
311
305
|
}
|
312
306
|
|
313
|
-
|
307
|
+
void grpc_message_size_filter_init(void) {
|
314
308
|
grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
|
315
309
|
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
316
310
|
maybe_add_message_size_filter, nullptr);
|
@@ -322,4 +316,4 @@ extern "C" void grpc_message_size_filter_init(void) {
|
|
322
316
|
maybe_add_message_size_filter, nullptr);
|
323
317
|
}
|
324
318
|
|
325
|
-
|
319
|
+
void grpc_message_size_filter_shutdown(void) {}
|