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
@@ -18,11 +18,14 @@
18
18
 
19
19
  #include "src/core/lib/iomgr/port.h"
20
20
 
21
+ #include <inttypes.h>
22
+
21
23
  #ifdef GRPC_TIMER_USE_GENERIC
22
24
 
23
25
  #include "src/core/lib/iomgr/timer.h"
24
26
 
25
27
  #include <grpc/support/alloc.h>
28
+ #include <grpc/support/cpu.h>
26
29
  #include <grpc/support/log.h>
27
30
  #include <grpc/support/string_util.h>
28
31
  #include <grpc/support/sync.h>
@@ -35,15 +38,12 @@
35
38
 
36
39
  #define INVALID_HEAP_INDEX 0xffffffffu
37
40
 
38
- #define LOG2_NUM_SHARDS 5
39
- #define NUM_SHARDS (1 << LOG2_NUM_SHARDS)
40
41
  #define ADD_DEADLINE_SCALE 0.33
41
42
  #define MIN_QUEUE_WINDOW_DURATION 0.01
42
43
  #define MAX_QUEUE_WINDOW_DURATION 1
43
44
 
44
- grpc_tracer_flag grpc_timer_trace = GRPC_TRACER_INITIALIZER(false, "timer");
45
- grpc_tracer_flag grpc_timer_check_trace =
46
- GRPC_TRACER_INITIALIZER(false, "timer_check");
45
+ grpc_core::TraceFlag grpc_timer_trace(false, "timer");
46
+ grpc_core::TraceFlag grpc_timer_check_trace(false, "timer_check");
47
47
 
48
48
  /* A "timer shard". Contains a 'heap' and a 'list' of timers. All timers with
49
49
  * deadlines earlier than 'queue_deadline" cap are maintained in the heap and
@@ -70,14 +70,16 @@ typedef struct {
70
70
  grpc_timer list;
71
71
  } timer_shard;
72
72
 
73
+ static size_t g_num_shards;
74
+
73
75
  /* Array of timer shards. Whenever a timer (grpc_timer *) is added, its address
74
76
  * is hashed to select the timer shard to add the timer to */
75
- static timer_shard g_shards[NUM_SHARDS];
77
+ static timer_shard* g_shards;
76
78
 
77
79
  /* Maintains a sorted list of timer shards (sorted by their min_deadline, i.e
78
80
  * the deadline of the next timer in each shard).
79
81
  * Access to this is protected by g_shared_mutables.mu */
80
- static timer_shard *g_shard_queue[NUM_SHARDS];
82
+ static timer_shard** g_shard_queue;
81
83
 
82
84
  #ifndef NDEBUG
83
85
 
@@ -86,7 +88,7 @@ static timer_shard *g_shard_queue[NUM_SHARDS];
86
88
  #define NUM_HASH_BUCKETS 1009 /* Prime number close to 1000 */
87
89
 
88
90
  static gpr_mu g_hash_mu[NUM_HASH_BUCKETS]; /* One mutex per bucket */
89
- static grpc_timer *g_timer_ht[NUM_HASH_BUCKETS] = {NULL};
91
+ static grpc_timer* g_timer_ht[NUM_HASH_BUCKETS] = {nullptr};
90
92
 
91
93
  static void init_timer_ht() {
92
94
  for (int i = 0; i < NUM_HASH_BUCKETS; i++) {
@@ -94,12 +96,12 @@ static void init_timer_ht() {
94
96
  }
95
97
  }
96
98
 
97
- static bool is_in_ht(grpc_timer *t) {
99
+ static bool is_in_ht(grpc_timer* t) {
98
100
  size_t i = GPR_HASH_POINTER(t, NUM_HASH_BUCKETS);
99
101
 
100
102
  gpr_mu_lock(&g_hash_mu[i]);
101
- grpc_timer *p = g_timer_ht[i];
102
- while (p != NULL && p != t) {
103
+ grpc_timer* p = g_timer_ht[i];
104
+ while (p != nullptr && p != t) {
103
105
  p = p->hash_table_next;
104
106
  }
105
107
  gpr_mu_unlock(&g_hash_mu[i]);
@@ -107,18 +109,18 @@ static bool is_in_ht(grpc_timer *t) {
107
109
  return (p == t);
108
110
  }
109
111
 
110
- static void add_to_ht(grpc_timer *t) {
112
+ static void add_to_ht(grpc_timer* t) {
111
113
  GPR_ASSERT(!t->hash_table_next);
112
114
  size_t i = GPR_HASH_POINTER(t, NUM_HASH_BUCKETS);
113
115
 
114
116
  gpr_mu_lock(&g_hash_mu[i]);
115
- grpc_timer *p = g_timer_ht[i];
116
- while (p != NULL && p != t) {
117
+ grpc_timer* p = g_timer_ht[i];
118
+ while (p != nullptr && p != t) {
117
119
  p = p->hash_table_next;
118
120
  }
119
121
 
120
122
  if (p == t) {
121
- grpc_closure *c = t->closure;
123
+ grpc_closure* c = t->closure;
122
124
  gpr_log(GPR_ERROR,
123
125
  "** Duplicate timer (%p) being added. Closure: (%p), created at: "
124
126
  "(%s:%d), scheduled at: (%s:%d) **",
@@ -133,7 +135,7 @@ static void add_to_ht(grpc_timer *t) {
133
135
  gpr_mu_unlock(&g_hash_mu[i]);
134
136
  }
135
137
 
136
- static void remove_from_ht(grpc_timer *t) {
138
+ static void remove_from_ht(grpc_timer* t) {
137
139
  size_t i = GPR_HASH_POINTER(t, NUM_HASH_BUCKETS);
138
140
  bool removed = false;
139
141
 
@@ -141,9 +143,9 @@ static void remove_from_ht(grpc_timer *t) {
141
143
  if (g_timer_ht[i] == t) {
142
144
  g_timer_ht[i] = g_timer_ht[i]->hash_table_next;
143
145
  removed = true;
144
- } else if (g_timer_ht[i] != NULL) {
145
- grpc_timer *p = g_timer_ht[i];
146
- while (p->hash_table_next != NULL && p->hash_table_next != t) {
146
+ } else if (g_timer_ht[i] != nullptr) {
147
+ grpc_timer* p = g_timer_ht[i];
148
+ while (p->hash_table_next != nullptr && p->hash_table_next != t) {
147
149
  p = p->hash_table_next;
148
150
  }
149
151
 
@@ -155,7 +157,7 @@ static void remove_from_ht(grpc_timer *t) {
155
157
  gpr_mu_unlock(&g_hash_mu[i]);
156
158
 
157
159
  if (!removed) {
158
- grpc_closure *c = t->closure;
160
+ grpc_closure* c = t->closure;
159
161
  gpr_log(GPR_ERROR,
160
162
  "** Removing timer (%p) that is not added to hash table. Closure "
161
163
  "(%p), created at: (%s:%d), scheduled at: (%s:%d) **",
@@ -164,16 +166,16 @@ static void remove_from_ht(grpc_timer *t) {
164
166
  abort();
165
167
  }
166
168
 
167
- t->hash_table_next = NULL;
169
+ t->hash_table_next = nullptr;
168
170
  }
169
171
 
170
172
  /* If a timer is added to a timer shard (either heap or a list), it cannot
171
173
  * be pending. A timer is added to hash table only-if it is added to the
172
174
  * timer shard.
173
175
  * Therefore, if timer->pending is false, it cannot be in hash table */
174
- static void validate_non_pending_timer(grpc_timer *t) {
176
+ static void validate_non_pending_timer(grpc_timer* t) {
175
177
  if (!t->pending && is_in_ht(t)) {
176
- grpc_closure *c = t->closure;
178
+ grpc_closure* c = t->closure;
177
179
  gpr_log(GPR_ERROR,
178
180
  "** gpr_timer_cancel() called on a non-pending timer (%p) which "
179
181
  "is in the hash table. Closure: (%p), created at: (%s:%d), "
@@ -216,9 +218,6 @@ struct shared_mutables {
216
218
 
217
219
  static struct shared_mutables g_shared_mutables;
218
220
 
219
- static gpr_clock_type g_clock_type;
220
- static gpr_timespec g_start_time;
221
-
222
221
  static gpr_atm saturating_add(gpr_atm a, gpr_atm b) {
223
222
  if (a > GPR_ATM_MAX - b) {
224
223
  return GPR_ATM_MAX;
@@ -226,64 +225,34 @@ static gpr_atm saturating_add(gpr_atm a, gpr_atm b) {
226
225
  return a + b;
227
226
  }
228
227
 
229
- static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx,
228
+ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx* exec_ctx,
230
229
  gpr_atm now,
231
- gpr_atm *next,
232
- grpc_error *error);
233
-
234
- static gpr_timespec dbl_to_ts(double d) {
235
- gpr_timespec ts;
236
- ts.tv_sec = (int64_t)d;
237
- ts.tv_nsec = (int32_t)(1e9 * (d - (double)ts.tv_sec));
238
- ts.clock_type = GPR_TIMESPAN;
239
- return ts;
240
- }
230
+ gpr_atm* next,
231
+ grpc_error* error);
241
232
 
242
- static gpr_atm timespec_to_atm_round_up(gpr_timespec ts) {
243
- ts = gpr_time_sub(ts, g_start_time);
244
- double x = GPR_MS_PER_SEC * (double)ts.tv_sec +
245
- (double)ts.tv_nsec / GPR_NS_PER_MS +
246
- (double)(GPR_NS_PER_SEC - 1) / (double)GPR_NS_PER_SEC;
247
- if (x < 0) return 0;
248
- if (x > GPR_ATM_MAX) return GPR_ATM_MAX;
249
- return (gpr_atm)x;
250
- }
251
-
252
- static gpr_atm timespec_to_atm_round_down(gpr_timespec ts) {
253
- ts = gpr_time_sub(ts, g_start_time);
254
- double x =
255
- GPR_MS_PER_SEC * (double)ts.tv_sec + (double)ts.tv_nsec / GPR_NS_PER_MS;
256
- if (x < 0) return 0;
257
- if (x > GPR_ATM_MAX) return GPR_ATM_MAX;
258
- return (gpr_atm)x;
259
- }
260
-
261
- static gpr_timespec atm_to_timespec(gpr_atm x) {
262
- return gpr_time_add(g_start_time, dbl_to_ts((double)x / 1000.0));
263
- }
264
-
265
- static gpr_atm compute_min_deadline(timer_shard *shard) {
233
+ static gpr_atm compute_min_deadline(timer_shard* shard) {
266
234
  return grpc_timer_heap_is_empty(&shard->heap)
267
235
  ? saturating_add(shard->queue_deadline_cap, 1)
268
236
  : grpc_timer_heap_top(&shard->heap)->deadline;
269
237
  }
270
238
 
271
- void grpc_timer_list_init(gpr_timespec now) {
239
+ void grpc_timer_list_init(grpc_exec_ctx* exec_ctx) {
272
240
  uint32_t i;
273
241
 
242
+ g_num_shards = GPR_MIN(1, 2 * gpr_cpu_num_cores());
243
+ g_shards = (timer_shard*)gpr_zalloc(g_num_shards * sizeof(*g_shards));
244
+ g_shard_queue =
245
+ (timer_shard**)gpr_zalloc(g_num_shards * sizeof(*g_shard_queue));
246
+
274
247
  g_shared_mutables.initialized = true;
275
248
  g_shared_mutables.checker_mu = GPR_SPINLOCK_INITIALIZER;
276
249
  gpr_mu_init(&g_shared_mutables.mu);
277
- g_clock_type = now.clock_type;
278
- g_start_time = now;
279
- g_shared_mutables.min_timer = timespec_to_atm_round_down(now);
250
+ g_shared_mutables.min_timer = grpc_exec_ctx_now(exec_ctx);
280
251
  gpr_tls_init(&g_last_seen_min_timer);
281
252
  gpr_tls_set(&g_last_seen_min_timer, 0);
282
- grpc_register_tracer(&grpc_timer_trace);
283
- grpc_register_tracer(&grpc_timer_check_trace);
284
253
 
285
- for (i = 0; i < NUM_SHARDS; i++) {
286
- timer_shard *shard = &g_shards[i];
254
+ for (i = 0; i < g_num_shards; i++) {
255
+ timer_shard* shard = &g_shards[i];
287
256
  gpr_mu_init(&shard->mu);
288
257
  grpc_time_averaged_stats_init(&shard->stats, 1.0 / ADD_DEADLINE_SCALE, 0.1,
289
258
  0.5);
@@ -298,39 +267,37 @@ void grpc_timer_list_init(gpr_timespec now) {
298
267
  INIT_TIMER_HASH_TABLE();
299
268
  }
300
269
 
301
- void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx) {
302
- int i;
270
+ void grpc_timer_list_shutdown(grpc_exec_ctx* exec_ctx) {
271
+ size_t i;
303
272
  run_some_expired_timers(
304
- exec_ctx, GPR_ATM_MAX, NULL,
273
+ exec_ctx, GPR_ATM_MAX, nullptr,
305
274
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Timer list shutdown"));
306
- for (i = 0; i < NUM_SHARDS; i++) {
307
- timer_shard *shard = &g_shards[i];
275
+ for (i = 0; i < g_num_shards; i++) {
276
+ timer_shard* shard = &g_shards[i];
308
277
  gpr_mu_destroy(&shard->mu);
309
278
  grpc_timer_heap_destroy(&shard->heap);
310
279
  }
311
280
  gpr_mu_destroy(&g_shared_mutables.mu);
312
281
  gpr_tls_destroy(&g_last_seen_min_timer);
282
+ gpr_free(g_shards);
283
+ gpr_free(g_shard_queue);
313
284
  g_shared_mutables.initialized = false;
314
285
  }
315
286
 
316
- static double ts_to_dbl(gpr_timespec ts) {
317
- return (double)ts.tv_sec + 1e-9 * ts.tv_nsec;
318
- }
319
-
320
287
  /* returns true if the first element in the list */
321
- static void list_join(grpc_timer *head, grpc_timer *timer) {
288
+ static void list_join(grpc_timer* head, grpc_timer* timer) {
322
289
  timer->next = head;
323
290
  timer->prev = head->prev;
324
291
  timer->next->prev = timer->prev->next = timer;
325
292
  }
326
293
 
327
- static void list_remove(grpc_timer *timer) {
294
+ static void list_remove(grpc_timer* timer) {
328
295
  timer->next->prev = timer->prev;
329
296
  timer->prev->next = timer->next;
330
297
  }
331
298
 
332
299
  static void swap_adjacent_shards_in_queue(uint32_t first_shard_queue_index) {
333
- timer_shard *temp;
300
+ timer_shard* temp;
334
301
  temp = g_shard_queue[first_shard_queue_index];
335
302
  g_shard_queue[first_shard_queue_index] =
336
303
  g_shard_queue[first_shard_queue_index + 1];
@@ -341,40 +308,36 @@ static void swap_adjacent_shards_in_queue(uint32_t first_shard_queue_index) {
341
308
  first_shard_queue_index + 1;
342
309
  }
343
310
 
344
- static void note_deadline_change(timer_shard *shard) {
311
+ static void note_deadline_change(timer_shard* shard) {
345
312
  while (shard->shard_queue_index > 0 &&
346
313
  shard->min_deadline <
347
314
  g_shard_queue[shard->shard_queue_index - 1]->min_deadline) {
348
315
  swap_adjacent_shards_in_queue(shard->shard_queue_index - 1);
349
316
  }
350
- while (shard->shard_queue_index < NUM_SHARDS - 1 &&
317
+ while (shard->shard_queue_index < g_num_shards - 1 &&
351
318
  shard->min_deadline >
352
319
  g_shard_queue[shard->shard_queue_index + 1]->min_deadline) {
353
320
  swap_adjacent_shards_in_queue(shard->shard_queue_index);
354
321
  }
355
322
  }
356
323
 
357
- void grpc_timer_init_unset(grpc_timer *timer) { timer->pending = false; }
324
+ void grpc_timer_init_unset(grpc_timer* timer) { timer->pending = false; }
358
325
 
359
- void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
360
- gpr_timespec deadline, grpc_closure *closure,
361
- gpr_timespec now) {
326
+ void grpc_timer_init(grpc_exec_ctx* exec_ctx, grpc_timer* timer,
327
+ grpc_millis deadline, grpc_closure* closure) {
362
328
  int is_first_timer = 0;
363
- timer_shard *shard = &g_shards[GPR_HASH_POINTER(timer, NUM_SHARDS)];
364
- GPR_ASSERT(deadline.clock_type == g_clock_type);
365
- GPR_ASSERT(now.clock_type == g_clock_type);
329
+ timer_shard* shard = &g_shards[GPR_HASH_POINTER(timer, g_num_shards)];
366
330
  timer->closure = closure;
367
- gpr_atm deadline_atm = timer->deadline = timespec_to_atm_round_up(deadline);
331
+ timer->deadline = deadline;
368
332
 
369
333
  #ifndef NDEBUG
370
- timer->hash_table_next = NULL;
334
+ timer->hash_table_next = nullptr;
371
335
  #endif
372
336
 
373
- if (GRPC_TRACER_ON(grpc_timer_trace)) {
374
- gpr_log(GPR_DEBUG, "TIMER %p: SET %" PRId64 ".%09d [%" PRIdPTR
375
- "] now %" PRId64 ".%09d [%" PRIdPTR "] call %p[%p]",
376
- timer, deadline.tv_sec, deadline.tv_nsec, deadline_atm, now.tv_sec,
377
- now.tv_nsec, timespec_to_atm_round_down(now), closure, closure->cb);
337
+ if (grpc_timer_trace.enabled()) {
338
+ gpr_log(GPR_DEBUG,
339
+ "TIMER %p: SET %" PRIdPTR " now %" PRIdPTR " call %p[%p]", timer,
340
+ deadline, grpc_exec_ctx_now(exec_ctx), closure, closure->cb);
378
341
  }
379
342
 
380
343
  if (!g_shared_mutables.initialized) {
@@ -387,7 +350,8 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
387
350
 
388
351
  gpr_mu_lock(&shard->mu);
389
352
  timer->pending = true;
390
- if (gpr_time_cmp(deadline, now) <= 0) {
353
+ grpc_millis now = grpc_exec_ctx_now(exec_ctx);
354
+ if (deadline <= now) {
391
355
  timer->pending = false;
392
356
  GRPC_CLOSURE_SCHED(exec_ctx, timer->closure, GRPC_ERROR_NONE);
393
357
  gpr_mu_unlock(&shard->mu);
@@ -396,19 +360,20 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
396
360
  }
397
361
 
398
362
  grpc_time_averaged_stats_add_sample(&shard->stats,
399
- ts_to_dbl(gpr_time_sub(deadline, now)));
363
+ (double)(deadline - now) / 1000.0);
400
364
 
401
365
  ADD_TO_HASH_TABLE(timer);
402
366
 
403
- if (deadline_atm < shard->queue_deadline_cap) {
367
+ if (deadline < shard->queue_deadline_cap) {
404
368
  is_first_timer = grpc_timer_heap_add(&shard->heap, timer);
405
369
  } else {
406
370
  timer->heap_index = INVALID_HEAP_INDEX;
407
371
  list_join(&shard->list, timer);
408
372
  }
409
- if (GRPC_TRACER_ON(grpc_timer_trace)) {
410
- gpr_log(GPR_DEBUG, " .. add to shard %d with queue_deadline_cap=%" PRIdPTR
411
- " => is_first_timer=%s",
373
+ if (grpc_timer_trace.enabled()) {
374
+ gpr_log(GPR_DEBUG,
375
+ " .. add to shard %d with queue_deadline_cap=%" PRIdPTR
376
+ " => is_first_timer=%s",
412
377
  (int)(shard - g_shards), shard->queue_deadline_cap,
413
378
  is_first_timer ? "true" : "false");
414
379
  }
@@ -427,16 +392,16 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
427
392
  grpc_timer_check. */
428
393
  if (is_first_timer) {
429
394
  gpr_mu_lock(&g_shared_mutables.mu);
430
- if (GRPC_TRACER_ON(grpc_timer_trace)) {
395
+ if (grpc_timer_trace.enabled()) {
431
396
  gpr_log(GPR_DEBUG, " .. old shard min_deadline=%" PRIdPTR,
432
397
  shard->min_deadline);
433
398
  }
434
- if (deadline_atm < shard->min_deadline) {
399
+ if (deadline < shard->min_deadline) {
435
400
  gpr_atm old_min_deadline = g_shard_queue[0]->min_deadline;
436
- shard->min_deadline = deadline_atm;
401
+ shard->min_deadline = deadline;
437
402
  note_deadline_change(shard);
438
- if (shard->shard_queue_index == 0 && deadline_atm < old_min_deadline) {
439
- gpr_atm_no_barrier_store(&g_shared_mutables.min_timer, deadline_atm);
403
+ if (shard->shard_queue_index == 0 && deadline < old_min_deadline) {
404
+ gpr_atm_no_barrier_store(&g_shared_mutables.min_timer, deadline);
440
405
  grpc_kick_poller();
441
406
  }
442
407
  }
@@ -449,15 +414,15 @@ void grpc_timer_consume_kick(void) {
449
414
  gpr_tls_set(&g_last_seen_min_timer, 0);
450
415
  }
451
416
 
452
- void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) {
417
+ void grpc_timer_cancel(grpc_exec_ctx* exec_ctx, grpc_timer* timer) {
453
418
  if (!g_shared_mutables.initialized) {
454
419
  /* must have already been cancelled, also the shard mutex is invalid */
455
420
  return;
456
421
  }
457
422
 
458
- timer_shard *shard = &g_shards[GPR_HASH_POINTER(timer, NUM_SHARDS)];
423
+ timer_shard* shard = &g_shards[GPR_HASH_POINTER(timer, g_num_shards)];
459
424
  gpr_mu_lock(&shard->mu);
460
- if (GRPC_TRACER_ON(grpc_timer_trace)) {
425
+ if (grpc_timer_trace.enabled()) {
461
426
  gpr_log(GPR_DEBUG, "TIMER %p: CANCEL pending=%s", timer,
462
427
  timer->pending ? "true" : "false");
463
428
  }
@@ -483,7 +448,7 @@ void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) {
483
448
  'queue_deadline_cap') into into shard->heap.
484
449
  Returns 'true' if shard->heap has atleast ONE element
485
450
  REQUIRES: shard->mu locked */
486
- static int refill_heap(timer_shard *shard, gpr_atm now) {
451
+ static int refill_heap(timer_shard* shard, gpr_atm now) {
487
452
  /* Compute the new queue window width and bound by the limits: */
488
453
  double computed_deadline_delta =
489
454
  grpc_time_averaged_stats_update_average(&shard->stats) *
@@ -498,7 +463,7 @@ static int refill_heap(timer_shard *shard, gpr_atm now) {
498
463
  saturating_add(GPR_MAX(now, shard->queue_deadline_cap),
499
464
  (gpr_atm)(deadline_delta * 1000.0));
500
465
 
501
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
466
+ if (grpc_timer_check_trace.enabled()) {
502
467
  gpr_log(GPR_DEBUG, " .. shard[%d]->queue_deadline_cap --> %" PRIdPTR,
503
468
  (int)(shard - g_shards), shard->queue_deadline_cap);
504
469
  }
@@ -506,7 +471,7 @@ static int refill_heap(timer_shard *shard, gpr_atm now) {
506
471
  next = timer->next;
507
472
 
508
473
  if (timer->deadline < shard->queue_deadline_cap) {
509
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
474
+ if (grpc_timer_check_trace.enabled()) {
510
475
  gpr_log(GPR_DEBUG, " .. add timer with deadline %" PRIdPTR " to heap",
511
476
  timer->deadline);
512
477
  }
@@ -520,28 +485,29 @@ static int refill_heap(timer_shard *shard, gpr_atm now) {
520
485
  /* This pops the next non-cancelled timer with deadline <= now from the
521
486
  queue, or returns NULL if there isn't one.
522
487
  REQUIRES: shard->mu locked */
523
- static grpc_timer *pop_one(timer_shard *shard, gpr_atm now) {
524
- grpc_timer *timer;
488
+ static grpc_timer* pop_one(timer_shard* shard, gpr_atm now) {
489
+ grpc_timer* timer;
525
490
  for (;;) {
526
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
491
+ if (grpc_timer_check_trace.enabled()) {
527
492
  gpr_log(GPR_DEBUG, " .. shard[%d]: heap_empty=%s",
528
493
  (int)(shard - g_shards),
529
494
  grpc_timer_heap_is_empty(&shard->heap) ? "true" : "false");
530
495
  }
531
496
  if (grpc_timer_heap_is_empty(&shard->heap)) {
532
- if (now < shard->queue_deadline_cap) return NULL;
533
- if (!refill_heap(shard, now)) return NULL;
497
+ if (now < shard->queue_deadline_cap) return nullptr;
498
+ if (!refill_heap(shard, now)) return nullptr;
534
499
  }
535
500
  timer = grpc_timer_heap_top(&shard->heap);
536
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
501
+ if (grpc_timer_check_trace.enabled()) {
537
502
  gpr_log(GPR_DEBUG,
538
503
  " .. check top timer deadline=%" PRIdPTR " now=%" PRIdPTR,
539
504
  timer->deadline, now);
540
505
  }
541
- if (timer->deadline > now) return NULL;
542
- if (GRPC_TRACER_ON(grpc_timer_trace)) {
543
- gpr_log(GPR_DEBUG, "TIMER %p: FIRE %" PRIdPTR "ms late", timer,
544
- now - timer->deadline);
506
+ if (timer->deadline > now) return nullptr;
507
+ if (grpc_timer_trace.enabled()) {
508
+ gpr_log(GPR_DEBUG, "TIMER %p: FIRE %" PRIdPTR "ms late via %s scheduler",
509
+ timer, now - timer->deadline,
510
+ timer->closure->scheduler->vtable->name);
545
511
  }
546
512
  timer->pending = false;
547
513
  grpc_timer_heap_pop(&shard->heap);
@@ -550,11 +516,11 @@ static grpc_timer *pop_one(timer_shard *shard, gpr_atm now) {
550
516
  }
551
517
 
552
518
  /* REQUIRES: shard->mu unlocked */
553
- static size_t pop_timers(grpc_exec_ctx *exec_ctx, timer_shard *shard,
554
- gpr_atm now, gpr_atm *new_min_deadline,
555
- grpc_error *error) {
519
+ static size_t pop_timers(grpc_exec_ctx* exec_ctx, timer_shard* shard,
520
+ gpr_atm now, gpr_atm* new_min_deadline,
521
+ grpc_error* error) {
556
522
  size_t n = 0;
557
- grpc_timer *timer;
523
+ grpc_timer* timer;
558
524
  gpr_mu_lock(&shard->mu);
559
525
  while ((timer = pop_one(shard, now))) {
560
526
  REMOVE_FROM_HASH_TABLE(timer);
@@ -563,19 +529,23 @@ static size_t pop_timers(grpc_exec_ctx *exec_ctx, timer_shard *shard,
563
529
  }
564
530
  *new_min_deadline = compute_min_deadline(shard);
565
531
  gpr_mu_unlock(&shard->mu);
532
+ if (grpc_timer_check_trace.enabled()) {
533
+ gpr_log(GPR_DEBUG, " .. shard[%d] popped %" PRIdPTR,
534
+ (int)(shard - g_shards), n);
535
+ }
566
536
  return n;
567
537
  }
568
538
 
569
- static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx,
539
+ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx* exec_ctx,
570
540
  gpr_atm now,
571
- gpr_atm *next,
572
- grpc_error *error) {
541
+ gpr_atm* next,
542
+ grpc_error* error) {
573
543
  grpc_timer_check_result result = GRPC_TIMERS_NOT_CHECKED;
574
544
 
575
545
  gpr_atm min_timer = gpr_atm_no_barrier_load(&g_shared_mutables.min_timer);
576
546
  gpr_tls_set(&g_last_seen_min_timer, min_timer);
577
547
  if (now < min_timer) {
578
- if (next != NULL) *next = GPR_MIN(*next, min_timer);
548
+ if (next != nullptr) *next = GPR_MIN(*next, min_timer);
579
549
  return GRPC_TIMERS_CHECKED_AND_EMPTY;
580
550
  }
581
551
 
@@ -583,7 +553,7 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx,
583
553
  gpr_mu_lock(&g_shared_mutables.mu);
584
554
  result = GRPC_TIMERS_CHECKED_AND_EMPTY;
585
555
 
586
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
556
+ if (grpc_timer_check_trace.enabled()) {
587
557
  gpr_log(GPR_DEBUG, " .. shard[%d]->min_deadline = %" PRIdPTR,
588
558
  (int)(g_shard_queue[0] - g_shards),
589
559
  g_shard_queue[0]->min_deadline);
@@ -601,7 +571,7 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx,
601
571
  result = GRPC_TIMERS_FIRED;
602
572
  }
603
573
 
604
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
574
+ if (grpc_timer_check_trace.enabled()) {
605
575
  gpr_log(GPR_DEBUG,
606
576
  " .. result --> %d"
607
577
  ", shard[%d]->min_deadline %" PRIdPTR " --> %" PRIdPTR
@@ -634,67 +604,56 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx,
634
604
  return result;
635
605
  }
636
606
 
637
- grpc_timer_check_result grpc_timer_check(grpc_exec_ctx *exec_ctx,
638
- gpr_timespec now, gpr_timespec *next) {
607
+ grpc_timer_check_result grpc_timer_check(grpc_exec_ctx* exec_ctx,
608
+ grpc_millis* next) {
639
609
  // prelude
640
- GPR_ASSERT(now.clock_type == g_clock_type);
641
- gpr_atm now_atm = timespec_to_atm_round_down(now);
610
+ grpc_millis now = grpc_exec_ctx_now(exec_ctx);
642
611
 
643
612
  /* fetch from a thread-local first: this avoids contention on a globally
644
613
  mutable cacheline in the common case */
645
- gpr_atm min_timer = gpr_tls_get(&g_last_seen_min_timer);
646
- if (now_atm < min_timer) {
647
- if (next != NULL) {
648
- *next =
649
- atm_to_timespec(GPR_MIN(timespec_to_atm_round_up(*next), min_timer));
614
+ grpc_millis min_timer = gpr_tls_get(&g_last_seen_min_timer);
615
+ if (now < min_timer) {
616
+ if (next != nullptr) {
617
+ *next = GPR_MIN(*next, min_timer);
650
618
  }
651
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
619
+ if (grpc_timer_check_trace.enabled()) {
652
620
  gpr_log(GPR_DEBUG,
653
- "TIMER CHECK SKIP: now_atm=%" PRIdPTR " min_timer=%" PRIdPTR,
654
- now_atm, min_timer);
621
+ "TIMER CHECK SKIP: now=%" PRIdPTR " min_timer=%" PRIdPTR, now,
622
+ min_timer);
655
623
  }
656
624
  return GRPC_TIMERS_CHECKED_AND_EMPTY;
657
625
  }
658
626
 
659
- grpc_error *shutdown_error =
660
- gpr_time_cmp(now, gpr_inf_future(now.clock_type)) != 0
627
+ grpc_error* shutdown_error =
628
+ now != GRPC_MILLIS_INF_FUTURE
661
629
  ? GRPC_ERROR_NONE
662
630
  : GRPC_ERROR_CREATE_FROM_STATIC_STRING("Shutting down timer system");
663
631
 
664
632
  // tracing
665
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
666
- char *next_str;
667
- if (next == NULL) {
633
+ if (grpc_timer_check_trace.enabled()) {
634
+ char* next_str;
635
+ if (next == nullptr) {
668
636
  next_str = gpr_strdup("NULL");
669
637
  } else {
670
- gpr_asprintf(&next_str, "%" PRId64 ".%09d [%" PRIdPTR "]", next->tv_sec,
671
- next->tv_nsec, timespec_to_atm_round_down(*next));
638
+ gpr_asprintf(&next_str, "%" PRIdPTR, *next);
672
639
  }
673
- gpr_log(GPR_DEBUG, "TIMER CHECK BEGIN: now=%" PRId64 ".%09d [%" PRIdPTR
674
- "] next=%s tls_min=%" PRIdPTR " glob_min=%" PRIdPTR,
675
- now.tv_sec, now.tv_nsec, now_atm, next_str,
676
- gpr_tls_get(&g_last_seen_min_timer),
640
+ gpr_log(GPR_DEBUG,
641
+ "TIMER CHECK BEGIN: now=%" PRIdPTR " next=%s tls_min=%" PRIdPTR
642
+ " glob_min=%" PRIdPTR,
643
+ now, next_str, gpr_tls_get(&g_last_seen_min_timer),
677
644
  gpr_atm_no_barrier_load(&g_shared_mutables.min_timer));
678
645
  gpr_free(next_str);
679
646
  }
680
647
  // actual code
681
- grpc_timer_check_result r;
682
- gpr_atm next_atm;
683
- if (next == NULL) {
684
- r = run_some_expired_timers(exec_ctx, now_atm, NULL, shutdown_error);
685
- } else {
686
- next_atm = timespec_to_atm_round_down(*next);
687
- r = run_some_expired_timers(exec_ctx, now_atm, &next_atm, shutdown_error);
688
- *next = atm_to_timespec(next_atm);
689
- }
648
+ grpc_timer_check_result r =
649
+ run_some_expired_timers(exec_ctx, now, next, shutdown_error);
690
650
  // tracing
691
- if (GRPC_TRACER_ON(grpc_timer_check_trace)) {
692
- char *next_str;
693
- if (next == NULL) {
651
+ if (grpc_timer_check_trace.enabled()) {
652
+ char* next_str;
653
+ if (next == nullptr) {
694
654
  next_str = gpr_strdup("NULL");
695
655
  } else {
696
- gpr_asprintf(&next_str, "%" PRId64 ".%09d [%" PRIdPTR "]", next->tv_sec,
697
- next->tv_nsec, next_atm);
656
+ gpr_asprintf(&next_str, "%" PRIdPTR, *next);
698
657
  }
699
658
  gpr_log(GPR_DEBUG, "TIMER CHECK END: r=%d; next=%s", r, next_str);
700
659
  gpr_free(next_str);