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
@@ -25,10 +25,6 @@
|
|
25
25
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
26
26
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
27
27
|
|
28
|
-
#ifdef __cplusplus
|
29
|
-
extern "C" {
|
30
|
-
#endif
|
31
|
-
|
32
28
|
typedef enum {
|
33
29
|
GRPC_CHTTP2_SPS_ID0,
|
34
30
|
GRPC_CHTTP2_SPS_ID1,
|
@@ -56,14 +52,9 @@ grpc_slice grpc_chttp2_settings_ack_create(void);
|
|
56
52
|
grpc_error* grpc_chttp2_settings_parser_begin_frame(
|
57
53
|
grpc_chttp2_settings_parser* parser, uint32_t length, uint8_t flags,
|
58
54
|
uint32_t* settings);
|
59
|
-
grpc_error* grpc_chttp2_settings_parser_parse(
|
60
|
-
void* parser,
|
55
|
+
grpc_error* grpc_chttp2_settings_parser_parse(void* parser,
|
61
56
|
grpc_chttp2_transport* t,
|
62
57
|
grpc_chttp2_stream* s,
|
63
58
|
grpc_slice slice, int is_last);
|
64
59
|
|
65
|
-
#ifdef __cplusplus
|
66
|
-
}
|
67
|
-
#endif
|
68
|
-
|
69
60
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_SETTINGS_H */
|
@@ -64,9 +64,11 @@ grpc_error* grpc_chttp2_window_update_parser_begin_frame(
|
|
64
64
|
return GRPC_ERROR_NONE;
|
65
65
|
}
|
66
66
|
|
67
|
-
grpc_error* grpc_chttp2_window_update_parser_parse(
|
68
|
-
|
69
|
-
|
67
|
+
grpc_error* grpc_chttp2_window_update_parser_parse(void* parser,
|
68
|
+
grpc_chttp2_transport* t,
|
69
|
+
grpc_chttp2_stream* s,
|
70
|
+
grpc_slice slice,
|
71
|
+
int is_last) {
|
70
72
|
uint8_t* const beg = GRPC_SLICE_START_PTR(slice);
|
71
73
|
uint8_t* const end = GRPC_SLICE_END_PTR(slice);
|
72
74
|
uint8_t* cur = beg;
|
@@ -98,10 +100,9 @@ grpc_error* grpc_chttp2_window_update_parser_parse(
|
|
98
100
|
if (s != nullptr) {
|
99
101
|
s->flow_control->RecvUpdate(received_update);
|
100
102
|
if (grpc_chttp2_list_remove_stalled_by_stream(t, s)) {
|
101
|
-
grpc_chttp2_mark_stream_writable(
|
103
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
102
104
|
grpc_chttp2_initiate_write(
|
103
|
-
|
104
|
-
GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE);
|
105
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE);
|
105
106
|
}
|
106
107
|
}
|
107
108
|
} else {
|
@@ -110,8 +111,7 @@ grpc_error* grpc_chttp2_window_update_parser_parse(
|
|
110
111
|
bool is_zero = t->flow_control->remote_window() <= 0;
|
111
112
|
if (was_zero && !is_zero) {
|
112
113
|
grpc_chttp2_initiate_write(
|
113
|
-
|
114
|
-
GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED);
|
114
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED);
|
115
115
|
}
|
116
116
|
}
|
117
117
|
}
|
@@ -24,10 +24,6 @@
|
|
24
24
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
25
25
|
#include "src/core/lib/transport/transport.h"
|
26
26
|
|
27
|
-
#ifdef __cplusplus
|
28
|
-
extern "C" {
|
29
|
-
#endif
|
30
|
-
|
31
27
|
typedef struct {
|
32
28
|
uint8_t byte;
|
33
29
|
uint8_t is_connection_update;
|
@@ -39,12 +35,10 @@ grpc_slice grpc_chttp2_window_update_create(
|
|
39
35
|
|
40
36
|
grpc_error* grpc_chttp2_window_update_parser_begin_frame(
|
41
37
|
grpc_chttp2_window_update_parser* parser, uint32_t length, uint8_t flags);
|
42
|
-
grpc_error* grpc_chttp2_window_update_parser_parse(
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
}
|
48
|
-
#endif
|
38
|
+
grpc_error* grpc_chttp2_window_update_parser_parse(void* parser,
|
39
|
+
grpc_chttp2_transport* t,
|
40
|
+
grpc_chttp2_stream* s,
|
41
|
+
grpc_slice slice,
|
42
|
+
int is_last);
|
49
43
|
|
50
44
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_WINDOW_UPDATE_H */
|
@@ -206,14 +206,12 @@ static uint32_t prepare_space_for_new_elem(grpc_chttp2_hpack_compressor* c,
|
|
206
206
|
}
|
207
207
|
|
208
208
|
/* dummy function */
|
209
|
-
static void add_nothing(
|
210
|
-
grpc_chttp2_hpack_compressor* c, grpc_mdelem elem,
|
209
|
+
static void add_nothing(grpc_chttp2_hpack_compressor* c, grpc_mdelem elem,
|
211
210
|
size_t elem_size) {}
|
212
211
|
|
213
212
|
// Add a key to the dynamic table. Both key and value will be added to table at
|
214
213
|
// the decoder.
|
215
|
-
static void add_key_with_index(
|
216
|
-
grpc_chttp2_hpack_compressor* c,
|
214
|
+
static void add_key_with_index(grpc_chttp2_hpack_compressor* c,
|
217
215
|
grpc_mdelem elem, uint32_t new_index) {
|
218
216
|
if (new_index == 0) {
|
219
217
|
return;
|
@@ -240,14 +238,12 @@ static void add_key_with_index(grpc_exec_ctx* exec_ctx,
|
|
240
238
|
c->indices_keys[HASH_FRAGMENT_3(key_hash)] = new_index;
|
241
239
|
} else if (c->indices_keys[HASH_FRAGMENT_2(key_hash)] <
|
242
240
|
c->indices_keys[HASH_FRAGMENT_3(key_hash)]) {
|
243
|
-
grpc_slice_unref_internal(
|
244
|
-
c->entries_keys[HASH_FRAGMENT_2(key_hash)]);
|
241
|
+
grpc_slice_unref_internal(c->entries_keys[HASH_FRAGMENT_2(key_hash)]);
|
245
242
|
c->entries_keys[HASH_FRAGMENT_2(key_hash)] =
|
246
243
|
grpc_slice_ref_internal(GRPC_MDKEY(elem));
|
247
244
|
c->indices_keys[HASH_FRAGMENT_2(key_hash)] = new_index;
|
248
245
|
} else {
|
249
|
-
grpc_slice_unref_internal(
|
250
|
-
c->entries_keys[HASH_FRAGMENT_3(key_hash)]);
|
246
|
+
grpc_slice_unref_internal(c->entries_keys[HASH_FRAGMENT_3(key_hash)]);
|
251
247
|
c->entries_keys[HASH_FRAGMENT_3(key_hash)] =
|
252
248
|
grpc_slice_ref_internal(GRPC_MDKEY(elem));
|
253
249
|
c->indices_keys[HASH_FRAGMENT_3(key_hash)] = new_index;
|
@@ -255,8 +251,7 @@ static void add_key_with_index(grpc_exec_ctx* exec_ctx,
|
|
255
251
|
}
|
256
252
|
|
257
253
|
/* add an element to the decoder table */
|
258
|
-
static void add_elem_with_index(
|
259
|
-
grpc_chttp2_hpack_compressor* c,
|
254
|
+
static void add_elem_with_index(grpc_chttp2_hpack_compressor* c,
|
260
255
|
grpc_mdelem elem, uint32_t new_index) {
|
261
256
|
if (new_index == 0) {
|
262
257
|
return;
|
@@ -286,35 +281,34 @@ static void add_elem_with_index(grpc_exec_ctx* exec_ctx,
|
|
286
281
|
} else if (c->indices_elems[HASH_FRAGMENT_2(elem_hash)] <
|
287
282
|
c->indices_elems[HASH_FRAGMENT_3(elem_hash)]) {
|
288
283
|
/* not there: replace oldest */
|
289
|
-
GRPC_MDELEM_UNREF(
|
284
|
+
GRPC_MDELEM_UNREF(c->entries_elems[HASH_FRAGMENT_2(elem_hash)]);
|
290
285
|
c->entries_elems[HASH_FRAGMENT_2(elem_hash)] = GRPC_MDELEM_REF(elem);
|
291
286
|
c->indices_elems[HASH_FRAGMENT_2(elem_hash)] = new_index;
|
292
287
|
} else {
|
293
288
|
/* not there: replace oldest */
|
294
|
-
GRPC_MDELEM_UNREF(
|
289
|
+
GRPC_MDELEM_UNREF(c->entries_elems[HASH_FRAGMENT_3(elem_hash)]);
|
295
290
|
c->entries_elems[HASH_FRAGMENT_3(elem_hash)] = GRPC_MDELEM_REF(elem);
|
296
291
|
c->indices_elems[HASH_FRAGMENT_3(elem_hash)] = new_index;
|
297
292
|
}
|
298
293
|
|
299
|
-
add_key_with_index(
|
294
|
+
add_key_with_index(c, elem, new_index);
|
300
295
|
}
|
301
296
|
|
302
|
-
static void add_elem(
|
303
|
-
|
297
|
+
static void add_elem(grpc_chttp2_hpack_compressor* c, grpc_mdelem elem,
|
298
|
+
size_t elem_size) {
|
304
299
|
uint32_t new_index = prepare_space_for_new_elem(c, elem_size);
|
305
|
-
add_elem_with_index(
|
300
|
+
add_elem_with_index(c, elem, new_index);
|
306
301
|
}
|
307
302
|
|
308
|
-
static void add_key(
|
309
|
-
|
303
|
+
static void add_key(grpc_chttp2_hpack_compressor* c, grpc_mdelem elem,
|
304
|
+
size_t elem_size) {
|
310
305
|
uint32_t new_index = prepare_space_for_new_elem(c, elem_size);
|
311
|
-
add_key_with_index(
|
306
|
+
add_key_with_index(c, elem, new_index);
|
312
307
|
}
|
313
308
|
|
314
|
-
static void emit_indexed(
|
315
|
-
grpc_chttp2_hpack_compressor* c, uint32_t elem_index,
|
309
|
+
static void emit_indexed(grpc_chttp2_hpack_compressor* c, uint32_t elem_index,
|
316
310
|
framer_state* st) {
|
317
|
-
GRPC_STATS_INC_HPACK_SEND_INDEXED(
|
311
|
+
GRPC_STATS_INC_HPACK_SEND_INDEXED();
|
318
312
|
uint32_t len = GRPC_CHTTP2_VARINT_LENGTH(elem_index, 1);
|
319
313
|
GRPC_CHTTP2_WRITE_VARINT(elem_index, 1, 0x80, add_tiny_header_data(st, len),
|
320
314
|
len);
|
@@ -326,18 +320,17 @@ typedef struct {
|
|
326
320
|
bool insert_null_before_wire_value;
|
327
321
|
} wire_value;
|
328
322
|
|
329
|
-
static wire_value get_wire_value(
|
330
|
-
bool true_binary_enabled) {
|
323
|
+
static wire_value get_wire_value(grpc_mdelem elem, bool true_binary_enabled) {
|
331
324
|
wire_value wire_val;
|
332
325
|
if (grpc_is_binary_header(GRPC_MDKEY(elem))) {
|
333
326
|
if (true_binary_enabled) {
|
334
|
-
GRPC_STATS_INC_HPACK_SEND_BINARY(
|
327
|
+
GRPC_STATS_INC_HPACK_SEND_BINARY();
|
335
328
|
wire_val.huffman_prefix = 0x00;
|
336
329
|
wire_val.insert_null_before_wire_value = true;
|
337
330
|
wire_val.data = grpc_slice_ref_internal(GRPC_MDVALUE(elem));
|
338
331
|
|
339
332
|
} else {
|
340
|
-
GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64(
|
333
|
+
GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64();
|
341
334
|
wire_val.huffman_prefix = 0x80;
|
342
335
|
wire_val.insert_null_before_wire_value = false;
|
343
336
|
wire_val.data =
|
@@ -345,7 +338,7 @@ static wire_value get_wire_value(grpc_exec_ctx* exec_ctx, grpc_mdelem elem,
|
|
345
338
|
}
|
346
339
|
} else {
|
347
340
|
/* TODO(ctiller): opportunistically compress non-binary headers */
|
348
|
-
GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(
|
341
|
+
GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
|
349
342
|
wire_val.huffman_prefix = 0x00;
|
350
343
|
wire_val.insert_null_before_wire_value = false;
|
351
344
|
wire_val.data = grpc_slice_ref_internal(GRPC_MDVALUE(elem));
|
@@ -362,14 +355,12 @@ static void add_wire_value(framer_state* st, wire_value v) {
|
|
362
355
|
add_header_data(st, v.data);
|
363
356
|
}
|
364
357
|
|
365
|
-
static void emit_lithdr_incidx(
|
366
|
-
grpc_chttp2_hpack_compressor* c,
|
358
|
+
static void emit_lithdr_incidx(grpc_chttp2_hpack_compressor* c,
|
367
359
|
uint32_t key_index, grpc_mdelem elem,
|
368
360
|
framer_state* st) {
|
369
|
-
GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX(
|
361
|
+
GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX();
|
370
362
|
uint32_t len_pfx = GRPC_CHTTP2_VARINT_LENGTH(key_index, 2);
|
371
|
-
wire_value value =
|
372
|
-
get_wire_value(exec_ctx, elem, st->use_true_binary_metadata);
|
363
|
+
wire_value value = get_wire_value(elem, st->use_true_binary_metadata);
|
373
364
|
size_t len_val = wire_value_length(value);
|
374
365
|
uint32_t len_val_len;
|
375
366
|
GPR_ASSERT(len_val <= UINT32_MAX);
|
@@ -381,14 +372,12 @@ static void emit_lithdr_incidx(grpc_exec_ctx* exec_ctx,
|
|
381
372
|
add_wire_value(st, value);
|
382
373
|
}
|
383
374
|
|
384
|
-
static void emit_lithdr_noidx(
|
385
|
-
grpc_chttp2_hpack_compressor* c,
|
375
|
+
static void emit_lithdr_noidx(grpc_chttp2_hpack_compressor* c,
|
386
376
|
uint32_t key_index, grpc_mdelem elem,
|
387
377
|
framer_state* st) {
|
388
|
-
GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX(
|
378
|
+
GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX();
|
389
379
|
uint32_t len_pfx = GRPC_CHTTP2_VARINT_LENGTH(key_index, 4);
|
390
|
-
wire_value value =
|
391
|
-
get_wire_value(exec_ctx, elem, st->use_true_binary_metadata);
|
380
|
+
wire_value value = get_wire_value(elem, st->use_true_binary_metadata);
|
392
381
|
size_t len_val = wire_value_length(value);
|
393
382
|
uint32_t len_val_len;
|
394
383
|
GPR_ASSERT(len_val <= UINT32_MAX);
|
@@ -400,16 +389,14 @@ static void emit_lithdr_noidx(grpc_exec_ctx* exec_ctx,
|
|
400
389
|
add_wire_value(st, value);
|
401
390
|
}
|
402
391
|
|
403
|
-
static void emit_lithdr_incidx_v(
|
404
|
-
grpc_chttp2_hpack_compressor* c,
|
392
|
+
static void emit_lithdr_incidx_v(grpc_chttp2_hpack_compressor* c,
|
405
393
|
uint32_t unused_index, grpc_mdelem elem,
|
406
394
|
framer_state* st) {
|
407
395
|
GPR_ASSERT(unused_index == 0);
|
408
|
-
GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V(
|
409
|
-
GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(
|
396
|
+
GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V();
|
397
|
+
GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
|
410
398
|
uint32_t len_key = (uint32_t)GRPC_SLICE_LENGTH(GRPC_MDKEY(elem));
|
411
|
-
wire_value value =
|
412
|
-
get_wire_value(exec_ctx, elem, st->use_true_binary_metadata);
|
399
|
+
wire_value value = get_wire_value(elem, st->use_true_binary_metadata);
|
413
400
|
uint32_t len_val = (uint32_t)wire_value_length(value);
|
414
401
|
uint32_t len_key_len = GRPC_CHTTP2_VARINT_LENGTH(len_key, 1);
|
415
402
|
uint32_t len_val_len = GRPC_CHTTP2_VARINT_LENGTH(len_val, 1);
|
@@ -424,16 +411,14 @@ static void emit_lithdr_incidx_v(grpc_exec_ctx* exec_ctx,
|
|
424
411
|
add_wire_value(st, value);
|
425
412
|
}
|
426
413
|
|
427
|
-
static void emit_lithdr_noidx_v(
|
428
|
-
grpc_chttp2_hpack_compressor* c,
|
414
|
+
static void emit_lithdr_noidx_v(grpc_chttp2_hpack_compressor* c,
|
429
415
|
uint32_t unused_index, grpc_mdelem elem,
|
430
416
|
framer_state* st) {
|
431
417
|
GPR_ASSERT(unused_index == 0);
|
432
|
-
GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V(
|
433
|
-
GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED(
|
418
|
+
GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V();
|
419
|
+
GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
|
434
420
|
uint32_t len_key = (uint32_t)GRPC_SLICE_LENGTH(GRPC_MDKEY(elem));
|
435
|
-
wire_value value =
|
436
|
-
get_wire_value(exec_ctx, elem, st->use_true_binary_metadata);
|
421
|
+
wire_value value = get_wire_value(elem, st->use_true_binary_metadata);
|
437
422
|
uint32_t len_val = (uint32_t)wire_value_length(value);
|
438
423
|
uint32_t len_key_len = GRPC_CHTTP2_VARINT_LENGTH(len_key, 1);
|
439
424
|
uint32_t len_val_len = GRPC_CHTTP2_VARINT_LENGTH(len_val, 1);
|
@@ -462,8 +447,8 @@ static uint32_t dynidx(grpc_chttp2_hpack_compressor* c, uint32_t elem_index) {
|
|
462
447
|
}
|
463
448
|
|
464
449
|
/* encode an mdelem */
|
465
|
-
static void hpack_enc(
|
466
|
-
|
450
|
+
static void hpack_enc(grpc_chttp2_hpack_compressor* c, grpc_mdelem elem,
|
451
|
+
framer_state* st) {
|
467
452
|
GPR_ASSERT(GRPC_SLICE_LENGTH(GRPC_MDKEY(elem)) > 0);
|
468
453
|
if (GRPC_SLICE_START_PTR(GRPC_MDKEY(elem))[0] != ':') { /* regular header */
|
469
454
|
st->seen_regular_header = 1;
|
@@ -496,7 +481,7 @@ static void hpack_enc(grpc_exec_ctx* exec_ctx, grpc_chttp2_hpack_compressor* c,
|
|
496
481
|
|
497
482
|
// Key is not interned, emit literals.
|
498
483
|
if (!key_interned) {
|
499
|
-
emit_lithdr_noidx_v(
|
484
|
+
emit_lithdr_noidx_v(c, 0, elem, st);
|
500
485
|
return;
|
501
486
|
}
|
502
487
|
|
@@ -515,16 +500,16 @@ static void hpack_enc(grpc_exec_ctx* exec_ctx, grpc_chttp2_hpack_compressor* c,
|
|
515
500
|
if (grpc_mdelem_eq(c->entries_elems[HASH_FRAGMENT_2(elem_hash)], elem) &&
|
516
501
|
c->indices_elems[HASH_FRAGMENT_2(elem_hash)] > c->tail_remote_index) {
|
517
502
|
/* HIT: complete element (first cuckoo hash) */
|
518
|
-
emit_indexed(
|
519
|
-
|
503
|
+
emit_indexed(c, dynidx(c, c->indices_elems[HASH_FRAGMENT_2(elem_hash)]),
|
504
|
+
st);
|
520
505
|
return;
|
521
506
|
}
|
522
507
|
|
523
508
|
if (grpc_mdelem_eq(c->entries_elems[HASH_FRAGMENT_3(elem_hash)], elem) &&
|
524
509
|
c->indices_elems[HASH_FRAGMENT_3(elem_hash)] > c->tail_remote_index) {
|
525
510
|
/* HIT: complete element (second cuckoo hash) */
|
526
|
-
emit_indexed(
|
527
|
-
|
511
|
+
emit_indexed(c, dynidx(c, c->indices_elems[HASH_FRAGMENT_3(elem_hash)]),
|
512
|
+
st);
|
528
513
|
return;
|
529
514
|
}
|
530
515
|
}
|
@@ -538,10 +523,10 @@ static void hpack_enc(grpc_exec_ctx* exec_ctx, grpc_chttp2_hpack_compressor* c,
|
|
538
523
|
decoder_space_usage < MAX_DECODER_SPACE_USAGE &&
|
539
524
|
c->filter_elems[HASH_FRAGMENT_1(elem_hash)] >=
|
540
525
|
c->filter_elems_sum / ONE_ON_ADD_PROBABILITY;
|
541
|
-
void (*maybe_add)(
|
542
|
-
|
543
|
-
void (*emit)(
|
544
|
-
|
526
|
+
void (*maybe_add)(grpc_chttp2_hpack_compressor*, grpc_mdelem, size_t) =
|
527
|
+
should_add_elem ? add_elem : add_nothing;
|
528
|
+
void (*emit)(grpc_chttp2_hpack_compressor*, uint32_t, grpc_mdelem,
|
529
|
+
framer_state*) =
|
545
530
|
should_add_elem ? emit_lithdr_incidx : emit_lithdr_noidx;
|
546
531
|
|
547
532
|
/* no hits for the elem... maybe there's a key? */
|
@@ -550,8 +535,8 @@ static void hpack_enc(grpc_exec_ctx* exec_ctx, grpc_chttp2_hpack_compressor* c,
|
|
550
535
|
GRPC_MDKEY(elem)) &&
|
551
536
|
indices_key > c->tail_remote_index) {
|
552
537
|
/* HIT: key (first cuckoo hash) */
|
553
|
-
emit(
|
554
|
-
maybe_add(
|
538
|
+
emit(c, dynidx(c, indices_key), elem, st);
|
539
|
+
maybe_add(c, elem, decoder_space_usage);
|
555
540
|
return;
|
556
541
|
}
|
557
542
|
|
@@ -560,8 +545,8 @@ static void hpack_enc(grpc_exec_ctx* exec_ctx, grpc_chttp2_hpack_compressor* c,
|
|
560
545
|
GRPC_MDKEY(elem)) &&
|
561
546
|
indices_key > c->tail_remote_index) {
|
562
547
|
/* HIT: key (first cuckoo hash) */
|
563
|
-
emit(
|
564
|
-
maybe_add(
|
548
|
+
emit(c, dynidx(c, indices_key), elem, st);
|
549
|
+
maybe_add(c, elem, decoder_space_usage);
|
565
550
|
return;
|
566
551
|
}
|
567
552
|
|
@@ -572,24 +557,23 @@ static void hpack_enc(grpc_exec_ctx* exec_ctx, grpc_chttp2_hpack_compressor* c,
|
|
572
557
|
: emit_lithdr_noidx_v;
|
573
558
|
maybe_add =
|
574
559
|
should_add_elem ? add_elem : (should_add_key ? add_key : add_nothing);
|
575
|
-
emit(
|
576
|
-
maybe_add(
|
560
|
+
emit(c, 0, elem, st);
|
561
|
+
maybe_add(c, elem, decoder_space_usage);
|
577
562
|
}
|
578
563
|
|
579
564
|
#define STRLEN_LIT(x) (sizeof(x) - 1)
|
580
565
|
#define TIMEOUT_KEY "grpc-timeout"
|
581
566
|
|
582
|
-
static void deadline_enc(
|
583
|
-
grpc_chttp2_hpack_compressor* c, grpc_millis deadline,
|
567
|
+
static void deadline_enc(grpc_chttp2_hpack_compressor* c, grpc_millis deadline,
|
584
568
|
framer_state* st) {
|
585
569
|
char timeout_str[GRPC_HTTP2_TIMEOUT_ENCODE_MIN_BUFSIZE];
|
586
570
|
grpc_mdelem mdelem;
|
587
|
-
grpc_http2_encode_timeout(deadline -
|
571
|
+
grpc_http2_encode_timeout(deadline - grpc_core::ExecCtx::Get()->Now(),
|
588
572
|
timeout_str);
|
589
|
-
mdelem = grpc_mdelem_from_slices(
|
573
|
+
mdelem = grpc_mdelem_from_slices(GRPC_MDSTR_GRPC_TIMEOUT,
|
590
574
|
grpc_slice_from_copied_string(timeout_str));
|
591
|
-
hpack_enc(
|
592
|
-
GRPC_MDELEM_UNREF(
|
575
|
+
hpack_enc(c, mdelem, st);
|
576
|
+
GRPC_MDELEM_UNREF(mdelem);
|
593
577
|
}
|
594
578
|
|
595
579
|
static uint32_t elems_for_bytes(uint32_t bytes) { return (bytes + 31) / 32; }
|
@@ -609,14 +593,13 @@ void grpc_chttp2_hpack_compressor_init(grpc_chttp2_hpack_compressor* c) {
|
|
609
593
|
}
|
610
594
|
}
|
611
595
|
|
612
|
-
void grpc_chttp2_hpack_compressor_destroy(
|
613
|
-
grpc_chttp2_hpack_compressor* c) {
|
596
|
+
void grpc_chttp2_hpack_compressor_destroy(grpc_chttp2_hpack_compressor* c) {
|
614
597
|
int i;
|
615
598
|
for (i = 0; i < GRPC_CHTTP2_HPACKC_NUM_VALUES; i++) {
|
616
599
|
if (c->entries_keys[i].refcount != &terminal_slice_refcount) {
|
617
|
-
grpc_slice_unref_internal(
|
600
|
+
grpc_slice_unref_internal(c->entries_keys[i]);
|
618
601
|
}
|
619
|
-
GRPC_MDELEM_UNREF(
|
602
|
+
GRPC_MDELEM_UNREF(c->entries_elems[i]);
|
620
603
|
}
|
621
604
|
gpr_free(c->table_elem_size);
|
622
605
|
}
|
@@ -672,8 +655,7 @@ void grpc_chttp2_hpack_compressor_set_max_table_size(
|
|
672
655
|
}
|
673
656
|
}
|
674
657
|
|
675
|
-
void grpc_chttp2_encode_header(
|
676
|
-
grpc_chttp2_hpack_compressor* c,
|
658
|
+
void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor* c,
|
677
659
|
grpc_mdelem** extra_headers,
|
678
660
|
size_t extra_headers_size,
|
679
661
|
grpc_metadata_batch* metadata,
|
@@ -699,15 +681,15 @@ void grpc_chttp2_encode_header(grpc_exec_ctx* exec_ctx,
|
|
699
681
|
emit_advertise_table_size_change(c, &st);
|
700
682
|
}
|
701
683
|
for (size_t i = 0; i < extra_headers_size; ++i) {
|
702
|
-
hpack_enc(
|
684
|
+
hpack_enc(c, *extra_headers[i], &st);
|
703
685
|
}
|
704
686
|
grpc_metadata_batch_assert_ok(metadata);
|
705
687
|
for (grpc_linked_mdelem* l = metadata->list.head; l; l = l->next) {
|
706
|
-
hpack_enc(
|
688
|
+
hpack_enc(c, l->md, &st);
|
707
689
|
}
|
708
690
|
grpc_millis deadline = metadata->deadline;
|
709
691
|
if (deadline != GRPC_MILLIS_INF_FUTURE) {
|
710
|
-
deadline_enc(
|
692
|
+
deadline_enc(c, deadline, &st);
|
711
693
|
}
|
712
694
|
|
713
695
|
finish_frame(&st, 1, options->is_eof);
|
@@ -36,10 +36,6 @@
|
|
36
36
|
|
37
37
|
extern grpc_core::TraceFlag grpc_http_trace;
|
38
38
|
|
39
|
-
#ifdef __cplusplus
|
40
|
-
extern "C" {
|
41
|
-
#endif
|
42
|
-
|
43
39
|
typedef struct {
|
44
40
|
uint32_t filter_elems_sum;
|
45
41
|
uint32_t max_table_size;
|
@@ -74,8 +70,7 @@ typedef struct {
|
|
74
70
|
} grpc_chttp2_hpack_compressor;
|
75
71
|
|
76
72
|
void grpc_chttp2_hpack_compressor_init(grpc_chttp2_hpack_compressor* c);
|
77
|
-
void grpc_chttp2_hpack_compressor_destroy(
|
78
|
-
grpc_chttp2_hpack_compressor* c);
|
73
|
+
void grpc_chttp2_hpack_compressor_destroy(grpc_chttp2_hpack_compressor* c);
|
79
74
|
void grpc_chttp2_hpack_compressor_set_max_table_size(
|
80
75
|
grpc_chttp2_hpack_compressor* c, uint32_t max_table_size);
|
81
76
|
void grpc_chttp2_hpack_compressor_set_max_usable_size(
|
@@ -89,16 +84,11 @@ typedef struct {
|
|
89
84
|
grpc_transport_one_way_stats* stats;
|
90
85
|
} grpc_encode_header_options;
|
91
86
|
|
92
|
-
void grpc_chttp2_encode_header(
|
93
|
-
grpc_chttp2_hpack_compressor* c,
|
87
|
+
void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor* c,
|
94
88
|
grpc_mdelem** extra_headers,
|
95
89
|
size_t extra_headers_size,
|
96
90
|
grpc_metadata_batch* metadata,
|
97
91
|
const grpc_encode_header_options* options,
|
98
92
|
grpc_slice_buffer* outbuf);
|
99
93
|
|
100
|
-
#ifdef __cplusplus
|
101
|
-
}
|
102
|
-
#endif
|
103
|
-
|
104
94
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HPACK_ENCODER_H */
|