grpc 1.7.3 → 1.8.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 (616) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2106 -2116
  3. data/include/grpc/census.h +1 -432
  4. data/include/grpc/compression.h +9 -9
  5. data/include/grpc/grpc.h +115 -98
  6. data/include/grpc/grpc_cronet.h +3 -3
  7. data/include/grpc/grpc_posix.h +4 -4
  8. data/include/grpc/grpc_security.h +160 -88
  9. data/include/grpc/grpc_security_constants.h +7 -0
  10. data/include/grpc/impl/codegen/atm.h +9 -1
  11. data/include/grpc/impl/codegen/atm_gcc_atomic.h +13 -4
  12. data/include/grpc/impl/codegen/atm_gcc_sync.h +6 -5
  13. data/include/grpc/impl/codegen/atm_windows.h +23 -22
  14. data/include/grpc/impl/codegen/byte_buffer.h +14 -14
  15. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -2
  16. data/include/grpc/impl/codegen/connectivity_state.h +0 -2
  17. data/include/grpc/impl/codegen/grpc_types.h +32 -28
  18. data/include/grpc/impl/codegen/port_platform.h +48 -0
  19. data/include/grpc/impl/codegen/slice.h +10 -10
  20. data/include/grpc/impl/codegen/sync_generic.h +9 -3
  21. data/include/grpc/slice.h +16 -17
  22. data/include/grpc/slice_buffer.h +22 -22
  23. data/include/grpc/support/alloc.h +11 -11
  24. data/include/grpc/support/avl.h +28 -20
  25. data/include/grpc/support/cmdline.h +13 -13
  26. data/include/grpc/support/histogram.h +17 -17
  27. data/include/grpc/support/host_port.h +2 -2
  28. data/include/grpc/support/log.h +9 -9
  29. data/include/grpc/support/log_windows.h +1 -1
  30. data/include/grpc/support/string_util.h +2 -2
  31. data/include/grpc/support/subprocess.h +5 -5
  32. data/include/grpc/support/sync.h +43 -27
  33. data/include/grpc/support/thd.h +6 -6
  34. data/include/grpc/support/tls_gcc.h +1 -1
  35. data/include/grpc/support/tls_pthread.h +1 -1
  36. data/src/core/ext/census/{grpc_context.c → grpc_context.cc} +5 -8
  37. data/src/core/ext/filters/client_channel/backup_poller.cc +165 -0
  38. data/src/core/ext/{census/grpc_filter.h → filters/client_channel/backup_poller.h} +12 -7
  39. data/src/core/ext/filters/client_channel/{channel_connectivity.c → channel_connectivity.cc} +45 -42
  40. data/src/core/ext/filters/client_channel/{client_channel.c → client_channel.cc} +452 -417
  41. data/src/core/ext/filters/client_channel/client_channel.h +16 -8
  42. data/src/core/ext/filters/client_channel/{client_channel_factory.c → client_channel_factory.cc} +0 -0
  43. data/src/core/ext/filters/client_channel/client_channel_factory.h +29 -21
  44. data/src/core/ext/filters/client_channel/{client_channel_plugin.c → client_channel_plugin.cc} +15 -19
  45. data/src/core/ext/filters/client_channel/{connector.c → connector.cc} +0 -0
  46. data/src/core/ext/filters/client_channel/connector.h +29 -21
  47. data/src/core/ext/filters/client_channel/{http_connect_handshaker.c → http_connect_handshaker.cc} +10 -10
  48. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +8 -0
  49. data/src/core/ext/filters/client_channel/{http_proxy.c → http_proxy.cc} +14 -14
  50. data/src/core/ext/filters/client_channel/http_proxy.h +8 -0
  51. data/src/core/ext/filters/client_channel/{lb_policy.c → lb_policy.cc} +47 -48
  52. data/src/core/ext/filters/client_channel/lb_policy.h +76 -70
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{client_load_reporting_filter.c → client_load_reporting_filter.cc} +28 -29
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +9 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb.c → grpclb.cc} +554 -563
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +9 -1
  57. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +17 -9
  58. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_channel_secure.c → grpclb_channel_secure.cc} +17 -17
  59. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_client_stats.c → grpclb_client_stats.cc} +3 -3
  60. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +9 -1
  61. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{load_balancer_api.c → load_balancer_api.cc} +64 -67
  62. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +20 -21
  63. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +599 -0
  64. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +695 -0
  65. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +270 -0
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +153 -0
  67. data/src/core/ext/filters/client_channel/{lb_policy_factory.c → lb_policy_factory.cc} +10 -10
  68. data/src/core/ext/filters/client_channel/lb_policy_factory.h +48 -40
  69. data/src/core/ext/filters/client_channel/{lb_policy_registry.c → lb_policy_registry.cc} +9 -9
  70. data/src/core/ext/filters/client_channel/lb_policy_registry.h +11 -3
  71. data/src/core/ext/filters/client_channel/{parse_address.c → parse_address.cc} +24 -24
  72. data/src/core/ext/filters/client_channel/parse_address.h +14 -6
  73. data/src/core/ext/filters/client_channel/{proxy_mapper.c → proxy_mapper.cc} +0 -0
  74. data/src/core/ext/filters/client_channel/proxy_mapper.h +8 -0
  75. data/src/core/ext/filters/client_channel/{proxy_mapper_registry.c → proxy_mapper_registry.cc} +0 -0
  76. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -0
  77. data/src/core/ext/filters/client_channel/{resolver.c → resolver.cc} +21 -23
  78. data/src/core/ext/filters/client_channel/resolver.h +33 -27
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{dns_resolver_ares.c → dns_resolver_ares.cc} +133 -133
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +18 -9
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_ev_driver_posix.c → grpc_ares_ev_driver_posix.cc} +58 -56
  82. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_wrapper.c → grpc_ares_wrapper.cc} +118 -115
  83. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +23 -15
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +60 -0
  85. data/src/core/ext/filters/client_channel/resolver/dns/native/{dns_resolver.c → dns_resolver.cc} +100 -94
  86. data/src/core/ext/filters/client_channel/resolver/fake/{fake_resolver.c → fake_resolver.cc} +14 -14
  87. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +9 -1
  88. data/src/core/ext/filters/client_channel/resolver/sockaddr/{sockaddr_resolver.c → sockaddr_resolver.cc} +60 -60
  89. data/src/core/ext/filters/client_channel/{resolver_factory.c → resolver_factory.cc} +2 -2
  90. data/src/core/ext/filters/client_channel/resolver_factory.h +27 -19
  91. data/src/core/ext/filters/client_channel/{resolver_registry.c → resolver_registry.cc} +35 -35
  92. data/src/core/ext/filters/client_channel/resolver_registry.h +18 -10
  93. data/src/core/ext/filters/client_channel/{retry_throttle.c → retry_throttle.cc} +10 -10
  94. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -0
  95. data/src/core/ext/filters/client_channel/{subchannel.c → subchannel.cc} +210 -213
  96. data/src/core/ext/filters/client_channel/subchannel.h +68 -60
  97. data/src/core/ext/filters/client_channel/{subchannel_index.c → subchannel_index.cc} +52 -52
  98. data/src/core/ext/filters/client_channel/subchannel_index.h +22 -14
  99. data/src/core/ext/filters/client_channel/{uri_parser.c → uri_parser.cc} +29 -27
  100. data/src/core/ext/filters/client_channel/uri_parser.h +18 -10
  101. data/src/core/ext/filters/deadline/{deadline_filter.c → deadline_filter.cc} +12 -15
  102. data/src/core/ext/filters/deadline/deadline_filter.h +11 -2
  103. data/src/core/ext/filters/http/client/{http_client_filter.c → http_client_filter.cc} +83 -83
  104. data/src/core/ext/filters/http/client/http_client_filter.h +8 -0
  105. data/src/core/ext/filters/http/{http_filters_plugin.c → http_filters_plugin.cc} +20 -21
  106. data/src/core/ext/filters/http/message_compress/{message_compress_filter.c → message_compress_filter.cc} +84 -83
  107. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +9 -1
  108. data/src/core/ext/filters/http/server/{http_server_filter.c → http_server_filter.cc} +80 -78
  109. data/src/core/ext/filters/http/server/http_server_filter.h +8 -0
  110. data/src/core/ext/filters/load_reporting/{server_load_reporting_filter.c → server_load_reporting_filter.cc} +29 -29
  111. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +9 -1
  112. data/src/core/ext/filters/load_reporting/{server_load_reporting_plugin.c → server_load_reporting_plugin.cc} +11 -11
  113. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +13 -5
  114. data/src/core/ext/filters/max_age/{max_age_filter.c → max_age_filter.cc} +46 -56
  115. data/src/core/ext/filters/max_age/max_age_filter.h +8 -0
  116. data/src/core/ext/filters/message_size/{message_size_filter.c → message_size_filter.cc} +62 -40
  117. data/src/core/ext/filters/message_size/message_size_filter.h +8 -0
  118. data/src/core/ext/filters/workarounds/{workaround_cronet_compression_filter.c → workaround_cronet_compression_filter.cc} +11 -11
  119. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +8 -0
  120. data/src/core/ext/filters/workarounds/{workaround_utils.c → workaround_utils.cc} +7 -7
  121. data/src/core/ext/filters/workarounds/workaround_utils.h +9 -1
  122. data/src/core/ext/transport/chttp2/alpn/{alpn.c → alpn.cc} +3 -3
  123. data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -2
  124. data/src/core/ext/transport/chttp2/client/{chttp2_connector.c → chttp2_connector.cc} +49 -45
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +8 -0
  126. data/src/core/ext/transport/chttp2/client/insecure/{channel_create.c → channel_create.cc} +28 -27
  127. data/src/core/ext/transport/chttp2/client/insecure/{channel_create_posix.c → channel_create_posix.cc} +14 -13
  128. data/src/core/ext/transport/chttp2/client/secure/{secure_channel_create.c → secure_channel_create.cc} +68 -66
  129. data/src/core/ext/transport/chttp2/server/{chttp2_server.c → chttp2_server.cc} +76 -77
  130. data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -3
  131. data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2.c → server_chttp2.cc} +3 -3
  132. data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2_posix.c → server_chttp2_posix.cc} +13 -12
  133. data/src/core/ext/transport/chttp2/server/secure/{server_secure_chttp2.c → server_secure_chttp2.cc} +12 -10
  134. data/src/core/ext/transport/chttp2/transport/{bin_decoder.c → bin_decoder.cc} +7 -7
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +15 -7
  136. data/src/core/ext/transport/chttp2/transport/{bin_encoder.c → bin_encoder.cc} +11 -11
  137. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -0
  138. data/src/core/ext/transport/chttp2/transport/{chttp2_plugin.c → chttp2_plugin.cc} +2 -9
  139. data/src/core/ext/transport/chttp2/transport/{chttp2_transport.c → chttp2_transport.cc} +778 -778
  140. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -10
  141. data/src/core/ext/transport/chttp2/transport/flow_control.cc +385 -0
  142. data/src/core/ext/transport/chttp2/transport/flow_control.h +337 -0
  143. data/src/core/ext/transport/chttp2/transport/frame.h +8 -0
  144. data/src/core/ext/transport/chttp2/transport/{frame_data.c → frame_data.cc} +34 -34
  145. data/src/core/ext/transport/chttp2/transport/frame_data.h +25 -17
  146. data/src/core/ext/transport/chttp2/transport/{frame_goaway.c → frame_goaway.cc} +18 -18
  147. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -10
  148. data/src/core/ext/transport/chttp2/transport/{frame_ping.c → frame_ping.cc} +18 -19
  149. data/src/core/ext/transport/chttp2/transport/frame_ping.h +12 -4
  150. data/src/core/ext/transport/chttp2/transport/{frame_rst_stream.c → frame_rst_stream.cc} +16 -16
  151. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +16 -8
  152. data/src/core/ext/transport/chttp2/transport/{frame_settings.c → frame_settings.cc} +23 -24
  153. data/src/core/ext/transport/chttp2/transport/frame_settings.h +17 -9
  154. data/src/core/ext/transport/chttp2/transport/{frame_window_update.c → frame_window_update.cc} +22 -24
  155. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +14 -6
  156. data/src/core/ext/transport/chttp2/transport/{hpack_encoder.c → hpack_encoder.cc} +206 -161
  157. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +23 -13
  158. data/src/core/ext/transport/chttp2/transport/{hpack_parser.c → hpack_parser.cc} +340 -334
  159. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -22
  160. data/src/core/ext/transport/chttp2/transport/{hpack_table.c → hpack_table.cc} +25 -25
  161. data/src/core/ext/transport/chttp2/transport/hpack_table.h +19 -11
  162. data/src/core/ext/transport/chttp2/transport/{http2_settings.c → http2_settings.cc} +1 -1
  163. data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -2
  164. data/src/core/ext/transport/chttp2/transport/{huffsyms.c → huffsyms.cc} +0 -0
  165. data/src/core/ext/transport/chttp2/transport/huffsyms.h +8 -0
  166. data/src/core/ext/transport/chttp2/transport/{incoming_metadata.c → incoming_metadata.cc} +14 -13
  167. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +18 -10
  168. data/src/core/ext/transport/chttp2/transport/internal.h +214 -340
  169. data/src/core/ext/transport/chttp2/transport/{parsing.c → parsing.cc} +152 -141
  170. data/src/core/ext/transport/chttp2/transport/{stream_lists.c → stream_lists.cc} +53 -53
  171. data/src/core/ext/transport/chttp2/transport/{stream_map.c → stream_map.cc} +35 -34
  172. data/src/core/ext/transport/chttp2/transport/stream_map.h +22 -14
  173. data/src/core/ext/transport/chttp2/transport/{varint.c → varint.cc} +0 -0
  174. data/src/core/ext/transport/chttp2/transport/varint.h +8 -0
  175. data/src/core/ext/transport/chttp2/transport/writing.cc +636 -0
  176. data/src/core/ext/transport/inproc/{inproc_plugin.c → inproc_plugin.cc} +5 -6
  177. data/src/core/ext/transport/inproc/{inproc_transport.c → inproc_transport.cc} +479 -544
  178. data/src/core/ext/transport/inproc/inproc_transport.h +4 -4
  179. data/src/core/lib/backoff/backoff.cc +80 -0
  180. data/src/core/lib/backoff/backoff.h +83 -0
  181. data/src/core/lib/channel/{channel_args.c → channel_args.cc} +92 -92
  182. data/src/core/lib/channel/channel_args.h +45 -37
  183. data/src/core/lib/channel/{channel_stack.c → channel_stack.cc} +67 -68
  184. data/src/core/lib/channel/channel_stack.h +76 -75
  185. data/src/core/lib/channel/{channel_stack_builder.c → channel_stack_builder.cc} +91 -91
  186. data/src/core/lib/channel/channel_stack_builder.h +45 -45
  187. data/src/core/lib/channel/{connected_channel.c → connected_channel.cc} +70 -70
  188. data/src/core/lib/channel/connected_channel.h +12 -4
  189. data/src/core/lib/channel/context.h +2 -2
  190. data/src/core/lib/channel/{handshaker.c → handshaker.cc} +7 -9
  191. data/src/core/lib/channel/handshaker.h +9 -1
  192. data/src/core/lib/channel/{handshaker_factory.c → handshaker_factory.cc} +7 -7
  193. data/src/core/lib/channel/handshaker_factory.h +18 -10
  194. data/src/core/lib/channel/{handshaker_registry.c → handshaker_registry.cc} +0 -0
  195. data/src/core/lib/channel/handshaker_registry.h +8 -0
  196. data/src/core/lib/compression/algorithm_metadata.h +8 -0
  197. data/src/core/lib/compression/{compression.c → compression.cc} +9 -9
  198. data/src/core/lib/compression/{message_compress.c → message_compress.cc} +0 -0
  199. data/src/core/lib/compression/message_compress.h +8 -0
  200. data/src/core/lib/compression/{stream_compression.c → stream_compression.cc} +12 -12
  201. data/src/core/lib/compression/stream_compression.h +27 -19
  202. data/src/core/lib/compression/{stream_compression_gzip.c → stream_compression_gzip.cc} +35 -36
  203. data/src/core/lib/compression/stream_compression_gzip.h +8 -0
  204. data/src/core/lib/compression/{stream_compression_identity.c → stream_compression_identity.cc} +19 -20
  205. data/src/core/lib/compression/stream_compression_identity.h +8 -0
  206. data/src/core/lib/debug/{stats.c → stats.cc} +19 -19
  207. data/src/core/lib/debug/stats.h +17 -9
  208. data/src/core/lib/debug/{stats_data.c → stats_data.cc} +45 -22
  209. data/src/core/lib/debug/stats_data.h +58 -19
  210. data/src/core/lib/debug/trace.cc +142 -0
  211. data/src/core/lib/debug/trace.h +74 -14
  212. data/src/core/lib/http/{format_request.c → format_request.cc} +10 -10
  213. data/src/core/lib/http/format_request.h +12 -4
  214. data/src/core/lib/http/{httpcli.c → httpcli.cc} +80 -80
  215. data/src/core/lib/http/httpcli.h +41 -33
  216. data/src/core/lib/http/{httpcli_security_connector.c → httpcli_security_connector.cc} +69 -55
  217. data/src/core/lib/http/{parser.c → parser.cc} +42 -42
  218. data/src/core/lib/http/parser.h +28 -20
  219. data/src/core/lib/{support → iomgr}/block_annotate.h +17 -8
  220. data/src/core/lib/iomgr/{call_combiner.c → call_combiner.cc} +29 -17
  221. data/src/core/lib/iomgr/call_combiner.h +9 -1
  222. data/src/core/lib/iomgr/closure.h +220 -62
  223. data/src/core/lib/iomgr/{combiner.c → combiner.cc} +63 -62
  224. data/src/core/lib/iomgr/combiner.h +16 -8
  225. data/src/core/lib/iomgr/{endpoint.c → endpoint.cc} +6 -0
  226. data/src/core/lib/iomgr/endpoint.h +47 -32
  227. data/src/core/lib/iomgr/endpoint_pair.h +12 -4
  228. data/src/core/lib/iomgr/{endpoint_pair_posix.c → endpoint_pair_posix.cc} +3 -3
  229. data/src/core/lib/iomgr/{endpoint_pair_uv.c → endpoint_pair_uv.cc} +2 -2
  230. data/src/core/lib/iomgr/{endpoint_pair_windows.c → endpoint_pair_windows.cc} +6 -6
  231. data/src/core/lib/iomgr/{error.c → error.cc} +125 -124
  232. data/src/core/lib/iomgr/error.h +32 -27
  233. data/src/core/lib/iomgr/error_internal.h +11 -2
  234. data/src/core/lib/iomgr/{ev_epoll1_linux.c → ev_epoll1_linux.cc} +214 -215
  235. data/src/core/lib/iomgr/ev_epoll1_linux.h +9 -1
  236. data/src/core/lib/iomgr/ev_epollex_linux.cc +1488 -0
  237. data/src/core/lib/iomgr/ev_epollex_linux.h +9 -1
  238. data/src/core/lib/iomgr/{ev_epollsig_linux.c → ev_epollsig_linux.cc} +304 -305
  239. data/src/core/lib/iomgr/ev_epollsig_linux.h +12 -4
  240. data/src/core/lib/iomgr/{ev_poll_posix.c → ev_poll_posix.cc} +272 -283
  241. data/src/core/lib/iomgr/ev_poll_posix.h +10 -2
  242. data/src/core/lib/iomgr/ev_posix.cc +288 -0
  243. data/src/core/lib/iomgr/ev_posix.h +75 -67
  244. data/src/core/lib/iomgr/{ev_windows.c → ev_windows.cc} +2 -2
  245. data/src/core/lib/iomgr/exec_ctx.cc +177 -0
  246. data/src/core/lib/iomgr/exec_ctx.h +35 -13
  247. data/src/core/lib/iomgr/{executor.c → executor.cc} +34 -35
  248. data/src/core/lib/iomgr/executor.h +12 -4
  249. data/src/core/lib/iomgr/{fork_posix.c → fork_posix.cc} +0 -0
  250. data/src/core/lib/iomgr/{fork_windows.c → fork_windows.cc} +0 -0
  251. data/src/core/lib/iomgr/gethostname.h +9 -1
  252. data/src/core/lib/iomgr/{gethostname_fallback.c → gethostname_fallback.cc} +2 -1
  253. data/src/core/lib/iomgr/{gethostname_host_name_max.c → gethostname_host_name_max.cc} +4 -3
  254. data/src/core/lib/iomgr/{gethostname_sysconf.c → gethostname_sysconf.cc} +3 -2
  255. data/src/core/lib/iomgr/{iocp_windows.c → iocp_windows.cc} +23 -25
  256. data/src/core/lib/iomgr/iocp_windows.h +17 -3
  257. data/src/core/lib/iomgr/{iomgr.c → iomgr.cc} +25 -19
  258. data/src/core/lib/iomgr/iomgr.h +11 -3
  259. data/src/core/lib/iomgr/iomgr_internal.h +13 -5
  260. data/src/core/lib/iomgr/{iomgr_posix.c → iomgr_posix.cc} +0 -1
  261. data/src/core/lib/iomgr/{iomgr_uv.c → iomgr_uv.cc} +1 -1
  262. data/src/core/lib/iomgr/iomgr_uv.h +8 -0
  263. data/src/core/lib/iomgr/{iomgr_windows.c → iomgr_windows.cc} +0 -0
  264. data/src/core/lib/iomgr/{is_epollexclusive_available.c → is_epollexclusive_available.cc} +1 -1
  265. data/src/core/lib/iomgr/is_epollexclusive_available.h +8 -0
  266. data/src/core/lib/iomgr/{load_file.c → load_file.cc} +12 -12
  267. data/src/core/lib/iomgr/load_file.h +2 -2
  268. data/src/core/lib/iomgr/{lockfree_event.c → lockfree_event.cc} +76 -68
  269. data/src/core/lib/iomgr/lockfree_event.h +30 -11
  270. data/src/core/lib/iomgr/{network_status_tracker.c → network_status_tracker.cc} +3 -2
  271. data/src/core/lib/iomgr/network_status_tracker.h +2 -2
  272. data/src/core/lib/iomgr/{polling_entity.c → polling_entity.cc} +18 -18
  273. data/src/core/lib/iomgr/polling_entity.h +21 -13
  274. data/src/core/lib/iomgr/pollset.h +17 -11
  275. data/src/core/lib/iomgr/pollset_set.h +23 -15
  276. data/src/core/lib/iomgr/{pollset_set_uv.c → pollset_set_uv.cc} +0 -0
  277. data/src/core/lib/iomgr/{pollset_set_windows.c → pollset_set_windows.cc} +0 -0
  278. data/src/core/lib/iomgr/{pollset_uv.c → pollset_uv.cc} +31 -29
  279. data/src/core/lib/iomgr/pollset_uv.h +8 -0
  280. data/src/core/lib/iomgr/{pollset_windows.c → pollset_windows.cc} +24 -24
  281. data/src/core/lib/iomgr/pollset_windows.h +17 -4
  282. data/src/core/lib/iomgr/port.h +10 -0
  283. data/src/core/lib/iomgr/resolve_address.h +18 -10
  284. data/src/core/lib/iomgr/{resolve_address_posix.c → resolve_address_posix.cc} +40 -40
  285. data/src/core/lib/iomgr/{resolve_address_uv.c → resolve_address_uv.cc} +61 -56
  286. data/src/core/lib/iomgr/{resolve_address_windows.c → resolve_address_windows.cc} +36 -34
  287. data/src/core/lib/iomgr/{resource_quota.c → resource_quota.cc} +209 -180
  288. data/src/core/lib/iomgr/resource_quota.h +45 -37
  289. data/src/core/lib/iomgr/{sockaddr_utils.c → sockaddr_utils.cc} +61 -61
  290. data/src/core/lib/iomgr/sockaddr_utils.h +23 -15
  291. data/src/core/lib/iomgr/sockaddr_windows.h +6 -0
  292. data/src/core/lib/iomgr/{socket_factory_posix.c → socket_factory_posix.cc} +20 -20
  293. data/src/core/lib/iomgr/socket_factory_posix.h +15 -15
  294. data/src/core/lib/iomgr/{socket_mutator.c → socket_mutator.cc} +18 -18
  295. data/src/core/lib/iomgr/socket_mutator.h +11 -11
  296. data/src/core/lib/iomgr/socket_utils.h +9 -1
  297. data/src/core/lib/iomgr/{socket_utils_common_posix.c → socket_utils_common_posix.cc} +28 -28
  298. data/src/core/lib/iomgr/{socket_utils_linux.c → socket_utils_linux.cc} +3 -3
  299. data/src/core/lib/iomgr/{socket_utils_posix.c → socket_utils_posix.cc} +3 -3
  300. data/src/core/lib/iomgr/socket_utils_posix.h +26 -18
  301. data/src/core/lib/iomgr/{socket_utils_uv.c → socket_utils_uv.cc} +1 -1
  302. data/src/core/lib/iomgr/{socket_utils_windows.c → socket_utils_windows.cc} +2 -2
  303. data/src/core/lib/iomgr/{socket_windows.c → socket_windows.cc} +18 -18
  304. data/src/core/lib/iomgr/socket_windows.h +26 -13
  305. data/src/core/lib/iomgr/tcp_client.h +14 -6
  306. data/src/core/lib/iomgr/{tcp_client_posix.c → tcp_client_posix.cc} +69 -70
  307. data/src/core/lib/iomgr/tcp_client_posix.h +11 -3
  308. data/src/core/lib/iomgr/{tcp_client_uv.c → tcp_client_uv.cc} +47 -48
  309. data/src/core/lib/iomgr/{tcp_client_windows.c → tcp_client_windows.cc} +46 -44
  310. data/src/core/lib/iomgr/{tcp_posix.c → tcp_posix.cc} +198 -175
  311. data/src/core/lib/iomgr/tcp_posix.h +15 -7
  312. data/src/core/lib/iomgr/tcp_server.h +31 -23
  313. data/src/core/lib/iomgr/{tcp_server_posix.c → tcp_server_posix.cc} +78 -77
  314. data/src/core/lib/iomgr/tcp_server_utils_posix.h +27 -19
  315. data/src/core/lib/iomgr/{tcp_server_utils_posix_common.c → tcp_server_utils_posix_common.cc} +27 -27
  316. data/src/core/lib/iomgr/{tcp_server_utils_posix_ifaddrs.c → tcp_server_utils_posix_ifaddrs.cc} +25 -25
  317. data/src/core/lib/iomgr/{tcp_server_utils_posix_noifaddrs.c → tcp_server_utils_posix_noifaddrs.cc} +2 -2
  318. data/src/core/lib/iomgr/{tcp_server_uv.c → tcp_server_uv.cc} +133 -105
  319. data/src/core/lib/iomgr/{tcp_server_windows.c → tcp_server_windows.cc} +81 -77
  320. data/src/core/lib/iomgr/tcp_uv.cc +420 -0
  321. data/src/core/lib/iomgr/tcp_uv.h +18 -4
  322. data/src/core/lib/iomgr/{tcp_windows.c → tcp_windows.cc} +90 -79
  323. data/src/core/lib/iomgr/tcp_windows.h +17 -4
  324. data/src/core/lib/iomgr/{time_averaged_stats.c → time_averaged_stats.cc} +0 -0
  325. data/src/core/lib/iomgr/time_averaged_stats.h +8 -0
  326. data/src/core/lib/iomgr/timer.h +16 -9
  327. data/src/core/lib/iomgr/{timer_generic.c → timer_generic.cc} +130 -171
  328. data/src/core/lib/iomgr/timer_generic.h +4 -4
  329. data/src/core/lib/iomgr/{timer_heap.c → timer_heap.cc} +20 -21
  330. data/src/core/lib/iomgr/timer_heap.h +16 -8
  331. data/src/core/lib/iomgr/{timer_manager.c → timer_manager.cc} +54 -52
  332. data/src/core/lib/iomgr/timer_manager.h +8 -0
  333. data/src/core/lib/iomgr/{timer_uv.c → timer_uv.cc} +22 -24
  334. data/src/core/lib/iomgr/timer_uv.h +2 -2
  335. data/src/core/lib/iomgr/{udp_server.c → udp_server.cc} +75 -75
  336. data/src/core/lib/iomgr/udp_server.h +25 -17
  337. data/src/core/lib/iomgr/{unix_sockets_posix.c → unix_sockets_posix.cc} +22 -21
  338. data/src/core/lib/iomgr/unix_sockets_posix.h +14 -6
  339. data/src/core/lib/iomgr/{unix_sockets_posix_noop.c → unix_sockets_posix_noop.cc} +5 -5
  340. data/src/core/lib/iomgr/{wakeup_fd_cv.c → wakeup_fd_cv.cc} +2 -2
  341. data/src/core/lib/iomgr/wakeup_fd_cv.h +10 -0
  342. data/src/core/lib/iomgr/{wakeup_fd_eventfd.c → wakeup_fd_eventfd.cc} +0 -0
  343. data/src/core/lib/iomgr/{wakeup_fd_nospecial.c → wakeup_fd_nospecial.cc} +0 -0
  344. data/src/core/lib/iomgr/{wakeup_fd_pipe.c → wakeup_fd_pipe.cc} +1 -0
  345. data/src/core/lib/iomgr/wakeup_fd_pipe.h +9 -1
  346. data/src/core/lib/iomgr/{wakeup_fd_posix.c → wakeup_fd_posix.cc} +6 -7
  347. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -0
  348. data/src/core/lib/json/{json.c → json.cc} +0 -0
  349. data/src/core/lib/json/json.h +8 -0
  350. data/src/core/lib/json/{json_reader.c → json_reader.cc} +18 -18
  351. data/src/core/lib/json/json_reader.h +26 -18
  352. data/src/core/lib/json/{json_string.c → json_string.cc} +57 -57
  353. data/src/core/lib/json/{json_writer.c → json_writer.cc} +20 -20
  354. data/src/core/lib/json/json_writer.h +23 -15
  355. data/src/core/lib/profiling/{basic_timers.c → basic_timers.cc} +34 -34
  356. data/src/core/lib/profiling/{stap_timers.c → stap_timers.cc} +5 -5
  357. data/src/core/lib/profiling/timers.h +6 -6
  358. data/src/core/lib/security/context/{security_context.c → security_context.cc} +98 -95
  359. data/src/core/lib/security/context/security_context.h +27 -29
  360. data/src/core/lib/security/credentials/composite/{composite_credentials.c → composite_credentials.cc} +79 -73
  361. data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -9
  362. data/src/core/lib/security/credentials/{credentials.c → credentials.cc} +97 -92
  363. data/src/core/lib/security/credentials/credentials.h +83 -75
  364. data/src/core/lib/security/credentials/{credentials_metadata.c → credentials_metadata.cc} +7 -6
  365. data/src/core/lib/security/credentials/fake/{fake_credentials.c → fake_credentials.cc} +39 -36
  366. data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
  367. data/src/core/lib/security/credentials/google_default/{credentials_generic.c → credentials_generic.cc} +5 -5
  368. data/src/core/lib/security/credentials/google_default/{google_default_credentials.c → google_default_credentials.cc} +55 -55
  369. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -1
  370. data/src/core/lib/security/credentials/iam/{iam_credentials.c → iam_credentials.cc} +19 -18
  371. data/src/core/lib/security/credentials/jwt/{json_token.c → json_token.cc} +80 -75
  372. data/src/core/lib/security/credentials/jwt/json_token.h +23 -15
  373. data/src/core/lib/security/credentials/jwt/{jwt_credentials.c → jwt_credentials.cc} +45 -41
  374. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
  375. data/src/core/lib/security/credentials/jwt/{jwt_verifier.c → jwt_verifier.cc} +262 -252
  376. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +38 -30
  377. data/src/core/lib/security/credentials/oauth2/{oauth2_credentials.c → oauth2_credentials.cc} +138 -141
  378. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +30 -22
  379. data/src/core/lib/security/credentials/plugin/{plugin_credentials.c → plugin_credentials.cc} +52 -53
  380. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +7 -7
  381. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +344 -0
  382. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +27 -0
  383. data/src/core/lib/security/transport/auth_filters.h +16 -0
  384. data/src/core/lib/security/transport/{client_auth_filter.c → client_auth_filter.cc} +127 -115
  385. data/src/core/lib/security/transport/{lb_targets_info.c → lb_targets_info.cc} +16 -13
  386. data/src/core/lib/security/transport/lb_targets_info.h +11 -3
  387. data/src/core/lib/security/transport/{secure_endpoint.c → secure_endpoint.cc} +84 -76
  388. data/src/core/lib/security/transport/secure_endpoint.h +13 -5
  389. data/src/core/lib/security/transport/security_connector.cc +1121 -0
  390. data/src/core/lib/security/transport/security_connector.h +97 -79
  391. data/src/core/lib/security/transport/{security_handshaker.c → security_handshaker.cc} +139 -132
  392. data/src/core/lib/security/transport/security_handshaker.h +11 -3
  393. data/src/core/lib/security/transport/{server_auth_filter.c → server_auth_filter.cc} +68 -68
  394. data/src/core/lib/security/transport/{tsi_error.c → tsi_error.cc} +1 -1
  395. data/src/core/lib/security/transport/tsi_error.h +9 -1
  396. data/src/core/lib/security/util/{json_util.c → json_util.cc} +11 -11
  397. data/src/core/lib/security/util/json_util.h +12 -4
  398. data/src/core/lib/slice/{b64.c → b64.cc} +15 -15
  399. data/src/core/lib/slice/b64.h +12 -4
  400. data/src/core/lib/slice/{percent_encoding.c → percent_encoding.cc} +15 -15
  401. data/src/core/lib/slice/percent_encoding.h +11 -3
  402. data/src/core/lib/slice/{slice.c → slice.cc} +64 -64
  403. data/src/core/lib/slice/{slice_buffer.c → slice_buffer.cc} +38 -38
  404. data/src/core/lib/slice/{slice_hash_table.c → slice_hash_table.cc} +7 -7
  405. data/src/core/lib/slice/slice_hash_table.h +19 -11
  406. data/src/core/lib/slice/{slice_intern.c → slice_intern.cc} +35 -34
  407. data/src/core/lib/slice/slice_internal.h +17 -6
  408. data/src/core/lib/slice/{slice_string_helpers.c → slice_string_helpers.cc} +9 -9
  409. data/src/core/lib/slice/slice_string_helpers.h +3 -3
  410. data/src/core/lib/support/abstract.h +29 -0
  411. data/src/core/lib/support/{alloc.c → alloc.cc} +22 -22
  412. data/src/core/lib/support/{arena.c → arena.cc} +12 -12
  413. data/src/core/lib/support/arena.h +11 -3
  414. data/src/core/lib/support/{atm.c → atm.cc} +1 -1
  415. data/src/core/lib/support/{avl.c → avl.cc} +71 -70
  416. data/src/core/lib/support/{cmdline.c → cmdline.cc} +62 -62
  417. data/src/core/lib/support/{cpu_iphone.c → cpu_iphone.cc} +2 -0
  418. data/src/core/lib/support/{cpu_linux.c → cpu_linux.cc} +10 -0
  419. data/src/core/lib/support/{cpu_posix.c → cpu_posix.cc} +27 -4
  420. data/src/core/lib/support/{cpu_windows.c → cpu_windows.cc} +1 -0
  421. data/src/core/lib/support/env.h +3 -3
  422. data/src/core/lib/support/{env_linux.c → env_linux.cc} +11 -11
  423. data/src/core/lib/support/{env_posix.c → env_posix.cc} +4 -4
  424. data/src/core/lib/support/{env_windows.c → env_windows.cc} +5 -5
  425. data/src/core/lib/support/{fork.c → fork.cc} +2 -2
  426. data/src/core/lib/support/{histogram.c → histogram.cc} +25 -26
  427. data/src/core/lib/support/{host_port.c → host_port.cc} +16 -16
  428. data/src/core/lib/support/{log.c → log.cc} +8 -8
  429. data/src/core/lib/support/{log_android.c → log_android.cc} +7 -7
  430. data/src/core/lib/support/{log_linux.c → log_linux.cc} +8 -8
  431. data/src/core/lib/support/{log_posix.c → log_posix.cc} +9 -10
  432. data/src/core/lib/support/{log_windows.c → log_windows.cc} +7 -7
  433. data/src/core/lib/support/manual_constructor.h +211 -0
  434. data/src/core/lib/support/memory.h +41 -0
  435. data/src/core/lib/support/mpscq.cc +114 -0
  436. data/src/core/lib/support/mpscq.h +45 -7
  437. data/src/core/lib/support/{murmur_hash.c → murmur_hash.cc} +9 -12
  438. data/src/core/lib/support/murmur_hash.h +9 -1
  439. data/src/core/lib/support/spinlock.h +8 -1
  440. data/src/core/lib/support/{string.c → string.cc} +56 -55
  441. data/src/core/lib/support/string.h +21 -21
  442. data/src/core/lib/support/{string_posix.c → string_posix.cc} +5 -4
  443. data/src/core/lib/support/{string_util_windows.c → string_util_windows.cc} +9 -6
  444. data/src/core/lib/support/{string_windows.c → string_windows.cc} +3 -2
  445. data/src/core/lib/support/string_windows.h +8 -0
  446. data/src/core/lib/support/{subprocess_posix.c → subprocess_posix.cc} +13 -13
  447. data/src/core/lib/support/{subprocess_windows.c → subprocess_windows.cc} +9 -9
  448. data/src/core/lib/support/{sync.c → sync.cc} +22 -22
  449. data/src/core/lib/support/{sync_posix.c → sync_posix.cc} +6 -2
  450. data/src/core/lib/support/{sync_windows.c → sync_windows.cc} +14 -14
  451. data/src/core/lib/support/{thd.c → thd.cc} +0 -0
  452. data/src/core/lib/support/{thd_posix.c → thd_posix.cc} +10 -10
  453. data/src/core/lib/support/{thd_windows.c → thd_windows.cc} +10 -10
  454. data/src/core/lib/support/{time.c → time.cc} +0 -0
  455. data/src/core/lib/support/{time_posix.c → time_posix.cc} +5 -6
  456. data/src/core/lib/support/{time_precise.c → time_precise.cc} +6 -4
  457. data/src/core/lib/support/time_precise.h +9 -1
  458. data/src/core/lib/support/{time_windows.c → time_windows.cc} +2 -3
  459. data/src/core/lib/support/{tls_pthread.c → tls_pthread.cc} +2 -2
  460. data/src/core/lib/support/tmpfile.h +1 -1
  461. data/src/core/lib/support/{tmpfile_msys.c → tmpfile_msys.cc} +2 -2
  462. data/src/core/lib/support/{tmpfile_posix.c → tmpfile_posix.cc} +7 -7
  463. data/src/core/lib/support/{tmpfile_windows.c → tmpfile_windows.cc} +2 -2
  464. data/src/core/lib/support/{wrap_memcpy.c → wrap_memcpy.cc} +4 -2
  465. data/src/core/lib/surface/{alarm.c → alarm.cc} +32 -31
  466. data/src/core/lib/surface/alarm_internal.h +10 -2
  467. data/src/core/lib/surface/{api_trace.c → api_trace.cc} +1 -1
  468. data/src/core/lib/surface/api_trace.h +2 -2
  469. data/src/core/lib/surface/{byte_buffer.c → byte_buffer.cc} +13 -13
  470. data/src/core/lib/surface/{byte_buffer_reader.c → byte_buffer_reader.cc} +9 -9
  471. data/src/core/lib/surface/{call.c → call.cc} +379 -372
  472. data/src/core/lib/surface/call.h +37 -38
  473. data/src/core/lib/surface/{call_details.c → call_details.cc} +0 -0
  474. data/src/core/lib/surface/{call_log_batch.c → call_log_batch.cc} +13 -11
  475. data/src/core/lib/surface/call_test_only.h +5 -5
  476. data/src/core/lib/surface/{channel.c → channel.cc} +94 -95
  477. data/src/core/lib/surface/channel.h +29 -21
  478. data/src/core/lib/surface/{channel_init.c → channel_init.cc} +13 -13
  479. data/src/core/lib/surface/channel_init.h +6 -6
  480. data/src/core/lib/surface/{channel_ping.c → channel_ping.cc} +12 -12
  481. data/src/core/lib/surface/{channel_stack_type.c → channel_stack_type.cc} +1 -1
  482. data/src/core/lib/surface/channel_stack_type.h +9 -1
  483. data/src/core/lib/surface/{completion_queue.c → completion_queue.cc} +416 -379
  484. data/src/core/lib/surface/completion_queue.h +29 -29
  485. data/src/core/lib/surface/{completion_queue_factory.c → completion_queue_factory.cc} +1 -1
  486. data/src/core/lib/surface/completion_queue_factory.h +8 -0
  487. data/src/core/lib/surface/{event_string.c → event_string.cc} +9 -9
  488. data/src/core/lib/surface/event_string.h +9 -1
  489. data/src/core/lib/surface/{init.c → init.cc} +16 -39
  490. data/src/core/lib/surface/init.h +8 -0
  491. data/src/core/lib/surface/{init_secure.c → init_secure.cc} +12 -25
  492. data/src/core/lib/surface/lame_client.cc +38 -40
  493. data/src/core/lib/surface/lame_client.h +8 -0
  494. data/src/core/lib/surface/{metadata_array.c → metadata_array.cc} +0 -0
  495. data/src/core/lib/surface/{server.c → server.cc} +340 -404
  496. data/src/core/lib/surface/server.h +22 -14
  497. data/src/core/lib/surface/{validate_metadata.c → validate_metadata.cc} +10 -9
  498. data/src/core/lib/surface/validate_metadata.h +10 -2
  499. data/src/core/lib/surface/{version.c → version.cc} +2 -2
  500. data/src/core/lib/transport/bdp_estimator.cc +84 -0
  501. data/src/core/lib/transport/bdp_estimator.h +67 -42
  502. data/src/core/lib/transport/{byte_stream.c → byte_stream.cc} +51 -51
  503. data/src/core/lib/transport/byte_stream.h +41 -33
  504. data/src/core/lib/transport/{connectivity_state.c → connectivity_state.cc} +36 -40
  505. data/src/core/lib/transport/connectivity_state.h +29 -21
  506. data/src/core/lib/transport/{error_utils.c → error_utils.cc} +26 -22
  507. data/src/core/lib/transport/error_utils.h +18 -6
  508. data/src/core/lib/transport/{metadata.c → metadata.cc} +92 -88
  509. data/src/core/lib/transport/metadata.h +22 -20
  510. data/src/core/lib/transport/{metadata_batch.c → metadata_batch.cc} +78 -79
  511. data/src/core/lib/transport/metadata_batch.h +46 -45
  512. data/src/core/lib/transport/pid_controller.cc +48 -0
  513. data/src/core/lib/transport/pid_controller.h +84 -32
  514. data/src/core/lib/transport/{service_config.c → service_config.cc} +66 -48
  515. data/src/core/lib/transport/service_config.h +11 -2
  516. data/src/core/lib/transport/{static_metadata.c → static_metadata.cc} +2 -2
  517. data/src/core/lib/transport/static_metadata.h +30 -23
  518. data/src/core/lib/transport/{status_conversion.c → status_conversion.cc} +4 -3
  519. data/src/core/lib/transport/status_conversion.h +12 -2
  520. data/src/core/lib/transport/{timeout_encoding.c → timeout_encoding.cc} +28 -61
  521. data/src/core/lib/transport/timeout_encoding.h +11 -2
  522. data/src/core/lib/transport/{transport.c → transport.cc} +79 -79
  523. data/src/core/lib/transport/transport.h +78 -80
  524. data/src/core/lib/transport/transport_impl.h +27 -19
  525. data/src/core/lib/transport/{transport_op_string.c → transport_op_string.cc} +32 -30
  526. data/src/core/plugin_registry/{grpc_plugin_registry.c → grpc_plugin_registry.cc} +34 -38
  527. data/src/core/tsi/{fake_transport_security.c → fake_transport_security.cc} +141 -132
  528. data/src/core/tsi/fake_transport_security.h +5 -5
  529. data/src/core/tsi/{gts_transport_security.c → gts_transport_security.cc} +4 -4
  530. data/src/core/tsi/gts_transport_security.h +11 -3
  531. data/src/core/tsi/{ssl_transport_security.c → ssl_transport_security.cc} +309 -300
  532. data/src/core/tsi/ssl_transport_security.h +25 -25
  533. data/src/core/tsi/ssl_types.h +8 -0
  534. data/src/core/tsi/{transport_security.c → transport_security.cc} +94 -87
  535. data/src/core/tsi/transport_security.h +55 -55
  536. data/src/core/tsi/{transport_security_adapter.c → transport_security_adapter.cc} +58 -55
  537. data/src/core/tsi/transport_security_adapter.h +2 -2
  538. data/src/core/tsi/{transport_security_grpc.c → transport_security_grpc.cc} +21 -21
  539. data/src/core/tsi/transport_security_grpc.h +19 -19
  540. data/src/core/tsi/transport_security_interface.h +41 -41
  541. data/src/ruby/ext/grpc/extconf.rb +4 -2
  542. data/src/ruby/ext/grpc/rb_byte_buffer.c +5 -5
  543. data/src/ruby/ext/grpc/rb_byte_buffer.h +2 -2
  544. data/src/ruby/ext/grpc/rb_call.c +41 -42
  545. data/src/ruby/ext/grpc/rb_call.h +6 -6
  546. data/src/ruby/ext/grpc/rb_call_credentials.c +30 -30
  547. data/src/ruby/ext/grpc/rb_channel.c +87 -87
  548. data/src/ruby/ext/grpc/rb_channel_credentials.c +23 -23
  549. data/src/ruby/ext/grpc/rb_completion_queue.c +11 -11
  550. data/src/ruby/ext/grpc/rb_completion_queue.h +3 -3
  551. data/src/ruby/ext/grpc/rb_compression_options.c +20 -20
  552. data/src/ruby/ext/grpc/rb_event_thread.c +14 -14
  553. data/src/ruby/ext/grpc/rb_event_thread.h +1 -1
  554. data/src/ruby/ext/grpc/rb_grpc.c +8 -8
  555. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -58
  556. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +242 -306
  557. data/src/ruby/ext/grpc/rb_server.c +23 -23
  558. data/src/ruby/ext/grpc/rb_server_credentials.c +13 -13
  559. data/src/ruby/lib/grpc/generic/rpc_server.rb +25 -12
  560. data/src/ruby/lib/grpc/version.rb +1 -1
  561. data/src/ruby/pb/grpc/health/checker.rb +14 -0
  562. data/src/ruby/spec/pb/health/checker_spec.rb +29 -0
  563. data/third_party/cares/config_freebsd/ares_config.h +502 -0
  564. data/third_party/cares/config_openbsd/ares_config.h +502 -0
  565. metadata +302 -328
  566. data/src/core/ext/census/aggregation.h +0 -51
  567. data/src/core/ext/census/base_resources.c +0 -56
  568. data/src/core/ext/census/base_resources.h +0 -24
  569. data/src/core/ext/census/census_interface.h +0 -61
  570. data/src/core/ext/census/census_rpc_stats.h +0 -86
  571. data/src/core/ext/census/context.c +0 -496
  572. data/src/core/ext/census/gen/census.pb.c +0 -161
  573. data/src/core/ext/census/gen/census.pb.h +0 -280
  574. data/src/core/ext/census/gen/trace_context.pb.c +0 -39
  575. data/src/core/ext/census/gen/trace_context.pb.h +0 -78
  576. data/src/core/ext/census/grpc_filter.c +0 -196
  577. data/src/core/ext/census/grpc_plugin.c +0 -70
  578. data/src/core/ext/census/initialize.c +0 -51
  579. data/src/core/ext/census/intrusive_hash_map.c +0 -305
  580. data/src/core/ext/census/intrusive_hash_map.h +0 -152
  581. data/src/core/ext/census/intrusive_hash_map_internal.h +0 -48
  582. data/src/core/ext/census/mlog.c +0 -586
  583. data/src/core/ext/census/mlog.h +0 -80
  584. data/src/core/ext/census/operation.c +0 -48
  585. data/src/core/ext/census/placeholders.c +0 -49
  586. data/src/core/ext/census/resource.c +0 -303
  587. data/src/core/ext/census/resource.h +0 -48
  588. data/src/core/ext/census/rpc_metric_id.h +0 -36
  589. data/src/core/ext/census/trace_context.c +0 -71
  590. data/src/core/ext/census/trace_context.h +0 -56
  591. data/src/core/ext/census/trace_label.h +0 -46
  592. data/src/core/ext/census/trace_propagation.h +0 -48
  593. data/src/core/ext/census/trace_status.h +0 -30
  594. data/src/core/ext/census/trace_string.h +0 -35
  595. data/src/core/ext/census/tracing.c +0 -55
  596. data/src/core/ext/census/tracing.h +0 -109
  597. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +0 -714
  598. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +0 -924
  599. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +0 -60
  600. data/src/core/ext/transport/chttp2/transport/flow_control.c +0 -502
  601. data/src/core/ext/transport/chttp2/transport/writing.c +0 -534
  602. data/src/core/lib/debug/trace.c +0 -146
  603. data/src/core/lib/iomgr/closure.c +0 -219
  604. data/src/core/lib/iomgr/ev_epollex_linux.c +0 -1461
  605. data/src/core/lib/iomgr/ev_posix.c +0 -266
  606. data/src/core/lib/iomgr/exec_ctx.c +0 -113
  607. data/src/core/lib/iomgr/tcp_uv.c +0 -381
  608. data/src/core/lib/security/credentials/ssl/ssl_credentials.c +0 -194
  609. data/src/core/lib/security/transport/security_connector.c +0 -914
  610. data/src/core/lib/support/backoff.c +0 -72
  611. data/src/core/lib/support/backoff.h +0 -56
  612. data/src/core/lib/support/mpscq.c +0 -79
  613. data/src/core/lib/support/stack_lockfree.c +0 -137
  614. data/src/core/lib/support/stack_lockfree.h +0 -38
  615. data/src/core/lib/transport/bdp_estimator.c +0 -110
  616. data/src/core/lib/transport/pid_controller.c +0 -63
@@ -19,11 +19,12 @@
19
19
  #ifndef GRPC_CORE_LIB_IOMGR_ERROR_H
20
20
  #define GRPC_CORE_LIB_IOMGR_ERROR_H
21
21
 
22
+ #include <inttypes.h>
22
23
  #include <stdbool.h>
23
- #include <stdint.h>
24
24
 
25
25
  #include <grpc/slice.h>
26
26
  #include <grpc/status.h>
27
+ #include <grpc/support/log.h>
27
28
  #include <grpc/support/time.h>
28
29
 
29
30
  #include "src/core/lib/debug/trace.h"
@@ -38,9 +39,7 @@ extern "C" {
38
39
 
39
40
  typedef struct grpc_error grpc_error;
40
41
 
41
- #ifndef NDEBUG
42
- extern grpc_tracer_flag grpc_trace_error_refcount;
43
- #endif
42
+ extern grpc_core::DebugOnlyTraceFlag grpc_trace_error_refcount;
44
43
 
45
44
  typedef enum {
46
45
  /// 'errno' from the operating system
@@ -122,15 +121,15 @@ typedef enum {
122
121
  /// They are always even so that other code (particularly combiner locks,
123
122
  /// polling engines) can safely use the lower bit for themselves.
124
123
 
125
- #define GRPC_ERROR_NONE ((grpc_error *)NULL)
126
- #define GRPC_ERROR_OOM ((grpc_error *)2)
127
- #define GRPC_ERROR_CANCELLED ((grpc_error *)4)
124
+ #define GRPC_ERROR_NONE ((grpc_error*)NULL)
125
+ #define GRPC_ERROR_OOM ((grpc_error*)2)
126
+ #define GRPC_ERROR_CANCELLED ((grpc_error*)4)
128
127
 
129
- const char *grpc_error_string(grpc_error *error);
128
+ const char* grpc_error_string(grpc_error* error);
130
129
 
131
130
  /// Create an error - but use GRPC_ERROR_CREATE instead
132
- grpc_error *grpc_error_create(const char *file, int line, grpc_slice desc,
133
- grpc_error **referencing, size_t num_referencing);
131
+ grpc_error* grpc_error_create(const char* file, int line, grpc_slice desc,
132
+ grpc_error** referencing, size_t num_referencing);
134
133
  /// Create an error (this is the preferred way of generating an error that is
135
134
  /// not due to a system call - for system calls, use GRPC_OS_ERROR or
136
135
  /// GRPC_WSA_ERROR as appropriate)
@@ -156,44 +155,50 @@ grpc_error *grpc_error_create(const char *file, int line, grpc_slice desc,
156
155
  errs, count)
157
156
 
158
157
  #ifndef NDEBUG
159
- grpc_error *grpc_error_ref(grpc_error *err, const char *file, int line);
160
- void grpc_error_unref(grpc_error *err, const char *file, int line);
158
+ grpc_error* grpc_error_ref(grpc_error* err, const char* file, int line);
159
+ void grpc_error_unref(grpc_error* err, const char* file, int line);
161
160
  #define GRPC_ERROR_REF(err) grpc_error_ref(err, __FILE__, __LINE__)
162
161
  #define GRPC_ERROR_UNREF(err) grpc_error_unref(err, __FILE__, __LINE__)
163
162
  #else
164
- grpc_error *grpc_error_ref(grpc_error *err);
165
- void grpc_error_unref(grpc_error *err);
163
+ grpc_error* grpc_error_ref(grpc_error* err);
164
+ void grpc_error_unref(grpc_error* err);
166
165
  #define GRPC_ERROR_REF(err) grpc_error_ref(err)
167
166
  #define GRPC_ERROR_UNREF(err) grpc_error_unref(err)
168
167
  #endif
169
168
 
170
- grpc_error *grpc_error_set_int(grpc_error *src, grpc_error_ints which,
169
+ grpc_error* grpc_error_set_int(grpc_error* src, grpc_error_ints which,
171
170
  intptr_t value) GRPC_MUST_USE_RESULT;
172
- bool grpc_error_get_int(grpc_error *error, grpc_error_ints which, intptr_t *p);
173
- grpc_error *grpc_error_set_str(grpc_error *src, grpc_error_strs which,
171
+ bool grpc_error_get_int(grpc_error* error, grpc_error_ints which, intptr_t* p);
172
+ grpc_error* grpc_error_set_str(grpc_error* src, grpc_error_strs which,
174
173
  grpc_slice str) GRPC_MUST_USE_RESULT;
175
174
  /// Returns false if the specified string is not set.
176
175
  /// Caller does NOT own the slice.
177
- bool grpc_error_get_str(grpc_error *error, grpc_error_strs which,
178
- grpc_slice *s);
176
+ bool grpc_error_get_str(grpc_error* error, grpc_error_strs which,
177
+ grpc_slice* s);
179
178
 
180
179
  /// Add a child error: an error that is believed to have contributed to this
181
180
  /// error occurring. Allows root causing high level errors from lower level
182
181
  /// errors that contributed to them.
183
- grpc_error *grpc_error_add_child(grpc_error *src,
184
- grpc_error *child) GRPC_MUST_USE_RESULT;
185
- grpc_error *grpc_os_error(const char *file, int line, int err,
186
- const char *call_name) GRPC_MUST_USE_RESULT;
182
+ grpc_error* grpc_error_add_child(grpc_error* src,
183
+ grpc_error* child) GRPC_MUST_USE_RESULT;
184
+ grpc_error* grpc_os_error(const char* file, int line, int err,
185
+ const char* call_name) GRPC_MUST_USE_RESULT;
186
+
187
+ inline grpc_error* grpc_assert_never_ok(grpc_error* error) {
188
+ GPR_ASSERT(error != GRPC_ERROR_NONE);
189
+ return error;
190
+ }
191
+
187
192
  /// create an error associated with errno!=0 (an 'operating system' error)
188
193
  #define GRPC_OS_ERROR(err, call_name) \
189
- grpc_os_error(__FILE__, __LINE__, err, call_name)
190
- grpc_error *grpc_wsa_error(const char *file, int line, int err,
191
- const char *call_name) GRPC_MUST_USE_RESULT;
194
+ grpc_assert_never_ok(grpc_os_error(__FILE__, __LINE__, err, call_name))
195
+ grpc_error* grpc_wsa_error(const char* file, int line, int err,
196
+ const char* call_name) GRPC_MUST_USE_RESULT;
192
197
  /// windows only: create an error associated with WSAGetLastError()!=0
193
198
  #define GRPC_WSA_ERROR(err, call_name) \
194
199
  grpc_wsa_error(__FILE__, __LINE__, err, call_name)
195
200
 
196
- bool grpc_log_if_error(const char *what, grpc_error *error, const char *file,
201
+ bool grpc_log_if_error(const char* what, grpc_error* error, const char* file,
197
202
  int line);
198
203
  #define GRPC_LOG_IF_ERROR(what, error) \
199
204
  grpc_log_if_error((what), (error), __FILE__, __LINE__)
@@ -23,11 +23,16 @@
23
23
  #include <stdbool.h> // TODO, do we need this?
24
24
 
25
25
  #include <grpc/support/sync.h>
26
+ #include "src/core/lib/iomgr/error.h"
27
+
28
+ #ifdef __cplusplus
29
+ extern "C" {
30
+ #endif
26
31
 
27
32
  typedef struct grpc_linked_error grpc_linked_error;
28
33
 
29
34
  struct grpc_linked_error {
30
- grpc_error *err;
35
+ grpc_error* err;
31
36
  uint8_t next;
32
37
  };
33
38
 
@@ -55,6 +60,10 @@ struct grpc_error {
55
60
  intptr_t arena[0];
56
61
  };
57
62
 
58
- bool grpc_error_is_special(grpc_error *err);
63
+ bool grpc_error_is_special(struct grpc_error* err);
64
+
65
+ #ifdef __cplusplus
66
+ }
67
+ #endif
59
68
 
60
69
  #endif /* GRPC_CORE_LIB_IOMGR_ERROR_INTERNAL_H */
@@ -18,13 +18,15 @@
18
18
 
19
19
  #include "src/core/lib/iomgr/port.h"
20
20
 
21
+ #include <grpc/support/log.h>
22
+
21
23
  /* This polling engine is only relevant on linux kernels supporting epoll() */
22
24
  #ifdef GRPC_LINUX_EPOLL
23
-
24
25
  #include "src/core/lib/iomgr/ev_epoll1_linux.h"
25
26
 
26
27
  #include <assert.h>
27
28
  #include <errno.h>
29
+ #include <limits.h>
28
30
  #include <poll.h>
29
31
  #include <pthread.h>
30
32
  #include <string.h>
@@ -34,18 +36,18 @@
34
36
 
35
37
  #include <grpc/support/alloc.h>
36
38
  #include <grpc/support/cpu.h>
37
- #include <grpc/support/log.h>
38
39
  #include <grpc/support/string_util.h>
39
40
  #include <grpc/support/tls.h>
40
41
  #include <grpc/support/useful.h>
41
42
 
42
43
  #include "src/core/lib/debug/stats.h"
44
+ #include "src/core/lib/iomgr/block_annotate.h"
43
45
  #include "src/core/lib/iomgr/ev_posix.h"
44
46
  #include "src/core/lib/iomgr/iomgr_internal.h"
45
47
  #include "src/core/lib/iomgr/lockfree_event.h"
46
48
  #include "src/core/lib/iomgr/wakeup_fd_posix.h"
47
49
  #include "src/core/lib/profiling/timers.h"
48
- #include "src/core/lib/support/block_annotate.h"
50
+ #include "src/core/lib/support/manual_constructor.h"
49
51
  #include "src/core/lib/support/string.h"
50
52
 
51
53
  static grpc_wakeup_fd global_wakeup_fd;
@@ -111,10 +113,10 @@ static void epoll_set_shutdown() {
111
113
  struct grpc_fd {
112
114
  int fd;
113
115
 
114
- gpr_atm read_closure;
115
- gpr_atm write_closure;
116
+ grpc_core::ManualConstructor<grpc_core::LockfreeEvent> read_closure;
117
+ grpc_core::ManualConstructor<grpc_core::LockfreeEvent> write_closure;
116
118
 
117
- struct grpc_fd *freelist_next;
119
+ struct grpc_fd* freelist_next;
118
120
 
119
121
  /* The pollset that last noticed that the fd is readable. The actual type
120
122
  * stored in this is (grpc_pollset *) */
@@ -132,7 +134,7 @@ static void fd_global_shutdown(void);
132
134
 
133
135
  typedef enum { UNKICKED, KICKED, DESIGNATED_POLLER } kick_state;
134
136
 
135
- static const char *kick_state_string(kick_state st) {
137
+ static const char* kick_state_string(kick_state st) {
136
138
  switch (st) {
137
139
  case UNKICKED:
138
140
  return "UNKICKED";
@@ -148,8 +150,8 @@ struct grpc_pollset_worker {
148
150
  kick_state state;
149
151
  int kick_state_mutator; // which line of code last changed kick state
150
152
  bool initialized_cv;
151
- grpc_pollset_worker *next;
152
- grpc_pollset_worker *prev;
153
+ grpc_pollset_worker* next;
154
+ grpc_pollset_worker* prev;
153
155
  gpr_cv cv;
154
156
  grpc_closure_list schedule_on_end_work;
155
157
  };
@@ -164,29 +166,29 @@ struct grpc_pollset_worker {
164
166
 
165
167
  typedef struct pollset_neighborhood {
166
168
  gpr_mu mu;
167
- grpc_pollset *active_root;
169
+ grpc_pollset* active_root;
168
170
  char pad[GPR_CACHELINE_SIZE];
169
171
  } pollset_neighborhood;
170
172
 
171
173
  struct grpc_pollset {
172
174
  gpr_mu mu;
173
- pollset_neighborhood *neighborhood;
175
+ pollset_neighborhood* neighborhood;
174
176
  bool reassigning_neighborhood;
175
- grpc_pollset_worker *root_worker;
177
+ grpc_pollset_worker* root_worker;
176
178
  bool kicked_without_poller;
177
179
 
178
180
  /* Set to true if the pollset is observed to have no workers available to
179
181
  poll */
180
182
  bool seen_inactive;
181
183
  bool shutting_down; /* Is the pollset shutting down ? */
182
- grpc_closure *shutdown_closure; /* Called after after shutdown is complete */
184
+ grpc_closure* shutdown_closure; /* Called after after shutdown is complete */
183
185
 
184
186
  /* Number of workers who are *about-to* attach themselves to the pollset
185
187
  * worker list */
186
188
  int begin_refs;
187
189
 
188
- grpc_pollset *next;
189
- grpc_pollset *prev;
190
+ grpc_pollset* next;
191
+ grpc_pollset* prev;
190
192
  };
191
193
 
192
194
  /*******************************************************************************
@@ -201,8 +203,8 @@ struct grpc_pollset_set {
201
203
  * Common helpers
202
204
  */
203
205
 
204
- static bool append_error(grpc_error **composite, grpc_error *error,
205
- const char *desc) {
206
+ static bool append_error(grpc_error** composite, grpc_error* error,
207
+ const char* desc) {
206
208
  if (error == GRPC_ERROR_NONE) return true;
207
209
  if (*composite == GRPC_ERROR_NONE) {
208
210
  *composite = GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc);
@@ -233,7 +235,7 @@ static bool append_error(grpc_error **composite, grpc_error *error,
233
235
  * alarm 'epoch'). This wakeup_fd gives us something to alert on when such a
234
236
  * case occurs. */
235
237
 
236
- static grpc_fd *fd_freelist = NULL;
238
+ static grpc_fd* fd_freelist = nullptr;
237
239
  static gpr_mu fd_freelist_mu;
238
240
 
239
241
  static void fd_global_init(void) { gpr_mu_init(&fd_freelist_mu); }
@@ -241,40 +243,42 @@ static void fd_global_init(void) { gpr_mu_init(&fd_freelist_mu); }
241
243
  static void fd_global_shutdown(void) {
242
244
  gpr_mu_lock(&fd_freelist_mu);
243
245
  gpr_mu_unlock(&fd_freelist_mu);
244
- while (fd_freelist != NULL) {
245
- grpc_fd *fd = fd_freelist;
246
+ while (fd_freelist != nullptr) {
247
+ grpc_fd* fd = fd_freelist;
246
248
  fd_freelist = fd_freelist->freelist_next;
247
249
  gpr_free(fd);
248
250
  }
249
251
  gpr_mu_destroy(&fd_freelist_mu);
250
252
  }
251
253
 
252
- static grpc_fd *fd_create(int fd, const char *name) {
253
- grpc_fd *new_fd = NULL;
254
+ static grpc_fd* fd_create(int fd, const char* name) {
255
+ grpc_fd* new_fd = nullptr;
254
256
 
255
257
  gpr_mu_lock(&fd_freelist_mu);
256
- if (fd_freelist != NULL) {
258
+ if (fd_freelist != nullptr) {
257
259
  new_fd = fd_freelist;
258
260
  fd_freelist = fd_freelist->freelist_next;
259
261
  }
260
262
  gpr_mu_unlock(&fd_freelist_mu);
261
263
 
262
- if (new_fd == NULL) {
263
- new_fd = (grpc_fd *)gpr_malloc(sizeof(grpc_fd));
264
+ if (new_fd == nullptr) {
265
+ new_fd = (grpc_fd*)gpr_malloc(sizeof(grpc_fd));
266
+ new_fd->read_closure.Init();
267
+ new_fd->write_closure.Init();
264
268
  }
265
269
 
266
270
  new_fd->fd = fd;
267
- grpc_lfev_init(&new_fd->read_closure);
268
- grpc_lfev_init(&new_fd->write_closure);
271
+ new_fd->read_closure->InitEvent();
272
+ new_fd->write_closure->InitEvent();
269
273
  gpr_atm_no_barrier_store(&new_fd->read_notifier_pollset, (gpr_atm)NULL);
270
274
 
271
- new_fd->freelist_next = NULL;
275
+ new_fd->freelist_next = nullptr;
272
276
 
273
- char *fd_name;
277
+ char* fd_name;
274
278
  gpr_asprintf(&fd_name, "%s fd=%d", name, fd);
275
279
  grpc_iomgr_register_object(&new_fd->iomgr_object, fd_name);
276
280
  #ifndef NDEBUG
277
- if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
281
+ if (grpc_trace_fd_refcount.enabled()) {
278
282
  gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, new_fd, fd_name);
279
283
  }
280
284
  #endif
@@ -290,35 +294,34 @@ static grpc_fd *fd_create(int fd, const char *name) {
290
294
  return new_fd;
291
295
  }
292
296
 
293
- static int fd_wrapped_fd(grpc_fd *fd) { return fd->fd; }
297
+ static int fd_wrapped_fd(grpc_fd* fd) { return fd->fd; }
294
298
 
295
299
  /* if 'releasing_fd' is true, it means that we are going to detach the internal
296
300
  * fd from grpc_fd structure (i.e which means we should not be calling
297
301
  * shutdown() syscall on that fd) */
298
- static void fd_shutdown_internal(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
299
- grpc_error *why, bool releasing_fd) {
300
- if (grpc_lfev_set_shutdown(exec_ctx, &fd->read_closure,
301
- GRPC_ERROR_REF(why))) {
302
+ static void fd_shutdown_internal(grpc_exec_ctx* exec_ctx, grpc_fd* fd,
303
+ grpc_error* why, bool releasing_fd) {
304
+ if (fd->read_closure->SetShutdown(exec_ctx, GRPC_ERROR_REF(why))) {
302
305
  if (!releasing_fd) {
303
306
  shutdown(fd->fd, SHUT_RDWR);
304
307
  }
305
- grpc_lfev_set_shutdown(exec_ctx, &fd->write_closure, GRPC_ERROR_REF(why));
308
+ fd->write_closure->SetShutdown(exec_ctx, GRPC_ERROR_REF(why));
306
309
  }
307
310
  GRPC_ERROR_UNREF(why);
308
311
  }
309
312
 
310
313
  /* Might be called multiple times */
311
- static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) {
314
+ static void fd_shutdown(grpc_exec_ctx* exec_ctx, grpc_fd* fd, grpc_error* why) {
312
315
  fd_shutdown_internal(exec_ctx, fd, why, false);
313
316
  }
314
317
 
315
- static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
316
- grpc_closure *on_done, int *release_fd,
317
- bool already_closed, const char *reason) {
318
- grpc_error *error = GRPC_ERROR_NONE;
319
- bool is_release_fd = (release_fd != NULL);
318
+ static void fd_orphan(grpc_exec_ctx* exec_ctx, grpc_fd* fd,
319
+ grpc_closure* on_done, int* release_fd,
320
+ bool already_closed, const char* reason) {
321
+ grpc_error* error = GRPC_ERROR_NONE;
322
+ bool is_release_fd = (release_fd != nullptr);
320
323
 
321
- if (!grpc_lfev_is_shutdown(&fd->read_closure)) {
324
+ if (!fd->read_closure->IsShutdown()) {
322
325
  fd_shutdown_internal(exec_ctx, fd,
323
326
  GRPC_ERROR_CREATE_FROM_COPIED_STRING(reason),
324
327
  is_release_fd);
@@ -335,8 +338,8 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
335
338
  GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_REF(error));
336
339
 
337
340
  grpc_iomgr_unregister_object(&fd->iomgr_object);
338
- grpc_lfev_destroy(&fd->read_closure);
339
- grpc_lfev_destroy(&fd->write_closure);
341
+ fd->read_closure->DestroyEvent();
342
+ fd->write_closure->DestroyEvent();
340
343
 
341
344
  gpr_mu_lock(&fd_freelist_mu);
342
345
  fd->freelist_next = fd_freelist;
@@ -344,35 +347,35 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
344
347
  gpr_mu_unlock(&fd_freelist_mu);
345
348
  }
346
349
 
347
- static grpc_pollset *fd_get_read_notifier_pollset(grpc_exec_ctx *exec_ctx,
348
- grpc_fd *fd) {
350
+ static grpc_pollset* fd_get_read_notifier_pollset(grpc_exec_ctx* exec_ctx,
351
+ grpc_fd* fd) {
349
352
  gpr_atm notifier = gpr_atm_acq_load(&fd->read_notifier_pollset);
350
- return (grpc_pollset *)notifier;
353
+ return (grpc_pollset*)notifier;
351
354
  }
352
355
 
353
- static bool fd_is_shutdown(grpc_fd *fd) {
354
- return grpc_lfev_is_shutdown(&fd->read_closure);
356
+ static bool fd_is_shutdown(grpc_fd* fd) {
357
+ return fd->read_closure->IsShutdown();
355
358
  }
356
359
 
357
- static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
358
- grpc_closure *closure) {
359
- grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure, "read");
360
+ static void fd_notify_on_read(grpc_exec_ctx* exec_ctx, grpc_fd* fd,
361
+ grpc_closure* closure) {
362
+ fd->read_closure->NotifyOn(exec_ctx, closure);
360
363
  }
361
364
 
362
- static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
363
- grpc_closure *closure) {
364
- grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure, "write");
365
+ static void fd_notify_on_write(grpc_exec_ctx* exec_ctx, grpc_fd* fd,
366
+ grpc_closure* closure) {
367
+ fd->write_closure->NotifyOn(exec_ctx, closure);
365
368
  }
366
369
 
367
- static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
368
- grpc_pollset *notifier) {
369
- grpc_lfev_set_ready(exec_ctx, &fd->read_closure, "read");
370
+ static void fd_become_readable(grpc_exec_ctx* exec_ctx, grpc_fd* fd,
371
+ grpc_pollset* notifier) {
372
+ fd->read_closure->SetReady(exec_ctx);
370
373
  /* Use release store to match with acquire load in fd_get_read_notifier */
371
374
  gpr_atm_rel_store(&fd->read_notifier_pollset, (gpr_atm)notifier);
372
375
  }
373
376
 
374
- static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
375
- grpc_lfev_set_ready(exec_ctx, &fd->write_closure, "write");
377
+ static void fd_become_writable(grpc_exec_ctx* exec_ctx, grpc_fd* fd) {
378
+ fd->write_closure->SetReady(exec_ctx);
376
379
  }
377
380
 
378
381
  /*******************************************************************************
@@ -385,12 +388,12 @@ GPR_TLS_DECL(g_current_thread_worker);
385
388
  /* The designated poller */
386
389
  static gpr_atm g_active_poller;
387
390
 
388
- static pollset_neighborhood *g_neighborhoods;
391
+ static pollset_neighborhood* g_neighborhoods;
389
392
  static size_t g_num_neighborhoods;
390
393
 
391
394
  /* Return true if first in list */
392
- static bool worker_insert(grpc_pollset *pollset, grpc_pollset_worker *worker) {
393
- if (pollset->root_worker == NULL) {
395
+ static bool worker_insert(grpc_pollset* pollset, grpc_pollset_worker* worker) {
396
+ if (pollset->root_worker == nullptr) {
394
397
  pollset->root_worker = worker;
395
398
  worker->next = worker->prev = worker;
396
399
  return true;
@@ -406,11 +409,11 @@ static bool worker_insert(grpc_pollset *pollset, grpc_pollset_worker *worker) {
406
409
  /* Return true if last in list */
407
410
  typedef enum { EMPTIED, NEW_ROOT, REMOVED } worker_remove_result;
408
411
 
409
- static worker_remove_result worker_remove(grpc_pollset *pollset,
410
- grpc_pollset_worker *worker) {
412
+ static worker_remove_result worker_remove(grpc_pollset* pollset,
413
+ grpc_pollset_worker* worker) {
411
414
  if (worker == pollset->root_worker) {
412
415
  if (worker == worker->next) {
413
- pollset->root_worker = NULL;
416
+ pollset->root_worker = nullptr;
414
417
  return EMPTIED;
415
418
  } else {
416
419
  pollset->root_worker = worker->next;
@@ -429,12 +432,12 @@ static size_t choose_neighborhood(void) {
429
432
  return (size_t)gpr_cpu_current_cpu() % g_num_neighborhoods;
430
433
  }
431
434
 
432
- static grpc_error *pollset_global_init(void) {
435
+ static grpc_error* pollset_global_init(void) {
433
436
  gpr_tls_init(&g_current_thread_pollset);
434
437
  gpr_tls_init(&g_current_thread_worker);
435
438
  gpr_atm_no_barrier_store(&g_active_poller, 0);
436
439
  global_wakeup_fd.read_fd = -1;
437
- grpc_error *err = grpc_wakeup_fd_init(&global_wakeup_fd);
440
+ grpc_error* err = grpc_wakeup_fd_init(&global_wakeup_fd);
438
441
  if (err != GRPC_ERROR_NONE) return err;
439
442
  struct epoll_event ev;
440
443
  ev.events = (uint32_t)(EPOLLIN | EPOLLET);
@@ -444,8 +447,8 @@ static grpc_error *pollset_global_init(void) {
444
447
  return GRPC_OS_ERROR(errno, "epoll_ctl");
445
448
  }
446
449
  g_num_neighborhoods = GPR_CLAMP(gpr_cpu_num_cores(), 1, MAX_NEIGHBORHOODS);
447
- g_neighborhoods = (pollset_neighborhood *)gpr_zalloc(
448
- sizeof(*g_neighborhoods) * g_num_neighborhoods);
450
+ g_neighborhoods = (pollset_neighborhood*)gpr_zalloc(sizeof(*g_neighborhoods) *
451
+ g_num_neighborhoods);
449
452
  for (size_t i = 0; i < g_num_neighborhoods; i++) {
450
453
  gpr_mu_init(&g_neighborhoods[i].mu);
451
454
  }
@@ -462,24 +465,24 @@ static void pollset_global_shutdown(void) {
462
465
  gpr_free(g_neighborhoods);
463
466
  }
464
467
 
465
- static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) {
468
+ static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
466
469
  gpr_mu_init(&pollset->mu);
467
470
  *mu = &pollset->mu;
468
471
  pollset->neighborhood = &g_neighborhoods[choose_neighborhood()];
469
472
  pollset->reassigning_neighborhood = false;
470
- pollset->root_worker = NULL;
473
+ pollset->root_worker = nullptr;
471
474
  pollset->kicked_without_poller = false;
472
475
  pollset->seen_inactive = true;
473
476
  pollset->shutting_down = false;
474
- pollset->shutdown_closure = NULL;
477
+ pollset->shutdown_closure = nullptr;
475
478
  pollset->begin_refs = 0;
476
- pollset->next = pollset->prev = NULL;
479
+ pollset->next = pollset->prev = nullptr;
477
480
  }
478
481
 
479
- static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
482
+ static void pollset_destroy(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset) {
480
483
  gpr_mu_lock(&pollset->mu);
481
484
  if (!pollset->seen_inactive) {
482
- pollset_neighborhood *neighborhood = pollset->neighborhood;
485
+ pollset_neighborhood* neighborhood = pollset->neighborhood;
483
486
  gpr_mu_unlock(&pollset->mu);
484
487
  retry_lock_neighborhood:
485
488
  gpr_mu_lock(&neighborhood->mu);
@@ -495,7 +498,7 @@ static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
495
498
  pollset->next->prev = pollset->prev;
496
499
  if (pollset == pollset->neighborhood->active_root) {
497
500
  pollset->neighborhood->active_root =
498
- pollset->next == pollset ? NULL : pollset->next;
501
+ pollset->next == pollset ? nullptr : pollset->next;
499
502
  }
500
503
  }
501
504
  gpr_mu_unlock(&pollset->neighborhood->mu);
@@ -504,12 +507,12 @@ static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
504
507
  gpr_mu_destroy(&pollset->mu);
505
508
  }
506
509
 
507
- static grpc_error *pollset_kick_all(grpc_exec_ctx *exec_ctx,
508
- grpc_pollset *pollset) {
510
+ static grpc_error* pollset_kick_all(grpc_exec_ctx* exec_ctx,
511
+ grpc_pollset* pollset) {
509
512
  GPR_TIMER_BEGIN("pollset_kick_all", 0);
510
- grpc_error *error = GRPC_ERROR_NONE;
511
- if (pollset->root_worker != NULL) {
512
- grpc_pollset_worker *worker = pollset->root_worker;
513
+ grpc_error* error = GRPC_ERROR_NONE;
514
+ if (pollset->root_worker != nullptr) {
515
+ grpc_pollset_worker* worker = pollset->root_worker;
513
516
  do {
514
517
  GRPC_STATS_INC_POLLSET_KICK(exec_ctx);
515
518
  switch (worker->state) {
@@ -540,20 +543,20 @@ static grpc_error *pollset_kick_all(grpc_exec_ctx *exec_ctx,
540
543
  return error;
541
544
  }
542
545
 
543
- static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx,
544
- grpc_pollset *pollset) {
545
- if (pollset->shutdown_closure != NULL && pollset->root_worker == NULL &&
546
+ static void pollset_maybe_finish_shutdown(grpc_exec_ctx* exec_ctx,
547
+ grpc_pollset* pollset) {
548
+ if (pollset->shutdown_closure != nullptr && pollset->root_worker == nullptr &&
546
549
  pollset->begin_refs == 0) {
547
550
  GPR_TIMER_MARK("pollset_finish_shutdown", 0);
548
551
  GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_closure, GRPC_ERROR_NONE);
549
- pollset->shutdown_closure = NULL;
552
+ pollset->shutdown_closure = nullptr;
550
553
  }
551
554
  }
552
555
 
553
- static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
554
- grpc_closure *closure) {
556
+ static void pollset_shutdown(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
557
+ grpc_closure* closure) {
555
558
  GPR_TIMER_BEGIN("pollset_shutdown", 0);
556
- GPR_ASSERT(pollset->shutdown_closure == NULL);
559
+ GPR_ASSERT(pollset->shutdown_closure == nullptr);
557
560
  GPR_ASSERT(!pollset->shutting_down);
558
561
  pollset->shutdown_closure = closure;
559
562
  pollset->shutting_down = true;
@@ -562,25 +565,17 @@ static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
562
565
  GPR_TIMER_END("pollset_shutdown", 0);
563
566
  }
564
567
 
565
- static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
566
- gpr_timespec now) {
567
- gpr_timespec timeout;
568
- if (gpr_time_cmp(deadline, gpr_inf_future(deadline.clock_type)) == 0) {
569
- return -1;
570
- }
571
-
572
- if (gpr_time_cmp(deadline, now) <= 0) {
568
+ static int poll_deadline_to_millis_timeout(grpc_exec_ctx* exec_ctx,
569
+ grpc_millis millis) {
570
+ if (millis == GRPC_MILLIS_INF_FUTURE) return -1;
571
+ grpc_millis delta = millis - grpc_exec_ctx_now(exec_ctx);
572
+ if (delta > INT_MAX) {
573
+ return INT_MAX;
574
+ } else if (delta < 0) {
573
575
  return 0;
576
+ } else {
577
+ return (int)delta;
574
578
  }
575
-
576
- static const gpr_timespec round_up = {
577
- 0, /* tv_sec */
578
- GPR_NS_PER_MS - 1, /* tv_nsec */
579
- GPR_TIMESPAN /* clock_type */
580
- };
581
- timeout = gpr_time_sub(deadline, now);
582
- int millis = gpr_time_to_millis(gpr_time_add(timeout, round_up));
583
- return millis >= 1 ? millis : 1;
584
579
  }
585
580
 
586
581
  /* Process the epoll events found by do_epoll_wait() function.
@@ -591,10 +586,10 @@ static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
591
586
  NOTE ON SYNCRHONIZATION: Similar to do_epoll_wait(), this function is only
592
587
  called by g_active_poller thread. So there is no need for synchronization
593
588
  when accessing fields in g_epoll_set */
594
- static grpc_error *process_epoll_events(grpc_exec_ctx *exec_ctx,
595
- grpc_pollset *pollset) {
596
- static const char *err_desc = "process_events";
597
- grpc_error *error = GRPC_ERROR_NONE;
589
+ static grpc_error* process_epoll_events(grpc_exec_ctx* exec_ctx,
590
+ grpc_pollset* pollset) {
591
+ static const char* err_desc = "process_events";
592
+ grpc_error* error = GRPC_ERROR_NONE;
598
593
 
599
594
  GPR_TIMER_BEGIN("process_epoll_events", 0);
600
595
  long num_events = gpr_atm_acq_load(&g_epoll_set.num_events);
@@ -603,14 +598,14 @@ static grpc_error *process_epoll_events(grpc_exec_ctx *exec_ctx,
603
598
  (idx < MAX_EPOLL_EVENTS_HANDLED_PER_ITERATION) && cursor != num_events;
604
599
  idx++) {
605
600
  long c = cursor++;
606
- struct epoll_event *ev = &g_epoll_set.events[c];
607
- void *data_ptr = ev->data.ptr;
601
+ struct epoll_event* ev = &g_epoll_set.events[c];
602
+ void* data_ptr = ev->data.ptr;
608
603
 
609
604
  if (data_ptr == &global_wakeup_fd) {
610
605
  append_error(&error, grpc_wakeup_fd_consume_wakeup(&global_wakeup_fd),
611
606
  err_desc);
612
607
  } else {
613
- grpc_fd *fd = (grpc_fd *)(data_ptr);
608
+ grpc_fd* fd = (grpc_fd*)(data_ptr);
614
609
  bool cancel = (ev->events & (EPOLLERR | EPOLLHUP)) != 0;
615
610
  bool read_ev = (ev->events & (EPOLLIN | EPOLLPRI)) != 0;
616
611
  bool write_ev = (ev->events & EPOLLOUT) != 0;
@@ -636,12 +631,12 @@ static grpc_error *process_epoll_events(grpc_exec_ctx *exec_ctx,
636
631
  NOTE ON SYNCHRONIZATION: At any point of time, only the g_active_poller
637
632
  (i.e the designated poller thread) will be calling this function. So there is
638
633
  no need for any synchronization when accesing fields in g_epoll_set */
639
- static grpc_error *do_epoll_wait(grpc_exec_ctx *exec_ctx, grpc_pollset *ps,
640
- gpr_timespec now, gpr_timespec deadline) {
634
+ static grpc_error* do_epoll_wait(grpc_exec_ctx* exec_ctx, grpc_pollset* ps,
635
+ grpc_millis deadline) {
641
636
  GPR_TIMER_BEGIN("do_epoll_wait", 0);
642
637
 
643
638
  int r;
644
- int timeout = poll_deadline_to_millis_timeout(deadline, now);
639
+ int timeout = poll_deadline_to_millis_timeout(exec_ctx, deadline);
645
640
  if (timeout != 0) {
646
641
  GRPC_SCHEDULING_START_BLOCKING_REGION;
647
642
  }
@@ -651,14 +646,14 @@ static grpc_error *do_epoll_wait(grpc_exec_ctx *exec_ctx, grpc_pollset *ps,
651
646
  timeout);
652
647
  } while (r < 0 && errno == EINTR);
653
648
  if (timeout != 0) {
654
- GRPC_SCHEDULING_END_BLOCKING_REGION;
649
+ GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(exec_ctx);
655
650
  }
656
651
 
657
652
  if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait");
658
653
 
659
654
  GRPC_STATS_INC_POLL_EVENTS_RETURNED(exec_ctx, r);
660
655
 
661
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
656
+ if (grpc_polling_trace.enabled()) {
662
657
  gpr_log(GPR_DEBUG, "ps: %p poll got %d events", ps, r);
663
658
  }
664
659
 
@@ -669,17 +664,18 @@ static grpc_error *do_epoll_wait(grpc_exec_ctx *exec_ctx, grpc_pollset *ps,
669
664
  return GRPC_ERROR_NONE;
670
665
  }
671
666
 
672
- static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
673
- grpc_pollset_worker **worker_hdl, gpr_timespec *now,
674
- gpr_timespec deadline) {
667
+ static bool begin_worker(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
668
+ grpc_pollset_worker* worker,
669
+ grpc_pollset_worker** worker_hdl,
670
+ grpc_millis deadline) {
675
671
  GPR_TIMER_BEGIN("begin_worker", 0);
676
- if (worker_hdl != NULL) *worker_hdl = worker;
672
+ if (worker_hdl != nullptr) *worker_hdl = worker;
677
673
  worker->initialized_cv = false;
678
674
  SET_KICK_STATE(worker, UNKICKED);
679
675
  worker->schedule_on_end_work = (grpc_closure_list)GRPC_CLOSURE_LIST_INIT;
680
676
  pollset->begin_refs++;
681
677
 
682
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
678
+ if (grpc_polling_trace.enabled()) {
683
679
  gpr_log(GPR_ERROR, "PS:%p BEGIN_STARTS:%p", pollset, worker);
684
680
  }
685
681
 
@@ -692,13 +688,13 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
692
688
  pollset->reassigning_neighborhood = true;
693
689
  pollset->neighborhood = &g_neighborhoods[choose_neighborhood()];
694
690
  }
695
- pollset_neighborhood *neighborhood = pollset->neighborhood;
691
+ pollset_neighborhood* neighborhood = pollset->neighborhood;
696
692
  gpr_mu_unlock(&pollset->mu);
697
693
  // pollset unlocked: state may change (even worker->kick_state)
698
694
  retry_lock_neighborhood:
699
695
  gpr_mu_lock(&neighborhood->mu);
700
696
  gpr_mu_lock(&pollset->mu);
701
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
697
+ if (grpc_polling_trace.enabled()) {
702
698
  gpr_log(GPR_ERROR, "PS:%p BEGIN_REORG:%p kick_state=%s is_reassigning=%d",
703
699
  pollset, worker, kick_state_string(worker->state),
704
700
  is_reassigning);
@@ -722,7 +718,7 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
722
718
  not visible in the "kick any" path yet */
723
719
  if (worker->state == UNKICKED) {
724
720
  pollset->seen_inactive = false;
725
- if (neighborhood->active_root == NULL) {
721
+ if (neighborhood->active_root == nullptr) {
726
722
  neighborhood->active_root = pollset->next = pollset->prev = pollset;
727
723
  /* Make this the designated poller if there isn't one already */
728
724
  if (worker->state == UNKICKED &&
@@ -750,23 +746,24 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
750
746
  worker->initialized_cv = true;
751
747
  gpr_cv_init(&worker->cv);
752
748
  while (worker->state == UNKICKED && !pollset->shutting_down) {
753
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
749
+ if (grpc_polling_trace.enabled()) {
754
750
  gpr_log(GPR_ERROR, "PS:%p BEGIN_WAIT:%p kick_state=%s shutdown=%d",
755
751
  pollset, worker, kick_state_string(worker->state),
756
752
  pollset->shutting_down);
757
753
  }
758
754
 
759
- if (gpr_cv_wait(&worker->cv, &pollset->mu, deadline) &&
755
+ if (gpr_cv_wait(&worker->cv, &pollset->mu,
756
+ grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME)) &&
760
757
  worker->state == UNKICKED) {
761
758
  /* If gpr_cv_wait returns true (i.e a timeout), pretend that the worker
762
759
  received a kick */
763
760
  SET_KICK_STATE(worker, KICKED);
764
761
  }
765
762
  }
766
- *now = gpr_now(now->clock_type);
763
+ grpc_exec_ctx_invalidate_now(exec_ctx);
767
764
  }
768
765
 
769
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
766
+ if (grpc_polling_trace.enabled()) {
770
767
  gpr_log(GPR_ERROR,
771
768
  "PS:%p BEGIN_DONE:%p kick_state=%s shutdown=%d "
772
769
  "kicked_without_poller: %d",
@@ -794,24 +791,24 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
794
791
  }
795
792
 
796
793
  static bool check_neighborhood_for_available_poller(
797
- grpc_exec_ctx *exec_ctx, pollset_neighborhood *neighborhood) {
794
+ grpc_exec_ctx* exec_ctx, pollset_neighborhood* neighborhood) {
798
795
  GPR_TIMER_BEGIN("check_neighborhood_for_available_poller", 0);
799
796
  bool found_worker = false;
800
797
  do {
801
- grpc_pollset *inspect = neighborhood->active_root;
802
- if (inspect == NULL) {
798
+ grpc_pollset* inspect = neighborhood->active_root;
799
+ if (inspect == nullptr) {
803
800
  break;
804
801
  }
805
802
  gpr_mu_lock(&inspect->mu);
806
803
  GPR_ASSERT(!inspect->seen_inactive);
807
- grpc_pollset_worker *inspect_worker = inspect->root_worker;
808
- if (inspect_worker != NULL) {
804
+ grpc_pollset_worker* inspect_worker = inspect->root_worker;
805
+ if (inspect_worker != nullptr) {
809
806
  do {
810
807
  switch (inspect_worker->state) {
811
808
  case UNKICKED:
812
809
  if (gpr_atm_no_barrier_cas(&g_active_poller, 0,
813
810
  (gpr_atm)inspect_worker)) {
814
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
811
+ if (grpc_polling_trace.enabled()) {
815
812
  gpr_log(GPR_DEBUG, " .. choose next poller to be %p",
816
813
  inspect_worker);
817
814
  }
@@ -822,7 +819,7 @@ static bool check_neighborhood_for_available_poller(
822
819
  gpr_cv_signal(&inspect_worker->cv);
823
820
  }
824
821
  } else {
825
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
822
+ if (grpc_polling_trace.enabled()) {
826
823
  gpr_log(GPR_DEBUG, " .. beaten to choose next poller");
827
824
  }
828
825
  }
@@ -840,17 +837,17 @@ static bool check_neighborhood_for_available_poller(
840
837
  } while (!found_worker && inspect_worker != inspect->root_worker);
841
838
  }
842
839
  if (!found_worker) {
843
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
840
+ if (grpc_polling_trace.enabled()) {
844
841
  gpr_log(GPR_DEBUG, " .. mark pollset %p inactive", inspect);
845
842
  }
846
843
  inspect->seen_inactive = true;
847
844
  if (inspect == neighborhood->active_root) {
848
845
  neighborhood->active_root =
849
- inspect->next == inspect ? NULL : inspect->next;
846
+ inspect->next == inspect ? nullptr : inspect->next;
850
847
  }
851
848
  inspect->next->prev = inspect->prev;
852
849
  inspect->prev->next = inspect->next;
853
- inspect->next = inspect->prev = NULL;
850
+ inspect->next = inspect->prev = nullptr;
854
851
  }
855
852
  gpr_mu_unlock(&inspect->mu);
856
853
  } while (!found_worker);
@@ -858,21 +855,21 @@ static bool check_neighborhood_for_available_poller(
858
855
  return found_worker;
859
856
  }
860
857
 
861
- static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
862
- grpc_pollset_worker *worker,
863
- grpc_pollset_worker **worker_hdl) {
858
+ static void end_worker(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
859
+ grpc_pollset_worker* worker,
860
+ grpc_pollset_worker** worker_hdl) {
864
861
  GPR_TIMER_BEGIN("end_worker", 0);
865
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
862
+ if (grpc_polling_trace.enabled()) {
866
863
  gpr_log(GPR_DEBUG, "PS:%p END_WORKER:%p", pollset, worker);
867
864
  }
868
- if (worker_hdl != NULL) *worker_hdl = NULL;
865
+ if (worker_hdl != nullptr) *worker_hdl = nullptr;
869
866
  /* Make sure we appear kicked */
870
867
  SET_KICK_STATE(worker, KICKED);
871
868
  grpc_closure_list_move(&worker->schedule_on_end_work,
872
869
  &exec_ctx->closure_list);
873
870
  if (gpr_atm_no_barrier_load(&g_active_poller) == (gpr_atm)worker) {
874
871
  if (worker->next != worker && worker->next->state == UNKICKED) {
875
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
872
+ if (grpc_polling_trace.enabled()) {
876
873
  gpr_log(GPR_DEBUG, " .. choose next poller to be peer %p", worker);
877
874
  }
878
875
  GPR_ASSERT(worker->next->initialized_cv);
@@ -893,7 +890,7 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
893
890
  bool found_worker = false;
894
891
  bool scan_state[MAX_NEIGHBORHOODS];
895
892
  for (size_t i = 0; !found_worker && i < g_num_neighborhoods; i++) {
896
- pollset_neighborhood *neighborhood =
893
+ pollset_neighborhood* neighborhood =
897
894
  &g_neighborhoods[(poller_neighborhood_idx + i) %
898
895
  g_num_neighborhoods];
899
896
  if (gpr_mu_trylock(&neighborhood->mu)) {
@@ -907,7 +904,7 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
907
904
  }
908
905
  for (size_t i = 0; !found_worker && i < g_num_neighborhoods; i++) {
909
906
  if (scan_state[i]) continue;
910
- pollset_neighborhood *neighborhood =
907
+ pollset_neighborhood* neighborhood =
911
908
  &g_neighborhoods[(poller_neighborhood_idx + i) %
912
909
  g_num_neighborhoods];
913
910
  gpr_mu_lock(&neighborhood->mu);
@@ -926,7 +923,7 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
926
923
  if (worker->initialized_cv) {
927
924
  gpr_cv_destroy(&worker->cv);
928
925
  }
929
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
926
+ if (grpc_polling_trace.enabled()) {
930
927
  gpr_log(GPR_DEBUG, " .. remove worker");
931
928
  }
932
929
  if (EMPTIED == worker_remove(pollset, worker)) {
@@ -940,12 +937,12 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
940
937
  The function pollset_work() may temporarily release the lock (pollset->po.mu)
941
938
  during the course of its execution but it will always re-acquire the lock and
942
939
  ensure that it is held by the time the function returns */
943
- static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *ps,
944
- grpc_pollset_worker **worker_hdl,
945
- gpr_timespec now, gpr_timespec deadline) {
940
+ static grpc_error* pollset_work(grpc_exec_ctx* exec_ctx, grpc_pollset* ps,
941
+ grpc_pollset_worker** worker_hdl,
942
+ grpc_millis deadline) {
946
943
  grpc_pollset_worker worker;
947
- grpc_error *error = GRPC_ERROR_NONE;
948
- static const char *err_desc = "pollset_work";
944
+ grpc_error* error = GRPC_ERROR_NONE;
945
+ static const char* err_desc = "pollset_work";
949
946
  GPR_TIMER_BEGIN("pollset_work", 0);
950
947
  if (ps->kicked_without_poller) {
951
948
  ps->kicked_without_poller = false;
@@ -953,7 +950,7 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *ps,
953
950
  return GRPC_ERROR_NONE;
954
951
  }
955
952
 
956
- if (begin_worker(ps, &worker, worker_hdl, &now, deadline)) {
953
+ if (begin_worker(exec_ctx, ps, &worker, worker_hdl, deadline)) {
957
954
  gpr_tls_set(&g_current_thread_pollset, (intptr_t)ps);
958
955
  gpr_tls_set(&g_current_thread_worker, (intptr_t)&worker);
959
956
  GPR_ASSERT(!ps->shutting_down);
@@ -976,8 +973,7 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *ps,
976
973
  designated poller */
977
974
  if (gpr_atm_acq_load(&g_epoll_set.cursor) ==
978
975
  gpr_atm_acq_load(&g_epoll_set.num_events)) {
979
- append_error(&error, do_epoll_wait(exec_ctx, ps, now, deadline),
980
- err_desc);
976
+ append_error(&error, do_epoll_wait(exec_ctx, ps, deadline), err_desc);
981
977
  }
982
978
  append_error(&error, process_epoll_events(exec_ctx, ps), err_desc);
983
979
 
@@ -994,60 +990,60 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *ps,
994
990
  return error;
995
991
  }
996
992
 
997
- static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
998
- grpc_pollset_worker *specific_worker) {
993
+ static grpc_error* pollset_kick(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
994
+ grpc_pollset_worker* specific_worker) {
999
995
  GPR_TIMER_BEGIN("pollset_kick", 0);
1000
996
  GRPC_STATS_INC_POLLSET_KICK(exec_ctx);
1001
- grpc_error *ret_err = GRPC_ERROR_NONE;
1002
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
997
+ grpc_error* ret_err = GRPC_ERROR_NONE;
998
+ if (grpc_polling_trace.enabled()) {
1003
999
  gpr_strvec log;
1004
1000
  gpr_strvec_init(&log);
1005
- char *tmp;
1006
- gpr_asprintf(
1007
- &tmp, "PS:%p KICK:%p curps=%p curworker=%p root=%p", pollset,
1008
- specific_worker, (void *)gpr_tls_get(&g_current_thread_pollset),
1009
- (void *)gpr_tls_get(&g_current_thread_worker), pollset->root_worker);
1001
+ char* tmp;
1002
+ gpr_asprintf(&tmp, "PS:%p KICK:%p curps=%p curworker=%p root=%p", pollset,
1003
+ specific_worker, (void*)gpr_tls_get(&g_current_thread_pollset),
1004
+ (void*)gpr_tls_get(&g_current_thread_worker),
1005
+ pollset->root_worker);
1010
1006
  gpr_strvec_add(&log, tmp);
1011
- if (pollset->root_worker != NULL) {
1007
+ if (pollset->root_worker != nullptr) {
1012
1008
  gpr_asprintf(&tmp, " {kick_state=%s next=%p {kick_state=%s}}",
1013
1009
  kick_state_string(pollset->root_worker->state),
1014
1010
  pollset->root_worker->next,
1015
1011
  kick_state_string(pollset->root_worker->next->state));
1016
1012
  gpr_strvec_add(&log, tmp);
1017
1013
  }
1018
- if (specific_worker != NULL) {
1014
+ if (specific_worker != nullptr) {
1019
1015
  gpr_asprintf(&tmp, " worker_kick_state=%s",
1020
1016
  kick_state_string(specific_worker->state));
1021
1017
  gpr_strvec_add(&log, tmp);
1022
1018
  }
1023
- tmp = gpr_strvec_flatten(&log, NULL);
1019
+ tmp = gpr_strvec_flatten(&log, nullptr);
1024
1020
  gpr_strvec_destroy(&log);
1025
1021
  gpr_log(GPR_ERROR, "%s", tmp);
1026
1022
  gpr_free(tmp);
1027
1023
  }
1028
1024
 
1029
- if (specific_worker == NULL) {
1025
+ if (specific_worker == nullptr) {
1030
1026
  if (gpr_tls_get(&g_current_thread_pollset) != (intptr_t)pollset) {
1031
- grpc_pollset_worker *root_worker = pollset->root_worker;
1032
- if (root_worker == NULL) {
1027
+ grpc_pollset_worker* root_worker = pollset->root_worker;
1028
+ if (root_worker == nullptr) {
1033
1029
  GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER(exec_ctx);
1034
1030
  pollset->kicked_without_poller = true;
1035
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1031
+ if (grpc_polling_trace.enabled()) {
1036
1032
  gpr_log(GPR_ERROR, " .. kicked_without_poller");
1037
1033
  }
1038
1034
  goto done;
1039
1035
  }
1040
- grpc_pollset_worker *next_worker = root_worker->next;
1036
+ grpc_pollset_worker* next_worker = root_worker->next;
1041
1037
  if (root_worker->state == KICKED) {
1042
1038
  GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx);
1043
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1039
+ if (grpc_polling_trace.enabled()) {
1044
1040
  gpr_log(GPR_ERROR, " .. already kicked %p", root_worker);
1045
1041
  }
1046
1042
  SET_KICK_STATE(root_worker, KICKED);
1047
1043
  goto done;
1048
1044
  } else if (next_worker->state == KICKED) {
1049
1045
  GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx);
1050
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1046
+ if (grpc_polling_trace.enabled()) {
1051
1047
  gpr_log(GPR_ERROR, " .. already kicked %p", next_worker);
1052
1048
  }
1053
1049
  SET_KICK_STATE(next_worker, KICKED);
@@ -1055,10 +1051,10 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1055
1051
  } else if (root_worker ==
1056
1052
  next_worker && // only try and wake up a poller if
1057
1053
  // there is no next worker
1058
- root_worker == (grpc_pollset_worker *)gpr_atm_no_barrier_load(
1054
+ root_worker == (grpc_pollset_worker*)gpr_atm_no_barrier_load(
1059
1055
  &g_active_poller)) {
1060
1056
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(exec_ctx);
1061
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1057
+ if (grpc_polling_trace.enabled()) {
1062
1058
  gpr_log(GPR_ERROR, " .. kicked %p", root_worker);
1063
1059
  }
1064
1060
  SET_KICK_STATE(root_worker, KICKED);
@@ -1066,7 +1062,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1066
1062
  goto done;
1067
1063
  } else if (next_worker->state == UNKICKED) {
1068
1064
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx);
1069
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1065
+ if (grpc_polling_trace.enabled()) {
1070
1066
  gpr_log(GPR_ERROR, " .. kicked %p", next_worker);
1071
1067
  }
1072
1068
  GPR_ASSERT(next_worker->initialized_cv);
@@ -1075,7 +1071,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1075
1071
  goto done;
1076
1072
  } else if (next_worker->state == DESIGNATED_POLLER) {
1077
1073
  if (root_worker->state != DESIGNATED_POLLER) {
1078
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1074
+ if (grpc_polling_trace.enabled()) {
1079
1075
  gpr_log(
1080
1076
  GPR_ERROR,
1081
1077
  " .. kicked root non-poller %p (initialized_cv=%d) (poller=%p)",
@@ -1089,7 +1085,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1089
1085
  goto done;
1090
1086
  } else {
1091
1087
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(exec_ctx);
1092
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1088
+ if (grpc_polling_trace.enabled()) {
1093
1089
  gpr_log(GPR_ERROR, " .. non-root poller %p (root=%p)", next_worker,
1094
1090
  root_worker);
1095
1091
  }
@@ -1105,7 +1101,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1105
1101
  }
1106
1102
  } else {
1107
1103
  GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD(exec_ctx);
1108
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1104
+ if (grpc_polling_trace.enabled()) {
1109
1105
  gpr_log(GPR_ERROR, " .. kicked while waking up");
1110
1106
  }
1111
1107
  goto done;
@@ -1115,22 +1111,22 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1115
1111
  }
1116
1112
 
1117
1113
  if (specific_worker->state == KICKED) {
1118
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1114
+ if (grpc_polling_trace.enabled()) {
1119
1115
  gpr_log(GPR_ERROR, " .. specific worker already kicked");
1120
1116
  }
1121
1117
  goto done;
1122
1118
  } else if (gpr_tls_get(&g_current_thread_worker) ==
1123
1119
  (intptr_t)specific_worker) {
1124
1120
  GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD(exec_ctx);
1125
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1121
+ if (grpc_polling_trace.enabled()) {
1126
1122
  gpr_log(GPR_ERROR, " .. mark %p kicked", specific_worker);
1127
1123
  }
1128
1124
  SET_KICK_STATE(specific_worker, KICKED);
1129
1125
  goto done;
1130
1126
  } else if (specific_worker ==
1131
- (grpc_pollset_worker *)gpr_atm_no_barrier_load(&g_active_poller)) {
1127
+ (grpc_pollset_worker*)gpr_atm_no_barrier_load(&g_active_poller)) {
1132
1128
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD(exec_ctx);
1133
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1129
+ if (grpc_polling_trace.enabled()) {
1134
1130
  gpr_log(GPR_ERROR, " .. kick active poller");
1135
1131
  }
1136
1132
  SET_KICK_STATE(specific_worker, KICKED);
@@ -1138,7 +1134,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1138
1134
  goto done;
1139
1135
  } else if (specific_worker->initialized_cv) {
1140
1136
  GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV(exec_ctx);
1141
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1137
+ if (grpc_polling_trace.enabled()) {
1142
1138
  gpr_log(GPR_ERROR, " .. kick waiting worker");
1143
1139
  }
1144
1140
  SET_KICK_STATE(specific_worker, KICKED);
@@ -1146,7 +1142,7 @@ static grpc_error *pollset_kick(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1146
1142
  goto done;
1147
1143
  } else {
1148
1144
  GRPC_STATS_INC_POLLSET_KICKED_AGAIN(exec_ctx);
1149
- if (GRPC_TRACER_ON(grpc_polling_trace)) {
1145
+ if (grpc_polling_trace.enabled()) {
1150
1146
  gpr_log(GPR_ERROR, " .. kick non-waiting worker");
1151
1147
  }
1152
1148
  SET_KICK_STATE(specific_worker, KICKED);
@@ -1157,39 +1153,39 @@ done:
1157
1153
  return ret_err;
1158
1154
  }
1159
1155
 
1160
- static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
1161
- grpc_fd *fd) {}
1156
+ static void pollset_add_fd(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
1157
+ grpc_fd* fd) {}
1162
1158
 
1163
1159
  /*******************************************************************************
1164
1160
  * Pollset-set Definitions
1165
1161
  */
1166
1162
 
1167
- static grpc_pollset_set *pollset_set_create(void) {
1168
- return (grpc_pollset_set *)((intptr_t)0xdeafbeef);
1163
+ static grpc_pollset_set* pollset_set_create(void) {
1164
+ return (grpc_pollset_set*)((intptr_t)0xdeafbeef);
1169
1165
  }
1170
1166
 
1171
- static void pollset_set_destroy(grpc_exec_ctx *exec_ctx,
1172
- grpc_pollset_set *pss) {}
1167
+ static void pollset_set_destroy(grpc_exec_ctx* exec_ctx,
1168
+ grpc_pollset_set* pss) {}
1173
1169
 
1174
- static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss,
1175
- grpc_fd *fd) {}
1170
+ static void pollset_set_add_fd(grpc_exec_ctx* exec_ctx, grpc_pollset_set* pss,
1171
+ grpc_fd* fd) {}
1176
1172
 
1177
- static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx, grpc_pollset_set *pss,
1178
- grpc_fd *fd) {}
1173
+ static void pollset_set_del_fd(grpc_exec_ctx* exec_ctx, grpc_pollset_set* pss,
1174
+ grpc_fd* fd) {}
1179
1175
 
1180
- static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx,
1181
- grpc_pollset_set *pss, grpc_pollset *ps) {}
1176
+ static void pollset_set_add_pollset(grpc_exec_ctx* exec_ctx,
1177
+ grpc_pollset_set* pss, grpc_pollset* ps) {}
1182
1178
 
1183
- static void pollset_set_del_pollset(grpc_exec_ctx *exec_ctx,
1184
- grpc_pollset_set *pss, grpc_pollset *ps) {}
1179
+ static void pollset_set_del_pollset(grpc_exec_ctx* exec_ctx,
1180
+ grpc_pollset_set* pss, grpc_pollset* ps) {}
1185
1181
 
1186
- static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx,
1187
- grpc_pollset_set *bag,
1188
- grpc_pollset_set *item) {}
1182
+ static void pollset_set_add_pollset_set(grpc_exec_ctx* exec_ctx,
1183
+ grpc_pollset_set* bag,
1184
+ grpc_pollset_set* item) {}
1189
1185
 
1190
- static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx,
1191
- grpc_pollset_set *bag,
1192
- grpc_pollset_set *item) {}
1186
+ static void pollset_set_del_pollset_set(grpc_exec_ctx* exec_ctx,
1187
+ grpc_pollset_set* bag,
1188
+ grpc_pollset_set* item) {}
1193
1189
 
1194
1190
  /*******************************************************************************
1195
1191
  * Event engine binding
@@ -1235,13 +1231,14 @@ static const grpc_event_engine_vtable vtable = {
1235
1231
  /* It is possible that GLIBC has epoll but the underlying kernel doesn't.
1236
1232
  * Create epoll_fd (epoll_set_init() takes care of that) to make sure epoll
1237
1233
  * support is available */
1238
- const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request) {
1234
+ const grpc_event_engine_vtable* grpc_init_epoll1_linux(bool explicit_request) {
1239
1235
  if (!grpc_has_wakeup_fd()) {
1240
- return NULL;
1236
+ gpr_log(GPR_ERROR, "Skipping epoll1 because of no wakeup fd.");
1237
+ return nullptr;
1241
1238
  }
1242
1239
 
1243
1240
  if (!epoll_set_init()) {
1244
- return NULL;
1241
+ return nullptr;
1245
1242
  }
1246
1243
 
1247
1244
  fd_global_init();
@@ -1249,7 +1246,7 @@ const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request) {
1249
1246
  if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) {
1250
1247
  fd_global_shutdown();
1251
1248
  epoll_set_shutdown();
1252
- return NULL;
1249
+ return nullptr;
1253
1250
  }
1254
1251
 
1255
1252
  return &vtable;
@@ -1257,10 +1254,12 @@ const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request) {
1257
1254
 
1258
1255
  #else /* defined(GRPC_LINUX_EPOLL) */
1259
1256
  #if defined(GRPC_POSIX_SOCKET)
1260
- #include "src/core/lib/iomgr/ev_posix.h"
1257
+ #include "src/core/lib/iomgr/ev_epoll1_linux.h"
1261
1258
  /* If GRPC_LINUX_EPOLL is not defined, it means epoll is not available. Return
1262
1259
  * NULL */
1263
- const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request) {
1260
+ const grpc_event_engine_vtable* grpc_init_epoll1_linux(bool explicit_request) {
1261
+ gpr_log(GPR_ERROR,
1262
+ "Skipping epoll1 becuase GRPC_LINUX_EPOLL is not defined.");
1264
1263
  return NULL;
1265
1264
  }
1266
1265
  #endif /* defined(GRPC_POSIX_SOCKET) */