grpc 1.18.0 → 1.22.0

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 (428) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +4731 -7404
  3. data/etc/roots.pem +146 -0
  4. data/include/grpc/grpc.h +11 -6
  5. data/include/grpc/grpc_security.h +297 -4
  6. data/include/grpc/grpc_security_constants.h +1 -1
  7. data/include/grpc/impl/codegen/byte_buffer.h +13 -0
  8. data/include/grpc/impl/codegen/gpr_types.h +1 -1
  9. data/include/grpc/impl/codegen/grpc_types.h +30 -7
  10. data/include/grpc/impl/codegen/port_platform.h +88 -7
  11. data/include/grpc/impl/codegen/slice.h +2 -22
  12. data/include/grpc/impl/codegen/status.h +2 -1
  13. data/include/grpc/impl/codegen/sync_posix.h +18 -0
  14. data/include/grpc/slice.h +3 -3
  15. data/src/core/ext/filters/client_channel/backup_poller.cc +21 -16
  16. data/src/core/ext/filters/client_channel/backup_poller.h +8 -2
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +3 -1
  18. data/src/core/ext/filters/client_channel/client_channel.cc +2435 -1557
  19. data/src/core/ext/filters/client_channel/client_channel.h +2 -10
  20. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -89
  21. data/src/core/ext/filters/client_channel/client_channel_channelz.h +8 -33
  22. data/src/core/ext/filters/client_channel/client_channel_factory.cc +22 -34
  23. data/src/core/ext/filters/client_channel/client_channel_factory.h +19 -38
  24. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -11
  25. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +179 -0
  26. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +68 -0
  27. data/src/core/ext/filters/client_channel/health/health_check_client.cc +59 -55
  28. data/src/core/ext/filters/client_channel/health/health_check_client.h +20 -9
  29. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +146 -157
  30. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +29 -32
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +844 -859
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +3 -1
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -6
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +6 -2
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +14 -12
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +16 -12
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -3
  39. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +185 -312
  40. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +143 -375
  41. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +192 -245
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +1554 -955
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_secure.cc +0 -43
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.cc +14 -10
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +2 -2
  46. data/src/core/ext/filters/client_channel/lb_policy.cc +115 -22
  47. data/src/core/ext/filters/client_channel/lb_policy.h +260 -129
  48. data/src/core/ext/filters/client_channel/lb_policy_factory.h +5 -2
  49. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +107 -4
  50. data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -3
  51. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +96 -0
  52. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +56 -0
  53. data/src/core/ext/filters/client_channel/parse_address.cc +24 -5
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +121 -122
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +84 -2
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -0
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +179 -0
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +24 -10
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +111 -47
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +7 -13
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +39 -0
  63. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +0 -6
  64. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -64
  65. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +28 -0
  66. data/src/core/{lib/iomgr/network_status_tracker.cc → ext/filters/client_channel/resolver/dns/dns_resolver_selection.h} +8 -15
  67. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +36 -82
  68. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +111 -72
  69. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +13 -8
  70. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +28 -63
  71. data/src/core/ext/filters/client_channel/resolver.cc +54 -1
  72. data/src/core/ext/filters/client_channel/resolver.h +52 -23
  73. data/src/core/ext/filters/client_channel/resolver_factory.h +3 -1
  74. data/src/core/ext/filters/client_channel/resolver_registry.cc +5 -2
  75. data/src/core/ext/filters/client_channel/resolver_registry.h +5 -4
  76. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +368 -241
  77. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +58 -76
  78. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +543 -0
  79. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +139 -0
  80. data/src/core/ext/filters/client_channel/server_address.cc +4 -54
  81. data/src/core/ext/filters/client_channel/server_address.h +1 -13
  82. data/src/core/ext/filters/client_channel/service_config.cc +329 -0
  83. data/src/core/ext/filters/client_channel/service_config.h +205 -0
  84. data/src/core/ext/filters/client_channel/subchannel.cc +803 -838
  85. data/src/core/ext/filters/client_channel/subchannel.h +295 -128
  86. data/src/core/ext/filters/client_channel/subchannel_interface.h +113 -0
  87. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +97 -0
  88. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +94 -0
  89. data/src/core/ext/filters/deadline/deadline_filter.cc +3 -4
  90. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  91. data/src/core/ext/filters/http/client/http_client_filter.cc +7 -5
  92. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  93. data/src/core/ext/filters/http/client_authority_filter.cc +6 -3
  94. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +4 -3
  95. data/src/core/ext/filters/http/server/http_server_filter.cc +18 -12
  96. data/src/core/ext/filters/max_age/max_age_filter.cc +5 -2
  97. data/src/core/ext/filters/message_size/message_size_filter.cc +119 -77
  98. data/src/core/ext/filters/message_size/message_size_filter.h +33 -0
  99. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -1
  100. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +13 -12
  101. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +45 -47
  102. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +134 -143
  103. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +68 -21
  104. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -4
  105. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +4 -4
  106. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +7 -6
  107. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +4 -3
  108. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +9 -7
  109. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +156 -94
  110. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
  111. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
  112. data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -37
  113. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  114. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -5
  115. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -2
  116. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -4
  117. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -1
  118. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +8 -6
  119. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -1
  120. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -4
  121. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
  122. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -6
  123. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
  124. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +74 -55
  125. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +33 -11
  126. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -2
  127. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +7 -14
  128. data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -1
  129. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +9 -5
  130. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +9 -3
  131. data/src/core/ext/transport/chttp2/transport/internal.h +43 -30
  132. data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -70
  133. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
  134. data/src/core/ext/transport/chttp2/transport/writing.cc +70 -33
  135. data/src/core/ext/transport/inproc/inproc_transport.cc +26 -18
  136. data/src/core/lib/channel/channel_args.cc +2 -101
  137. data/src/core/lib/channel/channel_args.h +3 -37
  138. data/src/core/lib/channel/channel_stack.h +10 -6
  139. data/src/core/lib/channel/channel_trace.cc +4 -4
  140. data/src/core/lib/channel/channel_trace.h +4 -4
  141. data/src/core/lib/channel/channelz.cc +168 -38
  142. data/src/core/lib/channel/channelz.h +40 -44
  143. data/src/core/lib/channel/channelz_registry.cc +75 -107
  144. data/src/core/lib/channel/channelz_registry.h +10 -28
  145. data/src/core/lib/channel/connected_channel.cc +2 -2
  146. data/src/core/lib/channel/context.h +2 -2
  147. data/src/core/lib/channel/handshaker.cc +151 -218
  148. data/src/core/lib/channel/handshaker.h +110 -101
  149. data/src/core/lib/channel/handshaker_factory.h +11 -19
  150. data/src/core/lib/channel/handshaker_registry.cc +67 -51
  151. data/src/core/lib/channel/handshaker_registry.h +21 -16
  152. data/src/core/lib/compression/algorithm_metadata.h +3 -3
  153. data/src/core/lib/compression/compression.cc +14 -9
  154. data/src/core/lib/compression/compression_args.cc +127 -0
  155. data/src/core/lib/compression/compression_args.h +55 -0
  156. data/src/core/lib/compression/compression_internal.cc +16 -12
  157. data/src/core/lib/compression/compression_internal.h +1 -1
  158. data/src/core/lib/compression/stream_compression.cc +3 -2
  159. data/src/core/lib/compression/stream_compression.h +2 -2
  160. data/src/core/lib/compression/stream_compression_gzip.cc +9 -9
  161. data/src/core/lib/debug/trace.cc +13 -7
  162. data/src/core/lib/debug/trace.h +14 -1
  163. data/src/core/lib/gpr/arena.h +13 -9
  164. data/src/core/lib/gpr/cpu_posix.cc +5 -3
  165. data/src/core/lib/gpr/env.h +3 -6
  166. data/src/core/lib/gpr/env_linux.cc +6 -1
  167. data/src/core/lib/gpr/env_posix.cc +5 -0
  168. data/src/core/lib/gpr/env_windows.cc +7 -5
  169. data/src/core/lib/gpr/log.cc +9 -13
  170. data/src/core/lib/gpr/log_posix.cc +2 -1
  171. data/src/core/lib/gpr/string.cc +20 -7
  172. data/src/core/lib/gpr/string.h +10 -3
  173. data/src/core/lib/gpr/sync_posix.cc +65 -4
  174. data/src/core/lib/gpr/time.cc +8 -0
  175. data/src/core/lib/gpr/time_posix.cc +21 -2
  176. data/src/core/lib/gprpp/arena.cc +103 -0
  177. data/src/core/lib/gprpp/arena.h +121 -0
  178. data/src/core/lib/gprpp/atomic.h +75 -5
  179. data/src/core/lib/gprpp/fork.cc +13 -32
  180. data/src/core/lib/gprpp/fork.h +5 -1
  181. data/src/core/lib/gprpp/global_config.h +96 -0
  182. data/src/core/lib/gprpp/global_config_custom.h +29 -0
  183. data/src/core/lib/gprpp/global_config_env.cc +135 -0
  184. data/src/core/lib/gprpp/global_config_env.h +131 -0
  185. data/src/core/lib/gprpp/global_config_generic.h +44 -0
  186. data/src/core/lib/gprpp/inlined_vector.h +8 -0
  187. data/src/core/lib/gprpp/map.h +436 -0
  188. data/src/core/lib/gprpp/memory.h +2 -2
  189. data/src/core/lib/gprpp/optional.h +48 -0
  190. data/src/core/lib/gprpp/orphanable.h +6 -5
  191. data/src/core/lib/gprpp/{mutex_lock.h → pair.h} +15 -19
  192. data/src/core/lib/gprpp/ref_counted.h +36 -17
  193. data/src/core/lib/gprpp/sync.h +126 -0
  194. data/src/core/lib/gprpp/thd.h +42 -7
  195. data/src/core/lib/gprpp/thd_posix.cc +31 -13
  196. data/src/core/lib/gprpp/thd_windows.cc +47 -34
  197. data/src/core/lib/http/httpcli.cc +6 -5
  198. data/src/core/lib/http/httpcli_security_connector.cc +13 -15
  199. data/src/core/lib/http/parser.cc +3 -2
  200. data/src/core/lib/http/parser.h +2 -1
  201. data/src/core/lib/iomgr/buffer_list.cc +182 -24
  202. data/src/core/lib/iomgr/buffer_list.h +72 -10
  203. data/src/core/lib/iomgr/call_combiner.cc +84 -90
  204. data/src/core/lib/iomgr/call_combiner.h +75 -82
  205. data/src/core/lib/iomgr/cfstream_handle.cc +203 -0
  206. data/src/core/lib/iomgr/cfstream_handle.h +86 -0
  207. data/src/core/lib/iomgr/combiner.cc +11 -3
  208. data/src/core/lib/iomgr/combiner.h +1 -1
  209. data/src/core/lib/iomgr/endpoint.cc +2 -2
  210. data/src/core/lib/iomgr/endpoint.h +3 -2
  211. data/src/core/lib/iomgr/endpoint_cfstream.cc +375 -0
  212. data/src/core/lib/iomgr/endpoint_cfstream.h +49 -0
  213. data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
  214. data/src/core/lib/iomgr/error.cc +21 -17
  215. data/src/core/lib/iomgr/error.h +36 -6
  216. data/src/core/lib/iomgr/error_cfstream.cc +52 -0
  217. data/src/core/lib/iomgr/error_cfstream.h +31 -0
  218. data/src/core/lib/iomgr/error_internal.h +1 -1
  219. data/src/core/lib/iomgr/ev_epoll1_linux.cc +44 -28
  220. data/src/core/lib/iomgr/ev_epollex_linux.cc +173 -194
  221. data/src/core/lib/iomgr/ev_poll_posix.cc +16 -487
  222. data/src/core/lib/iomgr/ev_posix.cc +29 -19
  223. data/src/core/lib/iomgr/ev_posix.h +19 -3
  224. data/src/core/lib/iomgr/ev_windows.cc +2 -2
  225. data/src/core/lib/iomgr/exec_ctx.cc +1 -0
  226. data/src/core/lib/iomgr/exec_ctx.h +137 -8
  227. data/src/core/lib/iomgr/executor.cc +147 -95
  228. data/src/core/lib/iomgr/executor.h +55 -49
  229. data/src/core/lib/iomgr/fork_posix.cc +6 -5
  230. data/src/core/lib/{gprpp/atomic_with_std.h → iomgr/grpc_if_nametoindex.h} +8 -13
  231. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +42 -0
  232. data/src/core/lib/iomgr/{network_status_tracker.h → grpc_if_nametoindex_unsupported.cc} +15 -9
  233. data/src/core/lib/iomgr/internal_errqueue.cc +3 -5
  234. data/src/core/lib/iomgr/internal_errqueue.h +105 -3
  235. data/src/core/lib/iomgr/iomgr.cc +20 -13
  236. data/src/core/lib/iomgr/iomgr.h +15 -0
  237. data/src/core/lib/iomgr/iomgr_custom.cc +17 -3
  238. data/src/core/lib/iomgr/iomgr_custom.h +2 -0
  239. data/src/core/lib/iomgr/iomgr_internal.cc +10 -0
  240. data/src/core/lib/iomgr/iomgr_internal.h +12 -0
  241. data/src/core/lib/iomgr/iomgr_posix.cc +19 -2
  242. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +93 -0
  243. data/src/core/lib/iomgr/iomgr_windows.cc +18 -2
  244. data/src/core/lib/iomgr/lockfree_event.cc +4 -4
  245. data/src/core/lib/iomgr/port.h +35 -0
  246. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -3
  247. data/src/core/lib/iomgr/resolve_address_windows.cc +2 -1
  248. data/src/core/lib/iomgr/resource_quota.cc +40 -37
  249. data/src/core/lib/iomgr/socket_utils_common_posix.cc +6 -2
  250. data/src/core/lib/iomgr/socket_windows.cc +19 -0
  251. data/src/core/lib/iomgr/socket_windows.h +8 -0
  252. data/src/core/lib/iomgr/tcp_client_cfstream.cc +216 -0
  253. data/src/core/lib/iomgr/tcp_client_custom.cc +2 -2
  254. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  255. data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
  256. data/src/core/lib/iomgr/tcp_custom.cc +10 -14
  257. data/src/core/lib/iomgr/tcp_posix.cc +256 -140
  258. data/src/core/lib/iomgr/tcp_server.cc +5 -0
  259. data/src/core/lib/iomgr/tcp_server.h +24 -0
  260. data/src/core/lib/iomgr/tcp_server_custom.cc +14 -12
  261. data/src/core/lib/iomgr/tcp_server_posix.cc +86 -12
  262. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
  263. data/src/core/lib/iomgr/tcp_server_windows.cc +13 -11
  264. data/src/core/lib/iomgr/tcp_uv.cc +5 -7
  265. data/src/core/lib/iomgr/tcp_windows.cc +8 -14
  266. data/src/core/lib/iomgr/timer.h +2 -1
  267. data/src/core/lib/iomgr/timer_generic.cc +16 -16
  268. data/src/core/lib/iomgr/timer_manager.cc +20 -11
  269. data/src/core/lib/iomgr/udp_server.cc +8 -6
  270. data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -19
  271. data/src/core/lib/json/json.cc +1 -4
  272. data/src/core/lib/profiling/basic_timers.cc +10 -4
  273. data/src/core/lib/security/context/security_context.cc +6 -7
  274. data/src/core/lib/security/context/security_context.h +3 -4
  275. data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -1
  276. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  277. data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -0
  278. data/src/core/lib/security/credentials/credentials.h +9 -1
  279. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -3
  280. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -0
  281. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  282. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +2 -1
  283. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +10 -6
  284. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -1
  285. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +3 -3
  286. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +9 -8
  287. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -2
  288. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -2
  289. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +192 -0
  290. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +210 -0
  291. data/src/core/lib/security/credentials/tls/spiffe_credentials.cc +129 -0
  292. data/src/core/lib/security/credentials/tls/spiffe_credentials.h +62 -0
  293. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -8
  294. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -12
  295. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +7 -5
  296. data/src/core/lib/security/security_connector/local/local_security_connector.cc +10 -8
  297. data/src/core/lib/security/security_connector/security_connector.cc +0 -1
  298. data/src/core/lib/security/security_connector/security_connector.h +3 -3
  299. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +39 -38
  300. data/src/core/lib/security/security_connector/ssl_utils.cc +164 -26
  301. data/src/core/lib/security/security_connector/ssl_utils.h +70 -1
  302. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +426 -0
  303. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +122 -0
  304. data/src/core/lib/security/transport/auth_filters.h +5 -2
  305. data/src/core/lib/security/transport/client_auth_filter.cc +55 -50
  306. data/src/core/lib/security/transport/secure_endpoint.cc +6 -6
  307. data/src/core/lib/security/transport/security_handshaker.cc +271 -303
  308. data/src/core/lib/security/transport/security_handshaker.h +11 -2
  309. data/src/core/lib/security/transport/server_auth_filter.cc +3 -3
  310. data/src/core/lib/slice/b64.h +2 -2
  311. data/src/core/lib/slice/percent_encoding.cc +3 -3
  312. data/src/core/lib/slice/percent_encoding.h +3 -3
  313. data/src/core/lib/slice/slice.cc +174 -122
  314. data/src/core/lib/slice/slice_buffer.cc +54 -21
  315. data/src/core/lib/slice/slice_hash_table.h +4 -4
  316. data/src/core/lib/slice/slice_intern.cc +49 -107
  317. data/src/core/lib/slice/slice_internal.h +264 -3
  318. data/src/core/lib/slice/slice_string_helpers.cc +10 -1
  319. data/src/core/lib/slice/slice_string_helpers.h +3 -1
  320. data/src/core/lib/slice/slice_utils.h +50 -0
  321. data/src/core/lib/slice/slice_weak_hash_table.h +6 -6
  322. data/src/core/lib/surface/api_trace.h +1 -1
  323. data/src/core/lib/surface/byte_buffer_reader.cc +17 -0
  324. data/src/core/lib/surface/call.cc +67 -46
  325. data/src/core/lib/surface/call.h +7 -2
  326. data/src/core/lib/surface/call_details.cc +0 -1
  327. data/src/core/lib/surface/channel.cc +89 -97
  328. data/src/core/lib/surface/channel.h +60 -6
  329. data/src/core/lib/surface/channel_init.h +5 -0
  330. data/src/core/lib/surface/completion_queue.cc +221 -216
  331. data/src/core/lib/surface/completion_queue.h +2 -1
  332. data/src/core/lib/surface/init.cc +82 -33
  333. data/src/core/lib/surface/init.h +1 -0
  334. data/src/core/lib/surface/init_secure.cc +1 -1
  335. data/src/core/lib/surface/lame_client.cc +5 -7
  336. data/src/core/lib/surface/server.cc +42 -47
  337. data/src/core/lib/surface/validate_metadata.cc +14 -8
  338. data/src/core/lib/surface/validate_metadata.h +13 -2
  339. data/src/core/lib/surface/version.cc +1 -1
  340. data/src/core/lib/transport/bdp_estimator.cc +3 -3
  341. data/src/core/lib/transport/bdp_estimator.h +2 -2
  342. data/src/core/lib/transport/connectivity_state.cc +10 -40
  343. data/src/core/lib/transport/connectivity_state.h +0 -8
  344. data/src/core/lib/transport/error_utils.cc +12 -0
  345. data/src/core/lib/transport/metadata.cc +258 -267
  346. data/src/core/lib/transport/metadata.h +227 -16
  347. data/src/core/lib/transport/metadata_batch.cc +1 -1
  348. data/src/core/lib/transport/metadata_batch.h +1 -1
  349. data/src/core/lib/transport/static_metadata.cc +477 -399
  350. data/src/core/lib/transport/static_metadata.h +273 -182
  351. data/src/core/lib/transport/status_metadata.cc +3 -3
  352. data/src/core/lib/transport/timeout_encoding.cc +1 -1
  353. data/src/core/lib/transport/timeout_encoding.h +1 -1
  354. data/src/core/lib/transport/transport.cc +39 -72
  355. data/src/core/lib/transport/transport.h +59 -24
  356. data/src/core/lib/transport/transport_impl.h +1 -1
  357. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  358. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  359. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
  360. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +4 -3
  361. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  362. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -1
  363. data/src/core/tsi/fake_transport_security.cc +4 -4
  364. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +1 -1
  365. data/src/core/tsi/ssl_transport_security.cc +12 -10
  366. data/src/core/tsi/ssl_transport_security.h +24 -4
  367. data/src/ruby/bin/math_pb.rb +18 -16
  368. data/src/ruby/ext/grpc/extconf.rb +12 -4
  369. data/src/ruby/ext/grpc/rb_call_credentials.c +8 -5
  370. data/src/ruby/ext/grpc/rb_channel.c +14 -10
  371. data/src/ruby/ext/grpc/rb_channel_credentials.c +8 -4
  372. data/src/ruby/ext/grpc/rb_compression_options.c +9 -7
  373. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  374. data/src/ruby/ext/grpc/rb_grpc.c +23 -24
  375. data/src/ruby/ext/grpc/rb_grpc.h +4 -2
  376. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +24 -0
  377. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -0
  378. data/src/ruby/ext/grpc/rb_server.c +8 -4
  379. data/src/ruby/lib/grpc/errors.rb +22 -3
  380. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  381. data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -2
  382. data/src/ruby/lib/grpc/version.rb +1 -1
  383. data/src/ruby/pb/README.md +1 -1
  384. data/src/ruby/pb/grpc/health/v1/health_pb.rb +13 -10
  385. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +18 -0
  386. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +3 -1
  387. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +58 -56
  388. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -0
  389. data/src/ruby/spec/errors_spec.rb +141 -0
  390. data/third_party/cares/cares/ares.h +12 -0
  391. data/third_party/cares/cares/ares_create_query.c +5 -1
  392. data/third_party/cares/cares/ares_data.c +74 -73
  393. data/third_party/cares/cares/ares_destroy.c +6 -1
  394. data/third_party/cares/cares/ares_gethostbyaddr.c +5 -5
  395. data/third_party/cares/cares/ares_gethostbyname.c +15 -4
  396. data/third_party/cares/cares/ares_getnameinfo.c +11 -0
  397. data/third_party/cares/cares/ares_init.c +274 -173
  398. data/third_party/cares/cares/ares_library_init.c +21 -3
  399. data/third_party/cares/cares/ares_options.c +6 -2
  400. data/third_party/cares/cares/ares_parse_naptr_reply.c +7 -6
  401. data/third_party/cares/cares/ares_parse_ptr_reply.c +4 -2
  402. data/third_party/cares/cares/ares_platform.c +7 -0
  403. data/third_party/cares/cares/ares_private.h +19 -11
  404. data/third_party/cares/cares/ares_process.c +27 -2
  405. data/third_party/cares/cares/ares_rules.h +1 -1
  406. data/third_party/cares/cares/ares_search.c +7 -0
  407. data/third_party/cares/cares/ares_send.c +6 -0
  408. data/third_party/cares/cares/ares_strsplit.c +174 -0
  409. data/third_party/cares/cares/ares_strsplit.h +43 -0
  410. data/third_party/cares/cares/ares_version.h +4 -4
  411. data/third_party/cares/cares/config-win32.h +1 -1
  412. data/third_party/cares/cares/inet_ntop.c +2 -3
  413. data/third_party/cares/config_darwin/ares_config.h +3 -0
  414. data/third_party/cares/config_freebsd/ares_config.h +3 -0
  415. data/third_party/cares/config_linux/ares_config.h +3 -0
  416. data/third_party/cares/config_openbsd/ares_config.h +3 -0
  417. metadata +83 -48
  418. data/src/core/ext/filters/client_channel/request_routing.cc +0 -936
  419. data/src/core/ext/filters/client_channel/request_routing.h +0 -177
  420. data/src/core/ext/filters/client_channel/subchannel_index.cc +0 -248
  421. data/src/core/ext/filters/client_channel/subchannel_index.h +0 -76
  422. data/src/core/lib/channel/handshaker_factory.cc +0 -42
  423. data/src/core/lib/gpr/arena.cc +0 -192
  424. data/src/core/lib/gprpp/atomic_with_atm.h +0 -57
  425. data/src/core/lib/iomgr/wakeup_fd_cv.cc +0 -107
  426. data/src/core/lib/iomgr/wakeup_fd_cv.h +0 -69
  427. data/src/core/lib/transport/service_config.cc +0 -106
  428. data/src/core/lib/transport/service_config.h +0 -249
@@ -0,0 +1,31 @@
1
+ /*
2
+ *
3
+ * Copyright 2018 gRPC authors.
4
+ *
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
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
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.
16
+ *
17
+ */
18
+
19
+ #ifndef GRPC_CORE_LIB_IOMGR_ERROR_CFSTREAM_H
20
+ #define GRPC_CORE_LIB_IOMGR_ERROR_CFSTREAM_H
21
+
22
+ #ifdef GRPC_CFSTREAM
23
+ // Create an error from Apple Core Foundation CFError object
24
+ #define GRPC_ERROR_CREATE_FROM_CFERROR(error, desc) \
25
+ grpc_error_create_from_cferror(__FILE__, __LINE__, \
26
+ static_cast<void*>((error)), (desc))
27
+ grpc_error* grpc_error_create_from_cferror(const char* file, int line,
28
+ void* arg, const char* desc);
29
+ #endif /* GRPC_CFSTREAM */
30
+
31
+ #endif /* GRPC_CORE_LIB_IOMGR_ERROR_CFSTREAM_H */
@@ -49,7 +49,7 @@ struct grpc_error {
49
49
  uint8_t strs[GRPC_ERROR_STR_MAX];
50
50
  uint8_t times[GRPC_ERROR_TIME_MAX];
51
51
  // The child errors are stored in the arena, but are effectively a linked list
52
- // structure, since they are contained withing grpc_linked_error objects.
52
+ // structure, since they are contained within grpc_linked_error objects.
53
53
  uint8_t first_err;
54
54
  uint8_t last_err;
55
55
  // The arena is dynamically reallocated with a grow factor of 1.5.
@@ -213,7 +213,7 @@ struct grpc_pollset {
213
213
  poll */
214
214
  bool seen_inactive;
215
215
  bool shutting_down; /* Is the pollset shutting down ? */
216
- grpc_closure* shutdown_closure; /* Called after after shutdown is complete */
216
+ grpc_closure* shutdown_closure; /* Called after shutdown is complete */
217
217
 
218
218
  /* Number of workers who are *about-to* attach themselves to the pollset
219
219
  * worker list */
@@ -351,7 +351,7 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
351
351
  grpc_iomgr_register_object(&new_fd->iomgr_object, fd_name);
352
352
  fork_fd_list_add_grpc_fd(new_fd);
353
353
  #ifndef NDEBUG
354
- if (grpc_trace_fd_refcount.enabled()) {
354
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_fd_refcount)) {
355
355
  gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, new_fd, fd_name);
356
356
  }
357
357
  #endif
@@ -383,6 +383,13 @@ static void fd_shutdown_internal(grpc_fd* fd, grpc_error* why,
383
383
  if (fd->read_closure->SetShutdown(GRPC_ERROR_REF(why))) {
384
384
  if (!releasing_fd) {
385
385
  shutdown(fd->fd, SHUT_RDWR);
386
+ } else {
387
+ /* we need a dummy event for earlier linux versions. */
388
+ epoll_event dummy_event;
389
+ if (epoll_ctl(g_epoll_set.epfd, EPOLL_CTL_DEL, fd->fd, &dummy_event) !=
390
+ 0) {
391
+ gpr_log(GPR_ERROR, "epoll_ctl failed: %s", strerror(errno));
392
+ }
386
393
  }
387
394
  fd->write_closure->SetShutdown(GRPC_ERROR_REF(why));
388
395
  fd->error_closure->SetShutdown(GRPC_ERROR_REF(why));
@@ -724,7 +731,7 @@ static grpc_error* do_epoll_wait(grpc_pollset* ps, grpc_millis deadline) {
724
731
 
725
732
  GRPC_STATS_INC_POLL_EVENTS_RETURNED(r);
726
733
 
727
- if (grpc_polling_trace.enabled()) {
734
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
728
735
  gpr_log(GPR_INFO, "ps: %p poll got %d events", ps, r);
729
736
  }
730
737
 
@@ -744,7 +751,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
744
751
  worker->schedule_on_end_work = (grpc_closure_list)GRPC_CLOSURE_LIST_INIT;
745
752
  pollset->begin_refs++;
746
753
 
747
- if (grpc_polling_trace.enabled()) {
754
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
748
755
  gpr_log(GPR_INFO, "PS:%p BEGIN_STARTS:%p", pollset, worker);
749
756
  }
750
757
 
@@ -763,7 +770,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
763
770
  retry_lock_neighborhood:
764
771
  gpr_mu_lock(&neighborhood->mu);
765
772
  gpr_mu_lock(&pollset->mu);
766
- if (grpc_polling_trace.enabled()) {
773
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
767
774
  gpr_log(GPR_INFO, "PS:%p BEGIN_REORG:%p kick_state=%s is_reassigning=%d",
768
775
  pollset, worker, kick_state_string(worker->state),
769
776
  is_reassigning);
@@ -815,7 +822,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
815
822
  worker->initialized_cv = true;
816
823
  gpr_cv_init(&worker->cv);
817
824
  while (worker->state == UNKICKED && !pollset->shutting_down) {
818
- if (grpc_polling_trace.enabled()) {
825
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
819
826
  gpr_log(GPR_INFO, "PS:%p BEGIN_WAIT:%p kick_state=%s shutdown=%d",
820
827
  pollset, worker, kick_state_string(worker->state),
821
828
  pollset->shutting_down);
@@ -832,7 +839,7 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
832
839
  grpc_core::ExecCtx::Get()->InvalidateNow();
833
840
  }
834
841
 
835
- if (grpc_polling_trace.enabled()) {
842
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
836
843
  gpr_log(GPR_INFO,
837
844
  "PS:%p BEGIN_DONE:%p kick_state=%s shutdown=%d "
838
845
  "kicked_without_poller: %d",
@@ -875,7 +882,7 @@ static bool check_neighborhood_for_available_poller(
875
882
  case UNKICKED:
876
883
  if (gpr_atm_no_barrier_cas(&g_active_poller, 0,
877
884
  (gpr_atm)inspect_worker)) {
878
- if (grpc_polling_trace.enabled()) {
885
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
879
886
  gpr_log(GPR_INFO, " .. choose next poller to be %p",
880
887
  inspect_worker);
881
888
  }
@@ -886,7 +893,7 @@ static bool check_neighborhood_for_available_poller(
886
893
  gpr_cv_signal(&inspect_worker->cv);
887
894
  }
888
895
  } else {
889
- if (grpc_polling_trace.enabled()) {
896
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
890
897
  gpr_log(GPR_INFO, " .. beaten to choose next poller");
891
898
  }
892
899
  }
@@ -904,7 +911,7 @@ static bool check_neighborhood_for_available_poller(
904
911
  } while (!found_worker && inspect_worker != inspect->root_worker);
905
912
  }
906
913
  if (!found_worker) {
907
- if (grpc_polling_trace.enabled()) {
914
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
908
915
  gpr_log(GPR_INFO, " .. mark pollset %p inactive", inspect);
909
916
  }
910
917
  inspect->seen_inactive = true;
@@ -924,7 +931,7 @@ static bool check_neighborhood_for_available_poller(
924
931
  static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
925
932
  grpc_pollset_worker** worker_hdl) {
926
933
  GPR_TIMER_SCOPE("end_worker", 0);
927
- if (grpc_polling_trace.enabled()) {
934
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
928
935
  gpr_log(GPR_INFO, "PS:%p END_WORKER:%p", pollset, worker);
929
936
  }
930
937
  if (worker_hdl != nullptr) *worker_hdl = nullptr;
@@ -934,7 +941,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
934
941
  grpc_core::ExecCtx::Get()->closure_list());
935
942
  if (gpr_atm_no_barrier_load(&g_active_poller) == (gpr_atm)worker) {
936
943
  if (worker->next != worker && worker->next->state == UNKICKED) {
937
- if (grpc_polling_trace.enabled()) {
944
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
938
945
  gpr_log(GPR_INFO, " .. choose next poller to be peer %p", worker);
939
946
  }
940
947
  GPR_ASSERT(worker->next->initialized_cv);
@@ -986,7 +993,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
986
993
  if (worker->initialized_cv) {
987
994
  gpr_cv_destroy(&worker->cv);
988
995
  }
989
- if (grpc_polling_trace.enabled()) {
996
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
990
997
  gpr_log(GPR_INFO, " .. remove worker");
991
998
  }
992
999
  if (EMPTIED == worker_remove(pollset, worker)) {
@@ -1024,7 +1031,7 @@ static grpc_error* pollset_work(grpc_pollset* ps,
1024
1031
  process the pending epoll events.
1025
1032
 
1026
1033
  The reason for decoupling do_epoll_wait and process_epoll_events is to
1027
- better distrubute the work (i.e handling epoll events) across multiple
1034
+ better distribute the work (i.e handling epoll events) across multiple
1028
1035
  threads
1029
1036
 
1030
1037
  process_epoll_events() returns very quickly: It just queues the work on
@@ -1055,7 +1062,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1055
1062
  GPR_TIMER_SCOPE("pollset_kick", 0);
1056
1063
  GRPC_STATS_INC_POLLSET_KICK();
1057
1064
  grpc_error* ret_err = GRPC_ERROR_NONE;
1058
- if (grpc_polling_trace.enabled()) {
1065
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1059
1066
  gpr_strvec log;
1060
1067
  gpr_strvec_init(&log);
1061
1068
  char* tmp;
@@ -1088,7 +1095,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1088
1095
  if (root_worker == nullptr) {
1089
1096
  GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER();
1090
1097
  pollset->kicked_without_poller = true;
1091
- if (grpc_polling_trace.enabled()) {
1098
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1092
1099
  gpr_log(GPR_INFO, " .. kicked_without_poller");
1093
1100
  }
1094
1101
  goto done;
@@ -1096,14 +1103,14 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1096
1103
  grpc_pollset_worker* next_worker = root_worker->next;
1097
1104
  if (root_worker->state == KICKED) {
1098
1105
  GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
1099
- if (grpc_polling_trace.enabled()) {
1106
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1100
1107
  gpr_log(GPR_INFO, " .. already kicked %p", root_worker);
1101
1108
  }
1102
1109
  SET_KICK_STATE(root_worker, KICKED);
1103
1110
  goto done;
1104
1111
  } else if (next_worker->state == KICKED) {
1105
1112
  GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
1106
- if (grpc_polling_trace.enabled()) {
1113
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1107
1114
  gpr_log(GPR_INFO, " .. already kicked %p", next_worker);
1108
1115
  }
1109
1116
  SET_KICK_STATE(next_worker, KICKED);
@@ -1114,7 +1121,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1114
1121
  root_worker == (grpc_pollset_worker*)gpr_atm_no_barrier_load(
1115
1122
  &g_active_poller)) {
1116
1123
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
1117
- if (grpc_polling_trace.enabled()) {
1124
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1118
1125
  gpr_log(GPR_INFO, " .. kicked %p", root_worker);
1119
1126
  }
1120
1127
  SET_KICK_STATE(root_worker, KICKED);
@@ -1122,7 +1129,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1122
1129
  goto done;
1123
1130
  } else if (next_worker->state == UNKICKED) {
1124
1131
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
1125
- if (grpc_polling_trace.enabled()) {
1132
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1126
1133
  gpr_log(GPR_INFO, " .. kicked %p", next_worker);
1127
1134
  }
1128
1135
  GPR_ASSERT(next_worker->initialized_cv);
@@ -1131,7 +1138,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1131
1138
  goto done;
1132
1139
  } else if (next_worker->state == DESIGNATED_POLLER) {
1133
1140
  if (root_worker->state != DESIGNATED_POLLER) {
1134
- if (grpc_polling_trace.enabled()) {
1141
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1135
1142
  gpr_log(
1136
1143
  GPR_INFO,
1137
1144
  " .. kicked root non-poller %p (initialized_cv=%d) (poller=%p)",
@@ -1145,7 +1152,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1145
1152
  goto done;
1146
1153
  } else {
1147
1154
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
1148
- if (grpc_polling_trace.enabled()) {
1155
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1149
1156
  gpr_log(GPR_INFO, " .. non-root poller %p (root=%p)", next_worker,
1150
1157
  root_worker);
1151
1158
  }
@@ -1161,7 +1168,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1161
1168
  }
1162
1169
  } else {
1163
1170
  GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
1164
- if (grpc_polling_trace.enabled()) {
1171
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1165
1172
  gpr_log(GPR_INFO, " .. kicked while waking up");
1166
1173
  }
1167
1174
  goto done;
@@ -1171,14 +1178,14 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1171
1178
  }
1172
1179
 
1173
1180
  if (specific_worker->state == KICKED) {
1174
- if (grpc_polling_trace.enabled()) {
1181
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1175
1182
  gpr_log(GPR_INFO, " .. specific worker already kicked");
1176
1183
  }
1177
1184
  goto done;
1178
1185
  } else if (gpr_tls_get(&g_current_thread_worker) ==
1179
1186
  (intptr_t)specific_worker) {
1180
1187
  GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
1181
- if (grpc_polling_trace.enabled()) {
1188
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1182
1189
  gpr_log(GPR_INFO, " .. mark %p kicked", specific_worker);
1183
1190
  }
1184
1191
  SET_KICK_STATE(specific_worker, KICKED);
@@ -1186,7 +1193,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1186
1193
  } else if (specific_worker ==
1187
1194
  (grpc_pollset_worker*)gpr_atm_no_barrier_load(&g_active_poller)) {
1188
1195
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
1189
- if (grpc_polling_trace.enabled()) {
1196
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1190
1197
  gpr_log(GPR_INFO, " .. kick active poller");
1191
1198
  }
1192
1199
  SET_KICK_STATE(specific_worker, KICKED);
@@ -1194,7 +1201,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1194
1201
  goto done;
1195
1202
  } else if (specific_worker->initialized_cv) {
1196
1203
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
1197
- if (grpc_polling_trace.enabled()) {
1204
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1198
1205
  gpr_log(GPR_INFO, " .. kick waiting worker");
1199
1206
  }
1200
1207
  SET_KICK_STATE(specific_worker, KICKED);
@@ -1202,7 +1209,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
1202
1209
  goto done;
1203
1210
  } else {
1204
1211
  GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
1205
- if (grpc_polling_trace.enabled()) {
1212
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1206
1213
  gpr_log(GPR_INFO, " .. kick non-waiting worker");
1207
1214
  }
1208
1215
  SET_KICK_STATE(specific_worker, KICKED);
@@ -1242,8 +1249,15 @@ static void pollset_set_del_pollset_set(grpc_pollset_set* bag,
1242
1249
  * Event engine binding
1243
1250
  */
1244
1251
 
1252
+ static bool is_any_background_poller_thread(void) { return false; }
1253
+
1245
1254
  static void shutdown_background_closure(void) {}
1246
1255
 
1256
+ static bool add_closure_to_background_poller(grpc_closure* closure,
1257
+ grpc_error* error) {
1258
+ return false;
1259
+ }
1260
+
1247
1261
  static void shutdown_engine(void) {
1248
1262
  fd_global_shutdown();
1249
1263
  pollset_global_shutdown();
@@ -1287,8 +1301,10 @@ static const grpc_event_engine_vtable vtable = {
1287
1301
  pollset_set_add_fd,
1288
1302
  pollset_set_del_fd,
1289
1303
 
1304
+ is_any_background_poller_thread,
1290
1305
  shutdown_background_closure,
1291
1306
  shutdown_engine,
1307
+ add_closure_to_background_poller,
1292
1308
  };
1293
1309
 
1294
1310
  /* Called by the child process's post-fork handler to close open fds, including