grpc 0.12.0 → 0.13.0.pre1.1
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 +5707 -22222
- data/include/grpc/byte_buffer.h +2 -83
- data/include/grpc/census.h +191 -121
- data/include/grpc/compression.h +14 -38
- data/include/grpc/grpc.h +88 -434
- data/include/grpc/grpc_security.h +76 -46
- data/include/grpc/grpc_zookeeper.h +1 -1
- data/include/grpc/impl/codegen/alloc.h +74 -0
- data/include/grpc/impl/codegen/atm.h +92 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
- data/include/grpc/impl/codegen/atm_win32.h +125 -0
- data/include/grpc/impl/codegen/byte_buffer.h +121 -0
- data/include/grpc/impl/codegen/compression_types.h +73 -0
- data/include/grpc/impl/codegen/connectivity_state.h +59 -0
- data/include/grpc/impl/codegen/grpc_types.h +373 -0
- data/include/grpc/impl/codegen/log.h +110 -0
- data/include/grpc/impl/codegen/port_platform.h +362 -0
- data/include/grpc/impl/codegen/propagation_bits.h +67 -0
- data/include/grpc/impl/codegen/slice.h +182 -0
- data/include/grpc/impl/codegen/slice_buffer.h +105 -0
- data/include/grpc/impl/codegen/status.h +163 -0
- data/include/grpc/impl/codegen/sync.h +316 -0
- data/include/grpc/impl/codegen/sync_generic.h +55 -0
- data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
- data/include/grpc/impl/codegen/sync_win32.h +49 -0
- data/include/grpc/impl/codegen/time.h +132 -0
- data/include/grpc/status.h +2 -126
- data/include/grpc/support/alloc.h +2 -35
- data/include/grpc/support/atm.h +2 -55
- data/include/grpc/support/atm_gcc_atomic.h +5 -38
- data/include/grpc/support/atm_gcc_sync.h +2 -50
- data/include/grpc/support/atm_win32.h +2 -88
- data/include/grpc/support/avl.h +7 -7
- data/include/grpc/support/cmdline.h +15 -13
- data/include/grpc/support/cpu.h +5 -3
- data/include/grpc/support/histogram.h +23 -20
- data/include/grpc/support/host_port.h +5 -3
- data/include/grpc/support/log.h +2 -71
- data/include/grpc/support/log_win32.h +2 -2
- data/include/grpc/support/port_platform.h +2 -319
- data/include/grpc/support/slice.h +2 -145
- data/include/grpc/support/slice_buffer.h +2 -65
- data/include/grpc/support/string_util.h +3 -3
- data/include/grpc/support/subprocess.h +8 -6
- data/include/grpc/support/sync.h +2 -278
- data/include/grpc/support/sync_generic.h +2 -18
- data/include/grpc/support/sync_posix.h +2 -10
- data/include/grpc/support/sync_win32.h +2 -12
- data/include/grpc/support/thd.h +11 -11
- data/include/grpc/support/time.h +2 -91
- data/include/grpc/support/tls.h +1 -1
- data/include/grpc/support/tls_gcc.h +1 -1
- data/include/grpc/support/tls_msvc.h +1 -1
- data/include/grpc/support/tls_pthread.h +2 -2
- data/src/boringssl/err_data.c +1252 -0
- data/src/core/census/context.c +492 -8
- data/src/core/census/grpc_filter.c +3 -3
- data/src/core/census/initialize.c +4 -7
- data/src/core/census/operation.c +2 -2
- data/src/core/census/placeholders.c +109 -0
- data/src/core/census/rpc_metric_id.h +6 -6
- data/src/core/census/tracing.c +1 -1
- data/src/core/channel/channel_args.c +4 -3
- data/src/core/channel/channel_stack.c +1 -1
- data/src/core/channel/client_channel.c +18 -14
- data/src/core/channel/client_uchannel.c +3 -3
- data/src/core/channel/compress_filter.c +8 -8
- data/src/core/channel/http_client_filter.c +2 -2
- data/src/core/channel/http_server_filter.c +9 -9
- data/src/core/channel/subchannel_call_holder.c +12 -10
- data/src/core/client_config/lb_policies/pick_first.c +49 -31
- data/src/core/client_config/lb_policies/round_robin.c +7 -7
- data/src/core/client_config/resolvers/dns_resolver.c +3 -3
- data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
- data/src/core/client_config/subchannel.c +36 -25
- data/src/core/compression/algorithm.c +3 -3
- data/src/core/httpcli/format_request.c +1 -1
- data/src/core/httpcli/httpcli.c +5 -5
- data/src/core/httpcli/httpcli_security_connector.c +2 -3
- data/src/core/httpcli/parser.c +7 -7
- data/src/core/httpcli/parser.h +1 -1
- data/src/core/iomgr/closure.c +7 -7
- data/src/core/iomgr/closure.h +6 -5
- data/src/core/iomgr/exec_ctx.c +12 -8
- data/src/core/iomgr/exec_ctx.h +12 -5
- data/src/core/iomgr/executor.c +4 -4
- data/src/core/iomgr/executor.h +2 -2
- data/src/core/iomgr/fd_posix.c +28 -17
- data/src/core/iomgr/fd_posix.h +7 -4
- data/src/core/iomgr/iocp_windows.c +6 -8
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +70 -5
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +4 -2
- data/src/core/iomgr/pollset_posix.c +15 -15
- data/src/core/iomgr/pollset_posix.h +4 -2
- data/src/core/iomgr/pollset_windows.c +3 -12
- data/src/core/iomgr/resolve_address_posix.c +2 -2
- data/src/core/iomgr/resolve_address_windows.c +2 -2
- data/src/core/iomgr/sockaddr_utils.c +6 -6
- data/src/core/iomgr/sockaddr_win32.h +1 -6
- data/src/core/iomgr/tcp_client_posix.c +7 -7
- data/src/core/iomgr/tcp_client_windows.c +4 -4
- data/src/core/iomgr/tcp_posix.c +14 -8
- data/src/core/iomgr/tcp_posix.h +7 -1
- data/src/core/iomgr/tcp_server.h +40 -20
- data/src/core/iomgr/tcp_server_posix.c +106 -49
- data/src/core/iomgr/tcp_server_windows.c +98 -49
- data/src/core/iomgr/tcp_windows.c +11 -15
- data/src/core/iomgr/timer.c +8 -8
- data/src/core/iomgr/timer.h +1 -1
- data/src/core/iomgr/timer_heap.c +10 -10
- data/src/core/iomgr/timer_heap.h +2 -2
- data/src/core/iomgr/udp_server.c +2 -12
- data/src/core/iomgr/udp_server.h +1 -9
- data/src/core/iomgr/workqueue.h +2 -4
- data/src/core/iomgr/workqueue_posix.c +3 -3
- data/src/core/json/json_reader.c +11 -12
- data/src/core/json/json_reader.h +4 -4
- data/src/core/json/json_string.c +19 -19
- data/src/core/json/json_writer.c +7 -9
- data/src/core/profiling/basic_timers.c +1 -1
- data/src/core/security/base64.c +9 -9
- data/src/core/security/client_auth_filter.c +4 -4
- data/src/core/security/credentials.c +5 -5
- data/src/core/security/google_default_credentials.c +3 -3
- data/src/core/security/handshake.c +6 -5
- data/src/core/security/json_token.c +13 -7
- data/src/core/security/jwt_verifier.c +3 -2
- data/src/core/security/secure_endpoint.c +16 -16
- data/src/core/security/security_connector.c +47 -17
- data/src/core/security/security_connector.h +5 -5
- data/src/core/security/server_auth_filter.c +3 -3
- data/src/core/security/server_secure_chttp2.c +30 -31
- data/src/core/statistics/census_interface.h +2 -2
- data/src/core/statistics/census_rpc_stats.h +3 -3
- data/src/core/support/alloc.c +1 -1
- data/src/core/support/cpu_posix.c +2 -2
- data/src/core/support/env_linux.c +12 -2
- data/src/core/support/env_win32.c +15 -7
- data/src/core/support/histogram.c +5 -5
- data/src/core/support/log_posix.c +1 -1
- data/src/core/support/log_win32.c +4 -3
- data/src/core/support/murmur_hash.c +11 -11
- data/src/core/support/murmur_hash.h +1 -1
- data/src/core/support/slice.c +11 -11
- data/src/core/support/slice_buffer.c +6 -6
- data/src/core/support/stack_lockfree.c +20 -10
- data/src/core/support/string.c +15 -15
- data/src/core/support/string.h +5 -5
- data/src/core/support/string_win32.c +5 -5
- data/src/core/support/subprocess_windows.c +141 -0
- data/src/core/support/sync.c +4 -4
- data/src/core/support/sync_posix.c +2 -2
- data/src/core/support/sync_win32.c +10 -5
- data/src/core/support/time.c +29 -29
- data/src/core/support/time_posix.c +15 -6
- data/src/core/support/time_precise.c +2 -2
- data/src/core/support/time_win32.c +18 -9
- data/src/core/support/tls_pthread.c +1 -1
- data/src/core/support/wrap_memcpy.c +53 -0
- data/src/core/surface/alarm.c +83 -0
- data/src/core/surface/byte_buffer_reader.c +1 -1
- data/src/core/surface/call.c +78 -69
- data/src/core/surface/call.h +2 -2
- data/src/core/surface/call_test_only.h +2 -2
- data/src/core/surface/channel.c +9 -9
- data/src/core/surface/channel.h +1 -1
- data/src/core/surface/channel_connectivity.c +3 -3
- data/src/core/surface/channel_create.c +3 -3
- data/src/core/surface/channel_ping.c +2 -2
- data/src/core/surface/completion_queue.c +11 -12
- data/src/core/surface/completion_queue.h +1 -1
- data/src/core/surface/init.c +7 -5
- data/src/core/surface/lame_client.c +3 -3
- data/src/core/surface/secure_channel_create.c +3 -3
- data/src/core/surface/server.c +28 -28
- data/src/core/surface/server_chttp2.c +8 -8
- data/src/core/surface/server_create.c +1 -4
- data/src/core/surface/validate_metadata.c +3 -3
- data/src/core/surface/version.c +2 -2
- data/src/core/transport/byte_stream.c +8 -6
- data/src/core/transport/byte_stream.h +6 -5
- data/src/core/transport/chttp2/bin_encoder.c +29 -29
- data/src/core/transport/chttp2/frame_data.c +29 -26
- data/src/core/transport/chttp2/frame_data.h +6 -6
- data/src/core/transport/chttp2/frame_goaway.c +30 -30
- data/src/core/transport/chttp2/frame_goaway.h +6 -6
- data/src/core/transport/chttp2/frame_ping.c +6 -6
- data/src/core/transport/chttp2/frame_ping.h +5 -5
- data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
- data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
- data/src/core/transport/chttp2/frame_settings.c +30 -30
- data/src/core/transport/chttp2/frame_settings.h +13 -13
- data/src/core/transport/chttp2/frame_window_update.c +17 -18
- data/src/core/transport/chttp2/frame_window_update.h +5 -7
- data/src/core/transport/chttp2/hpack_encoder.c +69 -73
- data/src/core/transport/chttp2/hpack_encoder.h +16 -16
- data/src/core/transport/chttp2/hpack_parser.c +167 -167
- data/src/core/transport/chttp2/hpack_parser.h +16 -16
- data/src/core/transport/chttp2/hpack_table.c +13 -13
- data/src/core/transport/chttp2/hpack_table.h +11 -11
- data/src/core/transport/chttp2/internal.h +97 -86
- data/src/core/transport/chttp2/parsing.c +25 -25
- data/src/core/transport/chttp2/stream_lists.c +26 -3
- data/src/core/transport/chttp2/stream_map.c +13 -14
- data/src/core/transport/chttp2/stream_map.h +6 -7
- data/src/core/transport/chttp2/timeout_encoding.c +19 -16
- data/src/core/transport/chttp2/varint.c +8 -9
- data/src/core/transport/chttp2/varint.h +7 -8
- data/src/core/transport/chttp2/writing.c +26 -23
- data/src/core/transport/chttp2_transport.c +133 -92
- data/src/core/transport/connectivity_state.c +6 -6
- data/src/core/transport/metadata.c +18 -18
- data/src/core/transport/metadata.h +5 -5
- data/src/core/transport/static_metadata.c +15 -16
- data/src/core/transport/static_metadata.h +5 -5
- data/src/core/transport/transport.c +5 -5
- data/src/core/transport/transport.h +14 -1
- data/src/core/tsi/fake_transport_security.c +7 -7
- data/src/core/tsi/ssl_transport_security.c +6 -4
- data/src/core/tsi/ssl_types.h +55 -0
- data/src/ruby/ext/grpc/extconf.rb +51 -14
- data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
- data/src/ruby/ext/grpc/rb_call.c +6 -3
- data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
- data/src/ruby/ext/grpc/rb_channel.c +4 -2
- data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
- data/src/ruby/ext/grpc/rb_grpc.c +11 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +560 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +843 -0
- data/src/ruby/ext/grpc/rb_loader.c +72 -0
- data/src/ruby/ext/grpc/rb_loader.h +40 -0
- data/src/ruby/ext/grpc/rb_server.c +3 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/grpc.rb +34 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/third_party/boringssl/crypto/aes/aes.c +1142 -0
- data/third_party/boringssl/crypto/aes/internal.h +87 -0
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
- data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
- data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
- data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
- data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
- data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
- data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
- data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
- data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
- data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
- data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
- data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
- data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
- data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
- data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
- data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
- data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
- data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
- data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
- data/third_party/boringssl/crypto/base64/base64.c +478 -0
- data/third_party/boringssl/crypto/bio/bio.c +608 -0
- data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
- data/third_party/boringssl/crypto/bio/buffer.c +496 -0
- data/third_party/boringssl/crypto/bio/connect.c +544 -0
- data/third_party/boringssl/crypto/bio/fd.c +270 -0
- data/third_party/boringssl/crypto/bio/file.c +349 -0
- data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
- data/third_party/boringssl/crypto/bio/internal.h +108 -0
- data/third_party/boringssl/crypto/bio/pair.c +803 -0
- data/third_party/boringssl/crypto/bio/printf.c +119 -0
- data/third_party/boringssl/crypto/bio/socket.c +195 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
- data/third_party/boringssl/crypto/bn/add.c +377 -0
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
- data/third_party/boringssl/crypto/bn/bn.c +341 -0
- data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
- data/third_party/boringssl/crypto/bn/cmp.c +200 -0
- data/third_party/boringssl/crypto/bn/convert.c +597 -0
- data/third_party/boringssl/crypto/bn/ctx.c +311 -0
- data/third_party/boringssl/crypto/bn/div.c +625 -0
- data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
- data/third_party/boringssl/crypto/bn/gcd.c +711 -0
- data/third_party/boringssl/crypto/bn/generic.c +1019 -0
- data/third_party/boringssl/crypto/bn/internal.h +294 -0
- data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
- data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
- data/third_party/boringssl/crypto/bn/mul.c +888 -0
- data/third_party/boringssl/crypto/bn/prime.c +845 -0
- data/third_party/boringssl/crypto/bn/random.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
- data/third_party/boringssl/crypto/bn/shift.c +299 -0
- data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
- data/third_party/boringssl/crypto/buf/buf.c +235 -0
- data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
- data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
- data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
- data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
- data/third_party/boringssl/crypto/cipher/aead.c +167 -0
- data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
- data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
- data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
- data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
- data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
- data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
- data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
- data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
- data/third_party/boringssl/crypto/cipher/internal.h +164 -0
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
- data/third_party/boringssl/crypto/conf/conf.c +778 -0
- data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
- data/third_party/boringssl/crypto/conf/internal.h +31 -0
- data/third_party/boringssl/crypto/cpu-arm.c +199 -0
- data/third_party/boringssl/crypto/cpu-intel.c +261 -0
- data/third_party/boringssl/crypto/crypto.c +140 -0
- data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
- data/third_party/boringssl/crypto/des/des.c +771 -0
- data/third_party/boringssl/crypto/des/internal.h +212 -0
- data/third_party/boringssl/crypto/dh/check.c +180 -0
- data/third_party/boringssl/crypto/dh/dh.c +463 -0
- data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
- data/third_party/boringssl/crypto/dh/internal.h +80 -0
- data/third_party/boringssl/crypto/dh/params.c +301 -0
- data/third_party/boringssl/crypto/digest/digest.c +248 -0
- data/third_party/boringssl/crypto/digest/digests.c +321 -0
- data/third_party/boringssl/crypto/digest/internal.h +112 -0
- data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
- data/third_party/boringssl/crypto/directory.h +66 -0
- data/third_party/boringssl/crypto/directory_posix.c +108 -0
- data/third_party/boringssl/crypto/directory_win.c +144 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
- data/third_party/boringssl/crypto/dsa/internal.h +78 -0
- data/third_party/boringssl/crypto/ec/ec.c +889 -0
- data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
- data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
- data/third_party/boringssl/crypto/ec/internal.h +318 -0
- data/third_party/boringssl/crypto/ec/oct.c +416 -0
- data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
- data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
- data/third_party/boringssl/crypto/ec/simple.c +1313 -0
- data/third_party/boringssl/crypto/ec/util-64.c +183 -0
- data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
- data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
- data/third_party/boringssl/crypto/engine/engine.c +96 -0
- data/third_party/boringssl/crypto/err/err.c +756 -0
- data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
- data/third_party/boringssl/crypto/evp/evp.c +411 -0
- data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
- data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
- data/third_party/boringssl/crypto/evp/internal.h +278 -0
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
- data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
- data/third_party/boringssl/crypto/evp/sign.c +151 -0
- data/third_party/boringssl/crypto/ex_data.c +294 -0
- data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
- data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
- data/third_party/boringssl/crypto/internal.h +532 -0
- data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
- data/third_party/boringssl/crypto/md4/md4.c +225 -0
- data/third_party/boringssl/crypto/md5/md5.c +275 -0
- data/third_party/boringssl/crypto/mem.c +200 -0
- data/third_party/boringssl/crypto/modes/cbc.c +216 -0
- data/third_party/boringssl/crypto/modes/cfb.c +231 -0
- data/third_party/boringssl/crypto/modes/ctr.c +226 -0
- data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
- data/third_party/boringssl/crypto/modes/internal.h +370 -0
- data/third_party/boringssl/crypto/modes/ofb.c +108 -0
- data/third_party/boringssl/crypto/obj/obj.c +664 -0
- data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
- data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
- data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
- data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
- data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
- data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
- data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
- data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
- data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
- data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
- data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
- data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
- data/third_party/boringssl/crypto/rand/internal.h +32 -0
- data/third_party/boringssl/crypto/rand/rand.c +239 -0
- data/third_party/boringssl/crypto/rand/urandom.c +223 -0
- data/third_party/boringssl/crypto/rand/windows.c +56 -0
- data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
- data/third_party/boringssl/crypto/refcount_c11.c +67 -0
- data/third_party/boringssl/crypto/refcount_lock.c +53 -0
- data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
- data/third_party/boringssl/crypto/rsa/internal.h +164 -0
- data/third_party/boringssl/crypto/rsa/padding.c +711 -0
- data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
- data/third_party/boringssl/crypto/sha/sha1.c +337 -0
- data/third_party/boringssl/crypto/sha/sha256.c +327 -0
- data/third_party/boringssl/crypto/sha/sha512.c +607 -0
- data/third_party/boringssl/crypto/stack/stack.c +386 -0
- data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
- data/third_party/boringssl/crypto/test/test_util.h +35 -0
- data/third_party/boringssl/crypto/thread.c +101 -0
- data/third_party/boringssl/crypto/thread_none.c +55 -0
- data/third_party/boringssl/crypto/thread_pthread.c +167 -0
- data/third_party/boringssl/crypto/thread_win.c +282 -0
- data/third_party/boringssl/crypto/time_support.c +212 -0
- data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
- data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
- data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
- data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
- data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
- data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
- data/third_party/boringssl/crypto/x509/by_file.c +295 -0
- data/third_party/boringssl/crypto/x509/charmap.h +15 -0
- data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
- data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
- data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
- data/third_party/boringssl/crypto/x509/t_req.c +246 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
- data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
- data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
- data/third_party/boringssl/crypto/x509/x509.c +152 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
- data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
- data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
- data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
- data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
- data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
- data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
- data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
- data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
- data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
- data/third_party/boringssl/crypto/x509/x509name.c +381 -0
- data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
- data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
- data/third_party/boringssl/crypto/x509/x509type.c +128 -0
- data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
- data/third_party/boringssl/crypto/x509/x_all.c +547 -0
- data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
- data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
- data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
- data/third_party/boringssl/crypto/x509/x_info.c +95 -0
- data/third_party/boringssl/crypto/x509/x_name.c +538 -0
- data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
- data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
- data/third_party/boringssl/crypto/x509/x_req.c +112 -0
- data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
- data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
- data/third_party/boringssl/crypto/x509/x_val.c +69 -0
- data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
- data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
- data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
- data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
- data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
- data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
- data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
- data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
- data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
- data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
- data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
- data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
- data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
- data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
- data/third_party/boringssl/include/openssl/aead.h +346 -0
- data/third_party/boringssl/include/openssl/aes.h +158 -0
- data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
- data/third_party/boringssl/include/openssl/asn1.h +1168 -0
- data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
- data/third_party/boringssl/include/openssl/asn1t.h +906 -0
- data/third_party/boringssl/include/openssl/base.h +261 -0
- data/third_party/boringssl/include/openssl/base64.h +184 -0
- data/third_party/boringssl/include/openssl/bio.h +902 -0
- data/third_party/boringssl/include/openssl/blowfish.h +93 -0
- data/third_party/boringssl/include/openssl/bn.h +885 -0
- data/third_party/boringssl/include/openssl/buf.h +118 -0
- data/third_party/boringssl/include/openssl/buffer.h +18 -0
- data/third_party/boringssl/include/openssl/bytestring.h +360 -0
- data/third_party/boringssl/include/openssl/cast.h +96 -0
- data/third_party/boringssl/include/openssl/chacha.h +37 -0
- data/third_party/boringssl/include/openssl/cipher.h +571 -0
- data/third_party/boringssl/include/openssl/cmac.h +76 -0
- data/third_party/boringssl/include/openssl/conf.h +145 -0
- data/third_party/boringssl/include/openssl/cpu.h +184 -0
- data/third_party/boringssl/include/openssl/crypto.h +68 -0
- data/third_party/boringssl/include/openssl/curve25519.h +88 -0
- data/third_party/boringssl/include/openssl/des.h +177 -0
- data/third_party/boringssl/include/openssl/dh.h +238 -0
- data/third_party/boringssl/include/openssl/digest.h +258 -0
- data/third_party/boringssl/include/openssl/dsa.h +343 -0
- data/third_party/boringssl/include/openssl/dtls1.h +16 -0
- data/third_party/boringssl/include/openssl/ec.h +355 -0
- data/third_party/boringssl/include/openssl/ec_key.h +280 -0
- data/third_party/boringssl/include/openssl/ecdh.h +102 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
- data/third_party/boringssl/include/openssl/engine.h +98 -0
- data/third_party/boringssl/include/openssl/err.h +487 -0
- data/third_party/boringssl/include/openssl/evp.h +750 -0
- data/third_party/boringssl/include/openssl/ex_data.h +213 -0
- data/third_party/boringssl/include/openssl/hkdf.h +44 -0
- data/third_party/boringssl/include/openssl/hmac.h +160 -0
- data/third_party/boringssl/include/openssl/lhash.h +192 -0
- data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
- data/third_party/boringssl/include/openssl/md4.h +102 -0
- data/third_party/boringssl/include/openssl/md5.h +107 -0
- data/third_party/boringssl/include/openssl/mem.h +140 -0
- data/third_party/boringssl/include/openssl/obj.h +198 -0
- data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
- data/third_party/boringssl/include/openssl/objects.h +18 -0
- data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
- data/third_party/boringssl/include/openssl/opensslv.h +18 -0
- data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
- data/third_party/boringssl/include/openssl/pem.h +521 -0
- data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
- data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
- data/third_party/boringssl/include/openssl/poly1305.h +51 -0
- data/third_party/boringssl/include/openssl/pqueue.h +146 -0
- data/third_party/boringssl/include/openssl/rand.h +113 -0
- data/third_party/boringssl/include/openssl/rc4.h +90 -0
- data/third_party/boringssl/include/openssl/rsa.h +637 -0
- data/third_party/boringssl/include/openssl/safestack.h +16 -0
- data/third_party/boringssl/include/openssl/sha.h +256 -0
- data/third_party/boringssl/include/openssl/srtp.h +18 -0
- data/third_party/boringssl/include/openssl/ssl.h +4466 -0
- data/third_party/boringssl/include/openssl/ssl3.h +441 -0
- data/third_party/boringssl/include/openssl/stack.h +298 -0
- data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
- data/third_party/boringssl/include/openssl/thread.h +173 -0
- data/third_party/boringssl/include/openssl/time_support.h +90 -0
- data/third_party/boringssl/include/openssl/tls1.h +653 -0
- data/third_party/boringssl/include/openssl/type_check.h +91 -0
- data/third_party/boringssl/include/openssl/x509.h +1258 -0
- data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
- data/third_party/boringssl/include/openssl/x509v3.h +798 -0
- data/third_party/boringssl/ssl/custom_extensions.c +257 -0
- data/third_party/boringssl/ssl/d1_both.c +880 -0
- data/third_party/boringssl/ssl/d1_clnt.c +566 -0
- data/third_party/boringssl/ssl/d1_lib.c +340 -0
- data/third_party/boringssl/ssl/d1_meth.c +130 -0
- data/third_party/boringssl/ssl/d1_pkt.c +578 -0
- data/third_party/boringssl/ssl/d1_srtp.c +234 -0
- data/third_party/boringssl/ssl/d1_srvr.c +485 -0
- data/third_party/boringssl/ssl/dtls_record.c +308 -0
- data/third_party/boringssl/ssl/internal.h +1276 -0
- data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
- data/third_party/boringssl/ssl/s3_both.c +571 -0
- data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
- data/third_party/boringssl/ssl/s3_enc.c +494 -0
- data/third_party/boringssl/ssl/s3_lib.c +587 -0
- data/third_party/boringssl/ssl/s3_meth.c +166 -0
- data/third_party/boringssl/ssl/s3_pkt.c +732 -0
- data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
- data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
- data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
- data/third_party/boringssl/ssl/ssl_cert.c +539 -0
- data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
- data/third_party/boringssl/ssl/ssl_file.c +633 -0
- data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
- data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
- data/third_party/boringssl/ssl/ssl_session.c +764 -0
- data/third_party/boringssl/ssl/ssl_stat.c +591 -0
- data/third_party/boringssl/ssl/t1_enc.c +708 -0
- data/third_party/boringssl/ssl/t1_lib.c +2905 -0
- data/third_party/boringssl/ssl/test/async_bio.h +45 -0
- data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
- data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
- data/third_party/boringssl/ssl/test/test_config.h +108 -0
- data/third_party/boringssl/ssl/tls_record.c +342 -0
- data/third_party/zlib/adler32.c +179 -0
- data/third_party/zlib/compress.c +80 -0
- data/third_party/zlib/crc32.c +425 -0
- data/third_party/zlib/crc32.h +441 -0
- data/third_party/zlib/deflate.c +1967 -0
- data/third_party/zlib/deflate.h +346 -0
- data/third_party/zlib/gzclose.c +25 -0
- data/third_party/zlib/gzguts.h +209 -0
- data/third_party/zlib/gzlib.c +634 -0
- data/third_party/zlib/gzread.c +594 -0
- data/third_party/zlib/gzwrite.c +577 -0
- data/third_party/zlib/infback.c +640 -0
- data/third_party/zlib/inffast.c +340 -0
- data/third_party/zlib/inffast.h +11 -0
- data/third_party/zlib/inffixed.h +94 -0
- data/third_party/zlib/inflate.c +1512 -0
- data/third_party/zlib/inflate.h +122 -0
- data/third_party/zlib/inftrees.c +306 -0
- data/third_party/zlib/inftrees.h +62 -0
- data/third_party/zlib/trees.c +1226 -0
- data/third_party/zlib/trees.h +128 -0
- data/third_party/zlib/uncompr.c +59 -0
- data/third_party/zlib/zconf.h +511 -0
- data/third_party/zlib/zlib.h +1768 -0
- data/third_party/zlib/zutil.c +324 -0
- data/third_party/zlib/zutil.h +253 -0
- metadata +492 -25
- data/Rakefile +0 -63
- data/src/ruby/lib/grpc/grpc.so +0 -0
data/src/core/iomgr/exec_ctx.h
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -57,22 +57,29 @@ struct grpc_exec_ctx {
|
|
57
57
|
grpc_closure_list closure_list;
|
58
58
|
};
|
59
59
|
|
60
|
+
/** A workqueue represents a list of work to be executed asynchronously.
|
61
|
+
Forward declared here to avoid a circular dependency with workqueue.h. */
|
62
|
+
struct grpc_workqueue;
|
63
|
+
typedef struct grpc_workqueue grpc_workqueue;
|
64
|
+
|
60
65
|
#define GRPC_EXEC_CTX_INIT \
|
61
66
|
{ GRPC_CLOSURE_LIST_INIT }
|
62
67
|
|
63
68
|
/** Flush any work that has been enqueued onto this grpc_exec_ctx.
|
64
69
|
* Caller must guarantee that no interfering locks are held.
|
65
|
-
* Returns
|
66
|
-
|
70
|
+
* Returns true if work was performed, false otherwise. */
|
71
|
+
bool grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx);
|
67
72
|
/** Finish any pending work for a grpc_exec_ctx. Must be called before
|
68
73
|
* the instance is destroyed, or work may be lost. */
|
69
74
|
void grpc_exec_ctx_finish(grpc_exec_ctx *exec_ctx);
|
70
75
|
/** Add a closure to be executed at the next flush/finish point */
|
71
76
|
void grpc_exec_ctx_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
72
|
-
|
77
|
+
bool success,
|
78
|
+
grpc_workqueue *offload_target_or_null);
|
73
79
|
/** Add a list of closures to be executed at the next flush/finish point.
|
74
80
|
* Leaves \a list empty. */
|
75
81
|
void grpc_exec_ctx_enqueue_list(grpc_exec_ctx *exec_ctx,
|
76
|
-
grpc_closure_list *list
|
82
|
+
grpc_closure_list *list,
|
83
|
+
grpc_workqueue *offload_target_or_null);
|
77
84
|
|
78
85
|
#endif
|
data/src/core/iomgr/executor.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -77,7 +77,7 @@ static void closure_exec_thread_func(void *ignored) {
|
|
77
77
|
gpr_mu_unlock(&g_executor.mu);
|
78
78
|
break;
|
79
79
|
} else {
|
80
|
-
grpc_exec_ctx_enqueue_list(&exec_ctx, &g_executor.closures);
|
80
|
+
grpc_exec_ctx_enqueue_list(&exec_ctx, &g_executor.closures, NULL);
|
81
81
|
}
|
82
82
|
gpr_mu_unlock(&g_executor.mu);
|
83
83
|
grpc_exec_ctx_flush(&exec_ctx);
|
@@ -112,7 +112,7 @@ static void maybe_spawn_locked() {
|
|
112
112
|
g_executor.pending_join = 1;
|
113
113
|
}
|
114
114
|
|
115
|
-
void grpc_executor_enqueue(grpc_closure *closure,
|
115
|
+
void grpc_executor_enqueue(grpc_closure *closure, bool success) {
|
116
116
|
gpr_mu_lock(&g_executor.mu);
|
117
117
|
if (g_executor.shutting_down == 0) {
|
118
118
|
grpc_closure_list_add(&g_executor.closures, closure, success);
|
@@ -133,7 +133,7 @@ void grpc_executor_shutdown() {
|
|
133
133
|
* list below because we aren't accepting new work */
|
134
134
|
|
135
135
|
/* Execute pending callbacks, some may be performing cleanups */
|
136
|
-
grpc_exec_ctx_enqueue_list(&exec_ctx, &g_executor.closures);
|
136
|
+
grpc_exec_ctx_enqueue_list(&exec_ctx, &g_executor.closures, NULL);
|
137
137
|
grpc_exec_ctx_finish(&exec_ctx);
|
138
138
|
GPR_ASSERT(grpc_closure_list_empty(g_executor.closures));
|
139
139
|
if (pending_join) {
|
data/src/core/iomgr/executor.h
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -45,7 +45,7 @@ void grpc_executor_init();
|
|
45
45
|
|
46
46
|
/** Enqueue \a closure for its eventual execution of \a f(arg) on a separate
|
47
47
|
* thread */
|
48
|
-
void grpc_executor_enqueue(grpc_closure *closure,
|
48
|
+
void grpc_executor_enqueue(grpc_closure *closure, bool success);
|
49
49
|
|
50
50
|
/** Shutdown the executor, running all pending work as part of the call */
|
51
51
|
void grpc_executor_shutdown();
|
data/src/core/iomgr/fd_posix.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -101,6 +101,7 @@ static grpc_fd *alloc_fd(int fd) {
|
|
101
101
|
r->read_watcher = r->write_watcher = NULL;
|
102
102
|
r->on_done_closure = NULL;
|
103
103
|
r->closed = 0;
|
104
|
+
r->released = 0;
|
104
105
|
return r;
|
105
106
|
}
|
106
107
|
|
@@ -210,6 +211,24 @@ static int has_watchers(grpc_fd *fd) {
|
|
210
211
|
fd->inactive_watcher_root.next != &fd->inactive_watcher_root;
|
211
212
|
}
|
212
213
|
|
214
|
+
static void close_fd_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
|
215
|
+
fd->closed = 1;
|
216
|
+
if (!fd->released) {
|
217
|
+
close(fd->fd);
|
218
|
+
} else {
|
219
|
+
grpc_remove_fd_from_all_epoll_sets(fd->fd);
|
220
|
+
}
|
221
|
+
grpc_exec_ctx_enqueue(exec_ctx, fd->on_done_closure, true, NULL);
|
222
|
+
}
|
223
|
+
|
224
|
+
int grpc_fd_wrapped_fd(grpc_fd *fd) {
|
225
|
+
if (fd->released || fd->closed) {
|
226
|
+
return -1;
|
227
|
+
} else {
|
228
|
+
return fd->fd;
|
229
|
+
}
|
230
|
+
}
|
231
|
+
|
213
232
|
void grpc_fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure *on_done,
|
214
233
|
int *release_fd, const char *reason) {
|
215
234
|
fd->on_done_closure = on_done;
|
@@ -222,11 +241,7 @@ void grpc_fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure *on_done,
|
|
222
241
|
gpr_mu_lock(&fd->mu);
|
223
242
|
REF_BY(fd, 1, reason); /* remove active status, but keep referenced */
|
224
243
|
if (!has_watchers(fd)) {
|
225
|
-
fd
|
226
|
-
if (!fd->released) {
|
227
|
-
close(fd->fd);
|
228
|
-
}
|
229
|
-
grpc_exec_ctx_enqueue(exec_ctx, fd->on_done_closure, 1);
|
244
|
+
close_fd_locked(exec_ctx, fd);
|
230
245
|
} else {
|
231
246
|
wake_all_watchers_locked(fd);
|
232
247
|
}
|
@@ -258,7 +273,7 @@ static void notify_on_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
258
273
|
} else if (*st == CLOSURE_READY) {
|
259
274
|
/* already ready ==> queue the closure to run immediately */
|
260
275
|
*st = CLOSURE_NOT_READY;
|
261
|
-
grpc_exec_ctx_enqueue(exec_ctx, closure, !fd->shutdown);
|
276
|
+
grpc_exec_ctx_enqueue(exec_ctx, closure, !fd->shutdown, NULL);
|
262
277
|
maybe_wake_one_watcher_locked(fd);
|
263
278
|
} else {
|
264
279
|
/* upcallptr was set to a different closure. This is an error! */
|
@@ -281,7 +296,7 @@ static int set_ready_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
281
296
|
return 0;
|
282
297
|
} else {
|
283
298
|
/* waiting ==> queue closure */
|
284
|
-
grpc_exec_ctx_enqueue(exec_ctx, *st, !fd->shutdown);
|
299
|
+
grpc_exec_ctx_enqueue(exec_ctx, *st, !fd->shutdown, NULL);
|
285
300
|
*st = CLOSURE_NOT_READY;
|
286
301
|
return 1;
|
287
302
|
}
|
@@ -318,10 +333,10 @@ void grpc_fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
318
333
|
gpr_mu_unlock(&fd->mu);
|
319
334
|
}
|
320
335
|
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
336
|
+
uint32_t grpc_fd_begin_poll(grpc_fd *fd, grpc_pollset *pollset,
|
337
|
+
grpc_pollset_worker *worker, uint32_t read_mask,
|
338
|
+
uint32_t write_mask, grpc_fd_watcher *watcher) {
|
339
|
+
uint32_t mask = 0;
|
325
340
|
grpc_closure *cur;
|
326
341
|
int requested;
|
327
342
|
/* keep track of pollers that have requested our events, in case they change
|
@@ -416,11 +431,7 @@ void grpc_fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *watcher,
|
|
416
431
|
maybe_wake_one_watcher_locked(fd);
|
417
432
|
}
|
418
433
|
if (grpc_fd_is_orphaned(fd) && !has_watchers(fd) && !fd->closed) {
|
419
|
-
fd
|
420
|
-
if (!fd->released) {
|
421
|
-
close(fd->fd);
|
422
|
-
}
|
423
|
-
grpc_exec_ctx_enqueue(exec_ctx, fd->on_done_closure, 1);
|
434
|
+
close_fd_locked(exec_ctx, fd);
|
424
435
|
}
|
425
436
|
gpr_mu_unlock(&fd->mu);
|
426
437
|
|
data/src/core/iomgr/fd_posix.h
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -105,6 +105,9 @@ struct grpc_fd {
|
|
105
105
|
This takes ownership of closing fd. */
|
106
106
|
grpc_fd *grpc_fd_create(int fd, const char *name);
|
107
107
|
|
108
|
+
/* Return the wrapped fd, or -1 if it has been released or closed. */
|
109
|
+
int grpc_fd_wrapped_fd(grpc_fd *fd);
|
110
|
+
|
108
111
|
/* Releases fd to be asynchronously destroyed.
|
109
112
|
on_done is called when the underlying file descriptor is definitely close()d.
|
110
113
|
If on_done is NULL, no callback will be made.
|
@@ -126,9 +129,9 @@ void grpc_fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure *on_done,
|
|
126
129
|
Polling strategies that do not need to alter their behavior depending on the
|
127
130
|
fd's current interest (such as epoll) do not need to call this function.
|
128
131
|
MUST NOT be called with a pollset lock taken */
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
+
uint32_t grpc_fd_begin_poll(grpc_fd *fd, grpc_pollset *pollset,
|
133
|
+
grpc_pollset_worker *worker, uint32_t read_mask,
|
134
|
+
uint32_t write_mask, grpc_fd_watcher *rec);
|
132
135
|
/* Complete polling previously started with grpc_fd_begin_poll
|
133
136
|
MUST NOT be called with a pollset lock taken
|
134
137
|
if got_read or got_write are 1, also does the become_{readable,writable} as
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -57,7 +57,7 @@ static HANDLE g_iocp;
|
|
57
57
|
static DWORD deadline_to_millis_timeout(gpr_timespec deadline,
|
58
58
|
gpr_timespec now) {
|
59
59
|
gpr_timespec timeout;
|
60
|
-
static const
|
60
|
+
static const int64_t max_spin_polling_us = 10;
|
61
61
|
if (gpr_time_cmp(deadline, gpr_inf_future(deadline.clock_type)) == 0) {
|
62
62
|
return INFINITE;
|
63
63
|
}
|
@@ -67,7 +67,7 @@ static DWORD deadline_to_millis_timeout(gpr_timespec deadline,
|
|
67
67
|
return 0;
|
68
68
|
}
|
69
69
|
timeout = gpr_time_sub(deadline, now);
|
70
|
-
return gpr_time_to_millis(gpr_time_add(
|
70
|
+
return (DWORD)gpr_time_to_millis(gpr_time_add(
|
71
71
|
timeout, gpr_time_from_nanos(GPR_NS_PER_MS - 1, GPR_TIMESPAN)));
|
72
72
|
}
|
73
73
|
|
@@ -120,7 +120,7 @@ void grpc_iocp_work(grpc_exec_ctx *exec_ctx, gpr_timespec deadline) {
|
|
120
120
|
info->has_pending_iocp = 1;
|
121
121
|
}
|
122
122
|
gpr_mu_unlock(&socket->state_mu);
|
123
|
-
grpc_exec_ctx_enqueue(exec_ctx, closure,
|
123
|
+
grpc_exec_ctx_enqueue(exec_ctx, closure, true, NULL);
|
124
124
|
}
|
125
125
|
|
126
126
|
void grpc_iocp_init(void) {
|
@@ -160,7 +160,7 @@ void grpc_iocp_add_socket(grpc_winsocket *socket) {
|
|
160
160
|
HANDLE ret;
|
161
161
|
if (socket->added_to_iocp) return;
|
162
162
|
ret = CreateIoCompletionPort((HANDLE)socket->socket, g_iocp,
|
163
|
-
(
|
163
|
+
(uintptr_t)socket, 0);
|
164
164
|
if (!ret) {
|
165
165
|
char *utf8_message = gpr_format_message(WSAGetLastError());
|
166
166
|
gpr_log(GPR_ERROR, "Unable to add socket to iocp: %s", utf8_message);
|
@@ -179,13 +179,11 @@ void grpc_iocp_add_socket(grpc_winsocket *socket) {
|
|
179
179
|
static void socket_notify_on_iocp(grpc_exec_ctx *exec_ctx,
|
180
180
|
grpc_winsocket *socket, grpc_closure *closure,
|
181
181
|
grpc_winsocket_callback_info *info) {
|
182
|
-
int run_now = 0;
|
183
182
|
GPR_ASSERT(info->closure == NULL);
|
184
183
|
gpr_mu_lock(&socket->state_mu);
|
185
184
|
if (info->has_pending_iocp) {
|
186
|
-
run_now = 1;
|
187
185
|
info->has_pending_iocp = 0;
|
188
|
-
grpc_exec_ctx_enqueue(exec_ctx, closure,
|
186
|
+
grpc_exec_ctx_enqueue(exec_ctx, closure, true, NULL);
|
189
187
|
} else {
|
190
188
|
info->closure = closure;
|
191
189
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -43,9 +43,68 @@
|
|
43
43
|
|
44
44
|
#include <grpc/support/alloc.h>
|
45
45
|
#include <grpc/support/log.h>
|
46
|
+
#include <grpc/support/useful.h>
|
46
47
|
#include "src/core/iomgr/fd_posix.h"
|
47
|
-
#include "src/core/support/block_annotate.h"
|
48
48
|
#include "src/core/profiling/timers.h"
|
49
|
+
#include "src/core/support/block_annotate.h"
|
50
|
+
|
51
|
+
struct epoll_fd_list {
|
52
|
+
int *epoll_fds;
|
53
|
+
size_t count;
|
54
|
+
size_t capacity;
|
55
|
+
};
|
56
|
+
|
57
|
+
static struct epoll_fd_list epoll_fd_global_list;
|
58
|
+
static gpr_once init_epoll_fd_list_mu = GPR_ONCE_INIT;
|
59
|
+
static gpr_mu epoll_fd_list_mu;
|
60
|
+
|
61
|
+
static void init_mu(void) { gpr_mu_init(&epoll_fd_list_mu); }
|
62
|
+
|
63
|
+
static void add_epoll_fd_to_global_list(int epoll_fd) {
|
64
|
+
gpr_once_init(&init_epoll_fd_list_mu, init_mu);
|
65
|
+
|
66
|
+
gpr_mu_lock(&epoll_fd_list_mu);
|
67
|
+
if (epoll_fd_global_list.count == epoll_fd_global_list.capacity) {
|
68
|
+
epoll_fd_global_list.capacity =
|
69
|
+
GPR_MAX((size_t)8, epoll_fd_global_list.capacity * 2);
|
70
|
+
epoll_fd_global_list.epoll_fds =
|
71
|
+
gpr_realloc(epoll_fd_global_list.epoll_fds,
|
72
|
+
epoll_fd_global_list.capacity * sizeof(int));
|
73
|
+
}
|
74
|
+
epoll_fd_global_list.epoll_fds[epoll_fd_global_list.count++] = epoll_fd;
|
75
|
+
gpr_mu_unlock(&epoll_fd_list_mu);
|
76
|
+
}
|
77
|
+
|
78
|
+
static void remove_epoll_fd_from_global_list(int epoll_fd) {
|
79
|
+
gpr_mu_lock(&epoll_fd_list_mu);
|
80
|
+
GPR_ASSERT(epoll_fd_global_list.count > 0);
|
81
|
+
for (size_t i = 0; i < epoll_fd_global_list.count; i++) {
|
82
|
+
if (epoll_fd == epoll_fd_global_list.epoll_fds[i]) {
|
83
|
+
epoll_fd_global_list.epoll_fds[i] =
|
84
|
+
epoll_fd_global_list.epoll_fds[--(epoll_fd_global_list.count)];
|
85
|
+
break;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
gpr_mu_unlock(&epoll_fd_list_mu);
|
89
|
+
}
|
90
|
+
|
91
|
+
void grpc_remove_fd_from_all_epoll_sets(int fd) {
|
92
|
+
int err;
|
93
|
+
gpr_once_init(&init_epoll_fd_list_mu, init_mu);
|
94
|
+
gpr_mu_lock(&epoll_fd_list_mu);
|
95
|
+
if (epoll_fd_global_list.count == 0) {
|
96
|
+
gpr_mu_unlock(&epoll_fd_list_mu);
|
97
|
+
return;
|
98
|
+
}
|
99
|
+
for (size_t i = 0; i < epoll_fd_global_list.count; i++) {
|
100
|
+
err = epoll_ctl(epoll_fd_global_list.epoll_fds[i], EPOLL_CTL_DEL, fd, NULL);
|
101
|
+
if (err < 0 && errno != ENOENT) {
|
102
|
+
gpr_log(GPR_ERROR, "epoll_ctl del for %d failed: %s", fd,
|
103
|
+
strerror(errno));
|
104
|
+
}
|
105
|
+
}
|
106
|
+
gpr_mu_unlock(&epoll_fd_list_mu);
|
107
|
+
}
|
49
108
|
|
50
109
|
typedef struct {
|
51
110
|
grpc_pollset *pollset;
|
@@ -82,7 +141,7 @@ static void finally_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
82
141
|
}
|
83
142
|
|
84
143
|
static void perform_delayed_add(grpc_exec_ctx *exec_ctx, void *arg,
|
85
|
-
|
144
|
+
bool iomgr_status) {
|
86
145
|
delayed_add *da = arg;
|
87
146
|
|
88
147
|
if (!grpc_fd_is_orphaned(da->fd)) {
|
@@ -95,7 +154,7 @@ static void perform_delayed_add(grpc_exec_ctx *exec_ctx, void *arg,
|
|
95
154
|
/* We don't care about this pollset anymore. */
|
96
155
|
if (da->pollset->in_flight_cbs == 0 && !da->pollset->called_shutdown) {
|
97
156
|
da->pollset->called_shutdown = 1;
|
98
|
-
grpc_exec_ctx_enqueue(exec_ctx, da->pollset->shutdown_done,
|
157
|
+
grpc_exec_ctx_enqueue(exec_ctx, da->pollset->shutdown_done, true, NULL);
|
99
158
|
}
|
100
159
|
}
|
101
160
|
gpr_mu_unlock(&da->pollset->mu);
|
@@ -119,7 +178,7 @@ static void multipoll_with_epoll_pollset_add_fd(grpc_exec_ctx *exec_ctx,
|
|
119
178
|
GRPC_FD_REF(fd, "delayed_add");
|
120
179
|
grpc_closure_init(&da->closure, perform_delayed_add, da);
|
121
180
|
pollset->in_flight_cbs++;
|
122
|
-
grpc_exec_ctx_enqueue(exec_ctx, &da->closure,
|
181
|
+
grpc_exec_ctx_enqueue(exec_ctx, &da->closure, true, NULL);
|
123
182
|
}
|
124
183
|
}
|
125
184
|
|
@@ -211,6 +270,7 @@ static void multipoll_with_epoll_pollset_finish_shutdown(
|
|
211
270
|
static void multipoll_with_epoll_pollset_destroy(grpc_pollset *pollset) {
|
212
271
|
pollset_hdr *h = pollset->data.ptr;
|
213
272
|
close(h->epoll_fd);
|
273
|
+
remove_epoll_fd_from_global_list(h->epoll_fd);
|
214
274
|
gpr_free(h);
|
215
275
|
}
|
216
276
|
|
@@ -236,6 +296,7 @@ static void epoll_become_multipoller(grpc_exec_ctx *exec_ctx,
|
|
236
296
|
gpr_log(GPR_ERROR, "epoll_create1 failed: %s", strerror(errno));
|
237
297
|
abort();
|
238
298
|
}
|
299
|
+
add_epoll_fd_to_global_list(h->epoll_fd);
|
239
300
|
|
240
301
|
ev.events = (uint32_t)(EPOLLIN | EPOLLET);
|
241
302
|
ev.data.ptr = NULL;
|
@@ -255,4 +316,8 @@ static void epoll_become_multipoller(grpc_exec_ctx *exec_ctx,
|
|
255
316
|
grpc_platform_become_multipoller_type grpc_platform_become_multipoller =
|
256
317
|
epoll_become_multipoller;
|
257
318
|
|
319
|
+
#else /* GPR_LINUX_MULTIPOLL_WITH_EPOLL */
|
320
|
+
|
321
|
+
void grpc_remove_fd_from_all_epoll_sets(int fd) {}
|
322
|
+
|
258
323
|
#endif /* GPR_LINUX_MULTIPOLL_WITH_EPOLL */
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -144,7 +144,9 @@ static void multipoll_with_poll_pollset_maybe_work_and_unlock(
|
|
144
144
|
GRPC_SCHEDULING_END_BLOCKING_REGION;
|
145
145
|
|
146
146
|
if (r < 0) {
|
147
|
-
|
147
|
+
if (errno != EINTR) {
|
148
|
+
gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno));
|
149
|
+
}
|
148
150
|
for (i = 2; i < pfd_count; i++) {
|
149
151
|
grpc_fd_end_poll(exec_ctx, &watchers[i], 0, 0);
|
150
152
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -100,7 +100,7 @@ static void push_front_worker(grpc_pollset *p, grpc_pollset_worker *worker) {
|
|
100
100
|
|
101
101
|
void grpc_pollset_kick_ext(grpc_pollset *p,
|
102
102
|
grpc_pollset_worker *specific_worker,
|
103
|
-
|
103
|
+
uint32_t flags) {
|
104
104
|
GPR_TIMER_BEGIN("grpc_pollset_kick_ext", 0);
|
105
105
|
|
106
106
|
/* pollset->mu already held */
|
@@ -116,7 +116,7 @@ void grpc_pollset_kick_ext(grpc_pollset *p,
|
|
116
116
|
p->kicked_without_pollers = 1;
|
117
117
|
GPR_TIMER_END("grpc_pollset_kick_ext.broadcast", 0);
|
118
118
|
} else if (gpr_tls_get(&g_current_thread_worker) !=
|
119
|
-
(
|
119
|
+
(intptr_t)specific_worker) {
|
120
120
|
GPR_TIMER_MARK("different_thread_worker", 0);
|
121
121
|
if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) {
|
122
122
|
specific_worker->reevaluate_polling_on_wakeup = 1;
|
@@ -131,19 +131,18 @@ void grpc_pollset_kick_ext(grpc_pollset *p,
|
|
131
131
|
specific_worker->kicked_specifically = 1;
|
132
132
|
grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd);
|
133
133
|
}
|
134
|
-
} else if (gpr_tls_get(&g_current_thread_poller) != (
|
134
|
+
} else if (gpr_tls_get(&g_current_thread_poller) != (intptr_t)p) {
|
135
135
|
GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
|
136
136
|
GPR_TIMER_MARK("kick_anonymous", 0);
|
137
137
|
specific_worker = pop_front_worker(p);
|
138
138
|
if (specific_worker != NULL) {
|
139
|
-
if (gpr_tls_get(&g_current_thread_worker) ==
|
140
|
-
(gpr_intptr)specific_worker) {
|
139
|
+
if (gpr_tls_get(&g_current_thread_worker) == (intptr_t)specific_worker) {
|
141
140
|
GPR_TIMER_MARK("kick_anonymous_not_self", 0);
|
142
141
|
push_back_worker(p, specific_worker);
|
143
142
|
specific_worker = pop_front_worker(p);
|
144
143
|
if ((flags & GRPC_POLLSET_CAN_KICK_SELF) == 0 &&
|
145
144
|
gpr_tls_get(&g_current_thread_worker) ==
|
146
|
-
(
|
145
|
+
(intptr_t)specific_worker) {
|
147
146
|
push_back_worker(p, specific_worker);
|
148
147
|
specific_worker = NULL;
|
149
148
|
}
|
@@ -244,7 +243,7 @@ void grpc_pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
244
243
|
static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
|
245
244
|
GPR_ASSERT(grpc_closure_list_empty(pollset->idle_jobs));
|
246
245
|
pollset->vtable->finish_shutdown(pollset);
|
247
|
-
grpc_exec_ctx_enqueue(exec_ctx, pollset->shutdown_done,
|
246
|
+
grpc_exec_ctx_enqueue(exec_ctx, pollset->shutdown_done, true, NULL);
|
248
247
|
}
|
249
248
|
|
250
249
|
void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
@@ -272,7 +271,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
272
271
|
if (!grpc_pollset_has_workers(pollset) &&
|
273
272
|
!grpc_closure_list_empty(pollset->idle_jobs)) {
|
274
273
|
GPR_TIMER_MARK("grpc_pollset_work.idle_jobs", 0);
|
275
|
-
grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs);
|
274
|
+
grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs, NULL);
|
276
275
|
goto done;
|
277
276
|
}
|
278
277
|
/* Check alarms - these are a global resource so we just ping
|
@@ -307,9 +306,9 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
307
306
|
if (!added_worker) {
|
308
307
|
push_front_worker(pollset, worker);
|
309
308
|
added_worker = 1;
|
310
|
-
gpr_tls_set(&g_current_thread_worker, (
|
309
|
+
gpr_tls_set(&g_current_thread_worker, (intptr_t)worker);
|
311
310
|
}
|
312
|
-
gpr_tls_set(&g_current_thread_poller, (
|
311
|
+
gpr_tls_set(&g_current_thread_poller, (intptr_t)pollset);
|
313
312
|
GPR_TIMER_BEGIN("maybe_work_and_unlock", 0);
|
314
313
|
pollset->vtable->maybe_work_and_unlock(exec_ctx, pollset, worker,
|
315
314
|
deadline, now);
|
@@ -366,7 +365,7 @@ void grpc_pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
366
365
|
* TODO(dklempner): Can we refactor the shutdown logic to avoid this? */
|
367
366
|
gpr_mu_lock(&pollset->mu);
|
368
367
|
} else if (!grpc_closure_list_empty(pollset->idle_jobs)) {
|
369
|
-
grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs);
|
368
|
+
grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs, NULL);
|
370
369
|
gpr_mu_unlock(&pollset->mu);
|
371
370
|
grpc_exec_ctx_flush(exec_ctx);
|
372
371
|
gpr_mu_lock(&pollset->mu);
|
@@ -382,7 +381,7 @@ void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
382
381
|
pollset->shutdown_done = closure;
|
383
382
|
grpc_pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
|
384
383
|
if (!grpc_pollset_has_workers(pollset)) {
|
385
|
-
grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs);
|
384
|
+
grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs, NULL);
|
386
385
|
}
|
387
386
|
if (!pollset->called_shutdown && pollset->in_flight_cbs == 0 &&
|
388
387
|
!grpc_pollset_has_workers(pollset)) {
|
@@ -394,7 +393,7 @@ void grpc_pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
394
393
|
int grpc_poll_deadline_to_millis_timeout(gpr_timespec deadline,
|
395
394
|
gpr_timespec now) {
|
396
395
|
gpr_timespec timeout;
|
397
|
-
static const
|
396
|
+
static const int64_t max_spin_polling_us = 10;
|
398
397
|
if (gpr_time_cmp(deadline, gpr_inf_future(deadline.clock_type)) == 0) {
|
399
398
|
return -1;
|
400
399
|
}
|
@@ -420,7 +419,8 @@ typedef struct grpc_unary_promote_args {
|
|
420
419
|
grpc_closure promotion_closure;
|
421
420
|
} grpc_unary_promote_args;
|
422
421
|
|
423
|
-
static void basic_do_promote(grpc_exec_ctx *exec_ctx, void *args,
|
422
|
+
static void basic_do_promote(grpc_exec_ctx *exec_ctx, void *args,
|
423
|
+
bool success) {
|
424
424
|
grpc_unary_promote_args *up_args = args;
|
425
425
|
const grpc_pollset_vtable *original_vtable = up_args->original_vtable;
|
426
426
|
grpc_pollset *pollset = up_args->pollset;
|