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
@@ -23,13 +23,17 @@
23
23
  #include "src/core/lib/channel/channel_stack_builder.h"
24
24
  #include "src/core/lib/surface/channel_stack_type.h"
25
25
 
26
- grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
27
- const grpc_channel_args *args,
26
+ #ifdef __cplusplus
27
+ extern "C" {
28
+ #endif
29
+
30
+ grpc_channel* grpc_channel_create(grpc_exec_ctx* exec_ctx, const char* target,
31
+ const grpc_channel_args* args,
28
32
  grpc_channel_stack_type channel_stack_type,
29
- grpc_transport *optional_transport);
33
+ grpc_transport* optional_transport);
30
34
 
31
- grpc_channel *grpc_channel_create_with_builder(
32
- grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder,
35
+ grpc_channel* grpc_channel_create_with_builder(
36
+ grpc_exec_ctx* exec_ctx, grpc_channel_stack_builder* builder,
33
37
  grpc_channel_stack_type channel_stack_type);
34
38
 
35
39
  /** Create a call given a grpc_channel, in order to call \a method.
@@ -40,37 +44,37 @@ grpc_channel *grpc_channel_create_with_builder(
40
44
  non-NULL, it must be a server-side call. It will be used to propagate
41
45
  properties from the server call to this new client call, depending on the
42
46
  value of \a propagation_mask (see propagation_bits.h for possible values) */
43
- grpc_call *grpc_channel_create_pollset_set_call(
44
- grpc_exec_ctx *exec_ctx, grpc_channel *channel, grpc_call *parent_call,
45
- uint32_t propagation_mask, grpc_pollset_set *pollset_set, grpc_slice method,
46
- const grpc_slice *host, gpr_timespec deadline, void *reserved);
47
+ grpc_call* grpc_channel_create_pollset_set_call(
48
+ grpc_exec_ctx* exec_ctx, grpc_channel* channel, grpc_call* parent_call,
49
+ uint32_t propagation_mask, grpc_pollset_set* pollset_set, grpc_slice method,
50
+ const grpc_slice* host, grpc_millis deadline, void* reserved);
47
51
 
48
52
  /** Get a (borrowed) pointer to this channels underlying channel stack */
49
- grpc_channel_stack *grpc_channel_get_channel_stack(grpc_channel *channel);
53
+ grpc_channel_stack* grpc_channel_get_channel_stack(grpc_channel* channel);
50
54
 
51
55
  /** Get a grpc_mdelem of grpc-status: X where X is the numeric value of
52
56
  status_code.
53
57
 
54
58
  The returned elem is owned by the caller. */
55
- grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_exec_ctx *exec_ctx,
56
- grpc_channel *channel,
59
+ grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_exec_ctx* exec_ctx,
60
+ grpc_channel* channel,
57
61
  int status_code);
58
62
 
59
- size_t grpc_channel_get_call_size_estimate(grpc_channel *channel);
60
- void grpc_channel_update_call_size_estimate(grpc_channel *channel, size_t size);
63
+ size_t grpc_channel_get_call_size_estimate(grpc_channel* channel);
64
+ void grpc_channel_update_call_size_estimate(grpc_channel* channel, size_t size);
61
65
 
62
66
  #ifndef NDEBUG
63
- void grpc_channel_internal_ref(grpc_channel *channel, const char *reason);
64
- void grpc_channel_internal_unref(grpc_exec_ctx *exec_ctx, grpc_channel *channel,
65
- const char *reason);
67
+ void grpc_channel_internal_ref(grpc_channel* channel, const char* reason);
68
+ void grpc_channel_internal_unref(grpc_exec_ctx* exec_ctx, grpc_channel* channel,
69
+ const char* reason);
66
70
  #define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
67
71
  grpc_channel_internal_ref(channel, reason)
68
72
  #define GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, reason) \
69
73
  grpc_channel_internal_unref(exec_ctx, channel, reason)
70
74
  #else
71
- void grpc_channel_internal_ref(grpc_channel *channel);
72
- void grpc_channel_internal_unref(grpc_exec_ctx *exec_ctx,
73
- grpc_channel *channel);
75
+ void grpc_channel_internal_ref(grpc_channel* channel);
76
+ void grpc_channel_internal_unref(grpc_exec_ctx* exec_ctx,
77
+ grpc_channel* channel);
74
78
  #define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
75
79
  grpc_channel_internal_ref(channel)
76
80
  #define GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, reason) \
@@ -79,6 +83,10 @@ void grpc_channel_internal_unref(grpc_exec_ctx *exec_ctx,
79
83
 
80
84
  /** Return the channel's compression options. */
81
85
  grpc_compression_options grpc_channel_compression_options(
82
- const grpc_channel *channel);
86
+ const grpc_channel* channel);
87
+
88
+ #ifdef __cplusplus
89
+ }
90
+ #endif
83
91
 
84
92
  #endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_H */
@@ -23,13 +23,13 @@
23
23
 
24
24
  typedef struct stage_slot {
25
25
  grpc_channel_init_stage fn;
26
- void *arg;
26
+ void* arg;
27
27
  int priority;
28
28
  size_t insertion_order;
29
29
  } stage_slot;
30
30
 
31
31
  typedef struct stage_slots {
32
- stage_slot *slots;
32
+ stage_slot* slots;
33
33
  size_t num_slots;
34
34
  size_t cap_slots;
35
35
  } stage_slots;
@@ -39,7 +39,7 @@ static bool g_finalized;
39
39
 
40
40
  void grpc_channel_init_init(void) {
41
41
  for (int i = 0; i < GRPC_NUM_CHANNEL_STACK_TYPES; i++) {
42
- g_slots[i].slots = NULL;
42
+ g_slots[i].slots = nullptr;
43
43
  g_slots[i].num_slots = 0;
44
44
  g_slots[i].cap_slots = 0;
45
45
  }
@@ -49,24 +49,24 @@ void grpc_channel_init_init(void) {
49
49
  void grpc_channel_init_register_stage(grpc_channel_stack_type type,
50
50
  int priority,
51
51
  grpc_channel_init_stage stage,
52
- void *stage_arg) {
52
+ void* stage_arg) {
53
53
  GPR_ASSERT(!g_finalized);
54
54
  if (g_slots[type].cap_slots == g_slots[type].num_slots) {
55
55
  g_slots[type].cap_slots = GPR_MAX(8, 3 * g_slots[type].cap_slots / 2);
56
- g_slots[type].slots = (stage_slot *)gpr_realloc(
56
+ g_slots[type].slots = (stage_slot*)gpr_realloc(
57
57
  g_slots[type].slots,
58
58
  g_slots[type].cap_slots * sizeof(*g_slots[type].slots));
59
59
  }
60
- stage_slot *s = &g_slots[type].slots[g_slots[type].num_slots++];
60
+ stage_slot* s = &g_slots[type].slots[g_slots[type].num_slots++];
61
61
  s->insertion_order = g_slots[type].num_slots;
62
62
  s->priority = priority;
63
63
  s->fn = stage;
64
64
  s->arg = stage_arg;
65
65
  }
66
66
 
67
- static int compare_slots(const void *a, const void *b) {
68
- const stage_slot *sa = (const stage_slot *)a;
69
- const stage_slot *sb = (const stage_slot *)b;
67
+ static int compare_slots(const void* a, const void* b) {
68
+ const stage_slot* sa = (const stage_slot*)a;
69
+ const stage_slot* sb = (const stage_slot*)b;
70
70
 
71
71
  int c = GPR_ICMP(sa->priority, sb->priority);
72
72
  if (c != 0) return c;
@@ -85,12 +85,12 @@ void grpc_channel_init_finalize(void) {
85
85
  void grpc_channel_init_shutdown(void) {
86
86
  for (int i = 0; i < GRPC_NUM_CHANNEL_STACK_TYPES; i++) {
87
87
  gpr_free(g_slots[i].slots);
88
- g_slots[i].slots = (stage_slot *)(void *)(uintptr_t)0xdeadbeef;
88
+ g_slots[i].slots = (stage_slot*)(void*)(uintptr_t)0xdeadbeef;
89
89
  }
90
90
  }
91
91
 
92
- bool grpc_channel_init_create_stack(grpc_exec_ctx *exec_ctx,
93
- grpc_channel_stack_builder *builder,
92
+ bool grpc_channel_init_create_stack(grpc_exec_ctx* exec_ctx,
93
+ grpc_channel_stack_builder* builder,
94
94
  grpc_channel_stack_type type) {
95
95
  GPR_ASSERT(g_finalized);
96
96
 
@@ -98,7 +98,7 @@ bool grpc_channel_init_create_stack(grpc_exec_ctx *exec_ctx,
98
98
  grpc_channel_stack_type_string(type));
99
99
 
100
100
  for (size_t i = 0; i < g_slots[type].num_slots; i++) {
101
- const stage_slot *slot = &g_slots[type].slots[i];
101
+ const stage_slot* slot = &g_slots[type].slots[i];
102
102
  if (!slot->fn(exec_ctx, builder, slot->arg)) {
103
103
  return false;
104
104
  }
@@ -36,9 +36,9 @@ extern "C" {
36
36
 
37
37
  /// One stage of mutation: call functions against \a builder to influence the
38
38
  /// finally constructed channel stack
39
- typedef bool (*grpc_channel_init_stage)(grpc_exec_ctx *exec_ctx,
40
- grpc_channel_stack_builder *builder,
41
- void *arg);
39
+ typedef bool (*grpc_channel_init_stage)(grpc_exec_ctx* exec_ctx,
40
+ grpc_channel_stack_builder* builder,
41
+ void* arg);
42
42
 
43
43
  /// Global initialization of the system
44
44
  void grpc_channel_init_init(void);
@@ -51,7 +51,7 @@ void grpc_channel_init_init(void);
51
51
  void grpc_channel_init_register_stage(grpc_channel_stack_type type,
52
52
  int priority,
53
53
  grpc_channel_init_stage stage_fn,
54
- void *stage_arg);
54
+ void* stage_arg);
55
55
 
56
56
  /// Finalize registration. No more calls to grpc_channel_init_register_stage are
57
57
  /// allowed.
@@ -70,8 +70,8 @@ void grpc_channel_init_shutdown(void);
70
70
  /// \a optional_transport is either NULL or a constructed transport object
71
71
  /// Returns a pointer to the base of the memory allocated (the actual channel
72
72
  /// stack object will be prefix_bytes past that pointer)
73
- bool grpc_channel_init_create_stack(grpc_exec_ctx *exec_ctx,
74
- grpc_channel_stack_builder *builder,
73
+ bool grpc_channel_init_create_stack(grpc_exec_ctx* exec_ctx,
74
+ grpc_channel_stack_builder* builder,
75
75
  grpc_channel_stack_type type);
76
76
 
77
77
  #ifdef __cplusplus
@@ -28,32 +28,32 @@
28
28
 
29
29
  typedef struct {
30
30
  grpc_closure closure;
31
- void *tag;
32
- grpc_completion_queue *cq;
31
+ void* tag;
32
+ grpc_completion_queue* cq;
33
33
  grpc_cq_completion completion_storage;
34
34
  } ping_result;
35
35
 
36
- static void ping_destroy(grpc_exec_ctx *exec_ctx, void *arg,
37
- grpc_cq_completion *storage) {
36
+ static void ping_destroy(grpc_exec_ctx* exec_ctx, void* arg,
37
+ grpc_cq_completion* storage) {
38
38
  gpr_free(arg);
39
39
  }
40
40
 
41
- static void ping_done(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
42
- ping_result *pr = (ping_result *)arg;
41
+ static void ping_done(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
42
+ ping_result* pr = (ping_result*)arg;
43
43
  grpc_cq_end_op(exec_ctx, pr->cq, pr->tag, GRPC_ERROR_REF(error), ping_destroy,
44
44
  pr, &pr->completion_storage);
45
45
  }
46
46
 
47
- void grpc_channel_ping(grpc_channel *channel, grpc_completion_queue *cq,
48
- void *tag, void *reserved) {
47
+ void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq,
48
+ void* tag, void* reserved) {
49
49
  GRPC_API_TRACE("grpc_channel_ping(channel=%p, cq=%p, tag=%p, reserved=%p)", 4,
50
50
  (channel, cq, tag, reserved));
51
- grpc_transport_op *op = grpc_make_transport_op(NULL);
52
- ping_result *pr = (ping_result *)gpr_malloc(sizeof(*pr));
53
- grpc_channel_element *top_elem =
51
+ grpc_transport_op* op = grpc_make_transport_op(nullptr);
52
+ ping_result* pr = (ping_result*)gpr_malloc(sizeof(*pr));
53
+ grpc_channel_element* top_elem =
54
54
  grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0);
55
55
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
56
- GPR_ASSERT(reserved == NULL);
56
+ GPR_ASSERT(reserved == nullptr);
57
57
  pr->tag = tag;
58
58
  pr->cq = cq;
59
59
  GRPC_CLOSURE_INIT(&pr->closure, ping_done, pr, grpc_schedule_on_exec_ctx);
@@ -38,7 +38,7 @@ bool grpc_channel_stack_type_is_client(grpc_channel_stack_type type) {
38
38
  GPR_UNREACHABLE_CODE(return true;);
39
39
  }
40
40
 
41
- const char *grpc_channel_stack_type_string(grpc_channel_stack_type type) {
41
+ const char* grpc_channel_stack_type_string(grpc_channel_stack_type type) {
42
42
  switch (type) {
43
43
  case GRPC_CLIENT_CHANNEL:
44
44
  return "CLIENT_CHANNEL";
@@ -21,6 +21,10 @@
21
21
 
22
22
  #include <stdbool.h>
23
23
 
24
+ #ifdef __cplusplus
25
+ extern "C" {
26
+ #endif
27
+
24
28
  typedef enum {
25
29
  // normal top-half client channel with load-balancing, connection management
26
30
  GRPC_CLIENT_CHANNEL,
@@ -40,6 +44,10 @@ typedef enum {
40
44
 
41
45
  bool grpc_channel_stack_type_is_client(grpc_channel_stack_type type);
42
46
 
43
- const char *grpc_channel_stack_type_string(grpc_channel_stack_type type);
47
+ const char* grpc_channel_stack_type_string(grpc_channel_stack_type type);
48
+
49
+ #ifdef __cplusplus
50
+ }
51
+ #endif
44
52
 
45
53
  #endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_STACK_TYPE_H */
@@ -15,8 +15,11 @@
15
15
  * limitations under the License.
16
16
  *
17
17
  */
18
+ #include <grpc/support/port_platform.h>
19
+
18
20
  #include "src/core/lib/surface/completion_queue.h"
19
21
 
22
+ #include <inttypes.h>
20
23
  #include <stdio.h>
21
24
  #include <string.h>
22
25
 
@@ -25,6 +28,7 @@
25
28
  #include <grpc/support/log.h>
26
29
  #include <grpc/support/string_util.h>
27
30
  #include <grpc/support/time.h>
31
+ #include <grpc/support/tls.h>
28
32
 
29
33
  #include "src/core/lib/debug/stats.h"
30
34
  #include "src/core/lib/iomgr/pollset.h"
@@ -36,75 +40,76 @@
36
40
  #include "src/core/lib/surface/call.h"
37
41
  #include "src/core/lib/surface/event_string.h"
38
42
 
39
- grpc_tracer_flag grpc_trace_operation_failures =
40
- GRPC_TRACER_INITIALIZER(false, "op_failure");
41
- #ifndef NDEBUG
42
- grpc_tracer_flag grpc_trace_pending_tags =
43
- GRPC_TRACER_INITIALIZER(false, "pending_tags");
44
- grpc_tracer_flag grpc_trace_cq_refcount =
45
- GRPC_TRACER_INITIALIZER(false, "cq_refcount");
46
- #endif
43
+ grpc_core::TraceFlag grpc_trace_operation_failures(false, "op_failure");
44
+ grpc_core::DebugOnlyTraceFlag grpc_trace_pending_tags(false, "pending_tags");
45
+ grpc_core::DebugOnlyTraceFlag grpc_trace_cq_refcount(false, "cq_refcount");
46
+
47
+ // Specifies a cq thread local cache.
48
+ // The first event that occurs on a thread
49
+ // with a cq cache will go into that cache, and
50
+ // will only be returned on the thread that initialized the cache.
51
+ // NOTE: Only one event will ever be cached.
52
+ GPR_TLS_DECL(g_cached_event);
53
+ GPR_TLS_DECL(g_cached_cq);
47
54
 
48
55
  typedef struct {
49
- grpc_pollset_worker **worker;
50
- void *tag;
56
+ grpc_pollset_worker** worker;
57
+ void* tag;
51
58
  } plucker;
52
59
 
53
60
  typedef struct {
54
61
  bool can_get_pollset;
55
62
  bool can_listen;
56
63
  size_t (*size)(void);
57
- void (*init)(grpc_pollset *pollset, gpr_mu **mu);
58
- grpc_error *(*kick)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
59
- grpc_pollset_worker *specific_worker);
60
- grpc_error *(*work)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
61
- grpc_pollset_worker **worker, gpr_timespec now,
62
- gpr_timespec deadline);
63
- void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
64
- grpc_closure *closure);
65
- void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset);
64
+ void (*init)(grpc_pollset* pollset, gpr_mu** mu);
65
+ grpc_error* (*kick)(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
66
+ grpc_pollset_worker* specific_worker);
67
+ grpc_error* (*work)(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
68
+ grpc_pollset_worker** worker, grpc_millis deadline);
69
+ void (*shutdown)(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
70
+ grpc_closure* closure);
71
+ void (*destroy)(grpc_exec_ctx* exec_ctx, grpc_pollset* pollset);
66
72
  } cq_poller_vtable;
67
73
 
68
74
  typedef struct non_polling_worker {
69
75
  gpr_cv cv;
70
76
  bool kicked;
71
- struct non_polling_worker *next;
72
- struct non_polling_worker *prev;
77
+ struct non_polling_worker* next;
78
+ struct non_polling_worker* prev;
73
79
  } non_polling_worker;
74
80
 
75
81
  typedef struct {
76
82
  gpr_mu mu;
77
- non_polling_worker *root;
78
- grpc_closure *shutdown;
83
+ non_polling_worker* root;
84
+ grpc_closure* shutdown;
79
85
  } non_polling_poller;
80
86
 
81
87
  static size_t non_polling_poller_size(void) {
82
88
  return sizeof(non_polling_poller);
83
89
  }
84
90
 
85
- static void non_polling_poller_init(grpc_pollset *pollset, gpr_mu **mu) {
86
- non_polling_poller *npp = (non_polling_poller *)pollset;
91
+ static void non_polling_poller_init(grpc_pollset* pollset, gpr_mu** mu) {
92
+ non_polling_poller* npp = (non_polling_poller*)pollset;
87
93
  gpr_mu_init(&npp->mu);
88
94
  *mu = &npp->mu;
89
95
  }
90
96
 
91
- static void non_polling_poller_destroy(grpc_exec_ctx *exec_ctx,
92
- grpc_pollset *pollset) {
93
- non_polling_poller *npp = (non_polling_poller *)pollset;
97
+ static void non_polling_poller_destroy(grpc_exec_ctx* exec_ctx,
98
+ grpc_pollset* pollset) {
99
+ non_polling_poller* npp = (non_polling_poller*)pollset;
94
100
  gpr_mu_destroy(&npp->mu);
95
101
  }
96
102
 
97
- static grpc_error *non_polling_poller_work(grpc_exec_ctx *exec_ctx,
98
- grpc_pollset *pollset,
99
- grpc_pollset_worker **worker,
100
- gpr_timespec now,
101
- gpr_timespec deadline) {
102
- non_polling_poller *npp = (non_polling_poller *)pollset;
103
+ static grpc_error* non_polling_poller_work(grpc_exec_ctx* exec_ctx,
104
+ grpc_pollset* pollset,
105
+ grpc_pollset_worker** worker,
106
+ grpc_millis deadline) {
107
+ non_polling_poller* npp = (non_polling_poller*)pollset;
103
108
  if (npp->shutdown) return GRPC_ERROR_NONE;
104
109
  non_polling_worker w;
105
110
  gpr_cv_init(&w.cv);
106
- if (worker != NULL) *worker = (grpc_pollset_worker *)&w;
107
- if (npp->root == NULL) {
111
+ if (worker != nullptr) *worker = (grpc_pollset_worker*)&w;
112
+ if (npp->root == nullptr) {
108
113
  npp->root = w.next = w.prev = &w;
109
114
  } else {
110
115
  w.next = npp->root;
@@ -112,31 +117,36 @@ static grpc_error *non_polling_poller_work(grpc_exec_ctx *exec_ctx,
112
117
  w.next->prev = w.prev->next = &w;
113
118
  }
114
119
  w.kicked = false;
115
- while (!npp->shutdown && !w.kicked && !gpr_cv_wait(&w.cv, &npp->mu, deadline))
120
+ gpr_timespec deadline_ts =
121
+ grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME);
122
+ while (!npp->shutdown && !w.kicked &&
123
+ !gpr_cv_wait(&w.cv, &npp->mu, deadline_ts))
116
124
  ;
125
+ grpc_exec_ctx_invalidate_now(exec_ctx);
117
126
  if (&w == npp->root) {
118
127
  npp->root = w.next;
119
128
  if (&w == npp->root) {
120
129
  if (npp->shutdown) {
121
130
  GRPC_CLOSURE_SCHED(exec_ctx, npp->shutdown, GRPC_ERROR_NONE);
122
131
  }
123
- npp->root = NULL;
132
+ npp->root = nullptr;
124
133
  }
125
134
  }
126
135
  w.next->prev = w.prev;
127
136
  w.prev->next = w.next;
128
137
  gpr_cv_destroy(&w.cv);
129
- if (worker != NULL) *worker = NULL;
138
+ if (worker != nullptr) *worker = nullptr;
130
139
  return GRPC_ERROR_NONE;
131
140
  }
132
141
 
133
- static grpc_error *non_polling_poller_kick(
134
- grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
135
- grpc_pollset_worker *specific_worker) {
136
- non_polling_poller *p = (non_polling_poller *)pollset;
137
- if (specific_worker == NULL) specific_worker = (grpc_pollset_worker *)p->root;
138
- if (specific_worker != NULL) {
139
- non_polling_worker *w = (non_polling_worker *)specific_worker;
142
+ static grpc_error* non_polling_poller_kick(
143
+ grpc_exec_ctx* exec_ctx, grpc_pollset* pollset,
144
+ grpc_pollset_worker* specific_worker) {
145
+ non_polling_poller* p = (non_polling_poller*)pollset;
146
+ if (specific_worker == nullptr)
147
+ specific_worker = (grpc_pollset_worker*)p->root;
148
+ if (specific_worker != nullptr) {
149
+ non_polling_worker* w = (non_polling_worker*)specific_worker;
140
150
  if (!w->kicked) {
141
151
  w->kicked = true;
142
152
  gpr_cv_signal(&w->cv);
@@ -145,16 +155,16 @@ static grpc_error *non_polling_poller_kick(
145
155
  return GRPC_ERROR_NONE;
146
156
  }
147
157
 
148
- static void non_polling_poller_shutdown(grpc_exec_ctx *exec_ctx,
149
- grpc_pollset *pollset,
150
- grpc_closure *closure) {
151
- non_polling_poller *p = (non_polling_poller *)pollset;
152
- GPR_ASSERT(closure != NULL);
158
+ static void non_polling_poller_shutdown(grpc_exec_ctx* exec_ctx,
159
+ grpc_pollset* pollset,
160
+ grpc_closure* closure) {
161
+ non_polling_poller* p = (non_polling_poller*)pollset;
162
+ GPR_ASSERT(closure != nullptr);
153
163
  p->shutdown = closure;
154
- if (p->root == NULL) {
164
+ if (p->root == nullptr) {
155
165
  GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE);
156
166
  } else {
157
- non_polling_worker *w = p->root;
167
+ non_polling_worker* w = p->root;
158
168
  do {
159
169
  gpr_cv_signal(&w->cv);
160
170
  w = w->next;
@@ -164,50 +174,33 @@ static void non_polling_poller_shutdown(grpc_exec_ctx *exec_ctx,
164
174
 
165
175
  static const cq_poller_vtable g_poller_vtable_by_poller_type[] = {
166
176
  /* GRPC_CQ_DEFAULT_POLLING */
167
- {.can_get_pollset = true,
168
- .can_listen = true,
169
- .size = grpc_pollset_size,
170
- .init = grpc_pollset_init,
171
- .kick = grpc_pollset_kick,
172
- .work = grpc_pollset_work,
173
- .shutdown = grpc_pollset_shutdown,
174
- .destroy = grpc_pollset_destroy},
177
+ {true, true, grpc_pollset_size, grpc_pollset_init, grpc_pollset_kick,
178
+ grpc_pollset_work, grpc_pollset_shutdown, grpc_pollset_destroy},
175
179
  /* GRPC_CQ_NON_LISTENING */
176
- {.can_get_pollset = true,
177
- .can_listen = false,
178
- .size = grpc_pollset_size,
179
- .init = grpc_pollset_init,
180
- .kick = grpc_pollset_kick,
181
- .work = grpc_pollset_work,
182
- .shutdown = grpc_pollset_shutdown,
183
- .destroy = grpc_pollset_destroy},
180
+ {true, false, grpc_pollset_size, grpc_pollset_init, grpc_pollset_kick,
181
+ grpc_pollset_work, grpc_pollset_shutdown, grpc_pollset_destroy},
184
182
  /* GRPC_CQ_NON_POLLING */
185
- {.can_get_pollset = false,
186
- .can_listen = false,
187
- .size = non_polling_poller_size,
188
- .init = non_polling_poller_init,
189
- .kick = non_polling_poller_kick,
190
- .work = non_polling_poller_work,
191
- .shutdown = non_polling_poller_shutdown,
192
- .destroy = non_polling_poller_destroy},
183
+ {false, false, non_polling_poller_size, non_polling_poller_init,
184
+ non_polling_poller_kick, non_polling_poller_work,
185
+ non_polling_poller_shutdown, non_polling_poller_destroy},
193
186
  };
194
187
 
195
188
  typedef struct cq_vtable {
196
189
  grpc_cq_completion_type cq_completion_type;
197
190
  size_t data_size;
198
- void (*init)(void *data);
199
- void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq);
200
- void (*destroy)(void *data);
201
- bool (*begin_op)(grpc_completion_queue *cq, void *tag);
202
- void (*end_op)(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq, void *tag,
203
- grpc_error *error,
204
- void (*done)(grpc_exec_ctx *exec_ctx, void *done_arg,
205
- grpc_cq_completion *storage),
206
- void *done_arg, grpc_cq_completion *storage);
207
- grpc_event (*next)(grpc_completion_queue *cq, gpr_timespec deadline,
208
- void *reserved);
209
- grpc_event (*pluck)(grpc_completion_queue *cq, void *tag,
210
- gpr_timespec deadline, void *reserved);
191
+ void (*init)(void* data);
192
+ void (*shutdown)(grpc_exec_ctx* exec_ctx, grpc_completion_queue* cq);
193
+ void (*destroy)(void* data);
194
+ bool (*begin_op)(grpc_completion_queue* cq, void* tag);
195
+ void (*end_op)(grpc_exec_ctx* exec_ctx, grpc_completion_queue* cq, void* tag,
196
+ grpc_error* error,
197
+ void (*done)(grpc_exec_ctx* exec_ctx, void* done_arg,
198
+ grpc_cq_completion* storage),
199
+ void* done_arg, grpc_cq_completion* storage);
200
+ grpc_event (*next)(grpc_completion_queue* cq, gpr_timespec deadline,
201
+ void* reserved);
202
+ grpc_event (*pluck)(grpc_completion_queue* cq, void* tag,
203
+ gpr_timespec deadline, void* reserved);
211
204
  } cq_vtable;
212
205
 
213
206
  /* Queue that holds the cq_completion_events. Internally uses gpr_mpscq queue
@@ -244,7 +237,7 @@ typedef struct cq_next_data {
244
237
  typedef struct cq_pluck_data {
245
238
  /** Completed events for completion-queues of type GRPC_CQ_PLUCK */
246
239
  grpc_cq_completion completed_head;
247
- grpc_cq_completion *completed_tail;
240
+ grpc_cq_completion* completed_tail;
248
241
 
249
242
  /** Number of pending events (+1 if we're not shutdown) */
250
243
  gpr_atm pending_events;
@@ -271,13 +264,13 @@ struct grpc_completion_queue {
271
264
  /** Once owning_refs drops to zero, we will destroy the cq */
272
265
  gpr_refcount owning_refs;
273
266
 
274
- gpr_mu *mu;
267
+ gpr_mu* mu;
275
268
 
276
- const cq_vtable *vtable;
277
- const cq_poller_vtable *poller_vtable;
269
+ const cq_vtable* vtable;
270
+ const cq_poller_vtable* poller_vtable;
278
271
 
279
272
  #ifndef NDEBUG
280
- void **outstanding_tags;
273
+ void** outstanding_tags;
281
274
  size_t outstanding_tag_count;
282
275
  size_t outstanding_tag_capacity;
283
276
  #endif
@@ -287,99 +280,150 @@ struct grpc_completion_queue {
287
280
  };
288
281
 
289
282
  /* Forward declarations */
290
- static void cq_finish_shutdown_next(grpc_exec_ctx *exec_ctx,
291
- grpc_completion_queue *cq);
292
- static void cq_finish_shutdown_pluck(grpc_exec_ctx *exec_ctx,
293
- grpc_completion_queue *cq);
294
- static void cq_shutdown_next(grpc_exec_ctx *exec_ctx,
295
- grpc_completion_queue *cq);
296
- static void cq_shutdown_pluck(grpc_exec_ctx *exec_ctx,
297
- grpc_completion_queue *cq);
298
-
299
- static bool cq_begin_op_for_next(grpc_completion_queue *cq, void *tag);
300
- static bool cq_begin_op_for_pluck(grpc_completion_queue *cq, void *tag);
301
-
302
- static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx,
303
- grpc_completion_queue *cq, void *tag,
304
- grpc_error *error,
305
- void (*done)(grpc_exec_ctx *exec_ctx,
306
- void *done_arg,
307
- grpc_cq_completion *storage),
308
- void *done_arg, grpc_cq_completion *storage);
309
-
310
- static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx,
311
- grpc_completion_queue *cq, void *tag,
312
- grpc_error *error,
313
- void (*done)(grpc_exec_ctx *exec_ctx,
314
- void *done_arg,
315
- grpc_cq_completion *storage),
316
- void *done_arg, grpc_cq_completion *storage);
317
-
318
- static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
319
- void *reserved);
320
-
321
- static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag,
322
- gpr_timespec deadline, void *reserved);
323
-
324
- static void cq_init_next(void *data);
325
- static void cq_init_pluck(void *data);
326
- static void cq_destroy_next(void *data);
327
- static void cq_destroy_pluck(void *data);
283
+ static void cq_finish_shutdown_next(grpc_exec_ctx* exec_ctx,
284
+ grpc_completion_queue* cq);
285
+ static void cq_finish_shutdown_pluck(grpc_exec_ctx* exec_ctx,
286
+ grpc_completion_queue* cq);
287
+ static void cq_shutdown_next(grpc_exec_ctx* exec_ctx,
288
+ grpc_completion_queue* cq);
289
+ static void cq_shutdown_pluck(grpc_exec_ctx* exec_ctx,
290
+ grpc_completion_queue* cq);
291
+
292
+ static bool cq_begin_op_for_next(grpc_completion_queue* cq, void* tag);
293
+ static bool cq_begin_op_for_pluck(grpc_completion_queue* cq, void* tag);
294
+
295
+ static void cq_end_op_for_next(grpc_exec_ctx* exec_ctx,
296
+ grpc_completion_queue* cq, void* tag,
297
+ grpc_error* error,
298
+ void (*done)(grpc_exec_ctx* exec_ctx,
299
+ void* done_arg,
300
+ grpc_cq_completion* storage),
301
+ void* done_arg, grpc_cq_completion* storage);
302
+
303
+ static void cq_end_op_for_pluck(grpc_exec_ctx* exec_ctx,
304
+ grpc_completion_queue* cq, void* tag,
305
+ grpc_error* error,
306
+ void (*done)(grpc_exec_ctx* exec_ctx,
307
+ void* done_arg,
308
+ grpc_cq_completion* storage),
309
+ void* done_arg, grpc_cq_completion* storage);
310
+
311
+ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
312
+ void* reserved);
313
+
314
+ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
315
+ gpr_timespec deadline, void* reserved);
316
+
317
+ static void cq_init_next(void* data);
318
+ static void cq_init_pluck(void* data);
319
+ static void cq_destroy_next(void* data);
320
+ static void cq_destroy_pluck(void* data);
328
321
 
329
322
  /* Completion queue vtables based on the completion-type */
330
323
  static const cq_vtable g_cq_vtable[] = {
331
324
  /* GRPC_CQ_NEXT */
332
325
  {GRPC_CQ_NEXT, sizeof(cq_next_data), cq_init_next, cq_shutdown_next,
333
- cq_destroy_next, cq_begin_op_for_next, cq_end_op_for_next, cq_next, NULL},
326
+ cq_destroy_next, cq_begin_op_for_next, cq_end_op_for_next, cq_next,
327
+ nullptr},
334
328
  /* GRPC_CQ_PLUCK */
335
329
  {GRPC_CQ_PLUCK, sizeof(cq_pluck_data), cq_init_pluck, cq_shutdown_pluck,
336
- cq_destroy_pluck, cq_begin_op_for_pluck, cq_end_op_for_pluck, NULL,
330
+ cq_destroy_pluck, cq_begin_op_for_pluck, cq_end_op_for_pluck, nullptr,
337
331
  cq_pluck},
338
332
  };
339
333
 
340
- #define DATA_FROM_CQ(cq) ((void *)(cq + 1))
334
+ #define DATA_FROM_CQ(cq) ((void*)(cq + 1))
341
335
  #define POLLSET_FROM_CQ(cq) \
342
- ((grpc_pollset *)(cq->vtable->data_size + (char *)DATA_FROM_CQ(cq)))
343
-
344
- grpc_tracer_flag grpc_cq_pluck_trace =
345
- GRPC_TRACER_INITIALIZER(true, "queue_pluck");
346
- grpc_tracer_flag grpc_cq_event_timeout_trace =
347
- GRPC_TRACER_INITIALIZER(true, "queue_timeout");
348
-
349
- #define GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, event) \
350
- if (GRPC_TRACER_ON(grpc_api_trace) && \
351
- (GRPC_TRACER_ON(grpc_cq_pluck_trace) || \
352
- (event)->type != GRPC_QUEUE_TIMEOUT)) { \
353
- char *_ev = grpc_event_string(event); \
354
- gpr_log(GPR_INFO, "RETURN_EVENT[%p]: %s", cq, _ev); \
355
- gpr_free(_ev); \
336
+ ((grpc_pollset*)(cq->vtable->data_size + (char*)DATA_FROM_CQ(cq)))
337
+
338
+ grpc_core::TraceFlag grpc_cq_pluck_trace(true, "queue_pluck");
339
+ grpc_core::TraceFlag grpc_cq_event_timeout_trace(true, "queue_timeout");
340
+
341
+ #define GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, event) \
342
+ if (grpc_api_trace.enabled() && (grpc_cq_pluck_trace.enabled() || \
343
+ (event)->type != GRPC_QUEUE_TIMEOUT)) { \
344
+ char* _ev = grpc_event_string(event); \
345
+ gpr_log(GPR_INFO, "RETURN_EVENT[%p]: %s", cq, _ev); \
346
+ gpr_free(_ev); \
347
+ }
348
+
349
+ static void on_pollset_shutdown_done(grpc_exec_ctx* exec_ctx, void* cq,
350
+ grpc_error* error);
351
+
352
+ void grpc_cq_global_init() {
353
+ gpr_tls_init(&g_cached_event);
354
+ gpr_tls_init(&g_cached_cq);
355
+ }
356
+
357
+ void grpc_completion_queue_thread_local_cache_init(grpc_completion_queue* cq) {
358
+ if ((grpc_completion_queue*)gpr_tls_get(&g_cached_cq) == nullptr) {
359
+ gpr_tls_set(&g_cached_event, (intptr_t)0);
360
+ gpr_tls_set(&g_cached_cq, (intptr_t)cq);
361
+ }
362
+ }
363
+
364
+ int grpc_completion_queue_thread_local_cache_flush(grpc_completion_queue* cq,
365
+ void** tag, int* ok) {
366
+ grpc_cq_completion* storage =
367
+ (grpc_cq_completion*)gpr_tls_get(&g_cached_event);
368
+ int ret = 0;
369
+ if (storage != nullptr &&
370
+ (grpc_completion_queue*)gpr_tls_get(&g_cached_cq) == cq) {
371
+ *tag = storage->tag;
372
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
373
+ *ok = (storage->next & (uintptr_t)(1)) == 1;
374
+ storage->done(&exec_ctx, storage->done_arg, storage);
375
+ ret = 1;
376
+ cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq);
377
+ if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
378
+ GRPC_CQ_INTERNAL_REF(cq, "shutting_down");
379
+ gpr_mu_lock(cq->mu);
380
+ cq_finish_shutdown_next(&exec_ctx, cq);
381
+ gpr_mu_unlock(cq->mu);
382
+ GRPC_CQ_INTERNAL_UNREF(&exec_ctx, cq, "shutting_down");
383
+ }
384
+ grpc_exec_ctx_finish(&exec_ctx);
356
385
  }
386
+ gpr_tls_set(&g_cached_event, (intptr_t)0);
387
+ gpr_tls_set(&g_cached_cq, (intptr_t)0);
357
388
 
358
- static void on_pollset_shutdown_done(grpc_exec_ctx *exec_ctx, void *cq,
359
- grpc_error *error);
389
+ return ret;
390
+ }
360
391
 
361
- static void cq_event_queue_init(grpc_cq_event_queue *q) {
392
+ static void cq_event_queue_init(grpc_cq_event_queue* q) {
362
393
  gpr_mpscq_init(&q->queue);
363
394
  q->queue_lock = GPR_SPINLOCK_INITIALIZER;
364
395
  gpr_atm_no_barrier_store(&q->num_queue_items, 0);
365
396
  }
366
397
 
367
- static void cq_event_queue_destroy(grpc_cq_event_queue *q) {
398
+ static void cq_event_queue_destroy(grpc_cq_event_queue* q) {
368
399
  gpr_mpscq_destroy(&q->queue);
369
400
  }
370
401
 
371
- static bool cq_event_queue_push(grpc_cq_event_queue *q, grpc_cq_completion *c) {
372
- gpr_mpscq_push(&q->queue, (gpr_mpscq_node *)c);
402
+ static bool cq_event_queue_push(grpc_cq_event_queue* q, grpc_cq_completion* c) {
403
+ gpr_mpscq_push(&q->queue, (gpr_mpscq_node*)c);
373
404
  return gpr_atm_no_barrier_fetch_add(&q->num_queue_items, 1) == 0;
374
405
  }
375
406
 
376
- static grpc_cq_completion *cq_event_queue_pop(grpc_cq_event_queue *q) {
377
- grpc_cq_completion *c = NULL;
407
+ static grpc_cq_completion* cq_event_queue_pop(grpc_cq_event_queue* q) {
408
+ grpc_cq_completion* c = nullptr;
409
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
410
+
378
411
  if (gpr_spinlock_trylock(&q->queue_lock)) {
379
- c = (grpc_cq_completion *)gpr_mpscq_pop(&q->queue);
412
+ GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES(&exec_ctx);
413
+
414
+ bool is_empty = false;
415
+ c = (grpc_cq_completion*)gpr_mpscq_pop_and_check_end(&q->queue, &is_empty);
380
416
  gpr_spinlock_unlock(&q->queue_lock);
417
+
418
+ if (c == nullptr && !is_empty) {
419
+ GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES(&exec_ctx);
420
+ }
421
+ } else {
422
+ GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES(&exec_ctx);
381
423
  }
382
424
 
425
+ grpc_exec_ctx_finish(&exec_ctx);
426
+
383
427
  if (c) {
384
428
  gpr_atm_no_barrier_fetch_add(&q->num_queue_items, -1);
385
429
  }
@@ -389,14 +433,14 @@ static grpc_cq_completion *cq_event_queue_pop(grpc_cq_event_queue *q) {
389
433
 
390
434
  /* Note: The counter is not incremented/decremented atomically with push/pop.
391
435
  * The count is only eventually consistent */
392
- static long cq_event_queue_num_items(grpc_cq_event_queue *q) {
436
+ static long cq_event_queue_num_items(grpc_cq_event_queue* q) {
393
437
  return (long)gpr_atm_no_barrier_load(&q->num_queue_items);
394
438
  }
395
439
 
396
- grpc_completion_queue *grpc_completion_queue_create_internal(
440
+ grpc_completion_queue* grpc_completion_queue_create_internal(
397
441
  grpc_cq_completion_type completion_type,
398
442
  grpc_cq_polling_type polling_type) {
399
- grpc_completion_queue *cq;
443
+ grpc_completion_queue* cq;
400
444
 
401
445
  GPR_TIMER_BEGIN("grpc_completion_queue_create_internal", 0);
402
446
 
@@ -405,17 +449,17 @@ grpc_completion_queue *grpc_completion_queue_create_internal(
405
449
  "polling_type=%d)",
406
450
  2, (completion_type, polling_type));
407
451
 
408
- const cq_vtable *vtable = &g_cq_vtable[completion_type];
409
- const cq_poller_vtable *poller_vtable =
452
+ const cq_vtable* vtable = &g_cq_vtable[completion_type];
453
+ const cq_poller_vtable* poller_vtable =
410
454
  &g_poller_vtable_by_poller_type[polling_type];
411
455
 
412
456
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
413
457
  GRPC_STATS_INC_CQS_CREATED(&exec_ctx);
414
458
  grpc_exec_ctx_finish(&exec_ctx);
415
459
 
416
- cq = (grpc_completion_queue *)gpr_zalloc(sizeof(grpc_completion_queue) +
417
- vtable->data_size +
418
- poller_vtable->size());
460
+ cq = (grpc_completion_queue*)gpr_zalloc(sizeof(grpc_completion_queue) +
461
+ vtable->data_size +
462
+ poller_vtable->size());
419
463
 
420
464
  cq->vtable = vtable;
421
465
  cq->poller_vtable = poller_vtable;
@@ -434,8 +478,8 @@ grpc_completion_queue *grpc_completion_queue_create_internal(
434
478
  return cq;
435
479
  }
436
480
 
437
- static void cq_init_next(void *ptr) {
438
- cq_next_data *cqd = (cq_next_data *)ptr;
481
+ static void cq_init_next(void* ptr) {
482
+ cq_next_data* cqd = (cq_next_data*)ptr;
439
483
  /* Initial count is dropped by grpc_completion_queue_shutdown */
440
484
  gpr_atm_no_barrier_store(&cqd->pending_events, 1);
441
485
  cqd->shutdown_called = false;
@@ -443,14 +487,14 @@ static void cq_init_next(void *ptr) {
443
487
  cq_event_queue_init(&cqd->queue);
444
488
  }
445
489
 
446
- static void cq_destroy_next(void *ptr) {
447
- cq_next_data *cqd = (cq_next_data *)ptr;
490
+ static void cq_destroy_next(void* ptr) {
491
+ cq_next_data* cqd = (cq_next_data*)ptr;
448
492
  GPR_ASSERT(cq_event_queue_num_items(&cqd->queue) == 0);
449
493
  cq_event_queue_destroy(&cqd->queue);
450
494
  }
451
495
 
452
- static void cq_init_pluck(void *ptr) {
453
- cq_pluck_data *cqd = (cq_pluck_data *)ptr;
496
+ static void cq_init_pluck(void* ptr) {
497
+ cq_pluck_data* cqd = (cq_pluck_data*)ptr;
454
498
  /* Initial count is dropped by grpc_completion_queue_shutdown */
455
499
  gpr_atm_no_barrier_store(&cqd->pending_events, 1);
456
500
  cqd->completed_tail = &cqd->completed_head;
@@ -461,16 +505,16 @@ static void cq_init_pluck(void *ptr) {
461
505
  gpr_atm_no_barrier_store(&cqd->things_queued_ever, 0);
462
506
  }
463
507
 
464
- static void cq_destroy_pluck(void *ptr) {
465
- cq_pluck_data *cqd = (cq_pluck_data *)ptr;
508
+ static void cq_destroy_pluck(void* ptr) {
509
+ cq_pluck_data* cqd = (cq_pluck_data*)ptr;
466
510
  GPR_ASSERT(cqd->completed_head.next == (uintptr_t)&cqd->completed_head);
467
511
  }
468
512
 
469
- grpc_cq_completion_type grpc_get_cq_completion_type(grpc_completion_queue *cq) {
513
+ grpc_cq_completion_type grpc_get_cq_completion_type(grpc_completion_queue* cq) {
470
514
  return cq->vtable->cq_completion_type;
471
515
  }
472
516
 
473
- int grpc_get_cq_poll_num(grpc_completion_queue *cq) {
517
+ int grpc_get_cq_poll_num(grpc_completion_queue* cq) {
474
518
  int cur_num_polls;
475
519
  gpr_mu_lock(cq->mu);
476
520
  cur_num_polls = cq->num_polls;
@@ -479,38 +523,38 @@ int grpc_get_cq_poll_num(grpc_completion_queue *cq) {
479
523
  }
480
524
 
481
525
  #ifndef NDEBUG
482
- void grpc_cq_internal_ref(grpc_completion_queue *cq, const char *reason,
483
- const char *file, int line) {
484
- if (GRPC_TRACER_ON(grpc_trace_cq_refcount)) {
526
+ void grpc_cq_internal_ref(grpc_completion_queue* cq, const char* reason,
527
+ const char* file, int line) {
528
+ if (grpc_trace_cq_refcount.enabled()) {
485
529
  gpr_atm val = gpr_atm_no_barrier_load(&cq->owning_refs.count);
486
530
  gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
487
531
  "CQ:%p ref %" PRIdPTR " -> %" PRIdPTR " %s", cq, val, val + 1,
488
532
  reason);
489
533
  }
490
534
  #else
491
- void grpc_cq_internal_ref(grpc_completion_queue *cq) {
535
+ void grpc_cq_internal_ref(grpc_completion_queue* cq) {
492
536
  #endif
493
537
  gpr_ref(&cq->owning_refs);
494
538
  }
495
539
 
496
- static void on_pollset_shutdown_done(grpc_exec_ctx *exec_ctx, void *arg,
497
- grpc_error *error) {
498
- grpc_completion_queue *cq = (grpc_completion_queue *)arg;
540
+ static void on_pollset_shutdown_done(grpc_exec_ctx* exec_ctx, void* arg,
541
+ grpc_error* error) {
542
+ grpc_completion_queue* cq = (grpc_completion_queue*)arg;
499
543
  GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "pollset_destroy");
500
544
  }
501
545
 
502
546
  #ifndef NDEBUG
503
- void grpc_cq_internal_unref(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq,
504
- const char *reason, const char *file, int line) {
505
- if (GRPC_TRACER_ON(grpc_trace_cq_refcount)) {
547
+ void grpc_cq_internal_unref(grpc_exec_ctx* exec_ctx, grpc_completion_queue* cq,
548
+ const char* reason, const char* file, int line) {
549
+ if (grpc_trace_cq_refcount.enabled()) {
506
550
  gpr_atm val = gpr_atm_no_barrier_load(&cq->owning_refs.count);
507
551
  gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
508
552
  "CQ:%p unref %" PRIdPTR " -> %" PRIdPTR " %s", cq, val, val - 1,
509
553
  reason);
510
554
  }
511
555
  #else
512
- void grpc_cq_internal_unref(grpc_exec_ctx *exec_ctx,
513
- grpc_completion_queue *cq) {
556
+ void grpc_cq_internal_unref(grpc_exec_ctx* exec_ctx,
557
+ grpc_completion_queue* cq) {
514
558
  #endif
515
559
  if (gpr_unref(&cq->owning_refs)) {
516
560
  cq->vtable->destroy(DATA_FROM_CQ(cq));
@@ -523,7 +567,7 @@ void grpc_cq_internal_unref(grpc_exec_ctx *exec_ctx,
523
567
  }
524
568
 
525
569
  #ifndef NDEBUG
526
- static void cq_check_tag(grpc_completion_queue *cq, void *tag, bool lock_cq) {
570
+ static void cq_check_tag(grpc_completion_queue* cq, void* tag, bool lock_cq) {
527
571
  int found = 0;
528
572
  if (lock_cq) {
529
573
  gpr_mu_lock(cq->mu);
@@ -532,7 +576,7 @@ static void cq_check_tag(grpc_completion_queue *cq, void *tag, bool lock_cq) {
532
576
  for (int i = 0; i < (int)cq->outstanding_tag_count; i++) {
533
577
  if (cq->outstanding_tags[i] == tag) {
534
578
  cq->outstanding_tag_count--;
535
- GPR_SWAP(void *, cq->outstanding_tags[i],
579
+ GPR_SWAP(void*, cq->outstanding_tags[i],
536
580
  cq->outstanding_tags[cq->outstanding_tag_count]);
537
581
  found = 1;
538
582
  break;
@@ -546,12 +590,12 @@ static void cq_check_tag(grpc_completion_queue *cq, void *tag, bool lock_cq) {
546
590
  GPR_ASSERT(found);
547
591
  }
548
592
  #else
549
- static void cq_check_tag(grpc_completion_queue *cq, void *tag, bool lock_cq) {}
593
+ static void cq_check_tag(grpc_completion_queue* cq, void* tag, bool lock_cq) {}
550
594
  #endif
551
595
 
552
596
  /* Atomically increments a counter only if the counter is not zero. Returns
553
597
  * true if the increment was successful; false if the counter is zero */
554
- static bool atm_inc_if_nonzero(gpr_atm *counter) {
598
+ static bool atm_inc_if_nonzero(gpr_atm* counter) {
555
599
  while (true) {
556
600
  gpr_atm count = gpr_atm_acq_load(counter);
557
601
  /* If zero, we are done. If not, we must to a CAS (instead of an atomic
@@ -567,22 +611,22 @@ static bool atm_inc_if_nonzero(gpr_atm *counter) {
567
611
  return true;
568
612
  }
569
613
 
570
- static bool cq_begin_op_for_next(grpc_completion_queue *cq, void *tag) {
571
- cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq);
614
+ static bool cq_begin_op_for_next(grpc_completion_queue* cq, void* tag) {
615
+ cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq);
572
616
  return atm_inc_if_nonzero(&cqd->pending_events);
573
617
  }
574
618
 
575
- static bool cq_begin_op_for_pluck(grpc_completion_queue *cq, void *tag) {
576
- cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq);
619
+ static bool cq_begin_op_for_pluck(grpc_completion_queue* cq, void* tag) {
620
+ cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq);
577
621
  return atm_inc_if_nonzero(&cqd->pending_events);
578
622
  }
579
623
 
580
- bool grpc_cq_begin_op(grpc_completion_queue *cq, void *tag) {
624
+ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
581
625
  #ifndef NDEBUG
582
626
  gpr_mu_lock(cq->mu);
583
627
  if (cq->outstanding_tag_count == cq->outstanding_tag_capacity) {
584
628
  cq->outstanding_tag_capacity = GPR_MAX(4, 2 * cq->outstanding_tag_capacity);
585
- cq->outstanding_tags = (void **)gpr_realloc(
629
+ cq->outstanding_tags = (void**)gpr_realloc(
586
630
  cq->outstanding_tags,
587
631
  sizeof(*cq->outstanding_tags) * cq->outstanding_tag_capacity);
588
632
  }
@@ -595,30 +639,27 @@ bool grpc_cq_begin_op(grpc_completion_queue *cq, void *tag) {
595
639
  /* Queue a GRPC_OP_COMPLETED operation to a completion queue (with a
596
640
  * completion
597
641
  * type of GRPC_CQ_NEXT) */
598
- static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx,
599
- grpc_completion_queue *cq, void *tag,
600
- grpc_error *error,
601
- void (*done)(grpc_exec_ctx *exec_ctx,
602
- void *done_arg,
603
- grpc_cq_completion *storage),
604
- void *done_arg, grpc_cq_completion *storage) {
642
+ static void cq_end_op_for_next(grpc_exec_ctx* exec_ctx,
643
+ grpc_completion_queue* cq, void* tag,
644
+ grpc_error* error,
645
+ void (*done)(grpc_exec_ctx* exec_ctx,
646
+ void* done_arg,
647
+ grpc_cq_completion* storage),
648
+ void* done_arg, grpc_cq_completion* storage) {
605
649
  GPR_TIMER_BEGIN("cq_end_op_for_next", 0);
606
650
 
607
- if (GRPC_TRACER_ON(grpc_api_trace) ||
608
- (GRPC_TRACER_ON(grpc_trace_operation_failures) &&
609
- error != GRPC_ERROR_NONE)) {
610
- const char *errmsg = grpc_error_string(error);
651
+ if (grpc_api_trace.enabled() ||
652
+ (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE)) {
653
+ const char* errmsg = grpc_error_string(error);
611
654
  GRPC_API_TRACE(
612
655
  "cq_end_op_for_next(exec_ctx=%p, cq=%p, tag=%p, error=%s, "
613
656
  "done=%p, done_arg=%p, storage=%p)",
614
657
  7, (exec_ctx, cq, tag, errmsg, done, done_arg, storage));
615
- if (GRPC_TRACER_ON(grpc_trace_operation_failures) &&
616
- error != GRPC_ERROR_NONE) {
658
+ if (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE) {
617
659
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
618
660
  }
619
661
  }
620
-
621
- cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq);
662
+ cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq);
622
663
  int is_success = (error == GRPC_ERROR_NONE);
623
664
 
624
665
  storage->tag = tag;
@@ -628,44 +669,50 @@ static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx,
628
669
 
629
670
  cq_check_tag(cq, tag, true); /* Used in debug builds only */
630
671
 
631
- /* Add the completion to the queue */
632
- bool is_first = cq_event_queue_push(&cqd->queue, storage);
633
- gpr_atm_no_barrier_fetch_add(&cqd->things_queued_ever, 1);
634
-
635
- /* Since we do not hold the cq lock here, it is important to do an 'acquire'
636
- load here (instead of a 'no_barrier' load) to match with the release store
637
- (done via gpr_atm_full_fetch_add(pending_events, -1)) in cq_shutdown_next
638
- */
639
- bool will_definitely_shutdown = gpr_atm_acq_load(&cqd->pending_events) == 1;
640
-
641
- if (!will_definitely_shutdown) {
642
- /* Only kick if this is the first item queued */
643
- if (is_first) {
644
- gpr_mu_lock(cq->mu);
645
- grpc_error *kick_error =
646
- cq->poller_vtable->kick(exec_ctx, POLLSET_FROM_CQ(cq), NULL);
647
- gpr_mu_unlock(cq->mu);
672
+ if ((grpc_completion_queue*)gpr_tls_get(&g_cached_cq) == cq &&
673
+ (grpc_cq_completion*)gpr_tls_get(&g_cached_event) == nullptr) {
674
+ gpr_tls_set(&g_cached_event, (intptr_t)storage);
675
+ } else {
676
+ /* Add the completion to the queue */
677
+ bool is_first = cq_event_queue_push(&cqd->queue, storage);
678
+ gpr_atm_no_barrier_fetch_add(&cqd->things_queued_ever, 1);
679
+
680
+ /* Since we do not hold the cq lock here, it is important to do an 'acquire'
681
+ load here (instead of a 'no_barrier' load) to match with the release
682
+ store
683
+ (done via gpr_atm_full_fetch_add(pending_events, -1)) in cq_shutdown_next
684
+ */
685
+ bool will_definitely_shutdown = gpr_atm_acq_load(&cqd->pending_events) == 1;
686
+
687
+ if (!will_definitely_shutdown) {
688
+ /* Only kick if this is the first item queued */
689
+ if (is_first) {
690
+ gpr_mu_lock(cq->mu);
691
+ grpc_error* kick_error =
692
+ cq->poller_vtable->kick(exec_ctx, POLLSET_FROM_CQ(cq), nullptr);
693
+ gpr_mu_unlock(cq->mu);
648
694
 
649
- if (kick_error != GRPC_ERROR_NONE) {
650
- const char *msg = grpc_error_string(kick_error);
651
- gpr_log(GPR_ERROR, "Kick failed: %s", msg);
652
- GRPC_ERROR_UNREF(kick_error);
695
+ if (kick_error != GRPC_ERROR_NONE) {
696
+ const char* msg = grpc_error_string(kick_error);
697
+ gpr_log(GPR_ERROR, "Kick failed: %s", msg);
698
+ GRPC_ERROR_UNREF(kick_error);
699
+ }
653
700
  }
654
- }
655
- if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
701
+ if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
702
+ GRPC_CQ_INTERNAL_REF(cq, "shutting_down");
703
+ gpr_mu_lock(cq->mu);
704
+ cq_finish_shutdown_next(exec_ctx, cq);
705
+ gpr_mu_unlock(cq->mu);
706
+ GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down");
707
+ }
708
+ } else {
656
709
  GRPC_CQ_INTERNAL_REF(cq, "shutting_down");
710
+ gpr_atm_rel_store(&cqd->pending_events, 0);
657
711
  gpr_mu_lock(cq->mu);
658
712
  cq_finish_shutdown_next(exec_ctx, cq);
659
713
  gpr_mu_unlock(cq->mu);
660
714
  GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down");
661
715
  }
662
- } else {
663
- GRPC_CQ_INTERNAL_REF(cq, "shutting_down");
664
- gpr_atm_rel_store(&cqd->pending_events, 0);
665
- gpr_mu_lock(cq->mu);
666
- cq_finish_shutdown_next(exec_ctx, cq);
667
- gpr_mu_unlock(cq->mu);
668
- GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down");
669
716
  }
670
717
 
671
718
  GPR_TIMER_END("cq_end_op_for_next", 0);
@@ -676,28 +723,26 @@ static void cq_end_op_for_next(grpc_exec_ctx *exec_ctx,
676
723
  /* Queue a GRPC_OP_COMPLETED operation to a completion queue (with a
677
724
  * completion
678
725
  * type of GRPC_CQ_PLUCK) */
679
- static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx,
680
- grpc_completion_queue *cq, void *tag,
681
- grpc_error *error,
682
- void (*done)(grpc_exec_ctx *exec_ctx,
683
- void *done_arg,
684
- grpc_cq_completion *storage),
685
- void *done_arg, grpc_cq_completion *storage) {
686
- cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq);
726
+ static void cq_end_op_for_pluck(grpc_exec_ctx* exec_ctx,
727
+ grpc_completion_queue* cq, void* tag,
728
+ grpc_error* error,
729
+ void (*done)(grpc_exec_ctx* exec_ctx,
730
+ void* done_arg,
731
+ grpc_cq_completion* storage),
732
+ void* done_arg, grpc_cq_completion* storage) {
733
+ cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq);
687
734
  int is_success = (error == GRPC_ERROR_NONE);
688
735
 
689
736
  GPR_TIMER_BEGIN("cq_end_op_for_pluck", 0);
690
737
 
691
- if (GRPC_TRACER_ON(grpc_api_trace) ||
692
- (GRPC_TRACER_ON(grpc_trace_operation_failures) &&
693
- error != GRPC_ERROR_NONE)) {
694
- const char *errmsg = grpc_error_string(error);
738
+ if (grpc_api_trace.enabled() ||
739
+ (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE)) {
740
+ const char* errmsg = grpc_error_string(error);
695
741
  GRPC_API_TRACE(
696
742
  "cq_end_op_for_pluck(exec_ctx=%p, cq=%p, tag=%p, error=%s, "
697
743
  "done=%p, done_arg=%p, storage=%p)",
698
744
  7, (exec_ctx, cq, tag, errmsg, done, done_arg, storage));
699
- if (GRPC_TRACER_ON(grpc_trace_operation_failures) &&
700
- error != GRPC_ERROR_NONE) {
745
+ if (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE) {
701
746
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
702
747
  }
703
748
  }
@@ -720,7 +765,7 @@ static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx,
720
765
  cq_finish_shutdown_pluck(exec_ctx, cq);
721
766
  gpr_mu_unlock(cq->mu);
722
767
  } else {
723
- grpc_pollset_worker *pluck_worker = NULL;
768
+ grpc_pollset_worker* pluck_worker = nullptr;
724
769
  for (int i = 0; i < cqd->num_pluckers; i++) {
725
770
  if (cqd->pluckers[i].tag == tag) {
726
771
  pluck_worker = *cqd->pluckers[i].worker;
@@ -728,13 +773,13 @@ static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx,
728
773
  }
729
774
  }
730
775
 
731
- grpc_error *kick_error =
776
+ grpc_error* kick_error =
732
777
  cq->poller_vtable->kick(exec_ctx, POLLSET_FROM_CQ(cq), pluck_worker);
733
778
 
734
779
  gpr_mu_unlock(cq->mu);
735
780
 
736
781
  if (kick_error != GRPC_ERROR_NONE) {
737
- const char *msg = grpc_error_string(kick_error);
782
+ const char* msg = grpc_error_string(kick_error);
738
783
  gpr_log(GPR_ERROR, "Kick failed: %s", msg);
739
784
 
740
785
  GRPC_ERROR_UNREF(kick_error);
@@ -746,28 +791,28 @@ static void cq_end_op_for_pluck(grpc_exec_ctx *exec_ctx,
746
791
  GRPC_ERROR_UNREF(error);
747
792
  }
748
793
 
749
- void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cq,
750
- void *tag, grpc_error *error,
751
- void (*done)(grpc_exec_ctx *exec_ctx, void *done_arg,
752
- grpc_cq_completion *storage),
753
- void *done_arg, grpc_cq_completion *storage) {
794
+ void grpc_cq_end_op(grpc_exec_ctx* exec_ctx, grpc_completion_queue* cq,
795
+ void* tag, grpc_error* error,
796
+ void (*done)(grpc_exec_ctx* exec_ctx, void* done_arg,
797
+ grpc_cq_completion* storage),
798
+ void* done_arg, grpc_cq_completion* storage) {
754
799
  cq->vtable->end_op(exec_ctx, cq, tag, error, done, done_arg, storage);
755
800
  }
756
801
 
757
802
  typedef struct {
758
803
  gpr_atm last_seen_things_queued_ever;
759
- grpc_completion_queue *cq;
760
- gpr_timespec deadline;
761
- grpc_cq_completion *stolen_completion;
762
- void *tag; /* for pluck */
804
+ grpc_completion_queue* cq;
805
+ grpc_millis deadline;
806
+ grpc_cq_completion* stolen_completion;
807
+ void* tag; /* for pluck */
763
808
  bool first_loop;
764
809
  } cq_is_finished_arg;
765
810
 
766
- static bool cq_is_next_finished(grpc_exec_ctx *exec_ctx, void *arg) {
767
- cq_is_finished_arg *a = (cq_is_finished_arg *)arg;
768
- grpc_completion_queue *cq = a->cq;
769
- cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq);
770
- GPR_ASSERT(a->stolen_completion == NULL);
811
+ static bool cq_is_next_finished(grpc_exec_ctx* exec_ctx, void* arg) {
812
+ cq_is_finished_arg* a = (cq_is_finished_arg*)arg;
813
+ grpc_completion_queue* cq = a->cq;
814
+ cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq);
815
+ GPR_ASSERT(a->stolen_completion == nullptr);
771
816
 
772
817
  gpr_atm current_last_seen_things_queued_ever =
773
818
  gpr_atm_no_barrier_load(&cqd->things_queued_ever);
@@ -782,42 +827,40 @@ static bool cq_is_next_finished(grpc_exec_ctx *exec_ctx, void *arg) {
782
827
  * is ok and doesn't affect correctness. Might effect the tail latencies a
783
828
  * bit) */
784
829
  a->stolen_completion = cq_event_queue_pop(&cqd->queue);
785
- if (a->stolen_completion != NULL) {
830
+ if (a->stolen_completion != nullptr) {
786
831
  return true;
787
832
  }
788
833
  }
789
- return !a->first_loop &&
790
- gpr_time_cmp(a->deadline, gpr_now(a->deadline.clock_type)) < 0;
834
+ return !a->first_loop && a->deadline < grpc_exec_ctx_now(exec_ctx);
791
835
  }
792
836
 
793
837
  #ifndef NDEBUG
794
- static void dump_pending_tags(grpc_completion_queue *cq) {
795
- if (!GRPC_TRACER_ON(grpc_trace_pending_tags)) return;
838
+ static void dump_pending_tags(grpc_completion_queue* cq) {
839
+ if (!grpc_trace_pending_tags.enabled()) return;
796
840
 
797
841
  gpr_strvec v;
798
842
  gpr_strvec_init(&v);
799
843
  gpr_strvec_add(&v, gpr_strdup("PENDING TAGS:"));
800
844
  gpr_mu_lock(cq->mu);
801
845
  for (size_t i = 0; i < cq->outstanding_tag_count; i++) {
802
- char *s;
846
+ char* s;
803
847
  gpr_asprintf(&s, " %p", cq->outstanding_tags[i]);
804
848
  gpr_strvec_add(&v, s);
805
849
  }
806
850
  gpr_mu_unlock(cq->mu);
807
- char *out = gpr_strvec_flatten(&v, NULL);
851
+ char* out = gpr_strvec_flatten(&v, nullptr);
808
852
  gpr_strvec_destroy(&v);
809
853
  gpr_log(GPR_DEBUG, "%s", out);
810
854
  gpr_free(out);
811
855
  }
812
856
  #else
813
- static void dump_pending_tags(grpc_completion_queue *cq) {}
857
+ static void dump_pending_tags(grpc_completion_queue* cq) {}
814
858
  #endif
815
859
 
816
- static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
817
- void *reserved) {
860
+ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
861
+ void* reserved) {
818
862
  grpc_event ret;
819
- gpr_timespec now;
820
- cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq);
863
+ cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq);
821
864
 
822
865
  GPR_TIMER_BEGIN("grpc_completion_queue_next", 0);
823
866
 
@@ -827,33 +870,31 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
827
870
  "deadline=gpr_timespec { tv_sec: %" PRId64
828
871
  ", tv_nsec: %d, clock_type: %d }, "
829
872
  "reserved=%p)",
830
- 5, (cq, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type,
831
- reserved));
873
+ 5,
874
+ (cq, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type,
875
+ reserved));
832
876
  GPR_ASSERT(!reserved);
833
877
 
834
878
  dump_pending_tags(cq);
835
879
 
836
- deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC);
837
-
838
880
  GRPC_CQ_INTERNAL_REF(cq, "next");
839
881
 
882
+ grpc_millis deadline_millis = grpc_timespec_to_millis_round_up(deadline);
840
883
  cq_is_finished_arg is_finished_arg = {
841
- .last_seen_things_queued_ever =
842
- gpr_atm_no_barrier_load(&cqd->things_queued_ever),
843
- .cq = cq,
844
- .deadline = deadline,
845
- .stolen_completion = NULL,
846
- .tag = NULL,
847
- .first_loop = true};
884
+ gpr_atm_no_barrier_load(&cqd->things_queued_ever),
885
+ cq,
886
+ deadline_millis,
887
+ nullptr,
888
+ nullptr,
889
+ true};
848
890
  grpc_exec_ctx exec_ctx =
849
891
  GRPC_EXEC_CTX_INITIALIZER(0, cq_is_next_finished, &is_finished_arg);
850
-
851
892
  for (;;) {
852
- gpr_timespec iteration_deadline = deadline;
893
+ grpc_millis iteration_deadline = deadline_millis;
853
894
 
854
- if (is_finished_arg.stolen_completion != NULL) {
855
- grpc_cq_completion *c = is_finished_arg.stolen_completion;
856
- is_finished_arg.stolen_completion = NULL;
895
+ if (is_finished_arg.stolen_completion != nullptr) {
896
+ grpc_cq_completion* c = is_finished_arg.stolen_completion;
897
+ is_finished_arg.stolen_completion = nullptr;
857
898
  ret.type = GRPC_OP_COMPLETE;
858
899
  ret.success = c->next & 1u;
859
900
  ret.tag = c->tag;
@@ -861,9 +902,9 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
861
902
  break;
862
903
  }
863
904
 
864
- grpc_cq_completion *c = cq_event_queue_pop(&cqd->queue);
905
+ grpc_cq_completion* c = cq_event_queue_pop(&cqd->queue);
865
906
 
866
- if (c != NULL) {
907
+ if (c != nullptr) {
867
908
  ret.type = GRPC_OP_COMPLETE;
868
909
  ret.success = c->next & 1u;
869
910
  ret.tag = c->tag;
@@ -876,7 +917,7 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
876
917
  attempt at popping. Not doing this can potentially deadlock this
877
918
  thread forever (if the deadline is infinity) */
878
919
  if (cq_event_queue_num_items(&cqd->queue) > 0) {
879
- iteration_deadline = gpr_time_0(GPR_CLOCK_MONOTONIC);
920
+ iteration_deadline = 0;
880
921
  }
881
922
  }
882
923
 
@@ -897,8 +938,8 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
897
938
  break;
898
939
  }
899
940
 
900
- now = gpr_now(GPR_CLOCK_MONOTONIC);
901
- if (!is_finished_arg.first_loop && gpr_time_cmp(now, deadline) >= 0) {
941
+ if (!is_finished_arg.first_loop &&
942
+ grpc_exec_ctx_now(&exec_ctx) >= deadline_millis) {
902
943
  memset(&ret, 0, sizeof(ret));
903
944
  ret.type = GRPC_QUEUE_TIMEOUT;
904
945
  dump_pending_tags(cq);
@@ -908,12 +949,12 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
908
949
  /* The main polling work happens in grpc_pollset_work */
909
950
  gpr_mu_lock(cq->mu);
910
951
  cq->num_polls++;
911
- grpc_error *err = cq->poller_vtable->work(&exec_ctx, POLLSET_FROM_CQ(cq),
912
- NULL, now, iteration_deadline);
952
+ grpc_error* err = cq->poller_vtable->work(&exec_ctx, POLLSET_FROM_CQ(cq),
953
+ nullptr, iteration_deadline);
913
954
  gpr_mu_unlock(cq->mu);
914
955
 
915
956
  if (err != GRPC_ERROR_NONE) {
916
- const char *msg = grpc_error_string(err);
957
+ const char* msg = grpc_error_string(err);
917
958
  gpr_log(GPR_ERROR, "Completion queue next failed: %s", msg);
918
959
 
919
960
  GRPC_ERROR_UNREF(err);
@@ -928,14 +969,14 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
928
969
  if (cq_event_queue_num_items(&cqd->queue) > 0 &&
929
970
  gpr_atm_acq_load(&cqd->pending_events) > 0) {
930
971
  gpr_mu_lock(cq->mu);
931
- cq->poller_vtable->kick(&exec_ctx, POLLSET_FROM_CQ(cq), NULL);
972
+ cq->poller_vtable->kick(&exec_ctx, POLLSET_FROM_CQ(cq), nullptr);
932
973
  gpr_mu_unlock(cq->mu);
933
974
  }
934
975
 
935
976
  GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, &ret);
936
977
  GRPC_CQ_INTERNAL_UNREF(&exec_ctx, cq, "next");
937
978
  grpc_exec_ctx_finish(&exec_ctx);
938
- GPR_ASSERT(is_finished_arg.stolen_completion == NULL);
979
+ GPR_ASSERT(is_finished_arg.stolen_completion == nullptr);
939
980
 
940
981
  GPR_TIMER_END("grpc_completion_queue_next", 0);
941
982
 
@@ -948,9 +989,9 @@ static grpc_event cq_next(grpc_completion_queue *cq, gpr_timespec deadline,
948
989
  - Must be called only once in completion queue's lifetime
949
990
  - grpc_completion_queue_shutdown() MUST have been called before calling
950
991
  this function */
951
- static void cq_finish_shutdown_next(grpc_exec_ctx *exec_ctx,
952
- grpc_completion_queue *cq) {
953
- cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq);
992
+ static void cq_finish_shutdown_next(grpc_exec_ctx* exec_ctx,
993
+ grpc_completion_queue* cq) {
994
+ cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq);
954
995
 
955
996
  GPR_ASSERT(cqd->shutdown_called);
956
997
  GPR_ASSERT(gpr_atm_no_barrier_load(&cqd->pending_events) == 0);
@@ -959,9 +1000,9 @@ static void cq_finish_shutdown_next(grpc_exec_ctx *exec_ctx,
959
1000
  &cq->pollset_shutdown_done);
960
1001
  }
961
1002
 
962
- static void cq_shutdown_next(grpc_exec_ctx *exec_ctx,
963
- grpc_completion_queue *cq) {
964
- cq_next_data *cqd = (cq_next_data *)DATA_FROM_CQ(cq);
1003
+ static void cq_shutdown_next(grpc_exec_ctx* exec_ctx,
1004
+ grpc_completion_queue* cq) {
1005
+ cq_next_data* cqd = (cq_next_data*)DATA_FROM_CQ(cq);
965
1006
 
966
1007
  /* Need an extra ref for cq here because:
967
1008
  * We call cq_finish_shutdown_next() below, that would call pollset shutdown.
@@ -987,14 +1028,14 @@ static void cq_shutdown_next(grpc_exec_ctx *exec_ctx,
987
1028
  GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down");
988
1029
  }
989
1030
 
990
- grpc_event grpc_completion_queue_next(grpc_completion_queue *cq,
991
- gpr_timespec deadline, void *reserved) {
1031
+ grpc_event grpc_completion_queue_next(grpc_completion_queue* cq,
1032
+ gpr_timespec deadline, void* reserved) {
992
1033
  return cq->vtable->next(cq, deadline, reserved);
993
1034
  }
994
1035
 
995
- static int add_plucker(grpc_completion_queue *cq, void *tag,
996
- grpc_pollset_worker **worker) {
997
- cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq);
1036
+ static int add_plucker(grpc_completion_queue* cq, void* tag,
1037
+ grpc_pollset_worker** worker) {
1038
+ cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq);
998
1039
  if (cqd->num_pluckers == GRPC_MAX_COMPLETION_QUEUE_PLUCKERS) {
999
1040
  return 0;
1000
1041
  }
@@ -1004,9 +1045,9 @@ static int add_plucker(grpc_completion_queue *cq, void *tag,
1004
1045
  return 1;
1005
1046
  }
1006
1047
 
1007
- static void del_plucker(grpc_completion_queue *cq, void *tag,
1008
- grpc_pollset_worker **worker) {
1009
- cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq);
1048
+ static void del_plucker(grpc_completion_queue* cq, void* tag,
1049
+ grpc_pollset_worker** worker) {
1050
+ cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq);
1010
1051
  for (int i = 0; i < cqd->num_pluckers; i++) {
1011
1052
  if (cqd->pluckers[i].tag == tag && cqd->pluckers[i].worker == worker) {
1012
1053
  cqd->num_pluckers--;
@@ -1017,21 +1058,21 @@ static void del_plucker(grpc_completion_queue *cq, void *tag,
1017
1058
  GPR_UNREACHABLE_CODE(return );
1018
1059
  }
1019
1060
 
1020
- static bool cq_is_pluck_finished(grpc_exec_ctx *exec_ctx, void *arg) {
1021
- cq_is_finished_arg *a = (cq_is_finished_arg *)arg;
1022
- grpc_completion_queue *cq = a->cq;
1023
- cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq);
1061
+ static bool cq_is_pluck_finished(grpc_exec_ctx* exec_ctx, void* arg) {
1062
+ cq_is_finished_arg* a = (cq_is_finished_arg*)arg;
1063
+ grpc_completion_queue* cq = a->cq;
1064
+ cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq);
1024
1065
 
1025
- GPR_ASSERT(a->stolen_completion == NULL);
1066
+ GPR_ASSERT(a->stolen_completion == nullptr);
1026
1067
  gpr_atm current_last_seen_things_queued_ever =
1027
1068
  gpr_atm_no_barrier_load(&cqd->things_queued_ever);
1028
1069
  if (current_last_seen_things_queued_ever != a->last_seen_things_queued_ever) {
1029
1070
  gpr_mu_lock(cq->mu);
1030
1071
  a->last_seen_things_queued_ever =
1031
1072
  gpr_atm_no_barrier_load(&cqd->things_queued_ever);
1032
- grpc_cq_completion *c;
1033
- grpc_cq_completion *prev = &cqd->completed_head;
1034
- while ((c = (grpc_cq_completion *)(prev->next & ~(uintptr_t)1)) !=
1073
+ grpc_cq_completion* c;
1074
+ grpc_cq_completion* prev = &cqd->completed_head;
1075
+ while ((c = (grpc_cq_completion*)(prev->next & ~(uintptr_t)1)) !=
1035
1076
  &cqd->completed_head) {
1036
1077
  if (c->tag == a->tag) {
1037
1078
  prev->next = (prev->next & (uintptr_t)1) | (c->next & ~(uintptr_t)1);
@@ -1046,54 +1087,51 @@ static bool cq_is_pluck_finished(grpc_exec_ctx *exec_ctx, void *arg) {
1046
1087
  }
1047
1088
  gpr_mu_unlock(cq->mu);
1048
1089
  }
1049
- return !a->first_loop &&
1050
- gpr_time_cmp(a->deadline, gpr_now(a->deadline.clock_type)) < 0;
1090
+ return !a->first_loop && a->deadline < grpc_exec_ctx_now(exec_ctx);
1051
1091
  }
1052
1092
 
1053
- static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag,
1054
- gpr_timespec deadline, void *reserved) {
1093
+ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1094
+ gpr_timespec deadline, void* reserved) {
1055
1095
  grpc_event ret;
1056
- grpc_cq_completion *c;
1057
- grpc_cq_completion *prev;
1058
- grpc_pollset_worker *worker = NULL;
1059
- gpr_timespec now;
1060
- cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq);
1096
+ grpc_cq_completion* c;
1097
+ grpc_cq_completion* prev;
1098
+ grpc_pollset_worker* worker = nullptr;
1099
+ cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq);
1061
1100
 
1062
1101
  GPR_TIMER_BEGIN("grpc_completion_queue_pluck", 0);
1063
1102
 
1064
- if (GRPC_TRACER_ON(grpc_cq_pluck_trace)) {
1103
+ if (grpc_cq_pluck_trace.enabled()) {
1065
1104
  GRPC_API_TRACE(
1066
1105
  "grpc_completion_queue_pluck("
1067
1106
  "cq=%p, tag=%p, "
1068
1107
  "deadline=gpr_timespec { tv_sec: %" PRId64
1069
1108
  ", tv_nsec: %d, clock_type: %d }, "
1070
1109
  "reserved=%p)",
1071
- 6, (cq, tag, deadline.tv_sec, deadline.tv_nsec,
1072
- (int)deadline.clock_type, reserved));
1110
+ 6,
1111
+ (cq, tag, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type,
1112
+ reserved));
1073
1113
  }
1074
1114
  GPR_ASSERT(!reserved);
1075
1115
 
1076
1116
  dump_pending_tags(cq);
1077
1117
 
1078
- deadline = gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC);
1079
-
1080
1118
  GRPC_CQ_INTERNAL_REF(cq, "pluck");
1081
1119
  gpr_mu_lock(cq->mu);
1120
+ grpc_millis deadline_millis = grpc_timespec_to_millis_round_up(deadline);
1082
1121
  cq_is_finished_arg is_finished_arg = {
1083
- .last_seen_things_queued_ever =
1084
- gpr_atm_no_barrier_load(&cqd->things_queued_ever),
1085
- .cq = cq,
1086
- .deadline = deadline,
1087
- .stolen_completion = NULL,
1088
- .tag = tag,
1089
- .first_loop = true};
1122
+ gpr_atm_no_barrier_load(&cqd->things_queued_ever),
1123
+ cq,
1124
+ deadline_millis,
1125
+ nullptr,
1126
+ tag,
1127
+ true};
1090
1128
  grpc_exec_ctx exec_ctx =
1091
1129
  GRPC_EXEC_CTX_INITIALIZER(0, cq_is_pluck_finished, &is_finished_arg);
1092
1130
  for (;;) {
1093
- if (is_finished_arg.stolen_completion != NULL) {
1131
+ if (is_finished_arg.stolen_completion != nullptr) {
1094
1132
  gpr_mu_unlock(cq->mu);
1095
1133
  c = is_finished_arg.stolen_completion;
1096
- is_finished_arg.stolen_completion = NULL;
1134
+ is_finished_arg.stolen_completion = nullptr;
1097
1135
  ret.type = GRPC_OP_COMPLETE;
1098
1136
  ret.success = c->next & 1u;
1099
1137
  ret.tag = c->tag;
@@ -1101,7 +1139,7 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag,
1101
1139
  break;
1102
1140
  }
1103
1141
  prev = &cqd->completed_head;
1104
- while ((c = (grpc_cq_completion *)(prev->next & ~(uintptr_t)1)) !=
1142
+ while ((c = (grpc_cq_completion*)(prev->next & ~(uintptr_t)1)) !=
1105
1143
  &cqd->completed_head) {
1106
1144
  if (c->tag == tag) {
1107
1145
  prev->next = (prev->next & (uintptr_t)1) | (c->next & ~(uintptr_t)1);
@@ -1135,8 +1173,8 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag,
1135
1173
  dump_pending_tags(cq);
1136
1174
  break;
1137
1175
  }
1138
- now = gpr_now(GPR_CLOCK_MONOTONIC);
1139
- if (!is_finished_arg.first_loop && gpr_time_cmp(now, deadline) >= 0) {
1176
+ if (!is_finished_arg.first_loop &&
1177
+ grpc_exec_ctx_now(&exec_ctx) >= deadline_millis) {
1140
1178
  del_plucker(cq, tag, &worker);
1141
1179
  gpr_mu_unlock(cq->mu);
1142
1180
  memset(&ret, 0, sizeof(ret));
@@ -1144,14 +1182,13 @@ static grpc_event cq_pluck(grpc_completion_queue *cq, void *tag,
1144
1182
  dump_pending_tags(cq);
1145
1183
  break;
1146
1184
  }
1147
-
1148
1185
  cq->num_polls++;
1149
- grpc_error *err = cq->poller_vtable->work(&exec_ctx, POLLSET_FROM_CQ(cq),
1150
- &worker, now, deadline);
1186
+ grpc_error* err = cq->poller_vtable->work(&exec_ctx, POLLSET_FROM_CQ(cq),
1187
+ &worker, deadline_millis);
1151
1188
  if (err != GRPC_ERROR_NONE) {
1152
1189
  del_plucker(cq, tag, &worker);
1153
1190
  gpr_mu_unlock(cq->mu);
1154
- const char *msg = grpc_error_string(err);
1191
+ const char* msg = grpc_error_string(err);
1155
1192
  gpr_log(GPR_ERROR, "Completion queue pluck failed: %s", msg);
1156
1193
 
1157
1194
  GRPC_ERROR_UNREF(err);
@@ -1167,21 +1204,21 @@ done:
1167
1204
  GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, &ret);
1168
1205
  GRPC_CQ_INTERNAL_UNREF(&exec_ctx, cq, "pluck");
1169
1206
  grpc_exec_ctx_finish(&exec_ctx);
1170
- GPR_ASSERT(is_finished_arg.stolen_completion == NULL);
1207
+ GPR_ASSERT(is_finished_arg.stolen_completion == nullptr);
1171
1208
 
1172
1209
  GPR_TIMER_END("grpc_completion_queue_pluck", 0);
1173
1210
 
1174
1211
  return ret;
1175
1212
  }
1176
1213
 
1177
- grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cq, void *tag,
1178
- gpr_timespec deadline, void *reserved) {
1214
+ grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, void* tag,
1215
+ gpr_timespec deadline, void* reserved) {
1179
1216
  return cq->vtable->pluck(cq, tag, deadline, reserved);
1180
1217
  }
1181
1218
 
1182
- static void cq_finish_shutdown_pluck(grpc_exec_ctx *exec_ctx,
1183
- grpc_completion_queue *cq) {
1184
- cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq);
1219
+ static void cq_finish_shutdown_pluck(grpc_exec_ctx* exec_ctx,
1220
+ grpc_completion_queue* cq) {
1221
+ cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq);
1185
1222
 
1186
1223
  GPR_ASSERT(cqd->shutdown_called);
1187
1224
  GPR_ASSERT(!gpr_atm_no_barrier_load(&cqd->shutdown));
@@ -1193,9 +1230,9 @@ static void cq_finish_shutdown_pluck(grpc_exec_ctx *exec_ctx,
1193
1230
 
1194
1231
  /* NOTE: This function is almost exactly identical to cq_shutdown_next() but
1195
1232
  * merging them is a bit tricky and probably not worth it */
1196
- static void cq_shutdown_pluck(grpc_exec_ctx *exec_ctx,
1197
- grpc_completion_queue *cq) {
1198
- cq_pluck_data *cqd = (cq_pluck_data *)DATA_FROM_CQ(cq);
1233
+ static void cq_shutdown_pluck(grpc_exec_ctx* exec_ctx,
1234
+ grpc_completion_queue* cq) {
1235
+ cq_pluck_data* cqd = (cq_pluck_data*)DATA_FROM_CQ(cq);
1199
1236
 
1200
1237
  /* Need an extra ref for cq here because:
1201
1238
  * We call cq_finish_shutdown_pluck() below, that would call pollset shutdown.
@@ -1220,7 +1257,7 @@ static void cq_shutdown_pluck(grpc_exec_ctx *exec_ctx,
1220
1257
 
1221
1258
  /* Shutdown simply drops a ref that we reserved at creation time; if we drop
1222
1259
  to zero here, then enter shutdown mode and wake up any waiters */
1223
- void grpc_completion_queue_shutdown(grpc_completion_queue *cq) {
1260
+ void grpc_completion_queue_shutdown(grpc_completion_queue* cq) {
1224
1261
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
1225
1262
  GPR_TIMER_BEGIN("grpc_completion_queue_shutdown", 0);
1226
1263
  GRPC_API_TRACE("grpc_completion_queue_shutdown(cq=%p)", 1, (cq));
@@ -1229,7 +1266,7 @@ void grpc_completion_queue_shutdown(grpc_completion_queue *cq) {
1229
1266
  GPR_TIMER_END("grpc_completion_queue_shutdown", 0);
1230
1267
  }
1231
1268
 
1232
- void grpc_completion_queue_destroy(grpc_completion_queue *cq) {
1269
+ void grpc_completion_queue_destroy(grpc_completion_queue* cq) {
1233
1270
  GRPC_API_TRACE("grpc_completion_queue_destroy(cq=%p)", 1, (cq));
1234
1271
  GPR_TIMER_BEGIN("grpc_completion_queue_destroy", 0);
1235
1272
  grpc_completion_queue_shutdown(cq);
@@ -1240,10 +1277,10 @@ void grpc_completion_queue_destroy(grpc_completion_queue *cq) {
1240
1277
  GPR_TIMER_END("grpc_completion_queue_destroy", 0);
1241
1278
  }
1242
1279
 
1243
- grpc_pollset *grpc_cq_pollset(grpc_completion_queue *cq) {
1244
- return cq->poller_vtable->can_get_pollset ? POLLSET_FROM_CQ(cq) : NULL;
1280
+ grpc_pollset* grpc_cq_pollset(grpc_completion_queue* cq) {
1281
+ return cq->poller_vtable->can_get_pollset ? POLLSET_FROM_CQ(cq) : nullptr;
1245
1282
  }
1246
1283
 
1247
- bool grpc_cq_can_listen(grpc_completion_queue *cq) {
1284
+ bool grpc_cq_can_listen(grpc_completion_queue* cq) {
1248
1285
  return cq->poller_vtable->can_listen;
1249
1286
  }