awesome-grpc-that-works 0.12.2 → 0.14.0.dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (724) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/Makefile +5783 -22121
  4. data/include/grpc/byte_buffer.h +2 -83
  5. data/include/grpc/census.h +173 -121
  6. data/include/grpc/compression.h +14 -38
  7. data/include/grpc/grpc.h +85 -434
  8. data/include/grpc/grpc_security.h +76 -46
  9. data/include/grpc/grpc_zookeeper.h +1 -1
  10. data/include/grpc/impl/codegen/alloc.h +74 -0
  11. data/include/grpc/impl/codegen/atm.h +92 -0
  12. data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
  13. data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
  14. data/include/grpc/impl/codegen/atm_win32.h +125 -0
  15. data/include/grpc/impl/codegen/byte_buffer.h +121 -0
  16. data/include/grpc/impl/codegen/compression_types.h +73 -0
  17. data/include/grpc/impl/codegen/connectivity_state.h +59 -0
  18. data/include/grpc/impl/codegen/grpc_types.h +378 -0
  19. data/include/grpc/impl/codegen/log.h +110 -0
  20. data/include/grpc/impl/codegen/port_platform.h +370 -0
  21. data/include/grpc/impl/codegen/propagation_bits.h +67 -0
  22. data/include/grpc/impl/codegen/slice.h +182 -0
  23. data/include/grpc/impl/codegen/slice_buffer.h +105 -0
  24. data/include/grpc/impl/codegen/status.h +163 -0
  25. data/include/grpc/impl/codegen/sync.h +316 -0
  26. data/include/grpc/impl/codegen/sync_generic.h +55 -0
  27. data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
  28. data/include/grpc/impl/codegen/sync_win32.h +49 -0
  29. data/include/grpc/impl/codegen/time.h +130 -0
  30. data/include/grpc/status.h +2 -126
  31. data/include/grpc/support/alloc.h +2 -35
  32. data/include/grpc/support/atm.h +2 -55
  33. data/include/grpc/support/atm_gcc_atomic.h +5 -38
  34. data/include/grpc/support/atm_gcc_sync.h +2 -50
  35. data/include/grpc/support/atm_win32.h +2 -88
  36. data/include/grpc/support/avl.h +10 -9
  37. data/include/grpc/support/cmdline.h +15 -13
  38. data/include/grpc/support/cpu.h +5 -3
  39. data/include/grpc/support/histogram.h +23 -20
  40. data/include/grpc/support/host_port.h +5 -3
  41. data/include/grpc/support/log.h +2 -71
  42. data/include/grpc/support/log_win32.h +2 -2
  43. data/include/grpc/support/port_platform.h +2 -319
  44. data/include/grpc/support/slice.h +2 -145
  45. data/include/grpc/support/slice_buffer.h +2 -65
  46. data/include/grpc/support/string_util.h +3 -3
  47. data/include/grpc/support/subprocess.h +8 -6
  48. data/include/grpc/support/sync.h +2 -278
  49. data/include/grpc/support/sync_generic.h +2 -18
  50. data/include/grpc/support/sync_posix.h +2 -10
  51. data/include/grpc/support/sync_win32.h +2 -12
  52. data/include/grpc/support/thd.h +11 -11
  53. data/include/grpc/support/time.h +2 -91
  54. data/include/grpc/support/tls.h +1 -1
  55. data/include/grpc/support/tls_gcc.h +1 -1
  56. data/include/grpc/support/tls_msvc.h +1 -1
  57. data/include/grpc/support/tls_pthread.h +2 -2
  58. data/include/grpc/support/useful.h +3 -1
  59. data/src/boringssl/err_data.c +1252 -0
  60. data/src/core/census/context.c +471 -8
  61. data/src/core/census/grpc_filter.c +5 -5
  62. data/src/core/census/initialize.c +4 -7
  63. data/src/core/census/mlog.c +600 -0
  64. data/src/core/census/mlog.h +95 -0
  65. data/src/core/census/operation.c +2 -2
  66. data/src/core/census/placeholders.c +109 -0
  67. data/src/core/census/rpc_metric_id.h +6 -6
  68. data/src/core/census/tracing.c +1 -1
  69. data/src/core/channel/channel_args.c +71 -9
  70. data/src/core/channel/channel_args.h +7 -1
  71. data/src/core/channel/channel_stack.c +1 -1
  72. data/src/core/channel/client_channel.c +33 -30
  73. data/src/core/channel/client_uchannel.c +3 -3
  74. data/src/core/channel/compress_filter.c +8 -8
  75. data/src/core/channel/http_client_filter.c +4 -4
  76. data/src/core/channel/http_server_filter.c +11 -11
  77. data/src/core/channel/subchannel_call_holder.c +11 -11
  78. data/src/core/client_config/connector.c +3 -2
  79. data/src/core/client_config/connector.h +2 -2
  80. data/src/core/client_config/lb_policies/load_balancer_api.c +163 -0
  81. data/src/core/client_config/lb_policies/load_balancer_api.h +85 -0
  82. data/src/core/client_config/lb_policies/pick_first.c +57 -40
  83. data/src/core/client_config/lb_policies/round_robin.c +14 -15
  84. data/src/core/client_config/lb_policy.c +3 -3
  85. data/src/core/client_config/lb_policy.h +3 -2
  86. data/src/core/client_config/resolvers/dns_resolver.c +3 -3
  87. data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
  88. data/src/core/client_config/subchannel.c +84 -39
  89. data/src/core/client_config/subchannel.h +15 -6
  90. data/src/core/client_config/subchannel_index.c +261 -0
  91. data/src/core/client_config/subchannel_index.h +77 -0
  92. data/src/core/compression/{algorithm.c → compression_algorithm.c} +3 -3
  93. data/src/core/httpcli/format_request.c +1 -1
  94. data/src/core/httpcli/httpcli.c +18 -16
  95. data/src/core/httpcli/httpcli.h +3 -2
  96. data/src/core/httpcli/httpcli_security_connector.c +9 -10
  97. data/src/core/httpcli/parser.c +7 -7
  98. data/src/core/httpcli/parser.h +1 -1
  99. data/src/core/iomgr/closure.c +7 -7
  100. data/src/core/iomgr/closure.h +6 -5
  101. data/src/core/iomgr/exec_ctx.c +12 -8
  102. data/src/core/iomgr/exec_ctx.h +12 -5
  103. data/src/core/iomgr/executor.c +4 -4
  104. data/src/core/iomgr/executor.h +2 -2
  105. data/src/core/iomgr/fd_posix.c +32 -19
  106. data/src/core/iomgr/fd_posix.h +7 -4
  107. data/src/core/iomgr/iocp_windows.c +7 -9
  108. data/src/core/iomgr/iomgr.c +2 -2
  109. data/src/core/iomgr/pollset.h +9 -10
  110. data/src/core/iomgr/pollset_multipoller_with_epoll.c +71 -5
  111. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +9 -5
  112. data/src/core/iomgr/pollset_posix.c +44 -49
  113. data/src/core/iomgr/pollset_posix.h +14 -8
  114. data/src/core/iomgr/pollset_set.h +3 -9
  115. data/src/core/iomgr/pollset_set_posix.c +23 -3
  116. data/src/core/iomgr/pollset_set_posix.h +2 -18
  117. data/src/core/iomgr/pollset_set_windows.c +3 -3
  118. data/src/core/iomgr/pollset_set_windows.h +2 -2
  119. data/src/core/iomgr/pollset_windows.c +29 -37
  120. data/src/core/iomgr/pollset_windows.h +1 -5
  121. data/src/core/iomgr/resolve_address_posix.c +2 -2
  122. data/src/core/iomgr/resolve_address_windows.c +2 -2
  123. data/src/core/iomgr/sockaddr_utils.c +6 -6
  124. data/src/core/iomgr/sockaddr_win32.h +1 -6
  125. data/src/core/iomgr/tcp_client_posix.c +14 -12
  126. data/src/core/iomgr/tcp_client_windows.c +4 -4
  127. data/src/core/iomgr/tcp_posix.c +18 -10
  128. data/src/core/iomgr/tcp_posix.h +7 -1
  129. data/src/core/iomgr/tcp_server.h +40 -20
  130. data/src/core/iomgr/tcp_server_posix.c +106 -49
  131. data/src/core/iomgr/tcp_server_windows.c +98 -49
  132. data/src/core/iomgr/tcp_windows.c +11 -15
  133. data/src/core/iomgr/timer.c +10 -11
  134. data/src/core/iomgr/timer.h +22 -2
  135. data/src/core/iomgr/timer_heap.c +10 -10
  136. data/src/core/iomgr/timer_heap.h +2 -2
  137. data/src/core/iomgr/udp_server.c +7 -16
  138. data/src/core/iomgr/udp_server.h +2 -9
  139. data/src/core/iomgr/workqueue.h +2 -4
  140. data/src/core/iomgr/workqueue_posix.c +4 -3
  141. data/src/core/iomgr/workqueue_posix.h +3 -1
  142. data/src/core/json/json_reader.c +11 -12
  143. data/src/core/json/json_reader.h +4 -4
  144. data/src/core/json/json_string.c +19 -19
  145. data/src/core/json/json_writer.c +7 -9
  146. data/src/core/profiling/basic_timers.c +1 -1
  147. data/src/core/proto/grpc/lb/v0/load_balancer.pb.c +119 -0
  148. data/src/core/proto/grpc/lb/v0/load_balancer.pb.h +182 -0
  149. data/src/core/security/{base64.c → b64.c} +10 -10
  150. data/src/core/security/{base64.h → b64.h} +1 -1
  151. data/src/core/security/client_auth_filter.c +4 -5
  152. data/src/core/security/credentials.c +17 -10
  153. data/src/core/security/credentials.h +3 -3
  154. data/src/core/security/google_default_credentials.c +27 -22
  155. data/src/core/security/handshake.c +21 -12
  156. data/src/core/security/handshake.h +2 -1
  157. data/src/core/security/json_token.c +14 -8
  158. data/src/core/security/jwt_verifier.c +4 -3
  159. data/src/core/security/secure_endpoint.c +16 -16
  160. data/src/core/security/security_connector.c +131 -81
  161. data/src/core/security/security_connector.h +47 -27
  162. data/src/core/security/security_context.c +8 -3
  163. data/src/core/security/server_auth_filter.c +5 -5
  164. data/src/core/security/server_secure_chttp2.c +36 -37
  165. data/src/core/statistics/census_interface.h +2 -2
  166. data/src/core/statistics/census_rpc_stats.h +3 -3
  167. data/src/core/support/alloc.c +1 -1
  168. data/src/core/support/avl.c +2 -2
  169. data/src/core/support/cpu_posix.c +2 -2
  170. data/src/core/support/env_linux.c +28 -1
  171. data/src/core/support/env_win32.c +15 -7
  172. data/src/core/support/histogram.c +5 -5
  173. data/src/core/support/{file.c → load_file.c} +2 -2
  174. data/src/core/support/{file.h → load_file.h} +4 -12
  175. data/src/core/support/log_posix.c +1 -1
  176. data/src/core/support/log_win32.c +4 -3
  177. data/src/core/support/murmur_hash.c +11 -11
  178. data/src/core/support/murmur_hash.h +1 -1
  179. data/src/core/support/slice.c +11 -11
  180. data/src/core/support/slice_buffer.c +6 -6
  181. data/src/core/support/stack_lockfree.c +20 -10
  182. data/src/core/support/string.c +15 -15
  183. data/src/core/support/string.h +5 -5
  184. data/src/core/support/string_win32.c +5 -5
  185. data/src/core/support/subprocess_windows.c +141 -0
  186. data/src/core/support/sync.c +4 -4
  187. data/src/core/support/sync_posix.c +2 -2
  188. data/src/core/support/sync_win32.c +10 -5
  189. data/src/core/support/time.c +29 -29
  190. data/src/core/support/time_posix.c +15 -6
  191. data/src/core/support/time_precise.c +2 -2
  192. data/src/core/support/time_win32.c +18 -9
  193. data/src/core/support/tls_pthread.c +1 -1
  194. data/src/core/support/tmpfile.h +55 -0
  195. data/src/core/support/{file_posix.c → tmpfile_posix.c} +2 -2
  196. data/src/core/support/{file_win32.c → tmpfile_win32.c} +2 -2
  197. data/src/core/support/wrap_memcpy.c +53 -0
  198. data/src/core/surface/alarm.c +84 -0
  199. data/src/core/surface/byte_buffer_reader.c +1 -1
  200. data/src/core/surface/call.c +175 -116
  201. data/src/core/surface/call.h +2 -2
  202. data/src/core/surface/call_test_only.h +2 -2
  203. data/src/core/surface/channel.c +9 -9
  204. data/src/core/surface/channel.h +1 -1
  205. data/src/core/surface/channel_connectivity.c +3 -3
  206. data/src/core/surface/channel_create.c +4 -4
  207. data/src/core/surface/channel_ping.c +2 -2
  208. data/src/core/surface/completion_queue.c +84 -53
  209. data/src/core/surface/completion_queue.h +1 -1
  210. data/src/core/surface/init.c +11 -5
  211. data/src/core/surface/lame_client.c +2 -3
  212. data/src/core/surface/secure_channel_create.c +9 -10
  213. data/src/core/surface/server.c +30 -30
  214. data/src/core/surface/server_chttp2.c +8 -8
  215. data/src/core/surface/server_create.c +1 -4
  216. data/src/core/surface/validate_metadata.c +4 -4
  217. data/src/core/surface/version.c +2 -2
  218. data/src/core/transport/byte_stream.c +8 -6
  219. data/src/core/transport/byte_stream.h +6 -5
  220. data/src/core/transport/chttp2/bin_encoder.c +29 -29
  221. data/src/core/transport/chttp2/frame_data.c +29 -26
  222. data/src/core/transport/chttp2/frame_data.h +6 -6
  223. data/src/core/transport/chttp2/frame_goaway.c +30 -30
  224. data/src/core/transport/chttp2/frame_goaway.h +6 -6
  225. data/src/core/transport/chttp2/frame_ping.c +6 -6
  226. data/src/core/transport/chttp2/frame_ping.h +5 -5
  227. data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
  228. data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
  229. data/src/core/transport/chttp2/frame_settings.c +30 -30
  230. data/src/core/transport/chttp2/frame_settings.h +13 -13
  231. data/src/core/transport/chttp2/frame_window_update.c +17 -18
  232. data/src/core/transport/chttp2/frame_window_update.h +5 -7
  233. data/src/core/transport/chttp2/hpack_encoder.c +69 -73
  234. data/src/core/transport/chttp2/hpack_encoder.h +16 -16
  235. data/src/core/transport/chttp2/hpack_parser.c +167 -167
  236. data/src/core/transport/chttp2/hpack_parser.h +16 -16
  237. data/src/core/transport/chttp2/hpack_table.c +13 -13
  238. data/src/core/transport/chttp2/hpack_table.h +11 -11
  239. data/src/core/transport/chttp2/internal.h +103 -87
  240. data/src/core/transport/chttp2/parsing.c +25 -25
  241. data/src/core/transport/chttp2/stream_lists.c +38 -1
  242. data/src/core/transport/chttp2/stream_map.c +13 -14
  243. data/src/core/transport/chttp2/stream_map.h +6 -7
  244. data/src/core/transport/chttp2/timeout_encoding.c +19 -16
  245. data/src/core/transport/chttp2/varint.c +8 -9
  246. data/src/core/transport/chttp2/varint.h +7 -8
  247. data/src/core/transport/chttp2/writing.c +25 -22
  248. data/src/core/transport/chttp2_transport.c +147 -100
  249. data/src/core/transport/connectivity_state.c +6 -6
  250. data/src/core/transport/metadata.c +18 -18
  251. data/src/core/transport/metadata.h +5 -5
  252. data/src/core/transport/static_metadata.c +32 -33
  253. data/src/core/transport/static_metadata.h +8 -8
  254. data/src/core/transport/transport.c +6 -5
  255. data/src/core/transport/transport.h +17 -1
  256. data/src/core/tsi/fake_transport_security.c +7 -7
  257. data/src/core/tsi/ssl_transport_security.c +6 -4
  258. data/src/core/{iomgr/timer_internal.h → tsi/ssl_types.h} +19 -25
  259. data/src/ruby/ext/grpc/extconf.rb +52 -14
  260. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
  261. data/src/ruby/ext/grpc/rb_call.c +7 -3
  262. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
  263. data/src/ruby/ext/grpc/rb_channel.c +4 -2
  264. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  265. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
  266. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
  267. data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
  268. data/src/ruby/ext/grpc/rb_grpc.c +28 -19
  269. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +562 -0
  270. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +846 -0
  271. data/src/ruby/ext/grpc/rb_loader.c +72 -0
  272. data/src/ruby/ext/grpc/rb_loader.h +40 -0
  273. data/src/ruby/ext/grpc/rb_server.c +3 -1
  274. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
  275. data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
  276. data/src/ruby/lib/grpc/errors.rb +2 -2
  277. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  278. data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
  279. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  280. data/src/ruby/lib/grpc/grpc.rb +34 -0
  281. data/src/ruby/lib/grpc/version.rb +1 -1
  282. data/src/ruby/pb/README.md +2 -2
  283. data/src/ruby/pb/generate_proto_ruby.sh +2 -2
  284. data/src/ruby/pb/grpc/health/checker.rb +11 -11
  285. data/src/ruby/pb/grpc/health/v1/health.rb +28 -0
  286. data/src/ruby/pb/grpc/health/{v1alpha → v1}/health_services.rb +4 -4
  287. data/src/ruby/spec/client_server_spec.rb +2 -1
  288. data/src/ruby/spec/pb/health/checker_spec.rb +23 -37
  289. data/third_party/boringssl/crypto/aes/aes.c +1142 -0
  290. data/third_party/boringssl/crypto/aes/internal.h +87 -0
  291. data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
  292. data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
  293. data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
  294. data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
  295. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
  296. data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
  297. data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
  298. data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
  299. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
  300. data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
  301. data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
  302. data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
  303. data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
  304. data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
  305. data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
  306. data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
  307. data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
  308. data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
  309. data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
  310. data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
  311. data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
  312. data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
  313. data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
  314. data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
  315. data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
  316. data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
  317. data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
  318. data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
  319. data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
  320. data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
  321. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
  322. data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
  323. data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
  324. data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
  325. data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
  326. data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
  327. data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
  328. data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
  329. data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
  330. data/third_party/boringssl/crypto/base64/base64.c +478 -0
  331. data/third_party/boringssl/crypto/bio/bio.c +608 -0
  332. data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
  333. data/third_party/boringssl/crypto/bio/buffer.c +496 -0
  334. data/third_party/boringssl/crypto/bio/connect.c +544 -0
  335. data/third_party/boringssl/crypto/bio/fd.c +270 -0
  336. data/third_party/boringssl/crypto/bio/file.c +349 -0
  337. data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
  338. data/third_party/boringssl/crypto/bio/internal.h +108 -0
  339. data/third_party/boringssl/crypto/bio/pair.c +803 -0
  340. data/third_party/boringssl/crypto/bio/printf.c +119 -0
  341. data/third_party/boringssl/crypto/bio/socket.c +195 -0
  342. data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
  343. data/third_party/boringssl/crypto/bn/add.c +377 -0
  344. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
  345. data/third_party/boringssl/crypto/bn/bn.c +341 -0
  346. data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
  347. data/third_party/boringssl/crypto/bn/cmp.c +200 -0
  348. data/third_party/boringssl/crypto/bn/convert.c +597 -0
  349. data/third_party/boringssl/crypto/bn/ctx.c +311 -0
  350. data/third_party/boringssl/crypto/bn/div.c +625 -0
  351. data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
  352. data/third_party/boringssl/crypto/bn/gcd.c +711 -0
  353. data/third_party/boringssl/crypto/bn/generic.c +1019 -0
  354. data/third_party/boringssl/crypto/bn/internal.h +294 -0
  355. data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
  356. data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
  357. data/third_party/boringssl/crypto/bn/mul.c +888 -0
  358. data/third_party/boringssl/crypto/bn/prime.c +845 -0
  359. data/third_party/boringssl/crypto/bn/random.c +326 -0
  360. data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
  361. data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
  362. data/third_party/boringssl/crypto/bn/shift.c +299 -0
  363. data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
  364. data/third_party/boringssl/crypto/buf/buf.c +235 -0
  365. data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
  366. data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
  367. data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
  368. data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
  369. data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
  370. data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
  371. data/third_party/boringssl/crypto/cipher/aead.c +167 -0
  372. data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
  373. data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
  374. data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
  375. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
  376. data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
  377. data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
  378. data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
  379. data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
  380. data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
  381. data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
  382. data/third_party/boringssl/crypto/cipher/internal.h +164 -0
  383. data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
  384. data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
  385. data/third_party/boringssl/crypto/conf/conf.c +778 -0
  386. data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
  387. data/third_party/boringssl/crypto/conf/internal.h +31 -0
  388. data/third_party/boringssl/crypto/cpu-arm.c +199 -0
  389. data/third_party/boringssl/crypto/cpu-intel.c +261 -0
  390. data/third_party/boringssl/crypto/crypto.c +140 -0
  391. data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
  392. data/third_party/boringssl/crypto/des/des.c +771 -0
  393. data/third_party/boringssl/crypto/des/internal.h +212 -0
  394. data/third_party/boringssl/crypto/dh/check.c +180 -0
  395. data/third_party/boringssl/crypto/dh/dh.c +463 -0
  396. data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
  397. data/third_party/boringssl/crypto/dh/internal.h +80 -0
  398. data/third_party/boringssl/crypto/dh/params.c +301 -0
  399. data/third_party/boringssl/crypto/digest/digest.c +248 -0
  400. data/third_party/boringssl/crypto/digest/digests.c +321 -0
  401. data/third_party/boringssl/crypto/digest/internal.h +112 -0
  402. data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
  403. data/third_party/boringssl/crypto/directory.h +66 -0
  404. data/third_party/boringssl/crypto/directory_posix.c +108 -0
  405. data/third_party/boringssl/crypto/directory_win.c +144 -0
  406. data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
  407. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
  408. data/third_party/boringssl/crypto/dsa/internal.h +78 -0
  409. data/third_party/boringssl/crypto/ec/ec.c +889 -0
  410. data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
  411. data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
  412. data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
  413. data/third_party/boringssl/crypto/ec/internal.h +318 -0
  414. data/third_party/boringssl/crypto/ec/oct.c +416 -0
  415. data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
  416. data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
  417. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
  418. data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
  419. data/third_party/boringssl/crypto/ec/simple.c +1313 -0
  420. data/third_party/boringssl/crypto/ec/util-64.c +183 -0
  421. data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
  422. data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
  423. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
  424. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
  425. data/third_party/boringssl/crypto/engine/engine.c +96 -0
  426. data/third_party/boringssl/crypto/err/err.c +756 -0
  427. data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
  428. data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
  429. data/third_party/boringssl/crypto/evp/evp.c +411 -0
  430. data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
  431. data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
  432. data/third_party/boringssl/crypto/evp/internal.h +278 -0
  433. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
  434. data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
  435. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
  436. data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
  437. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
  438. data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
  439. data/third_party/boringssl/crypto/evp/sign.c +151 -0
  440. data/third_party/boringssl/crypto/ex_data.c +294 -0
  441. data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
  442. data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
  443. data/third_party/boringssl/crypto/internal.h +532 -0
  444. data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
  445. data/third_party/boringssl/crypto/md4/md4.c +225 -0
  446. data/third_party/boringssl/crypto/md5/md5.c +275 -0
  447. data/third_party/boringssl/crypto/mem.c +200 -0
  448. data/third_party/boringssl/crypto/modes/cbc.c +216 -0
  449. data/third_party/boringssl/crypto/modes/cfb.c +231 -0
  450. data/third_party/boringssl/crypto/modes/ctr.c +226 -0
  451. data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
  452. data/third_party/boringssl/crypto/modes/internal.h +370 -0
  453. data/third_party/boringssl/crypto/modes/ofb.c +108 -0
  454. data/third_party/boringssl/crypto/obj/obj.c +664 -0
  455. data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
  456. data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
  457. data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
  458. data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
  459. data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
  460. data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
  461. data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
  462. data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
  463. data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
  464. data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
  465. data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
  466. data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
  467. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
  468. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
  469. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
  470. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
  471. data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
  472. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
  473. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
  474. data/third_party/boringssl/crypto/rand/internal.h +32 -0
  475. data/third_party/boringssl/crypto/rand/rand.c +239 -0
  476. data/third_party/boringssl/crypto/rand/urandom.c +223 -0
  477. data/third_party/boringssl/crypto/rand/windows.c +56 -0
  478. data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
  479. data/third_party/boringssl/crypto/refcount_c11.c +67 -0
  480. data/third_party/boringssl/crypto/refcount_lock.c +53 -0
  481. data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
  482. data/third_party/boringssl/crypto/rsa/internal.h +164 -0
  483. data/third_party/boringssl/crypto/rsa/padding.c +711 -0
  484. data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
  485. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
  486. data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
  487. data/third_party/boringssl/crypto/sha/sha1.c +337 -0
  488. data/third_party/boringssl/crypto/sha/sha256.c +327 -0
  489. data/third_party/boringssl/crypto/sha/sha512.c +607 -0
  490. data/third_party/boringssl/crypto/stack/stack.c +386 -0
  491. data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
  492. data/third_party/boringssl/crypto/test/test_util.h +35 -0
  493. data/third_party/boringssl/crypto/thread.c +101 -0
  494. data/third_party/boringssl/crypto/thread_none.c +55 -0
  495. data/third_party/boringssl/crypto/thread_pthread.c +167 -0
  496. data/third_party/boringssl/crypto/thread_win.c +282 -0
  497. data/third_party/boringssl/crypto/time_support.c +212 -0
  498. data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
  499. data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
  500. data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
  501. data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
  502. data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
  503. data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
  504. data/third_party/boringssl/crypto/x509/by_file.c +295 -0
  505. data/third_party/boringssl/crypto/x509/charmap.h +15 -0
  506. data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
  507. data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
  508. data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
  509. data/third_party/boringssl/crypto/x509/t_req.c +246 -0
  510. data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
  511. data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
  512. data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
  513. data/third_party/boringssl/crypto/x509/x509.c +152 -0
  514. data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
  515. data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
  516. data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
  517. data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
  518. data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
  519. data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
  520. data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
  521. data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
  522. data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
  523. data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
  524. data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
  525. data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
  526. data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
  527. data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
  528. data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
  529. data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
  530. data/third_party/boringssl/crypto/x509/x509name.c +381 -0
  531. data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
  532. data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
  533. data/third_party/boringssl/crypto/x509/x509type.c +128 -0
  534. data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
  535. data/third_party/boringssl/crypto/x509/x_all.c +547 -0
  536. data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
  537. data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
  538. data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
  539. data/third_party/boringssl/crypto/x509/x_info.c +95 -0
  540. data/third_party/boringssl/crypto/x509/x_name.c +538 -0
  541. data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
  542. data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
  543. data/third_party/boringssl/crypto/x509/x_req.c +112 -0
  544. data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
  545. data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
  546. data/third_party/boringssl/crypto/x509/x_val.c +69 -0
  547. data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
  548. data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
  549. data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
  550. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
  551. data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
  552. data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
  553. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
  554. data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
  555. data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
  556. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
  557. data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
  558. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
  559. data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
  560. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
  561. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
  562. data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
  563. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
  564. data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
  565. data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
  566. data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
  567. data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
  568. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
  569. data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
  570. data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
  571. data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
  572. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
  573. data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
  574. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
  575. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
  576. data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
  577. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
  578. data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
  579. data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
  580. data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
  581. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
  582. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
  583. data/third_party/boringssl/include/openssl/aead.h +346 -0
  584. data/third_party/boringssl/include/openssl/aes.h +158 -0
  585. data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
  586. data/third_party/boringssl/include/openssl/asn1.h +1168 -0
  587. data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
  588. data/third_party/boringssl/include/openssl/asn1t.h +906 -0
  589. data/third_party/boringssl/include/openssl/base.h +261 -0
  590. data/third_party/boringssl/include/openssl/base64.h +184 -0
  591. data/third_party/boringssl/include/openssl/bio.h +902 -0
  592. data/third_party/boringssl/include/openssl/blowfish.h +93 -0
  593. data/third_party/boringssl/include/openssl/bn.h +885 -0
  594. data/third_party/boringssl/include/openssl/buf.h +118 -0
  595. data/third_party/boringssl/include/openssl/buffer.h +18 -0
  596. data/third_party/boringssl/include/openssl/bytestring.h +360 -0
  597. data/third_party/boringssl/include/openssl/cast.h +96 -0
  598. data/third_party/boringssl/include/openssl/chacha.h +37 -0
  599. data/third_party/boringssl/include/openssl/cipher.h +571 -0
  600. data/third_party/boringssl/include/openssl/cmac.h +76 -0
  601. data/third_party/boringssl/include/openssl/conf.h +145 -0
  602. data/third_party/boringssl/include/openssl/cpu.h +184 -0
  603. data/third_party/boringssl/include/openssl/crypto.h +68 -0
  604. data/third_party/boringssl/include/openssl/curve25519.h +88 -0
  605. data/third_party/boringssl/include/openssl/des.h +177 -0
  606. data/third_party/boringssl/include/openssl/dh.h +238 -0
  607. data/third_party/boringssl/include/openssl/digest.h +258 -0
  608. data/third_party/boringssl/include/openssl/dsa.h +343 -0
  609. data/third_party/boringssl/include/openssl/dtls1.h +16 -0
  610. data/third_party/boringssl/include/openssl/ec.h +355 -0
  611. data/third_party/boringssl/include/openssl/ec_key.h +280 -0
  612. data/third_party/boringssl/include/openssl/ecdh.h +102 -0
  613. data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
  614. data/third_party/boringssl/include/openssl/engine.h +98 -0
  615. data/third_party/boringssl/include/openssl/err.h +487 -0
  616. data/third_party/boringssl/include/openssl/evp.h +750 -0
  617. data/third_party/boringssl/include/openssl/ex_data.h +213 -0
  618. data/third_party/boringssl/include/openssl/hkdf.h +44 -0
  619. data/third_party/boringssl/include/openssl/hmac.h +160 -0
  620. data/third_party/boringssl/include/openssl/lhash.h +192 -0
  621. data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
  622. data/third_party/boringssl/include/openssl/md4.h +102 -0
  623. data/third_party/boringssl/include/openssl/md5.h +107 -0
  624. data/third_party/boringssl/include/openssl/mem.h +140 -0
  625. data/third_party/boringssl/include/openssl/obj.h +198 -0
  626. data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
  627. data/third_party/boringssl/include/openssl/objects.h +18 -0
  628. data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
  629. data/third_party/boringssl/include/openssl/opensslv.h +18 -0
  630. data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  631. data/third_party/boringssl/include/openssl/pem.h +521 -0
  632. data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  633. data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
  634. data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
  635. data/third_party/boringssl/include/openssl/poly1305.h +51 -0
  636. data/third_party/boringssl/include/openssl/pqueue.h +146 -0
  637. data/third_party/boringssl/include/openssl/rand.h +113 -0
  638. data/third_party/boringssl/include/openssl/rc4.h +90 -0
  639. data/third_party/boringssl/include/openssl/rsa.h +637 -0
  640. data/third_party/boringssl/include/openssl/safestack.h +16 -0
  641. data/third_party/boringssl/include/openssl/sha.h +256 -0
  642. data/third_party/boringssl/include/openssl/srtp.h +18 -0
  643. data/third_party/boringssl/include/openssl/ssl.h +4466 -0
  644. data/third_party/boringssl/include/openssl/ssl3.h +441 -0
  645. data/third_party/boringssl/include/openssl/stack.h +298 -0
  646. data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
  647. data/third_party/boringssl/include/openssl/thread.h +173 -0
  648. data/third_party/boringssl/include/openssl/time_support.h +90 -0
  649. data/third_party/boringssl/include/openssl/tls1.h +653 -0
  650. data/third_party/boringssl/include/openssl/type_check.h +91 -0
  651. data/third_party/boringssl/include/openssl/x509.h +1258 -0
  652. data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
  653. data/third_party/boringssl/include/openssl/x509v3.h +798 -0
  654. data/third_party/boringssl/ssl/custom_extensions.c +257 -0
  655. data/third_party/boringssl/ssl/d1_both.c +880 -0
  656. data/third_party/boringssl/ssl/d1_clnt.c +566 -0
  657. data/third_party/boringssl/ssl/d1_lib.c +340 -0
  658. data/third_party/boringssl/ssl/d1_meth.c +130 -0
  659. data/third_party/boringssl/ssl/d1_pkt.c +578 -0
  660. data/third_party/boringssl/ssl/d1_srtp.c +234 -0
  661. data/third_party/boringssl/ssl/d1_srvr.c +485 -0
  662. data/third_party/boringssl/ssl/dtls_record.c +308 -0
  663. data/third_party/boringssl/ssl/internal.h +1276 -0
  664. data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
  665. data/third_party/boringssl/ssl/s3_both.c +571 -0
  666. data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
  667. data/third_party/boringssl/ssl/s3_enc.c +494 -0
  668. data/third_party/boringssl/ssl/s3_lib.c +587 -0
  669. data/third_party/boringssl/ssl/s3_meth.c +166 -0
  670. data/third_party/boringssl/ssl/s3_pkt.c +732 -0
  671. data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
  672. data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
  673. data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
  674. data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
  675. data/third_party/boringssl/ssl/ssl_cert.c +539 -0
  676. data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
  677. data/third_party/boringssl/ssl/ssl_file.c +633 -0
  678. data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
  679. data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
  680. data/third_party/boringssl/ssl/ssl_session.c +764 -0
  681. data/third_party/boringssl/ssl/ssl_stat.c +591 -0
  682. data/third_party/boringssl/ssl/t1_enc.c +708 -0
  683. data/third_party/boringssl/ssl/t1_lib.c +2905 -0
  684. data/third_party/boringssl/ssl/test/async_bio.h +45 -0
  685. data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
  686. data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
  687. data/third_party/boringssl/ssl/test/test_config.h +108 -0
  688. data/third_party/boringssl/ssl/tls_record.c +342 -0
  689. data/third_party/nanopb/pb.h +547 -0
  690. data/third_party/nanopb/pb_common.c +97 -0
  691. data/third_party/nanopb/pb_common.h +42 -0
  692. data/third_party/nanopb/pb_decode.c +1319 -0
  693. data/third_party/nanopb/pb_decode.h +149 -0
  694. data/third_party/nanopb/pb_encode.c +690 -0
  695. data/third_party/nanopb/pb_encode.h +154 -0
  696. data/third_party/zlib/adler32.c +179 -0
  697. data/third_party/zlib/compress.c +80 -0
  698. data/third_party/zlib/crc32.c +425 -0
  699. data/third_party/zlib/crc32.h +441 -0
  700. data/third_party/zlib/deflate.c +1967 -0
  701. data/third_party/zlib/deflate.h +346 -0
  702. data/third_party/zlib/gzclose.c +25 -0
  703. data/third_party/zlib/gzguts.h +209 -0
  704. data/third_party/zlib/gzlib.c +634 -0
  705. data/third_party/zlib/gzread.c +594 -0
  706. data/third_party/zlib/gzwrite.c +577 -0
  707. data/third_party/zlib/infback.c +640 -0
  708. data/third_party/zlib/inffast.c +340 -0
  709. data/third_party/zlib/inffast.h +11 -0
  710. data/third_party/zlib/inffixed.h +94 -0
  711. data/third_party/zlib/inflate.c +1512 -0
  712. data/third_party/zlib/inflate.h +122 -0
  713. data/third_party/zlib/inftrees.c +306 -0
  714. data/third_party/zlib/inftrees.h +62 -0
  715. data/third_party/zlib/trees.c +1226 -0
  716. data/third_party/zlib/trees.h +128 -0
  717. data/third_party/zlib/uncompr.c +59 -0
  718. data/third_party/zlib/zconf.h +511 -0
  719. data/third_party/zlib/zlib.h +1768 -0
  720. data/third_party/zlib/zutil.c +324 -0
  721. data/third_party/zlib/zutil.h +253 -0
  722. metadata +504 -20
  723. data/Rakefile +0 -63
  724. data/src/ruby/pb/grpc/health/v1alpha/health.rb +0 -29
@@ -49,7 +49,7 @@ typedef void (*grpc_ioreq_completion_func)(grpc_exec_ctx *exec_ctx,
49
49
  void *user_data);
50
50
 
51
51
  grpc_call *grpc_call_create(grpc_channel *channel, grpc_call *parent_call,
52
- gpr_uint32 propagation_mask,
52
+ uint32_t propagation_mask,
53
53
  grpc_completion_queue *cq,
54
54
  const void *server_transport_data,
55
55
  grpc_mdelem **add_initial_metadata,
@@ -100,7 +100,7 @@ void *grpc_call_context_get(grpc_call *call, grpc_context_index elem);
100
100
  #define GRPC_CALL_LOG_BATCH(sev, call, ops, nops, tag) \
101
101
  if (grpc_api_trace) grpc_call_log_batch(sev, call, ops, nops, tag)
102
102
 
103
- gpr_uint8 grpc_call_is_client(grpc_call *call);
103
+ uint8_t grpc_call_is_client(grpc_call *call);
104
104
 
105
105
  #ifdef __cplusplus
106
106
  }
@@ -49,13 +49,13 @@ grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
49
49
  /** Return the message flags from \a call.
50
50
  *
51
51
  * \warning This function should \b only be used in test code. */
52
- gpr_uint32 grpc_call_test_only_get_message_flags(grpc_call *call);
52
+ uint32_t grpc_call_test_only_get_message_flags(grpc_call *call);
53
53
 
54
54
  /** Returns a bitset for the encodings (compression algorithms) supported by \a
55
55
  * call's peer.
56
56
  *
57
57
  * To be indexed by grpc_compression_algorithm enum values. */
58
- gpr_uint32 grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call *call);
58
+ uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call *call);
59
59
 
60
60
  #ifdef __cplusplus
61
61
  }
@@ -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
@@ -63,7 +63,7 @@ typedef struct registered_call {
63
63
 
64
64
  struct grpc_channel {
65
65
  int is_client;
66
- gpr_uint32 max_message_length;
66
+ uint32_t max_message_length;
67
67
  grpc_mdelem *default_authority;
68
68
 
69
69
  gpr_mu registered_call_mu;
@@ -80,7 +80,7 @@ struct grpc_channel {
80
80
  /* the protobuf library will (by default) start warning at 100megs */
81
81
  #define DEFAULT_MAX_MESSAGE_LENGTH (100 * 1024 * 1024)
82
82
 
83
- static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg, int success);
83
+ static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg, bool success);
84
84
 
85
85
  grpc_channel *grpc_channel_create_from_filters(
86
86
  grpc_exec_ctx *exec_ctx, const char *target,
@@ -108,7 +108,7 @@ grpc_channel *grpc_channel_create_from_filters(
108
108
  gpr_log(GPR_ERROR, "%s ignored: it must be >= 0",
109
109
  GRPC_ARG_MAX_MESSAGE_LENGTH);
110
110
  } else {
111
- channel->max_message_length = (gpr_uint32)args->args[i].value.integer;
111
+ channel->max_message_length = (uint32_t)args->args[i].value.integer;
112
112
  }
113
113
  } else if (0 == strcmp(args->args[i].key, GRPC_ARG_DEFAULT_AUTHORITY)) {
114
114
  if (args->args[i].type != GRPC_ARG_STRING) {
@@ -166,7 +166,7 @@ char *grpc_channel_get_target(grpc_channel *channel) {
166
166
  }
167
167
 
168
168
  static grpc_call *grpc_channel_create_call_internal(
169
- grpc_channel *channel, grpc_call *parent_call, gpr_uint32 propagation_mask,
169
+ grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask,
170
170
  grpc_completion_queue *cq, grpc_mdelem *path_mdelem,
171
171
  grpc_mdelem *authority_mdelem, gpr_timespec deadline) {
172
172
  grpc_mdelem *send_metadata[2];
@@ -187,7 +187,7 @@ static grpc_call *grpc_channel_create_call_internal(
187
187
 
188
188
  grpc_call *grpc_channel_create_call(grpc_channel *channel,
189
189
  grpc_call *parent_call,
190
- gpr_uint32 propagation_mask,
190
+ uint32_t propagation_mask,
191
191
  grpc_completion_queue *cq,
192
192
  const char *method, const char *host,
193
193
  gpr_timespec deadline, void *reserved) {
@@ -231,7 +231,7 @@ void *grpc_channel_register_call(grpc_channel *channel, const char *method,
231
231
  }
232
232
 
233
233
  grpc_call *grpc_channel_create_registered_call(
234
- grpc_channel *channel, grpc_call *parent_call, gpr_uint32 propagation_mask,
234
+ grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask,
235
235
  grpc_completion_queue *completion_queue, void *registered_call_handle,
236
236
  gpr_timespec deadline, void *reserved) {
237
237
  registered_call *rc = registered_call_handle;
@@ -268,7 +268,7 @@ void grpc_channel_internal_unref(grpc_exec_ctx *exec_ctx,
268
268
  }
269
269
 
270
270
  static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg,
271
- int iomgr_success) {
271
+ bool iomgr_success) {
272
272
  grpc_channel *channel = arg;
273
273
  grpc_channel_stack_destroy(exec_ctx, CHANNEL_STACK_FROM_CHANNEL(channel));
274
274
  while (channel->registered_calls) {
@@ -322,6 +322,6 @@ grpc_mdelem *grpc_channel_get_reffed_status_elem(grpc_channel *channel, int i) {
322
322
  grpc_mdstr_from_string(tmp));
323
323
  }
324
324
 
325
- gpr_uint32 grpc_channel_get_max_message_length(grpc_channel *channel) {
325
+ uint32_t grpc_channel_get_max_message_length(grpc_channel *channel) {
326
326
  return channel->max_message_length;
327
327
  }
@@ -51,7 +51,7 @@ grpc_channel_stack *grpc_channel_get_channel_stack(grpc_channel *channel);
51
51
  The returned elem is owned by the caller. */
52
52
  grpc_mdelem *grpc_channel_get_reffed_status_elem(grpc_channel *channel,
53
53
  int status_code);
54
- gpr_uint32 grpc_channel_get_max_message_length(grpc_channel *channel);
54
+ uint32_t grpc_channel_get_max_message_length(grpc_channel *channel);
55
55
 
56
56
  #ifdef GRPC_STREAM_REFCOUNT_DEBUG
57
57
  void grpc_channel_internal_ref(grpc_channel *channel, const char *reason);
@@ -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
@@ -165,11 +165,11 @@ static void partly_done(grpc_exec_ctx *exec_ctx, state_watcher *w,
165
165
  }
166
166
  }
167
167
 
168
- static void watch_complete(grpc_exec_ctx *exec_ctx, void *pw, int success) {
168
+ static void watch_complete(grpc_exec_ctx *exec_ctx, void *pw, bool success) {
169
169
  partly_done(exec_ctx, pw, 1);
170
170
  }
171
171
 
172
- static void timeout_complete(grpc_exec_ctx *exec_ctx, void *pw, int success) {
172
+ static void timeout_complete(grpc_exec_ctx *exec_ctx, void *pw, bool success) {
173
173
  partly_done(exec_ctx, pw, 0);
174
174
  }
175
175
 
@@ -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
@@ -80,11 +80,11 @@ static void connector_unref(grpc_exec_ctx *exec_ctx, grpc_connector *con) {
80
80
  }
81
81
 
82
82
  static void on_initial_connect_string_sent(grpc_exec_ctx *exec_ctx, void *arg,
83
- int success) {
83
+ bool success) {
84
84
  connector_unref(exec_ctx, arg);
85
85
  }
86
86
 
87
- static void connected(grpc_exec_ctx *exec_ctx, void *arg, int success) {
87
+ static void connected(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
88
88
  connector *c = arg;
89
89
  grpc_closure *notify;
90
90
  grpc_endpoint *tcp = c->tcp;
@@ -172,7 +172,7 @@ static grpc_subchannel *subchannel_factory_create_subchannel(
172
172
  c->base.vtable = &connector_vtable;
173
173
  gpr_ref_init(&c->refs, 1);
174
174
  args->args = final_args;
175
- s = grpc_subchannel_create(&c->base, args);
175
+ s = grpc_subchannel_create(exec_ctx, &c->base, args);
176
176
  grpc_connector_unref(exec_ctx, &c->base);
177
177
  grpc_channel_args_destroy(final_args);
178
178
  return s;
@@ -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
@@ -53,7 +53,7 @@ static void ping_destroy(grpc_exec_ctx *exec_ctx, void *arg,
53
53
  gpr_free(arg);
54
54
  }
55
55
 
56
- static void ping_done(grpc_exec_ctx *exec_ctx, void *arg, int success) {
56
+ static void ping_done(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
57
57
  ping_result *pr = arg;
58
58
  grpc_cq_end_op(exec_ctx, pr->cq, pr->tag, success, ping_destroy, pr,
59
59
  &pr->completion_storage);
@@ -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
@@ -36,26 +36,29 @@
36
36
  #include <stdio.h>
37
37
  #include <string.h>
38
38
 
39
- #include "src/core/iomgr/timer.h"
39
+ #include <grpc/support/alloc.h>
40
+ #include <grpc/support/atm.h>
41
+ #include <grpc/support/log.h>
42
+ #include <grpc/support/time.h>
43
+
40
44
  #include "src/core/iomgr/pollset.h"
45
+ #include "src/core/iomgr/timer.h"
46
+ #include "src/core/profiling/timers.h"
41
47
  #include "src/core/support/string.h"
42
48
  #include "src/core/surface/api_trace.h"
43
49
  #include "src/core/surface/call.h"
44
50
  #include "src/core/surface/event_string.h"
45
51
  #include "src/core/surface/surface_trace.h"
46
- #include "src/core/profiling/timers.h"
47
- #include <grpc/support/alloc.h>
48
- #include <grpc/support/atm.h>
49
- #include <grpc/support/log.h>
50
- #include <grpc/support/time.h>
51
52
 
52
53
  typedef struct {
53
- grpc_pollset_worker *worker;
54
+ grpc_pollset_worker **worker;
54
55
  void *tag;
55
56
  } plucker;
56
57
 
57
58
  /* Completion queue structure */
58
59
  struct grpc_completion_queue {
60
+ /** owned by pollset */
61
+ gpr_mu *mu;
59
62
  /** completed events */
60
63
  grpc_cq_completion completed_head;
61
64
  grpc_cq_completion *completed_tail;
@@ -63,8 +66,6 @@ struct grpc_completion_queue {
63
66
  gpr_refcount pending_events;
64
67
  /** Once owning_refs drops to zero, we will destroy the cq */
65
68
  gpr_refcount owning_refs;
66
- /** the set of low level i/o things that concern this cq */
67
- grpc_pollset pollset;
68
69
  /** 0 initially, 1 once we've begun shutting down */
69
70
  int shutdown;
70
71
  int shutdown_called;
@@ -82,11 +83,13 @@ struct grpc_completion_queue {
82
83
  grpc_completion_queue *next_free;
83
84
  };
84
85
 
86
+ #define POLLSET_FROM_CQ(cq) ((grpc_pollset *)(cq + 1))
87
+
85
88
  static gpr_mu g_freelist_mu;
86
89
  grpc_completion_queue *g_freelist;
87
90
 
88
91
  static void on_pollset_shutdown_done(grpc_exec_ctx *exec_ctx, void *cc,
89
- int success);
92
+ bool success);
90
93
 
91
94
  void grpc_cq_global_init(void) { gpr_mu_init(&g_freelist_mu); }
92
95
 
@@ -94,7 +97,7 @@ void grpc_cq_global_shutdown(void) {
94
97
  gpr_mu_destroy(&g_freelist_mu);
95
98
  while (g_freelist) {
96
99
  grpc_completion_queue *next = g_freelist->next_free;
97
- grpc_pollset_destroy(&g_freelist->pollset);
100
+ grpc_pollset_destroy(POLLSET_FROM_CQ(g_freelist));
98
101
  #ifndef NDEBUG
99
102
  gpr_free(g_freelist->outstanding_tags);
100
103
  #endif
@@ -124,8 +127,8 @@ grpc_completion_queue *grpc_completion_queue_create(void *reserved) {
124
127
  if (g_freelist == NULL) {
125
128
  gpr_mu_unlock(&g_freelist_mu);
126
129
 
127
- cc = gpr_malloc(sizeof(grpc_completion_queue));
128
- grpc_pollset_init(&cc->pollset);
130
+ cc = gpr_malloc(sizeof(grpc_completion_queue) + grpc_pollset_size());
131
+ grpc_pollset_init(POLLSET_FROM_CQ(cc), &cc->mu);
129
132
  #ifndef NDEBUG
130
133
  cc->outstanding_tags = NULL;
131
134
  cc->outstanding_tag_capacity = 0;
@@ -142,7 +145,7 @@ grpc_completion_queue *grpc_completion_queue_create(void *reserved) {
142
145
  /* One for destroy(), one for pollset_shutdown */
143
146
  gpr_ref_init(&cc->owning_refs, 2);
144
147
  cc->completed_tail = &cc->completed_head;
145
- cc->completed_head.next = (gpr_uintptr)cc->completed_tail;
148
+ cc->completed_head.next = (uintptr_t)cc->completed_tail;
146
149
  cc->shutdown = 0;
147
150
  cc->shutdown_called = 0;
148
151
  cc->is_server_cq = 0;
@@ -169,7 +172,7 @@ void grpc_cq_internal_ref(grpc_completion_queue *cc) {
169
172
  }
170
173
 
171
174
  static void on_pollset_shutdown_done(grpc_exec_ctx *exec_ctx, void *arg,
172
- int success) {
175
+ bool success) {
173
176
  grpc_completion_queue *cc = arg;
174
177
  GRPC_CQ_INTERNAL_UNREF(cc, "pollset_destroy");
175
178
  }
@@ -183,8 +186,8 @@ void grpc_cq_internal_unref(grpc_completion_queue *cc, const char *reason,
183
186
  void grpc_cq_internal_unref(grpc_completion_queue *cc) {
184
187
  #endif
185
188
  if (gpr_unref(&cc->owning_refs)) {
186
- GPR_ASSERT(cc->completed_head.next == (gpr_uintptr)&cc->completed_head);
187
- grpc_pollset_reset(&cc->pollset);
189
+ GPR_ASSERT(cc->completed_head.next == (uintptr_t)&cc->completed_head);
190
+ grpc_pollset_reset(POLLSET_FROM_CQ(cc));
188
191
  gpr_mu_lock(&g_freelist_mu);
189
192
  cc->next_free = g_freelist;
190
193
  g_freelist = cc;
@@ -194,7 +197,7 @@ void grpc_cq_internal_unref(grpc_completion_queue *cc) {
194
197
 
195
198
  void grpc_cq_begin_op(grpc_completion_queue *cc, void *tag) {
196
199
  #ifndef NDEBUG
197
- gpr_mu_lock(GRPC_POLLSET_MU(&cc->pollset));
200
+ gpr_mu_lock(cc->mu);
198
201
  GPR_ASSERT(!cc->shutdown_called);
199
202
  if (cc->outstanding_tag_count == cc->outstanding_tag_capacity) {
200
203
  cc->outstanding_tag_capacity = GPR_MAX(4, 2 * cc->outstanding_tag_capacity);
@@ -203,7 +206,7 @@ void grpc_cq_begin_op(grpc_completion_queue *cc, void *tag) {
203
206
  cc->outstanding_tag_capacity);
204
207
  }
205
208
  cc->outstanding_tags[cc->outstanding_tag_count++] = tag;
206
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
209
+ gpr_mu_unlock(cc->mu);
207
210
  #endif
208
211
  gpr_ref(&cc->pending_events);
209
212
  }
@@ -229,9 +232,9 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc,
229
232
  storage->done = done;
230
233
  storage->done_arg = done_arg;
231
234
  storage->next =
232
- ((gpr_uintptr)&cc->completed_head) | ((gpr_uintptr)(success != 0));
235
+ ((uintptr_t)&cc->completed_head) | ((uintptr_t)(success != 0));
233
236
 
234
- gpr_mu_lock(GRPC_POLLSET_MU(&cc->pollset));
237
+ gpr_mu_lock(cc->mu);
235
238
  #ifndef NDEBUG
236
239
  for (i = 0; i < (int)cc->outstanding_tag_count; i++) {
237
240
  if (cc->outstanding_tags[i] == tag) {
@@ -247,26 +250,27 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc,
247
250
  shutdown = gpr_unref(&cc->pending_events);
248
251
  if (!shutdown) {
249
252
  cc->completed_tail->next =
250
- ((gpr_uintptr)storage) | (1u & (gpr_uintptr)cc->completed_tail->next);
253
+ ((uintptr_t)storage) | (1u & (uintptr_t)cc->completed_tail->next);
251
254
  cc->completed_tail = storage;
252
255
  pluck_worker = NULL;
253
256
  for (i = 0; i < cc->num_pluckers; i++) {
254
257
  if (cc->pluckers[i].tag == tag) {
255
- pluck_worker = cc->pluckers[i].worker;
258
+ pluck_worker = *cc->pluckers[i].worker;
256
259
  break;
257
260
  }
258
261
  }
259
- grpc_pollset_kick(&cc->pollset, pluck_worker);
260
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
262
+ grpc_pollset_kick(POLLSET_FROM_CQ(cc), pluck_worker);
263
+ gpr_mu_unlock(cc->mu);
261
264
  } else {
262
265
  cc->completed_tail->next =
263
- ((gpr_uintptr)storage) | (1u & (gpr_uintptr)cc->completed_tail->next);
266
+ ((uintptr_t)storage) | (1u & (uintptr_t)cc->completed_tail->next);
264
267
  cc->completed_tail = storage;
265
268
  GPR_ASSERT(!cc->shutdown);
266
269
  GPR_ASSERT(cc->shutdown_called);
267
270
  cc->shutdown = 1;
268
- grpc_pollset_shutdown(exec_ctx, &cc->pollset, &cc->pollset_shutdown_done);
269
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
271
+ grpc_pollset_shutdown(exec_ctx, POLLSET_FROM_CQ(cc),
272
+ &cc->pollset_shutdown_done);
273
+ gpr_mu_unlock(cc->mu);
270
274
  }
271
275
 
272
276
  GPR_TIMER_END("grpc_cq_end_op", 0);
@@ -275,7 +279,7 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc,
275
279
  grpc_event grpc_completion_queue_next(grpc_completion_queue *cc,
276
280
  gpr_timespec deadline, void *reserved) {
277
281
  grpc_event ret;
278
- grpc_pollset_worker worker;
282
+ grpc_pollset_worker *worker = NULL;
279
283
  int first_loop = 1;
280
284
  gpr_timespec now;
281
285
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
@@ -294,15 +298,15 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc,
294
298
  deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC);
295
299
 
296
300
  GRPC_CQ_INTERNAL_REF(cc, "next");
297
- gpr_mu_lock(GRPC_POLLSET_MU(&cc->pollset));
301
+ gpr_mu_lock(cc->mu);
298
302
  for (;;) {
299
303
  if (cc->completed_tail != &cc->completed_head) {
300
304
  grpc_cq_completion *c = (grpc_cq_completion *)cc->completed_head.next;
301
- cc->completed_head.next = c->next & ~(gpr_uintptr)1;
305
+ cc->completed_head.next = c->next & ~(uintptr_t)1;
302
306
  if (c == cc->completed_tail) {
303
307
  cc->completed_tail = &cc->completed_head;
304
308
  }
305
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
309
+ gpr_mu_unlock(cc->mu);
306
310
  ret.type = GRPC_OP_COMPLETE;
307
311
  ret.success = c->next & 1u;
308
312
  ret.tag = c->tag;
@@ -310,20 +314,34 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc,
310
314
  break;
311
315
  }
312
316
  if (cc->shutdown) {
313
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
317
+ gpr_mu_unlock(cc->mu);
314
318
  memset(&ret, 0, sizeof(ret));
315
319
  ret.type = GRPC_QUEUE_SHUTDOWN;
316
320
  break;
317
321
  }
318
322
  now = gpr_now(GPR_CLOCK_MONOTONIC);
319
323
  if (!first_loop && gpr_time_cmp(now, deadline) >= 0) {
320
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
324
+ gpr_mu_unlock(cc->mu);
321
325
  memset(&ret, 0, sizeof(ret));
322
326
  ret.type = GRPC_QUEUE_TIMEOUT;
323
327
  break;
324
328
  }
325
329
  first_loop = 0;
326
- grpc_pollset_work(&exec_ctx, &cc->pollset, &worker, now, deadline);
330
+ /* Check alarms - these are a global resource so we just ping
331
+ each time through on every pollset.
332
+ May update deadline to ensure timely wakeups.
333
+ TODO(ctiller): can this work be localized? */
334
+ gpr_timespec iteration_deadline = deadline;
335
+ if (grpc_timer_check(&exec_ctx, now, &iteration_deadline)) {
336
+ GPR_TIMER_MARK("alarm_triggered", 0);
337
+ gpr_mu_unlock(cc->mu);
338
+ grpc_exec_ctx_flush(&exec_ctx);
339
+ gpr_mu_lock(cc->mu);
340
+ continue;
341
+ } else {
342
+ grpc_pollset_work(&exec_ctx, POLLSET_FROM_CQ(cc), &worker, now,
343
+ iteration_deadline);
344
+ }
327
345
  }
328
346
  GRPC_SURFACE_TRACE_RETURNED_EVENT(cc, &ret);
329
347
  GRPC_CQ_INTERNAL_UNREF(cc, "next");
@@ -335,7 +353,7 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc,
335
353
  }
336
354
 
337
355
  static int add_plucker(grpc_completion_queue *cc, void *tag,
338
- grpc_pollset_worker *worker) {
356
+ grpc_pollset_worker **worker) {
339
357
  if (cc->num_pluckers == GRPC_MAX_COMPLETION_QUEUE_PLUCKERS) {
340
358
  return 0;
341
359
  }
@@ -346,7 +364,7 @@ static int add_plucker(grpc_completion_queue *cc, void *tag,
346
364
  }
347
365
 
348
366
  static void del_plucker(grpc_completion_queue *cc, void *tag,
349
- grpc_pollset_worker *worker) {
367
+ grpc_pollset_worker **worker) {
350
368
  int i;
351
369
  for (i = 0; i < cc->num_pluckers; i++) {
352
370
  if (cc->pluckers[i].tag == tag && cc->pluckers[i].worker == worker) {
@@ -363,7 +381,7 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag,
363
381
  grpc_event ret;
364
382
  grpc_cq_completion *c;
365
383
  grpc_cq_completion *prev;
366
- grpc_pollset_worker worker;
384
+ grpc_pollset_worker *worker = NULL;
367
385
  gpr_timespec now;
368
386
  int first_loop = 1;
369
387
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
@@ -382,18 +400,17 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag,
382
400
  deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC);
383
401
 
384
402
  GRPC_CQ_INTERNAL_REF(cc, "pluck");
385
- gpr_mu_lock(GRPC_POLLSET_MU(&cc->pollset));
403
+ gpr_mu_lock(cc->mu);
386
404
  for (;;) {
387
405
  prev = &cc->completed_head;
388
- while ((c = (grpc_cq_completion *)(prev->next & ~(gpr_uintptr)1)) !=
406
+ while ((c = (grpc_cq_completion *)(prev->next & ~(uintptr_t)1)) !=
389
407
  &cc->completed_head) {
390
408
  if (c->tag == tag) {
391
- prev->next =
392
- (prev->next & (gpr_uintptr)1) | (c->next & ~(gpr_uintptr)1);
409
+ prev->next = (prev->next & (uintptr_t)1) | (c->next & ~(uintptr_t)1);
393
410
  if (c == cc->completed_tail) {
394
411
  cc->completed_tail = prev;
395
412
  }
396
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
413
+ gpr_mu_unlock(cc->mu);
397
414
  ret.type = GRPC_OP_COMPLETE;
398
415
  ret.success = c->next & 1u;
399
416
  ret.tag = c->tag;
@@ -403,7 +420,7 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag,
403
420
  prev = c;
404
421
  }
405
422
  if (cc->shutdown) {
406
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
423
+ gpr_mu_unlock(cc->mu);
407
424
  memset(&ret, 0, sizeof(ret));
408
425
  ret.type = GRPC_QUEUE_SHUTDOWN;
409
426
  break;
@@ -413,7 +430,7 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag,
413
430
  "Too many outstanding grpc_completion_queue_pluck calls: maximum "
414
431
  "is %d",
415
432
  GRPC_MAX_COMPLETION_QUEUE_PLUCKERS);
416
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
433
+ gpr_mu_unlock(cc->mu);
417
434
  memset(&ret, 0, sizeof(ret));
418
435
  /* TODO(ctiller): should we use a different result here */
419
436
  ret.type = GRPC_QUEUE_TIMEOUT;
@@ -422,13 +439,26 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag,
422
439
  now = gpr_now(GPR_CLOCK_MONOTONIC);
423
440
  if (!first_loop && gpr_time_cmp(now, deadline) >= 0) {
424
441
  del_plucker(cc, tag, &worker);
425
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
442
+ gpr_mu_unlock(cc->mu);
426
443
  memset(&ret, 0, sizeof(ret));
427
444
  ret.type = GRPC_QUEUE_TIMEOUT;
428
445
  break;
429
446
  }
430
447
  first_loop = 0;
431
- grpc_pollset_work(&exec_ctx, &cc->pollset, &worker, now, deadline);
448
+ /* Check alarms - these are a global resource so we just ping
449
+ each time through on every pollset.
450
+ May update deadline to ensure timely wakeups.
451
+ TODO(ctiller): can this work be localized? */
452
+ gpr_timespec iteration_deadline = deadline;
453
+ if (grpc_timer_check(&exec_ctx, now, &iteration_deadline)) {
454
+ GPR_TIMER_MARK("alarm_triggered", 0);
455
+ gpr_mu_unlock(cc->mu);
456
+ grpc_exec_ctx_flush(&exec_ctx);
457
+ gpr_mu_lock(cc->mu);
458
+ } else {
459
+ grpc_pollset_work(&exec_ctx, POLLSET_FROM_CQ(cc), &worker, now,
460
+ iteration_deadline);
461
+ }
432
462
  del_plucker(cc, tag, &worker);
433
463
  }
434
464
  done:
@@ -447,9 +477,9 @@ void grpc_completion_queue_shutdown(grpc_completion_queue *cc) {
447
477
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
448
478
  GPR_TIMER_BEGIN("grpc_completion_queue_shutdown", 0);
449
479
  GRPC_API_TRACE("grpc_completion_queue_shutdown(cc=%p)", 1, (cc));
450
- gpr_mu_lock(GRPC_POLLSET_MU(&cc->pollset));
480
+ gpr_mu_lock(cc->mu);
451
481
  if (cc->shutdown_called) {
452
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
482
+ gpr_mu_unlock(cc->mu);
453
483
  GPR_TIMER_END("grpc_completion_queue_shutdown", 0);
454
484
  return;
455
485
  }
@@ -457,9 +487,10 @@ void grpc_completion_queue_shutdown(grpc_completion_queue *cc) {
457
487
  if (gpr_unref(&cc->pending_events)) {
458
488
  GPR_ASSERT(!cc->shutdown);
459
489
  cc->shutdown = 1;
460
- grpc_pollset_shutdown(&exec_ctx, &cc->pollset, &cc->pollset_shutdown_done);
490
+ grpc_pollset_shutdown(&exec_ctx, POLLSET_FROM_CQ(cc),
491
+ &cc->pollset_shutdown_done);
461
492
  }
462
- gpr_mu_unlock(GRPC_POLLSET_MU(&cc->pollset));
493
+ gpr_mu_unlock(cc->mu);
463
494
  grpc_exec_ctx_finish(&exec_ctx);
464
495
  GPR_TIMER_END("grpc_completion_queue_shutdown", 0);
465
496
  }
@@ -473,7 +504,7 @@ void grpc_completion_queue_destroy(grpc_completion_queue *cc) {
473
504
  }
474
505
 
475
506
  grpc_pollset *grpc_cq_pollset(grpc_completion_queue *cc) {
476
- return &cc->pollset;
507
+ return POLLSET_FROM_CQ(cc);
477
508
  }
478
509
 
479
510
  void grpc_cq_mark_server_cq(grpc_completion_queue *cc) { cc->is_server_cq = 1; }