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.

Files changed (673) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +5707 -22222
  3. data/include/grpc/byte_buffer.h +2 -83
  4. data/include/grpc/census.h +191 -121
  5. data/include/grpc/compression.h +14 -38
  6. data/include/grpc/grpc.h +88 -434
  7. data/include/grpc/grpc_security.h +76 -46
  8. data/include/grpc/grpc_zookeeper.h +1 -1
  9. data/include/grpc/impl/codegen/alloc.h +74 -0
  10. data/include/grpc/impl/codegen/atm.h +92 -0
  11. data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
  12. data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
  13. data/include/grpc/impl/codegen/atm_win32.h +125 -0
  14. data/include/grpc/impl/codegen/byte_buffer.h +121 -0
  15. data/include/grpc/impl/codegen/compression_types.h +73 -0
  16. data/include/grpc/impl/codegen/connectivity_state.h +59 -0
  17. data/include/grpc/impl/codegen/grpc_types.h +373 -0
  18. data/include/grpc/impl/codegen/log.h +110 -0
  19. data/include/grpc/impl/codegen/port_platform.h +362 -0
  20. data/include/grpc/impl/codegen/propagation_bits.h +67 -0
  21. data/include/grpc/impl/codegen/slice.h +182 -0
  22. data/include/grpc/impl/codegen/slice_buffer.h +105 -0
  23. data/include/grpc/impl/codegen/status.h +163 -0
  24. data/include/grpc/impl/codegen/sync.h +316 -0
  25. data/include/grpc/impl/codegen/sync_generic.h +55 -0
  26. data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
  27. data/include/grpc/impl/codegen/sync_win32.h +49 -0
  28. data/include/grpc/impl/codegen/time.h +132 -0
  29. data/include/grpc/status.h +2 -126
  30. data/include/grpc/support/alloc.h +2 -35
  31. data/include/grpc/support/atm.h +2 -55
  32. data/include/grpc/support/atm_gcc_atomic.h +5 -38
  33. data/include/grpc/support/atm_gcc_sync.h +2 -50
  34. data/include/grpc/support/atm_win32.h +2 -88
  35. data/include/grpc/support/avl.h +7 -7
  36. data/include/grpc/support/cmdline.h +15 -13
  37. data/include/grpc/support/cpu.h +5 -3
  38. data/include/grpc/support/histogram.h +23 -20
  39. data/include/grpc/support/host_port.h +5 -3
  40. data/include/grpc/support/log.h +2 -71
  41. data/include/grpc/support/log_win32.h +2 -2
  42. data/include/grpc/support/port_platform.h +2 -319
  43. data/include/grpc/support/slice.h +2 -145
  44. data/include/grpc/support/slice_buffer.h +2 -65
  45. data/include/grpc/support/string_util.h +3 -3
  46. data/include/grpc/support/subprocess.h +8 -6
  47. data/include/grpc/support/sync.h +2 -278
  48. data/include/grpc/support/sync_generic.h +2 -18
  49. data/include/grpc/support/sync_posix.h +2 -10
  50. data/include/grpc/support/sync_win32.h +2 -12
  51. data/include/grpc/support/thd.h +11 -11
  52. data/include/grpc/support/time.h +2 -91
  53. data/include/grpc/support/tls.h +1 -1
  54. data/include/grpc/support/tls_gcc.h +1 -1
  55. data/include/grpc/support/tls_msvc.h +1 -1
  56. data/include/grpc/support/tls_pthread.h +2 -2
  57. data/src/boringssl/err_data.c +1252 -0
  58. data/src/core/census/context.c +492 -8
  59. data/src/core/census/grpc_filter.c +3 -3
  60. data/src/core/census/initialize.c +4 -7
  61. data/src/core/census/operation.c +2 -2
  62. data/src/core/census/placeholders.c +109 -0
  63. data/src/core/census/rpc_metric_id.h +6 -6
  64. data/src/core/census/tracing.c +1 -1
  65. data/src/core/channel/channel_args.c +4 -3
  66. data/src/core/channel/channel_stack.c +1 -1
  67. data/src/core/channel/client_channel.c +18 -14
  68. data/src/core/channel/client_uchannel.c +3 -3
  69. data/src/core/channel/compress_filter.c +8 -8
  70. data/src/core/channel/http_client_filter.c +2 -2
  71. data/src/core/channel/http_server_filter.c +9 -9
  72. data/src/core/channel/subchannel_call_holder.c +12 -10
  73. data/src/core/client_config/lb_policies/pick_first.c +49 -31
  74. data/src/core/client_config/lb_policies/round_robin.c +7 -7
  75. data/src/core/client_config/resolvers/dns_resolver.c +3 -3
  76. data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
  77. data/src/core/client_config/subchannel.c +36 -25
  78. data/src/core/compression/algorithm.c +3 -3
  79. data/src/core/httpcli/format_request.c +1 -1
  80. data/src/core/httpcli/httpcli.c +5 -5
  81. data/src/core/httpcli/httpcli_security_connector.c +2 -3
  82. data/src/core/httpcli/parser.c +7 -7
  83. data/src/core/httpcli/parser.h +1 -1
  84. data/src/core/iomgr/closure.c +7 -7
  85. data/src/core/iomgr/closure.h +6 -5
  86. data/src/core/iomgr/exec_ctx.c +12 -8
  87. data/src/core/iomgr/exec_ctx.h +12 -5
  88. data/src/core/iomgr/executor.c +4 -4
  89. data/src/core/iomgr/executor.h +2 -2
  90. data/src/core/iomgr/fd_posix.c +28 -17
  91. data/src/core/iomgr/fd_posix.h +7 -4
  92. data/src/core/iomgr/iocp_windows.c +6 -8
  93. data/src/core/iomgr/pollset_multipoller_with_epoll.c +70 -5
  94. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +4 -2
  95. data/src/core/iomgr/pollset_posix.c +15 -15
  96. data/src/core/iomgr/pollset_posix.h +4 -2
  97. data/src/core/iomgr/pollset_windows.c +3 -12
  98. data/src/core/iomgr/resolve_address_posix.c +2 -2
  99. data/src/core/iomgr/resolve_address_windows.c +2 -2
  100. data/src/core/iomgr/sockaddr_utils.c +6 -6
  101. data/src/core/iomgr/sockaddr_win32.h +1 -6
  102. data/src/core/iomgr/tcp_client_posix.c +7 -7
  103. data/src/core/iomgr/tcp_client_windows.c +4 -4
  104. data/src/core/iomgr/tcp_posix.c +14 -8
  105. data/src/core/iomgr/tcp_posix.h +7 -1
  106. data/src/core/iomgr/tcp_server.h +40 -20
  107. data/src/core/iomgr/tcp_server_posix.c +106 -49
  108. data/src/core/iomgr/tcp_server_windows.c +98 -49
  109. data/src/core/iomgr/tcp_windows.c +11 -15
  110. data/src/core/iomgr/timer.c +8 -8
  111. data/src/core/iomgr/timer.h +1 -1
  112. data/src/core/iomgr/timer_heap.c +10 -10
  113. data/src/core/iomgr/timer_heap.h +2 -2
  114. data/src/core/iomgr/udp_server.c +2 -12
  115. data/src/core/iomgr/udp_server.h +1 -9
  116. data/src/core/iomgr/workqueue.h +2 -4
  117. data/src/core/iomgr/workqueue_posix.c +3 -3
  118. data/src/core/json/json_reader.c +11 -12
  119. data/src/core/json/json_reader.h +4 -4
  120. data/src/core/json/json_string.c +19 -19
  121. data/src/core/json/json_writer.c +7 -9
  122. data/src/core/profiling/basic_timers.c +1 -1
  123. data/src/core/security/base64.c +9 -9
  124. data/src/core/security/client_auth_filter.c +4 -4
  125. data/src/core/security/credentials.c +5 -5
  126. data/src/core/security/google_default_credentials.c +3 -3
  127. data/src/core/security/handshake.c +6 -5
  128. data/src/core/security/json_token.c +13 -7
  129. data/src/core/security/jwt_verifier.c +3 -2
  130. data/src/core/security/secure_endpoint.c +16 -16
  131. data/src/core/security/security_connector.c +47 -17
  132. data/src/core/security/security_connector.h +5 -5
  133. data/src/core/security/server_auth_filter.c +3 -3
  134. data/src/core/security/server_secure_chttp2.c +30 -31
  135. data/src/core/statistics/census_interface.h +2 -2
  136. data/src/core/statistics/census_rpc_stats.h +3 -3
  137. data/src/core/support/alloc.c +1 -1
  138. data/src/core/support/cpu_posix.c +2 -2
  139. data/src/core/support/env_linux.c +12 -2
  140. data/src/core/support/env_win32.c +15 -7
  141. data/src/core/support/histogram.c +5 -5
  142. data/src/core/support/log_posix.c +1 -1
  143. data/src/core/support/log_win32.c +4 -3
  144. data/src/core/support/murmur_hash.c +11 -11
  145. data/src/core/support/murmur_hash.h +1 -1
  146. data/src/core/support/slice.c +11 -11
  147. data/src/core/support/slice_buffer.c +6 -6
  148. data/src/core/support/stack_lockfree.c +20 -10
  149. data/src/core/support/string.c +15 -15
  150. data/src/core/support/string.h +5 -5
  151. data/src/core/support/string_win32.c +5 -5
  152. data/src/core/support/subprocess_windows.c +141 -0
  153. data/src/core/support/sync.c +4 -4
  154. data/src/core/support/sync_posix.c +2 -2
  155. data/src/core/support/sync_win32.c +10 -5
  156. data/src/core/support/time.c +29 -29
  157. data/src/core/support/time_posix.c +15 -6
  158. data/src/core/support/time_precise.c +2 -2
  159. data/src/core/support/time_win32.c +18 -9
  160. data/src/core/support/tls_pthread.c +1 -1
  161. data/src/core/support/wrap_memcpy.c +53 -0
  162. data/src/core/surface/alarm.c +83 -0
  163. data/src/core/surface/byte_buffer_reader.c +1 -1
  164. data/src/core/surface/call.c +78 -69
  165. data/src/core/surface/call.h +2 -2
  166. data/src/core/surface/call_test_only.h +2 -2
  167. data/src/core/surface/channel.c +9 -9
  168. data/src/core/surface/channel.h +1 -1
  169. data/src/core/surface/channel_connectivity.c +3 -3
  170. data/src/core/surface/channel_create.c +3 -3
  171. data/src/core/surface/channel_ping.c +2 -2
  172. data/src/core/surface/completion_queue.c +11 -12
  173. data/src/core/surface/completion_queue.h +1 -1
  174. data/src/core/surface/init.c +7 -5
  175. data/src/core/surface/lame_client.c +3 -3
  176. data/src/core/surface/secure_channel_create.c +3 -3
  177. data/src/core/surface/server.c +28 -28
  178. data/src/core/surface/server_chttp2.c +8 -8
  179. data/src/core/surface/server_create.c +1 -4
  180. data/src/core/surface/validate_metadata.c +3 -3
  181. data/src/core/surface/version.c +2 -2
  182. data/src/core/transport/byte_stream.c +8 -6
  183. data/src/core/transport/byte_stream.h +6 -5
  184. data/src/core/transport/chttp2/bin_encoder.c +29 -29
  185. data/src/core/transport/chttp2/frame_data.c +29 -26
  186. data/src/core/transport/chttp2/frame_data.h +6 -6
  187. data/src/core/transport/chttp2/frame_goaway.c +30 -30
  188. data/src/core/transport/chttp2/frame_goaway.h +6 -6
  189. data/src/core/transport/chttp2/frame_ping.c +6 -6
  190. data/src/core/transport/chttp2/frame_ping.h +5 -5
  191. data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
  192. data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
  193. data/src/core/transport/chttp2/frame_settings.c +30 -30
  194. data/src/core/transport/chttp2/frame_settings.h +13 -13
  195. data/src/core/transport/chttp2/frame_window_update.c +17 -18
  196. data/src/core/transport/chttp2/frame_window_update.h +5 -7
  197. data/src/core/transport/chttp2/hpack_encoder.c +69 -73
  198. data/src/core/transport/chttp2/hpack_encoder.h +16 -16
  199. data/src/core/transport/chttp2/hpack_parser.c +167 -167
  200. data/src/core/transport/chttp2/hpack_parser.h +16 -16
  201. data/src/core/transport/chttp2/hpack_table.c +13 -13
  202. data/src/core/transport/chttp2/hpack_table.h +11 -11
  203. data/src/core/transport/chttp2/internal.h +97 -86
  204. data/src/core/transport/chttp2/parsing.c +25 -25
  205. data/src/core/transport/chttp2/stream_lists.c +26 -3
  206. data/src/core/transport/chttp2/stream_map.c +13 -14
  207. data/src/core/transport/chttp2/stream_map.h +6 -7
  208. data/src/core/transport/chttp2/timeout_encoding.c +19 -16
  209. data/src/core/transport/chttp2/varint.c +8 -9
  210. data/src/core/transport/chttp2/varint.h +7 -8
  211. data/src/core/transport/chttp2/writing.c +26 -23
  212. data/src/core/transport/chttp2_transport.c +133 -92
  213. data/src/core/transport/connectivity_state.c +6 -6
  214. data/src/core/transport/metadata.c +18 -18
  215. data/src/core/transport/metadata.h +5 -5
  216. data/src/core/transport/static_metadata.c +15 -16
  217. data/src/core/transport/static_metadata.h +5 -5
  218. data/src/core/transport/transport.c +5 -5
  219. data/src/core/transport/transport.h +14 -1
  220. data/src/core/tsi/fake_transport_security.c +7 -7
  221. data/src/core/tsi/ssl_transport_security.c +6 -4
  222. data/src/core/tsi/ssl_types.h +55 -0
  223. data/src/ruby/ext/grpc/extconf.rb +51 -14
  224. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
  225. data/src/ruby/ext/grpc/rb_call.c +6 -3
  226. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
  227. data/src/ruby/ext/grpc/rb_channel.c +4 -2
  228. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  229. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
  230. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
  231. data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
  232. data/src/ruby/ext/grpc/rb_grpc.c +11 -3
  233. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +560 -0
  234. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +843 -0
  235. data/src/ruby/ext/grpc/rb_loader.c +72 -0
  236. data/src/ruby/ext/grpc/rb_loader.h +40 -0
  237. data/src/ruby/ext/grpc/rb_server.c +3 -1
  238. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
  239. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  240. data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
  241. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  242. data/src/ruby/lib/grpc/grpc.rb +34 -0
  243. data/src/ruby/lib/grpc/version.rb +1 -1
  244. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  245. data/third_party/boringssl/crypto/aes/aes.c +1142 -0
  246. data/third_party/boringssl/crypto/aes/internal.h +87 -0
  247. data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
  248. data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
  249. data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
  250. data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
  251. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
  252. data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
  253. data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
  254. data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
  255. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
  256. data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
  257. data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
  258. data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
  259. data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
  260. data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
  261. data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
  262. data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
  263. data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
  264. data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
  265. data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
  266. data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
  267. data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
  268. data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
  269. data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
  270. data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
  271. data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
  272. data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
  273. data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
  274. data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
  275. data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
  276. data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
  277. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
  278. data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
  279. data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
  280. data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
  281. data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
  282. data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
  283. data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
  284. data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
  285. data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
  286. data/third_party/boringssl/crypto/base64/base64.c +478 -0
  287. data/third_party/boringssl/crypto/bio/bio.c +608 -0
  288. data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
  289. data/third_party/boringssl/crypto/bio/buffer.c +496 -0
  290. data/third_party/boringssl/crypto/bio/connect.c +544 -0
  291. data/third_party/boringssl/crypto/bio/fd.c +270 -0
  292. data/third_party/boringssl/crypto/bio/file.c +349 -0
  293. data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
  294. data/third_party/boringssl/crypto/bio/internal.h +108 -0
  295. data/third_party/boringssl/crypto/bio/pair.c +803 -0
  296. data/third_party/boringssl/crypto/bio/printf.c +119 -0
  297. data/third_party/boringssl/crypto/bio/socket.c +195 -0
  298. data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
  299. data/third_party/boringssl/crypto/bn/add.c +377 -0
  300. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
  301. data/third_party/boringssl/crypto/bn/bn.c +341 -0
  302. data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
  303. data/third_party/boringssl/crypto/bn/cmp.c +200 -0
  304. data/third_party/boringssl/crypto/bn/convert.c +597 -0
  305. data/third_party/boringssl/crypto/bn/ctx.c +311 -0
  306. data/third_party/boringssl/crypto/bn/div.c +625 -0
  307. data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
  308. data/third_party/boringssl/crypto/bn/gcd.c +711 -0
  309. data/third_party/boringssl/crypto/bn/generic.c +1019 -0
  310. data/third_party/boringssl/crypto/bn/internal.h +294 -0
  311. data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
  312. data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
  313. data/third_party/boringssl/crypto/bn/mul.c +888 -0
  314. data/third_party/boringssl/crypto/bn/prime.c +845 -0
  315. data/third_party/boringssl/crypto/bn/random.c +326 -0
  316. data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
  317. data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
  318. data/third_party/boringssl/crypto/bn/shift.c +299 -0
  319. data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
  320. data/third_party/boringssl/crypto/buf/buf.c +235 -0
  321. data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
  322. data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
  323. data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
  324. data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
  325. data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
  326. data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
  327. data/third_party/boringssl/crypto/cipher/aead.c +167 -0
  328. data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
  329. data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
  330. data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
  331. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
  332. data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
  333. data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
  334. data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
  335. data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
  336. data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
  337. data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
  338. data/third_party/boringssl/crypto/cipher/internal.h +164 -0
  339. data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
  340. data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
  341. data/third_party/boringssl/crypto/conf/conf.c +778 -0
  342. data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
  343. data/third_party/boringssl/crypto/conf/internal.h +31 -0
  344. data/third_party/boringssl/crypto/cpu-arm.c +199 -0
  345. data/third_party/boringssl/crypto/cpu-intel.c +261 -0
  346. data/third_party/boringssl/crypto/crypto.c +140 -0
  347. data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
  348. data/third_party/boringssl/crypto/des/des.c +771 -0
  349. data/third_party/boringssl/crypto/des/internal.h +212 -0
  350. data/third_party/boringssl/crypto/dh/check.c +180 -0
  351. data/third_party/boringssl/crypto/dh/dh.c +463 -0
  352. data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
  353. data/third_party/boringssl/crypto/dh/internal.h +80 -0
  354. data/third_party/boringssl/crypto/dh/params.c +301 -0
  355. data/third_party/boringssl/crypto/digest/digest.c +248 -0
  356. data/third_party/boringssl/crypto/digest/digests.c +321 -0
  357. data/third_party/boringssl/crypto/digest/internal.h +112 -0
  358. data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
  359. data/third_party/boringssl/crypto/directory.h +66 -0
  360. data/third_party/boringssl/crypto/directory_posix.c +108 -0
  361. data/third_party/boringssl/crypto/directory_win.c +144 -0
  362. data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
  363. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
  364. data/third_party/boringssl/crypto/dsa/internal.h +78 -0
  365. data/third_party/boringssl/crypto/ec/ec.c +889 -0
  366. data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
  367. data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
  368. data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
  369. data/third_party/boringssl/crypto/ec/internal.h +318 -0
  370. data/third_party/boringssl/crypto/ec/oct.c +416 -0
  371. data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
  372. data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
  373. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
  374. data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
  375. data/third_party/boringssl/crypto/ec/simple.c +1313 -0
  376. data/third_party/boringssl/crypto/ec/util-64.c +183 -0
  377. data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
  378. data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
  379. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
  380. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
  381. data/third_party/boringssl/crypto/engine/engine.c +96 -0
  382. data/third_party/boringssl/crypto/err/err.c +756 -0
  383. data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
  384. data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
  385. data/third_party/boringssl/crypto/evp/evp.c +411 -0
  386. data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
  387. data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
  388. data/third_party/boringssl/crypto/evp/internal.h +278 -0
  389. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
  390. data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
  391. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
  392. data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
  393. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
  394. data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
  395. data/third_party/boringssl/crypto/evp/sign.c +151 -0
  396. data/third_party/boringssl/crypto/ex_data.c +294 -0
  397. data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
  398. data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
  399. data/third_party/boringssl/crypto/internal.h +532 -0
  400. data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
  401. data/third_party/boringssl/crypto/md4/md4.c +225 -0
  402. data/third_party/boringssl/crypto/md5/md5.c +275 -0
  403. data/third_party/boringssl/crypto/mem.c +200 -0
  404. data/third_party/boringssl/crypto/modes/cbc.c +216 -0
  405. data/third_party/boringssl/crypto/modes/cfb.c +231 -0
  406. data/third_party/boringssl/crypto/modes/ctr.c +226 -0
  407. data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
  408. data/third_party/boringssl/crypto/modes/internal.h +370 -0
  409. data/third_party/boringssl/crypto/modes/ofb.c +108 -0
  410. data/third_party/boringssl/crypto/obj/obj.c +664 -0
  411. data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
  412. data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
  413. data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
  414. data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
  415. data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
  416. data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
  417. data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
  418. data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
  419. data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
  420. data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
  421. data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
  422. data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
  423. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
  424. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
  425. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
  426. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
  427. data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
  428. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
  429. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
  430. data/third_party/boringssl/crypto/rand/internal.h +32 -0
  431. data/third_party/boringssl/crypto/rand/rand.c +239 -0
  432. data/third_party/boringssl/crypto/rand/urandom.c +223 -0
  433. data/third_party/boringssl/crypto/rand/windows.c +56 -0
  434. data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
  435. data/third_party/boringssl/crypto/refcount_c11.c +67 -0
  436. data/third_party/boringssl/crypto/refcount_lock.c +53 -0
  437. data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
  438. data/third_party/boringssl/crypto/rsa/internal.h +164 -0
  439. data/third_party/boringssl/crypto/rsa/padding.c +711 -0
  440. data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
  441. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
  442. data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
  443. data/third_party/boringssl/crypto/sha/sha1.c +337 -0
  444. data/third_party/boringssl/crypto/sha/sha256.c +327 -0
  445. data/third_party/boringssl/crypto/sha/sha512.c +607 -0
  446. data/third_party/boringssl/crypto/stack/stack.c +386 -0
  447. data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
  448. data/third_party/boringssl/crypto/test/test_util.h +35 -0
  449. data/third_party/boringssl/crypto/thread.c +101 -0
  450. data/third_party/boringssl/crypto/thread_none.c +55 -0
  451. data/third_party/boringssl/crypto/thread_pthread.c +167 -0
  452. data/third_party/boringssl/crypto/thread_win.c +282 -0
  453. data/third_party/boringssl/crypto/time_support.c +212 -0
  454. data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
  455. data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
  456. data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
  457. data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
  458. data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
  459. data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
  460. data/third_party/boringssl/crypto/x509/by_file.c +295 -0
  461. data/third_party/boringssl/crypto/x509/charmap.h +15 -0
  462. data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
  463. data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
  464. data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
  465. data/third_party/boringssl/crypto/x509/t_req.c +246 -0
  466. data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
  467. data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
  468. data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
  469. data/third_party/boringssl/crypto/x509/x509.c +152 -0
  470. data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
  471. data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
  472. data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
  473. data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
  474. data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
  475. data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
  476. data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
  477. data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
  478. data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
  479. data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
  480. data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
  481. data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
  482. data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
  483. data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
  484. data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
  485. data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
  486. data/third_party/boringssl/crypto/x509/x509name.c +381 -0
  487. data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
  488. data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
  489. data/third_party/boringssl/crypto/x509/x509type.c +128 -0
  490. data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
  491. data/third_party/boringssl/crypto/x509/x_all.c +547 -0
  492. data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
  493. data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
  494. data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
  495. data/third_party/boringssl/crypto/x509/x_info.c +95 -0
  496. data/third_party/boringssl/crypto/x509/x_name.c +538 -0
  497. data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
  498. data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
  499. data/third_party/boringssl/crypto/x509/x_req.c +112 -0
  500. data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
  501. data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
  502. data/third_party/boringssl/crypto/x509/x_val.c +69 -0
  503. data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
  504. data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
  505. data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
  506. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
  507. data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
  508. data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
  509. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
  510. data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
  511. data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
  512. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
  513. data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
  514. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
  515. data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
  516. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
  517. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
  518. data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
  519. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
  520. data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
  521. data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
  522. data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
  523. data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
  524. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
  525. data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
  526. data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
  527. data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
  528. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
  529. data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
  530. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
  531. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
  532. data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
  533. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
  534. data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
  535. data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
  536. data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
  537. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
  538. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
  539. data/third_party/boringssl/include/openssl/aead.h +346 -0
  540. data/third_party/boringssl/include/openssl/aes.h +158 -0
  541. data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
  542. data/third_party/boringssl/include/openssl/asn1.h +1168 -0
  543. data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
  544. data/third_party/boringssl/include/openssl/asn1t.h +906 -0
  545. data/third_party/boringssl/include/openssl/base.h +261 -0
  546. data/third_party/boringssl/include/openssl/base64.h +184 -0
  547. data/third_party/boringssl/include/openssl/bio.h +902 -0
  548. data/third_party/boringssl/include/openssl/blowfish.h +93 -0
  549. data/third_party/boringssl/include/openssl/bn.h +885 -0
  550. data/third_party/boringssl/include/openssl/buf.h +118 -0
  551. data/third_party/boringssl/include/openssl/buffer.h +18 -0
  552. data/third_party/boringssl/include/openssl/bytestring.h +360 -0
  553. data/third_party/boringssl/include/openssl/cast.h +96 -0
  554. data/third_party/boringssl/include/openssl/chacha.h +37 -0
  555. data/third_party/boringssl/include/openssl/cipher.h +571 -0
  556. data/third_party/boringssl/include/openssl/cmac.h +76 -0
  557. data/third_party/boringssl/include/openssl/conf.h +145 -0
  558. data/third_party/boringssl/include/openssl/cpu.h +184 -0
  559. data/third_party/boringssl/include/openssl/crypto.h +68 -0
  560. data/third_party/boringssl/include/openssl/curve25519.h +88 -0
  561. data/third_party/boringssl/include/openssl/des.h +177 -0
  562. data/third_party/boringssl/include/openssl/dh.h +238 -0
  563. data/third_party/boringssl/include/openssl/digest.h +258 -0
  564. data/third_party/boringssl/include/openssl/dsa.h +343 -0
  565. data/third_party/boringssl/include/openssl/dtls1.h +16 -0
  566. data/third_party/boringssl/include/openssl/ec.h +355 -0
  567. data/third_party/boringssl/include/openssl/ec_key.h +280 -0
  568. data/third_party/boringssl/include/openssl/ecdh.h +102 -0
  569. data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
  570. data/third_party/boringssl/include/openssl/engine.h +98 -0
  571. data/third_party/boringssl/include/openssl/err.h +487 -0
  572. data/third_party/boringssl/include/openssl/evp.h +750 -0
  573. data/third_party/boringssl/include/openssl/ex_data.h +213 -0
  574. data/third_party/boringssl/include/openssl/hkdf.h +44 -0
  575. data/third_party/boringssl/include/openssl/hmac.h +160 -0
  576. data/third_party/boringssl/include/openssl/lhash.h +192 -0
  577. data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
  578. data/third_party/boringssl/include/openssl/md4.h +102 -0
  579. data/third_party/boringssl/include/openssl/md5.h +107 -0
  580. data/third_party/boringssl/include/openssl/mem.h +140 -0
  581. data/third_party/boringssl/include/openssl/obj.h +198 -0
  582. data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
  583. data/third_party/boringssl/include/openssl/objects.h +18 -0
  584. data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
  585. data/third_party/boringssl/include/openssl/opensslv.h +18 -0
  586. data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  587. data/third_party/boringssl/include/openssl/pem.h +521 -0
  588. data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  589. data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
  590. data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
  591. data/third_party/boringssl/include/openssl/poly1305.h +51 -0
  592. data/third_party/boringssl/include/openssl/pqueue.h +146 -0
  593. data/third_party/boringssl/include/openssl/rand.h +113 -0
  594. data/third_party/boringssl/include/openssl/rc4.h +90 -0
  595. data/third_party/boringssl/include/openssl/rsa.h +637 -0
  596. data/third_party/boringssl/include/openssl/safestack.h +16 -0
  597. data/third_party/boringssl/include/openssl/sha.h +256 -0
  598. data/third_party/boringssl/include/openssl/srtp.h +18 -0
  599. data/third_party/boringssl/include/openssl/ssl.h +4466 -0
  600. data/third_party/boringssl/include/openssl/ssl3.h +441 -0
  601. data/third_party/boringssl/include/openssl/stack.h +298 -0
  602. data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
  603. data/third_party/boringssl/include/openssl/thread.h +173 -0
  604. data/third_party/boringssl/include/openssl/time_support.h +90 -0
  605. data/third_party/boringssl/include/openssl/tls1.h +653 -0
  606. data/third_party/boringssl/include/openssl/type_check.h +91 -0
  607. data/third_party/boringssl/include/openssl/x509.h +1258 -0
  608. data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
  609. data/third_party/boringssl/include/openssl/x509v3.h +798 -0
  610. data/third_party/boringssl/ssl/custom_extensions.c +257 -0
  611. data/third_party/boringssl/ssl/d1_both.c +880 -0
  612. data/third_party/boringssl/ssl/d1_clnt.c +566 -0
  613. data/third_party/boringssl/ssl/d1_lib.c +340 -0
  614. data/third_party/boringssl/ssl/d1_meth.c +130 -0
  615. data/third_party/boringssl/ssl/d1_pkt.c +578 -0
  616. data/third_party/boringssl/ssl/d1_srtp.c +234 -0
  617. data/third_party/boringssl/ssl/d1_srvr.c +485 -0
  618. data/third_party/boringssl/ssl/dtls_record.c +308 -0
  619. data/third_party/boringssl/ssl/internal.h +1276 -0
  620. data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
  621. data/third_party/boringssl/ssl/s3_both.c +571 -0
  622. data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
  623. data/third_party/boringssl/ssl/s3_enc.c +494 -0
  624. data/third_party/boringssl/ssl/s3_lib.c +587 -0
  625. data/third_party/boringssl/ssl/s3_meth.c +166 -0
  626. data/third_party/boringssl/ssl/s3_pkt.c +732 -0
  627. data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
  628. data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
  629. data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
  630. data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
  631. data/third_party/boringssl/ssl/ssl_cert.c +539 -0
  632. data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
  633. data/third_party/boringssl/ssl/ssl_file.c +633 -0
  634. data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
  635. data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
  636. data/third_party/boringssl/ssl/ssl_session.c +764 -0
  637. data/third_party/boringssl/ssl/ssl_stat.c +591 -0
  638. data/third_party/boringssl/ssl/t1_enc.c +708 -0
  639. data/third_party/boringssl/ssl/t1_lib.c +2905 -0
  640. data/third_party/boringssl/ssl/test/async_bio.h +45 -0
  641. data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
  642. data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
  643. data/third_party/boringssl/ssl/test/test_config.h +108 -0
  644. data/third_party/boringssl/ssl/tls_record.c +342 -0
  645. data/third_party/zlib/adler32.c +179 -0
  646. data/third_party/zlib/compress.c +80 -0
  647. data/third_party/zlib/crc32.c +425 -0
  648. data/third_party/zlib/crc32.h +441 -0
  649. data/third_party/zlib/deflate.c +1967 -0
  650. data/third_party/zlib/deflate.h +346 -0
  651. data/third_party/zlib/gzclose.c +25 -0
  652. data/third_party/zlib/gzguts.h +209 -0
  653. data/third_party/zlib/gzlib.c +634 -0
  654. data/third_party/zlib/gzread.c +594 -0
  655. data/third_party/zlib/gzwrite.c +577 -0
  656. data/third_party/zlib/infback.c +640 -0
  657. data/third_party/zlib/inffast.c +340 -0
  658. data/third_party/zlib/inffast.h +11 -0
  659. data/third_party/zlib/inffixed.h +94 -0
  660. data/third_party/zlib/inflate.c +1512 -0
  661. data/third_party/zlib/inflate.h +122 -0
  662. data/third_party/zlib/inftrees.c +306 -0
  663. data/third_party/zlib/inftrees.h +62 -0
  664. data/third_party/zlib/trees.c +1226 -0
  665. data/third_party/zlib/trees.h +128 -0
  666. data/third_party/zlib/uncompr.c +59 -0
  667. data/third_party/zlib/zconf.h +511 -0
  668. data/third_party/zlib/zlib.h +1768 -0
  669. data/third_party/zlib/zutil.c +324 -0
  670. data/third_party/zlib/zutil.h +253 -0
  671. metadata +492 -25
  672. data/Rakefile +0 -63
  673. data/src/ruby/lib/grpc/grpc.so +0 -0
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -34,149 +34,6 @@
34
34
  #ifndef GRPC_SUPPORT_SLICE_H
35
35
  #define GRPC_SUPPORT_SLICE_H
36
36
 
37
- #include <grpc/support/sync.h>
38
-
39
- #include <stddef.h>
40
-
41
- #ifdef __cplusplus
42
- extern "C" {
43
- #endif
44
-
45
- /* Slice API
46
-
47
- A slice represents a contiguous reference counted array of bytes.
48
- It is cheap to take references to a slice, and it is cheap to create a
49
- slice pointing to a subset of another slice.
50
-
51
- The data-structure for slices is exposed here to allow non-gpr code to
52
- build slices from whatever data they have available.
53
-
54
- When defining interfaces that handle slices, care should be taken to define
55
- reference ownership semantics (who should call unref?) and mutability
56
- constraints (is the callee allowed to modify the slice?) */
57
-
58
- /* Reference count container for gpr_slice. Contains function pointers to
59
- increment and decrement reference counts. Implementations should cleanup
60
- when the reference count drops to zero.
61
- Typically client code should not touch this, and use gpr_slice_malloc,
62
- gpr_slice_new, or gpr_slice_new_with_len instead. */
63
- typedef struct gpr_slice_refcount {
64
- void (*ref)(void *);
65
- void (*unref)(void *);
66
- } gpr_slice_refcount;
67
-
68
- #define GPR_SLICE_INLINED_SIZE (sizeof(size_t) + sizeof(gpr_uint8 *) - 1)
69
-
70
- /* A gpr_slice s, if initialized, represents the byte range
71
- s.bytes[0..s.length-1].
72
-
73
- It can have an associated ref count which has a destruction routine to be run
74
- when the ref count reaches zero (see gpr_slice_new() and grp_slice_unref()).
75
- Multiple gpr_slice values may share a ref count.
76
-
77
- If the slice does not have a refcount, it represents an inlined small piece
78
- of data that is copied by value. */
79
- typedef struct gpr_slice {
80
- struct gpr_slice_refcount *refcount;
81
- union {
82
- struct {
83
- gpr_uint8 *bytes;
84
- size_t length;
85
- } refcounted;
86
- struct {
87
- gpr_uint8 length;
88
- gpr_uint8 bytes[GPR_SLICE_INLINED_SIZE];
89
- } inlined;
90
- } data;
91
- } gpr_slice;
92
-
93
- #define GPR_SLICE_START_PTR(slice) \
94
- ((slice).refcount ? (slice).data.refcounted.bytes \
95
- : (slice).data.inlined.bytes)
96
- #define GPR_SLICE_LENGTH(slice) \
97
- ((slice).refcount ? (slice).data.refcounted.length \
98
- : (slice).data.inlined.length)
99
- #define GPR_SLICE_SET_LENGTH(slice, newlen) \
100
- ((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \
101
- : ((slice).data.inlined.length = (gpr_uint8)(newlen)))
102
- #define GPR_SLICE_END_PTR(slice) \
103
- GPR_SLICE_START_PTR(slice) + GPR_SLICE_LENGTH(slice)
104
- #define GPR_SLICE_IS_EMPTY(slice) (GPR_SLICE_LENGTH(slice) == 0)
105
-
106
- /* Increment the refcount of s. Requires slice is initialized.
107
- Returns s. */
108
- gpr_slice gpr_slice_ref(gpr_slice s);
109
-
110
- /* Decrement the ref count of s. If the ref count of s reaches zero, all
111
- slices sharing the ref count are destroyed, and considered no longer
112
- initialized. If s is ultimately derived from a call to gpr_slice_new(start,
113
- len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is
114
- ultimately derived from a call to gpr_slice_new_with_len(start, len, dest)
115
- where dest!=NULL , then (*dest)(start, len). Requires s initialized. */
116
- void gpr_slice_unref(gpr_slice s);
117
-
118
- /* Create a slice pointing at some data. Calls malloc to allocate a refcount
119
- for the object, and arranges that destroy will be called with the pointer
120
- passed in at destruction. */
121
- gpr_slice gpr_slice_new(void *p, size_t len, void (*destroy)(void *));
122
-
123
- /* Equivalent to gpr_slice_new, but with a two argument destroy function that
124
- also takes the slice length. */
125
- gpr_slice gpr_slice_new_with_len(void *p, size_t len,
126
- void (*destroy)(void *, size_t));
127
-
128
- /* Equivalent to gpr_slice_new(malloc(len), len, free), but saves one malloc()
129
- call.
130
- Aborts if malloc() fails. */
131
- gpr_slice gpr_slice_malloc(size_t length);
132
-
133
- /* Create a slice by copying a string.
134
- Does not preserve null terminators.
135
- Equivalent to:
136
- size_t len = strlen(source);
137
- gpr_slice slice = gpr_slice_malloc(len);
138
- memcpy(slice->data, source, len); */
139
- gpr_slice gpr_slice_from_copied_string(const char *source);
140
-
141
- /* Create a slice by copying a buffer.
142
- Equivalent to:
143
- gpr_slice slice = gpr_slice_malloc(len);
144
- memcpy(slice->data, source, len); */
145
- gpr_slice gpr_slice_from_copied_buffer(const char *source, size_t len);
146
-
147
- /* Create a slice pointing to constant memory */
148
- gpr_slice gpr_slice_from_static_string(const char *source);
149
-
150
- /* Return a result slice derived from s, which shares a ref count with s, where
151
- result.data==s.data+begin, and result.length==end-begin.
152
- The ref count of s is increased by one.
153
- Requires s initialized, begin <= end, begin <= s.length, and
154
- end <= source->length. */
155
- gpr_slice gpr_slice_sub(gpr_slice s, size_t begin, size_t end);
156
-
157
- /* The same as gpr_slice_sub, but without altering the ref count */
158
- gpr_slice gpr_slice_sub_no_ref(gpr_slice s, size_t begin, size_t end);
159
-
160
- /* Splits s into two: modifies s to be s[0:split], and returns a new slice,
161
- sharing a refcount with s, that contains s[split:s.length].
162
- Requires s intialized, split <= s.length */
163
- gpr_slice gpr_slice_split_tail(gpr_slice *s, size_t split);
164
-
165
- /* Splits s into two: modifies s to be s[split:s.length], and returns a new
166
- slice, sharing a refcount with s, that contains s[0:split].
167
- Requires s intialized, split <= s.length */
168
- gpr_slice gpr_slice_split_head(gpr_slice *s, size_t split);
169
-
170
- gpr_slice gpr_empty_slice(void);
171
-
172
- /* Returns <0 if a < b, ==0 if a == b, >0 if a > b
173
- The order is arbitrary, and is not guaranteed to be stable across different
174
- versions of the API. */
175
- int gpr_slice_cmp(gpr_slice a, gpr_slice b);
176
- int gpr_slice_str_cmp(gpr_slice a, const char *b);
177
-
178
- #ifdef __cplusplus
179
- }
180
- #endif
37
+ #include <grpc/impl/codegen/slice.h>
181
38
 
182
39
  #endif /* GRPC_SUPPORT_SLICE_H */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -34,69 +34,6 @@
34
34
  #ifndef GRPC_SUPPORT_SLICE_BUFFER_H
35
35
  #define GRPC_SUPPORT_SLICE_BUFFER_H
36
36
 
37
- #include <grpc/support/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
- void gpr_slice_buffer_init(gpr_slice_buffer *sb);
63
- /* destroy a slice buffer - unrefs any held elements */
64
- void gpr_slice_buffer_destroy(gpr_slice_buffer *sb);
65
- /* Add an element to a slice buffer - takes ownership of the slice.
66
- This function is allowed to concatenate the passed in slice to the end of
67
- some other slice if desired by the slice buffer. */
68
- void gpr_slice_buffer_add(gpr_slice_buffer *sb, gpr_slice slice);
69
- /* add an element to a slice buffer - takes ownership of the slice and returns
70
- the index of the slice.
71
- Guarantees that the slice will not be concatenated at the end of another
72
- slice (i.e. the data for this slice will begin at the first byte of the
73
- slice at the returned index in sb->slices)
74
- The implementation MAY decide to concatenate data at the end of a small
75
- slice added in this fashion. */
76
- size_t gpr_slice_buffer_add_indexed(gpr_slice_buffer *sb, gpr_slice slice);
77
- void gpr_slice_buffer_addn(gpr_slice_buffer *sb, gpr_slice *slices, size_t n);
78
- /* add a very small (less than 8 bytes) amount of data to the end of a slice
79
- buffer: returns a pointer into which to add the data */
80
- gpr_uint8 *gpr_slice_buffer_tiny_add(gpr_slice_buffer *sb, size_t len);
81
- /* pop the last buffer, but don't unref it */
82
- void gpr_slice_buffer_pop(gpr_slice_buffer *sb);
83
- /* clear a slice buffer, unref all elements */
84
- void gpr_slice_buffer_reset_and_unref(gpr_slice_buffer *sb);
85
- /* swap the contents of two slice buffers */
86
- void gpr_slice_buffer_swap(gpr_slice_buffer *a, gpr_slice_buffer *b);
87
- /* move all of the elements of src into dst */
88
- void gpr_slice_buffer_move_into(gpr_slice_buffer *src, gpr_slice_buffer *dst);
89
- /* remove n bytes from the end of a slice buffer */
90
- void gpr_slice_buffer_trim_end(gpr_slice_buffer *src, size_t n,
91
- gpr_slice_buffer *garbage);
92
- /* move the first n bytes of src into dst */
93
- void gpr_slice_buffer_move_first(gpr_slice_buffer *src, size_t n,
94
- gpr_slice_buffer *dst);
95
- /* take the first slice in the slice buffer */
96
- gpr_slice gpr_slice_buffer_take_first(gpr_slice_buffer *src);
97
-
98
- #ifdef __cplusplus
99
- }
100
- #endif
37
+ #include <grpc/impl/codegen/slice_buffer.h>
101
38
 
102
39
  #endif /* GRPC_SUPPORT_SLICE_BUFFER_H */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -42,7 +42,7 @@ extern "C" {
42
42
 
43
43
  /* Returns a copy of src that can be passed to gpr_free().
44
44
  If allocation fails or if src is NULL, returns NULL. */
45
- char *gpr_strdup(const char *src);
45
+ GPR_API char *gpr_strdup(const char *src);
46
46
 
47
47
  /* printf to a newly-allocated string. The set of supported formats may vary
48
48
  between platforms.
@@ -52,7 +52,7 @@ char *gpr_strdup(const char *src);
52
52
 
53
53
  On error, returns -1 and sets *strp to NULL. If the format string is bad,
54
54
  the result is undefined. */
55
- int gpr_asprintf(char **strp, const char *format, ...);
55
+ GPR_API int gpr_asprintf(char **strp, const char *format, ...);
56
56
 
57
57
  #ifdef __cplusplus
58
58
  }
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -34,6 +34,8 @@
34
34
  #ifndef GRPC_SUPPORT_SUBPROCESS_H
35
35
  #define GRPC_SUPPORT_SUBPROCESS_H
36
36
 
37
+ #include <grpc/support/port_platform.h>
38
+
37
39
  #ifdef __cplusplus
38
40
  extern "C" {
39
41
  #endif
@@ -41,14 +43,14 @@ extern "C" {
41
43
  typedef struct gpr_subprocess gpr_subprocess;
42
44
 
43
45
  /* .exe on windows, empty on unices */
44
- const char *gpr_subprocess_binary_extension();
46
+ GPR_API const char *gpr_subprocess_binary_extension();
45
47
 
46
- gpr_subprocess *gpr_subprocess_create(int argc, const char **argv);
48
+ GPR_API gpr_subprocess *gpr_subprocess_create(int argc, const char **argv);
47
49
  /* if subprocess has not been joined, kill it */
48
- void gpr_subprocess_destroy(gpr_subprocess *p);
50
+ GPR_API void gpr_subprocess_destroy(gpr_subprocess *p);
49
51
  /* returns exit status; can be called at most once */
50
- int gpr_subprocess_join(gpr_subprocess *p);
51
- void gpr_subprocess_interrupt(gpr_subprocess *p);
52
+ GPR_API int gpr_subprocess_join(gpr_subprocess *p);
53
+ GPR_API void gpr_subprocess_interrupt(gpr_subprocess *p);
52
54
 
53
55
  #ifdef __cplusplus
54
56
  } // extern "C"
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -33,283 +33,7 @@
33
33
 
34
34
  #ifndef GRPC_SUPPORT_SYNC_H
35
35
  #define GRPC_SUPPORT_SYNC_H
36
- /* Synchronization primitives for GPR.
37
36
 
38
- 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/support/port_platform.h>
57
- #include <grpc/support/sync_generic.h>
58
-
59
- #if defined(GPR_POSIX_SYNC)
60
- #include <grpc/support/sync_posix.h>
61
- #elif defined(GPR_WIN32)
62
- #include <grpc/support/sync_win32.h>
63
- #elif !defined(GPR_CUSTOM_SYNC)
64
- #error Unable to determine platform for sync
65
- #endif
66
-
67
- #include <grpc/support/time.h> /* for gpr_timespec */
68
-
69
- #ifdef __cplusplus
70
- extern "C" {
71
- #endif
72
-
73
- /* --- Mutex interface ---
74
-
75
- At most one thread may hold an exclusive lock on a mutex at any given time.
76
- Actions taken by a thread that holds a mutex exclusively happen after
77
- actions taken by all previous holders of the mutex. Variables of type
78
- gpr_mu are uninitialized when first declared. */
79
-
80
- /* Initialize *mu. Requires: *mu uninitialized. */
81
- void gpr_mu_init(gpr_mu *mu);
82
-
83
- /* Cause *mu no longer to be initialized, freeing any memory in use. Requires:
84
- *mu initialized; no other concurrent operation on *mu. */
85
- void gpr_mu_destroy(gpr_mu *mu);
86
-
87
- /* Wait until no thread has a lock on *mu, cause the calling thread to own an
88
- exclusive lock on *mu, then return. May block indefinitely or crash if the
89
- calling thread has a lock on *mu. Requires: *mu initialized. */
90
- void gpr_mu_lock(gpr_mu *mu);
91
-
92
- /* Release an exclusive lock on *mu held by the calling thread. Requires: *mu
93
- initialized; the calling thread holds an exclusive lock on *mu. */
94
- void gpr_mu_unlock(gpr_mu *mu);
95
-
96
- /* Without blocking, attempt to acquire an exclusive lock on *mu for the
97
- calling thread, then return non-zero iff success. Fail, if any thread holds
98
- the lock; succeeds with high probability if no thread holds the lock.
99
- Requires: *mu initialized. */
100
- int gpr_mu_trylock(gpr_mu *mu);
101
-
102
- /* --- Condition variable interface ---
103
-
104
- A while-loop should be used with gpr_cv_wait() when waiting for conditions
105
- to become true. See the example below. Variables of type gpr_cv are
106
- uninitialized when first declared. */
107
-
108
- /* Initialize *cv. Requires: *cv uninitialized. */
109
- void gpr_cv_init(gpr_cv *cv);
110
-
111
- /* Cause *cv no longer to be initialized, freeing any memory in use. Requires:
112
- *cv initialized; no other concurrent operation on *cv.*/
113
- void gpr_cv_destroy(gpr_cv *cv);
114
-
115
- /* Atomically release *mu and wait on *cv. When the calling thread is woken
116
- from *cv or the deadline abs_deadline is exceeded, execute gpr_mu_lock(mu)
117
- and return whether the deadline was exceeded. Use
118
- abs_deadline==gpr_inf_future for no deadline. May return even when not
119
- woken explicitly. Requires: *mu and *cv initialized; the calling thread
120
- holds an exclusive lock on *mu. */
121
- int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline);
122
-
123
- /* If any threads are waiting on *cv, wake at least one.
124
- Clients may treat this as an optimization of gpr_cv_broadcast()
125
- for use in the case where waking more than one waiter is not useful.
126
- Requires: *cv initialized. */
127
- void gpr_cv_signal(gpr_cv *cv);
128
-
129
- /* Wake all threads waiting on *cv. Requires: *cv initialized. */
130
- void gpr_cv_broadcast(gpr_cv *cv);
131
-
132
- /* --- One-time initialization ---
133
-
134
- gpr_once must be declared with static storage class, and initialized with
135
- GPR_ONCE_INIT. e.g.,
136
- static gpr_once once_var = GPR_ONCE_INIT; */
137
-
138
- /* Ensure that (*init_routine)() has been called exactly once (for the
139
- specified gpr_once instance) and then return.
140
- If multiple threads call gpr_once() on the same gpr_once instance, one of
141
- them will call (*init_routine)(), and the others will block until that call
142
- finishes.*/
143
- void gpr_once_init(gpr_once *once, void (*init_routine)(void));
144
-
145
- /* --- One-time event notification ---
146
-
147
- These operations act on a gpr_event, which should be initialized with
148
- gpr_ev_init(), or with GPR_EVENT_INIT if static, e.g.,
149
- static gpr_event event_var = GPR_EVENT_INIT;
150
- It requires no destruction. */
151
-
152
- /* Initialize *ev. */
153
- void gpr_event_init(gpr_event *ev);
154
-
155
- /* Set *ev so that gpr_event_get() and gpr_event_wait() will return value.
156
- Requires: *ev initialized; value != NULL; no prior or concurrent calls to
157
- gpr_event_set(ev, ...) since initialization. */
158
- void gpr_event_set(gpr_event *ev, void *value);
159
-
160
- /* Return the value set by gpr_event_set(ev, ...), or NULL if no such call has
161
- completed. If the result is non-NULL, all operations that occurred prior to
162
- the gpr_event_set(ev, ...) set will be visible after this call returns.
163
- Requires: *ev initialized. This operation is faster than acquiring a mutex
164
- on most platforms. */
165
- void *gpr_event_get(gpr_event *ev);
166
-
167
- /* Wait until *ev is set by gpr_event_set(ev, ...), or abs_deadline is
168
- exceeded, then return gpr_event_get(ev). Requires: *ev initialized. Use
169
- abs_deadline==gpr_inf_future for no deadline. When the event has been
170
- signalled before the call, this operation is faster than acquiring a mutex
171
- on most platforms. */
172
- void *gpr_event_wait(gpr_event *ev, gpr_timespec abs_deadline);
173
-
174
- /* --- Reference counting ---
175
-
176
- These calls act on the type gpr_refcount. It requires no destruction. */
177
-
178
- /* Initialize *r to value n. */
179
- void gpr_ref_init(gpr_refcount *r, int n);
180
-
181
- /* Increment the reference count *r. Requires *r initialized. */
182
- void gpr_ref(gpr_refcount *r);
183
-
184
- /* Increment the reference count *r by n. Requires *r initialized, n > 0. */
185
- void gpr_refn(gpr_refcount *r, int n);
186
-
187
- /* Decrement the reference count *r and return non-zero iff it has reached
188
- zero. . Requires *r initialized. */
189
- int gpr_unref(gpr_refcount *r);
190
-
191
- /* --- Stats counters ---
192
-
193
- These calls act on the integral type gpr_stats_counter. It requires no
194
- destruction. Static instances may be initialized with
195
- gpr_stats_counter c = GPR_STATS_INIT;
196
- Beware: These operations do not imply memory barriers. Do not use them to
197
- synchronize other events. */
198
-
199
- /* Initialize *c to the value n. */
200
- void gpr_stats_init(gpr_stats_counter *c, gpr_intptr n);
201
-
202
- /* *c += inc. Requires: *c initialized. */
203
- void gpr_stats_inc(gpr_stats_counter *c, gpr_intptr inc);
204
-
205
- /* Return *c. Requires: *c initialized. */
206
- gpr_intptr gpr_stats_read(const gpr_stats_counter *c);
207
-
208
- /* ==================Example use of interface===================
209
- A producer-consumer queue of up to N integers,
210
- illustrating the use of the calls in this interface. */
211
- #if 0
212
-
213
- #define N 4
214
-
215
- typedef struct queue {
216
- gpr_cv non_empty; /* Signalled when length becomes non-zero. */
217
- gpr_cv non_full; /* Signalled when length becomes non-N. */
218
- gpr_mu mu; /* Protects all fields below.
219
- (That is, except during initialization or
220
- destruction, the fields below should be accessed
221
- only by a thread that holds mu.) */
222
- int head; /* Index of head of queue 0..N-1. */
223
- int length; /* Number of valid elements in queue 0..N. */
224
- int elem[N]; /* elem[head .. head+length-1] are queue elements. */
225
- } queue;
226
-
227
- /* Initialize *q. */
228
- void queue_init(queue *q) {
229
- gpr_mu_init(&q->mu);
230
- gpr_cv_init(&q->non_empty);
231
- gpr_cv_init(&q->non_full);
232
- q->head = 0;
233
- q->length = 0;
234
- }
235
-
236
- /* Free storage associated with *q. */
237
- void queue_destroy(queue *q) {
238
- gpr_mu_destroy(&q->mu);
239
- gpr_cv_destroy(&q->non_empty);
240
- gpr_cv_destroy(&q->non_full);
241
- }
242
-
243
- /* Wait until there is room in *q, then append x to *q. */
244
- void queue_append(queue *q, int x) {
245
- gpr_mu_lock(&q->mu);
246
- /* To wait for a predicate without a deadline, loop on the negation of the
247
- predicate, and use gpr_cv_wait(..., gpr_inf_future) inside the loop
248
- to release the lock, wait, and reacquire on each iteration. Code that
249
- makes the condition true should use gpr_cv_broadcast() on the
250
- corresponding condition variable. The predicate must be on state
251
- protected by the lock. */
252
- while (q->length == N) {
253
- gpr_cv_wait(&q->non_full, &q->mu, gpr_inf_future);
254
- }
255
- if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
256
- /* It's normal to use gpr_cv_broadcast() or gpr_signal() while
257
- holding the lock. */
258
- gpr_cv_broadcast(&q->non_empty);
259
- }
260
- q->elem[(q->head + q->length) % N] = x;
261
- q->length++;
262
- gpr_mu_unlock(&q->mu);
263
- }
264
-
265
- /* If it can be done without blocking, append x to *q and return non-zero.
266
- Otherwise return 0. */
267
- int queue_try_append(queue *q, int x) {
268
- int result = 0;
269
- if (gpr_mu_trylock(&q->mu)) {
270
- if (q->length != N) {
271
- if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
272
- gpr_cv_broadcast(&q->non_empty);
273
- }
274
- q->elem[(q->head + q->length) % N] = x;
275
- q->length++;
276
- result = 1;
277
- }
278
- gpr_mu_unlock(&q->mu);
279
- }
280
- return result;
281
- }
282
-
283
- /* Wait until the *q is non-empty or deadline abs_deadline passes. If the
284
- queue is non-empty, remove its head entry, place it in *head, and return
285
- non-zero. Otherwise return 0. */
286
- int queue_remove(queue *q, int *head, gpr_timespec abs_deadline) {
287
- int result = 0;
288
- gpr_mu_lock(&q->mu);
289
- /* To wait for a predicate with a deadline, loop on the negation of the
290
- predicate or until gpr_cv_wait() returns true. Code that makes
291
- the condition true should use gpr_cv_broadcast() on the corresponding
292
- condition variable. The predicate must be on state protected by the
293
- lock. */
294
- while (q->length == 0 &&
295
- !gpr_cv_wait(&q->non_empty, &q->mu, abs_deadline)) {
296
- }
297
- if (q->length != 0) { /* Queue is non-empty. */
298
- result = 1;
299
- if (q->length == N) { /* Wake threads blocked in queue_append(). */
300
- gpr_cv_broadcast(&q->non_full);
301
- }
302
- *head = q->elem[q->head];
303
- q->head = (q->head + 1) % N;
304
- q->length--;
305
- } /* else deadline exceeded */
306
- gpr_mu_unlock(&q->mu);
307
- return result;
308
- }
309
- #endif /* 0 */
310
-
311
- #ifdef __cplusplus
312
- }
313
- #endif
37
+ #include <grpc/impl/codegen/sync.h>
314
38
 
315
39
  #endif /* GRPC_SUPPORT_SYNC_H */