grpc 0.12.0 → 0.13.0.pre1.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +5707 -22222
- data/include/grpc/byte_buffer.h +2 -83
- data/include/grpc/census.h +191 -121
- data/include/grpc/compression.h +14 -38
- data/include/grpc/grpc.h +88 -434
- data/include/grpc/grpc_security.h +76 -46
- data/include/grpc/grpc_zookeeper.h +1 -1
- data/include/grpc/impl/codegen/alloc.h +74 -0
- data/include/grpc/impl/codegen/atm.h +92 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
- data/include/grpc/impl/codegen/atm_win32.h +125 -0
- data/include/grpc/impl/codegen/byte_buffer.h +121 -0
- data/include/grpc/impl/codegen/compression_types.h +73 -0
- data/include/grpc/impl/codegen/connectivity_state.h +59 -0
- data/include/grpc/impl/codegen/grpc_types.h +373 -0
- data/include/grpc/impl/codegen/log.h +110 -0
- data/include/grpc/impl/codegen/port_platform.h +362 -0
- data/include/grpc/impl/codegen/propagation_bits.h +67 -0
- data/include/grpc/impl/codegen/slice.h +182 -0
- data/include/grpc/impl/codegen/slice_buffer.h +105 -0
- data/include/grpc/impl/codegen/status.h +163 -0
- data/include/grpc/impl/codegen/sync.h +316 -0
- data/include/grpc/impl/codegen/sync_generic.h +55 -0
- data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
- data/include/grpc/impl/codegen/sync_win32.h +49 -0
- data/include/grpc/impl/codegen/time.h +132 -0
- data/include/grpc/status.h +2 -126
- data/include/grpc/support/alloc.h +2 -35
- data/include/grpc/support/atm.h +2 -55
- data/include/grpc/support/atm_gcc_atomic.h +5 -38
- data/include/grpc/support/atm_gcc_sync.h +2 -50
- data/include/grpc/support/atm_win32.h +2 -88
- data/include/grpc/support/avl.h +7 -7
- data/include/grpc/support/cmdline.h +15 -13
- data/include/grpc/support/cpu.h +5 -3
- data/include/grpc/support/histogram.h +23 -20
- data/include/grpc/support/host_port.h +5 -3
- data/include/grpc/support/log.h +2 -71
- data/include/grpc/support/log_win32.h +2 -2
- data/include/grpc/support/port_platform.h +2 -319
- data/include/grpc/support/slice.h +2 -145
- data/include/grpc/support/slice_buffer.h +2 -65
- data/include/grpc/support/string_util.h +3 -3
- data/include/grpc/support/subprocess.h +8 -6
- data/include/grpc/support/sync.h +2 -278
- data/include/grpc/support/sync_generic.h +2 -18
- data/include/grpc/support/sync_posix.h +2 -10
- data/include/grpc/support/sync_win32.h +2 -12
- data/include/grpc/support/thd.h +11 -11
- data/include/grpc/support/time.h +2 -91
- data/include/grpc/support/tls.h +1 -1
- data/include/grpc/support/tls_gcc.h +1 -1
- data/include/grpc/support/tls_msvc.h +1 -1
- data/include/grpc/support/tls_pthread.h +2 -2
- data/src/boringssl/err_data.c +1252 -0
- data/src/core/census/context.c +492 -8
- data/src/core/census/grpc_filter.c +3 -3
- data/src/core/census/initialize.c +4 -7
- data/src/core/census/operation.c +2 -2
- data/src/core/census/placeholders.c +109 -0
- data/src/core/census/rpc_metric_id.h +6 -6
- data/src/core/census/tracing.c +1 -1
- data/src/core/channel/channel_args.c +4 -3
- data/src/core/channel/channel_stack.c +1 -1
- data/src/core/channel/client_channel.c +18 -14
- data/src/core/channel/client_uchannel.c +3 -3
- data/src/core/channel/compress_filter.c +8 -8
- data/src/core/channel/http_client_filter.c +2 -2
- data/src/core/channel/http_server_filter.c +9 -9
- data/src/core/channel/subchannel_call_holder.c +12 -10
- data/src/core/client_config/lb_policies/pick_first.c +49 -31
- data/src/core/client_config/lb_policies/round_robin.c +7 -7
- data/src/core/client_config/resolvers/dns_resolver.c +3 -3
- data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
- data/src/core/client_config/subchannel.c +36 -25
- data/src/core/compression/algorithm.c +3 -3
- data/src/core/httpcli/format_request.c +1 -1
- data/src/core/httpcli/httpcli.c +5 -5
- data/src/core/httpcli/httpcli_security_connector.c +2 -3
- data/src/core/httpcli/parser.c +7 -7
- data/src/core/httpcli/parser.h +1 -1
- data/src/core/iomgr/closure.c +7 -7
- data/src/core/iomgr/closure.h +6 -5
- data/src/core/iomgr/exec_ctx.c +12 -8
- data/src/core/iomgr/exec_ctx.h +12 -5
- data/src/core/iomgr/executor.c +4 -4
- data/src/core/iomgr/executor.h +2 -2
- data/src/core/iomgr/fd_posix.c +28 -17
- data/src/core/iomgr/fd_posix.h +7 -4
- data/src/core/iomgr/iocp_windows.c +6 -8
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +70 -5
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +4 -2
- data/src/core/iomgr/pollset_posix.c +15 -15
- data/src/core/iomgr/pollset_posix.h +4 -2
- data/src/core/iomgr/pollset_windows.c +3 -12
- data/src/core/iomgr/resolve_address_posix.c +2 -2
- data/src/core/iomgr/resolve_address_windows.c +2 -2
- data/src/core/iomgr/sockaddr_utils.c +6 -6
- data/src/core/iomgr/sockaddr_win32.h +1 -6
- data/src/core/iomgr/tcp_client_posix.c +7 -7
- data/src/core/iomgr/tcp_client_windows.c +4 -4
- data/src/core/iomgr/tcp_posix.c +14 -8
- data/src/core/iomgr/tcp_posix.h +7 -1
- data/src/core/iomgr/tcp_server.h +40 -20
- data/src/core/iomgr/tcp_server_posix.c +106 -49
- data/src/core/iomgr/tcp_server_windows.c +98 -49
- data/src/core/iomgr/tcp_windows.c +11 -15
- data/src/core/iomgr/timer.c +8 -8
- data/src/core/iomgr/timer.h +1 -1
- data/src/core/iomgr/timer_heap.c +10 -10
- data/src/core/iomgr/timer_heap.h +2 -2
- data/src/core/iomgr/udp_server.c +2 -12
- data/src/core/iomgr/udp_server.h +1 -9
- data/src/core/iomgr/workqueue.h +2 -4
- data/src/core/iomgr/workqueue_posix.c +3 -3
- data/src/core/json/json_reader.c +11 -12
- data/src/core/json/json_reader.h +4 -4
- data/src/core/json/json_string.c +19 -19
- data/src/core/json/json_writer.c +7 -9
- data/src/core/profiling/basic_timers.c +1 -1
- data/src/core/security/base64.c +9 -9
- data/src/core/security/client_auth_filter.c +4 -4
- data/src/core/security/credentials.c +5 -5
- data/src/core/security/google_default_credentials.c +3 -3
- data/src/core/security/handshake.c +6 -5
- data/src/core/security/json_token.c +13 -7
- data/src/core/security/jwt_verifier.c +3 -2
- data/src/core/security/secure_endpoint.c +16 -16
- data/src/core/security/security_connector.c +47 -17
- data/src/core/security/security_connector.h +5 -5
- data/src/core/security/server_auth_filter.c +3 -3
- data/src/core/security/server_secure_chttp2.c +30 -31
- data/src/core/statistics/census_interface.h +2 -2
- data/src/core/statistics/census_rpc_stats.h +3 -3
- data/src/core/support/alloc.c +1 -1
- data/src/core/support/cpu_posix.c +2 -2
- data/src/core/support/env_linux.c +12 -2
- data/src/core/support/env_win32.c +15 -7
- data/src/core/support/histogram.c +5 -5
- data/src/core/support/log_posix.c +1 -1
- data/src/core/support/log_win32.c +4 -3
- data/src/core/support/murmur_hash.c +11 -11
- data/src/core/support/murmur_hash.h +1 -1
- data/src/core/support/slice.c +11 -11
- data/src/core/support/slice_buffer.c +6 -6
- data/src/core/support/stack_lockfree.c +20 -10
- data/src/core/support/string.c +15 -15
- data/src/core/support/string.h +5 -5
- data/src/core/support/string_win32.c +5 -5
- data/src/core/support/subprocess_windows.c +141 -0
- data/src/core/support/sync.c +4 -4
- data/src/core/support/sync_posix.c +2 -2
- data/src/core/support/sync_win32.c +10 -5
- data/src/core/support/time.c +29 -29
- data/src/core/support/time_posix.c +15 -6
- data/src/core/support/time_precise.c +2 -2
- data/src/core/support/time_win32.c +18 -9
- data/src/core/support/tls_pthread.c +1 -1
- data/src/core/support/wrap_memcpy.c +53 -0
- data/src/core/surface/alarm.c +83 -0
- data/src/core/surface/byte_buffer_reader.c +1 -1
- data/src/core/surface/call.c +78 -69
- data/src/core/surface/call.h +2 -2
- data/src/core/surface/call_test_only.h +2 -2
- data/src/core/surface/channel.c +9 -9
- data/src/core/surface/channel.h +1 -1
- data/src/core/surface/channel_connectivity.c +3 -3
- data/src/core/surface/channel_create.c +3 -3
- data/src/core/surface/channel_ping.c +2 -2
- data/src/core/surface/completion_queue.c +11 -12
- data/src/core/surface/completion_queue.h +1 -1
- data/src/core/surface/init.c +7 -5
- data/src/core/surface/lame_client.c +3 -3
- data/src/core/surface/secure_channel_create.c +3 -3
- data/src/core/surface/server.c +28 -28
- data/src/core/surface/server_chttp2.c +8 -8
- data/src/core/surface/server_create.c +1 -4
- data/src/core/surface/validate_metadata.c +3 -3
- data/src/core/surface/version.c +2 -2
- data/src/core/transport/byte_stream.c +8 -6
- data/src/core/transport/byte_stream.h +6 -5
- data/src/core/transport/chttp2/bin_encoder.c +29 -29
- data/src/core/transport/chttp2/frame_data.c +29 -26
- data/src/core/transport/chttp2/frame_data.h +6 -6
- data/src/core/transport/chttp2/frame_goaway.c +30 -30
- data/src/core/transport/chttp2/frame_goaway.h +6 -6
- data/src/core/transport/chttp2/frame_ping.c +6 -6
- data/src/core/transport/chttp2/frame_ping.h +5 -5
- data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
- data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
- data/src/core/transport/chttp2/frame_settings.c +30 -30
- data/src/core/transport/chttp2/frame_settings.h +13 -13
- data/src/core/transport/chttp2/frame_window_update.c +17 -18
- data/src/core/transport/chttp2/frame_window_update.h +5 -7
- data/src/core/transport/chttp2/hpack_encoder.c +69 -73
- data/src/core/transport/chttp2/hpack_encoder.h +16 -16
- data/src/core/transport/chttp2/hpack_parser.c +167 -167
- data/src/core/transport/chttp2/hpack_parser.h +16 -16
- data/src/core/transport/chttp2/hpack_table.c +13 -13
- data/src/core/transport/chttp2/hpack_table.h +11 -11
- data/src/core/transport/chttp2/internal.h +97 -86
- data/src/core/transport/chttp2/parsing.c +25 -25
- data/src/core/transport/chttp2/stream_lists.c +26 -3
- data/src/core/transport/chttp2/stream_map.c +13 -14
- data/src/core/transport/chttp2/stream_map.h +6 -7
- data/src/core/transport/chttp2/timeout_encoding.c +19 -16
- data/src/core/transport/chttp2/varint.c +8 -9
- data/src/core/transport/chttp2/varint.h +7 -8
- data/src/core/transport/chttp2/writing.c +26 -23
- data/src/core/transport/chttp2_transport.c +133 -92
- data/src/core/transport/connectivity_state.c +6 -6
- data/src/core/transport/metadata.c +18 -18
- data/src/core/transport/metadata.h +5 -5
- data/src/core/transport/static_metadata.c +15 -16
- data/src/core/transport/static_metadata.h +5 -5
- data/src/core/transport/transport.c +5 -5
- data/src/core/transport/transport.h +14 -1
- data/src/core/tsi/fake_transport_security.c +7 -7
- data/src/core/tsi/ssl_transport_security.c +6 -4
- data/src/core/tsi/ssl_types.h +55 -0
- data/src/ruby/ext/grpc/extconf.rb +51 -14
- data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
- data/src/ruby/ext/grpc/rb_call.c +6 -3
- data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
- data/src/ruby/ext/grpc/rb_channel.c +4 -2
- data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
- data/src/ruby/ext/grpc/rb_grpc.c +11 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +560 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +843 -0
- data/src/ruby/ext/grpc/rb_loader.c +72 -0
- data/src/ruby/ext/grpc/rb_loader.h +40 -0
- data/src/ruby/ext/grpc/rb_server.c +3 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/grpc.rb +34 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/third_party/boringssl/crypto/aes/aes.c +1142 -0
- data/third_party/boringssl/crypto/aes/internal.h +87 -0
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
- data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
- data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
- data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
- data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
- data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
- data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
- data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
- data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
- data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
- data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
- data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
- data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
- data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
- data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
- data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
- data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
- data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
- data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
- data/third_party/boringssl/crypto/base64/base64.c +478 -0
- data/third_party/boringssl/crypto/bio/bio.c +608 -0
- data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
- data/third_party/boringssl/crypto/bio/buffer.c +496 -0
- data/third_party/boringssl/crypto/bio/connect.c +544 -0
- data/third_party/boringssl/crypto/bio/fd.c +270 -0
- data/third_party/boringssl/crypto/bio/file.c +349 -0
- data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
- data/third_party/boringssl/crypto/bio/internal.h +108 -0
- data/third_party/boringssl/crypto/bio/pair.c +803 -0
- data/third_party/boringssl/crypto/bio/printf.c +119 -0
- data/third_party/boringssl/crypto/bio/socket.c +195 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
- data/third_party/boringssl/crypto/bn/add.c +377 -0
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
- data/third_party/boringssl/crypto/bn/bn.c +341 -0
- data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
- data/third_party/boringssl/crypto/bn/cmp.c +200 -0
- data/third_party/boringssl/crypto/bn/convert.c +597 -0
- data/third_party/boringssl/crypto/bn/ctx.c +311 -0
- data/third_party/boringssl/crypto/bn/div.c +625 -0
- data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
- data/third_party/boringssl/crypto/bn/gcd.c +711 -0
- data/third_party/boringssl/crypto/bn/generic.c +1019 -0
- data/third_party/boringssl/crypto/bn/internal.h +294 -0
- data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
- data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
- data/third_party/boringssl/crypto/bn/mul.c +888 -0
- data/third_party/boringssl/crypto/bn/prime.c +845 -0
- data/third_party/boringssl/crypto/bn/random.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
- data/third_party/boringssl/crypto/bn/shift.c +299 -0
- data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
- data/third_party/boringssl/crypto/buf/buf.c +235 -0
- data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
- data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
- data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
- data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
- data/third_party/boringssl/crypto/cipher/aead.c +167 -0
- data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
- data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
- data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
- data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
- data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
- data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
- data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
- data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
- data/third_party/boringssl/crypto/cipher/internal.h +164 -0
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
- data/third_party/boringssl/crypto/conf/conf.c +778 -0
- data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
- data/third_party/boringssl/crypto/conf/internal.h +31 -0
- data/third_party/boringssl/crypto/cpu-arm.c +199 -0
- data/third_party/boringssl/crypto/cpu-intel.c +261 -0
- data/third_party/boringssl/crypto/crypto.c +140 -0
- data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
- data/third_party/boringssl/crypto/des/des.c +771 -0
- data/third_party/boringssl/crypto/des/internal.h +212 -0
- data/third_party/boringssl/crypto/dh/check.c +180 -0
- data/third_party/boringssl/crypto/dh/dh.c +463 -0
- data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
- data/third_party/boringssl/crypto/dh/internal.h +80 -0
- data/third_party/boringssl/crypto/dh/params.c +301 -0
- data/third_party/boringssl/crypto/digest/digest.c +248 -0
- data/third_party/boringssl/crypto/digest/digests.c +321 -0
- data/third_party/boringssl/crypto/digest/internal.h +112 -0
- data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
- data/third_party/boringssl/crypto/directory.h +66 -0
- data/third_party/boringssl/crypto/directory_posix.c +108 -0
- data/third_party/boringssl/crypto/directory_win.c +144 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
- data/third_party/boringssl/crypto/dsa/internal.h +78 -0
- data/third_party/boringssl/crypto/ec/ec.c +889 -0
- data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
- data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
- data/third_party/boringssl/crypto/ec/internal.h +318 -0
- data/third_party/boringssl/crypto/ec/oct.c +416 -0
- data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
- data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
- data/third_party/boringssl/crypto/ec/simple.c +1313 -0
- data/third_party/boringssl/crypto/ec/util-64.c +183 -0
- data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
- data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
- data/third_party/boringssl/crypto/engine/engine.c +96 -0
- data/third_party/boringssl/crypto/err/err.c +756 -0
- data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
- data/third_party/boringssl/crypto/evp/evp.c +411 -0
- data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
- data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
- data/third_party/boringssl/crypto/evp/internal.h +278 -0
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
- data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
- data/third_party/boringssl/crypto/evp/sign.c +151 -0
- data/third_party/boringssl/crypto/ex_data.c +294 -0
- data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
- data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
- data/third_party/boringssl/crypto/internal.h +532 -0
- data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
- data/third_party/boringssl/crypto/md4/md4.c +225 -0
- data/third_party/boringssl/crypto/md5/md5.c +275 -0
- data/third_party/boringssl/crypto/mem.c +200 -0
- data/third_party/boringssl/crypto/modes/cbc.c +216 -0
- data/third_party/boringssl/crypto/modes/cfb.c +231 -0
- data/third_party/boringssl/crypto/modes/ctr.c +226 -0
- data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
- data/third_party/boringssl/crypto/modes/internal.h +370 -0
- data/third_party/boringssl/crypto/modes/ofb.c +108 -0
- data/third_party/boringssl/crypto/obj/obj.c +664 -0
- data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
- data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
- data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
- data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
- data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
- data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
- data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
- data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
- data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
- data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
- data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
- data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
- data/third_party/boringssl/crypto/rand/internal.h +32 -0
- data/third_party/boringssl/crypto/rand/rand.c +239 -0
- data/third_party/boringssl/crypto/rand/urandom.c +223 -0
- data/third_party/boringssl/crypto/rand/windows.c +56 -0
- data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
- data/third_party/boringssl/crypto/refcount_c11.c +67 -0
- data/third_party/boringssl/crypto/refcount_lock.c +53 -0
- data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
- data/third_party/boringssl/crypto/rsa/internal.h +164 -0
- data/third_party/boringssl/crypto/rsa/padding.c +711 -0
- data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
- data/third_party/boringssl/crypto/sha/sha1.c +337 -0
- data/third_party/boringssl/crypto/sha/sha256.c +327 -0
- data/third_party/boringssl/crypto/sha/sha512.c +607 -0
- data/third_party/boringssl/crypto/stack/stack.c +386 -0
- data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
- data/third_party/boringssl/crypto/test/test_util.h +35 -0
- data/third_party/boringssl/crypto/thread.c +101 -0
- data/third_party/boringssl/crypto/thread_none.c +55 -0
- data/third_party/boringssl/crypto/thread_pthread.c +167 -0
- data/third_party/boringssl/crypto/thread_win.c +282 -0
- data/third_party/boringssl/crypto/time_support.c +212 -0
- data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
- data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
- data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
- data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
- data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
- data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
- data/third_party/boringssl/crypto/x509/by_file.c +295 -0
- data/third_party/boringssl/crypto/x509/charmap.h +15 -0
- data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
- data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
- data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
- data/third_party/boringssl/crypto/x509/t_req.c +246 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
- data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
- data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
- data/third_party/boringssl/crypto/x509/x509.c +152 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
- data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
- data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
- data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
- data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
- data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
- data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
- data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
- data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
- data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
- data/third_party/boringssl/crypto/x509/x509name.c +381 -0
- data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
- data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
- data/third_party/boringssl/crypto/x509/x509type.c +128 -0
- data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
- data/third_party/boringssl/crypto/x509/x_all.c +547 -0
- data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
- data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
- data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
- data/third_party/boringssl/crypto/x509/x_info.c +95 -0
- data/third_party/boringssl/crypto/x509/x_name.c +538 -0
- data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
- data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
- data/third_party/boringssl/crypto/x509/x_req.c +112 -0
- data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
- data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
- data/third_party/boringssl/crypto/x509/x_val.c +69 -0
- data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
- data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
- data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
- data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
- data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
- data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
- data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
- data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
- data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
- data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
- data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
- data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
- data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
- data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
- data/third_party/boringssl/include/openssl/aead.h +346 -0
- data/third_party/boringssl/include/openssl/aes.h +158 -0
- data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
- data/third_party/boringssl/include/openssl/asn1.h +1168 -0
- data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
- data/third_party/boringssl/include/openssl/asn1t.h +906 -0
- data/third_party/boringssl/include/openssl/base.h +261 -0
- data/third_party/boringssl/include/openssl/base64.h +184 -0
- data/third_party/boringssl/include/openssl/bio.h +902 -0
- data/third_party/boringssl/include/openssl/blowfish.h +93 -0
- data/third_party/boringssl/include/openssl/bn.h +885 -0
- data/third_party/boringssl/include/openssl/buf.h +118 -0
- data/third_party/boringssl/include/openssl/buffer.h +18 -0
- data/third_party/boringssl/include/openssl/bytestring.h +360 -0
- data/third_party/boringssl/include/openssl/cast.h +96 -0
- data/third_party/boringssl/include/openssl/chacha.h +37 -0
- data/third_party/boringssl/include/openssl/cipher.h +571 -0
- data/third_party/boringssl/include/openssl/cmac.h +76 -0
- data/third_party/boringssl/include/openssl/conf.h +145 -0
- data/third_party/boringssl/include/openssl/cpu.h +184 -0
- data/third_party/boringssl/include/openssl/crypto.h +68 -0
- data/third_party/boringssl/include/openssl/curve25519.h +88 -0
- data/third_party/boringssl/include/openssl/des.h +177 -0
- data/third_party/boringssl/include/openssl/dh.h +238 -0
- data/third_party/boringssl/include/openssl/digest.h +258 -0
- data/third_party/boringssl/include/openssl/dsa.h +343 -0
- data/third_party/boringssl/include/openssl/dtls1.h +16 -0
- data/third_party/boringssl/include/openssl/ec.h +355 -0
- data/third_party/boringssl/include/openssl/ec_key.h +280 -0
- data/third_party/boringssl/include/openssl/ecdh.h +102 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
- data/third_party/boringssl/include/openssl/engine.h +98 -0
- data/third_party/boringssl/include/openssl/err.h +487 -0
- data/third_party/boringssl/include/openssl/evp.h +750 -0
- data/third_party/boringssl/include/openssl/ex_data.h +213 -0
- data/third_party/boringssl/include/openssl/hkdf.h +44 -0
- data/third_party/boringssl/include/openssl/hmac.h +160 -0
- data/third_party/boringssl/include/openssl/lhash.h +192 -0
- data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
- data/third_party/boringssl/include/openssl/md4.h +102 -0
- data/third_party/boringssl/include/openssl/md5.h +107 -0
- data/third_party/boringssl/include/openssl/mem.h +140 -0
- data/third_party/boringssl/include/openssl/obj.h +198 -0
- data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
- data/third_party/boringssl/include/openssl/objects.h +18 -0
- data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
- data/third_party/boringssl/include/openssl/opensslv.h +18 -0
- data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
- data/third_party/boringssl/include/openssl/pem.h +521 -0
- data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
- data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
- data/third_party/boringssl/include/openssl/poly1305.h +51 -0
- data/third_party/boringssl/include/openssl/pqueue.h +146 -0
- data/third_party/boringssl/include/openssl/rand.h +113 -0
- data/third_party/boringssl/include/openssl/rc4.h +90 -0
- data/third_party/boringssl/include/openssl/rsa.h +637 -0
- data/third_party/boringssl/include/openssl/safestack.h +16 -0
- data/third_party/boringssl/include/openssl/sha.h +256 -0
- data/third_party/boringssl/include/openssl/srtp.h +18 -0
- data/third_party/boringssl/include/openssl/ssl.h +4466 -0
- data/third_party/boringssl/include/openssl/ssl3.h +441 -0
- data/third_party/boringssl/include/openssl/stack.h +298 -0
- data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
- data/third_party/boringssl/include/openssl/thread.h +173 -0
- data/third_party/boringssl/include/openssl/time_support.h +90 -0
- data/third_party/boringssl/include/openssl/tls1.h +653 -0
- data/third_party/boringssl/include/openssl/type_check.h +91 -0
- data/third_party/boringssl/include/openssl/x509.h +1258 -0
- data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
- data/third_party/boringssl/include/openssl/x509v3.h +798 -0
- data/third_party/boringssl/ssl/custom_extensions.c +257 -0
- data/third_party/boringssl/ssl/d1_both.c +880 -0
- data/third_party/boringssl/ssl/d1_clnt.c +566 -0
- data/third_party/boringssl/ssl/d1_lib.c +340 -0
- data/third_party/boringssl/ssl/d1_meth.c +130 -0
- data/third_party/boringssl/ssl/d1_pkt.c +578 -0
- data/third_party/boringssl/ssl/d1_srtp.c +234 -0
- data/third_party/boringssl/ssl/d1_srvr.c +485 -0
- data/third_party/boringssl/ssl/dtls_record.c +308 -0
- data/third_party/boringssl/ssl/internal.h +1276 -0
- data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
- data/third_party/boringssl/ssl/s3_both.c +571 -0
- data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
- data/third_party/boringssl/ssl/s3_enc.c +494 -0
- data/third_party/boringssl/ssl/s3_lib.c +587 -0
- data/third_party/boringssl/ssl/s3_meth.c +166 -0
- data/third_party/boringssl/ssl/s3_pkt.c +732 -0
- data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
- data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
- data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
- data/third_party/boringssl/ssl/ssl_cert.c +539 -0
- data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
- data/third_party/boringssl/ssl/ssl_file.c +633 -0
- data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
- data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
- data/third_party/boringssl/ssl/ssl_session.c +764 -0
- data/third_party/boringssl/ssl/ssl_stat.c +591 -0
- data/third_party/boringssl/ssl/t1_enc.c +708 -0
- data/third_party/boringssl/ssl/t1_lib.c +2905 -0
- data/third_party/boringssl/ssl/test/async_bio.h +45 -0
- data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
- data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
- data/third_party/boringssl/ssl/test/test_config.h +108 -0
- data/third_party/boringssl/ssl/tls_record.c +342 -0
- data/third_party/zlib/adler32.c +179 -0
- data/third_party/zlib/compress.c +80 -0
- data/third_party/zlib/crc32.c +425 -0
- data/third_party/zlib/crc32.h +441 -0
- data/third_party/zlib/deflate.c +1967 -0
- data/third_party/zlib/deflate.h +346 -0
- data/third_party/zlib/gzclose.c +25 -0
- data/third_party/zlib/gzguts.h +209 -0
- data/third_party/zlib/gzlib.c +634 -0
- data/third_party/zlib/gzread.c +594 -0
- data/third_party/zlib/gzwrite.c +577 -0
- data/third_party/zlib/infback.c +640 -0
- data/third_party/zlib/inffast.c +340 -0
- data/third_party/zlib/inffast.h +11 -0
- data/third_party/zlib/inffixed.h +94 -0
- data/third_party/zlib/inflate.c +1512 -0
- data/third_party/zlib/inflate.h +122 -0
- data/third_party/zlib/inftrees.c +306 -0
- data/third_party/zlib/inftrees.h +62 -0
- data/third_party/zlib/trees.c +1226 -0
- data/third_party/zlib/trees.h +128 -0
- data/third_party/zlib/uncompr.c +59 -0
- data/third_party/zlib/zconf.h +511 -0
- data/third_party/zlib/zlib.h +1768 -0
- data/third_party/zlib/zutil.c +324 -0
- data/third_party/zlib/zutil.h +253 -0
- metadata +492 -25
- data/Rakefile +0 -63
- data/src/ruby/lib/grpc/grpc.so +0 -0
data/include/grpc/support/atm.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
|
@@ -34,59 +34,6 @@
|
|
34
34
|
#ifndef GRPC_SUPPORT_ATM_H
|
35
35
|
#define GRPC_SUPPORT_ATM_H
|
36
36
|
|
37
|
-
|
38
|
-
It is internal to gpr support code and should not be used outside it.
|
39
|
-
|
40
|
-
If an operation with acquire semantics precedes another memory access by the
|
41
|
-
same thread, the operation will precede that other access as seen by other
|
42
|
-
threads.
|
43
|
-
|
44
|
-
If an operation with release semantics follows another memory access by the
|
45
|
-
same thread, the operation will follow that other access as seen by other
|
46
|
-
threads.
|
47
|
-
|
48
|
-
Routines with "acq" or "full" in the name have acquire semantics. Routines
|
49
|
-
with "rel" or "full" in the name have release semantics. Routines with
|
50
|
-
"no_barrier" in the name have neither acquire not release semantics.
|
51
|
-
|
52
|
-
The routines may be implemented as macros.
|
53
|
-
|
54
|
-
// Atomic operations act on an intergral_type gpr_atm that is guaranteed to
|
55
|
-
// be the same size as a pointer.
|
56
|
-
typedef gpr_intptr gpr_atm;
|
57
|
-
|
58
|
-
// A memory barrier, providing both acquire and release semantics, but not
|
59
|
-
// otherwise acting on memory.
|
60
|
-
void gpr_atm_full_barrier(void);
|
61
|
-
|
62
|
-
// Atomically return *p, with acquire semantics.
|
63
|
-
gpr_atm gpr_atm_acq_load(gpr_atm *p);
|
64
|
-
|
65
|
-
// Atomically set *p = value, with release semantics.
|
66
|
-
void gpr_atm_rel_store(gpr_atm *p, gpr_atm value);
|
67
|
-
|
68
|
-
// Atomically add delta to *p, and return the old value of *p, with
|
69
|
-
// the barriers specified.
|
70
|
-
gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm *p, gpr_atm delta);
|
71
|
-
gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta);
|
72
|
-
|
73
|
-
// Atomically, if *p==o, set *p=n and return non-zero otherwise return 0,
|
74
|
-
// with the barriers specified if the operation succeeds.
|
75
|
-
int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
76
|
-
int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
77
|
-
int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
78
|
-
*/
|
79
|
-
|
80
|
-
#include <grpc/support/port_platform.h>
|
81
|
-
|
82
|
-
#if defined(GPR_GCC_ATOMIC)
|
83
|
-
#include <grpc/support/atm_gcc_atomic.h>
|
84
|
-
#elif defined(GPR_GCC_SYNC)
|
85
|
-
#include <grpc/support/atm_gcc_sync.h>
|
86
|
-
#elif defined(GPR_WIN32_ATOMIC)
|
87
|
-
#include <grpc/support/atm_win32.h>
|
88
|
-
#else
|
89
|
-
#error could not determine platform for atm
|
90
|
-
#endif
|
37
|
+
#include <grpc/impl/codegen/atm.h>
|
91
38
|
|
92
39
|
#endif /* GRPC_SUPPORT_ATM_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
|
@@ -31,42 +31,9 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#ifndef
|
35
|
-
#define
|
34
|
+
#ifndef GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H
|
35
|
+
#define GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H
|
36
36
|
|
37
|
-
|
38
|
-
__atomic_* interface. */
|
39
|
-
#include <grpc/support/port_platform.h>
|
37
|
+
#include <grpc/impl/codegen/atm_gcc_atomic.h>
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST))
|
44
|
-
|
45
|
-
#define gpr_atm_acq_load(p) (__atomic_load_n((p), __ATOMIC_ACQUIRE))
|
46
|
-
#define gpr_atm_no_barrier_load(p) (__atomic_load_n((p), __ATOMIC_RELAXED))
|
47
|
-
#define gpr_atm_rel_store(p, value) \
|
48
|
-
(__atomic_store_n((p), (gpr_intptr)(value), __ATOMIC_RELEASE))
|
49
|
-
#define gpr_atm_no_barrier_store(p, value) \
|
50
|
-
(__atomic_store_n((p), (gpr_intptr)(value), __ATOMIC_RELAXED))
|
51
|
-
|
52
|
-
#define gpr_atm_no_barrier_fetch_add(p, delta) \
|
53
|
-
(__atomic_fetch_add((p), (gpr_intptr)(delta), __ATOMIC_RELAXED))
|
54
|
-
#define gpr_atm_full_fetch_add(p, delta) \
|
55
|
-
(__atomic_fetch_add((p), (gpr_intptr)(delta), __ATOMIC_ACQ_REL))
|
56
|
-
|
57
|
-
static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
|
58
|
-
return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_RELAXED,
|
59
|
-
__ATOMIC_RELAXED);
|
60
|
-
}
|
61
|
-
|
62
|
-
static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
|
63
|
-
return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_ACQUIRE,
|
64
|
-
__ATOMIC_RELAXED);
|
65
|
-
}
|
66
|
-
|
67
|
-
static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
|
68
|
-
return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_RELEASE,
|
69
|
-
__ATOMIC_RELAXED);
|
70
|
-
}
|
71
|
-
|
72
|
-
#endif /* GRPC_SUPPORT_ATM_GCC_ATOMIC_H */
|
39
|
+
#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_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,54 +34,6 @@
|
|
34
34
|
#ifndef GRPC_SUPPORT_ATM_GCC_SYNC_H
|
35
35
|
#define GRPC_SUPPORT_ATM_GCC_SYNC_H
|
36
36
|
|
37
|
-
|
38
|
-
interface */
|
39
|
-
#include <grpc/support/port_platform.h>
|
40
|
-
|
41
|
-
typedef gpr_intptr gpr_atm;
|
42
|
-
|
43
|
-
#define GPR_ATM_COMPILE_BARRIER_() __asm__ __volatile__("" : : : "memory")
|
44
|
-
|
45
|
-
#if defined(__i386) || defined(__x86_64__)
|
46
|
-
/* All loads are acquire loads and all stores are release stores. */
|
47
|
-
#define GPR_ATM_LS_BARRIER_() GPR_ATM_COMPILE_BARRIER_()
|
48
|
-
#else
|
49
|
-
#define GPR_ATM_LS_BARRIER_() gpr_atm_full_barrier()
|
50
|
-
#endif
|
51
|
-
|
52
|
-
#define gpr_atm_full_barrier() (__sync_synchronize())
|
53
|
-
|
54
|
-
static __inline gpr_atm gpr_atm_acq_load(const gpr_atm *p) {
|
55
|
-
gpr_atm value = *p;
|
56
|
-
GPR_ATM_LS_BARRIER_();
|
57
|
-
return value;
|
58
|
-
}
|
59
|
-
|
60
|
-
static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm *p) {
|
61
|
-
gpr_atm value = *p;
|
62
|
-
GPR_ATM_COMPILE_BARRIER_();
|
63
|
-
return value;
|
64
|
-
}
|
65
|
-
|
66
|
-
static __inline void gpr_atm_rel_store(gpr_atm *p, gpr_atm value) {
|
67
|
-
GPR_ATM_LS_BARRIER_();
|
68
|
-
*p = value;
|
69
|
-
}
|
70
|
-
|
71
|
-
static __inline void gpr_atm_no_barrier_store(gpr_atm *p, gpr_atm value) {
|
72
|
-
GPR_ATM_COMPILE_BARRIER_();
|
73
|
-
*p = value;
|
74
|
-
}
|
75
|
-
|
76
|
-
#undef GPR_ATM_LS_BARRIER_
|
77
|
-
#undef GPR_ATM_COMPILE_BARRIER_
|
78
|
-
|
79
|
-
#define gpr_atm_no_barrier_fetch_add(p, delta) \
|
80
|
-
gpr_atm_full_fetch_add((p), (delta))
|
81
|
-
#define gpr_atm_full_fetch_add(p, delta) (__sync_fetch_and_add((p), (delta)))
|
82
|
-
|
83
|
-
#define gpr_atm_no_barrier_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
|
84
|
-
#define gpr_atm_acq_cas(p, o, n) (__sync_bool_compare_and_swap((p), (o), (n)))
|
85
|
-
#define gpr_atm_rel_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
|
37
|
+
#include <grpc/impl/codegen/atm_gcc_sync.h>
|
86
38
|
|
87
39
|
#endif /* GRPC_SUPPORT_ATM_GCC_SYNC_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,92 +34,6 @@
|
|
34
34
|
#ifndef GRPC_SUPPORT_ATM_WIN32_H
|
35
35
|
#define GRPC_SUPPORT_ATM_WIN32_H
|
36
36
|
|
37
|
-
|
38
|
-
#include <grpc/support/port_platform.h>
|
39
|
-
|
40
|
-
typedef gpr_intptr gpr_atm;
|
41
|
-
|
42
|
-
#define gpr_atm_full_barrier MemoryBarrier
|
43
|
-
|
44
|
-
static __inline gpr_atm gpr_atm_acq_load(const gpr_atm *p) {
|
45
|
-
gpr_atm result = *p;
|
46
|
-
gpr_atm_full_barrier();
|
47
|
-
return result;
|
48
|
-
}
|
49
|
-
|
50
|
-
static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm *p) {
|
51
|
-
/* TODO(dklempner): Can we implement something better here? */
|
52
|
-
return gpr_atm_acq_load(p);
|
53
|
-
}
|
54
|
-
|
55
|
-
static __inline void gpr_atm_rel_store(gpr_atm *p, gpr_atm value) {
|
56
|
-
gpr_atm_full_barrier();
|
57
|
-
*p = value;
|
58
|
-
}
|
59
|
-
|
60
|
-
static __inline void gpr_atm_no_barrier_store(gpr_atm *p, gpr_atm value) {
|
61
|
-
/* TODO(ctiller): Can we implement something better here? */
|
62
|
-
gpr_atm_rel_store(p, value);
|
63
|
-
}
|
64
|
-
|
65
|
-
static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
|
66
|
-
/* InterlockedCompareExchangePointerNoFence() not available on vista or
|
67
|
-
windows7 */
|
68
|
-
#ifdef GPR_ARCH_64
|
69
|
-
return o == (gpr_atm)InterlockedCompareExchangeAcquire64(
|
70
|
-
(volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o);
|
71
|
-
#else
|
72
|
-
return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *)p,
|
73
|
-
(LONG)n, (LONG)o);
|
74
|
-
#endif
|
75
|
-
}
|
76
|
-
|
77
|
-
static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
|
78
|
-
#ifdef GPR_ARCH_64
|
79
|
-
return o == (gpr_atm)InterlockedCompareExchangeAcquire64(
|
80
|
-
(volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o);
|
81
|
-
#else
|
82
|
-
return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG *)p,
|
83
|
-
(LONG)n, (LONG)o);
|
84
|
-
#endif
|
85
|
-
}
|
86
|
-
|
87
|
-
static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
|
88
|
-
#ifdef GPR_ARCH_64
|
89
|
-
return o == (gpr_atm)InterlockedCompareExchangeRelease64(
|
90
|
-
(volatile LONGLONG *)p, (LONGLONG)n, (LONGLONG)o);
|
91
|
-
#else
|
92
|
-
return o == (gpr_atm)InterlockedCompareExchangeRelease((volatile LONG *)p,
|
93
|
-
(LONG)n, (LONG)o);
|
94
|
-
#endif
|
95
|
-
}
|
96
|
-
|
97
|
-
static __inline gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm *p,
|
98
|
-
gpr_atm delta) {
|
99
|
-
/* Use the CAS operation to get pointer-sized fetch and add */
|
100
|
-
gpr_atm old;
|
101
|
-
do {
|
102
|
-
old = *p;
|
103
|
-
} while (!gpr_atm_no_barrier_cas(p, old, old + delta));
|
104
|
-
return old;
|
105
|
-
}
|
106
|
-
|
107
|
-
static __inline gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta) {
|
108
|
-
/* Use a CAS operation to get pointer-sized fetch and add */
|
109
|
-
gpr_atm old;
|
110
|
-
#ifdef GPR_ARCH_64
|
111
|
-
do {
|
112
|
-
old = *p;
|
113
|
-
} while (old != (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG *)p,
|
114
|
-
(LONGLONG)old + delta,
|
115
|
-
(LONGLONG)old));
|
116
|
-
#else
|
117
|
-
do {
|
118
|
-
old = *p;
|
119
|
-
} while (old != (gpr_atm)InterlockedCompareExchange(
|
120
|
-
(volatile LONG *)p, (LONG)old + delta, (LONG)old));
|
121
|
-
#endif
|
122
|
-
return old;
|
123
|
-
}
|
37
|
+
#include <grpc/impl/codegen/atm_win32.h>
|
124
38
|
|
125
39
|
#endif /* GRPC_SUPPORT_ATM_WIN32_H */
|
data/include/grpc/support/avl.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
|
@@ -69,23 +69,23 @@ typedef struct gpr_avl {
|
|
69
69
|
} gpr_avl;
|
70
70
|
|
71
71
|
/** create an immutable AVL tree */
|
72
|
-
gpr_avl gpr_avl_create(const gpr_avl_vtable *vtable);
|
72
|
+
GPR_API gpr_avl gpr_avl_create(const gpr_avl_vtable *vtable);
|
73
73
|
/** add a reference to an existing tree - returns
|
74
74
|
the tree as a convenience */
|
75
|
-
gpr_avl gpr_avl_ref(gpr_avl avl);
|
75
|
+
GPR_API gpr_avl gpr_avl_ref(gpr_avl avl);
|
76
76
|
/** remove a reference to a tree - destroying it if there
|
77
77
|
are no references left */
|
78
|
-
void gpr_avl_unref(gpr_avl avl);
|
78
|
+
GPR_API void gpr_avl_unref(gpr_avl avl);
|
79
79
|
/** return a new tree with (key, value) added to avl.
|
80
80
|
implicitly unrefs avl to allow easy chaining.
|
81
81
|
if key exists in avl, the new tree's key entry updated
|
82
82
|
(i.e. a duplicate is not created) */
|
83
|
-
gpr_avl gpr_avl_add(gpr_avl avl, void *key, void *value);
|
83
|
+
GPR_API gpr_avl gpr_avl_add(gpr_avl avl, void *key, void *value);
|
84
84
|
/** return a new tree with key deleted */
|
85
|
-
gpr_avl gpr_avl_remove(gpr_avl avl, void *key);
|
85
|
+
GPR_API gpr_avl gpr_avl_remove(gpr_avl avl, void *key);
|
86
86
|
/** lookup key, and return the associated value.
|
87
87
|
does not mutate avl.
|
88
88
|
returns NULL if key is not found. */
|
89
|
-
void *gpr_avl_get(gpr_avl avl, void *key);
|
89
|
+
GPR_API void *gpr_avl_get(gpr_avl avl, void *key);
|
90
90
|
|
91
91
|
#endif
|
@@ -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_CMDLINE_H
|
35
35
|
#define GRPC_SUPPORT_CMDLINE_H
|
36
36
|
|
37
|
+
#include <grpc/support/port_platform.h>
|
38
|
+
|
37
39
|
#ifdef __cplusplus
|
38
40
|
extern "C" {
|
39
41
|
#endif
|
@@ -68,31 +70,31 @@ typedef struct gpr_cmdline gpr_cmdline;
|
|
68
70
|
|
69
71
|
/* Construct a command line parser: takes a short description of the tool
|
70
72
|
doing the parsing */
|
71
|
-
gpr_cmdline *gpr_cmdline_create(const char *description);
|
73
|
+
GPR_API gpr_cmdline *gpr_cmdline_create(const char *description);
|
72
74
|
/* Add an integer parameter, with a name (used on the command line) and some
|
73
75
|
helpful text (used in the command usage) */
|
74
|
-
void gpr_cmdline_add_int(gpr_cmdline *cl, const char *name,
|
75
|
-
|
76
|
+
GPR_API void gpr_cmdline_add_int(gpr_cmdline *cl, const char *name,
|
77
|
+
const char *help, int *value);
|
76
78
|
/* The same, for a boolean flag */
|
77
|
-
void gpr_cmdline_add_flag(gpr_cmdline *cl, const char *name,
|
78
|
-
|
79
|
+
GPR_API void gpr_cmdline_add_flag(gpr_cmdline *cl, const char *name,
|
80
|
+
const char *help, int *value);
|
79
81
|
/* And for a string */
|
80
|
-
void gpr_cmdline_add_string(gpr_cmdline *cl, const char *name,
|
81
|
-
|
82
|
+
GPR_API void gpr_cmdline_add_string(gpr_cmdline *cl, const char *name,
|
83
|
+
const char *help, char **value);
|
82
84
|
/* Set a callback for non-named arguments */
|
83
|
-
void gpr_cmdline_on_extra_arg(
|
85
|
+
GPR_API void gpr_cmdline_on_extra_arg(
|
84
86
|
gpr_cmdline *cl, const char *name, const char *help,
|
85
87
|
void (*on_extra_arg)(void *user_data, const char *arg), void *user_data);
|
86
88
|
/* Enable surviving failure: default behavior is to exit the process */
|
87
|
-
void gpr_cmdline_set_survive_failure(gpr_cmdline *cl);
|
89
|
+
GPR_API void gpr_cmdline_set_survive_failure(gpr_cmdline *cl);
|
88
90
|
/* Parse the command line; returns 1 on success, on failure either dies
|
89
91
|
(by default) or returns 0 if gpr_cmdline_set_survive_failure() has been
|
90
92
|
called */
|
91
|
-
int gpr_cmdline_parse(gpr_cmdline *cl, int argc, char **argv);
|
93
|
+
GPR_API int gpr_cmdline_parse(gpr_cmdline *cl, int argc, char **argv);
|
92
94
|
/* Destroy the parser */
|
93
|
-
void gpr_cmdline_destroy(gpr_cmdline *cl);
|
95
|
+
GPR_API void gpr_cmdline_destroy(gpr_cmdline *cl);
|
94
96
|
/* Get a string describing usage */
|
95
|
-
char *gpr_cmdline_usage_string(gpr_cmdline *cl, const char *argv0);
|
97
|
+
GPR_API char *gpr_cmdline_usage_string(gpr_cmdline *cl, const char *argv0);
|
96
98
|
|
97
99
|
#ifdef __cplusplus
|
98
100
|
}
|
data/include/grpc/support/cpu.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
|
@@ -34,6 +34,8 @@
|
|
34
34
|
#ifndef GRPC_SUPPORT_CPU_H
|
35
35
|
#define GRPC_SUPPORT_CPU_H
|
36
36
|
|
37
|
+
#include <grpc/support/port_platform.h>
|
38
|
+
|
37
39
|
#ifdef __cplusplus
|
38
40
|
extern "C" {
|
39
41
|
#endif
|
@@ -42,13 +44,13 @@ extern "C" {
|
|
42
44
|
|
43
45
|
/* Return the number of CPU cores on the current system. Will return 0 if
|
44
46
|
the information is not available. */
|
45
|
-
unsigned gpr_cpu_num_cores(void);
|
47
|
+
GPR_API unsigned gpr_cpu_num_cores(void);
|
46
48
|
|
47
49
|
/* Return the CPU on which the current thread is executing; N.B. This should
|
48
50
|
be considered advisory only - it is possible that the thread is switched
|
49
51
|
to a different CPU at any time. Returns a value in range
|
50
52
|
[0, gpr_cpu_num_cores() - 1] */
|
51
|
-
unsigned gpr_cpu_current_cpu(void);
|
53
|
+
GPR_API unsigned gpr_cpu_current_cpu(void);
|
52
54
|
|
53
55
|
#ifdef __cplusplus
|
54
56
|
} // extern "C"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -43,31 +43,34 @@ extern "C" {
|
|
43
43
|
|
44
44
|
typedef struct gpr_histogram gpr_histogram;
|
45
45
|
|
46
|
-
gpr_histogram *gpr_histogram_create(double resolution,
|
47
|
-
|
48
|
-
void
|
46
|
+
GPR_API gpr_histogram *gpr_histogram_create(double resolution,
|
47
|
+
double max_bucket_start);
|
48
|
+
GPR_API void gpr_histogram_destroy(gpr_histogram *h);
|
49
|
+
GPR_API void gpr_histogram_add(gpr_histogram *h, double x);
|
49
50
|
|
50
51
|
/* The following merges the second histogram into the first. It only works
|
51
52
|
if they have the same buckets and resolution. Returns 0 on failure, 1
|
52
53
|
on success */
|
53
|
-
int gpr_histogram_merge(gpr_histogram *dst, const gpr_histogram *src);
|
54
|
+
GPR_API int gpr_histogram_merge(gpr_histogram *dst, const gpr_histogram *src);
|
54
55
|
|
55
|
-
double gpr_histogram_percentile(gpr_histogram *histogram,
|
56
|
-
double
|
57
|
-
double
|
58
|
-
double
|
59
|
-
double
|
60
|
-
double
|
61
|
-
double
|
62
|
-
double
|
63
|
-
double
|
56
|
+
GPR_API double gpr_histogram_percentile(gpr_histogram *histogram,
|
57
|
+
double percentile);
|
58
|
+
GPR_API double gpr_histogram_mean(gpr_histogram *histogram);
|
59
|
+
GPR_API double gpr_histogram_stddev(gpr_histogram *histogram);
|
60
|
+
GPR_API double gpr_histogram_variance(gpr_histogram *histogram);
|
61
|
+
GPR_API double gpr_histogram_maximum(gpr_histogram *histogram);
|
62
|
+
GPR_API double gpr_histogram_minimum(gpr_histogram *histogram);
|
63
|
+
GPR_API double gpr_histogram_count(gpr_histogram *histogram);
|
64
|
+
GPR_API double gpr_histogram_sum(gpr_histogram *histogram);
|
65
|
+
GPR_API double gpr_histogram_sum_of_squares(gpr_histogram *histogram);
|
64
66
|
|
65
|
-
const
|
66
|
-
|
67
|
-
void gpr_histogram_merge_contents(gpr_histogram *histogram,
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
GPR_API const uint32_t *gpr_histogram_get_contents(gpr_histogram *histogram,
|
68
|
+
size_t *count);
|
69
|
+
GPR_API void gpr_histogram_merge_contents(gpr_histogram *histogram,
|
70
|
+
const uint32_t *data,
|
71
|
+
size_t data_count, double min_seen,
|
72
|
+
double max_seen, double sum,
|
73
|
+
double sum_of_squares, double count);
|
71
74
|
|
72
75
|
#ifdef __cplusplus
|
73
76
|
}
|