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
@@ -0,0 +1,105 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
|
+
* All rights reserved.
|
5
|
+
*
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
7
|
+
* modification, are permitted provided that the following conditions are
|
8
|
+
* met:
|
9
|
+
*
|
10
|
+
* * Redistributions of source code must retain the above copyright
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
12
|
+
* * Redistributions in binary form must reproduce the above
|
13
|
+
* copyright notice, this list of conditions and the following disclaimer
|
14
|
+
* in the documentation and/or other materials provided with the
|
15
|
+
* distribution.
|
16
|
+
* * Neither the name of Google Inc. nor the names of its
|
17
|
+
* contributors may be used to endorse or promote products derived from
|
18
|
+
* this software without specific prior written permission.
|
19
|
+
*
|
20
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
24
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
25
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
*
|
32
|
+
*/
|
33
|
+
|
34
|
+
#ifndef GRPC_IMPL_CODEGEN_SLICE_BUFFER_H
|
35
|
+
#define GRPC_IMPL_CODEGEN_SLICE_BUFFER_H
|
36
|
+
|
37
|
+
#include <grpc/impl/codegen/slice.h>
|
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
|
+
GPR_API void gpr_slice_buffer_init(gpr_slice_buffer *sb);
|
63
|
+
/* destroy a slice buffer - unrefs any held elements */
|
64
|
+
GPR_API 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
|
+
GPR_API 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
|
+
GPR_API size_t
|
77
|
+
gpr_slice_buffer_add_indexed(gpr_slice_buffer *sb, gpr_slice slice);
|
78
|
+
GPR_API void gpr_slice_buffer_addn(gpr_slice_buffer *sb, gpr_slice *slices,
|
79
|
+
size_t n);
|
80
|
+
/* add a very small (less than 8 bytes) amount of data to the end of a slice
|
81
|
+
buffer: returns a pointer into which to add the data */
|
82
|
+
GPR_API uint8_t *gpr_slice_buffer_tiny_add(gpr_slice_buffer *sb, size_t len);
|
83
|
+
/* pop the last buffer, but don't unref it */
|
84
|
+
GPR_API void gpr_slice_buffer_pop(gpr_slice_buffer *sb);
|
85
|
+
/* clear a slice buffer, unref all elements */
|
86
|
+
GPR_API void gpr_slice_buffer_reset_and_unref(gpr_slice_buffer *sb);
|
87
|
+
/* swap the contents of two slice buffers */
|
88
|
+
GPR_API void gpr_slice_buffer_swap(gpr_slice_buffer *a, gpr_slice_buffer *b);
|
89
|
+
/* move all of the elements of src into dst */
|
90
|
+
GPR_API void gpr_slice_buffer_move_into(gpr_slice_buffer *src,
|
91
|
+
gpr_slice_buffer *dst);
|
92
|
+
/* remove n bytes from the end of a slice buffer */
|
93
|
+
GPR_API void gpr_slice_buffer_trim_end(gpr_slice_buffer *src, size_t n,
|
94
|
+
gpr_slice_buffer *garbage);
|
95
|
+
/* move the first n bytes of src into dst */
|
96
|
+
GPR_API void gpr_slice_buffer_move_first(gpr_slice_buffer *src, size_t n,
|
97
|
+
gpr_slice_buffer *dst);
|
98
|
+
/* take the first slice in the slice buffer */
|
99
|
+
GPR_API gpr_slice gpr_slice_buffer_take_first(gpr_slice_buffer *src);
|
100
|
+
|
101
|
+
#ifdef __cplusplus
|
102
|
+
}
|
103
|
+
#endif
|
104
|
+
|
105
|
+
#endif /* GRPC_IMPL_CODEGEN_SLICE_BUFFER_H */
|
@@ -0,0 +1,163 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
|
+
* All rights reserved.
|
5
|
+
*
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
7
|
+
* modification, are permitted provided that the following conditions are
|
8
|
+
* met:
|
9
|
+
*
|
10
|
+
* * Redistributions of source code must retain the above copyright
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
12
|
+
* * Redistributions in binary form must reproduce the above
|
13
|
+
* copyright notice, this list of conditions and the following disclaimer
|
14
|
+
* in the documentation and/or other materials provided with the
|
15
|
+
* distribution.
|
16
|
+
* * Neither the name of Google Inc. nor the names of its
|
17
|
+
* contributors may be used to endorse or promote products derived from
|
18
|
+
* this software without specific prior written permission.
|
19
|
+
*
|
20
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
24
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
25
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
*
|
32
|
+
*/
|
33
|
+
|
34
|
+
#ifndef GRPC_IMPL_CODEGEN_STATUS_H
|
35
|
+
#define GRPC_IMPL_CODEGEN_STATUS_H
|
36
|
+
|
37
|
+
#ifdef __cplusplus
|
38
|
+
extern "C" {
|
39
|
+
#endif
|
40
|
+
|
41
|
+
typedef enum {
|
42
|
+
/* Not an error; returned on success */
|
43
|
+
GRPC_STATUS_OK = 0,
|
44
|
+
|
45
|
+
/* The operation was cancelled (typically by the caller). */
|
46
|
+
GRPC_STATUS_CANCELLED = 1,
|
47
|
+
|
48
|
+
/* Unknown error. An example of where this error may be returned is
|
49
|
+
if a Status value received from another address space belongs to
|
50
|
+
an error-space that is not known in this address space. Also
|
51
|
+
errors raised by APIs that do not return enough error information
|
52
|
+
may be converted to this error. */
|
53
|
+
GRPC_STATUS_UNKNOWN = 2,
|
54
|
+
|
55
|
+
/* Client specified an invalid argument. Note that this differs
|
56
|
+
from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments
|
57
|
+
that are problematic regardless of the state of the system
|
58
|
+
(e.g., a malformed file name). */
|
59
|
+
GRPC_STATUS_INVALID_ARGUMENT = 3,
|
60
|
+
|
61
|
+
/* Deadline expired before operation could complete. For operations
|
62
|
+
that change the state of the system, this error may be returned
|
63
|
+
even if the operation has completed successfully. For example, a
|
64
|
+
successful response from a server could have been delayed long
|
65
|
+
enough for the deadline to expire. */
|
66
|
+
GRPC_STATUS_DEADLINE_EXCEEDED = 4,
|
67
|
+
|
68
|
+
/* Some requested entity (e.g., file or directory) was not found. */
|
69
|
+
GRPC_STATUS_NOT_FOUND = 5,
|
70
|
+
|
71
|
+
/* Some entity that we attempted to create (e.g., file or directory)
|
72
|
+
already exists. */
|
73
|
+
GRPC_STATUS_ALREADY_EXISTS = 6,
|
74
|
+
|
75
|
+
/* The caller does not have permission to execute the specified
|
76
|
+
operation. PERMISSION_DENIED must not be used for rejections
|
77
|
+
caused by exhausting some resource (use RESOURCE_EXHAUSTED
|
78
|
+
instead for those errors). PERMISSION_DENIED must not be
|
79
|
+
used if the caller can not be identified (use UNAUTHENTICATED
|
80
|
+
instead for those errors). */
|
81
|
+
GRPC_STATUS_PERMISSION_DENIED = 7,
|
82
|
+
|
83
|
+
/* The request does not have valid authentication credentials for the
|
84
|
+
operation. */
|
85
|
+
GRPC_STATUS_UNAUTHENTICATED = 16,
|
86
|
+
|
87
|
+
/* Some resource has been exhausted, perhaps a per-user quota, or
|
88
|
+
perhaps the entire file system is out of space. */
|
89
|
+
GRPC_STATUS_RESOURCE_EXHAUSTED = 8,
|
90
|
+
|
91
|
+
/* Operation was rejected because the system is not in a state
|
92
|
+
required for the operation's execution. For example, directory
|
93
|
+
to be deleted may be non-empty, an rmdir operation is applied to
|
94
|
+
a non-directory, etc.
|
95
|
+
|
96
|
+
A litmus test that may help a service implementor in deciding
|
97
|
+
between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:
|
98
|
+
(a) Use UNAVAILABLE if the client can retry just the failing call.
|
99
|
+
(b) Use ABORTED if the client should retry at a higher-level
|
100
|
+
(e.g., restarting a read-modify-write sequence).
|
101
|
+
(c) Use FAILED_PRECONDITION if the client should not retry until
|
102
|
+
the system state has been explicitly fixed. E.g., if an "rmdir"
|
103
|
+
fails because the directory is non-empty, FAILED_PRECONDITION
|
104
|
+
should be returned since the client should not retry unless
|
105
|
+
they have first fixed up the directory by deleting files from it.
|
106
|
+
(d) Use FAILED_PRECONDITION if the client performs conditional
|
107
|
+
REST Get/Update/Delete on a resource and the resource on the
|
108
|
+
server does not match the condition. E.g., conflicting
|
109
|
+
read-modify-write on the same resource. */
|
110
|
+
GRPC_STATUS_FAILED_PRECONDITION = 9,
|
111
|
+
|
112
|
+
/* The operation was aborted, typically due to a concurrency issue
|
113
|
+
like sequencer check failures, transaction aborts, etc.
|
114
|
+
|
115
|
+
See litmus test above for deciding between FAILED_PRECONDITION,
|
116
|
+
ABORTED, and UNAVAILABLE. */
|
117
|
+
GRPC_STATUS_ABORTED = 10,
|
118
|
+
|
119
|
+
/* Operation was attempted past the valid range. E.g., seeking or
|
120
|
+
reading past end of file.
|
121
|
+
|
122
|
+
Unlike INVALID_ARGUMENT, this error indicates a problem that may
|
123
|
+
be fixed if the system state changes. For example, a 32-bit file
|
124
|
+
system will generate INVALID_ARGUMENT if asked to read at an
|
125
|
+
offset that is not in the range [0,2^32-1], but it will generate
|
126
|
+
OUT_OF_RANGE if asked to read from an offset past the current
|
127
|
+
file size.
|
128
|
+
|
129
|
+
There is a fair bit of overlap between FAILED_PRECONDITION and
|
130
|
+
OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific
|
131
|
+
error) when it applies so that callers who are iterating through
|
132
|
+
a space can easily look for an OUT_OF_RANGE error to detect when
|
133
|
+
they are done. */
|
134
|
+
GRPC_STATUS_OUT_OF_RANGE = 11,
|
135
|
+
|
136
|
+
/* Operation is not implemented or not supported/enabled in this service. */
|
137
|
+
GRPC_STATUS_UNIMPLEMENTED = 12,
|
138
|
+
|
139
|
+
/* Internal errors. Means some invariants expected by underlying
|
140
|
+
system has been broken. If you see one of these errors,
|
141
|
+
something is very broken. */
|
142
|
+
GRPC_STATUS_INTERNAL = 13,
|
143
|
+
|
144
|
+
/* The service is currently unavailable. This is a most likely a
|
145
|
+
transient condition and may be corrected by retrying with
|
146
|
+
a backoff.
|
147
|
+
|
148
|
+
See litmus test above for deciding between FAILED_PRECONDITION,
|
149
|
+
ABORTED, and UNAVAILABLE. */
|
150
|
+
GRPC_STATUS_UNAVAILABLE = 14,
|
151
|
+
|
152
|
+
/* Unrecoverable data loss or corruption. */
|
153
|
+
GRPC_STATUS_DATA_LOSS = 15,
|
154
|
+
|
155
|
+
/* Force users to include a default branch: */
|
156
|
+
GRPC_STATUS__DO_NOT_USE = -1
|
157
|
+
} grpc_status_code;
|
158
|
+
|
159
|
+
#ifdef __cplusplus
|
160
|
+
}
|
161
|
+
#endif
|
162
|
+
|
163
|
+
#endif /* GRPC_IMPL_CODEGEN_STATUS_H */
|
@@ -0,0 +1,316 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2016, Google Inc.
|
4
|
+
* All rights reserved.
|
5
|
+
*
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
7
|
+
* modification, are permitted provided that the following conditions are
|
8
|
+
* met:
|
9
|
+
*
|
10
|
+
* * Redistributions of source code must retain the above copyright
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
12
|
+
* * Redistributions in binary form must reproduce the above
|
13
|
+
* copyright notice, this list of conditions and the following disclaimer
|
14
|
+
* in the documentation and/or other materials provided with the
|
15
|
+
* distribution.
|
16
|
+
* * Neither the name of Google Inc. nor the names of its
|
17
|
+
* contributors may be used to endorse or promote products derived from
|
18
|
+
* this software without specific prior written permission.
|
19
|
+
*
|
20
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
24
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
25
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
*
|
32
|
+
*/
|
33
|
+
|
34
|
+
#ifndef GRPC_IMPL_CODEGEN_SYNC_H
|
35
|
+
#define GRPC_IMPL_CODEGEN_SYNC_H
|
36
|
+
/* Synchronization primitives for GPR.
|
37
|
+
|
38
|
+
The type gpr_mu provides a non-reentrant mutex (lock).
|
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/impl/codegen/port_platform.h>
|
57
|
+
#include <grpc/impl/codegen/sync_generic.h>
|
58
|
+
|
59
|
+
#if defined(GPR_POSIX_SYNC)
|
60
|
+
#include <grpc/impl/codegen/sync_posix.h>
|
61
|
+
#elif defined(GPR_WIN32)
|
62
|
+
#include <grpc/impl/codegen/sync_win32.h>
|
63
|
+
#elif !defined(GPR_CUSTOM_SYNC)
|
64
|
+
#error Unable to determine platform for sync
|
65
|
+
#endif
|
66
|
+
|
67
|
+
#include <grpc/impl/codegen/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
|
+
GPR_API 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
|
+
GPR_API 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
|
+
GPR_API 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
|
+
GPR_API 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
|
+
GPR_API 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
|
+
GPR_API 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
|
+
GPR_API 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. abs_deadline can be either
|
119
|
+
an absolute deadline, or a GPR_TIMESPAN. May return even when not
|
120
|
+
woken explicitly. Requires: *mu and *cv initialized; the calling thread
|
121
|
+
holds an exclusive lock on *mu. */
|
122
|
+
GPR_API int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline);
|
123
|
+
|
124
|
+
/* If any threads are waiting on *cv, wake at least one.
|
125
|
+
Clients may treat this as an optimization of gpr_cv_broadcast()
|
126
|
+
for use in the case where waking more than one waiter is not useful.
|
127
|
+
Requires: *cv initialized. */
|
128
|
+
GPR_API void gpr_cv_signal(gpr_cv *cv);
|
129
|
+
|
130
|
+
/* Wake all threads waiting on *cv. Requires: *cv initialized. */
|
131
|
+
GPR_API void gpr_cv_broadcast(gpr_cv *cv);
|
132
|
+
|
133
|
+
/* --- One-time initialization ---
|
134
|
+
|
135
|
+
gpr_once must be declared with static storage class, and initialized with
|
136
|
+
GPR_ONCE_INIT. e.g.,
|
137
|
+
static gpr_once once_var = GPR_ONCE_INIT; */
|
138
|
+
|
139
|
+
/* Ensure that (*init_routine)() has been called exactly once (for the
|
140
|
+
specified gpr_once instance) and then return.
|
141
|
+
If multiple threads call gpr_once() on the same gpr_once instance, one of
|
142
|
+
them will call (*init_routine)(), and the others will block until that call
|
143
|
+
finishes.*/
|
144
|
+
GPR_API void gpr_once_init(gpr_once *once, void (*init_routine)(void));
|
145
|
+
|
146
|
+
/* --- One-time event notification ---
|
147
|
+
|
148
|
+
These operations act on a gpr_event, which should be initialized with
|
149
|
+
gpr_ev_init(), or with GPR_EVENT_INIT if static, e.g.,
|
150
|
+
static gpr_event event_var = GPR_EVENT_INIT;
|
151
|
+
It requires no destruction. */
|
152
|
+
|
153
|
+
/* Initialize *ev. */
|
154
|
+
GPR_API void gpr_event_init(gpr_event *ev);
|
155
|
+
|
156
|
+
/* Set *ev so that gpr_event_get() and gpr_event_wait() will return value.
|
157
|
+
Requires: *ev initialized; value != NULL; no prior or concurrent calls to
|
158
|
+
gpr_event_set(ev, ...) since initialization. */
|
159
|
+
GPR_API void gpr_event_set(gpr_event *ev, void *value);
|
160
|
+
|
161
|
+
/* Return the value set by gpr_event_set(ev, ...), or NULL if no such call has
|
162
|
+
completed. If the result is non-NULL, all operations that occurred prior to
|
163
|
+
the gpr_event_set(ev, ...) set will be visible after this call returns.
|
164
|
+
Requires: *ev initialized. This operation is faster than acquiring a mutex
|
165
|
+
on most platforms. */
|
166
|
+
GPR_API void *gpr_event_get(gpr_event *ev);
|
167
|
+
|
168
|
+
/* Wait until *ev is set by gpr_event_set(ev, ...), or abs_deadline is
|
169
|
+
exceeded, then return gpr_event_get(ev). Requires: *ev initialized. Use
|
170
|
+
abs_deadline==gpr_inf_future for no deadline. When the event has been
|
171
|
+
signalled before the call, this operation is faster than acquiring a mutex
|
172
|
+
on most platforms. */
|
173
|
+
GPR_API void *gpr_event_wait(gpr_event *ev, gpr_timespec abs_deadline);
|
174
|
+
|
175
|
+
/* --- Reference counting ---
|
176
|
+
|
177
|
+
These calls act on the type gpr_refcount. It requires no destruction. */
|
178
|
+
|
179
|
+
/* Initialize *r to value n. */
|
180
|
+
GPR_API void gpr_ref_init(gpr_refcount *r, int n);
|
181
|
+
|
182
|
+
/* Increment the reference count *r. Requires *r initialized. */
|
183
|
+
GPR_API void gpr_ref(gpr_refcount *r);
|
184
|
+
|
185
|
+
/* Increment the reference count *r by n. Requires *r initialized, n > 0. */
|
186
|
+
GPR_API void gpr_refn(gpr_refcount *r, int n);
|
187
|
+
|
188
|
+
/* Decrement the reference count *r and return non-zero iff it has reached
|
189
|
+
zero. . Requires *r initialized. */
|
190
|
+
GPR_API int gpr_unref(gpr_refcount *r);
|
191
|
+
|
192
|
+
/* --- Stats counters ---
|
193
|
+
|
194
|
+
These calls act on the integral type gpr_stats_counter. It requires no
|
195
|
+
destruction. Static instances may be initialized with
|
196
|
+
gpr_stats_counter c = GPR_STATS_INIT;
|
197
|
+
Beware: These operations do not imply memory barriers. Do not use them to
|
198
|
+
synchronize other events. */
|
199
|
+
|
200
|
+
/* Initialize *c to the value n. */
|
201
|
+
GPR_API void gpr_stats_init(gpr_stats_counter *c, intptr_t n);
|
202
|
+
|
203
|
+
/* *c += inc. Requires: *c initialized. */
|
204
|
+
GPR_API void gpr_stats_inc(gpr_stats_counter *c, intptr_t inc);
|
205
|
+
|
206
|
+
/* Return *c. Requires: *c initialized. */
|
207
|
+
GPR_API intptr_t gpr_stats_read(const gpr_stats_counter *c);
|
208
|
+
|
209
|
+
/* ==================Example use of interface===================
|
210
|
+
A producer-consumer queue of up to N integers,
|
211
|
+
illustrating the use of the calls in this interface. */
|
212
|
+
#if 0
|
213
|
+
|
214
|
+
#define N 4
|
215
|
+
|
216
|
+
typedef struct queue {
|
217
|
+
gpr_cv non_empty; /* Signalled when length becomes non-zero. */
|
218
|
+
gpr_cv non_full; /* Signalled when length becomes non-N. */
|
219
|
+
gpr_mu mu; /* Protects all fields below.
|
220
|
+
(That is, except during initialization or
|
221
|
+
destruction, the fields below should be accessed
|
222
|
+
only by a thread that holds mu.) */
|
223
|
+
int head; /* Index of head of queue 0..N-1. */
|
224
|
+
int length; /* Number of valid elements in queue 0..N. */
|
225
|
+
int elem[N]; /* elem[head .. head+length-1] are queue elements. */
|
226
|
+
} queue;
|
227
|
+
|
228
|
+
/* Initialize *q. */
|
229
|
+
void queue_init(queue *q) {
|
230
|
+
gpr_mu_init(&q->mu);
|
231
|
+
gpr_cv_init(&q->non_empty);
|
232
|
+
gpr_cv_init(&q->non_full);
|
233
|
+
q->head = 0;
|
234
|
+
q->length = 0;
|
235
|
+
}
|
236
|
+
|
237
|
+
/* Free storage associated with *q. */
|
238
|
+
void queue_destroy(queue *q) {
|
239
|
+
gpr_mu_destroy(&q->mu);
|
240
|
+
gpr_cv_destroy(&q->non_empty);
|
241
|
+
gpr_cv_destroy(&q->non_full);
|
242
|
+
}
|
243
|
+
|
244
|
+
/* Wait until there is room in *q, then append x to *q. */
|
245
|
+
void queue_append(queue *q, int x) {
|
246
|
+
gpr_mu_lock(&q->mu);
|
247
|
+
/* To wait for a predicate without a deadline, loop on the negation of the
|
248
|
+
predicate, and use gpr_cv_wait(..., gpr_inf_future) inside the loop
|
249
|
+
to release the lock, wait, and reacquire on each iteration. Code that
|
250
|
+
makes the condition true should use gpr_cv_broadcast() on the
|
251
|
+
corresponding condition variable. The predicate must be on state
|
252
|
+
protected by the lock. */
|
253
|
+
while (q->length == N) {
|
254
|
+
gpr_cv_wait(&q->non_full, &q->mu, gpr_inf_future);
|
255
|
+
}
|
256
|
+
if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
|
257
|
+
/* It's normal to use gpr_cv_broadcast() or gpr_signal() while
|
258
|
+
holding the lock. */
|
259
|
+
gpr_cv_broadcast(&q->non_empty);
|
260
|
+
}
|
261
|
+
q->elem[(q->head + q->length) % N] = x;
|
262
|
+
q->length++;
|
263
|
+
gpr_mu_unlock(&q->mu);
|
264
|
+
}
|
265
|
+
|
266
|
+
/* If it can be done without blocking, append x to *q and return non-zero.
|
267
|
+
Otherwise return 0. */
|
268
|
+
int queue_try_append(queue *q, int x) {
|
269
|
+
int result = 0;
|
270
|
+
if (gpr_mu_trylock(&q->mu)) {
|
271
|
+
if (q->length != N) {
|
272
|
+
if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
|
273
|
+
gpr_cv_broadcast(&q->non_empty);
|
274
|
+
}
|
275
|
+
q->elem[(q->head + q->length) % N] = x;
|
276
|
+
q->length++;
|
277
|
+
result = 1;
|
278
|
+
}
|
279
|
+
gpr_mu_unlock(&q->mu);
|
280
|
+
}
|
281
|
+
return result;
|
282
|
+
}
|
283
|
+
|
284
|
+
/* Wait until the *q is non-empty or deadline abs_deadline passes. If the
|
285
|
+
queue is non-empty, remove its head entry, place it in *head, and return
|
286
|
+
non-zero. Otherwise return 0. */
|
287
|
+
int queue_remove(queue *q, int *head, gpr_timespec abs_deadline) {
|
288
|
+
int result = 0;
|
289
|
+
gpr_mu_lock(&q->mu);
|
290
|
+
/* To wait for a predicate with a deadline, loop on the negation of the
|
291
|
+
predicate or until gpr_cv_wait() returns true. Code that makes
|
292
|
+
the condition true should use gpr_cv_broadcast() on the corresponding
|
293
|
+
condition variable. The predicate must be on state protected by the
|
294
|
+
lock. */
|
295
|
+
while (q->length == 0 &&
|
296
|
+
!gpr_cv_wait(&q->non_empty, &q->mu, abs_deadline)) {
|
297
|
+
}
|
298
|
+
if (q->length != 0) { /* Queue is non-empty. */
|
299
|
+
result = 1;
|
300
|
+
if (q->length == N) { /* Wake threads blocked in queue_append(). */
|
301
|
+
gpr_cv_broadcast(&q->non_full);
|
302
|
+
}
|
303
|
+
*head = q->elem[q->head];
|
304
|
+
q->head = (q->head + 1) % N;
|
305
|
+
q->length--;
|
306
|
+
} /* else deadline exceeded */
|
307
|
+
gpr_mu_unlock(&q->mu);
|
308
|
+
return result;
|
309
|
+
}
|
310
|
+
#endif /* 0 */
|
311
|
+
|
312
|
+
#ifdef __cplusplus
|
313
|
+
}
|
314
|
+
#endif
|
315
|
+
|
316
|
+
#endif /* GRPC_IMPL_CODEGEN_SYNC_H */
|