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
@@ -27,10 +27,14 @@
27
27
  /* Maximum length of a header string of the form 'Key: Value\r\n' */
28
28
  #define GRPC_HTTP_PARSER_MAX_HEADER_LENGTH 4096
29
29
 
30
+ #ifdef __cplusplus
31
+ extern "C" {
32
+ #endif
33
+
30
34
  /* A single header to be passed in a request */
31
35
  typedef struct grpc_http_header {
32
- char *key;
33
- char *value;
36
+ char* key;
37
+ char* value;
34
38
  } grpc_http_header;
35
39
 
36
40
  typedef enum {
@@ -53,17 +57,17 @@ typedef enum {
53
57
  /* A request */
54
58
  typedef struct grpc_http_request {
55
59
  /* Method of the request (e.g. GET, POST) */
56
- char *method;
60
+ char* method;
57
61
  /* The path of the resource to fetch */
58
- char *path;
62
+ char* path;
59
63
  /* HTTP version to use */
60
64
  grpc_http_version version;
61
65
  /* Headers attached to the request */
62
66
  size_t hdr_count;
63
- grpc_http_header *hdrs;
67
+ grpc_http_header* hdrs;
64
68
  /* Body: length and contents; contents are NOT null-terminated */
65
69
  size_t body_length;
66
- char *body;
70
+ char* body;
67
71
  } grpc_http_request;
68
72
 
69
73
  /* A response */
@@ -72,10 +76,10 @@ typedef struct grpc_http_response {
72
76
  int status;
73
77
  /* Headers: count and key/values */
74
78
  size_t hdr_count;
75
- grpc_http_header *hdrs;
79
+ grpc_http_header* hdrs;
76
80
  /* Body: length and contents; contents are NOT null-terminated */
77
81
  size_t body_length;
78
- char *body;
82
+ char* body;
79
83
  } grpc_http_response;
80
84
 
81
85
  typedef struct {
@@ -83,9 +87,9 @@ typedef struct {
83
87
  grpc_http_type type;
84
88
 
85
89
  union {
86
- grpc_http_response *response;
87
- grpc_http_request *request;
88
- void *request_or_response;
90
+ grpc_http_response* response;
91
+ grpc_http_request* request;
92
+ void* request_or_response;
89
93
  } http;
90
94
  size_t body_capacity;
91
95
  size_t hdr_capacity;
@@ -95,18 +99,22 @@ typedef struct {
95
99
  size_t cur_line_end_length;
96
100
  } grpc_http_parser;
97
101
 
98
- void grpc_http_parser_init(grpc_http_parser *parser, grpc_http_type type,
99
- void *request_or_response);
100
- void grpc_http_parser_destroy(grpc_http_parser *parser);
102
+ void grpc_http_parser_init(grpc_http_parser* parser, grpc_http_type type,
103
+ void* request_or_response);
104
+ void grpc_http_parser_destroy(grpc_http_parser* parser);
101
105
 
102
106
  /* Sets \a start_of_body to the offset in \a slice of the start of the body. */
103
- grpc_error *grpc_http_parser_parse(grpc_http_parser *parser, grpc_slice slice,
104
- size_t *start_of_body);
105
- grpc_error *grpc_http_parser_eof(grpc_http_parser *parser);
107
+ grpc_error* grpc_http_parser_parse(grpc_http_parser* parser, grpc_slice slice,
108
+ size_t* start_of_body);
109
+ grpc_error* grpc_http_parser_eof(grpc_http_parser* parser);
110
+
111
+ void grpc_http_request_destroy(grpc_http_request* request);
112
+ void grpc_http_response_destroy(grpc_http_response* response);
106
113
 
107
- void grpc_http_request_destroy(grpc_http_request *request);
108
- void grpc_http_response_destroy(grpc_http_response *response);
114
+ extern grpc_core::TraceFlag grpc_http1_trace;
109
115
 
110
- extern grpc_tracer_flag grpc_http1_trace;
116
+ #ifdef __cplusplus
117
+ }
118
+ #endif
111
119
 
112
120
  #endif /* GRPC_CORE_LIB_HTTP_PARSER_H */
@@ -16,8 +16,8 @@
16
16
  *
17
17
  */
18
18
 
19
- #ifndef GRPC_CORE_LIB_SUPPORT_BLOCK_ANNOTATE_H
20
- #define GRPC_CORE_LIB_SUPPORT_BLOCK_ANNOTATE_H
19
+ #ifndef GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H
20
+ #define GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H
21
21
 
22
22
  #ifdef __cplusplus
23
23
  extern "C" {
@@ -39,17 +39,26 @@ void gpr_thd_end_blocking_region();
39
39
  do { \
40
40
  gpr_thd_start_blocking_region(); \
41
41
  } while (0)
42
- #define GRPC_SCHEDULING_END_BLOCKING_REGION \
43
- do { \
44
- gpr_thd_end_blocking_region(); \
42
+ #define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \
43
+ do { \
44
+ gpr_thd_end_blocking_region(); \
45
+ } while (0)
46
+ #define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(ec) \
47
+ do { \
48
+ gpr_thd_end_blocking_region(); \
49
+ grpc_exec_ctx_invalidate_now((ec)); \
45
50
  } while (0)
46
51
  #else
47
52
  #define GRPC_SCHEDULING_START_BLOCKING_REGION \
48
53
  do { \
49
54
  } while (0)
50
- #define GRPC_SCHEDULING_END_BLOCKING_REGION \
51
- do { \
55
+ #define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \
56
+ do { \
57
+ } while (0)
58
+ #define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(ec) \
59
+ do { \
60
+ grpc_exec_ctx_invalidate_now((ec)); \
52
61
  } while (0)
53
62
  #endif
54
63
 
55
- #endif /* GRPC_CORE_LIB_SUPPORT_BLOCK_ANNOTATE_H */
64
+ #endif /* GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H */
@@ -18,10 +18,13 @@
18
18
 
19
19
  #include "src/core/lib/iomgr/call_combiner.h"
20
20
 
21
+ #include <inttypes.h>
22
+
21
23
  #include <grpc/support/log.h>
24
+ #include "src/core/lib/debug/stats.h"
25
+ #include "src/core/lib/profiling/timers.h"
22
26
 
23
- grpc_tracer_flag grpc_call_combiner_trace =
24
- GRPC_TRACER_INITIALIZER(false, "call_combiner");
27
+ grpc_core::TraceFlag grpc_call_combiner_trace(false, "call_combiner");
25
28
 
26
29
  static grpc_error* decode_cancel_state_error(gpr_atm cancel_state) {
27
30
  if (cancel_state & 1) {
@@ -58,7 +61,8 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
58
61
  grpc_closure* closure,
59
62
  grpc_error* error DEBUG_ARGS,
60
63
  const char* reason) {
61
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
64
+ GPR_TIMER_BEGIN("call_combiner_start", 0);
65
+ if (grpc_call_combiner_trace.enabled()) {
62
66
  gpr_log(GPR_DEBUG,
63
67
  "==> grpc_call_combiner_start() [%p] closure=%p [" DEBUG_FMT_STR
64
68
  "%s] error=%s",
@@ -67,72 +71,79 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
67
71
  }
68
72
  size_t prev_size =
69
73
  (size_t)gpr_atm_full_fetch_add(&call_combiner->size, (gpr_atm)1);
70
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
74
+ if (grpc_call_combiner_trace.enabled()) {
71
75
  gpr_log(GPR_DEBUG, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size,
72
76
  prev_size + 1);
73
77
  }
78
+ GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS(exec_ctx);
74
79
  if (prev_size == 0) {
75
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
80
+ GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED(exec_ctx);
81
+ GPR_TIMER_MARK("call_combiner_initiate", 0);
82
+ if (grpc_call_combiner_trace.enabled()) {
76
83
  gpr_log(GPR_DEBUG, " EXECUTING IMMEDIATELY");
77
84
  }
78
85
  // Queue was empty, so execute this closure immediately.
79
86
  GRPC_CLOSURE_SCHED(exec_ctx, closure, error);
80
87
  } else {
81
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
88
+ if (grpc_call_combiner_trace.enabled()) {
82
89
  gpr_log(GPR_INFO, " QUEUING");
83
90
  }
84
91
  // Queue was not empty, so add closure to queue.
85
92
  closure->error_data.error = error;
86
93
  gpr_mpscq_push(&call_combiner->queue, (gpr_mpscq_node*)closure);
87
94
  }
95
+ GPR_TIMER_END("call_combiner_start", 0);
88
96
  }
89
97
 
90
98
  void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx,
91
99
  grpc_call_combiner* call_combiner DEBUG_ARGS,
92
100
  const char* reason) {
93
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
101
+ GPR_TIMER_BEGIN("call_combiner_stop", 0);
102
+ if (grpc_call_combiner_trace.enabled()) {
94
103
  gpr_log(GPR_DEBUG,
95
104
  "==> grpc_call_combiner_stop() [%p] [" DEBUG_FMT_STR "%s]",
96
105
  call_combiner DEBUG_FMT_ARGS, reason);
97
106
  }
98
107
  size_t prev_size =
99
108
  (size_t)gpr_atm_full_fetch_add(&call_combiner->size, (gpr_atm)-1);
100
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
109
+ if (grpc_call_combiner_trace.enabled()) {
101
110
  gpr_log(GPR_DEBUG, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size,
102
111
  prev_size - 1);
103
112
  }
104
113
  GPR_ASSERT(prev_size >= 1);
105
114
  if (prev_size > 1) {
106
115
  while (true) {
107
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
116
+ if (grpc_call_combiner_trace.enabled()) {
108
117
  gpr_log(GPR_DEBUG, " checking queue");
109
118
  }
110
119
  bool empty;
111
120
  grpc_closure* closure = (grpc_closure*)gpr_mpscq_pop_and_check_end(
112
121
  &call_combiner->queue, &empty);
113
- if (closure == NULL) {
122
+ if (closure == nullptr) {
114
123
  // This can happen either due to a race condition within the mpscq
115
124
  // code or because of a race with grpc_call_combiner_start().
116
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
125
+ if (grpc_call_combiner_trace.enabled()) {
117
126
  gpr_log(GPR_DEBUG, " queue returned no result; checking again");
118
127
  }
119
128
  continue;
120
129
  }
121
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
130
+ if (grpc_call_combiner_trace.enabled()) {
122
131
  gpr_log(GPR_DEBUG, " EXECUTING FROM QUEUE: closure=%p error=%s",
123
132
  closure, grpc_error_string(closure->error_data.error));
124
133
  }
125
134
  GRPC_CLOSURE_SCHED(exec_ctx, closure, closure->error_data.error);
126
135
  break;
127
136
  }
128
- } else if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
137
+ } else if (grpc_call_combiner_trace.enabled()) {
129
138
  gpr_log(GPR_DEBUG, " queue empty");
130
139
  }
140
+ GPR_TIMER_END("call_combiner_stop", 0);
131
141
  }
132
142
 
133
143
  void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
134
144
  grpc_call_combiner* call_combiner,
135
145
  grpc_closure* closure) {
146
+ GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL(exec_ctx);
136
147
  while (true) {
137
148
  // Decode original state.
138
149
  gpr_atm original_state = gpr_atm_acq_load(&call_combiner->cancel_state);
@@ -140,7 +151,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
140
151
  // If error is set, invoke the cancellation closure immediately.
141
152
  // Otherwise, store the new closure.
142
153
  if (original_error != GRPC_ERROR_NONE) {
143
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
154
+ if (grpc_call_combiner_trace.enabled()) {
144
155
  gpr_log(GPR_DEBUG,
145
156
  "call_combiner=%p: scheduling notify_on_cancel callback=%p "
146
157
  "for pre-existing cancellation",
@@ -151,7 +162,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
151
162
  } else {
152
163
  if (gpr_atm_full_cas(&call_combiner->cancel_state, original_state,
153
164
  (gpr_atm)closure)) {
154
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
165
+ if (grpc_call_combiner_trace.enabled()) {
155
166
  gpr_log(GPR_DEBUG, "call_combiner=%p: setting notify_on_cancel=%p",
156
167
  call_combiner, closure);
157
168
  }
@@ -160,7 +171,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
160
171
  // up any resources they may be holding for the callback.
161
172
  if (original_state != 0) {
162
173
  closure = (grpc_closure*)original_state;
163
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
174
+ if (grpc_call_combiner_trace.enabled()) {
164
175
  gpr_log(GPR_DEBUG,
165
176
  "call_combiner=%p: scheduling old cancel callback=%p",
166
177
  call_combiner, closure);
@@ -177,6 +188,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
177
188
  void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx,
178
189
  grpc_call_combiner* call_combiner,
179
190
  grpc_error* error) {
191
+ GRPC_STATS_INC_CALL_COMBINER_CANCELLED(exec_ctx);
180
192
  while (true) {
181
193
  gpr_atm original_state = gpr_atm_acq_load(&call_combiner->cancel_state);
182
194
  grpc_error* original_error = decode_cancel_state_error(original_state);
@@ -188,7 +200,7 @@ void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx,
188
200
  encode_cancel_state_error(error))) {
189
201
  if (original_state != 0) {
190
202
  grpc_closure* notify_on_cancel = (grpc_closure*)original_state;
191
- if (GRPC_TRACER_ON(grpc_call_combiner_trace)) {
203
+ if (grpc_call_combiner_trace.enabled()) {
192
204
  gpr_log(GPR_DEBUG,
193
205
  "call_combiner=%p: scheduling notify_on_cancel callback=%p",
194
206
  call_combiner, notify_on_cancel);
@@ -27,6 +27,10 @@
27
27
  #include "src/core/lib/iomgr/exec_ctx.h"
28
28
  #include "src/core/lib/support/mpscq.h"
29
29
 
30
+ #ifdef __cplusplus
31
+ extern "C" {
32
+ #endif
33
+
30
34
  // A simple, lock-free mechanism for serializing activity related to a
31
35
  // single call. This is similar to a combiner but is more lightweight.
32
36
  //
@@ -36,7 +40,7 @@
36
40
  // when it is done with the action that was kicked off by the original
37
41
  // callback.
38
42
 
39
- extern grpc_tracer_flag grpc_call_combiner_trace;
43
+ extern grpc_core::TraceFlag grpc_call_combiner_trace;
40
44
 
41
45
  typedef struct {
42
46
  gpr_atm size; // size_t, num closures in queue or currently executing
@@ -118,4 +122,8 @@ void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx,
118
122
  grpc_call_combiner* call_combiner,
119
123
  grpc_error* error);
120
124
 
125
+ #ifdef __cplusplus
126
+ }
127
+ #endif
128
+
121
129
  #endif /* GRPC_CORE_LIB_IOMGR_CALL_COMBINER_H */
@@ -21,25 +21,23 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <assert.h>
24
25
  #include <grpc/impl/codegen/exec_ctx_fwd.h>
26
+ #include <grpc/support/alloc.h>
27
+ #include <grpc/support/log.h>
25
28
  #include <stdbool.h>
26
29
  #include "src/core/lib/iomgr/error.h"
30
+ #include "src/core/lib/profiling/timers.h"
27
31
  #include "src/core/lib/support/mpscq.h"
28
32
 
29
- #ifdef __cplusplus
30
- extern "C" {
31
- #endif
32
-
33
33
  struct grpc_closure;
34
34
  typedef struct grpc_closure grpc_closure;
35
35
 
36
- #ifndef NDEBUG
37
- extern grpc_tracer_flag grpc_trace_closure;
38
- #endif
36
+ extern grpc_core::DebugOnlyTraceFlag grpc_trace_closure;
39
37
 
40
38
  typedef struct grpc_closure_list {
41
- grpc_closure *head;
42
- grpc_closure *tail;
39
+ grpc_closure* head;
40
+ grpc_closure* tail;
43
41
  } grpc_closure_list;
44
42
 
45
43
  /** gRPC Callback definition.
@@ -49,24 +47,24 @@ typedef struct grpc_closure_list {
49
47
  * describing what went wrong.
50
48
  * Error contract: it is not the cb's job to unref this error;
51
49
  * the closure scheduler will do that after the cb returns */
52
- typedef void (*grpc_iomgr_cb_func)(grpc_exec_ctx *exec_ctx, void *arg,
53
- grpc_error *error);
50
+ typedef void (*grpc_iomgr_cb_func)(grpc_exec_ctx* exec_ctx, void* arg,
51
+ grpc_error* error);
54
52
 
55
53
  typedef struct grpc_closure_scheduler grpc_closure_scheduler;
56
54
 
57
55
  typedef struct grpc_closure_scheduler_vtable {
58
56
  /* NOTE: for all these functions, closure->scheduler == the scheduler that was
59
57
  used to find this vtable */
60
- void (*run)(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
61
- grpc_error *error);
62
- void (*sched)(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
63
- grpc_error *error);
64
- const char *name;
58
+ void (*run)(grpc_exec_ctx* exec_ctx, grpc_closure* closure,
59
+ grpc_error* error);
60
+ void (*sched)(grpc_exec_ctx* exec_ctx, grpc_closure* closure,
61
+ grpc_error* error);
62
+ const char* name;
65
63
  } grpc_closure_scheduler_vtable;
66
64
 
67
65
  /** Abstract type that can schedule closures for execution */
68
66
  struct grpc_closure_scheduler {
69
- const grpc_closure_scheduler_vtable *vtable;
67
+ const grpc_closure_scheduler_vtable* vtable;
70
68
  };
71
69
 
72
70
  /** A closure over a grpc_iomgr_cb_func. */
@@ -74,7 +72,7 @@ struct grpc_closure {
74
72
  /** Once queued, next indicates the next queued closure; before then, scratch
75
73
  * space */
76
74
  union {
77
- grpc_closure *next;
75
+ grpc_closure* next;
78
76
  gpr_mpscq_node atm_next;
79
77
  uintptr_t scratch;
80
78
  } next_data;
@@ -83,15 +81,15 @@ struct grpc_closure {
83
81
  grpc_iomgr_cb_func cb;
84
82
 
85
83
  /** Arguments to be passed to "cb". */
86
- void *cb_arg;
84
+ void* cb_arg;
87
85
 
88
- /** Scheduler to schedule against: NULL to schedule against current execution
89
- context */
90
- grpc_closure_scheduler *scheduler;
86
+ /** Scheduler to schedule against: nullptr to schedule against current
87
+ execution context */
88
+ grpc_closure_scheduler* scheduler;
91
89
 
92
90
  /** Once queued, the result of the closure. Before then: scratch space */
93
91
  union {
94
- grpc_error *error;
92
+ grpc_error* error;
95
93
  uintptr_t scratch;
96
94
  } error_data;
97
95
 
@@ -100,109 +98,269 @@ struct grpc_closure {
100
98
  #ifndef NDEBUG
101
99
  bool scheduled;
102
100
  bool run; // true = run, false = scheduled
103
- const char *file_created;
101
+ const char* file_created;
104
102
  int line_created;
105
- const char *file_initiated;
103
+ const char* file_initiated;
106
104
  int line_initiated;
107
105
  #endif
108
106
  };
109
107
 
108
+ #ifndef NDEBUG
109
+ inline grpc_closure* grpc_closure_init(const char* file, int line,
110
+ grpc_closure* closure,
111
+ grpc_iomgr_cb_func cb, void* cb_arg,
112
+ grpc_closure_scheduler* scheduler) {
113
+ #else
114
+ inline grpc_closure* grpc_closure_init(grpc_closure* closure,
115
+ grpc_iomgr_cb_func cb, void* cb_arg,
116
+ grpc_closure_scheduler* scheduler) {
117
+ #endif
118
+ closure->cb = cb;
119
+ closure->cb_arg = cb_arg;
120
+ closure->scheduler = scheduler;
121
+ #ifndef NDEBUG
122
+ closure->scheduled = false;
123
+ closure->file_initiated = nullptr;
124
+ closure->line_initiated = 0;
125
+ closure->run = false;
126
+ closure->file_created = file;
127
+ closure->line_created = line;
128
+ #endif
129
+ return closure;
130
+ }
131
+
110
132
  /** Initializes \a closure with \a cb and \a cb_arg. Returns \a closure. */
111
133
  #ifndef NDEBUG
112
- grpc_closure *grpc_closure_init(const char *file, int line,
113
- grpc_closure *closure, grpc_iomgr_cb_func cb,
114
- void *cb_arg,
115
- grpc_closure_scheduler *scheduler);
116
134
  #define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler) \
117
135
  grpc_closure_init(__FILE__, __LINE__, closure, cb, cb_arg, scheduler)
118
136
  #else
119
- grpc_closure *grpc_closure_init(grpc_closure *closure, grpc_iomgr_cb_func cb,
120
- void *cb_arg,
121
- grpc_closure_scheduler *scheduler);
122
137
  #define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler) \
123
138
  grpc_closure_init(closure, cb, cb_arg, scheduler)
124
139
  #endif
125
140
 
141
+ namespace closure_impl {
142
+
143
+ typedef struct {
144
+ grpc_iomgr_cb_func cb;
145
+ void* cb_arg;
146
+ grpc_closure wrapper;
147
+ } wrapped_closure;
148
+
149
+ inline void closure_wrapper(grpc_exec_ctx* exec_ctx, void* arg,
150
+ grpc_error* error) {
151
+ wrapped_closure* wc = (wrapped_closure*)arg;
152
+ grpc_iomgr_cb_func cb = wc->cb;
153
+ void* cb_arg = wc->cb_arg;
154
+ gpr_free(wc);
155
+ cb(exec_ctx, cb_arg, error);
156
+ }
157
+
158
+ } // namespace closure_impl
159
+
160
+ #ifndef NDEBUG
161
+ inline grpc_closure* grpc_closure_create(const char* file, int line,
162
+ grpc_iomgr_cb_func cb, void* cb_arg,
163
+ grpc_closure_scheduler* scheduler) {
164
+ #else
165
+ inline grpc_closure* grpc_closure_create(grpc_iomgr_cb_func cb, void* cb_arg,
166
+ grpc_closure_scheduler* scheduler) {
167
+ #endif
168
+ closure_impl::wrapped_closure* wc =
169
+ (closure_impl::wrapped_closure*)gpr_malloc(sizeof(*wc));
170
+ wc->cb = cb;
171
+ wc->cb_arg = cb_arg;
172
+ #ifndef NDEBUG
173
+ grpc_closure_init(file, line, &wc->wrapper, closure_impl::closure_wrapper, wc,
174
+ scheduler);
175
+ #else
176
+ grpc_closure_init(&wc->wrapper, closure_impl::closure_wrapper, wc, scheduler);
177
+ #endif
178
+ return &wc->wrapper;
179
+ }
180
+
126
181
  /* Create a heap allocated closure: try to avoid except for very rare events */
127
182
  #ifndef NDEBUG
128
- grpc_closure *grpc_closure_create(const char *file, int line,
129
- grpc_iomgr_cb_func cb, void *cb_arg,
130
- grpc_closure_scheduler *scheduler);
131
183
  #define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler) \
132
184
  grpc_closure_create(__FILE__, __LINE__, cb, cb_arg, scheduler)
133
185
  #else
134
- grpc_closure *grpc_closure_create(grpc_iomgr_cb_func cb, void *cb_arg,
135
- grpc_closure_scheduler *scheduler);
136
186
  #define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler) \
137
187
  grpc_closure_create(cb, cb_arg, scheduler)
138
188
  #endif
139
189
 
140
190
  #define GRPC_CLOSURE_LIST_INIT \
141
- { NULL, NULL }
191
+ { nullptr, nullptr }
142
192
 
143
- void grpc_closure_list_init(grpc_closure_list *list);
193
+ inline void grpc_closure_list_init(grpc_closure_list* closure_list) {
194
+ closure_list->head = closure_list->tail = nullptr;
195
+ }
144
196
 
145
197
  /** add \a closure to the end of \a list
146
198
  and set \a closure's result to \a error
147
199
  Returns true if \a list becomes non-empty */
148
- bool grpc_closure_list_append(grpc_closure_list *list, grpc_closure *closure,
149
- grpc_error *error);
200
+ inline bool grpc_closure_list_append(grpc_closure_list* closure_list,
201
+ grpc_closure* closure, grpc_error* error) {
202
+ if (closure == nullptr) {
203
+ GRPC_ERROR_UNREF(error);
204
+ return false;
205
+ }
206
+ closure->error_data.error = error;
207
+ closure->next_data.next = nullptr;
208
+ bool was_empty = (closure_list->head == nullptr);
209
+ if (was_empty) {
210
+ closure_list->head = closure;
211
+ } else {
212
+ closure_list->tail->next_data.next = closure;
213
+ }
214
+ closure_list->tail = closure;
215
+ return was_empty;
216
+ }
150
217
 
151
218
  /** force all success bits in \a list to false */
152
- void grpc_closure_list_fail_all(grpc_closure_list *list,
153
- grpc_error *forced_failure);
219
+ inline void grpc_closure_list_fail_all(grpc_closure_list* list,
220
+ grpc_error* forced_failure) {
221
+ for (grpc_closure* c = list->head; c != nullptr; c = c->next_data.next) {
222
+ if (c->error_data.error == GRPC_ERROR_NONE) {
223
+ c->error_data.error = GRPC_ERROR_REF(forced_failure);
224
+ }
225
+ }
226
+ GRPC_ERROR_UNREF(forced_failure);
227
+ }
154
228
 
155
229
  /** append all closures from \a src to \a dst and empty \a src. */
156
- void grpc_closure_list_move(grpc_closure_list *src, grpc_closure_list *dst);
230
+ inline void grpc_closure_list_move(grpc_closure_list* src,
231
+ grpc_closure_list* dst) {
232
+ if (src->head == nullptr) {
233
+ return;
234
+ }
235
+ if (dst->head == nullptr) {
236
+ *dst = *src;
237
+ } else {
238
+ dst->tail->next_data.next = src->head;
239
+ dst->tail = src->tail;
240
+ }
241
+ src->head = src->tail = nullptr;
242
+ }
157
243
 
158
244
  /** return whether \a list is empty. */
159
- bool grpc_closure_list_empty(grpc_closure_list list);
245
+ inline bool grpc_closure_list_empty(grpc_closure_list closure_list) {
246
+ return closure_list.head == nullptr;
247
+ }
248
+
249
+ #ifndef NDEBUG
250
+ inline void grpc_closure_run(const char* file, int line,
251
+ grpc_exec_ctx* exec_ctx, grpc_closure* c,
252
+ grpc_error* error) {
253
+ #else
254
+ inline void grpc_closure_run(grpc_exec_ctx* exec_ctx, grpc_closure* c,
255
+ grpc_error* error) {
256
+ #endif
257
+ GPR_TIMER_BEGIN("grpc_closure_run", 0);
258
+ if (c != nullptr) {
259
+ #ifndef NDEBUG
260
+ c->file_initiated = file;
261
+ c->line_initiated = line;
262
+ c->run = true;
263
+ #endif
264
+ assert(c->cb);
265
+ c->scheduler->vtable->run(exec_ctx, c, error);
266
+ } else {
267
+ GRPC_ERROR_UNREF(error);
268
+ }
269
+ GPR_TIMER_END("grpc_closure_run", 0);
270
+ }
160
271
 
161
272
  /** Run a closure directly. Caller ensures that no locks are being held above.
162
273
  * Note that calling this at the end of a closure callback function itself is
163
274
  * by definition safe. */
164
275
  #ifndef NDEBUG
165
- void grpc_closure_run(const char *file, int line, grpc_exec_ctx *exec_ctx,
166
- grpc_closure *closure, grpc_error *error);
167
276
  #define GRPC_CLOSURE_RUN(exec_ctx, closure, error) \
168
277
  grpc_closure_run(__FILE__, __LINE__, exec_ctx, closure, error)
169
278
  #else
170
- void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
171
- grpc_error *error);
172
279
  #define GRPC_CLOSURE_RUN(exec_ctx, closure, error) \
173
280
  grpc_closure_run(exec_ctx, closure, error)
174
281
  #endif
175
282
 
283
+ #ifndef NDEBUG
284
+ inline void grpc_closure_sched(const char* file, int line,
285
+ grpc_exec_ctx* exec_ctx, grpc_closure* c,
286
+ grpc_error* error) {
287
+ #else
288
+ inline void grpc_closure_sched(grpc_exec_ctx* exec_ctx, grpc_closure* c,
289
+ grpc_error* error) {
290
+ #endif
291
+ GPR_TIMER_BEGIN("grpc_closure_sched", 0);
292
+ if (c != nullptr) {
293
+ #ifndef NDEBUG
294
+ if (c->scheduled) {
295
+ gpr_log(GPR_ERROR,
296
+ "Closure already scheduled. (closure: %p, created: [%s:%d], "
297
+ "previously scheduled at: [%s: %d] run?: %s",
298
+ c, c->file_created, c->line_created, c->file_initiated,
299
+ c->line_initiated, c->run ? "true" : "false");
300
+ abort();
301
+ }
302
+ c->scheduled = true;
303
+ c->file_initiated = file;
304
+ c->line_initiated = line;
305
+ c->run = false;
306
+ #endif
307
+ assert(c->cb);
308
+ c->scheduler->vtable->sched(exec_ctx, c, error);
309
+ } else {
310
+ GRPC_ERROR_UNREF(error);
311
+ }
312
+ GPR_TIMER_END("grpc_closure_sched", 0);
313
+ }
314
+
176
315
  /** Schedule a closure to be run. Does not need to be run from a safe point. */
177
316
  #ifndef NDEBUG
178
- void grpc_closure_sched(const char *file, int line, grpc_exec_ctx *exec_ctx,
179
- grpc_closure *closure, grpc_error *error);
180
317
  #define GRPC_CLOSURE_SCHED(exec_ctx, closure, error) \
181
318
  grpc_closure_sched(__FILE__, __LINE__, exec_ctx, closure, error)
182
319
  #else
183
- void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
184
- grpc_error *error);
185
320
  #define GRPC_CLOSURE_SCHED(exec_ctx, closure, error) \
186
321
  grpc_closure_sched(exec_ctx, closure, error)
187
322
  #endif
188
323
 
324
+ #ifndef NDEBUG
325
+ inline void grpc_closure_list_sched(const char* file, int line,
326
+ grpc_exec_ctx* exec_ctx,
327
+ grpc_closure_list* list) {
328
+ #else
329
+ inline void grpc_closure_list_sched(grpc_exec_ctx* exec_ctx,
330
+ grpc_closure_list* list) {
331
+ #endif
332
+ grpc_closure* c = list->head;
333
+ while (c != nullptr) {
334
+ grpc_closure* next = c->next_data.next;
335
+ #ifndef NDEBUG
336
+ if (c->scheduled) {
337
+ gpr_log(GPR_ERROR,
338
+ "Closure already scheduled. (closure: %p, created: [%s:%d], "
339
+ "previously scheduled at: [%s: %d] run?: %s",
340
+ c, c->file_created, c->line_created, c->file_initiated,
341
+ c->line_initiated, c->run ? "true" : "false");
342
+ abort();
343
+ }
344
+ c->scheduled = true;
345
+ c->file_initiated = file;
346
+ c->line_initiated = line;
347
+ c->run = false;
348
+ #endif
349
+ assert(c->cb);
350
+ c->scheduler->vtable->sched(exec_ctx, c, c->error_data.error);
351
+ c = next;
352
+ }
353
+ list->head = list->tail = nullptr;
354
+ }
355
+
189
356
  /** Schedule all closures in a list to be run. Does not need to be run from a
190
357
  * safe point. */
191
358
  #ifndef NDEBUG
192
- void grpc_closure_list_sched(const char *file, int line,
193
- grpc_exec_ctx *exec_ctx,
194
- grpc_closure_list *closure_list);
195
359
  #define GRPC_CLOSURE_LIST_SCHED(exec_ctx, closure_list) \
196
360
  grpc_closure_list_sched(__FILE__, __LINE__, exec_ctx, closure_list)
197
361
  #else
198
- void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx,
199
- grpc_closure_list *closure_list);
200
362
  #define GRPC_CLOSURE_LIST_SCHED(exec_ctx, closure_list) \
201
363
  grpc_closure_list_sched(exec_ctx, closure_list)
202
364
  #endif
203
365
 
204
- #ifdef __cplusplus
205
- }
206
- #endif
207
-
208
366
  #endif /* GRPC_CORE_LIB_IOMGR_CLOSURE_H */