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
@@ -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
|
@@ -34,149 +34,6 @@
|
|
34
34
|
#ifndef GRPC_SUPPORT_SLICE_H
|
35
35
|
#define GRPC_SUPPORT_SLICE_H
|
36
36
|
|
37
|
-
#include <grpc/
|
38
|
-
|
39
|
-
#include <stddef.h>
|
40
|
-
|
41
|
-
#ifdef __cplusplus
|
42
|
-
extern "C" {
|
43
|
-
#endif
|
44
|
-
|
45
|
-
/* Slice API
|
46
|
-
|
47
|
-
A slice represents a contiguous reference counted array of bytes.
|
48
|
-
It is cheap to take references to a slice, and it is cheap to create a
|
49
|
-
slice pointing to a subset of another slice.
|
50
|
-
|
51
|
-
The data-structure for slices is exposed here to allow non-gpr code to
|
52
|
-
build slices from whatever data they have available.
|
53
|
-
|
54
|
-
When defining interfaces that handle slices, care should be taken to define
|
55
|
-
reference ownership semantics (who should call unref?) and mutability
|
56
|
-
constraints (is the callee allowed to modify the slice?) */
|
57
|
-
|
58
|
-
/* Reference count container for gpr_slice. Contains function pointers to
|
59
|
-
increment and decrement reference counts. Implementations should cleanup
|
60
|
-
when the reference count drops to zero.
|
61
|
-
Typically client code should not touch this, and use gpr_slice_malloc,
|
62
|
-
gpr_slice_new, or gpr_slice_new_with_len instead. */
|
63
|
-
typedef struct gpr_slice_refcount {
|
64
|
-
void (*ref)(void *);
|
65
|
-
void (*unref)(void *);
|
66
|
-
} gpr_slice_refcount;
|
67
|
-
|
68
|
-
#define GPR_SLICE_INLINED_SIZE (sizeof(size_t) + sizeof(gpr_uint8 *) - 1)
|
69
|
-
|
70
|
-
/* A gpr_slice s, if initialized, represents the byte range
|
71
|
-
s.bytes[0..s.length-1].
|
72
|
-
|
73
|
-
It can have an associated ref count which has a destruction routine to be run
|
74
|
-
when the ref count reaches zero (see gpr_slice_new() and grp_slice_unref()).
|
75
|
-
Multiple gpr_slice values may share a ref count.
|
76
|
-
|
77
|
-
If the slice does not have a refcount, it represents an inlined small piece
|
78
|
-
of data that is copied by value. */
|
79
|
-
typedef struct gpr_slice {
|
80
|
-
struct gpr_slice_refcount *refcount;
|
81
|
-
union {
|
82
|
-
struct {
|
83
|
-
gpr_uint8 *bytes;
|
84
|
-
size_t length;
|
85
|
-
} refcounted;
|
86
|
-
struct {
|
87
|
-
gpr_uint8 length;
|
88
|
-
gpr_uint8 bytes[GPR_SLICE_INLINED_SIZE];
|
89
|
-
} inlined;
|
90
|
-
} data;
|
91
|
-
} gpr_slice;
|
92
|
-
|
93
|
-
#define GPR_SLICE_START_PTR(slice) \
|
94
|
-
((slice).refcount ? (slice).data.refcounted.bytes \
|
95
|
-
: (slice).data.inlined.bytes)
|
96
|
-
#define GPR_SLICE_LENGTH(slice) \
|
97
|
-
((slice).refcount ? (slice).data.refcounted.length \
|
98
|
-
: (slice).data.inlined.length)
|
99
|
-
#define GPR_SLICE_SET_LENGTH(slice, newlen) \
|
100
|
-
((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \
|
101
|
-
: ((slice).data.inlined.length = (gpr_uint8)(newlen)))
|
102
|
-
#define GPR_SLICE_END_PTR(slice) \
|
103
|
-
GPR_SLICE_START_PTR(slice) + GPR_SLICE_LENGTH(slice)
|
104
|
-
#define GPR_SLICE_IS_EMPTY(slice) (GPR_SLICE_LENGTH(slice) == 0)
|
105
|
-
|
106
|
-
/* Increment the refcount of s. Requires slice is initialized.
|
107
|
-
Returns s. */
|
108
|
-
gpr_slice gpr_slice_ref(gpr_slice s);
|
109
|
-
|
110
|
-
/* Decrement the ref count of s. If the ref count of s reaches zero, all
|
111
|
-
slices sharing the ref count are destroyed, and considered no longer
|
112
|
-
initialized. If s is ultimately derived from a call to gpr_slice_new(start,
|
113
|
-
len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is
|
114
|
-
ultimately derived from a call to gpr_slice_new_with_len(start, len, dest)
|
115
|
-
where dest!=NULL , then (*dest)(start, len). Requires s initialized. */
|
116
|
-
void gpr_slice_unref(gpr_slice s);
|
117
|
-
|
118
|
-
/* Create a slice pointing at some data. Calls malloc to allocate a refcount
|
119
|
-
for the object, and arranges that destroy will be called with the pointer
|
120
|
-
passed in at destruction. */
|
121
|
-
gpr_slice gpr_slice_new(void *p, size_t len, void (*destroy)(void *));
|
122
|
-
|
123
|
-
/* Equivalent to gpr_slice_new, but with a two argument destroy function that
|
124
|
-
also takes the slice length. */
|
125
|
-
gpr_slice gpr_slice_new_with_len(void *p, size_t len,
|
126
|
-
void (*destroy)(void *, size_t));
|
127
|
-
|
128
|
-
/* Equivalent to gpr_slice_new(malloc(len), len, free), but saves one malloc()
|
129
|
-
call.
|
130
|
-
Aborts if malloc() fails. */
|
131
|
-
gpr_slice gpr_slice_malloc(size_t length);
|
132
|
-
|
133
|
-
/* Create a slice by copying a string.
|
134
|
-
Does not preserve null terminators.
|
135
|
-
Equivalent to:
|
136
|
-
size_t len = strlen(source);
|
137
|
-
gpr_slice slice = gpr_slice_malloc(len);
|
138
|
-
memcpy(slice->data, source, len); */
|
139
|
-
gpr_slice gpr_slice_from_copied_string(const char *source);
|
140
|
-
|
141
|
-
/* Create a slice by copying a buffer.
|
142
|
-
Equivalent to:
|
143
|
-
gpr_slice slice = gpr_slice_malloc(len);
|
144
|
-
memcpy(slice->data, source, len); */
|
145
|
-
gpr_slice gpr_slice_from_copied_buffer(const char *source, size_t len);
|
146
|
-
|
147
|
-
/* Create a slice pointing to constant memory */
|
148
|
-
gpr_slice gpr_slice_from_static_string(const char *source);
|
149
|
-
|
150
|
-
/* Return a result slice derived from s, which shares a ref count with s, where
|
151
|
-
result.data==s.data+begin, and result.length==end-begin.
|
152
|
-
The ref count of s is increased by one.
|
153
|
-
Requires s initialized, begin <= end, begin <= s.length, and
|
154
|
-
end <= source->length. */
|
155
|
-
gpr_slice gpr_slice_sub(gpr_slice s, size_t begin, size_t end);
|
156
|
-
|
157
|
-
/* The same as gpr_slice_sub, but without altering the ref count */
|
158
|
-
gpr_slice gpr_slice_sub_no_ref(gpr_slice s, size_t begin, size_t end);
|
159
|
-
|
160
|
-
/* Splits s into two: modifies s to be s[0:split], and returns a new slice,
|
161
|
-
sharing a refcount with s, that contains s[split:s.length].
|
162
|
-
Requires s intialized, split <= s.length */
|
163
|
-
gpr_slice gpr_slice_split_tail(gpr_slice *s, size_t split);
|
164
|
-
|
165
|
-
/* Splits s into two: modifies s to be s[split:s.length], and returns a new
|
166
|
-
slice, sharing a refcount with s, that contains s[0:split].
|
167
|
-
Requires s intialized, split <= s.length */
|
168
|
-
gpr_slice gpr_slice_split_head(gpr_slice *s, size_t split);
|
169
|
-
|
170
|
-
gpr_slice gpr_empty_slice(void);
|
171
|
-
|
172
|
-
/* Returns <0 if a < b, ==0 if a == b, >0 if a > b
|
173
|
-
The order is arbitrary, and is not guaranteed to be stable across different
|
174
|
-
versions of the API. */
|
175
|
-
int gpr_slice_cmp(gpr_slice a, gpr_slice b);
|
176
|
-
int gpr_slice_str_cmp(gpr_slice a, const char *b);
|
177
|
-
|
178
|
-
#ifdef __cplusplus
|
179
|
-
}
|
180
|
-
#endif
|
37
|
+
#include <grpc/impl/codegen/slice.h>
|
181
38
|
|
182
39
|
#endif /* GRPC_SUPPORT_SLICE_H */
|
@@ -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
|
@@ -34,69 +34,6 @@
|
|
34
34
|
#ifndef GRPC_SUPPORT_SLICE_BUFFER_H
|
35
35
|
#define GRPC_SUPPORT_SLICE_BUFFER_H
|
36
36
|
|
37
|
-
#include <grpc/
|
38
|
-
|
39
|
-
#ifdef __cplusplus
|
40
|
-
extern "C" {
|
41
|
-
#endif
|
42
|
-
|
43
|
-
#define GRPC_SLICE_BUFFER_INLINE_ELEMENTS 8
|
44
|
-
|
45
|
-
/* Represents an expandable array of slices, to be interpreted as a single item
|
46
|
-
TODO(ctiller): inline some small number of elements into the struct, to
|
47
|
-
avoid per-call allocations */
|
48
|
-
typedef struct {
|
49
|
-
/* slices in the array */
|
50
|
-
gpr_slice *slices;
|
51
|
-
/* the number of slices in the array */
|
52
|
-
size_t count;
|
53
|
-
/* the number of slices allocated in the array */
|
54
|
-
size_t capacity;
|
55
|
-
/* the combined length of all slices in the array */
|
56
|
-
size_t length;
|
57
|
-
/* inlined elements to avoid allocations */
|
58
|
-
gpr_slice inlined[GRPC_SLICE_BUFFER_INLINE_ELEMENTS];
|
59
|
-
} gpr_slice_buffer;
|
60
|
-
|
61
|
-
/* initialize a slice buffer */
|
62
|
-
void gpr_slice_buffer_init(gpr_slice_buffer *sb);
|
63
|
-
/* destroy a slice buffer - unrefs any held elements */
|
64
|
-
void gpr_slice_buffer_destroy(gpr_slice_buffer *sb);
|
65
|
-
/* Add an element to a slice buffer - takes ownership of the slice.
|
66
|
-
This function is allowed to concatenate the passed in slice to the end of
|
67
|
-
some other slice if desired by the slice buffer. */
|
68
|
-
void gpr_slice_buffer_add(gpr_slice_buffer *sb, gpr_slice slice);
|
69
|
-
/* add an element to a slice buffer - takes ownership of the slice and returns
|
70
|
-
the index of the slice.
|
71
|
-
Guarantees that the slice will not be concatenated at the end of another
|
72
|
-
slice (i.e. the data for this slice will begin at the first byte of the
|
73
|
-
slice at the returned index in sb->slices)
|
74
|
-
The implementation MAY decide to concatenate data at the end of a small
|
75
|
-
slice added in this fashion. */
|
76
|
-
size_t gpr_slice_buffer_add_indexed(gpr_slice_buffer *sb, gpr_slice slice);
|
77
|
-
void gpr_slice_buffer_addn(gpr_slice_buffer *sb, gpr_slice *slices, size_t n);
|
78
|
-
/* add a very small (less than 8 bytes) amount of data to the end of a slice
|
79
|
-
buffer: returns a pointer into which to add the data */
|
80
|
-
gpr_uint8 *gpr_slice_buffer_tiny_add(gpr_slice_buffer *sb, size_t len);
|
81
|
-
/* pop the last buffer, but don't unref it */
|
82
|
-
void gpr_slice_buffer_pop(gpr_slice_buffer *sb);
|
83
|
-
/* clear a slice buffer, unref all elements */
|
84
|
-
void gpr_slice_buffer_reset_and_unref(gpr_slice_buffer *sb);
|
85
|
-
/* swap the contents of two slice buffers */
|
86
|
-
void gpr_slice_buffer_swap(gpr_slice_buffer *a, gpr_slice_buffer *b);
|
87
|
-
/* move all of the elements of src into dst */
|
88
|
-
void gpr_slice_buffer_move_into(gpr_slice_buffer *src, gpr_slice_buffer *dst);
|
89
|
-
/* remove n bytes from the end of a slice buffer */
|
90
|
-
void gpr_slice_buffer_trim_end(gpr_slice_buffer *src, size_t n,
|
91
|
-
gpr_slice_buffer *garbage);
|
92
|
-
/* move the first n bytes of src into dst */
|
93
|
-
void gpr_slice_buffer_move_first(gpr_slice_buffer *src, size_t n,
|
94
|
-
gpr_slice_buffer *dst);
|
95
|
-
/* take the first slice in the slice buffer */
|
96
|
-
gpr_slice gpr_slice_buffer_take_first(gpr_slice_buffer *src);
|
97
|
-
|
98
|
-
#ifdef __cplusplus
|
99
|
-
}
|
100
|
-
#endif
|
37
|
+
#include <grpc/impl/codegen/slice_buffer.h>
|
101
38
|
|
102
39
|
#endif /* GRPC_SUPPORT_SLICE_BUFFER_H */
|
@@ -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
|
@@ -42,7 +42,7 @@ extern "C" {
|
|
42
42
|
|
43
43
|
/* Returns a copy of src that can be passed to gpr_free().
|
44
44
|
If allocation fails or if src is NULL, returns NULL. */
|
45
|
-
char *gpr_strdup(const char *src);
|
45
|
+
GPR_API char *gpr_strdup(const char *src);
|
46
46
|
|
47
47
|
/* printf to a newly-allocated string. The set of supported formats may vary
|
48
48
|
between platforms.
|
@@ -52,7 +52,7 @@ char *gpr_strdup(const char *src);
|
|
52
52
|
|
53
53
|
On error, returns -1 and sets *strp to NULL. If the format string is bad,
|
54
54
|
the result is undefined. */
|
55
|
-
int gpr_asprintf(char **strp, const char *format, ...);
|
55
|
+
GPR_API int gpr_asprintf(char **strp, const char *format, ...);
|
56
56
|
|
57
57
|
#ifdef __cplusplus
|
58
58
|
}
|
@@ -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
|
@@ -34,6 +34,8 @@
|
|
34
34
|
#ifndef GRPC_SUPPORT_SUBPROCESS_H
|
35
35
|
#define GRPC_SUPPORT_SUBPROCESS_H
|
36
36
|
|
37
|
+
#include <grpc/support/port_platform.h>
|
38
|
+
|
37
39
|
#ifdef __cplusplus
|
38
40
|
extern "C" {
|
39
41
|
#endif
|
@@ -41,14 +43,14 @@ extern "C" {
|
|
41
43
|
typedef struct gpr_subprocess gpr_subprocess;
|
42
44
|
|
43
45
|
/* .exe on windows, empty on unices */
|
44
|
-
const char *gpr_subprocess_binary_extension();
|
46
|
+
GPR_API const char *gpr_subprocess_binary_extension();
|
45
47
|
|
46
|
-
gpr_subprocess *gpr_subprocess_create(int argc, const char **argv);
|
48
|
+
GPR_API gpr_subprocess *gpr_subprocess_create(int argc, const char **argv);
|
47
49
|
/* if subprocess has not been joined, kill it */
|
48
|
-
void gpr_subprocess_destroy(gpr_subprocess *p);
|
50
|
+
GPR_API void gpr_subprocess_destroy(gpr_subprocess *p);
|
49
51
|
/* returns exit status; can be called at most once */
|
50
|
-
int gpr_subprocess_join(gpr_subprocess *p);
|
51
|
-
void gpr_subprocess_interrupt(gpr_subprocess *p);
|
52
|
+
GPR_API int gpr_subprocess_join(gpr_subprocess *p);
|
53
|
+
GPR_API void gpr_subprocess_interrupt(gpr_subprocess *p);
|
52
54
|
|
53
55
|
#ifdef __cplusplus
|
54
56
|
} // extern "C"
|
data/include/grpc/support/sync.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
|
@@ -33,283 +33,7 @@
|
|
33
33
|
|
34
34
|
#ifndef GRPC_SUPPORT_SYNC_H
|
35
35
|
#define GRPC_SUPPORT_SYNC_H
|
36
|
-
/* Synchronization primitives for GPR.
|
37
36
|
|
38
|
-
|
39
|
-
|
40
|
-
The type gpr_cv provides a condition variable.
|
41
|
-
|
42
|
-
The type gpr_once provides for one-time initialization.
|
43
|
-
|
44
|
-
The type gpr_event provides one-time-setting, reading, and
|
45
|
-
waiting of a void*, with memory barriers.
|
46
|
-
|
47
|
-
The type gpr_refcount provides an object reference counter,
|
48
|
-
with memory barriers suitable to control
|
49
|
-
object lifetimes.
|
50
|
-
|
51
|
-
The type gpr_stats_counter provides an atomic statistics counter. It
|
52
|
-
provides no memory barriers.
|
53
|
-
*/
|
54
|
-
|
55
|
-
/* Platform-specific type declarations of gpr_mu and gpr_cv. */
|
56
|
-
#include <grpc/support/port_platform.h>
|
57
|
-
#include <grpc/support/sync_generic.h>
|
58
|
-
|
59
|
-
#if defined(GPR_POSIX_SYNC)
|
60
|
-
#include <grpc/support/sync_posix.h>
|
61
|
-
#elif defined(GPR_WIN32)
|
62
|
-
#include <grpc/support/sync_win32.h>
|
63
|
-
#elif !defined(GPR_CUSTOM_SYNC)
|
64
|
-
#error Unable to determine platform for sync
|
65
|
-
#endif
|
66
|
-
|
67
|
-
#include <grpc/support/time.h> /* for gpr_timespec */
|
68
|
-
|
69
|
-
#ifdef __cplusplus
|
70
|
-
extern "C" {
|
71
|
-
#endif
|
72
|
-
|
73
|
-
/* --- Mutex interface ---
|
74
|
-
|
75
|
-
At most one thread may hold an exclusive lock on a mutex at any given time.
|
76
|
-
Actions taken by a thread that holds a mutex exclusively happen after
|
77
|
-
actions taken by all previous holders of the mutex. Variables of type
|
78
|
-
gpr_mu are uninitialized when first declared. */
|
79
|
-
|
80
|
-
/* Initialize *mu. Requires: *mu uninitialized. */
|
81
|
-
void gpr_mu_init(gpr_mu *mu);
|
82
|
-
|
83
|
-
/* Cause *mu no longer to be initialized, freeing any memory in use. Requires:
|
84
|
-
*mu initialized; no other concurrent operation on *mu. */
|
85
|
-
void gpr_mu_destroy(gpr_mu *mu);
|
86
|
-
|
87
|
-
/* Wait until no thread has a lock on *mu, cause the calling thread to own an
|
88
|
-
exclusive lock on *mu, then return. May block indefinitely or crash if the
|
89
|
-
calling thread has a lock on *mu. Requires: *mu initialized. */
|
90
|
-
void gpr_mu_lock(gpr_mu *mu);
|
91
|
-
|
92
|
-
/* Release an exclusive lock on *mu held by the calling thread. Requires: *mu
|
93
|
-
initialized; the calling thread holds an exclusive lock on *mu. */
|
94
|
-
void gpr_mu_unlock(gpr_mu *mu);
|
95
|
-
|
96
|
-
/* Without blocking, attempt to acquire an exclusive lock on *mu for the
|
97
|
-
calling thread, then return non-zero iff success. Fail, if any thread holds
|
98
|
-
the lock; succeeds with high probability if no thread holds the lock.
|
99
|
-
Requires: *mu initialized. */
|
100
|
-
int gpr_mu_trylock(gpr_mu *mu);
|
101
|
-
|
102
|
-
/* --- Condition variable interface ---
|
103
|
-
|
104
|
-
A while-loop should be used with gpr_cv_wait() when waiting for conditions
|
105
|
-
to become true. See the example below. Variables of type gpr_cv are
|
106
|
-
uninitialized when first declared. */
|
107
|
-
|
108
|
-
/* Initialize *cv. Requires: *cv uninitialized. */
|
109
|
-
void gpr_cv_init(gpr_cv *cv);
|
110
|
-
|
111
|
-
/* Cause *cv no longer to be initialized, freeing any memory in use. Requires:
|
112
|
-
*cv initialized; no other concurrent operation on *cv.*/
|
113
|
-
void gpr_cv_destroy(gpr_cv *cv);
|
114
|
-
|
115
|
-
/* Atomically release *mu and wait on *cv. When the calling thread is woken
|
116
|
-
from *cv or the deadline abs_deadline is exceeded, execute gpr_mu_lock(mu)
|
117
|
-
and return whether the deadline was exceeded. Use
|
118
|
-
abs_deadline==gpr_inf_future for no deadline. May return even when not
|
119
|
-
woken explicitly. Requires: *mu and *cv initialized; the calling thread
|
120
|
-
holds an exclusive lock on *mu. */
|
121
|
-
int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline);
|
122
|
-
|
123
|
-
/* If any threads are waiting on *cv, wake at least one.
|
124
|
-
Clients may treat this as an optimization of gpr_cv_broadcast()
|
125
|
-
for use in the case where waking more than one waiter is not useful.
|
126
|
-
Requires: *cv initialized. */
|
127
|
-
void gpr_cv_signal(gpr_cv *cv);
|
128
|
-
|
129
|
-
/* Wake all threads waiting on *cv. Requires: *cv initialized. */
|
130
|
-
void gpr_cv_broadcast(gpr_cv *cv);
|
131
|
-
|
132
|
-
/* --- One-time initialization ---
|
133
|
-
|
134
|
-
gpr_once must be declared with static storage class, and initialized with
|
135
|
-
GPR_ONCE_INIT. e.g.,
|
136
|
-
static gpr_once once_var = GPR_ONCE_INIT; */
|
137
|
-
|
138
|
-
/* Ensure that (*init_routine)() has been called exactly once (for the
|
139
|
-
specified gpr_once instance) and then return.
|
140
|
-
If multiple threads call gpr_once() on the same gpr_once instance, one of
|
141
|
-
them will call (*init_routine)(), and the others will block until that call
|
142
|
-
finishes.*/
|
143
|
-
void gpr_once_init(gpr_once *once, void (*init_routine)(void));
|
144
|
-
|
145
|
-
/* --- One-time event notification ---
|
146
|
-
|
147
|
-
These operations act on a gpr_event, which should be initialized with
|
148
|
-
gpr_ev_init(), or with GPR_EVENT_INIT if static, e.g.,
|
149
|
-
static gpr_event event_var = GPR_EVENT_INIT;
|
150
|
-
It requires no destruction. */
|
151
|
-
|
152
|
-
/* Initialize *ev. */
|
153
|
-
void gpr_event_init(gpr_event *ev);
|
154
|
-
|
155
|
-
/* Set *ev so that gpr_event_get() and gpr_event_wait() will return value.
|
156
|
-
Requires: *ev initialized; value != NULL; no prior or concurrent calls to
|
157
|
-
gpr_event_set(ev, ...) since initialization. */
|
158
|
-
void gpr_event_set(gpr_event *ev, void *value);
|
159
|
-
|
160
|
-
/* Return the value set by gpr_event_set(ev, ...), or NULL if no such call has
|
161
|
-
completed. If the result is non-NULL, all operations that occurred prior to
|
162
|
-
the gpr_event_set(ev, ...) set will be visible after this call returns.
|
163
|
-
Requires: *ev initialized. This operation is faster than acquiring a mutex
|
164
|
-
on most platforms. */
|
165
|
-
void *gpr_event_get(gpr_event *ev);
|
166
|
-
|
167
|
-
/* Wait until *ev is set by gpr_event_set(ev, ...), or abs_deadline is
|
168
|
-
exceeded, then return gpr_event_get(ev). Requires: *ev initialized. Use
|
169
|
-
abs_deadline==gpr_inf_future for no deadline. When the event has been
|
170
|
-
signalled before the call, this operation is faster than acquiring a mutex
|
171
|
-
on most platforms. */
|
172
|
-
void *gpr_event_wait(gpr_event *ev, gpr_timespec abs_deadline);
|
173
|
-
|
174
|
-
/* --- Reference counting ---
|
175
|
-
|
176
|
-
These calls act on the type gpr_refcount. It requires no destruction. */
|
177
|
-
|
178
|
-
/* Initialize *r to value n. */
|
179
|
-
void gpr_ref_init(gpr_refcount *r, int n);
|
180
|
-
|
181
|
-
/* Increment the reference count *r. Requires *r initialized. */
|
182
|
-
void gpr_ref(gpr_refcount *r);
|
183
|
-
|
184
|
-
/* Increment the reference count *r by n. Requires *r initialized, n > 0. */
|
185
|
-
void gpr_refn(gpr_refcount *r, int n);
|
186
|
-
|
187
|
-
/* Decrement the reference count *r and return non-zero iff it has reached
|
188
|
-
zero. . Requires *r initialized. */
|
189
|
-
int gpr_unref(gpr_refcount *r);
|
190
|
-
|
191
|
-
/* --- Stats counters ---
|
192
|
-
|
193
|
-
These calls act on the integral type gpr_stats_counter. It requires no
|
194
|
-
destruction. Static instances may be initialized with
|
195
|
-
gpr_stats_counter c = GPR_STATS_INIT;
|
196
|
-
Beware: These operations do not imply memory barriers. Do not use them to
|
197
|
-
synchronize other events. */
|
198
|
-
|
199
|
-
/* Initialize *c to the value n. */
|
200
|
-
void gpr_stats_init(gpr_stats_counter *c, gpr_intptr n);
|
201
|
-
|
202
|
-
/* *c += inc. Requires: *c initialized. */
|
203
|
-
void gpr_stats_inc(gpr_stats_counter *c, gpr_intptr inc);
|
204
|
-
|
205
|
-
/* Return *c. Requires: *c initialized. */
|
206
|
-
gpr_intptr gpr_stats_read(const gpr_stats_counter *c);
|
207
|
-
|
208
|
-
/* ==================Example use of interface===================
|
209
|
-
A producer-consumer queue of up to N integers,
|
210
|
-
illustrating the use of the calls in this interface. */
|
211
|
-
#if 0
|
212
|
-
|
213
|
-
#define N 4
|
214
|
-
|
215
|
-
typedef struct queue {
|
216
|
-
gpr_cv non_empty; /* Signalled when length becomes non-zero. */
|
217
|
-
gpr_cv non_full; /* Signalled when length becomes non-N. */
|
218
|
-
gpr_mu mu; /* Protects all fields below.
|
219
|
-
(That is, except during initialization or
|
220
|
-
destruction, the fields below should be accessed
|
221
|
-
only by a thread that holds mu.) */
|
222
|
-
int head; /* Index of head of queue 0..N-1. */
|
223
|
-
int length; /* Number of valid elements in queue 0..N. */
|
224
|
-
int elem[N]; /* elem[head .. head+length-1] are queue elements. */
|
225
|
-
} queue;
|
226
|
-
|
227
|
-
/* Initialize *q. */
|
228
|
-
void queue_init(queue *q) {
|
229
|
-
gpr_mu_init(&q->mu);
|
230
|
-
gpr_cv_init(&q->non_empty);
|
231
|
-
gpr_cv_init(&q->non_full);
|
232
|
-
q->head = 0;
|
233
|
-
q->length = 0;
|
234
|
-
}
|
235
|
-
|
236
|
-
/* Free storage associated with *q. */
|
237
|
-
void queue_destroy(queue *q) {
|
238
|
-
gpr_mu_destroy(&q->mu);
|
239
|
-
gpr_cv_destroy(&q->non_empty);
|
240
|
-
gpr_cv_destroy(&q->non_full);
|
241
|
-
}
|
242
|
-
|
243
|
-
/* Wait until there is room in *q, then append x to *q. */
|
244
|
-
void queue_append(queue *q, int x) {
|
245
|
-
gpr_mu_lock(&q->mu);
|
246
|
-
/* To wait for a predicate without a deadline, loop on the negation of the
|
247
|
-
predicate, and use gpr_cv_wait(..., gpr_inf_future) inside the loop
|
248
|
-
to release the lock, wait, and reacquire on each iteration. Code that
|
249
|
-
makes the condition true should use gpr_cv_broadcast() on the
|
250
|
-
corresponding condition variable. The predicate must be on state
|
251
|
-
protected by the lock. */
|
252
|
-
while (q->length == N) {
|
253
|
-
gpr_cv_wait(&q->non_full, &q->mu, gpr_inf_future);
|
254
|
-
}
|
255
|
-
if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
|
256
|
-
/* It's normal to use gpr_cv_broadcast() or gpr_signal() while
|
257
|
-
holding the lock. */
|
258
|
-
gpr_cv_broadcast(&q->non_empty);
|
259
|
-
}
|
260
|
-
q->elem[(q->head + q->length) % N] = x;
|
261
|
-
q->length++;
|
262
|
-
gpr_mu_unlock(&q->mu);
|
263
|
-
}
|
264
|
-
|
265
|
-
/* If it can be done without blocking, append x to *q and return non-zero.
|
266
|
-
Otherwise return 0. */
|
267
|
-
int queue_try_append(queue *q, int x) {
|
268
|
-
int result = 0;
|
269
|
-
if (gpr_mu_trylock(&q->mu)) {
|
270
|
-
if (q->length != N) {
|
271
|
-
if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
|
272
|
-
gpr_cv_broadcast(&q->non_empty);
|
273
|
-
}
|
274
|
-
q->elem[(q->head + q->length) % N] = x;
|
275
|
-
q->length++;
|
276
|
-
result = 1;
|
277
|
-
}
|
278
|
-
gpr_mu_unlock(&q->mu);
|
279
|
-
}
|
280
|
-
return result;
|
281
|
-
}
|
282
|
-
|
283
|
-
/* Wait until the *q is non-empty or deadline abs_deadline passes. If the
|
284
|
-
queue is non-empty, remove its head entry, place it in *head, and return
|
285
|
-
non-zero. Otherwise return 0. */
|
286
|
-
int queue_remove(queue *q, int *head, gpr_timespec abs_deadline) {
|
287
|
-
int result = 0;
|
288
|
-
gpr_mu_lock(&q->mu);
|
289
|
-
/* To wait for a predicate with a deadline, loop on the negation of the
|
290
|
-
predicate or until gpr_cv_wait() returns true. Code that makes
|
291
|
-
the condition true should use gpr_cv_broadcast() on the corresponding
|
292
|
-
condition variable. The predicate must be on state protected by the
|
293
|
-
lock. */
|
294
|
-
while (q->length == 0 &&
|
295
|
-
!gpr_cv_wait(&q->non_empty, &q->mu, abs_deadline)) {
|
296
|
-
}
|
297
|
-
if (q->length != 0) { /* Queue is non-empty. */
|
298
|
-
result = 1;
|
299
|
-
if (q->length == N) { /* Wake threads blocked in queue_append(). */
|
300
|
-
gpr_cv_broadcast(&q->non_full);
|
301
|
-
}
|
302
|
-
*head = q->elem[q->head];
|
303
|
-
q->head = (q->head + 1) % N;
|
304
|
-
q->length--;
|
305
|
-
} /* else deadline exceeded */
|
306
|
-
gpr_mu_unlock(&q->mu);
|
307
|
-
return result;
|
308
|
-
}
|
309
|
-
#endif /* 0 */
|
310
|
-
|
311
|
-
#ifdef __cplusplus
|
312
|
-
}
|
313
|
-
#endif
|
37
|
+
#include <grpc/impl/codegen/sync.h>
|
314
38
|
|
315
39
|
#endif /* GRPC_SUPPORT_SYNC_H */
|