grpc 1.4.5 → 1.6.0.pre1

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 (928) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1235 -1100
  3. data/etc/roots.pem +0 -412
  4. data/include/grpc/byte_buffer.h +10 -25
  5. data/include/grpc/byte_buffer_reader.h +10 -25
  6. data/include/grpc/census.h +10 -25
  7. data/include/grpc/compression.h +10 -25
  8. data/include/grpc/grpc.h +15 -26
  9. data/include/grpc/grpc_cronet.h +10 -25
  10. data/include/grpc/grpc_posix.h +10 -25
  11. data/include/grpc/grpc_security.h +10 -25
  12. data/include/grpc/grpc_security_constants.h +10 -25
  13. data/include/grpc/impl/codegen/atm.h +11 -25
  14. data/include/grpc/impl/codegen/atm_gcc_atomic.h +10 -25
  15. data/include/grpc/impl/codegen/atm_gcc_sync.h +10 -25
  16. data/include/grpc/impl/codegen/atm_windows.h +10 -25
  17. data/include/grpc/impl/codegen/byte_buffer_reader.h +11 -26
  18. data/include/grpc/impl/codegen/compression_types.h +12 -27
  19. data/include/grpc/impl/codegen/connectivity_state.h +10 -25
  20. data/include/grpc/impl/codegen/exec_ctx_fwd.h +10 -25
  21. data/include/grpc/impl/codegen/gpr_slice.h +10 -25
  22. data/include/grpc/impl/codegen/gpr_types.h +10 -25
  23. data/include/grpc/impl/codegen/grpc_types.h +42 -43
  24. data/include/grpc/impl/codegen/port_platform.h +10 -25
  25. data/include/grpc/impl/codegen/propagation_bits.h +10 -25
  26. data/include/grpc/impl/codegen/slice.h +13 -28
  27. data/include/grpc/impl/codegen/status.h +10 -25
  28. data/include/grpc/impl/codegen/sync.h +10 -25
  29. data/include/grpc/impl/codegen/sync_generic.h +10 -25
  30. data/include/grpc/impl/codegen/sync_posix.h +10 -25
  31. data/include/grpc/impl/codegen/sync_windows.h +10 -25
  32. data/include/grpc/load_reporting.h +10 -25
  33. data/include/grpc/slice.h +10 -25
  34. data/include/grpc/slice_buffer.h +10 -25
  35. data/include/grpc/status.h +10 -25
  36. data/include/grpc/support/alloc.h +10 -25
  37. data/include/grpc/support/atm.h +10 -25
  38. data/include/grpc/support/atm_gcc_atomic.h +10 -25
  39. data/include/grpc/support/atm_gcc_sync.h +10 -25
  40. data/include/grpc/support/atm_windows.h +10 -25
  41. data/include/grpc/support/avl.h +46 -49
  42. data/include/grpc/support/cmdline.h +10 -25
  43. data/include/grpc/support/cpu.h +10 -25
  44. data/include/grpc/support/histogram.h +10 -25
  45. data/include/grpc/support/host_port.h +10 -25
  46. data/include/grpc/support/log.h +10 -25
  47. data/include/grpc/support/log_windows.h +10 -25
  48. data/include/grpc/support/port_platform.h +10 -25
  49. data/include/grpc/support/string_util.h +10 -25
  50. data/include/grpc/support/subprocess.h +10 -25
  51. data/include/grpc/support/sync.h +10 -25
  52. data/include/grpc/support/sync_generic.h +10 -25
  53. data/include/grpc/support/sync_posix.h +10 -25
  54. data/include/grpc/support/sync_windows.h +10 -25
  55. data/include/grpc/support/thd.h +10 -25
  56. data/include/grpc/support/time.h +10 -25
  57. data/include/grpc/support/tls.h +10 -25
  58. data/include/grpc/support/tls_gcc.h +10 -25
  59. data/include/grpc/support/tls_msvc.h +10 -25
  60. data/include/grpc/support/tls_pthread.h +10 -25
  61. data/include/grpc/support/useful.h +10 -25
  62. data/include/grpc/support/workaround_list.h +11 -26
  63. data/src/boringssl/err_data.c +277 -259
  64. data/src/core/ext/census/aggregation.h +10 -25
  65. data/src/core/ext/census/base_resources.c +10 -25
  66. data/src/core/ext/census/base_resources.h +10 -25
  67. data/src/core/ext/census/census_interface.h +10 -25
  68. data/src/core/ext/census/census_rpc_stats.h +10 -25
  69. data/src/core/ext/census/context.c +10 -25
  70. data/src/core/ext/census/gen/census.pb.c +10 -25
  71. data/src/core/ext/census/gen/census.pb.h +10 -25
  72. data/src/core/ext/census/gen/trace_context.pb.c +10 -25
  73. data/src/core/ext/census/gen/trace_context.pb.h +10 -25
  74. data/src/core/ext/census/grpc_context.c +10 -25
  75. data/src/core/ext/census/grpc_filter.c +11 -26
  76. data/src/core/ext/census/grpc_filter.h +10 -25
  77. data/src/core/ext/census/grpc_plugin.c +10 -25
  78. data/src/core/ext/census/initialize.c +10 -25
  79. data/src/core/ext/census/intrusive_hash_map.c +10 -25
  80. data/src/core/ext/census/intrusive_hash_map.h +10 -25
  81. data/src/core/ext/census/intrusive_hash_map_internal.h +10 -25
  82. data/src/core/ext/census/mlog.c +10 -25
  83. data/src/core/ext/census/mlog.h +10 -25
  84. data/src/core/ext/census/operation.c +10 -25
  85. data/src/core/ext/census/placeholders.c +10 -25
  86. data/src/core/ext/census/resource.c +10 -25
  87. data/src/core/ext/census/resource.h +10 -25
  88. data/src/core/ext/census/rpc_metric_id.h +10 -25
  89. data/src/core/ext/census/trace_context.c +10 -25
  90. data/src/core/ext/census/trace_context.h +10 -25
  91. data/src/core/ext/census/trace_label.h +10 -25
  92. data/src/core/ext/census/trace_propagation.h +10 -25
  93. data/src/core/ext/census/trace_status.h +10 -25
  94. data/src/core/ext/census/trace_string.h +10 -25
  95. data/src/core/ext/census/tracing.c +10 -26
  96. data/src/core/ext/census/tracing.h +10 -25
  97. data/src/core/ext/filters/client_channel/channel_connectivity.c +20 -33
  98. data/src/core/ext/filters/client_channel/client_channel.c +617 -520
  99. data/src/core/ext/filters/client_channel/client_channel.h +15 -28
  100. data/src/core/ext/filters/client_channel/client_channel_factory.c +13 -31
  101. data/src/core/ext/filters/client_channel/client_channel_factory.h +10 -25
  102. data/src/core/ext/filters/client_channel/client_channel_plugin.c +16 -29
  103. data/src/core/ext/filters/client_channel/connector.c +10 -25
  104. data/src/core/ext/filters/client_channel/connector.h +10 -25
  105. data/src/core/ext/filters/client_channel/http_connect_handshaker.c +15 -30
  106. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -25
  107. data/src/core/ext/filters/client_channel/http_proxy.c +112 -38
  108. data/src/core/ext/filters/client_channel/http_proxy.h +10 -25
  109. data/src/core/ext/filters/client_channel/lb_policy.c +32 -36
  110. data/src/core/ext/filters/client_channel/lb_policy.h +24 -27
  111. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c +14 -30
  112. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +10 -25
  113. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c +464 -279
  114. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +10 -25
  115. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +15 -28
  116. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c +40 -48
  117. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c +65 -49
  118. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +31 -31
  119. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c +47 -32
  120. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +11 -26
  121. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +13 -9
  122. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +27 -21
  123. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +373 -136
  124. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +504 -279
  125. data/src/core/ext/filters/client_channel/lb_policy_factory.c +12 -31
  126. data/src/core/ext/filters/client_channel/lb_policy_factory.h +12 -27
  127. data/src/core/ext/filters/client_channel/lb_policy_registry.c +10 -25
  128. data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -25
  129. data/src/core/ext/filters/client_channel/parse_address.c +10 -25
  130. data/src/core/ext/filters/client_channel/parse_address.h +10 -25
  131. data/src/core/ext/filters/client_channel/proxy_mapper.c +10 -25
  132. data/src/core/ext/filters/client_channel/proxy_mapper.h +10 -25
  133. data/src/core/ext/filters/client_channel/proxy_mapper_registry.c +10 -25
  134. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +10 -25
  135. data/src/core/ext/filters/client_channel/resolver.c +33 -38
  136. data/src/core/ext/filters/client_channel/resolver.h +19 -30
  137. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c +153 -50
  138. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +14 -27
  139. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c +33 -30
  140. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c +326 -116
  141. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +35 -36
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +60 -0
  143. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c +19 -34
  144. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c +254 -0
  145. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +60 -0
  146. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c +16 -28
  147. data/src/core/ext/filters/client_channel/resolver_factory.c +10 -25
  148. data/src/core/ext/filters/client_channel/resolver_factory.h +10 -25
  149. data/src/core/ext/filters/client_channel/resolver_registry.c +10 -25
  150. data/src/core/ext/filters/client_channel/resolver_registry.h +10 -25
  151. data/src/core/ext/filters/client_channel/retry_throttle.c +23 -34
  152. data/src/core/ext/filters/client_channel/retry_throttle.h +10 -25
  153. data/src/core/ext/filters/client_channel/subchannel.c +33 -55
  154. data/src/core/ext/filters/client_channel/subchannel.h +16 -26
  155. data/src/core/ext/filters/client_channel/subchannel_index.c +55 -92
  156. data/src/core/ext/filters/client_channel/subchannel_index.h +26 -29
  157. data/src/core/ext/filters/client_channel/uri_parser.c +10 -25
  158. data/src/core/ext/filters/client_channel/uri_parser.h +10 -25
  159. data/src/core/ext/filters/deadline/deadline_filter.c +30 -45
  160. data/src/core/ext/filters/deadline/deadline_filter.h +10 -25
  161. data/src/core/ext/filters/http/client/http_client_filter.c +255 -294
  162. data/src/core/ext/filters/http/client/http_client_filter.h +10 -25
  163. data/src/core/ext/filters/http/http_filters_plugin.c +11 -26
  164. data/src/core/ext/filters/http/message_compress/message_compress_filter.c +133 -105
  165. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +10 -25
  166. data/src/core/ext/filters/http/server/http_server_filter.c +17 -32
  167. data/src/core/ext/filters/http/server/http_server_filter.h +10 -25
  168. data/src/core/ext/filters/load_reporting/load_reporting.c +11 -30
  169. data/src/core/ext/filters/load_reporting/load_reporting.h +10 -25
  170. data/src/core/ext/filters/load_reporting/load_reporting_filter.c +11 -26
  171. data/src/core/ext/filters/load_reporting/load_reporting_filter.h +10 -25
  172. data/src/core/ext/filters/max_age/max_age_filter.c +28 -43
  173. data/src/core/ext/filters/max_age/max_age_filter.h +10 -25
  174. data/src/core/ext/filters/message_size/message_size_filter.c +24 -37
  175. data/src/core/ext/filters/message_size/message_size_filter.h +10 -25
  176. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c +16 -31
  177. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +10 -25
  178. data/src/core/ext/filters/workarounds/workaround_utils.c +12 -26
  179. data/src/core/ext/filters/workarounds/workaround_utils.h +11 -26
  180. data/src/core/ext/transport/chttp2/alpn/alpn.c +10 -25
  181. data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -25
  182. data/src/core/ext/transport/chttp2/client/chttp2_connector.c +13 -28
  183. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +10 -25
  184. data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +13 -30
  185. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +12 -29
  186. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +13 -30
  187. data/src/core/ext/transport/chttp2/server/chttp2_server.c +11 -26
  188. data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -25
  189. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +10 -25
  190. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +10 -25
  191. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +10 -25
  192. data/src/core/ext/transport/chttp2/transport/bin_decoder.c +11 -25
  193. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +10 -25
  194. data/src/core/ext/transport/chttp2/transport/bin_encoder.c +10 -25
  195. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +10 -25
  196. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +15 -27
  197. data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +421 -443
  198. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -25
  199. data/src/core/ext/transport/chttp2/transport/flow_control.c +500 -0
  200. data/src/core/ext/transport/chttp2/transport/frame.h +10 -25
  201. data/src/core/ext/transport/chttp2/transport/frame_data.c +20 -28
  202. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -25
  203. data/src/core/ext/transport/chttp2/transport/frame_goaway.c +10 -25
  204. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -25
  205. data/src/core/ext/transport/chttp2/transport/frame_ping.c +11 -26
  206. data/src/core/ext/transport/chttp2/transport/frame_ping.h +10 -25
  207. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +11 -26
  208. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -25
  209. data/src/core/ext/transport/chttp2/transport/frame_settings.c +16 -29
  210. data/src/core/ext/transport/chttp2/transport/frame_settings.h +10 -25
  211. data/src/core/ext/transport/chttp2/transport/frame_window_update.c +17 -33
  212. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +10 -25
  213. data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +18 -31
  214. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +12 -25
  215. data/src/core/ext/transport/chttp2/transport/hpack_parser.c +15 -30
  216. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -25
  217. data/src/core/ext/transport/chttp2/transport/hpack_table.c +10 -25
  218. data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -25
  219. data/src/core/ext/transport/chttp2/transport/http2_settings.c +10 -25
  220. data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -25
  221. data/src/core/ext/transport/chttp2/transport/huffsyms.c +10 -25
  222. data/src/core/ext/transport/chttp2/transport/huffsyms.h +10 -25
  223. data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +10 -25
  224. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +10 -25
  225. data/src/core/ext/transport/chttp2/transport/internal.h +191 -179
  226. data/src/core/ext/transport/chttp2/transport/parsing.c +33 -102
  227. data/src/core/ext/transport/chttp2/transport/stream_lists.c +26 -28
  228. data/src/core/ext/transport/chttp2/transport/stream_map.c +10 -25
  229. data/src/core/ext/transport/chttp2/transport/stream_map.h +10 -25
  230. data/src/core/ext/transport/chttp2/transport/varint.c +14 -25
  231. data/src/core/ext/transport/chttp2/transport/varint.h +10 -25
  232. data/src/core/ext/transport/chttp2/transport/writing.c +164 -106
  233. data/src/core/ext/transport/inproc/inproc_plugin.c +29 -0
  234. data/src/core/ext/transport/inproc/inproc_transport.c +1303 -0
  235. data/src/core/ext/transport/inproc/inproc_transport.h +41 -0
  236. data/src/core/lib/channel/channel_args.c +52 -27
  237. data/src/core/lib/channel/channel_args.h +18 -27
  238. data/src/core/lib/channel/channel_stack.c +11 -26
  239. data/src/core/lib/channel/channel_stack.h +12 -27
  240. data/src/core/lib/channel/channel_stack_builder.c +11 -26
  241. data/src/core/lib/channel/channel_stack_builder.h +10 -25
  242. data/src/core/lib/channel/connected_channel.c +10 -25
  243. data/src/core/lib/channel/connected_channel.h +10 -25
  244. data/src/core/lib/channel/context.h +10 -25
  245. data/src/core/lib/channel/handshaker.c +14 -29
  246. data/src/core/lib/channel/handshaker.h +10 -25
  247. data/src/core/lib/channel/handshaker_factory.c +10 -25
  248. data/src/core/lib/channel/handshaker_factory.h +10 -25
  249. data/src/core/lib/channel/handshaker_registry.c +10 -25
  250. data/src/core/lib/channel/handshaker_registry.h +10 -25
  251. data/src/core/lib/compression/algorithm_metadata.h +10 -25
  252. data/src/core/lib/compression/compression.c +10 -25
  253. data/src/core/lib/compression/message_compress.c +10 -25
  254. data/src/core/lib/compression/message_compress.h +10 -25
  255. data/src/core/lib/compression/stream_compression.c +191 -0
  256. data/src/core/lib/compression/stream_compression.h +90 -0
  257. data/src/core/lib/debug/trace.c +28 -29
  258. data/src/core/lib/debug/trace.h +16 -30
  259. data/src/core/lib/http/format_request.c +10 -25
  260. data/src/core/lib/http/format_request.h +10 -25
  261. data/src/core/lib/http/httpcli.c +19 -35
  262. data/src/core/lib/http/httpcli.h +10 -25
  263. data/src/core/lib/http/httpcli_security_connector.c +17 -30
  264. data/src/core/lib/http/parser.c +11 -26
  265. data/src/core/lib/http/parser.h +10 -25
  266. data/src/core/lib/iomgr/closure.c +62 -25
  267. data/src/core/lib/iomgr/closure.h +81 -26
  268. data/src/core/lib/iomgr/combiner.c +103 -200
  269. data/src/core/lib/iomgr/combiner.h +14 -32
  270. data/src/core/lib/iomgr/endpoint.c +10 -29
  271. data/src/core/lib/iomgr/endpoint.h +10 -29
  272. data/src/core/lib/iomgr/endpoint_pair.h +10 -25
  273. data/src/core/lib/iomgr/endpoint_pair_posix.c +10 -25
  274. data/src/core/lib/iomgr/endpoint_pair_uv.c +10 -25
  275. data/src/core/lib/iomgr/endpoint_pair_windows.c +10 -25
  276. data/src/core/lib/iomgr/error.c +45 -46
  277. data/src/core/lib/iomgr/error.h +21 -34
  278. data/src/core/lib/iomgr/error_internal.h +10 -25
  279. data/src/core/lib/iomgr/ev_epoll1_linux.c +279 -179
  280. data/src/core/lib/iomgr/ev_epoll1_linux.h +10 -25
  281. data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c +75 -264
  282. data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h +10 -25
  283. data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c +44 -199
  284. data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.h +10 -25
  285. data/src/core/lib/iomgr/ev_epollex_linux.c +184 -247
  286. data/src/core/lib/iomgr/ev_epollex_linux.h +10 -25
  287. data/src/core/lib/iomgr/ev_epollsig_linux.c +116 -323
  288. data/src/core/lib/iomgr/ev_epollsig_linux.h +10 -25
  289. data/src/core/lib/iomgr/ev_poll_posix.c +328 -184
  290. data/src/core/lib/iomgr/ev_poll_posix.h +10 -25
  291. data/src/core/lib/iomgr/ev_posix.c +25 -56
  292. data/src/core/lib/iomgr/ev_posix.h +15 -44
  293. data/src/core/lib/iomgr/ev_windows.c +11 -26
  294. data/src/core/lib/iomgr/exec_ctx.c +36 -45
  295. data/src/core/lib/iomgr/exec_ctx.h +10 -25
  296. data/src/core/lib/iomgr/executor.c +152 -127
  297. data/src/core/lib/iomgr/executor.h +18 -26
  298. data/src/core/lib/iomgr/gethostname.h +26 -0
  299. data/src/core/lib/iomgr/gethostname_fallback.c +27 -0
  300. data/src/core/lib/iomgr/gethostname_host_name_max.c +37 -0
  301. data/src/core/lib/iomgr/gethostname_sysconf.c +37 -0
  302. data/src/core/lib/iomgr/iocp_windows.c +10 -25
  303. data/src/core/lib/iomgr/iocp_windows.h +10 -25
  304. data/src/core/lib/iomgr/iomgr.c +17 -28
  305. data/src/core/lib/iomgr/iomgr.h +12 -27
  306. data/src/core/lib/iomgr/iomgr_internal.h +10 -25
  307. data/src/core/lib/iomgr/iomgr_posix.c +11 -26
  308. data/src/core/lib/iomgr/iomgr_posix.h +10 -25
  309. data/src/core/lib/iomgr/iomgr_uv.c +19 -26
  310. data/src/core/lib/iomgr/iomgr_uv.h +37 -0
  311. data/src/core/lib/iomgr/iomgr_windows.c +10 -25
  312. data/src/core/lib/iomgr/is_epollexclusive_available.c +10 -25
  313. data/src/core/lib/iomgr/is_epollexclusive_available.h +10 -25
  314. data/src/core/lib/iomgr/load_file.c +10 -25
  315. data/src/core/lib/iomgr/load_file.h +10 -25
  316. data/src/core/lib/iomgr/lockfree_event.c +22 -35
  317. data/src/core/lib/iomgr/lockfree_event.h +13 -27
  318. data/src/core/lib/iomgr/nameser.h +104 -0
  319. data/src/core/lib/iomgr/network_status_tracker.c +10 -25
  320. data/src/core/lib/iomgr/network_status_tracker.h +10 -25
  321. data/src/core/lib/iomgr/polling_entity.c +10 -25
  322. data/src/core/lib/iomgr/polling_entity.h +14 -34
  323. data/src/core/lib/iomgr/pollset.h +14 -25
  324. data/src/core/lib/iomgr/pollset_set.h +10 -25
  325. data/src/core/lib/iomgr/pollset_set_uv.c +10 -25
  326. data/src/core/lib/iomgr/pollset_set_windows.c +10 -25
  327. data/src/core/lib/iomgr/pollset_set_windows.h +10 -25
  328. data/src/core/lib/iomgr/pollset_uv.c +25 -26
  329. data/src/core/lib/iomgr/pollset_uv.h +10 -25
  330. data/src/core/lib/iomgr/pollset_windows.c +17 -27
  331. data/src/core/lib/iomgr/pollset_windows.h +10 -25
  332. data/src/core/lib/iomgr/port.h +24 -25
  333. data/src/core/lib/iomgr/resolve_address.h +10 -25
  334. data/src/core/lib/iomgr/resolve_address_posix.c +13 -28
  335. data/src/core/lib/iomgr/resolve_address_uv.c +31 -35
  336. data/src/core/lib/iomgr/resolve_address_windows.c +13 -28
  337. data/src/core/lib/iomgr/resource_quota.c +52 -67
  338. data/src/core/lib/iomgr/resource_quota.h +10 -25
  339. data/src/core/lib/iomgr/sockaddr.h +10 -25
  340. data/src/core/lib/iomgr/sockaddr_posix.h +10 -25
  341. data/src/core/lib/iomgr/sockaddr_utils.c +15 -25
  342. data/src/core/lib/iomgr/sockaddr_utils.h +12 -25
  343. data/src/core/lib/iomgr/sockaddr_windows.h +10 -25
  344. data/src/core/lib/iomgr/socket_factory_posix.c +13 -31
  345. data/src/core/lib/iomgr/socket_factory_posix.h +10 -25
  346. data/src/core/lib/iomgr/socket_mutator.c +14 -31
  347. data/src/core/lib/iomgr/socket_mutator.h +10 -25
  348. data/src/core/lib/iomgr/socket_utils.h +10 -25
  349. data/src/core/lib/iomgr/socket_utils_common_posix.c +10 -25
  350. data/src/core/lib/iomgr/socket_utils_linux.c +10 -25
  351. data/src/core/lib/iomgr/socket_utils_posix.c +10 -25
  352. data/src/core/lib/iomgr/socket_utils_posix.h +10 -25
  353. data/src/core/lib/iomgr/socket_utils_uv.c +10 -25
  354. data/src/core/lib/iomgr/socket_utils_windows.c +10 -25
  355. data/src/core/lib/iomgr/socket_windows.c +12 -27
  356. data/src/core/lib/iomgr/socket_windows.h +10 -25
  357. data/src/core/lib/iomgr/sys_epoll_wrapper.h +10 -25
  358. data/src/core/lib/iomgr/tcp_client.h +10 -25
  359. data/src/core/lib/iomgr/tcp_client_posix.c +21 -34
  360. data/src/core/lib/iomgr/tcp_client_posix.h +10 -25
  361. data/src/core/lib/iomgr/tcp_client_uv.c +18 -27
  362. data/src/core/lib/iomgr/tcp_client_windows.c +14 -29
  363. data/src/core/lib/iomgr/tcp_posix.c +36 -55
  364. data/src/core/lib/iomgr/tcp_posix.h +10 -25
  365. data/src/core/lib/iomgr/tcp_server.h +10 -25
  366. data/src/core/lib/iomgr/tcp_server_posix.c +16 -31
  367. data/src/core/lib/iomgr/tcp_server_utils_posix.h +10 -25
  368. data/src/core/lib/iomgr/tcp_server_utils_posix_common.c +11 -26
  369. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c +10 -25
  370. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c +10 -25
  371. data/src/core/lib/iomgr/tcp_server_uv.c +103 -64
  372. data/src/core/lib/iomgr/tcp_server_windows.c +14 -29
  373. data/src/core/lib/iomgr/tcp_uv.c +41 -45
  374. data/src/core/lib/iomgr/tcp_uv.h +10 -25
  375. data/src/core/lib/iomgr/tcp_windows.c +39 -53
  376. data/src/core/lib/iomgr/tcp_windows.h +10 -25
  377. data/src/core/lib/iomgr/time_averaged_stats.c +10 -25
  378. data/src/core/lib/iomgr/time_averaged_stats.h +10 -25
  379. data/src/core/lib/iomgr/timer.h +18 -27
  380. data/src/core/lib/iomgr/timer_generic.c +91 -87
  381. data/src/core/lib/iomgr/timer_generic.h +10 -25
  382. data/src/core/lib/iomgr/timer_heap.c +10 -25
  383. data/src/core/lib/iomgr/timer_heap.h +10 -25
  384. data/src/core/lib/iomgr/timer_manager.c +178 -100
  385. data/src/core/lib/iomgr/timer_manager.h +10 -25
  386. data/src/core/lib/iomgr/timer_uv.c +23 -33
  387. data/src/core/lib/iomgr/timer_uv.h +10 -25
  388. data/src/core/lib/iomgr/udp_server.c +17 -32
  389. data/src/core/lib/iomgr/udp_server.h +10 -25
  390. data/src/core/lib/iomgr/unix_sockets_posix.c +10 -25
  391. data/src/core/lib/iomgr/unix_sockets_posix.h +10 -25
  392. data/src/core/lib/iomgr/unix_sockets_posix_noop.c +10 -25
  393. data/src/core/lib/iomgr/wakeup_fd_cv.c +10 -25
  394. data/src/core/lib/iomgr/wakeup_fd_cv.h +13 -28
  395. data/src/core/lib/iomgr/wakeup_fd_eventfd.c +10 -25
  396. data/src/core/lib/iomgr/wakeup_fd_nospecial.c +10 -25
  397. data/src/core/lib/iomgr/wakeup_fd_pipe.c +10 -25
  398. data/src/core/lib/iomgr/wakeup_fd_pipe.h +10 -25
  399. data/src/core/lib/iomgr/wakeup_fd_posix.c +10 -25
  400. data/src/core/lib/iomgr/wakeup_fd_posix.h +10 -25
  401. data/src/core/lib/json/json.c +10 -25
  402. data/src/core/lib/json/json.h +10 -25
  403. data/src/core/lib/json/json_common.h +10 -25
  404. data/src/core/lib/json/json_reader.c +11 -25
  405. data/src/core/lib/json/json_reader.h +10 -25
  406. data/src/core/lib/json/json_string.c +10 -25
  407. data/src/core/lib/json/json_writer.c +10 -25
  408. data/src/core/lib/json/json_writer.h +10 -25
  409. data/src/core/lib/profiling/basic_timers.c +10 -25
  410. data/src/core/lib/profiling/stap_timers.c +10 -25
  411. data/src/core/lib/profiling/timers.h +10 -25
  412. data/src/core/lib/security/context/security_context.c +32 -40
  413. data/src/core/lib/security/context/security_context.h +15 -26
  414. data/src/core/lib/security/credentials/composite/composite_credentials.c +76 -81
  415. data/src/core/lib/security/credentials/composite/composite_credentials.h +10 -25
  416. data/src/core/lib/security/credentials/credentials.c +29 -49
  417. data/src/core/lib/security/credentials/credentials.h +48 -61
  418. data/src/core/lib/security/credentials/credentials_metadata.c +34 -78
  419. data/src/core/lib/security/credentials/fake/fake_credentials.c +33 -56
  420. data/src/core/lib/security/credentials/fake/fake_credentials.h +12 -27
  421. data/src/core/lib/security/credentials/google_default/credentials_generic.c +10 -25
  422. data/src/core/lib/security/credentials/google_default/google_default_credentials.c +12 -27
  423. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -25
  424. data/src/core/lib/security/credentials/iam/iam_credentials.c +40 -40
  425. data/src/core/lib/security/credentials/iam/iam_credentials.h +11 -26
  426. data/src/core/lib/security/credentials/jwt/json_token.c +10 -25
  427. data/src/core/lib/security/credentials/jwt/json_token.h +10 -25
  428. data/src/core/lib/security/credentials/jwt/jwt_credentials.c +45 -48
  429. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -26
  430. data/src/core/lib/security/credentials/jwt/jwt_verifier.c +53 -33
  431. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +10 -25
  432. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +155 -87
  433. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -28
  434. data/src/core/lib/security/credentials/plugin/plugin_credentials.c +118 -82
  435. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -27
  436. data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -32
  437. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -25
  438. data/src/core/lib/security/transport/auth_filters.h +10 -25
  439. data/src/core/lib/security/transport/client_auth_filter.c +217 -112
  440. data/src/core/lib/security/transport/lb_targets_info.c +16 -32
  441. data/src/core/lib/security/transport/lb_targets_info.h +10 -25
  442. data/src/core/lib/security/transport/secure_endpoint.c +29 -43
  443. data/src/core/lib/security/transport/secure_endpoint.h +10 -25
  444. data/src/core/lib/security/transport/security_connector.c +80 -61
  445. data/src/core/lib/security/transport/security_connector.h +35 -35
  446. data/src/core/lib/security/transport/security_handshaker.c +18 -33
  447. data/src/core/lib/security/transport/security_handshaker.h +10 -25
  448. data/src/core/lib/security/transport/server_auth_filter.c +62 -116
  449. data/src/core/lib/security/transport/tsi_error.c +10 -25
  450. data/src/core/lib/security/transport/tsi_error.h +10 -25
  451. data/src/core/lib/security/util/json_util.c +10 -25
  452. data/src/core/lib/security/util/json_util.h +10 -25
  453. data/src/core/lib/slice/b64.c +10 -25
  454. data/src/core/lib/slice/b64.h +10 -25
  455. data/src/core/lib/slice/percent_encoding.c +10 -25
  456. data/src/core/lib/slice/percent_encoding.h +10 -25
  457. data/src/core/lib/slice/slice.c +10 -25
  458. data/src/core/lib/slice/slice_buffer.c +10 -25
  459. data/src/core/lib/slice/slice_hash_table.c +48 -26
  460. data/src/core/lib/slice/slice_hash_table.h +26 -28
  461. data/src/core/lib/slice/slice_intern.c +10 -25
  462. data/src/core/lib/slice/slice_internal.h +10 -25
  463. data/src/core/lib/slice/slice_string_helpers.c +10 -25
  464. data/src/core/lib/slice/slice_string_helpers.h +10 -25
  465. data/src/core/lib/support/alloc.c +10 -25
  466. data/src/core/lib/support/arena.c +12 -27
  467. data/src/core/lib/support/arena.h +10 -25
  468. data/src/core/lib/support/atm.c +17 -32
  469. data/src/core/lib/support/atomic.h +10 -25
  470. data/src/core/lib/support/atomic_with_atm.h +10 -25
  471. data/src/core/lib/support/atomic_with_std.h +10 -25
  472. data/src/core/lib/support/avl.c +101 -101
  473. data/src/core/lib/support/backoff.c +10 -25
  474. data/src/core/lib/support/backoff.h +10 -25
  475. data/src/core/lib/support/block_annotate.h +10 -25
  476. data/src/core/lib/support/cmdline.c +10 -25
  477. data/src/core/lib/support/cpu_iphone.c +10 -25
  478. data/src/core/lib/support/cpu_linux.c +10 -25
  479. data/src/core/lib/support/cpu_posix.c +10 -25
  480. data/src/core/lib/support/cpu_windows.c +10 -25
  481. data/src/core/lib/support/env.h +16 -25
  482. data/src/core/lib/support/env_linux.c +30 -37
  483. data/src/core/lib/support/env_posix.c +15 -25
  484. data/src/core/lib/support/env_windows.c +15 -25
  485. data/src/core/lib/support/histogram.c +10 -25
  486. data/src/core/lib/support/host_port.c +10 -25
  487. data/src/core/lib/support/log.c +20 -29
  488. data/src/core/lib/support/log_android.c +10 -25
  489. data/src/core/lib/support/log_linux.c +13 -26
  490. data/src/core/lib/support/log_posix.c +10 -25
  491. data/src/core/lib/support/log_windows.c +10 -25
  492. data/src/core/lib/support/memory.h +10 -25
  493. data/src/core/lib/support/mpscq.c +11 -49
  494. data/src/core/lib/support/mpscq.h +11 -50
  495. data/src/core/lib/support/murmur_hash.c +12 -25
  496. data/src/core/lib/support/murmur_hash.h +10 -25
  497. data/src/core/lib/support/spinlock.h +10 -25
  498. data/src/core/lib/support/stack_lockfree.c +10 -25
  499. data/src/core/lib/support/stack_lockfree.h +10 -25
  500. data/src/core/lib/support/string.c +10 -25
  501. data/src/core/lib/support/string.h +10 -25
  502. data/src/core/lib/support/string_posix.c +10 -25
  503. data/src/core/lib/support/string_util_windows.c +10 -25
  504. data/src/core/lib/support/string_windows.c +10 -25
  505. data/src/core/lib/support/string_windows.h +10 -25
  506. data/src/core/lib/support/subprocess_posix.c +10 -25
  507. data/src/core/lib/support/subprocess_windows.c +10 -25
  508. data/src/core/lib/support/sync.c +10 -25
  509. data/src/core/lib/support/sync_posix.c +10 -25
  510. data/src/core/lib/support/sync_windows.c +10 -25
  511. data/src/core/lib/support/thd.c +10 -25
  512. data/src/core/lib/support/thd_internal.h +10 -25
  513. data/src/core/lib/support/thd_posix.c +10 -25
  514. data/src/core/lib/support/thd_windows.c +10 -25
  515. data/src/core/lib/support/time.c +10 -25
  516. data/src/core/lib/support/time_posix.c +10 -25
  517. data/src/core/lib/support/time_precise.c +18 -33
  518. data/src/core/lib/support/time_precise.h +10 -25
  519. data/src/core/lib/support/time_windows.c +10 -25
  520. data/src/core/lib/support/tls_pthread.c +10 -25
  521. data/src/core/lib/support/tmpfile.h +10 -25
  522. data/src/core/lib/support/tmpfile_msys.c +10 -25
  523. data/src/core/lib/support/tmpfile_posix.c +10 -25
  524. data/src/core/lib/support/tmpfile_windows.c +10 -25
  525. data/src/core/lib/support/wrap_memcpy.c +10 -25
  526. data/src/core/lib/surface/alarm.c +78 -35
  527. data/src/core/lib/surface/alarm_internal.h +40 -0
  528. data/src/core/lib/surface/api_trace.c +11 -26
  529. data/src/core/lib/surface/api_trace.h +10 -25
  530. data/src/core/lib/surface/byte_buffer.c +10 -25
  531. data/src/core/lib/surface/byte_buffer_reader.c +10 -25
  532. data/src/core/lib/surface/call.c +64 -84
  533. data/src/core/lib/surface/call.h +11 -26
  534. data/src/core/lib/surface/call_details.c +10 -25
  535. data/src/core/lib/surface/call_log_batch.c +10 -25
  536. data/src/core/lib/surface/call_test_only.h +10 -25
  537. data/src/core/lib/surface/channel.c +11 -26
  538. data/src/core/lib/surface/channel.h +11 -26
  539. data/src/core/lib/surface/channel_init.c +10 -25
  540. data/src/core/lib/surface/channel_init.h +10 -25
  541. data/src/core/lib/surface/channel_ping.c +12 -27
  542. data/src/core/lib/surface/channel_stack_type.c +10 -25
  543. data/src/core/lib/surface/channel_stack_type.h +10 -25
  544. data/src/core/lib/surface/completion_queue.c +442 -331
  545. data/src/core/lib/surface/completion_queue.h +16 -33
  546. data/src/core/lib/surface/completion_queue_factory.c +10 -25
  547. data/src/core/lib/surface/completion_queue_factory.h +10 -25
  548. data/src/core/lib/surface/event_string.c +10 -25
  549. data/src/core/lib/surface/event_string.h +10 -25
  550. data/src/core/lib/surface/init.c +38 -47
  551. data/src/core/lib/surface/init.h +10 -25
  552. data/src/core/lib/surface/init_secure.c +20 -27
  553. data/src/core/lib/surface/lame_client.cc +14 -29
  554. data/src/core/lib/surface/lame_client.h +10 -25
  555. data/src/core/lib/surface/metadata_array.c +10 -25
  556. data/src/core/lib/surface/server.c +128 -81
  557. data/src/core/lib/surface/server.h +10 -25
  558. data/src/core/lib/surface/validate_metadata.c +10 -25
  559. data/src/core/lib/surface/validate_metadata.h +10 -25
  560. data/src/core/lib/surface/version.c +11 -26
  561. data/src/core/lib/transport/bdp_estimator.c +19 -29
  562. data/src/core/lib/transport/bdp_estimator.h +16 -29
  563. data/src/core/lib/transport/byte_stream.c +127 -36
  564. data/src/core/lib/transport/byte_stream.h +88 -46
  565. data/src/core/lib/transport/connectivity_state.c +17 -31
  566. data/src/core/lib/transport/connectivity_state.h +10 -25
  567. data/src/core/lib/transport/error_utils.c +10 -25
  568. data/src/core/lib/transport/error_utils.h +10 -25
  569. data/src/core/lib/transport/http2_errors.h +10 -25
  570. data/src/core/lib/transport/metadata.c +87 -85
  571. data/src/core/lib/transport/metadata.h +15 -28
  572. data/src/core/lib/transport/metadata_batch.c +10 -25
  573. data/src/core/lib/transport/metadata_batch.h +10 -25
  574. data/src/core/lib/transport/pid_controller.c +10 -25
  575. data/src/core/lib/transport/pid_controller.h +10 -25
  576. data/src/core/lib/transport/service_config.c +11 -26
  577. data/src/core/lib/transport/service_config.h +10 -25
  578. data/src/core/lib/transport/static_metadata.c +12 -26
  579. data/src/core/lib/transport/static_metadata.h +10 -25
  580. data/src/core/lib/transport/status_conversion.c +10 -25
  581. data/src/core/lib/transport/status_conversion.h +10 -25
  582. data/src/core/lib/transport/timeout_encoding.c +10 -25
  583. data/src/core/lib/transport/timeout_encoding.h +10 -25
  584. data/src/core/lib/transport/transport.c +60 -53
  585. data/src/core/lib/transport/transport.h +36 -34
  586. data/src/core/lib/transport/transport_impl.h +10 -25
  587. data/src/core/lib/transport/transport_op_string.c +10 -28
  588. data/src/core/plugin_registry/grpc_plugin_registry.c +22 -25
  589. data/src/core/tsi/fake_transport_security.c +199 -94
  590. data/src/core/tsi/fake_transport_security.h +11 -26
  591. data/src/core/tsi/gts_transport_security.c +40 -0
  592. data/src/core/tsi/gts_transport_security.h +37 -0
  593. data/src/core/tsi/ssl_transport_security.c +13 -32
  594. data/src/core/tsi/ssl_transport_security.h +10 -25
  595. data/src/core/tsi/ssl_types.h +10 -25
  596. data/src/core/tsi/transport_security.c +48 -78
  597. data/src/core/tsi/transport_security.h +18 -27
  598. data/src/core/tsi/transport_security_adapter.c +17 -29
  599. data/src/core/tsi/transport_security_adapter.h +10 -25
  600. data/src/core/tsi/transport_security_grpc.c +64 -0
  601. data/src/core/tsi/transport_security_grpc.h +80 -0
  602. data/src/core/tsi/transport_security_interface.h +21 -27
  603. data/src/ruby/bin/apis/google/protobuf/empty.rb +10 -25
  604. data/src/ruby/bin/apis/pubsub_demo.rb +10 -25
  605. data/src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb +10 -25
  606. data/src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb +10 -25
  607. data/src/ruby/bin/math_client.rb +10 -25
  608. data/src/ruby/bin/math_server.rb +10 -25
  609. data/src/ruby/bin/math_services_pb.rb +10 -25
  610. data/src/ruby/bin/noproto_client.rb +10 -25
  611. data/src/ruby/bin/noproto_server.rb +10 -25
  612. data/src/ruby/ext/grpc/extconf.rb +10 -25
  613. data/src/ruby/ext/grpc/rb_byte_buffer.c +10 -25
  614. data/src/ruby/ext/grpc/rb_byte_buffer.h +10 -25
  615. data/src/ruby/ext/grpc/rb_call.c +44 -25
  616. data/src/ruby/ext/grpc/rb_call.h +10 -25
  617. data/src/ruby/ext/grpc/rb_call_credentials.c +10 -25
  618. data/src/ruby/ext/grpc/rb_call_credentials.h +10 -25
  619. data/src/ruby/ext/grpc/rb_channel.c +10 -25
  620. data/src/ruby/ext/grpc/rb_channel.h +10 -25
  621. data/src/ruby/ext/grpc/rb_channel_args.c +10 -25
  622. data/src/ruby/ext/grpc/rb_channel_args.h +10 -25
  623. data/src/ruby/ext/grpc/rb_channel_credentials.c +10 -25
  624. data/src/ruby/ext/grpc/rb_channel_credentials.h +10 -25
  625. data/src/ruby/ext/grpc/rb_completion_queue.c +10 -25
  626. data/src/ruby/ext/grpc/rb_completion_queue.h +10 -25
  627. data/src/ruby/ext/grpc/rb_compression_options.c +10 -25
  628. data/src/ruby/ext/grpc/rb_compression_options.h +10 -25
  629. data/src/ruby/ext/grpc/rb_event_thread.c +10 -25
  630. data/src/ruby/ext/grpc/rb_event_thread.h +10 -25
  631. data/src/ruby/ext/grpc/rb_grpc.c +10 -25
  632. data/src/ruby/ext/grpc/rb_grpc.h +10 -25
  633. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -25
  634. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +16 -31
  635. data/src/ruby/ext/grpc/rb_loader.c +10 -25
  636. data/src/ruby/ext/grpc/rb_loader.h +10 -25
  637. data/src/ruby/ext/grpc/rb_server.c +10 -25
  638. data/src/ruby/ext/grpc/rb_server.h +10 -25
  639. data/src/ruby/ext/grpc/rb_server_credentials.c +10 -25
  640. data/src/ruby/ext/grpc/rb_server_credentials.h +10 -25
  641. data/src/ruby/lib/grpc.rb +10 -25
  642. data/src/ruby/lib/grpc/core/time_consts.rb +10 -25
  643. data/src/ruby/lib/grpc/errors.rb +16 -30
  644. data/src/ruby/lib/grpc/generic/active_call.rb +25 -27
  645. data/src/ruby/lib/grpc/generic/bidi_call.rb +17 -27
  646. data/src/ruby/lib/grpc/generic/client_stub.rb +10 -25
  647. data/src/ruby/lib/grpc/generic/rpc_desc.rb +10 -25
  648. data/src/ruby/lib/grpc/generic/rpc_server.rb +10 -25
  649. data/src/ruby/lib/grpc/generic/service.rb +10 -25
  650. data/src/ruby/lib/grpc/grpc.rb +10 -25
  651. data/src/ruby/lib/grpc/logconfig.rb +10 -25
  652. data/src/ruby/lib/grpc/notifier.rb +10 -25
  653. data/src/ruby/lib/grpc/version.rb +11 -26
  654. data/src/ruby/pb/generate_proto_ruby.sh +10 -25
  655. data/src/ruby/pb/grpc/health/checker.rb +10 -25
  656. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +10 -25
  657. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +10 -25
  658. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +10 -25
  659. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +10 -25
  660. data/src/ruby/pb/test/client.rb +10 -25
  661. data/src/ruby/pb/test/server.rb +10 -25
  662. data/src/ruby/spec/call_credentials_spec.rb +10 -25
  663. data/src/ruby/spec/call_spec.rb +43 -25
  664. data/src/ruby/spec/channel_connection_spec.rb +10 -25
  665. data/src/ruby/spec/channel_credentials_spec.rb +11 -26
  666. data/src/ruby/spec/channel_spec.rb +10 -25
  667. data/src/ruby/spec/client_auth_spec.rb +10 -25
  668. data/src/ruby/spec/client_server_spec.rb +66 -25
  669. data/src/ruby/spec/compression_options_spec.rb +10 -25
  670. data/src/ruby/spec/error_sanity_spec.rb +10 -25
  671. data/src/ruby/spec/generic/active_call_spec.rb +10 -25
  672. data/src/ruby/spec/generic/client_stub_spec.rb +146 -35
  673. data/src/ruby/spec/generic/rpc_desc_spec.rb +10 -25
  674. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +10 -25
  675. data/src/ruby/spec/generic/rpc_server_spec.rb +124 -34
  676. data/src/ruby/spec/generic/service_spec.rb +10 -25
  677. data/src/ruby/spec/pb/duplicate/codegen_spec.rb +10 -25
  678. data/src/ruby/spec/pb/health/checker_spec.rb +10 -25
  679. data/src/ruby/spec/server_credentials_spec.rb +10 -25
  680. data/src/ruby/spec/server_spec.rb +10 -25
  681. data/src/ruby/spec/spec_helper.rb +10 -25
  682. data/src/ruby/spec/time_consts_spec.rb +10 -25
  683. data/third_party/boringssl/crypto/aes/key_wrap.c +138 -0
  684. data/third_party/boringssl/crypto/asn1/a_bitstr.c +6 -3
  685. data/third_party/boringssl/crypto/asn1/a_enum.c +4 -1
  686. data/third_party/boringssl/crypto/asn1/a_gentm.c +20 -15
  687. data/third_party/boringssl/crypto/asn1/a_int.c +7 -4
  688. data/third_party/boringssl/crypto/asn1/a_object.c +5 -2
  689. data/third_party/boringssl/crypto/asn1/a_time.c +0 -1
  690. data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -2
  691. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -2
  692. data/third_party/boringssl/crypto/asn1/asn1_locl.h +35 -0
  693. data/third_party/boringssl/crypto/asn1/tasn_dec.c +3 -1
  694. data/third_party/boringssl/crypto/asn1/tasn_enc.c +6 -3
  695. data/third_party/boringssl/crypto/asn1/tasn_new.c +12 -7
  696. data/third_party/boringssl/crypto/asn1/tasn_utl.c +22 -8
  697. data/third_party/boringssl/crypto/{time_support.c → asn1/time_support.c} +1 -1
  698. data/third_party/boringssl/crypto/asn1/x_long.c +5 -2
  699. data/third_party/boringssl/crypto/base64/base64.c +7 -5
  700. data/third_party/boringssl/crypto/bio/bio.c +24 -10
  701. data/third_party/boringssl/crypto/bio/bio_mem.c +12 -10
  702. data/third_party/boringssl/crypto/bio/connect.c +7 -18
  703. data/third_party/boringssl/crypto/bio/fd.c +3 -6
  704. data/third_party/boringssl/crypto/bio/file.c +6 -6
  705. data/third_party/boringssl/crypto/bio/hexdump.c +4 -2
  706. data/third_party/boringssl/crypto/bio/pair.c +30 -344
  707. data/third_party/boringssl/crypto/bio/socket.c +6 -7
  708. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -3
  709. data/third_party/boringssl/crypto/bn/add.c +1 -1
  710. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +11 -10
  711. data/third_party/boringssl/crypto/bn/bn.c +6 -20
  712. data/third_party/boringssl/crypto/bn/cmp.c +14 -0
  713. data/third_party/boringssl/crypto/bn/convert.c +73 -2
  714. data/third_party/boringssl/crypto/bn/ctx.c +3 -1
  715. data/third_party/boringssl/crypto/bn/div.c +108 -51
  716. data/third_party/boringssl/crypto/bn/exponentiation.c +15 -33
  717. data/third_party/boringssl/crypto/bn/gcd.c +29 -22
  718. data/third_party/boringssl/crypto/bn/generic.c +71 -67
  719. data/third_party/boringssl/crypto/bn/internal.h +19 -6
  720. data/third_party/boringssl/crypto/bn/kronecker.c +1 -0
  721. data/third_party/boringssl/crypto/bn/montgomery.c +9 -10
  722. data/third_party/boringssl/crypto/bn/montgomery_inv.c +47 -0
  723. data/third_party/boringssl/crypto/bn/mul.c +11 -9
  724. data/third_party/boringssl/crypto/bn/random.c +6 -3
  725. data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -65
  726. data/third_party/boringssl/crypto/bn/rsaz_exp.h +0 -3
  727. data/third_party/boringssl/crypto/bn/shift.c +9 -1
  728. data/third_party/boringssl/crypto/bn/sqrt.c +3 -1
  729. data/third_party/boringssl/crypto/buf/buf.c +6 -4
  730. data/third_party/boringssl/crypto/bytestring/asn1_compat.c +2 -1
  731. data/third_party/boringssl/crypto/bytestring/ber.c +2 -1
  732. data/third_party/boringssl/crypto/bytestring/cbb.c +9 -7
  733. data/third_party/boringssl/crypto/bytestring/cbs.c +54 -2
  734. data/third_party/boringssl/crypto/chacha/chacha.c +1 -1
  735. data/third_party/boringssl/crypto/cipher/aead.c +3 -3
  736. data/third_party/boringssl/crypto/cipher/cipher.c +18 -13
  737. data/third_party/boringssl/crypto/cipher/e_aes.c +335 -281
  738. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +113 -137
  739. data/third_party/boringssl/crypto/cipher/e_null.c +2 -1
  740. data/third_party/boringssl/crypto/cipher/e_rc2.c +54 -49
  741. data/third_party/boringssl/crypto/cipher/e_ssl3.c +4 -3
  742. data/third_party/boringssl/crypto/cipher/e_tls.c +5 -5
  743. data/third_party/boringssl/crypto/cipher/tls_cbc.c +41 -112
  744. data/third_party/boringssl/crypto/cmac/cmac.c +6 -4
  745. data/third_party/boringssl/crypto/conf/conf.c +6 -3
  746. data/third_party/boringssl/crypto/cpu-arm-linux.c +2 -2
  747. data/third_party/boringssl/crypto/curve25519/curve25519.c +28 -34
  748. data/third_party/boringssl/crypto/curve25519/spake25519.c +7 -6
  749. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +2 -1
  750. data/third_party/boringssl/crypto/des/des.c +1 -1
  751. data/third_party/boringssl/crypto/des/internal.h +58 -46
  752. data/third_party/boringssl/crypto/dh/dh.c +4 -8
  753. data/third_party/boringssl/crypto/digest/digest.c +5 -2
  754. data/third_party/boringssl/crypto/digest/digests.c +70 -33
  755. data/third_party/boringssl/crypto/digest/md32_common.h +39 -27
  756. data/third_party/boringssl/crypto/dsa/dsa.c +11 -19
  757. data/third_party/boringssl/crypto/ec/ec.c +1 -1
  758. data/third_party/boringssl/crypto/ec/ec_asn1.c +3 -2
  759. data/third_party/boringssl/crypto/ec/ec_key.c +1 -1
  760. data/third_party/boringssl/crypto/ec/ec_montgomery.c +6 -11
  761. data/third_party/boringssl/crypto/ec/oct.c +2 -14
  762. data/third_party/boringssl/crypto/ec/p224-64.c +78 -122
  763. data/third_party/boringssl/crypto/ec/p256-64.c +93 -133
  764. data/third_party/boringssl/crypto/ec/p256-x86_64.c +48 -61
  765. data/third_party/boringssl/crypto/ec/p256-x86_64.h +113 -0
  766. data/third_party/boringssl/crypto/ec/simple.c +2 -1
  767. data/third_party/boringssl/crypto/ec/wnaf.c +52 -43
  768. data/third_party/boringssl/crypto/ecdh/ecdh.c +4 -2
  769. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +17 -16
  770. data/third_party/boringssl/crypto/engine/engine.c +3 -1
  771. data/third_party/boringssl/crypto/err/err.c +5 -5
  772. data/third_party/boringssl/crypto/evp/evp.c +1 -1
  773. data/third_party/boringssl/crypto/evp/evp_asn1.c +1 -1
  774. data/third_party/boringssl/crypto/evp/evp_ctx.c +23 -29
  775. data/third_party/boringssl/crypto/evp/p_ec.c +2 -1
  776. data/third_party/boringssl/crypto/evp/p_rsa.c +9 -3
  777. data/third_party/boringssl/crypto/evp/pbkdf.c +3 -1
  778. data/third_party/boringssl/crypto/hkdf/hkdf.c +3 -1
  779. data/third_party/boringssl/crypto/hmac/hmac.c +4 -2
  780. data/third_party/boringssl/crypto/internal.h +81 -0
  781. data/third_party/boringssl/crypto/lhash/lhash.c +7 -13
  782. data/third_party/boringssl/crypto/md4/md4.c +20 -18
  783. data/third_party/boringssl/crypto/md5/md5.c +31 -21
  784. data/third_party/boringssl/crypto/mem.c +4 -10
  785. data/third_party/boringssl/crypto/modes/cbc.c +2 -6
  786. data/third_party/boringssl/crypto/modes/cfb.c +2 -2
  787. data/third_party/boringssl/crypto/modes/ctr.c +1 -1
  788. data/third_party/boringssl/crypto/modes/gcm.c +117 -334
  789. data/third_party/boringssl/crypto/modes/internal.h +107 -84
  790. data/third_party/boringssl/crypto/modes/ofb.c +3 -3
  791. data/third_party/boringssl/crypto/modes/polyval.c +94 -0
  792. data/third_party/boringssl/crypto/obj/obj.c +13 -8
  793. data/third_party/boringssl/crypto/obj/obj_dat.h +6109 -5187
  794. data/third_party/boringssl/crypto/obj/obj_xref.c +55 -57
  795. data/third_party/boringssl/crypto/pem/pem_lib.c +6 -3
  796. data/third_party/boringssl/crypto/pkcs8/internal.h +27 -8
  797. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +137 -352
  798. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +371 -364
  799. data/third_party/boringssl/crypto/poly1305/poly1305.c +12 -18
  800. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +2 -2
  801. data/third_party/boringssl/crypto/{newhope/reduce.c → pool/internal.h} +24 -21
  802. data/third_party/boringssl/crypto/pool/pool.c +200 -0
  803. data/third_party/boringssl/crypto/rand/deterministic.c +6 -5
  804. data/third_party/boringssl/crypto/rand/fuchsia.c +43 -0
  805. data/third_party/boringssl/crypto/rand/rand.c +7 -7
  806. data/third_party/boringssl/crypto/rand/urandom.c +136 -22
  807. data/third_party/boringssl/crypto/rand/windows.c +2 -2
  808. data/third_party/boringssl/crypto/rsa/blinding.c +2 -1
  809. data/third_party/boringssl/crypto/rsa/padding.c +11 -11
  810. data/third_party/boringssl/crypto/rsa/rsa.c +4 -4
  811. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +7 -1
  812. data/third_party/boringssl/crypto/rsa/rsa_impl.c +41 -80
  813. data/third_party/boringssl/crypto/sha/sha1-altivec.c +346 -0
  814. data/third_party/boringssl/crypto/sha/sha1.c +60 -42
  815. data/third_party/boringssl/crypto/sha/sha256.c +4 -2
  816. data/third_party/boringssl/crypto/sha/sha512.c +9 -7
  817. data/third_party/boringssl/crypto/stack/stack.c +10 -7
  818. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  819. data/third_party/boringssl/crypto/thread_win.c +2 -2
  820. data/third_party/boringssl/crypto/x509/a_verify.c +1 -1
  821. data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -1
  822. data/third_party/boringssl/crypto/x509/by_dir.c +1 -1
  823. data/third_party/boringssl/crypto/x509/t_x509.c +78 -38
  824. data/third_party/boringssl/crypto/x509/x509_cmp.c +8 -5
  825. data/third_party/boringssl/crypto/x509/x509_lu.c +6 -1
  826. data/third_party/boringssl/crypto/x509/x509_obj.c +4 -1
  827. data/third_party/boringssl/crypto/x509/x509_vfy.c +42 -8
  828. data/third_party/boringssl/crypto/x509/x509_vpm.c +8 -6
  829. data/third_party/boringssl/crypto/x509/x509name.c +4 -1
  830. data/third_party/boringssl/crypto/x509/x_crl.c +4 -2
  831. data/third_party/boringssl/crypto/x509/x_name.c +23 -13
  832. data/third_party/boringssl/crypto/x509/x_pkey.c +4 -1
  833. data/third_party/boringssl/crypto/x509/x_x509.c +42 -3
  834. data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
  835. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
  836. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +1 -1
  837. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +4 -1
  838. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +4 -1
  839. data/third_party/boringssl/crypto/x509v3/v3_pci.c +6 -3
  840. data/third_party/boringssl/crypto/x509v3/v3_purp.c +13 -21
  841. data/third_party/boringssl/crypto/x509v3/v3_utl.c +19 -33
  842. data/third_party/boringssl/include/openssl/aead.h +9 -20
  843. data/third_party/boringssl/include/openssl/aes.h +21 -9
  844. data/third_party/boringssl/include/openssl/asn1.h +9 -1
  845. data/third_party/boringssl/include/openssl/base.h +33 -6
  846. data/third_party/boringssl/include/openssl/bio.h +10 -103
  847. data/third_party/boringssl/include/openssl/bn.h +58 -42
  848. data/third_party/boringssl/include/openssl/bytestring.h +17 -0
  849. data/third_party/boringssl/include/openssl/cipher.h +4 -3
  850. data/third_party/boringssl/include/openssl/conf.h +4 -1
  851. data/third_party/boringssl/include/openssl/curve25519.h +13 -0
  852. data/third_party/boringssl/include/openssl/digest.h +5 -3
  853. data/third_party/boringssl/include/openssl/dsa.h +5 -5
  854. data/third_party/boringssl/include/openssl/ec.h +2 -2
  855. data/third_party/boringssl/include/openssl/ecdh.h +3 -4
  856. data/third_party/boringssl/include/openssl/ecdsa.h +10 -10
  857. data/third_party/boringssl/include/openssl/err.h +5 -5
  858. data/third_party/boringssl/include/openssl/evp.h +11 -7
  859. data/third_party/boringssl/include/openssl/lhash.h +2 -3
  860. data/third_party/boringssl/include/openssl/lhash_macros.h +56 -14
  861. data/third_party/boringssl/include/openssl/nid.h +2949 -2916
  862. data/third_party/boringssl/include/openssl/obj.h +1 -1
  863. data/third_party/boringssl/include/openssl/pkcs8.h +21 -42
  864. data/third_party/boringssl/include/openssl/pool.h +87 -0
  865. data/third_party/boringssl/include/openssl/rand.h +1 -1
  866. data/third_party/boringssl/include/openssl/rsa.h +4 -2
  867. data/third_party/boringssl/include/openssl/sha.h +0 -4
  868. data/third_party/boringssl/include/openssl/ssl.h +327 -662
  869. data/third_party/boringssl/include/openssl/ssl3.h +1 -21
  870. data/third_party/boringssl/include/openssl/stack.h +1 -0
  871. data/third_party/boringssl/include/openssl/stack_macros.h +85 -0
  872. data/third_party/boringssl/include/openssl/tls1.h +23 -52
  873. data/third_party/boringssl/include/openssl/type_check.h +4 -0
  874. data/third_party/boringssl/include/openssl/x509.h +10 -59
  875. data/third_party/boringssl/include/openssl/x509_vfy.h +7 -1
  876. data/third_party/boringssl/include/openssl/x509v3.h +4 -4
  877. data/third_party/boringssl/ssl/bio_ssl.c +175 -0
  878. data/third_party/boringssl/ssl/custom_extensions.c +24 -21
  879. data/third_party/boringssl/ssl/d1_both.c +259 -289
  880. data/third_party/boringssl/ssl/d1_lib.c +8 -20
  881. data/third_party/boringssl/ssl/d1_pkt.c +6 -15
  882. data/third_party/boringssl/ssl/dtls_method.c +22 -8
  883. data/third_party/boringssl/ssl/dtls_record.c +27 -2
  884. data/third_party/boringssl/ssl/handshake_client.c +460 -579
  885. data/third_party/boringssl/ssl/handshake_server.c +662 -644
  886. data/third_party/boringssl/ssl/internal.h +1009 -375
  887. data/third_party/boringssl/ssl/s3_both.c +312 -162
  888. data/third_party/boringssl/ssl/s3_lib.c +12 -128
  889. data/third_party/boringssl/ssl/s3_pkt.c +22 -30
  890. data/third_party/boringssl/ssl/ssl_aead_ctx.c +28 -22
  891. data/third_party/boringssl/ssl/ssl_asn1.c +210 -114
  892. data/third_party/boringssl/ssl/ssl_buffer.c +2 -1
  893. data/third_party/boringssl/ssl/ssl_cert.c +417 -219
  894. data/third_party/boringssl/ssl/ssl_cipher.c +191 -393
  895. data/third_party/boringssl/ssl/ssl_ecdh.c +19 -164
  896. data/third_party/boringssl/ssl/ssl_file.c +0 -11
  897. data/third_party/boringssl/ssl/ssl_lib.c +325 -652
  898. data/third_party/boringssl/ssl/{ssl_rsa.c → ssl_privkey.c} +21 -131
  899. data/third_party/boringssl/ssl/ssl_privkey_cc.cc +76 -0
  900. data/third_party/boringssl/ssl/ssl_session.c +206 -95
  901. data/third_party/boringssl/ssl/ssl_stat.c +18 -84
  902. data/third_party/boringssl/ssl/{s3_enc.c → ssl_transcript.c} +150 -157
  903. data/third_party/boringssl/ssl/ssl_x509.c +815 -0
  904. data/third_party/boringssl/ssl/t1_enc.c +188 -174
  905. data/third_party/boringssl/ssl/t1_lib.c +1064 -764
  906. data/third_party/boringssl/ssl/tls13_both.c +290 -96
  907. data/third_party/boringssl/ssl/tls13_client.c +344 -314
  908. data/third_party/boringssl/ssl/tls13_enc.c +239 -200
  909. data/third_party/boringssl/ssl/tls13_server.c +374 -366
  910. data/third_party/boringssl/ssl/tls_method.c +40 -5
  911. data/third_party/boringssl/ssl/tls_record.c +166 -71
  912. metadata +39 -25
  913. data/src/core/lib/iomgr/workqueue.h +0 -87
  914. data/src/core/lib/iomgr/workqueue_uv.c +0 -65
  915. data/src/core/lib/iomgr/workqueue_uv.h +0 -37
  916. data/src/core/lib/iomgr/workqueue_windows.c +0 -63
  917. data/src/core/lib/iomgr/workqueue_windows.h +0 -37
  918. data/third_party/boringssl/crypto/bio/buffer.c +0 -496
  919. data/third_party/boringssl/crypto/newhope/error_correction.c +0 -131
  920. data/third_party/boringssl/crypto/newhope/internal.h +0 -71
  921. data/third_party/boringssl/crypto/newhope/newhope.c +0 -174
  922. data/third_party/boringssl/crypto/newhope/ntt.c +0 -148
  923. data/third_party/boringssl/crypto/newhope/poly.c +0 -183
  924. data/third_party/boringssl/crypto/newhope/precomp.c +0 -306
  925. data/third_party/boringssl/crypto/obj/obj_xref.h +0 -96
  926. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +0 -151
  927. data/third_party/boringssl/include/openssl/newhope.h +0 -158
  928. data/third_party/boringssl/include/openssl/time_support.h +0 -91
@@ -1,33 +1,18 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
4
- * All rights reserved.
3
+ * Copyright 2015 gRPC authors.
5
4
  *
6
- * Redistribution and use in source and binary forms, with or without
7
- * modification, are permitted provided that the following conditions are
8
- * met:
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
9
8
  *
10
- * * Redistributions of source code must retain the above copyright
11
- * notice, this list of conditions and the following disclaimer.
12
- * * Redistributions in binary form must reproduce the above
13
- * copyright notice, this list of conditions and the following disclaimer
14
- * in the documentation and/or other materials provided with the
15
- * distribution.
16
- * * Neither the name of Google Inc. nor the names of its
17
- * contributors may be used to endorse or promote products derived from
18
- * this software without specific prior written permission.
9
+ * http://www.apache.org/licenses/LICENSE-2.0
19
10
  *
20
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
31
16
  *
32
17
  */
33
18
 
@@ -1,33 +1,18 @@
1
1
  /*
2
2
  *
3
- * Copyright 2016, Google Inc.
4
- * All rights reserved.
3
+ * Copyright 2016 gRPC authors.
5
4
  *
6
- * Redistribution and use in source and binary forms, with or without
7
- * modification, are permitted provided that the following conditions are
8
- * met:
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
9
8
  *
10
- * * Redistributions of source code must retain the above copyright
11
- * notice, this list of conditions and the following disclaimer.
12
- * * Redistributions in binary form must reproduce the above
13
- * copyright notice, this list of conditions and the following disclaimer
14
- * in the documentation and/or other materials provided with the
15
- * distribution.
16
- * * Neither the name of Google Inc. nor the names of its
17
- * contributors may be used to endorse or promote products derived from
18
- * this software without specific prior written permission.
9
+ * http://www.apache.org/licenses/LICENSE-2.0
19
10
  *
20
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
31
16
  *
32
17
  */
33
18
 
@@ -59,7 +44,6 @@
59
44
  #include "src/core/lib/iomgr/lockfree_event.h"
60
45
  #include "src/core/lib/iomgr/timer.h"
61
46
  #include "src/core/lib/iomgr/wakeup_fd_posix.h"
62
- #include "src/core/lib/iomgr/workqueue.h"
63
47
  #include "src/core/lib/profiling/timers.h"
64
48
  #include "src/core/lib/support/block_annotate.h"
65
49
 
@@ -70,9 +54,6 @@
70
54
  gpr_log(GPR_INFO, __VA_ARGS__); \
71
55
  }
72
56
 
73
- /* Uncomment the following to enable extra checks on poll_object operations */
74
- /* #define PO_DEBUG */
75
-
76
57
  static int grpc_wakeup_signal = -1;
77
58
  static bool is_grpc_wakeup_signal_initialized = false;
78
59
 
@@ -101,7 +82,7 @@ typedef enum {
101
82
  } poll_obj_type;
102
83
 
103
84
  typedef struct poll_obj {
104
- #ifdef PO_DEBUG
85
+ #ifndef NDEBUG
105
86
  poll_obj_type obj_type;
106
87
  #endif
107
88
  gpr_mu mu;
@@ -156,8 +137,7 @@ struct grpc_fd {
156
137
  };
157
138
 
158
139
  /* Reference counting for fds */
159
- // #define GRPC_FD_REF_COUNT_DEBUG
160
- #ifdef GRPC_FD_REF_COUNT_DEBUG
140
+ #ifndef NDEBUG
161
141
  static void fd_ref(grpc_fd *fd, const char *reason, const char *file, int line);
162
142
  static void fd_unref(grpc_fd *fd, const char *reason, const char *file,
163
143
  int line);
@@ -177,23 +157,21 @@ static void fd_global_shutdown(void);
177
157
  * Polling island Declarations
178
158
  */
179
159
 
180
- #ifdef GRPC_WORKQUEUE_REFCOUNT_DEBUG
160
+ #ifndef NDEBUG
181
161
 
182
162
  #define PI_ADD_REF(p, r) pi_add_ref_dbg((p), (r), __FILE__, __LINE__)
183
163
  #define PI_UNREF(exec_ctx, p, r) \
184
164
  pi_unref_dbg((exec_ctx), (p), (r), __FILE__, __LINE__)
185
165
 
186
- #else /* defined(GRPC_WORKQUEUE_REFCOUNT_DEBUG) */
166
+ #else
187
167
 
188
168
  #define PI_ADD_REF(p, r) pi_add_ref((p))
189
169
  #define PI_UNREF(exec_ctx, p, r) pi_unref((exec_ctx), (p))
190
170
 
191
- #endif /* !defined(GRPC_PI_REF_COUNT_DEBUG) */
171
+ #endif
192
172
 
193
173
  /* This is also used as grpc_workqueue (by directly casing it) */
194
174
  typedef struct polling_island {
195
- grpc_closure_scheduler workqueue_scheduler;
196
-
197
175
  gpr_mu mu;
198
176
  /* Ref count. Use PI_ADD_REF() and PI_UNREF() macros to increment/decrement
199
177
  the refcount.
@@ -214,15 +192,6 @@ typedef struct polling_island {
214
192
 
215
193
  /* Number of threads currently polling on this island */
216
194
  gpr_atm poller_count;
217
- /* Mutex guarding the read end of the workqueue (must be held to pop from
218
- * workqueue_items) */
219
- gpr_mu workqueue_read_mu;
220
- /* Queue of closures to be executed */
221
- gpr_mpscq workqueue_items;
222
- /* Count of items in workqueue_items */
223
- gpr_atm workqueue_item_count;
224
- /* Wakeup fd used to wake pollers to check the contents of workqueue_items */
225
- grpc_wakeup_fd workqueue_wakeup_fd;
226
195
 
227
196
  /* The fd of the underlying epoll set */
228
197
  int epoll_fd;
@@ -297,8 +266,6 @@ static __thread polling_island *g_current_thread_polling_island;
297
266
 
298
267
  /* Forward declaration */
299
268
  static void polling_island_delete(grpc_exec_ctx *exec_ctx, polling_island *pi);
300
- static void workqueue_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
301
- grpc_error *error);
302
269
 
303
270
  #ifdef GRPC_TSAN
304
271
  /* Currently TSAN may incorrectly flag data races between epoll_ctl and
@@ -311,57 +278,30 @@ static void workqueue_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
311
278
  gpr_atm g_epoll_sync;
312
279
  #endif /* defined(GRPC_TSAN) */
313
280
 
314
- static const grpc_closure_scheduler_vtable workqueue_scheduler_vtable = {
315
- workqueue_enqueue, workqueue_enqueue, "workqueue"};
316
-
317
281
  static void pi_add_ref(polling_island *pi);
318
282
  static void pi_unref(grpc_exec_ctx *exec_ctx, polling_island *pi);
319
283
 
320
- #ifdef GRPC_WORKQUEUE_REFCOUNT_DEBUG
284
+ #ifndef NDEBUG
321
285
  static void pi_add_ref_dbg(polling_island *pi, const char *reason,
322
286
  const char *file, int line) {
323
- long old_cnt = gpr_atm_acq_load(&pi->ref_count);
287
+ if (GRPC_TRACER_ON(grpc_polling_trace)) {
288
+ gpr_atm old_cnt = gpr_atm_acq_load(&pi->ref_count);
289
+ gpr_log(GPR_DEBUG, "Add ref pi: %p, old:%" PRIdPTR " -> new:%" PRIdPTR
290
+ " (%s) - (%s, %d)",
291
+ pi, old_cnt, old_cnt + 1, reason, file, line);
292
+ }
324
293
  pi_add_ref(pi);
325
- gpr_log(GPR_DEBUG, "Add ref pi: %p, old: %ld -> new:%ld (%s) - (%s, %d)",
326
- (void *)pi, old_cnt, old_cnt + 1, reason, file, line);
327
294
  }
328
295
 
329
296
  static void pi_unref_dbg(grpc_exec_ctx *exec_ctx, polling_island *pi,
330
297
  const char *reason, const char *file, int line) {
331
- long old_cnt = gpr_atm_acq_load(&pi->ref_count);
332
- pi_unref(exec_ctx, pi);
333
- gpr_log(GPR_DEBUG, "Unref pi: %p, old:%ld -> new:%ld (%s) - (%s, %d)",
334
- (void *)pi, old_cnt, (old_cnt - 1), reason, file, line);
335
- }
336
-
337
- static grpc_workqueue *workqueue_ref(grpc_workqueue *workqueue,
338
- const char *file, int line,
339
- const char *reason) {
340
- if (workqueue != NULL) {
341
- pi_add_ref_dbg((polling_island *)workqueue, reason, file, line);
342
- }
343
- return workqueue;
344
- }
345
-
346
- static void workqueue_unref(grpc_exec_ctx *exec_ctx, grpc_workqueue *workqueue,
347
- const char *file, int line, const char *reason) {
348
- if (workqueue != NULL) {
349
- pi_unref_dbg(exec_ctx, (polling_island *)workqueue, reason, file, line);
350
- }
351
- }
352
- #else
353
- static grpc_workqueue *workqueue_ref(grpc_workqueue *workqueue) {
354
- if (workqueue != NULL) {
355
- pi_add_ref((polling_island *)workqueue);
356
- }
357
- return workqueue;
358
- }
359
-
360
- static void workqueue_unref(grpc_exec_ctx *exec_ctx,
361
- grpc_workqueue *workqueue) {
362
- if (workqueue != NULL) {
363
- pi_unref(exec_ctx, (polling_island *)workqueue);
298
+ if (GRPC_TRACER_ON(grpc_polling_trace)) {
299
+ gpr_atm old_cnt = gpr_atm_acq_load(&pi->ref_count);
300
+ gpr_log(GPR_DEBUG, "Unref pi: %p, old:%" PRIdPTR " -> new:%" PRIdPTR
301
+ " (%s) - (%s, %d)",
302
+ pi, old_cnt, (old_cnt - 1), reason, file, line);
364
303
  }
304
+ pi_unref(exec_ctx, pi);
365
305
  }
366
306
  #endif
367
307
 
@@ -526,26 +466,16 @@ static polling_island *polling_island_create(grpc_exec_ctx *exec_ctx,
526
466
  *error = GRPC_ERROR_NONE;
527
467
 
528
468
  pi = gpr_malloc(sizeof(*pi));
529
- pi->workqueue_scheduler.vtable = &workqueue_scheduler_vtable;
530
469
  gpr_mu_init(&pi->mu);
531
470
  pi->fd_cnt = 0;
532
471
  pi->fd_capacity = 0;
533
472
  pi->fds = NULL;
534
473
  pi->epoll_fd = -1;
535
474
 
536
- gpr_mu_init(&pi->workqueue_read_mu);
537
- gpr_mpscq_init(&pi->workqueue_items);
538
- gpr_atm_rel_store(&pi->workqueue_item_count, 0);
539
-
540
475
  gpr_atm_rel_store(&pi->ref_count, 0);
541
476
  gpr_atm_rel_store(&pi->poller_count, 0);
542
477
  gpr_atm_rel_store(&pi->merged_to, (gpr_atm)NULL);
543
478
 
544
- if (!append_error(error, grpc_wakeup_fd_init(&pi->workqueue_wakeup_fd),
545
- err_desc)) {
546
- goto done;
547
- }
548
-
549
479
  pi->epoll_fd = epoll_create1(EPOLL_CLOEXEC);
550
480
 
551
481
  if (pi->epoll_fd < 0) {
@@ -553,8 +483,6 @@ static polling_island *polling_island_create(grpc_exec_ctx *exec_ctx,
553
483
  goto done;
554
484
  }
555
485
 
556
- polling_island_add_wakeup_fd_locked(pi, &pi->workqueue_wakeup_fd, error);
557
-
558
486
  if (initial_fd != NULL) {
559
487
  polling_island_add_fds_locked(pi, &initial_fd, 1, true, error);
560
488
  }
@@ -573,11 +501,7 @@ static void polling_island_delete(grpc_exec_ctx *exec_ctx, polling_island *pi) {
573
501
  if (pi->epoll_fd >= 0) {
574
502
  close(pi->epoll_fd);
575
503
  }
576
- GPR_ASSERT(gpr_atm_no_barrier_load(&pi->workqueue_item_count) == 0);
577
- gpr_mu_destroy(&pi->workqueue_read_mu);
578
- gpr_mpscq_destroy(&pi->workqueue_items);
579
504
  gpr_mu_destroy(&pi->mu);
580
- grpc_wakeup_fd_destroy(&pi->workqueue_wakeup_fd);
581
505
  gpr_free(pi->fds);
582
506
  gpr_free(pi);
583
507
  }
@@ -722,45 +646,6 @@ static void polling_island_unlock_pair(polling_island *p, polling_island *q) {
722
646
  }
723
647
  }
724
648
 
725
- static void workqueue_maybe_wakeup(polling_island *pi) {
726
- /* If this thread is the current poller, then it may be that it's about to
727
- decrement the current poller count, so we need to look past this thread */
728
- bool is_current_poller = (g_current_thread_polling_island == pi);
729
- gpr_atm min_current_pollers_for_wakeup = is_current_poller ? 1 : 0;
730
- gpr_atm current_pollers = gpr_atm_no_barrier_load(&pi->poller_count);
731
- /* Only issue a wakeup if it's likely that some poller could come in and take
732
- it right now. Note that since we do an anticipatory mpscq_pop every poll
733
- loop, it's ok if we miss the wakeup here, as we'll get the work item when
734
- the next poller enters anyway. */
735
- if (current_pollers >= min_current_pollers_for_wakeup) {
736
- GRPC_LOG_IF_ERROR("workqueue_wakeup_fd",
737
- grpc_wakeup_fd_wakeup(&pi->workqueue_wakeup_fd));
738
- }
739
- }
740
-
741
- static void workqueue_move_items_to_parent(polling_island *q) {
742
- polling_island *p = (polling_island *)gpr_atm_no_barrier_load(&q->merged_to);
743
- if (p == NULL) {
744
- return;
745
- }
746
- gpr_mu_lock(&q->workqueue_read_mu);
747
- int num_added = 0;
748
- while (gpr_atm_no_barrier_load(&q->workqueue_item_count) > 0) {
749
- gpr_mpscq_node *n = gpr_mpscq_pop(&q->workqueue_items);
750
- if (n != NULL) {
751
- gpr_atm_no_barrier_fetch_add(&q->workqueue_item_count, -1);
752
- gpr_atm_no_barrier_fetch_add(&p->workqueue_item_count, 1);
753
- gpr_mpscq_push(&p->workqueue_items, n);
754
- num_added++;
755
- }
756
- }
757
- gpr_mu_unlock(&q->workqueue_read_mu);
758
- if (num_added > 0) {
759
- workqueue_maybe_wakeup(p);
760
- }
761
- workqueue_move_items_to_parent(p);
762
- }
763
-
764
649
  static polling_island *polling_island_merge(polling_island *p,
765
650
  polling_island *q,
766
651
  grpc_error **error) {
@@ -785,8 +670,6 @@ static polling_island *polling_island_merge(polling_island *p,
785
670
  /* Add the 'merged_to' link from p --> q */
786
671
  gpr_atm_rel_store(&p->merged_to, (gpr_atm)q);
787
672
  PI_ADD_REF(q, "pi_merge"); /* To account for the new incoming ref from p */
788
-
789
- workqueue_move_items_to_parent(p);
790
673
  }
791
674
  /* else if p == q, nothing needs to be done */
792
675
 
@@ -797,32 +680,6 @@ static polling_island *polling_island_merge(polling_island *p,
797
680
  return q;
798
681
  }
799
682
 
800
- static void workqueue_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
801
- grpc_error *error) {
802
- GPR_TIMER_BEGIN("workqueue.enqueue", 0);
803
- grpc_workqueue *workqueue = (grpc_workqueue *)closure->scheduler;
804
- /* take a ref to the workqueue: otherwise it can happen that whatever events
805
- * this kicks off ends up destroying the workqueue before this function
806
- * completes */
807
- GRPC_WORKQUEUE_REF(workqueue, "enqueue");
808
- polling_island *pi = (polling_island *)workqueue;
809
- gpr_atm last = gpr_atm_no_barrier_fetch_add(&pi->workqueue_item_count, 1);
810
- closure->error_data.error = error;
811
- gpr_mpscq_push(&pi->workqueue_items, &closure->next_data.atm_next);
812
- if (last == 0) {
813
- workqueue_maybe_wakeup(pi);
814
- }
815
- workqueue_move_items_to_parent(pi);
816
- GRPC_WORKQUEUE_UNREF(exec_ctx, workqueue, "enqueue");
817
- GPR_TIMER_END("workqueue.enqueue", 0);
818
- }
819
-
820
- static grpc_closure_scheduler *workqueue_scheduler(grpc_workqueue *workqueue) {
821
- polling_island *pi = (polling_island *)workqueue;
822
- return workqueue == NULL ? grpc_schedule_on_exec_ctx
823
- : &pi->workqueue_scheduler;
824
- }
825
-
826
683
  static grpc_error *polling_island_global_init() {
827
684
  grpc_error *error = GRPC_ERROR_NONE;
828
685
 
@@ -863,14 +720,17 @@ static void polling_island_global_shutdown() {
863
720
  static grpc_fd *fd_freelist = NULL;
864
721
  static gpr_mu fd_freelist_mu;
865
722
 
866
- #ifdef GRPC_FD_REF_COUNT_DEBUG
723
+ #ifndef NDEBUG
867
724
  #define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
868
725
  #define UNREF_BY(fd, n, reason) unref_by(fd, n, reason, __FILE__, __LINE__)
869
726
  static void ref_by(grpc_fd *fd, int n, const char *reason, const char *file,
870
727
  int line) {
871
- gpr_log(GPR_DEBUG, "FD %d %p ref %d %ld -> %ld [%s; %s:%d]", fd->fd,
872
- (void *)fd, n, gpr_atm_no_barrier_load(&fd->refst),
873
- gpr_atm_no_barrier_load(&fd->refst) + n, reason, file, line);
728
+ if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
729
+ gpr_log(GPR_DEBUG,
730
+ "FD %d %p ref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
731
+ fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
732
+ gpr_atm_no_barrier_load(&fd->refst) + n, reason, file, line);
733
+ }
874
734
  #else
875
735
  #define REF_BY(fd, n, reason) ref_by(fd, n)
876
736
  #define UNREF_BY(fd, n, reason) unref_by(fd, n)
@@ -879,18 +739,19 @@ static void ref_by(grpc_fd *fd, int n) {
879
739
  GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&fd->refst, n) > 0);
880
740
  }
881
741
 
882
- #ifdef GRPC_FD_REF_COUNT_DEBUG
742
+ #ifndef NDEBUG
883
743
  static void unref_by(grpc_fd *fd, int n, const char *reason, const char *file,
884
744
  int line) {
885
- gpr_atm old;
886
- gpr_log(GPR_DEBUG, "FD %d %p unref %d %ld -> %ld [%s; %s:%d]", fd->fd,
887
- (void *)fd, n, gpr_atm_no_barrier_load(&fd->refst),
888
- gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line);
745
+ if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
746
+ gpr_log(GPR_DEBUG,
747
+ "FD %d %p unref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
748
+ fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
749
+ gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line);
750
+ }
889
751
  #else
890
752
  static void unref_by(grpc_fd *fd, int n) {
891
- gpr_atm old;
892
753
  #endif
893
- old = gpr_atm_full_fetch_add(&fd->refst, -n);
754
+ gpr_atm old = gpr_atm_full_fetch_add(&fd->refst, -n);
894
755
  if (old == n) {
895
756
  /* Add the fd to the freelist */
896
757
  gpr_mu_lock(&fd_freelist_mu);
@@ -908,7 +769,7 @@ static void unref_by(grpc_fd *fd, int n) {
908
769
  }
909
770
 
910
771
  /* Increment refcount by two to avoid changing the orphan bit */
911
- #ifdef GRPC_FD_REF_COUNT_DEBUG
772
+ #ifndef NDEBUG
912
773
  static void fd_ref(grpc_fd *fd, const char *reason, const char *file,
913
774
  int line) {
914
775
  ref_by(fd, 2, reason, file, line);
@@ -957,7 +818,7 @@ static grpc_fd *fd_create(int fd, const char *name) {
957
818
  * would be holding a lock to it anyway. */
958
819
  gpr_mu_lock(&new_fd->po.mu);
959
820
  new_fd->po.pi = NULL;
960
- #ifdef PO_DEBUG
821
+ #ifndef NDEBUG
961
822
  new_fd->po.obj_type = POLL_OBJ_FD;
962
823
  #endif
963
824
 
@@ -976,9 +837,6 @@ static grpc_fd *fd_create(int fd, const char *name) {
976
837
  char *fd_name;
977
838
  gpr_asprintf(&fd_name, "%s fd=%d", name, fd);
978
839
  grpc_iomgr_register_object(&new_fd->iomgr_object, fd_name);
979
- #ifdef GRPC_FD_REF_COUNT_DEBUG
980
- gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, (void *)new_fd, fd_name);
981
- #endif
982
840
  gpr_free(fd_name);
983
841
  return new_fd;
984
842
  }
@@ -996,25 +854,13 @@ static int fd_wrapped_fd(grpc_fd *fd) {
996
854
 
997
855
  static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
998
856
  grpc_closure *on_done, int *release_fd,
999
- const char *reason) {
1000
- bool is_fd_closed = false;
857
+ bool already_closed, const char *reason) {
1001
858
  grpc_error *error = GRPC_ERROR_NONE;
1002
859
  polling_island *unref_pi = NULL;
1003
860
 
1004
861
  gpr_mu_lock(&fd->po.mu);
1005
862
  fd->on_done_closure = on_done;
1006
863
 
1007
- /* If release_fd is not NULL, we should be relinquishing control of the file
1008
- descriptor fd->fd (but we still own the grpc_fd structure). */
1009
- if (release_fd != NULL) {
1010
- *release_fd = fd->fd;
1011
- } else {
1012
- close(fd->fd);
1013
- is_fd_closed = true;
1014
- }
1015
-
1016
- fd->orphaned = true;
1017
-
1018
864
  /* Remove the active status but keep referenced. We want this grpc_fd struct
1019
865
  to be alive (and not added to freelist) until the end of this function */
1020
866
  REF_BY(fd, 1, reason);
@@ -1029,14 +875,24 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
1029
875
  before doing this.) */
1030
876
  if (fd->po.pi != NULL) {
1031
877
  polling_island *pi_latest = polling_island_lock(fd->po.pi);
1032
- polling_island_remove_fd_locked(pi_latest, fd, is_fd_closed, &error);
878
+ polling_island_remove_fd_locked(pi_latest, fd, already_closed, &error);
1033
879
  gpr_mu_unlock(&pi_latest->mu);
1034
880
 
1035
881
  unref_pi = fd->po.pi;
1036
882
  fd->po.pi = NULL;
1037
883
  }
1038
884
 
1039
- grpc_closure_sched(exec_ctx, fd->on_done_closure, GRPC_ERROR_REF(error));
885
+ /* If release_fd is not NULL, we should be relinquishing control of the file
886
+ descriptor fd->fd (but we still own the grpc_fd structure). */
887
+ if (release_fd != NULL) {
888
+ *release_fd = fd->fd;
889
+ } else {
890
+ close(fd->fd);
891
+ }
892
+
893
+ fd->orphaned = true;
894
+
895
+ GRPC_CLOSURE_SCHED(exec_ctx, fd->on_done_closure, GRPC_ERROR_REF(error));
1040
896
 
1041
897
  gpr_mu_unlock(&fd->po.mu);
1042
898
  UNREF_BY(fd, 2, reason); /* Drop the reference */
@@ -1047,7 +903,10 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
1047
903
  unhappy. */
1048
904
  PI_UNREF(exec_ctx, unref_pi, "fd_orphan");
1049
905
  }
1050
- GRPC_LOG_IF_ERROR("fd_orphan", GRPC_ERROR_REF(error));
906
+ if (error != GRPC_ERROR_NONE) {
907
+ const char *msg = grpc_error_string(error);
908
+ gpr_log(GPR_DEBUG, "fd_orphan: %s", msg);
909
+ }
1051
910
  GRPC_ERROR_UNREF(error);
1052
911
  }
1053
912
 
@@ -1073,20 +932,12 @@ static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) {
1073
932
 
1074
933
  static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
1075
934
  grpc_closure *closure) {
1076
- grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure);
935
+ grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure, "read");
1077
936
  }
1078
937
 
1079
938
  static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
1080
939
  grpc_closure *closure) {
1081
- grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure);
1082
- }
1083
-
1084
- static grpc_workqueue *fd_get_workqueue(grpc_fd *fd) {
1085
- gpr_mu_lock(&fd->po.mu);
1086
- grpc_workqueue *workqueue =
1087
- GRPC_WORKQUEUE_REF((grpc_workqueue *)fd->po.pi, "fd_get_workqueue");
1088
- gpr_mu_unlock(&fd->po.mu);
1089
- return workqueue;
940
+ grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure, "write");
1090
941
  }
1091
942
 
1092
943
  /*******************************************************************************
@@ -1223,7 +1074,7 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) {
1223
1074
  gpr_mu_init(&pollset->po.mu);
1224
1075
  *mu = &pollset->po.mu;
1225
1076
  pollset->po.pi = NULL;
1226
- #ifdef PO_DEBUG
1077
+ #ifndef NDEBUG
1227
1078
  pollset->po.obj_type = POLL_OBJ_POLLSET;
1228
1079
  #endif
1229
1080
 
@@ -1263,7 +1114,7 @@ static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
1263
1114
 
1264
1115
  static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
1265
1116
  grpc_pollset *notifier) {
1266
- grpc_lfev_set_ready(exec_ctx, &fd->read_closure);
1117
+ grpc_lfev_set_ready(exec_ctx, &fd->read_closure, "read");
1267
1118
 
1268
1119
  /* Note, it is possible that fd_become_readable might be called twice with
1269
1120
  different 'notifier's when an fd becomes readable and it is in two epoll
@@ -1275,7 +1126,7 @@ static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
1275
1126
  }
1276
1127
 
1277
1128
  static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
1278
- grpc_lfev_set_ready(exec_ctx, &fd->write_closure);
1129
+ grpc_lfev_set_ready(exec_ctx, &fd->write_closure, "write");
1279
1130
  }
1280
1131
 
1281
1132
  static void pollset_release_polling_island(grpc_exec_ctx *exec_ctx,
@@ -1295,7 +1146,7 @@ static void finish_shutdown_locked(grpc_exec_ctx *exec_ctx,
1295
1146
 
1296
1147
  /* Release the ref and set pollset->po.pi to NULL */
1297
1148
  pollset_release_polling_island(exec_ctx, pollset, "ps_shutdown");
1298
- grpc_closure_sched(exec_ctx, pollset->shutdown_done, GRPC_ERROR_NONE);
1149
+ GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_done, GRPC_ERROR_NONE);
1299
1150
  }
1300
1151
 
1301
1152
  /* pollset->po.mu lock must be held by the caller before calling this */
@@ -1326,44 +1177,6 @@ static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
1326
1177
  gpr_mu_destroy(&pollset->po.mu);
1327
1178
  }
1328
1179
 
1329
- static bool maybe_do_workqueue_work(grpc_exec_ctx *exec_ctx,
1330
- polling_island *pi) {
1331
- if (gpr_mu_trylock(&pi->workqueue_read_mu)) {
1332
- gpr_mpscq_node *n = gpr_mpscq_pop(&pi->workqueue_items);
1333
- gpr_mu_unlock(&pi->workqueue_read_mu);
1334
- if (n != NULL) {
1335
- gpr_atm remaining =
1336
- gpr_atm_full_fetch_add(&pi->workqueue_item_count, -1) - 1;
1337
- GRPC_POLLING_TRACE(
1338
- "maybe_do_workqueue_work: pi: %p: got closure %p, remaining = "
1339
- "%" PRIdPTR,
1340
- pi, n, remaining);
1341
- if (remaining > 0) {
1342
- workqueue_maybe_wakeup(pi);
1343
- }
1344
- grpc_closure *c = (grpc_closure *)n;
1345
- grpc_error *error = c->error_data.error;
1346
- #ifndef NDEBUG
1347
- c->scheduled = false;
1348
- #endif
1349
- c->cb(exec_ctx, c->cb_arg, error);
1350
- GRPC_ERROR_UNREF(error);
1351
- return true;
1352
- } else if (gpr_atm_no_barrier_load(&pi->workqueue_item_count) > 0) {
1353
- /* n == NULL might mean there's work but it's not available to be popped
1354
- * yet - try to ensure another workqueue wakes up to check shortly if so
1355
- */
1356
- GRPC_POLLING_TRACE(
1357
- "maybe_do_workqueue_work: pi: %p: more to do, but not yet", pi);
1358
- workqueue_maybe_wakeup(pi);
1359
- }
1360
- } else {
1361
- GRPC_POLLING_TRACE("maybe_do_workqueue_work: pi: %p: read already locked",
1362
- pi);
1363
- }
1364
- return false;
1365
- }
1366
-
1367
1180
  #define GRPC_EPOLL_MAX_EVENTS 100
1368
1181
  /* Note: sig_mask contains the signal mask to use *during* epoll_wait() */
1369
1182
  static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx,
@@ -1419,76 +1232,61 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx,
1419
1232
  PI_ADD_REF(pi, "ps_work");
1420
1233
  gpr_mu_unlock(&pollset->po.mu);
1421
1234
 
1422
- /* If we get some workqueue work to do, it might end up completing an item on
1423
- the completion queue, so there's no need to poll... so we skip that and
1424
- redo the complete loop to verify */
1425
- GRPC_POLLING_TRACE("pollset_work: pollset: %p, worker %p, pi %p", pollset,
1426
- worker, pi);
1427
- if (!maybe_do_workqueue_work(exec_ctx, pi)) {
1428
- GRPC_POLLING_TRACE("pollset_work: begins");
1429
- gpr_atm_no_barrier_fetch_add(&pi->poller_count, 1);
1430
- g_current_thread_polling_island = pi;
1431
-
1432
- GRPC_SCHEDULING_START_BLOCKING_REGION;
1433
- ep_rv = epoll_pwait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, timeout_ms,
1434
- sig_mask);
1435
- GRPC_SCHEDULING_END_BLOCKING_REGION;
1436
- if (ep_rv < 0) {
1437
- if (errno != EINTR) {
1438
- gpr_asprintf(&err_msg,
1439
- "epoll_wait() epoll fd: %d failed with error: %d (%s)",
1440
- epoll_fd, errno, strerror(errno));
1441
- append_error(error, GRPC_OS_ERROR(errno, err_msg), err_desc);
1442
- } else {
1443
- /* We were interrupted. Save an interation by doing a zero timeout
1444
- epoll_wait to see if there are any other events of interest */
1445
- GRPC_POLLING_TRACE(
1446
- "pollset_work: pollset: %p, worker: %p received kick",
1447
- (void *)pollset, (void *)worker);
1448
- ep_rv = epoll_wait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, 0);
1449
- }
1235
+ gpr_atm_no_barrier_fetch_add(&pi->poller_count, 1);
1236
+ g_current_thread_polling_island = pi;
1237
+
1238
+ GRPC_SCHEDULING_START_BLOCKING_REGION;
1239
+ ep_rv =
1240
+ epoll_pwait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, timeout_ms, sig_mask);
1241
+ GRPC_SCHEDULING_END_BLOCKING_REGION;
1242
+ if (ep_rv < 0) {
1243
+ if (errno != EINTR) {
1244
+ gpr_asprintf(&err_msg,
1245
+ "epoll_wait() epoll fd: %d failed with error: %d (%s)",
1246
+ epoll_fd, errno, strerror(errno));
1247
+ append_error(error, GRPC_OS_ERROR(errno, err_msg), err_desc);
1248
+ } else {
1249
+ /* We were interrupted. Save an interation by doing a zero timeout
1250
+ epoll_wait to see if there are any other events of interest */
1251
+ GRPC_POLLING_TRACE("pollset_work: pollset: %p, worker: %p received kick",
1252
+ (void *)pollset, (void *)worker);
1253
+ ep_rv = epoll_wait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, 0);
1450
1254
  }
1255
+ }
1451
1256
 
1452
1257
  #ifdef GRPC_TSAN
1453
- /* See the definition of g_poll_sync for more details */
1454
- gpr_atm_acq_load(&g_epoll_sync);
1258
+ /* See the definition of g_poll_sync for more details */
1259
+ gpr_atm_acq_load(&g_epoll_sync);
1455
1260
  #endif /* defined(GRPC_TSAN) */
1456
1261
 
1457
- for (int i = 0; i < ep_rv; ++i) {
1458
- void *data_ptr = ep_ev[i].data.ptr;
1459
- if (data_ptr == &pi->workqueue_wakeup_fd) {
1460
- append_error(error,
1461
- grpc_wakeup_fd_consume_wakeup(&pi->workqueue_wakeup_fd),
1462
- err_desc);
1463
- maybe_do_workqueue_work(exec_ctx, pi);
1464
- } else if (data_ptr == &polling_island_wakeup_fd) {
1465
- GRPC_POLLING_TRACE(
1466
- "pollset_work: pollset: %p, worker: %p polling island (epoll_fd: "
1467
- "%d) got merged",
1468
- (void *)pollset, (void *)worker, epoll_fd);
1469
- /* This means that our polling island is merged with a different
1470
- island. We do not have to do anything here since the subsequent call
1471
- to the function pollset_work_and_unlock() will pick up the correct
1472
- epoll_fd */
1473
- } else {
1474
- grpc_fd *fd = data_ptr;
1475
- int cancel = ep_ev[i].events & (EPOLLERR | EPOLLHUP);
1476
- int read_ev = ep_ev[i].events & (EPOLLIN | EPOLLPRI);
1477
- int write_ev = ep_ev[i].events & EPOLLOUT;
1478
- if (read_ev || cancel) {
1479
- fd_become_readable(exec_ctx, fd, pollset);
1480
- }
1481
- if (write_ev || cancel) {
1482
- fd_become_writable(exec_ctx, fd);
1483
- }
1262
+ for (int i = 0; i < ep_rv; ++i) {
1263
+ void *data_ptr = ep_ev[i].data.ptr;
1264
+ if (data_ptr == &polling_island_wakeup_fd) {
1265
+ GRPC_POLLING_TRACE(
1266
+ "pollset_work: pollset: %p, worker: %p polling island (epoll_fd: "
1267
+ "%d) got merged",
1268
+ (void *)pollset, (void *)worker, epoll_fd);
1269
+ /* This means that our polling island is merged with a different
1270
+ island. We do not have to do anything here since the subsequent call
1271
+ to the function pollset_work_and_unlock() will pick up the correct
1272
+ epoll_fd */
1273
+ } else {
1274
+ grpc_fd *fd = data_ptr;
1275
+ int cancel = ep_ev[i].events & (EPOLLERR | EPOLLHUP);
1276
+ int read_ev = ep_ev[i].events & (EPOLLIN | EPOLLPRI);
1277
+ int write_ev = ep_ev[i].events & EPOLLOUT;
1278
+ if (read_ev || cancel) {
1279
+ fd_become_readable(exec_ctx, fd, pollset);
1280
+ }
1281
+ if (write_ev || cancel) {
1282
+ fd_become_writable(exec_ctx, fd);
1484
1283
  }
1485
1284
  }
1486
-
1487
- g_current_thread_polling_island = NULL;
1488
- gpr_atm_no_barrier_fetch_add(&pi->poller_count, -1);
1489
- GRPC_POLLING_TRACE("pollset_work: ends");
1490
1285
  }
1491
1286
 
1287
+ g_current_thread_polling_island = NULL;
1288
+ gpr_atm_no_barrier_fetch_add(&pi->poller_count, -1);
1289
+
1492
1290
  GPR_ASSERT(pi != NULL);
1493
1291
 
1494
1292
  /* Before leaving, release the extra ref we added to the polling island. It
@@ -1613,7 +1411,7 @@ static void add_poll_object(grpc_exec_ctx *exec_ctx, poll_obj *bag,
1613
1411
  poll_obj_type item_type) {
1614
1412
  GPR_TIMER_BEGIN("add_poll_object", 0);
1615
1413
 
1616
- #ifdef PO_DEBUG
1414
+ #ifndef NDEBUG
1617
1415
  GPR_ASSERT(item->obj_type == item_type);
1618
1416
  GPR_ASSERT(bag->obj_type == bag_type);
1619
1417
  #endif
@@ -1772,7 +1570,7 @@ static grpc_pollset_set *pollset_set_create(void) {
1772
1570
  grpc_pollset_set *pss = gpr_malloc(sizeof(*pss));
1773
1571
  gpr_mu_init(&pss->po.mu);
1774
1572
  pss->po.pi = NULL;
1775
- #ifdef PO_DEBUG
1573
+ #ifndef NDEBUG
1776
1574
  pss->po.obj_type = POLL_OBJ_POLLSET_SET;
1777
1575
  #endif
1778
1576
  return pss;
@@ -1879,7 +1677,6 @@ static const grpc_event_engine_vtable vtable = {
1879
1677
  .fd_notify_on_read = fd_notify_on_read,
1880
1678
  .fd_notify_on_write = fd_notify_on_write,
1881
1679
  .fd_get_read_notifier_pollset = fd_get_read_notifier_pollset,
1882
- .fd_get_workqueue = fd_get_workqueue,
1883
1680
 
1884
1681
  .pollset_init = pollset_init,
1885
1682
  .pollset_shutdown = pollset_shutdown,
@@ -1897,10 +1694,6 @@ static const grpc_event_engine_vtable vtable = {
1897
1694
  .pollset_set_add_fd = pollset_set_add_fd,
1898
1695
  .pollset_set_del_fd = pollset_set_del_fd,
1899
1696
 
1900
- .workqueue_ref = workqueue_ref,
1901
- .workqueue_unref = workqueue_unref,
1902
- .workqueue_scheduler = workqueue_scheduler,
1903
-
1904
1697
  .shutdown_engine = shutdown_engine,
1905
1698
  };
1906
1699