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,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
|
|
@@ -39,14 +24,30 @@
|
|
39
24
|
|
40
25
|
#include "src/core/lib/profiling/timers.h"
|
41
26
|
|
27
|
+
#ifndef NDEBUG
|
28
|
+
grpc_tracer_flag grpc_trace_closure = GRPC_TRACER_INITIALIZER(false, "closure");
|
29
|
+
#endif
|
30
|
+
|
31
|
+
#ifndef NDEBUG
|
32
|
+
grpc_closure *grpc_closure_init(const char *file, int line,
|
33
|
+
grpc_closure *closure, grpc_iomgr_cb_func cb,
|
34
|
+
void *cb_arg,
|
35
|
+
grpc_closure_scheduler *scheduler) {
|
36
|
+
#else
|
42
37
|
grpc_closure *grpc_closure_init(grpc_closure *closure, grpc_iomgr_cb_func cb,
|
43
38
|
void *cb_arg,
|
44
39
|
grpc_closure_scheduler *scheduler) {
|
40
|
+
#endif
|
45
41
|
closure->cb = cb;
|
46
42
|
closure->cb_arg = cb_arg;
|
47
43
|
closure->scheduler = scheduler;
|
48
44
|
#ifndef NDEBUG
|
49
45
|
closure->scheduled = false;
|
46
|
+
closure->file_initiated = NULL;
|
47
|
+
closure->line_initiated = 0;
|
48
|
+
closure->run = false;
|
49
|
+
closure->file_created = file;
|
50
|
+
closure->line_created = line;
|
50
51
|
#endif
|
51
52
|
return closure;
|
52
53
|
}
|
@@ -115,19 +116,39 @@ static void closure_wrapper(grpc_exec_ctx *exec_ctx, void *arg,
|
|
115
116
|
cb(exec_ctx, cb_arg, error);
|
116
117
|
}
|
117
118
|
|
119
|
+
#ifndef NDEBUG
|
120
|
+
grpc_closure *grpc_closure_create(const char *file, int line,
|
121
|
+
grpc_iomgr_cb_func cb, void *cb_arg,
|
122
|
+
grpc_closure_scheduler *scheduler) {
|
123
|
+
#else
|
118
124
|
grpc_closure *grpc_closure_create(grpc_iomgr_cb_func cb, void *cb_arg,
|
119
125
|
grpc_closure_scheduler *scheduler) {
|
126
|
+
#endif
|
120
127
|
wrapped_closure *wc = gpr_malloc(sizeof(*wc));
|
121
128
|
wc->cb = cb;
|
122
129
|
wc->cb_arg = cb_arg;
|
130
|
+
#ifndef NDEBUG
|
131
|
+
grpc_closure_init(file, line, &wc->wrapper, closure_wrapper, wc, scheduler);
|
132
|
+
#else
|
123
133
|
grpc_closure_init(&wc->wrapper, closure_wrapper, wc, scheduler);
|
134
|
+
#endif
|
124
135
|
return &wc->wrapper;
|
125
136
|
}
|
126
137
|
|
138
|
+
#ifndef NDEBUG
|
139
|
+
void grpc_closure_run(const char *file, int line, grpc_exec_ctx *exec_ctx,
|
140
|
+
grpc_closure *c, grpc_error *error) {
|
141
|
+
#else
|
127
142
|
void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *c,
|
128
143
|
grpc_error *error) {
|
144
|
+
#endif
|
129
145
|
GPR_TIMER_BEGIN("grpc_closure_run", 0);
|
130
146
|
if (c != NULL) {
|
147
|
+
#ifndef NDEBUG
|
148
|
+
c->file_initiated = file;
|
149
|
+
c->line_initiated = line;
|
150
|
+
c->run = true;
|
151
|
+
#endif
|
131
152
|
assert(c->cb);
|
132
153
|
c->scheduler->vtable->run(exec_ctx, c, error);
|
133
154
|
} else {
|
@@ -136,13 +157,21 @@ void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *c,
|
|
136
157
|
GPR_TIMER_END("grpc_closure_run", 0);
|
137
158
|
}
|
138
159
|
|
160
|
+
#ifndef NDEBUG
|
161
|
+
void grpc_closure_sched(const char *file, int line, grpc_exec_ctx *exec_ctx,
|
162
|
+
grpc_closure *c, grpc_error *error) {
|
163
|
+
#else
|
139
164
|
void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *c,
|
140
165
|
grpc_error *error) {
|
166
|
+
#endif
|
141
167
|
GPR_TIMER_BEGIN("grpc_closure_sched", 0);
|
142
168
|
if (c != NULL) {
|
143
169
|
#ifndef NDEBUG
|
144
170
|
GPR_ASSERT(!c->scheduled);
|
145
171
|
c->scheduled = true;
|
172
|
+
c->file_initiated = file;
|
173
|
+
c->line_initiated = line;
|
174
|
+
c->run = false;
|
146
175
|
#endif
|
147
176
|
assert(c->cb);
|
148
177
|
c->scheduler->vtable->sched(exec_ctx, c, error);
|
@@ -152,13 +181,21 @@ void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *c,
|
|
152
181
|
GPR_TIMER_END("grpc_closure_sched", 0);
|
153
182
|
}
|
154
183
|
|
184
|
+
#ifndef NDEBUG
|
185
|
+
void grpc_closure_list_sched(const char *file, int line,
|
186
|
+
grpc_exec_ctx *exec_ctx, grpc_closure_list *list) {
|
187
|
+
#else
|
155
188
|
void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx, grpc_closure_list *list) {
|
189
|
+
#endif
|
156
190
|
grpc_closure *c = list->head;
|
157
191
|
while (c != NULL) {
|
158
192
|
grpc_closure *next = c->next_data.next;
|
159
193
|
#ifndef NDEBUG
|
160
194
|
GPR_ASSERT(!c->scheduled);
|
161
195
|
c->scheduled = true;
|
196
|
+
c->file_initiated = file;
|
197
|
+
c->line_initiated = line;
|
198
|
+
c->run = false;
|
162
199
|
#endif
|
163
200
|
assert(c->cb);
|
164
201
|
c->scheduler->vtable->sched(exec_ctx, c, c->error_data.error);
|
@@ -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
|
|
@@ -41,9 +26,17 @@
|
|
41
26
|
#include "src/core/lib/iomgr/error.h"
|
42
27
|
#include "src/core/lib/support/mpscq.h"
|
43
28
|
|
29
|
+
#ifdef __cplusplus
|
30
|
+
extern "C" {
|
31
|
+
#endif
|
32
|
+
|
44
33
|
struct grpc_closure;
|
45
34
|
typedef struct grpc_closure grpc_closure;
|
46
35
|
|
36
|
+
#ifndef NDEBUG
|
37
|
+
extern grpc_tracer_flag grpc_trace_closure;
|
38
|
+
#endif
|
39
|
+
|
47
40
|
typedef struct grpc_closure_list {
|
48
41
|
grpc_closure *head;
|
49
42
|
grpc_closure *tail;
|
@@ -53,7 +46,9 @@ typedef struct grpc_closure_list {
|
|
53
46
|
*
|
54
47
|
* \param arg Arbitrary input.
|
55
48
|
* \param error GRPC_ERROR_NONE if no error occurred, otherwise some grpc_error
|
56
|
-
* describing what went wrong
|
49
|
+
* describing what went wrong.
|
50
|
+
* Error contract: it is not the cb's job to unref this error;
|
51
|
+
* the closure scheduler will do that after the cb returns */
|
57
52
|
typedef void (*grpc_iomgr_cb_func)(grpc_exec_ctx *exec_ctx, void *arg,
|
58
53
|
grpc_error *error);
|
59
54
|
|
@@ -100,19 +95,47 @@ struct grpc_closure {
|
|
100
95
|
uintptr_t scratch;
|
101
96
|
} error_data;
|
102
97
|
|
98
|
+
// extra tracing and debugging for grpc_closure. This incurs a decent amount of
|
99
|
+
// overhead per closure, so it must be enabled at compile time.
|
103
100
|
#ifndef NDEBUG
|
104
101
|
bool scheduled;
|
102
|
+
bool run; // true = run, false = scheduled
|
103
|
+
const char *file_created;
|
104
|
+
int line_created;
|
105
|
+
const char *file_initiated;
|
106
|
+
int line_initiated;
|
105
107
|
#endif
|
106
108
|
};
|
107
109
|
|
108
110
|
/** Initializes \a closure with \a cb and \a cb_arg. Returns \a closure. */
|
111
|
+
#ifndef NDEBUG
|
112
|
+
grpc_closure *grpc_closure_init(const char *file, int line,
|
113
|
+
grpc_closure *closure, grpc_iomgr_cb_func cb,
|
114
|
+
void *cb_arg,
|
115
|
+
grpc_closure_scheduler *scheduler);
|
116
|
+
#define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler) \
|
117
|
+
grpc_closure_init(__FILE__, __LINE__, closure, cb, cb_arg, scheduler)
|
118
|
+
#else
|
109
119
|
grpc_closure *grpc_closure_init(grpc_closure *closure, grpc_iomgr_cb_func cb,
|
110
120
|
void *cb_arg,
|
111
121
|
grpc_closure_scheduler *scheduler);
|
122
|
+
#define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler) \
|
123
|
+
grpc_closure_init(closure, cb, cb_arg, scheduler)
|
124
|
+
#endif
|
112
125
|
|
113
126
|
/* Create a heap allocated closure: try to avoid except for very rare events */
|
127
|
+
#ifndef NDEBUG
|
128
|
+
grpc_closure *grpc_closure_create(const char *file, int line,
|
129
|
+
grpc_iomgr_cb_func cb, void *cb_arg,
|
130
|
+
grpc_closure_scheduler *scheduler);
|
131
|
+
#define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler) \
|
132
|
+
grpc_closure_create(__FILE__, __LINE__, cb, cb_arg, scheduler)
|
133
|
+
#else
|
114
134
|
grpc_closure *grpc_closure_create(grpc_iomgr_cb_func cb, void *cb_arg,
|
115
135
|
grpc_closure_scheduler *scheduler);
|
136
|
+
#define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler) \
|
137
|
+
grpc_closure_create(cb, cb_arg, scheduler)
|
138
|
+
#endif
|
116
139
|
|
117
140
|
#define GRPC_CLOSURE_LIST_INIT \
|
118
141
|
{ NULL, NULL }
|
@@ -138,16 +161,48 @@ bool grpc_closure_list_empty(grpc_closure_list list);
|
|
138
161
|
/** Run a closure directly. Caller ensures that no locks are being held above.
|
139
162
|
* Note that calling this at the end of a closure callback function itself is
|
140
163
|
* by definition safe. */
|
164
|
+
#ifndef NDEBUG
|
165
|
+
void grpc_closure_run(const char *file, int line, grpc_exec_ctx *exec_ctx,
|
166
|
+
grpc_closure *closure, grpc_error *error);
|
167
|
+
#define GRPC_CLOSURE_RUN(exec_ctx, closure, error) \
|
168
|
+
grpc_closure_run(__FILE__, __LINE__, exec_ctx, closure, error)
|
169
|
+
#else
|
141
170
|
void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
142
171
|
grpc_error *error);
|
172
|
+
#define GRPC_CLOSURE_RUN(exec_ctx, closure, error) \
|
173
|
+
grpc_closure_run(exec_ctx, closure, error)
|
174
|
+
#endif
|
143
175
|
|
144
176
|
/** Schedule a closure to be run. Does not need to be run from a safe point. */
|
177
|
+
#ifndef NDEBUG
|
178
|
+
void grpc_closure_sched(const char *file, int line, grpc_exec_ctx *exec_ctx,
|
179
|
+
grpc_closure *closure, grpc_error *error);
|
180
|
+
#define GRPC_CLOSURE_SCHED(exec_ctx, closure, error) \
|
181
|
+
grpc_closure_sched(__FILE__, __LINE__, exec_ctx, closure, error)
|
182
|
+
#else
|
145
183
|
void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
146
184
|
grpc_error *error);
|
185
|
+
#define GRPC_CLOSURE_SCHED(exec_ctx, closure, error) \
|
186
|
+
grpc_closure_sched(exec_ctx, closure, error)
|
187
|
+
#endif
|
147
188
|
|
148
189
|
/** Schedule all closures in a list to be run. Does not need to be run from a
|
149
190
|
* safe point. */
|
191
|
+
#ifndef NDEBUG
|
192
|
+
void grpc_closure_list_sched(const char *file, int line,
|
193
|
+
grpc_exec_ctx *exec_ctx,
|
194
|
+
grpc_closure_list *closure_list);
|
195
|
+
#define GRPC_CLOSURE_LIST_SCHED(exec_ctx, closure_list) \
|
196
|
+
grpc_closure_list_sched(__FILE__, __LINE__, exec_ctx, closure_list)
|
197
|
+
#else
|
150
198
|
void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx,
|
151
199
|
grpc_closure_list *closure_list);
|
200
|
+
#define GRPC_CLOSURE_LIST_SCHED(exec_ctx, closure_list) \
|
201
|
+
grpc_closure_list_sched(exec_ctx, closure_list)
|
202
|
+
#endif
|
203
|
+
|
204
|
+
#ifdef __cplusplus
|
205
|
+
}
|
206
|
+
#endif
|
152
207
|
|
153
208
|
#endif /* GRPC_CORE_LIB_IOMGR_CLOSURE_H */
|
@@ -1,33 +1,18 @@
|
|
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
|
|
@@ -39,10 +24,11 @@
|
|
39
24
|
#include <grpc/support/alloc.h>
|
40
25
|
#include <grpc/support/log.h>
|
41
26
|
|
42
|
-
#include "src/core/lib/iomgr/
|
27
|
+
#include "src/core/lib/iomgr/executor.h"
|
43
28
|
#include "src/core/lib/profiling/timers.h"
|
44
29
|
|
45
|
-
grpc_tracer_flag grpc_combiner_trace =
|
30
|
+
grpc_tracer_flag grpc_combiner_trace =
|
31
|
+
GRPC_TRACER_INITIALIZER(false, "combiner");
|
46
32
|
|
47
33
|
#define GRPC_COMBINER_TRACE(fn) \
|
48
34
|
do { \
|
@@ -56,93 +42,45 @@ grpc_tracer_flag grpc_combiner_trace = GRPC_TRACER_INITIALIZER(false);
|
|
56
42
|
|
57
43
|
struct grpc_combiner {
|
58
44
|
grpc_combiner *next_combiner_on_this_exec_ctx;
|
59
|
-
|
60
|
-
grpc_closure_scheduler
|
61
|
-
grpc_closure_scheduler covered_scheduler;
|
62
|
-
grpc_closure_scheduler uncovered_finally_scheduler;
|
63
|
-
grpc_closure_scheduler covered_finally_scheduler;
|
45
|
+
grpc_closure_scheduler scheduler;
|
46
|
+
grpc_closure_scheduler finally_scheduler;
|
64
47
|
gpr_mpscq queue;
|
48
|
+
// either:
|
49
|
+
// a pointer to the initiating exec ctx if that is the only exec_ctx that has
|
50
|
+
// ever queued to this combiner, or NULL. If this is non-null, it's not
|
51
|
+
// dereferencable (since the initiating exec_ctx may have gone out of scope)
|
52
|
+
gpr_atm initiating_exec_ctx_or_null;
|
65
53
|
// state is:
|
66
54
|
// lower bit - zero if orphaned (STATE_UNORPHANED)
|
67
55
|
// other bits - number of items queued on the lock (STATE_ELEM_COUNT_LOW_BIT)
|
68
56
|
gpr_atm state;
|
69
|
-
// number of elements in the list that are covered by a poller: if >0, we can
|
70
|
-
// offload safely
|
71
|
-
gpr_atm elements_covered_by_poller;
|
72
57
|
bool time_to_execute_final_list;
|
73
|
-
bool final_list_covered_by_poller;
|
74
58
|
grpc_closure_list final_list;
|
75
59
|
grpc_closure offload;
|
76
60
|
gpr_refcount refs;
|
77
61
|
};
|
78
62
|
|
79
|
-
static void
|
80
|
-
|
81
|
-
static void
|
63
|
+
static void combiner_exec(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
64
|
+
grpc_error *error);
|
65
|
+
static void combiner_finally_exec(grpc_exec_ctx *exec_ctx,
|
82
66
|
grpc_closure *closure, grpc_error *error);
|
83
|
-
static void combiner_finally_exec_uncovered(grpc_exec_ctx *exec_ctx,
|
84
|
-
grpc_closure *closure,
|
85
|
-
grpc_error *error);
|
86
|
-
static void combiner_finally_exec_covered(grpc_exec_ctx *exec_ctx,
|
87
|
-
grpc_closure *closure,
|
88
|
-
grpc_error *error);
|
89
|
-
|
90
|
-
static const grpc_closure_scheduler_vtable scheduler_uncovered = {
|
91
|
-
combiner_exec_uncovered, combiner_exec_uncovered,
|
92
|
-
"combiner:immediately:uncovered"};
|
93
|
-
static const grpc_closure_scheduler_vtable scheduler_covered = {
|
94
|
-
combiner_exec_covered, combiner_exec_covered,
|
95
|
-
"combiner:immediately:covered"};
|
96
|
-
static const grpc_closure_scheduler_vtable finally_scheduler_uncovered = {
|
97
|
-
combiner_finally_exec_uncovered, combiner_finally_exec_uncovered,
|
98
|
-
"combiner:finally:uncovered"};
|
99
|
-
static const grpc_closure_scheduler_vtable finally_scheduler_covered = {
|
100
|
-
combiner_finally_exec_covered, combiner_finally_exec_covered,
|
101
|
-
"combiner:finally:covered"};
|
102
67
|
|
103
|
-
static
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
bool covered_by_poller;
|
108
|
-
} error_data;
|
109
|
-
|
110
|
-
static uintptr_t pack_error_data(error_data d) {
|
111
|
-
return ((uintptr_t)d.error) | (d.covered_by_poller ? 1 : 0);
|
112
|
-
}
|
113
|
-
|
114
|
-
static error_data unpack_error_data(uintptr_t p) {
|
115
|
-
return (error_data){(grpc_error *)(p & ~(uintptr_t)1), p & 1};
|
116
|
-
}
|
68
|
+
static const grpc_closure_scheduler_vtable scheduler = {
|
69
|
+
combiner_exec, combiner_exec, "combiner:immediately"};
|
70
|
+
static const grpc_closure_scheduler_vtable finally_scheduler = {
|
71
|
+
combiner_finally_exec, combiner_finally_exec, "combiner:finally"};
|
117
72
|
|
118
|
-
static
|
119
|
-
return lock->final_list_covered_by_poller ||
|
120
|
-
gpr_atm_acq_load(&lock->elements_covered_by_poller) > 0;
|
121
|
-
}
|
122
|
-
|
123
|
-
#define IS_COVERED_BY_POLLER_FMT "(final=%d elems=%" PRIdPTR ")->%d"
|
124
|
-
#define IS_COVERED_BY_POLLER_ARGS(lock) \
|
125
|
-
(lock)->final_list_covered_by_poller, \
|
126
|
-
gpr_atm_acq_load(&(lock)->elements_covered_by_poller), \
|
127
|
-
is_covered_by_poller((lock))
|
73
|
+
static void offload(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error);
|
128
74
|
|
129
|
-
grpc_combiner *grpc_combiner_create(
|
130
|
-
grpc_combiner *lock =
|
75
|
+
grpc_combiner *grpc_combiner_create(void) {
|
76
|
+
grpc_combiner *lock = gpr_zalloc(sizeof(*lock));
|
131
77
|
gpr_ref_init(&lock->refs, 1);
|
132
|
-
lock->
|
133
|
-
lock->
|
134
|
-
lock->optional_workqueue = optional_workqueue;
|
135
|
-
lock->final_list_covered_by_poller = false;
|
136
|
-
lock->uncovered_scheduler.vtable = &scheduler_uncovered;
|
137
|
-
lock->covered_scheduler.vtable = &scheduler_covered;
|
138
|
-
lock->uncovered_finally_scheduler.vtable = &finally_scheduler_uncovered;
|
139
|
-
lock->covered_finally_scheduler.vtable = &finally_scheduler_covered;
|
78
|
+
lock->scheduler.vtable = &scheduler;
|
79
|
+
lock->finally_scheduler.vtable = &finally_scheduler;
|
140
80
|
gpr_atm_no_barrier_store(&lock->state, STATE_UNORPHANED);
|
141
|
-
gpr_atm_no_barrier_store(&lock->elements_covered_by_poller, 0);
|
142
81
|
gpr_mpscq_init(&lock->queue);
|
143
82
|
grpc_closure_list_init(&lock->final_list);
|
144
|
-
|
145
|
-
grpc_workqueue_scheduler(lock->optional_workqueue));
|
83
|
+
GRPC_CLOSURE_INIT(&lock->offload, offload, lock, grpc_executor_scheduler);
|
146
84
|
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, "C:%p create", lock));
|
147
85
|
return lock;
|
148
86
|
}
|
@@ -151,7 +89,6 @@ static void really_destroy(grpc_exec_ctx *exec_ctx, grpc_combiner *lock) {
|
|
151
89
|
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, "C:%p really_destroy", lock));
|
152
90
|
GPR_ASSERT(gpr_atm_no_barrier_load(&lock->state) == 0);
|
153
91
|
gpr_mpscq_destroy(&lock->queue);
|
154
|
-
GRPC_WORKQUEUE_UNREF(exec_ctx, lock->optional_workqueue, "combiner");
|
155
92
|
gpr_free(lock);
|
156
93
|
}
|
157
94
|
|
@@ -164,12 +101,14 @@ static void start_destroy(grpc_exec_ctx *exec_ctx, grpc_combiner *lock) {
|
|
164
101
|
}
|
165
102
|
}
|
166
103
|
|
167
|
-
#
|
168
|
-
#define GRPC_COMBINER_DEBUG_SPAM(op, delta)
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
104
|
+
#ifndef NDEBUG
|
105
|
+
#define GRPC_COMBINER_DEBUG_SPAM(op, delta) \
|
106
|
+
if (GRPC_TRACER_ON(grpc_combiner_trace)) { \
|
107
|
+
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, \
|
108
|
+
"C:%p %s %" PRIdPTR " --> %" PRIdPTR " %s", lock, (op), \
|
109
|
+
gpr_atm_no_barrier_load(&lock->refs.count), \
|
110
|
+
gpr_atm_no_barrier_load(&lock->refs.count) + (delta), reason); \
|
111
|
+
}
|
173
112
|
#else
|
174
113
|
#define GRPC_COMBINER_DEBUG_SPAM(op, delta)
|
175
114
|
#endif
|
@@ -208,48 +147,40 @@ static void push_first_on_exec_ctx(grpc_exec_ctx *exec_ctx,
|
|
208
147
|
}
|
209
148
|
}
|
210
149
|
|
211
|
-
|
212
|
-
|
213
|
-
|
150
|
+
#define COMBINER_FROM_CLOSURE_SCHEDULER(closure, scheduler_name) \
|
151
|
+
((grpc_combiner *)(((char *)((closure)->scheduler)) - \
|
152
|
+
offsetof(grpc_combiner, scheduler_name)))
|
153
|
+
|
154
|
+
static void combiner_exec(grpc_exec_ctx *exec_ctx, grpc_closure *cl,
|
155
|
+
grpc_error *error) {
|
214
156
|
GPR_TIMER_BEGIN("combiner.execute", 0);
|
157
|
+
grpc_combiner *lock = COMBINER_FROM_CLOSURE_SCHEDULER(cl, scheduler);
|
215
158
|
gpr_atm last = gpr_atm_full_fetch_add(&lock->state, STATE_ELEM_COUNT_LOW_BIT);
|
216
|
-
GRPC_COMBINER_TRACE(gpr_log(
|
217
|
-
|
218
|
-
|
219
|
-
GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed
|
220
|
-
assert(cl->cb);
|
221
|
-
cl->error_data.scratch =
|
222
|
-
pack_error_data((error_data){error, covered_by_poller});
|
223
|
-
if (covered_by_poller) {
|
224
|
-
gpr_atm_no_barrier_fetch_add(&lock->elements_covered_by_poller, 1);
|
225
|
-
}
|
226
|
-
gpr_mpscq_push(&lock->queue, &cl->next_data.atm_next);
|
159
|
+
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG,
|
160
|
+
"C:%p grpc_combiner_execute c=%p last=%" PRIdPTR,
|
161
|
+
lock, cl, last));
|
227
162
|
if (last == 1) {
|
163
|
+
gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null,
|
164
|
+
(gpr_atm)exec_ctx);
|
228
165
|
// first element on this list: add it to the list of combiner locks
|
229
166
|
// executing within this exec_ctx
|
230
167
|
push_last_on_exec_ctx(exec_ctx, lock);
|
168
|
+
} else {
|
169
|
+
// there may be a race with setting here: if that happens, we may delay
|
170
|
+
// offload for one or two actions, and that's fine
|
171
|
+
gpr_atm initiator =
|
172
|
+
gpr_atm_no_barrier_load(&lock->initiating_exec_ctx_or_null);
|
173
|
+
if (initiator != 0 && initiator != (gpr_atm)exec_ctx) {
|
174
|
+
gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, 0);
|
175
|
+
}
|
231
176
|
}
|
177
|
+
GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed
|
178
|
+
assert(cl->cb);
|
179
|
+
cl->error_data.error = error;
|
180
|
+
gpr_mpscq_push(&lock->queue, &cl->next_data.atm_next);
|
232
181
|
GPR_TIMER_END("combiner.execute", 0);
|
233
182
|
}
|
234
183
|
|
235
|
-
#define COMBINER_FROM_CLOSURE_SCHEDULER(closure, scheduler_name) \
|
236
|
-
((grpc_combiner *)(((char *)((closure)->scheduler)) - \
|
237
|
-
offsetof(grpc_combiner, scheduler_name)))
|
238
|
-
|
239
|
-
static void combiner_exec_uncovered(grpc_exec_ctx *exec_ctx, grpc_closure *cl,
|
240
|
-
grpc_error *error) {
|
241
|
-
combiner_exec(exec_ctx,
|
242
|
-
COMBINER_FROM_CLOSURE_SCHEDULER(cl, uncovered_scheduler), cl,
|
243
|
-
error, false);
|
244
|
-
}
|
245
|
-
|
246
|
-
static void combiner_exec_covered(grpc_exec_ctx *exec_ctx, grpc_closure *cl,
|
247
|
-
grpc_error *error) {
|
248
|
-
combiner_exec(exec_ctx,
|
249
|
-
COMBINER_FROM_CLOSURE_SCHEDULER(cl, covered_scheduler), cl,
|
250
|
-
error, true);
|
251
|
-
}
|
252
|
-
|
253
184
|
static void move_next(grpc_exec_ctx *exec_ctx) {
|
254
185
|
exec_ctx->active_combiner =
|
255
186
|
exec_ctx->active_combiner->next_combiner_on_this_exec_ctx;
|
@@ -265,9 +196,8 @@ static void offload(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
265
196
|
|
266
197
|
static void queue_offload(grpc_exec_ctx *exec_ctx, grpc_combiner *lock) {
|
267
198
|
move_next(exec_ctx);
|
268
|
-
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, "C:%p queue_offload
|
269
|
-
|
270
|
-
grpc_closure_sched(exec_ctx, &lock->offload, GRPC_ERROR_NONE);
|
199
|
+
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, "C:%p queue_offload", lock));
|
200
|
+
GRPC_CLOSURE_SCHED(exec_ctx, &lock->offload, GRPC_ERROR_NONE);
|
271
201
|
}
|
272
202
|
|
273
203
|
bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) {
|
@@ -278,22 +208,23 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) {
|
|
278
208
|
return false;
|
279
209
|
}
|
280
210
|
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
211
|
+
bool contended =
|
212
|
+
gpr_atm_no_barrier_load(&lock->initiating_exec_ctx_or_null) == 0;
|
213
|
+
|
214
|
+
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG,
|
215
|
+
"C:%p grpc_combiner_continue_exec_ctx "
|
216
|
+
"contended=%d "
|
217
|
+
"exec_ctx_ready_to_finish=%d "
|
218
|
+
"time_to_execute_final_list=%d",
|
219
|
+
lock, contended,
|
220
|
+
grpc_exec_ctx_ready_to_finish(exec_ctx),
|
221
|
+
lock->time_to_execute_final_list));
|
222
|
+
|
223
|
+
if (contended && grpc_exec_ctx_ready_to_finish(exec_ctx) &&
|
224
|
+
grpc_executor_is_threaded()) {
|
293
225
|
GPR_TIMER_MARK("offload_from_finished_exec_ctx", 0);
|
294
|
-
// this execution context wants to move on
|
295
|
-
//
|
296
|
-
// picked up on the workqueue
|
226
|
+
// this execution context wants to move on: schedule remaining work to be
|
227
|
+
// picked up on the executor
|
297
228
|
queue_offload(exec_ctx, lock);
|
298
229
|
GPR_TIMER_END("combiner.continue_exec_ctx", 0);
|
299
230
|
return true;
|
@@ -310,29 +241,23 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) {
|
|
310
241
|
// queue is in an inconsistent state: use this as a cue that we should
|
311
242
|
// go off and do something else for a while (and come back later)
|
312
243
|
GPR_TIMER_MARK("delay_busy", 0);
|
313
|
-
|
314
|
-
queue_offload(exec_ctx, lock);
|
315
|
-
}
|
244
|
+
queue_offload(exec_ctx, lock);
|
316
245
|
GPR_TIMER_END("combiner.continue_exec_ctx", 0);
|
317
246
|
return true;
|
318
247
|
}
|
319
248
|
GPR_TIMER_BEGIN("combiner.exec1", 0);
|
320
249
|
grpc_closure *cl = (grpc_closure *)n;
|
321
|
-
|
250
|
+
grpc_error *cl_err = cl->error_data.error;
|
322
251
|
#ifndef NDEBUG
|
323
252
|
cl->scheduled = false;
|
324
253
|
#endif
|
325
|
-
cl->cb(exec_ctx, cl->cb_arg,
|
326
|
-
|
327
|
-
gpr_atm_no_barrier_fetch_add(&lock->elements_covered_by_poller, -1);
|
328
|
-
}
|
329
|
-
GRPC_ERROR_UNREF(err.error);
|
254
|
+
cl->cb(exec_ctx, cl->cb_arg, cl_err);
|
255
|
+
GRPC_ERROR_UNREF(cl_err);
|
330
256
|
GPR_TIMER_END("combiner.exec1", 0);
|
331
257
|
} else {
|
332
258
|
grpc_closure *c = lock->final_list.head;
|
333
259
|
GPR_ASSERT(c != NULL);
|
334
260
|
grpc_closure_list_init(&lock->final_list);
|
335
|
-
lock->final_list_covered_by_poller = false;
|
336
261
|
int loops = 0;
|
337
262
|
while (c != NULL) {
|
338
263
|
GPR_TIMER_BEGIN("combiner.exec_1final", 0);
|
@@ -398,20 +323,20 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx *exec_ctx) {
|
|
398
323
|
static void enqueue_finally(grpc_exec_ctx *exec_ctx, void *closure,
|
399
324
|
grpc_error *error);
|
400
325
|
|
401
|
-
static void
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
GRPC_COMBINER_TRACE(gpr_log(
|
406
|
-
|
407
|
-
|
326
|
+
static void combiner_finally_exec(grpc_exec_ctx *exec_ctx,
|
327
|
+
grpc_closure *closure, grpc_error *error) {
|
328
|
+
grpc_combiner *lock =
|
329
|
+
COMBINER_FROM_CLOSURE_SCHEDULER(closure, finally_scheduler);
|
330
|
+
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG,
|
331
|
+
"C:%p grpc_combiner_execute_finally c=%p; ac=%p",
|
332
|
+
lock, closure, exec_ctx->active_combiner));
|
408
333
|
GPR_TIMER_BEGIN("combiner.execute_finally", 0);
|
409
334
|
if (exec_ctx->active_combiner != lock) {
|
410
335
|
GPR_TIMER_MARK("slowpath", 0);
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
336
|
+
GRPC_CLOSURE_SCHED(exec_ctx,
|
337
|
+
GRPC_CLOSURE_CREATE(enqueue_finally, closure,
|
338
|
+
grpc_combiner_scheduler(lock)),
|
339
|
+
error);
|
415
340
|
GPR_TIMER_END("combiner.execute_finally", 0);
|
416
341
|
return;
|
417
342
|
}
|
@@ -419,42 +344,20 @@ static void combiner_execute_finally(grpc_exec_ctx *exec_ctx,
|
|
419
344
|
if (grpc_closure_list_empty(lock->final_list)) {
|
420
345
|
gpr_atm_full_fetch_add(&lock->state, STATE_ELEM_COUNT_LOW_BIT);
|
421
346
|
}
|
422
|
-
if (covered_by_poller) {
|
423
|
-
lock->final_list_covered_by_poller = true;
|
424
|
-
}
|
425
347
|
grpc_closure_list_append(&lock->final_list, closure, error);
|
426
348
|
GPR_TIMER_END("combiner.execute_finally", 0);
|
427
349
|
}
|
428
350
|
|
429
351
|
static void enqueue_finally(grpc_exec_ctx *exec_ctx, void *closure,
|
430
352
|
grpc_error *error) {
|
431
|
-
|
432
|
-
GRPC_ERROR_REF(error), false);
|
433
|
-
}
|
434
|
-
|
435
|
-
static void combiner_finally_exec_uncovered(grpc_exec_ctx *exec_ctx,
|
436
|
-
grpc_closure *cl,
|
437
|
-
grpc_error *error) {
|
438
|
-
combiner_execute_finally(exec_ctx, COMBINER_FROM_CLOSURE_SCHEDULER(
|
439
|
-
cl, uncovered_finally_scheduler),
|
440
|
-
cl, error, false);
|
441
|
-
}
|
442
|
-
|
443
|
-
static void combiner_finally_exec_covered(grpc_exec_ctx *exec_ctx,
|
444
|
-
grpc_closure *cl, grpc_error *error) {
|
445
|
-
combiner_execute_finally(
|
446
|
-
exec_ctx, COMBINER_FROM_CLOSURE_SCHEDULER(cl, covered_finally_scheduler),
|
447
|
-
cl, error, true);
|
353
|
+
combiner_finally_exec(exec_ctx, closure, GRPC_ERROR_REF(error));
|
448
354
|
}
|
449
355
|
|
450
|
-
grpc_closure_scheduler *grpc_combiner_scheduler(grpc_combiner *combiner
|
451
|
-
|
452
|
-
return covered_by_poller ? &combiner->covered_scheduler
|
453
|
-
: &combiner->uncovered_scheduler;
|
356
|
+
grpc_closure_scheduler *grpc_combiner_scheduler(grpc_combiner *combiner) {
|
357
|
+
return &combiner->scheduler;
|
454
358
|
}
|
455
359
|
|
456
360
|
grpc_closure_scheduler *grpc_combiner_finally_scheduler(
|
457
|
-
grpc_combiner *combiner
|
458
|
-
return
|
459
|
-
: &combiner->uncovered_finally_scheduler;
|
361
|
+
grpc_combiner *combiner) {
|
362
|
+
return &combiner->finally_scheduler;
|
460
363
|
}
|