grpc 1.4.5 → 1.6.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 +1235 -1100
- data/etc/roots.pem +0 -412
- data/include/grpc/byte_buffer.h +10 -25
- data/include/grpc/byte_buffer_reader.h +10 -25
- data/include/grpc/census.h +10 -25
- data/include/grpc/compression.h +10 -25
- data/include/grpc/grpc.h +15 -26
- data/include/grpc/grpc_cronet.h +10 -25
- data/include/grpc/grpc_posix.h +10 -25
- data/include/grpc/grpc_security.h +10 -25
- data/include/grpc/grpc_security_constants.h +10 -25
- data/include/grpc/impl/codegen/atm.h +11 -25
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +10 -25
- data/include/grpc/impl/codegen/atm_gcc_sync.h +10 -25
- data/include/grpc/impl/codegen/atm_windows.h +10 -25
- data/include/grpc/impl/codegen/byte_buffer_reader.h +11 -26
- data/include/grpc/impl/codegen/compression_types.h +12 -27
- data/include/grpc/impl/codegen/connectivity_state.h +10 -25
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +10 -25
- data/include/grpc/impl/codegen/gpr_slice.h +10 -25
- data/include/grpc/impl/codegen/gpr_types.h +10 -25
- data/include/grpc/impl/codegen/grpc_types.h +42 -43
- data/include/grpc/impl/codegen/port_platform.h +10 -25
- data/include/grpc/impl/codegen/propagation_bits.h +10 -25
- data/include/grpc/impl/codegen/slice.h +13 -28
- data/include/grpc/impl/codegen/status.h +10 -25
- data/include/grpc/impl/codegen/sync.h +10 -25
- data/include/grpc/impl/codegen/sync_generic.h +10 -25
- data/include/grpc/impl/codegen/sync_posix.h +10 -25
- data/include/grpc/impl/codegen/sync_windows.h +10 -25
- data/include/grpc/load_reporting.h +10 -25
- data/include/grpc/slice.h +10 -25
- data/include/grpc/slice_buffer.h +10 -25
- data/include/grpc/status.h +10 -25
- data/include/grpc/support/alloc.h +10 -25
- data/include/grpc/support/atm.h +10 -25
- data/include/grpc/support/atm_gcc_atomic.h +10 -25
- data/include/grpc/support/atm_gcc_sync.h +10 -25
- data/include/grpc/support/atm_windows.h +10 -25
- data/include/grpc/support/avl.h +46 -49
- data/include/grpc/support/cmdline.h +10 -25
- data/include/grpc/support/cpu.h +10 -25
- data/include/grpc/support/histogram.h +10 -25
- data/include/grpc/support/host_port.h +10 -25
- data/include/grpc/support/log.h +10 -25
- data/include/grpc/support/log_windows.h +10 -25
- data/include/grpc/support/port_platform.h +10 -25
- data/include/grpc/support/string_util.h +10 -25
- data/include/grpc/support/subprocess.h +10 -25
- data/include/grpc/support/sync.h +10 -25
- data/include/grpc/support/sync_generic.h +10 -25
- data/include/grpc/support/sync_posix.h +10 -25
- data/include/grpc/support/sync_windows.h +10 -25
- data/include/grpc/support/thd.h +10 -25
- data/include/grpc/support/time.h +10 -25
- data/include/grpc/support/tls.h +10 -25
- data/include/grpc/support/tls_gcc.h +10 -25
- data/include/grpc/support/tls_msvc.h +10 -25
- data/include/grpc/support/tls_pthread.h +10 -25
- data/include/grpc/support/useful.h +10 -25
- data/include/grpc/support/workaround_list.h +11 -26
- data/src/boringssl/err_data.c +277 -259
- data/src/core/ext/census/aggregation.h +10 -25
- data/src/core/ext/census/base_resources.c +10 -25
- data/src/core/ext/census/base_resources.h +10 -25
- data/src/core/ext/census/census_interface.h +10 -25
- data/src/core/ext/census/census_rpc_stats.h +10 -25
- data/src/core/ext/census/context.c +10 -25
- data/src/core/ext/census/gen/census.pb.c +10 -25
- data/src/core/ext/census/gen/census.pb.h +10 -25
- data/src/core/ext/census/gen/trace_context.pb.c +10 -25
- data/src/core/ext/census/gen/trace_context.pb.h +10 -25
- data/src/core/ext/census/grpc_context.c +10 -25
- data/src/core/ext/census/grpc_filter.c +11 -26
- data/src/core/ext/census/grpc_filter.h +10 -25
- data/src/core/ext/census/grpc_plugin.c +10 -25
- data/src/core/ext/census/initialize.c +10 -25
- data/src/core/ext/census/intrusive_hash_map.c +10 -25
- data/src/core/ext/census/intrusive_hash_map.h +10 -25
- data/src/core/ext/census/intrusive_hash_map_internal.h +10 -25
- data/src/core/ext/census/mlog.c +10 -25
- data/src/core/ext/census/mlog.h +10 -25
- data/src/core/ext/census/operation.c +10 -25
- data/src/core/ext/census/placeholders.c +10 -25
- data/src/core/ext/census/resource.c +10 -25
- data/src/core/ext/census/resource.h +10 -25
- data/src/core/ext/census/rpc_metric_id.h +10 -25
- data/src/core/ext/census/trace_context.c +10 -25
- data/src/core/ext/census/trace_context.h +10 -25
- data/src/core/ext/census/trace_label.h +10 -25
- data/src/core/ext/census/trace_propagation.h +10 -25
- data/src/core/ext/census/trace_status.h +10 -25
- data/src/core/ext/census/trace_string.h +10 -25
- data/src/core/ext/census/tracing.c +10 -26
- data/src/core/ext/census/tracing.h +10 -25
- data/src/core/ext/filters/client_channel/channel_connectivity.c +20 -33
- data/src/core/ext/filters/client_channel/client_channel.c +617 -520
- data/src/core/ext/filters/client_channel/client_channel.h +15 -28
- data/src/core/ext/filters/client_channel/client_channel_factory.c +13 -31
- data/src/core/ext/filters/client_channel/client_channel_factory.h +10 -25
- data/src/core/ext/filters/client_channel/client_channel_plugin.c +16 -29
- data/src/core/ext/filters/client_channel/connector.c +10 -25
- data/src/core/ext/filters/client_channel/connector.h +10 -25
- data/src/core/ext/filters/client_channel/http_connect_handshaker.c +15 -30
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -25
- data/src/core/ext/filters/client_channel/http_proxy.c +112 -38
- data/src/core/ext/filters/client_channel/http_proxy.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy.c +32 -36
- data/src/core/ext/filters/client_channel/lb_policy.h +24 -27
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c +14 -30
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c +464 -279
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +15 -28
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c +40 -48
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c +65 -49
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +31 -31
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c +47 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +11 -26
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +13 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +27 -21
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +373 -136
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +504 -279
- data/src/core/ext/filters/client_channel/lb_policy_factory.c +12 -31
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +12 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.c +10 -25
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -25
- data/src/core/ext/filters/client_channel/parse_address.c +10 -25
- data/src/core/ext/filters/client_channel/parse_address.h +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper.c +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper.h +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.c +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +10 -25
- data/src/core/ext/filters/client_channel/resolver.c +33 -38
- data/src/core/ext/filters/client_channel/resolver.h +19 -30
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c +153 -50
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +14 -27
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c +33 -30
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c +326 -116
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +35 -36
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c +19 -34
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c +254 -0
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +60 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c +16 -28
- data/src/core/ext/filters/client_channel/resolver_factory.c +10 -25
- data/src/core/ext/filters/client_channel/resolver_factory.h +10 -25
- data/src/core/ext/filters/client_channel/resolver_registry.c +10 -25
- data/src/core/ext/filters/client_channel/resolver_registry.h +10 -25
- data/src/core/ext/filters/client_channel/retry_throttle.c +23 -34
- data/src/core/ext/filters/client_channel/retry_throttle.h +10 -25
- data/src/core/ext/filters/client_channel/subchannel.c +33 -55
- data/src/core/ext/filters/client_channel/subchannel.h +16 -26
- data/src/core/ext/filters/client_channel/subchannel_index.c +55 -92
- data/src/core/ext/filters/client_channel/subchannel_index.h +26 -29
- data/src/core/ext/filters/client_channel/uri_parser.c +10 -25
- data/src/core/ext/filters/client_channel/uri_parser.h +10 -25
- data/src/core/ext/filters/deadline/deadline_filter.c +30 -45
- data/src/core/ext/filters/deadline/deadline_filter.h +10 -25
- data/src/core/ext/filters/http/client/http_client_filter.c +255 -294
- data/src/core/ext/filters/http/client/http_client_filter.h +10 -25
- data/src/core/ext/filters/http/http_filters_plugin.c +11 -26
- data/src/core/ext/filters/http/message_compress/message_compress_filter.c +133 -105
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +10 -25
- data/src/core/ext/filters/http/server/http_server_filter.c +17 -32
- data/src/core/ext/filters/http/server/http_server_filter.h +10 -25
- data/src/core/ext/filters/load_reporting/load_reporting.c +11 -30
- data/src/core/ext/filters/load_reporting/load_reporting.h +10 -25
- data/src/core/ext/filters/load_reporting/load_reporting_filter.c +11 -26
- data/src/core/ext/filters/load_reporting/load_reporting_filter.h +10 -25
- data/src/core/ext/filters/max_age/max_age_filter.c +28 -43
- data/src/core/ext/filters/max_age/max_age_filter.h +10 -25
- data/src/core/ext/filters/message_size/message_size_filter.c +24 -37
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -25
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c +16 -31
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +10 -25
- data/src/core/ext/filters/workarounds/workaround_utils.c +12 -26
- data/src/core/ext/filters/workarounds/workaround_utils.h +11 -26
- data/src/core/ext/transport/chttp2/alpn/alpn.c +10 -25
- data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +13 -28
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +10 -25
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +13 -30
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +12 -29
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +13 -30
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +11 -26
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -25
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +10 -25
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +10 -25
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +11 -25
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +10 -25
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +15 -27
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +421 -443
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -25
- data/src/core/ext/transport/chttp2/transport/flow_control.c +500 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_data.c +20 -28
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +11 -26
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +11 -26
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +16 -29
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +17 -33
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +18 -31
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +15 -30
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -25
- data/src/core/ext/transport/chttp2/transport/http2_settings.c +10 -25
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -25
- data/src/core/ext/transport/chttp2/transport/huffsyms.c +10 -25
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +10 -25
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +10 -25
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +10 -25
- data/src/core/ext/transport/chttp2/transport/internal.h +191 -179
- data/src/core/ext/transport/chttp2/transport/parsing.c +33 -102
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +26 -28
- data/src/core/ext/transport/chttp2/transport/stream_map.c +10 -25
- data/src/core/ext/transport/chttp2/transport/stream_map.h +10 -25
- data/src/core/ext/transport/chttp2/transport/varint.c +14 -25
- data/src/core/ext/transport/chttp2/transport/varint.h +10 -25
- data/src/core/ext/transport/chttp2/transport/writing.c +164 -106
- data/src/core/ext/transport/inproc/inproc_plugin.c +29 -0
- data/src/core/ext/transport/inproc/inproc_transport.c +1303 -0
- data/src/core/ext/transport/inproc/inproc_transport.h +41 -0
- data/src/core/lib/channel/channel_args.c +52 -27
- data/src/core/lib/channel/channel_args.h +18 -27
- data/src/core/lib/channel/channel_stack.c +11 -26
- data/src/core/lib/channel/channel_stack.h +12 -27
- data/src/core/lib/channel/channel_stack_builder.c +11 -26
- data/src/core/lib/channel/channel_stack_builder.h +10 -25
- data/src/core/lib/channel/connected_channel.c +10 -25
- data/src/core/lib/channel/connected_channel.h +10 -25
- data/src/core/lib/channel/context.h +10 -25
- data/src/core/lib/channel/handshaker.c +14 -29
- data/src/core/lib/channel/handshaker.h +10 -25
- data/src/core/lib/channel/handshaker_factory.c +10 -25
- data/src/core/lib/channel/handshaker_factory.h +10 -25
- data/src/core/lib/channel/handshaker_registry.c +10 -25
- data/src/core/lib/channel/handshaker_registry.h +10 -25
- data/src/core/lib/compression/algorithm_metadata.h +10 -25
- data/src/core/lib/compression/compression.c +10 -25
- data/src/core/lib/compression/message_compress.c +10 -25
- data/src/core/lib/compression/message_compress.h +10 -25
- data/src/core/lib/compression/stream_compression.c +191 -0
- data/src/core/lib/compression/stream_compression.h +90 -0
- data/src/core/lib/debug/trace.c +28 -29
- data/src/core/lib/debug/trace.h +16 -30
- data/src/core/lib/http/format_request.c +10 -25
- data/src/core/lib/http/format_request.h +10 -25
- data/src/core/lib/http/httpcli.c +19 -35
- data/src/core/lib/http/httpcli.h +10 -25
- data/src/core/lib/http/httpcli_security_connector.c +17 -30
- data/src/core/lib/http/parser.c +11 -26
- data/src/core/lib/http/parser.h +10 -25
- data/src/core/lib/iomgr/closure.c +62 -25
- data/src/core/lib/iomgr/closure.h +81 -26
- data/src/core/lib/iomgr/combiner.c +103 -200
- data/src/core/lib/iomgr/combiner.h +14 -32
- data/src/core/lib/iomgr/endpoint.c +10 -29
- data/src/core/lib/iomgr/endpoint.h +10 -29
- data/src/core/lib/iomgr/endpoint_pair.h +10 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.c +10 -25
- data/src/core/lib/iomgr/endpoint_pair_uv.c +10 -25
- data/src/core/lib/iomgr/endpoint_pair_windows.c +10 -25
- data/src/core/lib/iomgr/error.c +45 -46
- data/src/core/lib/iomgr/error.h +21 -34
- data/src/core/lib/iomgr/error_internal.h +10 -25
- data/src/core/lib/iomgr/ev_epoll1_linux.c +279 -179
- data/src/core/lib/iomgr/ev_epoll1_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c +75 -264
- data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c +44 -199
- data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epollex_linux.c +184 -247
- data/src/core/lib/iomgr/ev_epollex_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epollsig_linux.c +116 -323
- data/src/core/lib/iomgr/ev_epollsig_linux.h +10 -25
- data/src/core/lib/iomgr/ev_poll_posix.c +328 -184
- data/src/core/lib/iomgr/ev_poll_posix.h +10 -25
- data/src/core/lib/iomgr/ev_posix.c +25 -56
- data/src/core/lib/iomgr/ev_posix.h +15 -44
- data/src/core/lib/iomgr/ev_windows.c +11 -26
- data/src/core/lib/iomgr/exec_ctx.c +36 -45
- data/src/core/lib/iomgr/exec_ctx.h +10 -25
- data/src/core/lib/iomgr/executor.c +152 -127
- data/src/core/lib/iomgr/executor.h +18 -26
- data/src/core/lib/iomgr/gethostname.h +26 -0
- data/src/core/lib/iomgr/gethostname_fallback.c +27 -0
- data/src/core/lib/iomgr/gethostname_host_name_max.c +37 -0
- data/src/core/lib/iomgr/gethostname_sysconf.c +37 -0
- data/src/core/lib/iomgr/iocp_windows.c +10 -25
- data/src/core/lib/iomgr/iocp_windows.h +10 -25
- data/src/core/lib/iomgr/iomgr.c +17 -28
- data/src/core/lib/iomgr/iomgr.h +12 -27
- data/src/core/lib/iomgr/iomgr_internal.h +10 -25
- data/src/core/lib/iomgr/iomgr_posix.c +11 -26
- data/src/core/lib/iomgr/iomgr_posix.h +10 -25
- data/src/core/lib/iomgr/iomgr_uv.c +19 -26
- data/src/core/lib/iomgr/iomgr_uv.h +37 -0
- data/src/core/lib/iomgr/iomgr_windows.c +10 -25
- data/src/core/lib/iomgr/is_epollexclusive_available.c +10 -25
- data/src/core/lib/iomgr/is_epollexclusive_available.h +10 -25
- data/src/core/lib/iomgr/load_file.c +10 -25
- data/src/core/lib/iomgr/load_file.h +10 -25
- data/src/core/lib/iomgr/lockfree_event.c +22 -35
- data/src/core/lib/iomgr/lockfree_event.h +13 -27
- data/src/core/lib/iomgr/nameser.h +104 -0
- data/src/core/lib/iomgr/network_status_tracker.c +10 -25
- data/src/core/lib/iomgr/network_status_tracker.h +10 -25
- data/src/core/lib/iomgr/polling_entity.c +10 -25
- data/src/core/lib/iomgr/polling_entity.h +14 -34
- data/src/core/lib/iomgr/pollset.h +14 -25
- data/src/core/lib/iomgr/pollset_set.h +10 -25
- data/src/core/lib/iomgr/pollset_set_uv.c +10 -25
- data/src/core/lib/iomgr/pollset_set_windows.c +10 -25
- data/src/core/lib/iomgr/pollset_set_windows.h +10 -25
- data/src/core/lib/iomgr/pollset_uv.c +25 -26
- data/src/core/lib/iomgr/pollset_uv.h +10 -25
- data/src/core/lib/iomgr/pollset_windows.c +17 -27
- data/src/core/lib/iomgr/pollset_windows.h +10 -25
- data/src/core/lib/iomgr/port.h +24 -25
- data/src/core/lib/iomgr/resolve_address.h +10 -25
- data/src/core/lib/iomgr/resolve_address_posix.c +13 -28
- data/src/core/lib/iomgr/resolve_address_uv.c +31 -35
- data/src/core/lib/iomgr/resolve_address_windows.c +13 -28
- data/src/core/lib/iomgr/resource_quota.c +52 -67
- data/src/core/lib/iomgr/resource_quota.h +10 -25
- data/src/core/lib/iomgr/sockaddr.h +10 -25
- data/src/core/lib/iomgr/sockaddr_posix.h +10 -25
- data/src/core/lib/iomgr/sockaddr_utils.c +15 -25
- data/src/core/lib/iomgr/sockaddr_utils.h +12 -25
- data/src/core/lib/iomgr/sockaddr_windows.h +10 -25
- data/src/core/lib/iomgr/socket_factory_posix.c +13 -31
- data/src/core/lib/iomgr/socket_factory_posix.h +10 -25
- data/src/core/lib/iomgr/socket_mutator.c +14 -31
- data/src/core/lib/iomgr/socket_mutator.h +10 -25
- data/src/core/lib/iomgr/socket_utils.h +10 -25
- data/src/core/lib/iomgr/socket_utils_common_posix.c +10 -25
- data/src/core/lib/iomgr/socket_utils_linux.c +10 -25
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -25
- data/src/core/lib/iomgr/socket_utils_posix.h +10 -25
- data/src/core/lib/iomgr/socket_utils_uv.c +10 -25
- data/src/core/lib/iomgr/socket_utils_windows.c +10 -25
- data/src/core/lib/iomgr/socket_windows.c +12 -27
- data/src/core/lib/iomgr/socket_windows.h +10 -25
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +10 -25
- data/src/core/lib/iomgr/tcp_client.h +10 -25
- data/src/core/lib/iomgr/tcp_client_posix.c +21 -34
- data/src/core/lib/iomgr/tcp_client_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_client_uv.c +18 -27
- data/src/core/lib/iomgr/tcp_client_windows.c +14 -29
- data/src/core/lib/iomgr/tcp_posix.c +36 -55
- data/src/core/lib/iomgr/tcp_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_server.h +10 -25
- data/src/core/lib/iomgr/tcp_server_posix.c +16 -31
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.c +11 -26
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c +10 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c +10 -25
- data/src/core/lib/iomgr/tcp_server_uv.c +103 -64
- data/src/core/lib/iomgr/tcp_server_windows.c +14 -29
- data/src/core/lib/iomgr/tcp_uv.c +41 -45
- data/src/core/lib/iomgr/tcp_uv.h +10 -25
- data/src/core/lib/iomgr/tcp_windows.c +39 -53
- data/src/core/lib/iomgr/tcp_windows.h +10 -25
- data/src/core/lib/iomgr/time_averaged_stats.c +10 -25
- data/src/core/lib/iomgr/time_averaged_stats.h +10 -25
- data/src/core/lib/iomgr/timer.h +18 -27
- data/src/core/lib/iomgr/timer_generic.c +91 -87
- data/src/core/lib/iomgr/timer_generic.h +10 -25
- data/src/core/lib/iomgr/timer_heap.c +10 -25
- data/src/core/lib/iomgr/timer_heap.h +10 -25
- data/src/core/lib/iomgr/timer_manager.c +178 -100
- data/src/core/lib/iomgr/timer_manager.h +10 -25
- data/src/core/lib/iomgr/timer_uv.c +23 -33
- data/src/core/lib/iomgr/timer_uv.h +10 -25
- data/src/core/lib/iomgr/udp_server.c +17 -32
- data/src/core/lib/iomgr/udp_server.h +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix.c +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix.h +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_cv.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_cv.h +13 -28
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +10 -25
- data/src/core/lib/iomgr/wakeup_fd_posix.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_posix.h +10 -25
- data/src/core/lib/json/json.c +10 -25
- data/src/core/lib/json/json.h +10 -25
- data/src/core/lib/json/json_common.h +10 -25
- data/src/core/lib/json/json_reader.c +11 -25
- data/src/core/lib/json/json_reader.h +10 -25
- data/src/core/lib/json/json_string.c +10 -25
- data/src/core/lib/json/json_writer.c +10 -25
- data/src/core/lib/json/json_writer.h +10 -25
- data/src/core/lib/profiling/basic_timers.c +10 -25
- data/src/core/lib/profiling/stap_timers.c +10 -25
- data/src/core/lib/profiling/timers.h +10 -25
- data/src/core/lib/security/context/security_context.c +32 -40
- data/src/core/lib/security/context/security_context.h +15 -26
- data/src/core/lib/security/credentials/composite/composite_credentials.c +76 -81
- data/src/core/lib/security/credentials/composite/composite_credentials.h +10 -25
- data/src/core/lib/security/credentials/credentials.c +29 -49
- data/src/core/lib/security/credentials/credentials.h +48 -61
- data/src/core/lib/security/credentials/credentials_metadata.c +34 -78
- data/src/core/lib/security/credentials/fake/fake_credentials.c +33 -56
- data/src/core/lib/security/credentials/fake/fake_credentials.h +12 -27
- data/src/core/lib/security/credentials/google_default/credentials_generic.c +10 -25
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +12 -27
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -25
- data/src/core/lib/security/credentials/iam/iam_credentials.c +40 -40
- data/src/core/lib/security/credentials/iam/iam_credentials.h +11 -26
- data/src/core/lib/security/credentials/jwt/json_token.c +10 -25
- data/src/core/lib/security/credentials/jwt/json_token.h +10 -25
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +45 -48
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -26
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +53 -33
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +10 -25
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +155 -87
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +118 -82
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -32
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -25
- data/src/core/lib/security/transport/auth_filters.h +10 -25
- data/src/core/lib/security/transport/client_auth_filter.c +217 -112
- data/src/core/lib/security/transport/lb_targets_info.c +16 -32
- data/src/core/lib/security/transport/lb_targets_info.h +10 -25
- data/src/core/lib/security/transport/secure_endpoint.c +29 -43
- data/src/core/lib/security/transport/secure_endpoint.h +10 -25
- data/src/core/lib/security/transport/security_connector.c +80 -61
- data/src/core/lib/security/transport/security_connector.h +35 -35
- data/src/core/lib/security/transport/security_handshaker.c +18 -33
- data/src/core/lib/security/transport/security_handshaker.h +10 -25
- data/src/core/lib/security/transport/server_auth_filter.c +62 -116
- data/src/core/lib/security/transport/tsi_error.c +10 -25
- data/src/core/lib/security/transport/tsi_error.h +10 -25
- data/src/core/lib/security/util/json_util.c +10 -25
- data/src/core/lib/security/util/json_util.h +10 -25
- data/src/core/lib/slice/b64.c +10 -25
- data/src/core/lib/slice/b64.h +10 -25
- data/src/core/lib/slice/percent_encoding.c +10 -25
- data/src/core/lib/slice/percent_encoding.h +10 -25
- data/src/core/lib/slice/slice.c +10 -25
- data/src/core/lib/slice/slice_buffer.c +10 -25
- data/src/core/lib/slice/slice_hash_table.c +48 -26
- data/src/core/lib/slice/slice_hash_table.h +26 -28
- data/src/core/lib/slice/slice_intern.c +10 -25
- data/src/core/lib/slice/slice_internal.h +10 -25
- data/src/core/lib/slice/slice_string_helpers.c +10 -25
- data/src/core/lib/slice/slice_string_helpers.h +10 -25
- data/src/core/lib/support/alloc.c +10 -25
- data/src/core/lib/support/arena.c +12 -27
- data/src/core/lib/support/arena.h +10 -25
- data/src/core/lib/support/atm.c +17 -32
- data/src/core/lib/support/atomic.h +10 -25
- data/src/core/lib/support/atomic_with_atm.h +10 -25
- data/src/core/lib/support/atomic_with_std.h +10 -25
- data/src/core/lib/support/avl.c +101 -101
- data/src/core/lib/support/backoff.c +10 -25
- data/src/core/lib/support/backoff.h +10 -25
- data/src/core/lib/support/block_annotate.h +10 -25
- data/src/core/lib/support/cmdline.c +10 -25
- data/src/core/lib/support/cpu_iphone.c +10 -25
- data/src/core/lib/support/cpu_linux.c +10 -25
- data/src/core/lib/support/cpu_posix.c +10 -25
- data/src/core/lib/support/cpu_windows.c +10 -25
- data/src/core/lib/support/env.h +16 -25
- data/src/core/lib/support/env_linux.c +30 -37
- data/src/core/lib/support/env_posix.c +15 -25
- data/src/core/lib/support/env_windows.c +15 -25
- data/src/core/lib/support/histogram.c +10 -25
- data/src/core/lib/support/host_port.c +10 -25
- data/src/core/lib/support/log.c +20 -29
- data/src/core/lib/support/log_android.c +10 -25
- data/src/core/lib/support/log_linux.c +13 -26
- data/src/core/lib/support/log_posix.c +10 -25
- data/src/core/lib/support/log_windows.c +10 -25
- data/src/core/lib/support/memory.h +10 -25
- data/src/core/lib/support/mpscq.c +11 -49
- data/src/core/lib/support/mpscq.h +11 -50
- data/src/core/lib/support/murmur_hash.c +12 -25
- data/src/core/lib/support/murmur_hash.h +10 -25
- data/src/core/lib/support/spinlock.h +10 -25
- data/src/core/lib/support/stack_lockfree.c +10 -25
- data/src/core/lib/support/stack_lockfree.h +10 -25
- data/src/core/lib/support/string.c +10 -25
- data/src/core/lib/support/string.h +10 -25
- data/src/core/lib/support/string_posix.c +10 -25
- data/src/core/lib/support/string_util_windows.c +10 -25
- data/src/core/lib/support/string_windows.c +10 -25
- data/src/core/lib/support/string_windows.h +10 -25
- data/src/core/lib/support/subprocess_posix.c +10 -25
- data/src/core/lib/support/subprocess_windows.c +10 -25
- data/src/core/lib/support/sync.c +10 -25
- data/src/core/lib/support/sync_posix.c +10 -25
- data/src/core/lib/support/sync_windows.c +10 -25
- data/src/core/lib/support/thd.c +10 -25
- data/src/core/lib/support/thd_internal.h +10 -25
- data/src/core/lib/support/thd_posix.c +10 -25
- data/src/core/lib/support/thd_windows.c +10 -25
- data/src/core/lib/support/time.c +10 -25
- data/src/core/lib/support/time_posix.c +10 -25
- data/src/core/lib/support/time_precise.c +18 -33
- data/src/core/lib/support/time_precise.h +10 -25
- data/src/core/lib/support/time_windows.c +10 -25
- data/src/core/lib/support/tls_pthread.c +10 -25
- data/src/core/lib/support/tmpfile.h +10 -25
- data/src/core/lib/support/tmpfile_msys.c +10 -25
- data/src/core/lib/support/tmpfile_posix.c +10 -25
- data/src/core/lib/support/tmpfile_windows.c +10 -25
- data/src/core/lib/support/wrap_memcpy.c +10 -25
- data/src/core/lib/surface/alarm.c +78 -35
- data/src/core/lib/surface/alarm_internal.h +40 -0
- data/src/core/lib/surface/api_trace.c +11 -26
- data/src/core/lib/surface/api_trace.h +10 -25
- data/src/core/lib/surface/byte_buffer.c +10 -25
- data/src/core/lib/surface/byte_buffer_reader.c +10 -25
- data/src/core/lib/surface/call.c +64 -84
- data/src/core/lib/surface/call.h +11 -26
- data/src/core/lib/surface/call_details.c +10 -25
- data/src/core/lib/surface/call_log_batch.c +10 -25
- data/src/core/lib/surface/call_test_only.h +10 -25
- data/src/core/lib/surface/channel.c +11 -26
- data/src/core/lib/surface/channel.h +11 -26
- data/src/core/lib/surface/channel_init.c +10 -25
- data/src/core/lib/surface/channel_init.h +10 -25
- data/src/core/lib/surface/channel_ping.c +12 -27
- data/src/core/lib/surface/channel_stack_type.c +10 -25
- data/src/core/lib/surface/channel_stack_type.h +10 -25
- data/src/core/lib/surface/completion_queue.c +442 -331
- data/src/core/lib/surface/completion_queue.h +16 -33
- data/src/core/lib/surface/completion_queue_factory.c +10 -25
- data/src/core/lib/surface/completion_queue_factory.h +10 -25
- data/src/core/lib/surface/event_string.c +10 -25
- data/src/core/lib/surface/event_string.h +10 -25
- data/src/core/lib/surface/init.c +38 -47
- data/src/core/lib/surface/init.h +10 -25
- data/src/core/lib/surface/init_secure.c +20 -27
- data/src/core/lib/surface/lame_client.cc +14 -29
- data/src/core/lib/surface/lame_client.h +10 -25
- data/src/core/lib/surface/metadata_array.c +10 -25
- data/src/core/lib/surface/server.c +128 -81
- data/src/core/lib/surface/server.h +10 -25
- data/src/core/lib/surface/validate_metadata.c +10 -25
- data/src/core/lib/surface/validate_metadata.h +10 -25
- data/src/core/lib/surface/version.c +11 -26
- data/src/core/lib/transport/bdp_estimator.c +19 -29
- data/src/core/lib/transport/bdp_estimator.h +16 -29
- data/src/core/lib/transport/byte_stream.c +127 -36
- data/src/core/lib/transport/byte_stream.h +88 -46
- data/src/core/lib/transport/connectivity_state.c +17 -31
- data/src/core/lib/transport/connectivity_state.h +10 -25
- data/src/core/lib/transport/error_utils.c +10 -25
- data/src/core/lib/transport/error_utils.h +10 -25
- data/src/core/lib/transport/http2_errors.h +10 -25
- data/src/core/lib/transport/metadata.c +87 -85
- data/src/core/lib/transport/metadata.h +15 -28
- data/src/core/lib/transport/metadata_batch.c +10 -25
- data/src/core/lib/transport/metadata_batch.h +10 -25
- data/src/core/lib/transport/pid_controller.c +10 -25
- data/src/core/lib/transport/pid_controller.h +10 -25
- data/src/core/lib/transport/service_config.c +11 -26
- data/src/core/lib/transport/service_config.h +10 -25
- data/src/core/lib/transport/static_metadata.c +12 -26
- data/src/core/lib/transport/static_metadata.h +10 -25
- data/src/core/lib/transport/status_conversion.c +10 -25
- data/src/core/lib/transport/status_conversion.h +10 -25
- data/src/core/lib/transport/timeout_encoding.c +10 -25
- data/src/core/lib/transport/timeout_encoding.h +10 -25
- data/src/core/lib/transport/transport.c +60 -53
- data/src/core/lib/transport/transport.h +36 -34
- data/src/core/lib/transport/transport_impl.h +10 -25
- data/src/core/lib/transport/transport_op_string.c +10 -28
- data/src/core/plugin_registry/grpc_plugin_registry.c +22 -25
- data/src/core/tsi/fake_transport_security.c +199 -94
- data/src/core/tsi/fake_transport_security.h +11 -26
- data/src/core/tsi/gts_transport_security.c +40 -0
- data/src/core/tsi/gts_transport_security.h +37 -0
- data/src/core/tsi/ssl_transport_security.c +13 -32
- data/src/core/tsi/ssl_transport_security.h +10 -25
- data/src/core/tsi/ssl_types.h +10 -25
- data/src/core/tsi/transport_security.c +48 -78
- data/src/core/tsi/transport_security.h +18 -27
- data/src/core/tsi/transport_security_adapter.c +17 -29
- data/src/core/tsi/transport_security_adapter.h +10 -25
- data/src/core/tsi/transport_security_grpc.c +64 -0
- data/src/core/tsi/transport_security_grpc.h +80 -0
- data/src/core/tsi/transport_security_interface.h +21 -27
- data/src/ruby/bin/apis/google/protobuf/empty.rb +10 -25
- data/src/ruby/bin/apis/pubsub_demo.rb +10 -25
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb +10 -25
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb +10 -25
- data/src/ruby/bin/math_client.rb +10 -25
- data/src/ruby/bin/math_server.rb +10 -25
- data/src/ruby/bin/math_services_pb.rb +10 -25
- data/src/ruby/bin/noproto_client.rb +10 -25
- data/src/ruby/bin/noproto_server.rb +10 -25
- data/src/ruby/ext/grpc/extconf.rb +10 -25
- data/src/ruby/ext/grpc/rb_byte_buffer.c +10 -25
- data/src/ruby/ext/grpc/rb_byte_buffer.h +10 -25
- data/src/ruby/ext/grpc/rb_call.c +44 -25
- data/src/ruby/ext/grpc/rb_call.h +10 -25
- data/src/ruby/ext/grpc/rb_call_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_call_credentials.h +10 -25
- data/src/ruby/ext/grpc/rb_channel.c +10 -25
- data/src/ruby/ext/grpc/rb_channel.h +10 -25
- data/src/ruby/ext/grpc/rb_channel_args.c +10 -25
- data/src/ruby/ext/grpc/rb_channel_args.h +10 -25
- data/src/ruby/ext/grpc/rb_channel_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_channel_credentials.h +10 -25
- data/src/ruby/ext/grpc/rb_completion_queue.c +10 -25
- data/src/ruby/ext/grpc/rb_completion_queue.h +10 -25
- data/src/ruby/ext/grpc/rb_compression_options.c +10 -25
- data/src/ruby/ext/grpc/rb_compression_options.h +10 -25
- data/src/ruby/ext/grpc/rb_event_thread.c +10 -25
- data/src/ruby/ext/grpc/rb_event_thread.h +10 -25
- data/src/ruby/ext/grpc/rb_grpc.c +10 -25
- data/src/ruby/ext/grpc/rb_grpc.h +10 -25
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -25
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +16 -31
- data/src/ruby/ext/grpc/rb_loader.c +10 -25
- data/src/ruby/ext/grpc/rb_loader.h +10 -25
- data/src/ruby/ext/grpc/rb_server.c +10 -25
- data/src/ruby/ext/grpc/rb_server.h +10 -25
- data/src/ruby/ext/grpc/rb_server_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_server_credentials.h +10 -25
- data/src/ruby/lib/grpc.rb +10 -25
- data/src/ruby/lib/grpc/core/time_consts.rb +10 -25
- data/src/ruby/lib/grpc/errors.rb +16 -30
- data/src/ruby/lib/grpc/generic/active_call.rb +25 -27
- data/src/ruby/lib/grpc/generic/bidi_call.rb +17 -27
- data/src/ruby/lib/grpc/generic/client_stub.rb +10 -25
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +10 -25
- data/src/ruby/lib/grpc/generic/rpc_server.rb +10 -25
- data/src/ruby/lib/grpc/generic/service.rb +10 -25
- data/src/ruby/lib/grpc/grpc.rb +10 -25
- data/src/ruby/lib/grpc/logconfig.rb +10 -25
- data/src/ruby/lib/grpc/notifier.rb +10 -25
- data/src/ruby/lib/grpc/version.rb +11 -26
- data/src/ruby/pb/generate_proto_ruby.sh +10 -25
- data/src/ruby/pb/grpc/health/checker.rb +10 -25
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +10 -25
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +10 -25
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +10 -25
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +10 -25
- data/src/ruby/pb/test/client.rb +10 -25
- data/src/ruby/pb/test/server.rb +10 -25
- data/src/ruby/spec/call_credentials_spec.rb +10 -25
- data/src/ruby/spec/call_spec.rb +43 -25
- data/src/ruby/spec/channel_connection_spec.rb +10 -25
- data/src/ruby/spec/channel_credentials_spec.rb +11 -26
- data/src/ruby/spec/channel_spec.rb +10 -25
- data/src/ruby/spec/client_auth_spec.rb +10 -25
- data/src/ruby/spec/client_server_spec.rb +66 -25
- data/src/ruby/spec/compression_options_spec.rb +10 -25
- data/src/ruby/spec/error_sanity_spec.rb +10 -25
- data/src/ruby/spec/generic/active_call_spec.rb +10 -25
- data/src/ruby/spec/generic/client_stub_spec.rb +146 -35
- data/src/ruby/spec/generic/rpc_desc_spec.rb +10 -25
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +10 -25
- data/src/ruby/spec/generic/rpc_server_spec.rb +124 -34
- data/src/ruby/spec/generic/service_spec.rb +10 -25
- data/src/ruby/spec/pb/duplicate/codegen_spec.rb +10 -25
- data/src/ruby/spec/pb/health/checker_spec.rb +10 -25
- data/src/ruby/spec/server_credentials_spec.rb +10 -25
- data/src/ruby/spec/server_spec.rb +10 -25
- data/src/ruby/spec/spec_helper.rb +10 -25
- data/src/ruby/spec/time_consts_spec.rb +10 -25
- data/third_party/boringssl/crypto/aes/key_wrap.c +138 -0
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +6 -3
- data/third_party/boringssl/crypto/asn1/a_enum.c +4 -1
- data/third_party/boringssl/crypto/asn1/a_gentm.c +20 -15
- data/third_party/boringssl/crypto/asn1/a_int.c +7 -4
- data/third_party/boringssl/crypto/asn1/a_object.c +5 -2
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -1
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -2
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -2
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +35 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +3 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +6 -3
- data/third_party/boringssl/crypto/asn1/tasn_new.c +12 -7
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +22 -8
- data/third_party/boringssl/crypto/{time_support.c → asn1/time_support.c} +1 -1
- data/third_party/boringssl/crypto/asn1/x_long.c +5 -2
- data/third_party/boringssl/crypto/base64/base64.c +7 -5
- data/third_party/boringssl/crypto/bio/bio.c +24 -10
- data/third_party/boringssl/crypto/bio/bio_mem.c +12 -10
- data/third_party/boringssl/crypto/bio/connect.c +7 -18
- data/third_party/boringssl/crypto/bio/fd.c +3 -6
- data/third_party/boringssl/crypto/bio/file.c +6 -6
- data/third_party/boringssl/crypto/bio/hexdump.c +4 -2
- data/third_party/boringssl/crypto/bio/pair.c +30 -344
- data/third_party/boringssl/crypto/bio/socket.c +6 -7
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -3
- data/third_party/boringssl/crypto/bn/add.c +1 -1
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +11 -10
- data/third_party/boringssl/crypto/bn/bn.c +6 -20
- data/third_party/boringssl/crypto/bn/cmp.c +14 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -2
- data/third_party/boringssl/crypto/bn/ctx.c +3 -1
- data/third_party/boringssl/crypto/bn/div.c +108 -51
- data/third_party/boringssl/crypto/bn/exponentiation.c +15 -33
- data/third_party/boringssl/crypto/bn/gcd.c +29 -22
- data/third_party/boringssl/crypto/bn/generic.c +71 -67
- data/third_party/boringssl/crypto/bn/internal.h +19 -6
- data/third_party/boringssl/crypto/bn/kronecker.c +1 -0
- data/third_party/boringssl/crypto/bn/montgomery.c +9 -10
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +47 -0
- data/third_party/boringssl/crypto/bn/mul.c +11 -9
- data/third_party/boringssl/crypto/bn/random.c +6 -3
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -65
- data/third_party/boringssl/crypto/bn/rsaz_exp.h +0 -3
- data/third_party/boringssl/crypto/bn/shift.c +9 -1
- data/third_party/boringssl/crypto/bn/sqrt.c +3 -1
- data/third_party/boringssl/crypto/buf/buf.c +6 -4
- data/third_party/boringssl/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl/crypto/bytestring/ber.c +2 -1
- data/third_party/boringssl/crypto/bytestring/cbb.c +9 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +54 -2
- data/third_party/boringssl/crypto/chacha/chacha.c +1 -1
- data/third_party/boringssl/crypto/cipher/aead.c +3 -3
- data/third_party/boringssl/crypto/cipher/cipher.c +18 -13
- data/third_party/boringssl/crypto/cipher/e_aes.c +335 -281
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +113 -137
- data/third_party/boringssl/crypto/cipher/e_null.c +2 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +54 -49
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +4 -3
- data/third_party/boringssl/crypto/cipher/e_tls.c +5 -5
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +41 -112
- data/third_party/boringssl/crypto/cmac/cmac.c +6 -4
- data/third_party/boringssl/crypto/conf/conf.c +6 -3
- data/third_party/boringssl/crypto/cpu-arm-linux.c +2 -2
- data/third_party/boringssl/crypto/curve25519/curve25519.c +28 -34
- data/third_party/boringssl/crypto/curve25519/spake25519.c +7 -6
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +2 -1
- data/third_party/boringssl/crypto/des/des.c +1 -1
- data/third_party/boringssl/crypto/des/internal.h +58 -46
- data/third_party/boringssl/crypto/dh/dh.c +4 -8
- data/third_party/boringssl/crypto/digest/digest.c +5 -2
- data/third_party/boringssl/crypto/digest/digests.c +70 -33
- data/third_party/boringssl/crypto/digest/md32_common.h +39 -27
- data/third_party/boringssl/crypto/dsa/dsa.c +11 -19
- data/third_party/boringssl/crypto/ec/ec.c +1 -1
- data/third_party/boringssl/crypto/ec/ec_asn1.c +3 -2
- data/third_party/boringssl/crypto/ec/ec_key.c +1 -1
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +6 -11
- data/third_party/boringssl/crypto/ec/oct.c +2 -14
- data/third_party/boringssl/crypto/ec/p224-64.c +78 -122
- data/third_party/boringssl/crypto/ec/p256-64.c +93 -133
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +48 -61
- data/third_party/boringssl/crypto/ec/p256-x86_64.h +113 -0
- data/third_party/boringssl/crypto/ec/simple.c +2 -1
- data/third_party/boringssl/crypto/ec/wnaf.c +52 -43
- data/third_party/boringssl/crypto/ecdh/ecdh.c +4 -2
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +17 -16
- data/third_party/boringssl/crypto/engine/engine.c +3 -1
- data/third_party/boringssl/crypto/err/err.c +5 -5
- data/third_party/boringssl/crypto/evp/evp.c +1 -1
- data/third_party/boringssl/crypto/evp/evp_asn1.c +1 -1
- data/third_party/boringssl/crypto/evp/evp_ctx.c +23 -29
- data/third_party/boringssl/crypto/evp/p_ec.c +2 -1
- data/third_party/boringssl/crypto/evp/p_rsa.c +9 -3
- data/third_party/boringssl/crypto/evp/pbkdf.c +3 -1
- data/third_party/boringssl/crypto/hkdf/hkdf.c +3 -1
- data/third_party/boringssl/crypto/hmac/hmac.c +4 -2
- data/third_party/boringssl/crypto/internal.h +81 -0
- data/third_party/boringssl/crypto/lhash/lhash.c +7 -13
- data/third_party/boringssl/crypto/md4/md4.c +20 -18
- data/third_party/boringssl/crypto/md5/md5.c +31 -21
- data/third_party/boringssl/crypto/mem.c +4 -10
- data/third_party/boringssl/crypto/modes/cbc.c +2 -6
- data/third_party/boringssl/crypto/modes/cfb.c +2 -2
- data/third_party/boringssl/crypto/modes/ctr.c +1 -1
- data/third_party/boringssl/crypto/modes/gcm.c +117 -334
- data/third_party/boringssl/crypto/modes/internal.h +107 -84
- data/third_party/boringssl/crypto/modes/ofb.c +3 -3
- data/third_party/boringssl/crypto/modes/polyval.c +94 -0
- data/third_party/boringssl/crypto/obj/obj.c +13 -8
- data/third_party/boringssl/crypto/obj/obj_dat.h +6109 -5187
- data/third_party/boringssl/crypto/obj/obj_xref.c +55 -57
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -3
- data/third_party/boringssl/crypto/pkcs8/internal.h +27 -8
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +137 -352
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +371 -364
- data/third_party/boringssl/crypto/poly1305/poly1305.c +12 -18
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +2 -2
- data/third_party/boringssl/crypto/{newhope/reduce.c → pool/internal.h} +24 -21
- data/third_party/boringssl/crypto/pool/pool.c +200 -0
- data/third_party/boringssl/crypto/rand/deterministic.c +6 -5
- data/third_party/boringssl/crypto/rand/fuchsia.c +43 -0
- data/third_party/boringssl/crypto/rand/rand.c +7 -7
- data/third_party/boringssl/crypto/rand/urandom.c +136 -22
- data/third_party/boringssl/crypto/rand/windows.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +2 -1
- data/third_party/boringssl/crypto/rsa/padding.c +11 -11
- data/third_party/boringssl/crypto/rsa/rsa.c +4 -4
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +7 -1
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +41 -80
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +346 -0
- data/third_party/boringssl/crypto/sha/sha1.c +60 -42
- data/third_party/boringssl/crypto/sha/sha256.c +4 -2
- data/third_party/boringssl/crypto/sha/sha512.c +9 -7
- data/third_party/boringssl/crypto/stack/stack.c +10 -7
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +2 -2
- data/third_party/boringssl/crypto/x509/a_verify.c +1 -1
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +1 -1
- data/third_party/boringssl/crypto/x509/t_x509.c +78 -38
- data/third_party/boringssl/crypto/x509/x509_cmp.c +8 -5
- data/third_party/boringssl/crypto/x509/x509_lu.c +6 -1
- data/third_party/boringssl/crypto/x509/x509_obj.c +4 -1
- data/third_party/boringssl/crypto/x509/x509_vfy.c +42 -8
- data/third_party/boringssl/crypto/x509/x509_vpm.c +8 -6
- data/third_party/boringssl/crypto/x509/x509name.c +4 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +4 -2
- data/third_party/boringssl/crypto/x509/x_name.c +23 -13
- data/third_party/boringssl/crypto/x509/x_pkey.c +4 -1
- data/third_party/boringssl/crypto/x509/x_x509.c +42 -3
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +1 -1
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +4 -1
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +4 -1
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +6 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +13 -21
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +19 -33
- data/third_party/boringssl/include/openssl/aead.h +9 -20
- data/third_party/boringssl/include/openssl/aes.h +21 -9
- data/third_party/boringssl/include/openssl/asn1.h +9 -1
- data/third_party/boringssl/include/openssl/base.h +33 -6
- data/third_party/boringssl/include/openssl/bio.h +10 -103
- data/third_party/boringssl/include/openssl/bn.h +58 -42
- data/third_party/boringssl/include/openssl/bytestring.h +17 -0
- data/third_party/boringssl/include/openssl/cipher.h +4 -3
- data/third_party/boringssl/include/openssl/conf.h +4 -1
- data/third_party/boringssl/include/openssl/curve25519.h +13 -0
- data/third_party/boringssl/include/openssl/digest.h +5 -3
- data/third_party/boringssl/include/openssl/dsa.h +5 -5
- data/third_party/boringssl/include/openssl/ec.h +2 -2
- data/third_party/boringssl/include/openssl/ecdh.h +3 -4
- data/third_party/boringssl/include/openssl/ecdsa.h +10 -10
- data/third_party/boringssl/include/openssl/err.h +5 -5
- data/third_party/boringssl/include/openssl/evp.h +11 -7
- data/third_party/boringssl/include/openssl/lhash.h +2 -3
- data/third_party/boringssl/include/openssl/lhash_macros.h +56 -14
- data/third_party/boringssl/include/openssl/nid.h +2949 -2916
- data/third_party/boringssl/include/openssl/obj.h +1 -1
- data/third_party/boringssl/include/openssl/pkcs8.h +21 -42
- data/third_party/boringssl/include/openssl/pool.h +87 -0
- data/third_party/boringssl/include/openssl/rand.h +1 -1
- data/third_party/boringssl/include/openssl/rsa.h +4 -2
- data/third_party/boringssl/include/openssl/sha.h +0 -4
- data/third_party/boringssl/include/openssl/ssl.h +327 -662
- data/third_party/boringssl/include/openssl/ssl3.h +1 -21
- data/third_party/boringssl/include/openssl/stack.h +1 -0
- data/third_party/boringssl/include/openssl/stack_macros.h +85 -0
- data/third_party/boringssl/include/openssl/tls1.h +23 -52
- data/third_party/boringssl/include/openssl/type_check.h +4 -0
- data/third_party/boringssl/include/openssl/x509.h +10 -59
- data/third_party/boringssl/include/openssl/x509_vfy.h +7 -1
- data/third_party/boringssl/include/openssl/x509v3.h +4 -4
- data/third_party/boringssl/ssl/bio_ssl.c +175 -0
- data/third_party/boringssl/ssl/custom_extensions.c +24 -21
- data/third_party/boringssl/ssl/d1_both.c +259 -289
- data/third_party/boringssl/ssl/d1_lib.c +8 -20
- data/third_party/boringssl/ssl/d1_pkt.c +6 -15
- data/third_party/boringssl/ssl/dtls_method.c +22 -8
- data/third_party/boringssl/ssl/dtls_record.c +27 -2
- data/third_party/boringssl/ssl/handshake_client.c +460 -579
- data/third_party/boringssl/ssl/handshake_server.c +662 -644
- data/third_party/boringssl/ssl/internal.h +1009 -375
- data/third_party/boringssl/ssl/s3_both.c +312 -162
- data/third_party/boringssl/ssl/s3_lib.c +12 -128
- data/third_party/boringssl/ssl/s3_pkt.c +22 -30
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +28 -22
- data/third_party/boringssl/ssl/ssl_asn1.c +210 -114
- data/third_party/boringssl/ssl/ssl_buffer.c +2 -1
- data/third_party/boringssl/ssl/ssl_cert.c +417 -219
- data/third_party/boringssl/ssl/ssl_cipher.c +191 -393
- data/third_party/boringssl/ssl/ssl_ecdh.c +19 -164
- data/third_party/boringssl/ssl/ssl_file.c +0 -11
- data/third_party/boringssl/ssl/ssl_lib.c +325 -652
- data/third_party/boringssl/ssl/{ssl_rsa.c → ssl_privkey.c} +21 -131
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +76 -0
- data/third_party/boringssl/ssl/ssl_session.c +206 -95
- data/third_party/boringssl/ssl/ssl_stat.c +18 -84
- data/third_party/boringssl/ssl/{s3_enc.c → ssl_transcript.c} +150 -157
- data/third_party/boringssl/ssl/ssl_x509.c +815 -0
- data/third_party/boringssl/ssl/t1_enc.c +188 -174
- data/third_party/boringssl/ssl/t1_lib.c +1064 -764
- data/third_party/boringssl/ssl/tls13_both.c +290 -96
- data/third_party/boringssl/ssl/tls13_client.c +344 -314
- data/third_party/boringssl/ssl/tls13_enc.c +239 -200
- data/third_party/boringssl/ssl/tls13_server.c +374 -366
- data/third_party/boringssl/ssl/tls_method.c +40 -5
- data/third_party/boringssl/ssl/tls_record.c +166 -71
- metadata +39 -25
- data/src/core/lib/iomgr/workqueue.h +0 -87
- data/src/core/lib/iomgr/workqueue_uv.c +0 -65
- data/src/core/lib/iomgr/workqueue_uv.h +0 -37
- data/src/core/lib/iomgr/workqueue_windows.c +0 -63
- data/src/core/lib/iomgr/workqueue_windows.h +0 -37
- data/third_party/boringssl/crypto/bio/buffer.c +0 -496
- data/third_party/boringssl/crypto/newhope/error_correction.c +0 -131
- data/third_party/boringssl/crypto/newhope/internal.h +0 -71
- data/third_party/boringssl/crypto/newhope/newhope.c +0 -174
- data/third_party/boringssl/crypto/newhope/ntt.c +0 -148
- data/third_party/boringssl/crypto/newhope/poly.c +0 -183
- data/third_party/boringssl/crypto/newhope/precomp.c +0 -306
- data/third_party/boringssl/crypto/obj/obj_xref.h +0 -96
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +0 -151
- data/third_party/boringssl/include/openssl/newhope.h +0 -158
- data/third_party/boringssl/include/openssl/time_support.h +0 -91
@@ -1,50 +1,32 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2016
|
4
|
-
* All rights reserved.
|
3
|
+
* Copyright 2016 gRPC authors.
|
5
4
|
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
9
8
|
*
|
10
|
-
*
|
11
|
-
* notice, this list of conditions and the following disclaimer.
|
12
|
-
* * Redistributions in binary form must reproduce the above
|
13
|
-
* copyright notice, this list of conditions and the following disclaimer
|
14
|
-
* in the documentation and/or other materials provided with the
|
15
|
-
* distribution.
|
16
|
-
* * Neither the name of Google Inc. nor the names of its
|
17
|
-
* contributors may be used to endorse or promote products derived from
|
18
|
-
* this software without specific prior written permission.
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19
10
|
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
*
|
25
|
-
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
-
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
-
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
-
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
31
16
|
*
|
32
17
|
*/
|
33
18
|
|
34
19
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H
|
35
20
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H
|
36
21
|
|
37
|
-
#include "src/core/ext/filters/client_channel/connector.h"
|
38
22
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
39
23
|
|
40
24
|
/** \file Provides an index of active subchannels so that they can be
|
41
25
|
shared amongst channels */
|
42
26
|
|
43
|
-
typedef struct grpc_subchannel_key grpc_subchannel_key;
|
44
|
-
|
45
27
|
/** Create a key that can be used to uniquely identify a subchannel */
|
46
28
|
grpc_subchannel_key *grpc_subchannel_key_create(
|
47
|
-
|
29
|
+
const grpc_subchannel_args *args);
|
48
30
|
|
49
31
|
/** Destroy a subchannel key */
|
50
32
|
void grpc_subchannel_key_destroy(grpc_exec_ctx *exec_ctx,
|
@@ -69,9 +51,24 @@ void grpc_subchannel_index_unregister(grpc_exec_ctx *exec_ctx,
|
|
69
51
|
grpc_subchannel_key *key,
|
70
52
|
grpc_subchannel *constructed);
|
71
53
|
|
54
|
+
int grpc_subchannel_key_compare(const grpc_subchannel_key *a,
|
55
|
+
const grpc_subchannel_key *b);
|
56
|
+
|
72
57
|
/** Initialize the subchannel index (global) */
|
73
58
|
void grpc_subchannel_index_init(void);
|
74
59
|
/** Shutdown the subchannel index (global) */
|
75
60
|
void grpc_subchannel_index_shutdown(void);
|
76
61
|
|
62
|
+
/** \em TEST ONLY.
|
63
|
+
* If \a force_creation is true, all key comparisons will be false, resulting in
|
64
|
+
* new subchannels always being created. Otherwise, the keys will be compared as
|
65
|
+
* usual.
|
66
|
+
*
|
67
|
+
* This function is *not* threadsafe on purpose: it should *only* be used in
|
68
|
+
* test code.
|
69
|
+
*
|
70
|
+
* Tests using this function \em MUST run tests with and without \a
|
71
|
+
* force_creation set. */
|
72
|
+
void grpc_subchannel_index_test_only_set_force_creation(bool force_creation);
|
73
|
+
|
77
74
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H */
|
@@ -1,33 +1,18 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015
|
4
|
-
* All rights reserved.
|
3
|
+
* Copyright 2015 gRPC authors.
|
5
4
|
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
9
8
|
*
|
10
|
-
*
|
11
|
-
* notice, this list of conditions and the following disclaimer.
|
12
|
-
* * Redistributions in binary form must reproduce the above
|
13
|
-
* copyright notice, this list of conditions and the following disclaimer
|
14
|
-
* in the documentation and/or other materials provided with the
|
15
|
-
* distribution.
|
16
|
-
* * Neither the name of Google Inc. nor the names of its
|
17
|
-
* contributors may be used to endorse or promote products derived from
|
18
|
-
* this software without specific prior written permission.
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19
10
|
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
*
|
25
|
-
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
-
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
-
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
-
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
31
16
|
*
|
32
17
|
*/
|
33
18
|
|
@@ -1,33 +1,18 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015
|
4
|
-
* All rights reserved.
|
3
|
+
* Copyright 2015 gRPC authors.
|
5
4
|
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
9
8
|
*
|
10
|
-
*
|
11
|
-
* notice, this list of conditions and the following disclaimer.
|
12
|
-
* * Redistributions in binary form must reproduce the above
|
13
|
-
* copyright notice, this list of conditions and the following disclaimer
|
14
|
-
* in the documentation and/or other materials provided with the
|
15
|
-
* distribution.
|
16
|
-
* * Neither the name of Google Inc. nor the names of its
|
17
|
-
* contributors may be used to endorse or promote products derived from
|
18
|
-
* this software without specific prior written permission.
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19
10
|
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
*
|
25
|
-
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
-
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
-
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
-
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
31
16
|
*
|
32
17
|
*/
|
33
18
|
|
@@ -1,32 +1,17 @@
|
|
1
1
|
//
|
2
|
-
// Copyright 2016
|
3
|
-
// All rights reserved.
|
2
|
+
// Copyright 2016 gRPC authors.
|
4
3
|
//
|
5
|
-
//
|
6
|
-
//
|
7
|
-
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
8
7
|
//
|
9
|
-
//
|
10
|
-
// notice, this list of conditions and the following disclaimer.
|
11
|
-
// * Redistributions in binary form must reproduce the above
|
12
|
-
// copyright notice, this list of conditions and the following disclaimer
|
13
|
-
// in the documentation and/or other materials provided with the
|
14
|
-
// distribution.
|
15
|
-
// * Neither the name of Google Inc. nor the names of its
|
16
|
-
// contributors may be used to endorse or promote products derived from
|
17
|
-
// this software without specific prior written permission.
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
18
9
|
//
|
19
|
-
//
|
20
|
-
//
|
21
|
-
//
|
22
|
-
//
|
23
|
-
//
|
24
|
-
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
25
|
-
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
26
|
-
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
27
|
-
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
28
|
-
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
29
|
-
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
30
15
|
//
|
31
16
|
|
32
17
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
@@ -52,8 +37,8 @@
|
|
52
37
|
// Timer callback.
|
53
38
|
static void timer_callback(grpc_exec_ctx* exec_ctx, void* arg,
|
54
39
|
grpc_error* error) {
|
55
|
-
grpc_call_element* elem = arg;
|
56
|
-
grpc_deadline_state* deadline_state = elem->call_data;
|
40
|
+
grpc_call_element* elem = (grpc_call_element*)arg;
|
41
|
+
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
57
42
|
if (error != GRPC_ERROR_CANCELLED) {
|
58
43
|
grpc_call_element_signal_error(
|
59
44
|
exec_ctx, elem,
|
@@ -72,7 +57,7 @@ static void start_timer_if_needed(grpc_exec_ctx* exec_ctx,
|
|
72
57
|
if (gpr_time_cmp(deadline, gpr_inf_future(GPR_CLOCK_MONOTONIC)) == 0) {
|
73
58
|
return;
|
74
59
|
}
|
75
|
-
grpc_deadline_state* deadline_state = elem->call_data;
|
60
|
+
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
76
61
|
grpc_deadline_timer_state cur_state;
|
77
62
|
grpc_closure* closure = NULL;
|
78
63
|
retry:
|
@@ -89,7 +74,7 @@ retry:
|
|
89
74
|
// If we've already created and destroyed a timer, we always create a
|
90
75
|
// new closure: we have no other guarantee that the inlined closure is
|
91
76
|
// not in use (it may hold a pending call to timer_callback)
|
92
|
-
closure =
|
77
|
+
closure = GRPC_CLOSURE_CREATE(timer_callback, elem,
|
93
78
|
grpc_schedule_on_exec_ctx);
|
94
79
|
} else {
|
95
80
|
goto retry;
|
@@ -100,7 +85,7 @@ retry:
|
|
100
85
|
GRPC_DEADLINE_STATE_INITIAL,
|
101
86
|
GRPC_DEADLINE_STATE_PENDING)) {
|
102
87
|
closure =
|
103
|
-
|
88
|
+
GRPC_CLOSURE_INIT(&deadline_state->timer_callback, timer_callback,
|
104
89
|
elem, grpc_schedule_on_exec_ctx);
|
105
90
|
} else {
|
106
91
|
goto retry;
|
@@ -127,10 +112,10 @@ static void cancel_timer_if_needed(grpc_exec_ctx* exec_ctx,
|
|
127
112
|
|
128
113
|
// Callback run when the call is complete.
|
129
114
|
static void on_complete(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
|
130
|
-
grpc_deadline_state* deadline_state = arg;
|
115
|
+
grpc_deadline_state* deadline_state = (grpc_deadline_state*)arg;
|
131
116
|
cancel_timer_if_needed(exec_ctx, deadline_state);
|
132
117
|
// Invoke the next callback.
|
133
|
-
|
118
|
+
GRPC_CLOSURE_RUN(exec_ctx, deadline_state->next_on_complete,
|
134
119
|
GRPC_ERROR_REF(error));
|
135
120
|
}
|
136
121
|
|
@@ -138,7 +123,7 @@ static void on_complete(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
|
|
138
123
|
static void inject_on_complete_cb(grpc_deadline_state* deadline_state,
|
139
124
|
grpc_transport_stream_op_batch* op) {
|
140
125
|
deadline_state->next_on_complete = op->on_complete;
|
141
|
-
|
126
|
+
GRPC_CLOSURE_INIT(&deadline_state->on_complete, on_complete, deadline_state,
|
142
127
|
grpc_schedule_on_exec_ctx);
|
143
128
|
op->on_complete = &deadline_state->on_complete;
|
144
129
|
}
|
@@ -160,7 +145,7 @@ static void start_timer_after_init(grpc_exec_ctx* exec_ctx, void* arg,
|
|
160
145
|
void grpc_deadline_state_init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
161
146
|
grpc_call_stack* call_stack,
|
162
147
|
gpr_timespec deadline) {
|
163
|
-
grpc_deadline_state* deadline_state = elem->call_data;
|
148
|
+
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
164
149
|
deadline_state->call_stack = call_stack;
|
165
150
|
// Deadline will always be infinite on servers, so the timer will only be
|
166
151
|
// set on clients with a finite deadline.
|
@@ -176,21 +161,21 @@ void grpc_deadline_state_init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
|
176
161
|
struct start_timer_after_init_state* state = gpr_malloc(sizeof(*state));
|
177
162
|
state->elem = elem;
|
178
163
|
state->deadline = deadline;
|
179
|
-
|
164
|
+
GRPC_CLOSURE_INIT(&state->closure, start_timer_after_init, state,
|
180
165
|
grpc_schedule_on_exec_ctx);
|
181
|
-
|
166
|
+
GRPC_CLOSURE_SCHED(exec_ctx, &state->closure, GRPC_ERROR_NONE);
|
182
167
|
}
|
183
168
|
}
|
184
169
|
|
185
170
|
void grpc_deadline_state_destroy(grpc_exec_ctx* exec_ctx,
|
186
171
|
grpc_call_element* elem) {
|
187
|
-
grpc_deadline_state* deadline_state = elem->call_data;
|
172
|
+
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
188
173
|
cancel_timer_if_needed(exec_ctx, deadline_state);
|
189
174
|
}
|
190
175
|
|
191
176
|
void grpc_deadline_state_reset(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
192
177
|
gpr_timespec new_deadline) {
|
193
|
-
grpc_deadline_state* deadline_state = elem->call_data;
|
178
|
+
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
194
179
|
cancel_timer_if_needed(exec_ctx, deadline_state);
|
195
180
|
start_timer_if_needed(exec_ctx, elem, new_deadline);
|
196
181
|
}
|
@@ -198,7 +183,7 @@ void grpc_deadline_state_reset(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
|
198
183
|
void grpc_deadline_state_client_start_transport_stream_op_batch(
|
199
184
|
grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
200
185
|
grpc_transport_stream_op_batch* op) {
|
201
|
-
grpc_deadline_state* deadline_state = elem->call_data;
|
186
|
+
grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
|
202
187
|
if (op->cancel_stream) {
|
203
188
|
cancel_timer_if_needed(exec_ctx, deadline_state);
|
204
189
|
} else {
|
@@ -271,8 +256,8 @@ static void client_start_transport_stream_op_batch(
|
|
271
256
|
// Callback for receiving initial metadata on the server.
|
272
257
|
static void recv_initial_metadata_ready(grpc_exec_ctx* exec_ctx, void* arg,
|
273
258
|
grpc_error* error) {
|
274
|
-
grpc_call_element* elem = arg;
|
275
|
-
server_call_data* calld = elem->call_data;
|
259
|
+
grpc_call_element* elem = (grpc_call_element*)arg;
|
260
|
+
server_call_data* calld = (server_call_data*)elem->call_data;
|
276
261
|
// Get deadline from metadata and start the timer if needed.
|
277
262
|
start_timer_if_needed(exec_ctx, elem, calld->recv_initial_metadata->deadline);
|
278
263
|
// Invoke the next callback.
|
@@ -284,7 +269,7 @@ static void recv_initial_metadata_ready(grpc_exec_ctx* exec_ctx, void* arg,
|
|
284
269
|
static void server_start_transport_stream_op_batch(
|
285
270
|
grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
|
286
271
|
grpc_transport_stream_op_batch* op) {
|
287
|
-
server_call_data* calld = elem->call_data;
|
272
|
+
server_call_data* calld = (server_call_data*)elem->call_data;
|
288
273
|
if (op->cancel_stream) {
|
289
274
|
cancel_timer_if_needed(exec_ctx, &calld->base.deadline_state);
|
290
275
|
} else {
|
@@ -296,7 +281,7 @@ static void server_start_transport_stream_op_batch(
|
|
296
281
|
op->payload->recv_initial_metadata.recv_initial_metadata_ready;
|
297
282
|
calld->recv_initial_metadata =
|
298
283
|
op->payload->recv_initial_metadata.recv_initial_metadata;
|
299
|
-
|
284
|
+
GRPC_CLOSURE_INIT(&calld->recv_initial_metadata_ready,
|
300
285
|
recv_initial_metadata_ready, elem,
|
301
286
|
grpc_schedule_on_exec_ctx);
|
302
287
|
op->payload->recv_initial_metadata.recv_initial_metadata_ready =
|
@@ -356,8 +341,8 @@ static bool maybe_add_deadline_filter(grpc_exec_ctx* exec_ctx,
|
|
356
341
|
void* arg) {
|
357
342
|
return grpc_deadline_checking_enabled(
|
358
343
|
grpc_channel_stack_builder_get_channel_arguments(builder))
|
359
|
-
? grpc_channel_stack_builder_prepend_filter(
|
360
|
-
|
344
|
+
? grpc_channel_stack_builder_prepend_filter(
|
345
|
+
builder, (const grpc_channel_filter*)arg, NULL, NULL)
|
361
346
|
: true;
|
362
347
|
}
|
363
348
|
|
@@ -1,32 +1,17 @@
|
|
1
1
|
//
|
2
|
-
// Copyright 2016
|
3
|
-
// All rights reserved.
|
2
|
+
// Copyright 2016 gRPC authors.
|
4
3
|
//
|
5
|
-
//
|
6
|
-
//
|
7
|
-
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
8
7
|
//
|
9
|
-
//
|
10
|
-
// notice, this list of conditions and the following disclaimer.
|
11
|
-
// * Redistributions in binary form must reproduce the above
|
12
|
-
// copyright notice, this list of conditions and the following disclaimer
|
13
|
-
// in the documentation and/or other materials provided with the
|
14
|
-
// distribution.
|
15
|
-
// * Neither the name of Google Inc. nor the names of its
|
16
|
-
// contributors may be used to endorse or promote products derived from
|
17
|
-
// this software without specific prior written permission.
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
18
9
|
//
|
19
|
-
//
|
20
|
-
//
|
21
|
-
//
|
22
|
-
//
|
23
|
-
//
|
24
|
-
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
25
|
-
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
26
|
-
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
27
|
-
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
28
|
-
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
29
|
-
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
30
15
|
//
|
31
16
|
|
32
17
|
#ifndef GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
|
@@ -1,32 +1,17 @@
|
|
1
1
|
/*
|
2
|
-
* Copyright 2015
|
3
|
-
* All rights reserved.
|
2
|
+
* Copyright 2015 gRPC authors.
|
4
3
|
*
|
5
|
-
*
|
6
|
-
*
|
7
|
-
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
8
7
|
*
|
9
|
-
*
|
10
|
-
* notice, this list of conditions and the following disclaimer.
|
11
|
-
* * Redistributions in binary form must reproduce the above
|
12
|
-
* copyright notice, this list of conditions and the following disclaimer
|
13
|
-
* in the documentation and/or other materials provided with the
|
14
|
-
* distribution.
|
15
|
-
* * Neither the name of Google Inc. nor the names of its
|
16
|
-
* contributors may be used to endorse or promote products derived from
|
17
|
-
* this software without specific prior written permission.
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
18
9
|
*
|
19
|
-
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
25
|
-
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
26
|
-
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
27
|
-
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
28
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
29
|
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
30
15
|
*
|
31
16
|
*/
|
32
17
|
|
@@ -51,41 +36,29 @@
|
|
51
36
|
static const size_t kMaxPayloadSizeForGet = 2048;
|
52
37
|
|
53
38
|
typedef struct call_data {
|
39
|
+
// State for handling send_initial_metadata ops.
|
54
40
|
grpc_linked_mdelem method;
|
55
41
|
grpc_linked_mdelem scheme;
|
56
42
|
grpc_linked_mdelem authority;
|
57
43
|
grpc_linked_mdelem te_trailers;
|
58
44
|
grpc_linked_mdelem content_type;
|
59
45
|
grpc_linked_mdelem user_agent;
|
60
|
-
|
46
|
+
// State for handling recv_initial_metadata ops.
|
61
47
|
grpc_metadata_batch *recv_initial_metadata;
|
48
|
+
grpc_closure *original_recv_initial_metadata_ready;
|
49
|
+
grpc_closure recv_initial_metadata_ready;
|
50
|
+
// State for handling recv_trailing_metadata ops.
|
62
51
|
grpc_metadata_batch *recv_trailing_metadata;
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
grpc_transport_stream_op_batch *
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
bool send_message_blocked;
|
74
|
-
|
75
|
-
/** Closure to call when finished with the hc_on_recv hook */
|
76
|
-
grpc_closure *on_done_recv_initial_metadata;
|
77
|
-
grpc_closure *on_done_recv_trailing_metadata;
|
78
|
-
grpc_closure *on_complete;
|
79
|
-
grpc_closure *post_send;
|
80
|
-
|
81
|
-
/** Receive closures are chained: we inject this closure as the on_done_recv
|
82
|
-
up-call on transport_op, and remember to call our on_done_recv member
|
83
|
-
after handling it. */
|
84
|
-
grpc_closure hc_on_recv_initial_metadata;
|
85
|
-
grpc_closure hc_on_recv_trailing_metadata;
|
86
|
-
grpc_closure hc_on_complete;
|
87
|
-
grpc_closure got_slice;
|
88
|
-
grpc_closure send_done;
|
52
|
+
grpc_closure *original_recv_trailing_metadata_on_complete;
|
53
|
+
grpc_closure recv_trailing_metadata_on_complete;
|
54
|
+
// State for handling send_message ops.
|
55
|
+
grpc_transport_stream_op_batch *send_message_batch;
|
56
|
+
size_t send_message_bytes_read;
|
57
|
+
grpc_byte_stream_cache send_message_cache;
|
58
|
+
grpc_caching_byte_stream send_message_caching_stream;
|
59
|
+
grpc_closure on_send_message_next_done;
|
60
|
+
grpc_closure *original_send_message_on_complete;
|
61
|
+
grpc_closure send_message_on_complete;
|
89
62
|
} call_data;
|
90
63
|
|
91
64
|
typedef struct channel_data {
|
@@ -163,7 +136,7 @@ static grpc_error *client_filter_incoming_metadata(grpc_exec_ctx *exec_ctx,
|
|
163
136
|
return GRPC_ERROR_NONE;
|
164
137
|
}
|
165
138
|
|
166
|
-
static void
|
139
|
+
static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx,
|
167
140
|
void *user_data, grpc_error *error) {
|
168
141
|
grpc_call_element *elem = user_data;
|
169
142
|
call_data *calld = elem->call_data;
|
@@ -173,11 +146,13 @@ static void hc_on_recv_initial_metadata(grpc_exec_ctx *exec_ctx,
|
|
173
146
|
} else {
|
174
147
|
GRPC_ERROR_REF(error);
|
175
148
|
}
|
176
|
-
|
149
|
+
GRPC_CLOSURE_RUN(exec_ctx, calld->original_recv_initial_metadata_ready,
|
150
|
+
error);
|
177
151
|
}
|
178
152
|
|
179
|
-
static void
|
180
|
-
|
153
|
+
static void recv_trailing_metadata_on_complete(grpc_exec_ctx *exec_ctx,
|
154
|
+
void *user_data,
|
155
|
+
grpc_error *error) {
|
181
156
|
grpc_call_element *elem = user_data;
|
182
157
|
call_data *calld = elem->call_data;
|
183
158
|
if (error == GRPC_ERROR_NONE) {
|
@@ -186,25 +161,131 @@ static void hc_on_recv_trailing_metadata(grpc_exec_ctx *exec_ctx,
|
|
186
161
|
} else {
|
187
162
|
GRPC_ERROR_REF(error);
|
188
163
|
}
|
189
|
-
|
164
|
+
GRPC_CLOSURE_RUN(exec_ctx, calld->original_recv_trailing_metadata_on_complete,
|
165
|
+
error);
|
190
166
|
}
|
191
167
|
|
192
|
-
static void
|
193
|
-
|
194
|
-
grpc_call_element *elem =
|
195
|
-
call_data *calld = elem->call_data;
|
196
|
-
|
197
|
-
|
198
|
-
|
168
|
+
static void send_message_on_complete(grpc_exec_ctx *exec_ctx, void *arg,
|
169
|
+
grpc_error *error) {
|
170
|
+
grpc_call_element *elem = (grpc_call_element *)arg;
|
171
|
+
call_data *calld = (call_data *)elem->call_data;
|
172
|
+
grpc_byte_stream_cache_destroy(exec_ctx, &calld->send_message_cache);
|
173
|
+
GRPC_CLOSURE_RUN(exec_ctx, calld->original_send_message_on_complete,
|
174
|
+
GRPC_ERROR_REF(error));
|
175
|
+
}
|
176
|
+
|
177
|
+
// Pulls a slice from the send_message byte stream, updating
|
178
|
+
// calld->send_message_bytes_read.
|
179
|
+
static grpc_error *pull_slice_from_send_message(grpc_exec_ctx *exec_ctx,
|
180
|
+
call_data *calld) {
|
181
|
+
grpc_slice incoming_slice;
|
182
|
+
grpc_error *error = grpc_byte_stream_pull(
|
183
|
+
exec_ctx, &calld->send_message_caching_stream.base, &incoming_slice);
|
184
|
+
if (error == GRPC_ERROR_NONE) {
|
185
|
+
calld->send_message_bytes_read += GRPC_SLICE_LENGTH(incoming_slice);
|
186
|
+
grpc_slice_unref_internal(exec_ctx, incoming_slice);
|
199
187
|
}
|
200
|
-
|
188
|
+
return error;
|
201
189
|
}
|
202
190
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
191
|
+
// Reads as many slices as possible from the send_message byte stream.
|
192
|
+
// Upon successful return, if calld->send_message_bytes_read ==
|
193
|
+
// calld->send_message_caching_stream.base.length, then we have completed
|
194
|
+
// reading from the byte stream; otherwise, an async read has been dispatched
|
195
|
+
// and on_send_message_next_done() will be invoked when it is complete.
|
196
|
+
static grpc_error *read_all_available_send_message_data(grpc_exec_ctx *exec_ctx,
|
197
|
+
call_data *calld) {
|
198
|
+
while (grpc_byte_stream_next(exec_ctx,
|
199
|
+
&calld->send_message_caching_stream.base,
|
200
|
+
~(size_t)0, &calld->on_send_message_next_done)) {
|
201
|
+
grpc_error *error = pull_slice_from_send_message(exec_ctx, calld);
|
202
|
+
if (error != GRPC_ERROR_NONE) return error;
|
203
|
+
if (calld->send_message_bytes_read ==
|
204
|
+
calld->send_message_caching_stream.base.length) {
|
205
|
+
break;
|
206
|
+
}
|
207
|
+
}
|
208
|
+
return GRPC_ERROR_NONE;
|
209
|
+
}
|
210
|
+
|
211
|
+
// Async callback for grpc_byte_stream_next().
|
212
|
+
static void on_send_message_next_done(grpc_exec_ctx *exec_ctx, void *arg,
|
213
|
+
grpc_error *error) {
|
214
|
+
grpc_call_element *elem = (grpc_call_element *)arg;
|
215
|
+
call_data *calld = (call_data *)elem->call_data;
|
216
|
+
if (error != GRPC_ERROR_NONE) {
|
217
|
+
grpc_transport_stream_op_batch_finish_with_failure(
|
218
|
+
exec_ctx, calld->send_message_batch, error);
|
219
|
+
return;
|
220
|
+
}
|
221
|
+
error = pull_slice_from_send_message(exec_ctx, calld);
|
222
|
+
if (error != GRPC_ERROR_NONE) {
|
223
|
+
grpc_transport_stream_op_batch_finish_with_failure(
|
224
|
+
exec_ctx, calld->send_message_batch, error);
|
225
|
+
return;
|
226
|
+
}
|
227
|
+
// There may or may not be more to read, but we don't care. If we got
|
228
|
+
// here, then we know that all of the data was not available
|
229
|
+
// synchronously, so we were not able to do a cached call. Instead,
|
230
|
+
// we just reset the byte stream and then send down the batch as-is.
|
231
|
+
grpc_caching_byte_stream_reset(&calld->send_message_caching_stream);
|
232
|
+
grpc_call_next_op(exec_ctx, elem, calld->send_message_batch);
|
233
|
+
}
|
234
|
+
|
235
|
+
static char *slice_buffer_to_string(grpc_slice_buffer *slice_buffer) {
|
236
|
+
char *payload_bytes = gpr_malloc(slice_buffer->length + 1);
|
237
|
+
size_t offset = 0;
|
238
|
+
for (size_t i = 0; i < slice_buffer->count; ++i) {
|
239
|
+
memcpy(payload_bytes + offset,
|
240
|
+
GRPC_SLICE_START_PTR(slice_buffer->slices[i]),
|
241
|
+
GRPC_SLICE_LENGTH(slice_buffer->slices[i]));
|
242
|
+
offset += GRPC_SLICE_LENGTH(slice_buffer->slices[i]);
|
243
|
+
}
|
244
|
+
*(payload_bytes + offset) = '\0';
|
245
|
+
return payload_bytes;
|
246
|
+
}
|
247
|
+
|
248
|
+
// Modifies the path entry in the batch's send_initial_metadata to
|
249
|
+
// append the base64-encoded query for a GET request.
|
250
|
+
static grpc_error *update_path_for_get(grpc_exec_ctx *exec_ctx,
|
251
|
+
grpc_call_element *elem,
|
252
|
+
grpc_transport_stream_op_batch *batch) {
|
253
|
+
call_data *calld = (call_data *)elem->call_data;
|
254
|
+
grpc_slice path_slice =
|
255
|
+
GRPC_MDVALUE(batch->payload->send_initial_metadata.send_initial_metadata
|
256
|
+
->idx.named.path->md);
|
257
|
+
/* sum up individual component's lengths and allocate enough memory to
|
258
|
+
* hold combined path+query */
|
259
|
+
size_t estimated_len = GRPC_SLICE_LENGTH(path_slice);
|
260
|
+
estimated_len++; /* for the '?' */
|
261
|
+
estimated_len += grpc_base64_estimate_encoded_size(
|
262
|
+
batch->payload->send_message.send_message->length, true /* url_safe */,
|
263
|
+
false /* multi_line */);
|
264
|
+
grpc_slice path_with_query_slice = GRPC_SLICE_MALLOC(estimated_len);
|
265
|
+
/* memcopy individual pieces into this slice */
|
266
|
+
char *write_ptr = (char *)GRPC_SLICE_START_PTR(path_with_query_slice);
|
267
|
+
char *original_path = (char *)GRPC_SLICE_START_PTR(path_slice);
|
268
|
+
memcpy(write_ptr, original_path, GRPC_SLICE_LENGTH(path_slice));
|
269
|
+
write_ptr += GRPC_SLICE_LENGTH(path_slice);
|
270
|
+
*write_ptr++ = '?';
|
271
|
+
char *payload_bytes =
|
272
|
+
slice_buffer_to_string(&calld->send_message_cache.cache_buffer);
|
273
|
+
grpc_base64_encode_core((char *)write_ptr, payload_bytes,
|
274
|
+
batch->payload->send_message.send_message->length,
|
275
|
+
true /* url_safe */, false /* multi_line */);
|
276
|
+
gpr_free(payload_bytes);
|
277
|
+
/* remove trailing unused memory and add trailing 0 to terminate string */
|
278
|
+
char *t = (char *)GRPC_SLICE_START_PTR(path_with_query_slice);
|
279
|
+
/* safe to use strlen since base64_encode will always add '\0' */
|
280
|
+
path_with_query_slice =
|
281
|
+
grpc_slice_sub_no_ref(path_with_query_slice, 0, strlen(t));
|
282
|
+
/* substitute previous path with the new path+query */
|
283
|
+
grpc_mdelem mdelem_path_and_query =
|
284
|
+
grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_PATH, path_with_query_slice);
|
285
|
+
grpc_metadata_batch *b =
|
286
|
+
batch->payload->send_initial_metadata.send_initial_metadata;
|
287
|
+
return grpc_metadata_batch_substitute(exec_ctx, b, b->idx.named.path,
|
288
|
+
mdelem_path_and_query);
|
208
289
|
}
|
209
290
|
|
210
291
|
static void remove_if_present(grpc_exec_ctx *exec_ctx,
|
@@ -215,273 +296,153 @@ static void remove_if_present(grpc_exec_ctx *exec_ctx,
|
|
215
296
|
}
|
216
297
|
}
|
217
298
|
|
218
|
-
static void
|
219
|
-
|
299
|
+
static void hc_start_transport_stream_op_batch(
|
300
|
+
grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
|
301
|
+
grpc_transport_stream_op_batch *batch) {
|
220
302
|
call_data *calld = elem->call_data;
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
&calld->got_slice)) {
|
225
|
-
grpc_byte_stream_pull(exec_ctx,
|
226
|
-
calld->send_op->payload->send_message.send_message,
|
227
|
-
&calld->incoming_slice);
|
228
|
-
if (GRPC_SLICE_LENGTH(calld->incoming_slice) > 0) {
|
229
|
-
memcpy(wrptr, GRPC_SLICE_START_PTR(calld->incoming_slice),
|
230
|
-
GRPC_SLICE_LENGTH(calld->incoming_slice));
|
231
|
-
}
|
232
|
-
wrptr += GRPC_SLICE_LENGTH(calld->incoming_slice);
|
233
|
-
grpc_slice_buffer_add(&calld->slices, calld->incoming_slice);
|
234
|
-
if (calld->send_length == calld->slices.length) {
|
235
|
-
calld->send_message_blocked = false;
|
236
|
-
break;
|
237
|
-
}
|
238
|
-
}
|
239
|
-
}
|
303
|
+
channel_data *channeld = elem->channel_data;
|
304
|
+
GPR_TIMER_BEGIN("hc_start_transport_stream_op_batch", 0);
|
305
|
+
GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
|
240
306
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
/* Should never reach here */
|
250
|
-
abort();
|
251
|
-
}
|
252
|
-
grpc_slice_buffer_add(&calld->slices, calld->incoming_slice);
|
253
|
-
if (calld->send_length == calld->slices.length) {
|
254
|
-
/* Pass down the original send_message op that was blocked.*/
|
255
|
-
grpc_slice_buffer_stream_init(&calld->replacement_stream, &calld->slices,
|
256
|
-
calld->send_flags);
|
257
|
-
calld->send_op->payload->send_message.send_message =
|
258
|
-
&calld->replacement_stream.base;
|
259
|
-
calld->post_send = calld->send_op->on_complete;
|
260
|
-
calld->send_op->on_complete = &calld->send_done;
|
261
|
-
grpc_call_next_op(exec_ctx, elem, calld->send_op);
|
262
|
-
} else {
|
263
|
-
continue_send_message(exec_ctx, elem);
|
307
|
+
if (batch->recv_initial_metadata) {
|
308
|
+
/* substitute our callback for the higher callback */
|
309
|
+
calld->recv_initial_metadata =
|
310
|
+
batch->payload->recv_initial_metadata.recv_initial_metadata;
|
311
|
+
calld->original_recv_initial_metadata_ready =
|
312
|
+
batch->payload->recv_initial_metadata.recv_initial_metadata_ready;
|
313
|
+
batch->payload->recv_initial_metadata.recv_initial_metadata_ready =
|
314
|
+
&calld->recv_initial_metadata_ready;
|
264
315
|
}
|
265
|
-
}
|
266
316
|
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
317
|
+
if (batch->recv_trailing_metadata) {
|
318
|
+
/* substitute our callback for the higher callback */
|
319
|
+
calld->recv_trailing_metadata =
|
320
|
+
batch->payload->recv_trailing_metadata.recv_trailing_metadata;
|
321
|
+
calld->original_recv_trailing_metadata_on_complete = batch->on_complete;
|
322
|
+
batch->on_complete = &calld->recv_trailing_metadata_on_complete;
|
323
|
+
}
|
274
324
|
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
325
|
+
grpc_error *error = GRPC_ERROR_NONE;
|
326
|
+
bool batch_will_be_handled_asynchronously = false;
|
327
|
+
if (batch->send_initial_metadata) {
|
328
|
+
// Decide which HTTP VERB to use. We use GET if the request is marked
|
329
|
+
// cacheable, and the operation contains both initial metadata and send
|
330
|
+
// message, and the payload is below the size threshold, and all the data
|
331
|
+
// for this request is immediately available.
|
280
332
|
grpc_mdelem method = GRPC_MDELEM_METHOD_POST;
|
281
|
-
if (
|
282
|
-
(
|
333
|
+
if (batch->send_message &&
|
334
|
+
(batch->payload->send_initial_metadata.send_initial_metadata_flags &
|
283
335
|
GRPC_INITIAL_METADATA_CACHEABLE_REQUEST) &&
|
284
|
-
|
336
|
+
batch->payload->send_message.send_message->length <
|
285
337
|
channeld->max_payload_size_for_get) {
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
continue_send_message(exec_ctx, elem);
|
308
|
-
|
309
|
-
if (calld->send_message_blocked == false) {
|
310
|
-
/* when all the send_message data is available, then modify the path
|
311
|
-
* MDELEM by appending base64 encoded query to the path */
|
312
|
-
const int k_url_safe = 1;
|
313
|
-
const int k_multi_line = 0;
|
314
|
-
const unsigned char k_query_separator = '?';
|
315
|
-
|
316
|
-
grpc_slice path_slice =
|
317
|
-
GRPC_MDVALUE(op->payload->send_initial_metadata
|
318
|
-
.send_initial_metadata->idx.named.path->md);
|
319
|
-
/* sum up individual component's lengths and allocate enough memory to
|
320
|
-
* hold combined path+query */
|
321
|
-
size_t estimated_len = GRPC_SLICE_LENGTH(path_slice);
|
322
|
-
estimated_len++; /* for the '?' */
|
323
|
-
estimated_len += grpc_base64_estimate_encoded_size(
|
324
|
-
op->payload->send_message.send_message->length, k_url_safe,
|
325
|
-
k_multi_line);
|
326
|
-
grpc_slice path_with_query_slice = GRPC_SLICE_MALLOC(estimated_len);
|
327
|
-
|
328
|
-
/* memcopy individual pieces into this slice */
|
329
|
-
uint8_t *write_ptr =
|
330
|
-
(uint8_t *)GRPC_SLICE_START_PTR(path_with_query_slice);
|
331
|
-
uint8_t *original_path = (uint8_t *)GRPC_SLICE_START_PTR(path_slice);
|
332
|
-
memcpy(write_ptr, original_path, GRPC_SLICE_LENGTH(path_slice));
|
333
|
-
write_ptr += GRPC_SLICE_LENGTH(path_slice);
|
334
|
-
|
335
|
-
*write_ptr = k_query_separator;
|
336
|
-
write_ptr++; /* for the '?' */
|
337
|
-
|
338
|
-
grpc_base64_encode_core((char *)write_ptr, calld->payload_bytes,
|
339
|
-
op->payload->send_message.send_message->length,
|
340
|
-
k_url_safe, k_multi_line);
|
341
|
-
|
342
|
-
/* remove trailing unused memory and add trailing 0 to terminate string
|
343
|
-
*/
|
344
|
-
char *t = (char *)GRPC_SLICE_START_PTR(path_with_query_slice);
|
345
|
-
/* safe to use strlen since base64_encode will always add '\0' */
|
346
|
-
path_with_query_slice =
|
347
|
-
grpc_slice_sub_no_ref(path_with_query_slice, 0, strlen(t));
|
348
|
-
|
349
|
-
/* substitute previous path with the new path+query */
|
350
|
-
grpc_mdelem mdelem_path_and_query = grpc_mdelem_from_slices(
|
351
|
-
exec_ctx, GRPC_MDSTR_PATH, path_with_query_slice);
|
352
|
-
grpc_metadata_batch *b =
|
353
|
-
op->payload->send_initial_metadata.send_initial_metadata;
|
354
|
-
error = grpc_metadata_batch_substitute(exec_ctx, b, b->idx.named.path,
|
355
|
-
mdelem_path_and_query);
|
356
|
-
if (error != GRPC_ERROR_NONE) return error;
|
357
|
-
|
358
|
-
calld->on_complete = op->on_complete;
|
359
|
-
op->on_complete = &calld->hc_on_complete;
|
360
|
-
op->send_message = false;
|
338
|
+
calld->send_message_bytes_read = 0;
|
339
|
+
grpc_byte_stream_cache_init(&calld->send_message_cache,
|
340
|
+
batch->payload->send_message.send_message);
|
341
|
+
grpc_caching_byte_stream_init(&calld->send_message_caching_stream,
|
342
|
+
&calld->send_message_cache);
|
343
|
+
batch->payload->send_message.send_message =
|
344
|
+
&calld->send_message_caching_stream.base;
|
345
|
+
calld->original_send_message_on_complete = batch->on_complete;
|
346
|
+
batch->on_complete = &calld->send_message_on_complete;
|
347
|
+
calld->send_message_batch = batch;
|
348
|
+
error = read_all_available_send_message_data(exec_ctx, calld);
|
349
|
+
if (error != GRPC_ERROR_NONE) goto done;
|
350
|
+
// If all the data has been read, then we can use GET.
|
351
|
+
if (calld->send_message_bytes_read ==
|
352
|
+
calld->send_message_caching_stream.base.length) {
|
353
|
+
method = GRPC_MDELEM_METHOD_GET;
|
354
|
+
error = update_path_for_get(exec_ctx, elem, batch);
|
355
|
+
if (error != GRPC_ERROR_NONE) goto done;
|
356
|
+
batch->send_message = false;
|
357
|
+
grpc_byte_stream_destroy(exec_ctx,
|
358
|
+
&calld->send_message_caching_stream.base);
|
361
359
|
} else {
|
362
|
-
|
360
|
+
// Not all data is available. The batch will be sent down
|
361
|
+
// asynchronously in on_send_message_next_done().
|
362
|
+
batch_will_be_handled_asynchronously = true;
|
363
|
+
// Fall back to POST.
|
363
364
|
gpr_log(GPR_DEBUG,
|
364
|
-
"Request is marked Cacheable but not all data is available
|
365
|
-
|
366
|
-
method = GRPC_MDELEM_METHOD_POST;
|
365
|
+
"Request is marked Cacheable but not all data is available. "
|
366
|
+
"Falling back to POST");
|
367
367
|
}
|
368
|
+
} else if (batch->payload->send_initial_metadata
|
369
|
+
.send_initial_metadata_flags &
|
370
|
+
GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) {
|
371
|
+
method = GRPC_MDELEM_METHOD_PUT;
|
368
372
|
}
|
369
373
|
|
370
|
-
remove_if_present(
|
371
|
-
|
372
|
-
|
373
|
-
remove_if_present(
|
374
|
-
|
375
|
-
|
376
|
-
remove_if_present(
|
377
|
-
|
378
|
-
|
379
|
-
remove_if_present(
|
380
|
-
|
381
|
-
|
382
|
-
remove_if_present(
|
383
|
-
|
384
|
-
|
374
|
+
remove_if_present(
|
375
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
376
|
+
GRPC_BATCH_METHOD);
|
377
|
+
remove_if_present(
|
378
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
379
|
+
GRPC_BATCH_SCHEME);
|
380
|
+
remove_if_present(
|
381
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
382
|
+
GRPC_BATCH_TE);
|
383
|
+
remove_if_present(
|
384
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
385
|
+
GRPC_BATCH_CONTENT_TYPE);
|
386
|
+
remove_if_present(
|
387
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
388
|
+
GRPC_BATCH_USER_AGENT);
|
385
389
|
|
386
390
|
/* Send : prefixed headers, which have to be before any application
|
387
391
|
layer headers. */
|
388
392
|
error = grpc_metadata_batch_add_head(
|
389
|
-
exec_ctx,
|
393
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
390
394
|
&calld->method, method);
|
391
|
-
if (error != GRPC_ERROR_NONE)
|
395
|
+
if (error != GRPC_ERROR_NONE) goto done;
|
392
396
|
error = grpc_metadata_batch_add_head(
|
393
|
-
exec_ctx,
|
397
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
394
398
|
&calld->scheme, channeld->static_scheme);
|
395
|
-
if (error != GRPC_ERROR_NONE)
|
399
|
+
if (error != GRPC_ERROR_NONE) goto done;
|
396
400
|
error = grpc_metadata_batch_add_tail(
|
397
|
-
exec_ctx,
|
401
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
398
402
|
&calld->te_trailers, GRPC_MDELEM_TE_TRAILERS);
|
399
|
-
if (error != GRPC_ERROR_NONE)
|
403
|
+
if (error != GRPC_ERROR_NONE) goto done;
|
400
404
|
error = grpc_metadata_batch_add_tail(
|
401
|
-
exec_ctx,
|
405
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
402
406
|
&calld->content_type, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC);
|
403
|
-
if (error != GRPC_ERROR_NONE)
|
407
|
+
if (error != GRPC_ERROR_NONE) goto done;
|
404
408
|
error = grpc_metadata_batch_add_tail(
|
405
|
-
exec_ctx,
|
409
|
+
exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
|
406
410
|
&calld->user_agent, GRPC_MDELEM_REF(channeld->user_agent));
|
407
|
-
if (error != GRPC_ERROR_NONE)
|
411
|
+
if (error != GRPC_ERROR_NONE) goto done;
|
408
412
|
}
|
409
413
|
|
410
|
-
|
411
|
-
/* substitute our callback for the higher callback */
|
412
|
-
calld->recv_initial_metadata =
|
413
|
-
op->payload->recv_initial_metadata.recv_initial_metadata;
|
414
|
-
calld->on_done_recv_initial_metadata =
|
415
|
-
op->payload->recv_initial_metadata.recv_initial_metadata_ready;
|
416
|
-
op->payload->recv_initial_metadata.recv_initial_metadata_ready =
|
417
|
-
&calld->hc_on_recv_initial_metadata;
|
418
|
-
}
|
419
|
-
|
420
|
-
if (op->recv_trailing_metadata) {
|
421
|
-
/* substitute our callback for the higher callback */
|
422
|
-
calld->recv_trailing_metadata =
|
423
|
-
op->payload->recv_trailing_metadata.recv_trailing_metadata;
|
424
|
-
calld->on_done_recv_trailing_metadata = op->on_complete;
|
425
|
-
op->on_complete = &calld->hc_on_recv_trailing_metadata;
|
426
|
-
}
|
427
|
-
|
428
|
-
return GRPC_ERROR_NONE;
|
429
|
-
}
|
430
|
-
|
431
|
-
static void hc_start_transport_op(grpc_exec_ctx *exec_ctx,
|
432
|
-
grpc_call_element *elem,
|
433
|
-
grpc_transport_stream_op_batch *op) {
|
434
|
-
GPR_TIMER_BEGIN("hc_start_transport_op", 0);
|
435
|
-
GRPC_CALL_LOG_OP(GPR_INFO, elem, op);
|
436
|
-
grpc_error *error = hc_mutate_op(exec_ctx, elem, op);
|
414
|
+
done:
|
437
415
|
if (error != GRPC_ERROR_NONE) {
|
438
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
/* Don't forward the op. send_message contains slices that aren't ready
|
443
|
-
yet. The call will be forwarded by the op_complete of slice read call.
|
444
|
-
*/
|
445
|
-
} else {
|
446
|
-
grpc_call_next_op(exec_ctx, elem, op);
|
447
|
-
}
|
416
|
+
grpc_transport_stream_op_batch_finish_with_failure(
|
417
|
+
exec_ctx, calld->send_message_batch, error);
|
418
|
+
} else if (!batch_will_be_handled_asynchronously) {
|
419
|
+
grpc_call_next_op(exec_ctx, elem, batch);
|
448
420
|
}
|
449
|
-
GPR_TIMER_END("
|
421
|
+
GPR_TIMER_END("hc_start_transport_stream_op_batch", 0);
|
450
422
|
}
|
451
423
|
|
452
424
|
/* Constructor for call_data */
|
453
425
|
static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
|
454
426
|
grpc_call_element *elem,
|
455
427
|
const grpc_call_element_args *args) {
|
456
|
-
call_data *calld = elem->call_data;
|
457
|
-
calld->
|
458
|
-
|
459
|
-
calld->on_complete = NULL;
|
460
|
-
calld->payload_bytes = NULL;
|
461
|
-
calld->send_message_blocked = false;
|
462
|
-
grpc_slice_buffer_init(&calld->slices);
|
463
|
-
grpc_closure_init(&calld->hc_on_recv_initial_metadata,
|
464
|
-
hc_on_recv_initial_metadata, elem,
|
465
|
-
grpc_schedule_on_exec_ctx);
|
466
|
-
grpc_closure_init(&calld->hc_on_recv_trailing_metadata,
|
467
|
-
hc_on_recv_trailing_metadata, elem,
|
428
|
+
call_data *calld = (call_data *)elem->call_data;
|
429
|
+
GRPC_CLOSURE_INIT(&calld->recv_initial_metadata_ready,
|
430
|
+
recv_initial_metadata_ready, elem,
|
468
431
|
grpc_schedule_on_exec_ctx);
|
469
|
-
|
470
|
-
|
471
|
-
grpc_closure_init(&calld->got_slice, got_slice, elem,
|
472
|
-
grpc_schedule_on_exec_ctx);
|
473
|
-
grpc_closure_init(&calld->send_done, send_done, elem,
|
432
|
+
GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_on_complete,
|
433
|
+
recv_trailing_metadata_on_complete, elem,
|
474
434
|
grpc_schedule_on_exec_ctx);
|
435
|
+
GRPC_CLOSURE_INIT(&calld->send_message_on_complete, send_message_on_complete,
|
436
|
+
elem, grpc_schedule_on_exec_ctx);
|
437
|
+
GRPC_CLOSURE_INIT(&calld->on_send_message_next_done,
|
438
|
+
on_send_message_next_done, elem, grpc_schedule_on_exec_ctx);
|
475
439
|
return GRPC_ERROR_NONE;
|
476
440
|
}
|
477
441
|
|
478
442
|
/* Destructor for call_data */
|
479
443
|
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
|
480
444
|
const grpc_call_final_info *final_info,
|
481
|
-
grpc_closure *ignored) {
|
482
|
-
call_data *calld = elem->call_data;
|
483
|
-
grpc_slice_buffer_destroy_internal(exec_ctx, &calld->slices);
|
484
|
-
}
|
445
|
+
grpc_closure *ignored) {}
|
485
446
|
|
486
447
|
static grpc_mdelem scheme_from_args(const grpc_channel_args *args) {
|
487
448
|
unsigned i;
|
@@ -595,7 +556,7 @@ static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
|
|
595
556
|
}
|
596
557
|
|
597
558
|
const grpc_channel_filter grpc_http_client_filter = {
|
598
|
-
|
559
|
+
hc_start_transport_stream_op_batch,
|
599
560
|
grpc_channel_next_op,
|
600
561
|
sizeof(call_data),
|
601
562
|
init_call_elem,
|