grpc 1.8.7 → 1.9.0.pre1

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 (488) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +549 -325
  3. data/include/grpc/impl/codegen/grpc_types.h +1 -2
  4. data/include/grpc/impl/codegen/port_platform.h +46 -5
  5. data/include/grpc/impl/codegen/slice.h +1 -2
  6. data/include/grpc/module.modulemap +0 -2
  7. data/include/grpc/slice_buffer.h +1 -2
  8. data/include/grpc/support/log.h +4 -2
  9. data/include/grpc/support/thd.h +4 -1
  10. data/include/grpc/support/tls.h +6 -0
  11. data/include/grpc/support/tls_gcc.h +5 -40
  12. data/include/grpc/support/tls_msvc.h +9 -0
  13. data/include/grpc/support/tls_pthread.h +9 -0
  14. data/src/core/ext/filters/client_channel/backup_poller.cc +32 -29
  15. data/src/core/ext/filters/client_channel/backup_poller.h +2 -2
  16. data/src/core/ext/filters/client_channel/channel_connectivity.cc +26 -32
  17. data/src/core/ext/filters/client_channel/client_channel.cc +325 -356
  18. data/src/core/ext/filters/client_channel/client_channel.h +4 -12
  19. data/src/core/ext/filters/client_channel/client_channel_factory.cc +9 -14
  20. data/src/core/ext/filters/client_channel/client_channel_factory.h +7 -20
  21. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +7 -10
  22. data/src/core/ext/filters/client_channel/connector.cc +6 -7
  23. data/src/core/ext/filters/client_channel/connector.h +6 -16
  24. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +38 -50
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -8
  26. data/src/core/ext/filters/client_channel/http_proxy.cc +9 -13
  27. data/src/core/ext/filters/client_channel/http_proxy.h +0 -8
  28. data/src/core/ext/filters/client_channel/lb_policy.cc +72 -94
  29. data/src/core/ext/filters/client_channel/lb_policy.h +83 -92
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -19
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -8
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +474 -591
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -8
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +2 -10
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -6
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -8
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -9
  39. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +3 -4
  40. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +9 -12
  41. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +160 -182
  42. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -221
  43. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +24 -35
  44. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -20
  45. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +6 -9
  46. data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -15
  47. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -3
  48. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -9
  49. data/src/core/ext/filters/client_channel/parse_address.cc +1 -1
  50. data/src/core/ext/filters/client_channel/parse_address.h +0 -8
  51. data/src/core/ext/filters/client_channel/proxy_mapper.cc +6 -8
  52. data/src/core/ext/filters/client_channel/proxy_mapper.h +6 -16
  53. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +13 -17
  54. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -12
  55. data/src/core/ext/filters/client_channel/resolver.cc +11 -13
  56. data/src/core/ext/filters/client_channel/resolver.h +14 -25
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -12
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -31
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +27 -45
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -15
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -11
  63. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +53 -66
  64. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +25 -33
  65. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -9
  66. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +26 -35
  67. data/src/core/ext/filters/client_channel/resolver_factory.cc +2 -3
  68. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -12
  69. data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
  70. data/src/core/ext/filters/client_channel/resolver_registry.h +3 -12
  71. data/src/core/ext/filters/client_channel/retry_throttle.h +0 -8
  72. data/src/core/ext/filters/client_channel/subchannel.cc +289 -301
  73. data/src/core/ext/filters/client_channel/subchannel.h +57 -84
  74. data/src/core/ext/filters/client_channel/subchannel_index.cc +30 -33
  75. data/src/core/ext/filters/client_channel/subchannel_index.h +4 -16
  76. data/src/core/ext/filters/client_channel/uri_parser.cc +13 -17
  77. data/src/core/ext/filters/client_channel/uri_parser.h +1 -10
  78. data/src/core/ext/filters/deadline/deadline_filter.cc +49 -67
  79. data/src/core/ext/filters/deadline/deadline_filter.h +4 -14
  80. data/src/core/ext/filters/http/client/http_client_filter.cc +60 -77
  81. data/src/core/ext/filters/http/client/http_client_filter.h +0 -8
  82. data/src/core/ext/filters/http/http_filters_plugin.cc +4 -6
  83. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +63 -79
  84. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -8
  85. data/src/core/ext/filters/http/server/http_server_filter.cc +57 -71
  86. data/src/core/ext/filters/http/server/http_server_filter.h +0 -8
  87. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +19 -24
  88. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +0 -8
  89. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +3 -3
  90. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -8
  91. data/src/core/ext/filters/max_age/max_age_filter.cc +49 -62
  92. data/src/core/ext/filters/max_age/max_age_filter.h +0 -8
  93. data/src/core/ext/filters/message_size/message_size_filter.cc +23 -29
  94. data/src/core/ext/filters/message_size/message_size_filter.h +0 -8
  95. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -18
  96. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -8
  97. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -8
  98. data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -8
  99. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +33 -40
  100. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -8
  101. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +15 -17
  102. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +8 -8
  103. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +23 -28
  104. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +50 -57
  105. data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -10
  106. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
  107. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -10
  108. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -6
  109. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -9
  110. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -11
  111. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -9
  112. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +10 -2
  113. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +516 -636
  114. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -11
  115. data/src/core/ext/transport/chttp2/transport/flow_control.cc +29 -13
  116. data/src/core/ext/transport/chttp2/transport/flow_control.h +196 -53
  117. data/src/core/ext/transport/chttp2/transport/frame.h +0 -8
  118. data/src/core/ext/transport/chttp2/transport/frame_data.cc +31 -33
  119. data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -12
  120. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -3
  121. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -10
  122. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  123. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -9
  124. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
  125. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -10
  126. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -3
  127. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -10
  128. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -8
  129. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -11
  130. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +63 -81
  131. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -12
  132. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +230 -318
  133. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -19
  134. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +14 -20
  135. data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -16
  136. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -7
  137. data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -8
  138. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +8 -11
  139. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +4 -13
  140. data/src/core/ext/transport/chttp2/transport/internal.h +51 -75
  141. data/src/core/ext/transport/chttp2/transport/parsing.cc +83 -109
  142. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
  143. data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -8
  144. data/src/core/ext/transport/chttp2/transport/varint.h +0 -8
  145. data/src/core/ext/transport/chttp2/transport/writing.cc +61 -65
  146. data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -4
  147. data/src/core/ext/transport/inproc/inproc_transport.cc +177 -188
  148. data/src/core/ext/transport/inproc/inproc_transport.h +0 -8
  149. data/src/core/lib/backoff/backoff.cc +39 -44
  150. data/src/core/lib/backoff/backoff.h +61 -57
  151. data/src/core/lib/channel/channel_args.cc +8 -10
  152. data/src/core/lib/channel/channel_args.h +4 -13
  153. data/src/core/lib/channel/channel_stack.cc +19 -27
  154. data/src/core/lib/channel/channel_stack.h +27 -47
  155. data/src/core/lib/channel/channel_stack_builder.cc +11 -14
  156. data/src/core/lib/channel/channel_stack_builder.h +4 -15
  157. data/src/core/lib/channel/connected_channel.cc +23 -36
  158. data/src/core/lib/channel/connected_channel.h +1 -10
  159. data/src/core/lib/channel/handshaker.cc +31 -40
  160. data/src/core/lib/channel/handshaker.h +14 -25
  161. data/src/core/lib/channel/handshaker_factory.cc +6 -6
  162. data/src/core/lib/channel/handshaker_factory.h +5 -15
  163. data/src/core/lib/channel/handshaker_registry.cc +9 -13
  164. data/src/core/lib/channel/handshaker_registry.h +2 -11
  165. data/src/core/lib/compression/algorithm_metadata.h +0 -8
  166. data/src/core/lib/compression/message_compress.cc +19 -23
  167. data/src/core/lib/compression/message_compress.h +2 -12
  168. data/src/core/lib/compression/stream_compression.cc +1 -1
  169. data/src/core/lib/compression/stream_compression.h +0 -8
  170. data/src/core/lib/compression/stream_compression_gzip.cc +12 -11
  171. data/src/core/lib/compression/stream_compression_gzip.h +0 -8
  172. data/src/core/lib/compression/stream_compression_identity.h +0 -8
  173. data/src/core/lib/debug/stats.cc +4 -4
  174. data/src/core/lib/debug/stats.h +9 -19
  175. data/src/core/lib/debug/stats_data.cc +85 -116
  176. data/src/core/lib/debug/stats_data.h +236 -312
  177. data/src/core/lib/debug/trace.cc +1 -1
  178. data/src/core/lib/debug/trace.h +0 -12
  179. data/src/core/lib/{support → gpr++}/abstract.h +8 -3
  180. data/src/core/lib/{support → gpr++}/atomic.h +5 -5
  181. data/src/core/lib/{support → gpr++}/atomic_with_atm.h +3 -3
  182. data/src/core/lib/{support → gpr++}/atomic_with_std.h +3 -3
  183. data/src/core/lib/gpr++/debug_location.h +52 -0
  184. data/src/core/lib/gpr++/inlined_vector.h +112 -0
  185. data/src/core/lib/{support → gpr++}/manual_constructor.h +2 -2
  186. data/src/core/lib/{support → gpr++}/memory.h +3 -3
  187. data/src/core/lib/gpr++/orphanable.h +171 -0
  188. data/src/core/lib/gpr++/ref_counted.h +133 -0
  189. data/src/core/lib/gpr++/ref_counted_ptr.h +99 -0
  190. data/src/core/lib/{support → gpr}/alloc.cc +0 -0
  191. data/src/core/lib/{support → gpr}/arena.cc +1 -1
  192. data/src/core/lib/{support → gpr}/arena.h +3 -11
  193. data/src/core/lib/{support → gpr}/atm.cc +0 -0
  194. data/src/core/lib/{support → gpr}/avl.cc +0 -0
  195. data/src/core/lib/{support → gpr}/cmdline.cc +1 -1
  196. data/src/core/lib/{support → gpr}/cpu_iphone.cc +0 -0
  197. data/src/core/lib/{support → gpr}/cpu_linux.cc +0 -0
  198. data/src/core/lib/{support → gpr}/cpu_posix.cc +0 -0
  199. data/src/core/lib/{support → gpr}/cpu_windows.cc +0 -0
  200. data/src/core/lib/{support → gpr}/env.h +3 -11
  201. data/src/core/lib/{support → gpr}/env_linux.cc +2 -2
  202. data/src/core/lib/{support → gpr}/env_posix.cc +4 -4
  203. data/src/core/lib/{support → gpr}/env_windows.cc +3 -3
  204. data/src/core/lib/{support → gpr}/fork.cc +3 -3
  205. data/src/core/lib/{support → gpr}/fork.h +3 -3
  206. data/src/core/lib/{support → gpr}/host_port.cc +1 -1
  207. data/src/core/lib/{support → gpr}/log.cc +3 -3
  208. data/src/core/lib/{support → gpr}/log_android.cc +3 -3
  209. data/src/core/lib/{support → gpr}/log_linux.cc +1 -1
  210. data/src/core/lib/{support → gpr}/log_posix.cc +5 -5
  211. data/src/core/lib/{support → gpr}/log_windows.cc +3 -3
  212. data/src/core/lib/{support → gpr}/mpscq.cc +1 -1
  213. data/src/core/lib/{support → gpr}/mpscq.h +3 -10
  214. data/src/core/lib/{support → gpr}/murmur_hash.cc +1 -1
  215. data/src/core/lib/{support → gpr}/murmur_hash.h +3 -11
  216. data/src/core/lib/{support → gpr}/spinlock.h +3 -3
  217. data/src/core/lib/{support → gpr}/string.cc +1 -1
  218. data/src/core/lib/{support → gpr}/string.h +3 -10
  219. data/src/core/lib/{support → gpr}/string_posix.cc +0 -0
  220. data/src/core/lib/{support → gpr}/string_util_windows.cc +2 -2
  221. data/src/core/lib/{support → gpr}/string_windows.cc +1 -1
  222. data/src/core/lib/{support → gpr}/string_windows.h +3 -11
  223. data/src/core/lib/{support → gpr}/subprocess_posix.cc +0 -0
  224. data/src/core/lib/{support → gpr}/subprocess_windows.cc +2 -2
  225. data/src/core/lib/{support → gpr}/sync.cc +0 -0
  226. data/src/core/lib/{support → gpr}/sync_posix.cc +10 -1
  227. data/src/core/lib/{support → gpr}/sync_windows.cc +0 -0
  228. data/src/core/lib/{support → gpr}/thd.cc +0 -0
  229. data/src/core/lib/{support → gpr}/thd_internal.h +3 -3
  230. data/src/core/lib/{support → gpr}/thd_posix.cc +18 -2
  231. data/src/core/lib/{support → gpr}/thd_windows.cc +2 -1
  232. data/src/core/lib/{support → gpr}/time.cc +0 -0
  233. data/src/core/lib/{support → gpr}/time_posix.cc +2 -4
  234. data/src/core/lib/{support → gpr}/time_precise.cc +1 -1
  235. data/src/core/lib/{support → gpr}/time_precise.h +3 -11
  236. data/src/core/lib/{support → gpr}/time_windows.cc +1 -3
  237. data/src/core/lib/{support → gpr}/tls_pthread.cc +0 -0
  238. data/src/core/lib/{support → gpr}/tmpfile.h +3 -11
  239. data/src/core/lib/{support → gpr}/tmpfile_msys.cc +2 -2
  240. data/src/core/lib/{support → gpr}/tmpfile_posix.cc +2 -2
  241. data/src/core/lib/{support → gpr}/tmpfile_windows.cc +2 -2
  242. data/src/core/lib/{support → gpr}/wrap_memcpy.cc +0 -0
  243. data/src/core/lib/http/format_request.cc +1 -1
  244. data/src/core/lib/http/format_request.h +0 -8
  245. data/src/core/lib/http/httpcli.cc +55 -74
  246. data/src/core/lib/http/httpcli.h +13 -22
  247. data/src/core/lib/http/httpcli_security_connector.cc +27 -33
  248. data/src/core/lib/http/parser.h +0 -8
  249. data/src/core/lib/iomgr/block_annotate.h +10 -17
  250. data/src/core/lib/iomgr/call_combiner.cc +14 -17
  251. data/src/core/lib/iomgr/call_combiner.h +16 -34
  252. data/src/core/lib/iomgr/closure.h +24 -37
  253. data/src/core/lib/iomgr/combiner.cc +62 -66
  254. data/src/core/lib/iomgr/combiner.h +6 -16
  255. data/src/core/lib/iomgr/endpoint.cc +15 -21
  256. data/src/core/lib/iomgr/endpoint.h +16 -33
  257. data/src/core/lib/iomgr/endpoint_pair.h +0 -8
  258. data/src/core/lib/iomgr/endpoint_pair_posix.cc +4 -5
  259. data/src/core/lib/iomgr/endpoint_pair_windows.cc +4 -6
  260. data/src/core/lib/iomgr/error.cc +2 -6
  261. data/src/core/lib/iomgr/error.h +4 -9
  262. data/src/core/lib/iomgr/error_internal.h +0 -8
  263. data/src/core/lib/iomgr/ev_epoll1_linux.cc +110 -117
  264. data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -8
  265. data/src/core/lib/iomgr/ev_epollex_linux.cc +111 -141
  266. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -8
  267. data/src/core/lib/iomgr/ev_epollsig_linux.cc +83 -109
  268. data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -10
  269. data/src/core/lib/iomgr/ev_poll_posix.cc +103 -125
  270. data/src/core/lib/iomgr/ev_poll_posix.h +0 -8
  271. data/src/core/lib/iomgr/ev_posix.cc +35 -50
  272. data/src/core/lib/iomgr/ev_posix.h +27 -53
  273. data/src/core/lib/iomgr/exec_ctx.cc +46 -78
  274. data/src/core/lib/iomgr/exec_ctx.h +127 -60
  275. data/src/core/lib/iomgr/executor.cc +34 -38
  276. data/src/core/lib/iomgr/executor.h +3 -11
  277. data/src/core/lib/iomgr/fork_posix.cc +13 -12
  278. data/src/core/lib/iomgr/gethostname.h +0 -8
  279. data/src/core/lib/iomgr/gethostname_sysconf.cc +1 -1
  280. data/src/core/lib/iomgr/iocp_windows.cc +14 -16
  281. data/src/core/lib/iomgr/iocp_windows.h +1 -10
  282. data/src/core/lib/iomgr/iomgr.cc +60 -59
  283. data/src/core/lib/iomgr/iomgr.h +3 -12
  284. data/src/core/lib/iomgr/iomgr_internal.h +0 -8
  285. data/src/core/lib/iomgr/iomgr_uv.cc +2 -3
  286. data/src/core/lib/iomgr/iomgr_uv.h +0 -8
  287. data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -1
  288. data/src/core/lib/iomgr/load_file.cc +1 -1
  289. data/src/core/lib/iomgr/load_file.h +0 -8
  290. data/src/core/lib/iomgr/lockfree_event.cc +7 -8
  291. data/src/core/lib/iomgr/lockfree_event.h +3 -3
  292. data/src/core/lib/iomgr/polling_entity.cc +6 -10
  293. data/src/core/lib/iomgr/polling_entity.h +2 -11
  294. data/src/core/lib/iomgr/pollset.h +4 -13
  295. data/src/core/lib/iomgr/pollset_set.h +5 -18
  296. data/src/core/lib/iomgr/pollset_set_uv.cc +5 -10
  297. data/src/core/lib/iomgr/pollset_set_windows.cc +5 -10
  298. data/src/core/lib/iomgr/pollset_uv.cc +8 -9
  299. data/src/core/lib/iomgr/pollset_uv.h +0 -8
  300. data/src/core/lib/iomgr/pollset_windows.cc +14 -15
  301. data/src/core/lib/iomgr/pollset_windows.h +0 -8
  302. data/src/core/lib/iomgr/port.h +6 -1
  303. data/src/core/lib/iomgr/resolve_address.h +1 -10
  304. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -12
  305. data/src/core/lib/iomgr/resolve_address_uv.cc +7 -8
  306. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -9
  307. data/src/core/lib/iomgr/resource_quota.cc +77 -107
  308. data/src/core/lib/iomgr/resource_quota.h +8 -25
  309. data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
  310. data/src/core/lib/iomgr/sockaddr_utils.h +0 -8
  311. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  312. data/src/core/lib/iomgr/socket_factory_posix.h +0 -8
  313. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  314. data/src/core/lib/iomgr/socket_mutator.h +1 -9
  315. data/src/core/lib/iomgr/socket_utils.h +0 -8
  316. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -1
  317. data/src/core/lib/iomgr/socket_utils_posix.h +0 -8
  318. data/src/core/lib/iomgr/socket_windows.cc +8 -11
  319. data/src/core/lib/iomgr/socket_windows.h +3 -14
  320. data/src/core/lib/iomgr/tcp_client.h +1 -10
  321. data/src/core/lib/iomgr/tcp_client_posix.cc +94 -78
  322. data/src/core/lib/iomgr/tcp_client_posix.h +36 -8
  323. data/src/core/lib/iomgr/tcp_client_uv.cc +16 -23
  324. data/src/core/lib/iomgr/tcp_client_windows.cc +22 -25
  325. data/src/core/lib/iomgr/tcp_posix.cc +131 -153
  326. data/src/core/lib/iomgr/tcp_posix.h +3 -12
  327. data/src/core/lib/iomgr/tcp_server.h +6 -17
  328. data/src/core/lib/iomgr/tcp_server_posix.cc +31 -35
  329. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -8
  330. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
  331. data/src/core/lib/iomgr/tcp_server_uv.cc +23 -34
  332. data/src/core/lib/iomgr/tcp_server_windows.cc +24 -34
  333. data/src/core/lib/iomgr/tcp_uv.cc +42 -56
  334. data/src/core/lib/iomgr/tcp_uv.h +0 -8
  335. data/src/core/lib/iomgr/tcp_windows.cc +43 -50
  336. data/src/core/lib/iomgr/tcp_windows.h +1 -9
  337. data/src/core/lib/iomgr/time_averaged_stats.h +0 -8
  338. data/src/core/lib/iomgr/timer.h +6 -15
  339. data/src/core/lib/iomgr/timer_generic.cc +22 -27
  340. data/src/core/lib/iomgr/timer_heap.h +0 -8
  341. data/src/core/lib/iomgr/timer_manager.cc +17 -19
  342. data/src/core/lib/iomgr/timer_manager.h +0 -8
  343. data/src/core/lib/iomgr/timer_uv.cc +12 -14
  344. data/src/core/lib/iomgr/udp_server.cc +148 -54
  345. data/src/core/lib/iomgr/udp_server.h +16 -21
  346. data/src/core/lib/iomgr/unix_sockets_posix.h +0 -8
  347. data/src/core/lib/iomgr/wakeup_fd_cv.cc +4 -4
  348. data/src/core/lib/iomgr/wakeup_fd_cv.h +12 -20
  349. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
  350. data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -8
  351. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -8
  352. data/src/core/lib/json/json.h +0 -8
  353. data/src/core/lib/json/json_reader.h +0 -8
  354. data/src/core/lib/json/json_writer.h +0 -8
  355. data/src/core/lib/profiling/basic_timers.cc +3 -2
  356. data/src/core/lib/profiling/timers.h +0 -8
  357. data/src/core/lib/security/context/security_context.cc +9 -10
  358. data/src/core/lib/security/context/security_context.h +0 -8
  359. data/src/core/lib/security/credentials/composite/composite_credentials.cc +23 -28
  360. data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -8
  361. data/src/core/lib/security/credentials/credentials.cc +33 -42
  362. data/src/core/lib/security/credentials/credentials.h +24 -43
  363. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
  364. data/src/core/lib/security/credentials/fake/fake_credentials.cc +16 -22
  365. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -8
  366. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
  367. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +28 -34
  368. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -8
  369. data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -13
  370. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  371. data/src/core/lib/security/credentials/jwt/json_token.h +0 -8
  372. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -20
  373. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -10
  374. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +56 -72
  375. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -17
  376. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +47 -55
  377. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -12
  378. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +23 -28
  379. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -13
  380. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -8
  381. data/src/core/lib/security/transport/auth_filters.h +0 -8
  382. data/src/core/lib/security/transport/client_auth_filter.cc +45 -54
  383. data/src/core/lib/security/transport/lb_targets_info.cc +2 -2
  384. data/src/core/lib/security/transport/lb_targets_info.h +0 -8
  385. data/src/core/lib/security/transport/secure_endpoint.cc +54 -68
  386. data/src/core/lib/security/transport/secure_endpoint.h +0 -8
  387. data/src/core/lib/security/transport/security_connector.cc +62 -86
  388. data/src/core/lib/security/transport/security_connector.h +22 -39
  389. data/src/core/lib/security/transport/security_handshaker.cc +83 -106
  390. data/src/core/lib/security/transport/security_handshaker.h +1 -10
  391. data/src/core/lib/security/transport/server_auth_filter.cc +31 -38
  392. data/src/core/lib/security/transport/tsi_error.h +0 -8
  393. data/src/core/lib/security/util/json_util.h +0 -8
  394. data/src/core/lib/slice/b64.cc +5 -6
  395. data/src/core/lib/slice/b64.h +3 -12
  396. data/src/core/lib/slice/percent_encoding.h +0 -8
  397. data/src/core/lib/slice/slice.cc +8 -9
  398. data/src/core/lib/slice/slice_buffer.cc +11 -16
  399. data/src/core/lib/slice/slice_hash_table.cc +5 -7
  400. data/src/core/lib/slice/slice_hash_table.h +2 -12
  401. data/src/core/lib/slice/slice_intern.cc +4 -5
  402. data/src/core/lib/slice/slice_internal.h +4 -15
  403. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  404. data/src/core/lib/slice/slice_string_helpers.h +1 -9
  405. data/src/core/lib/surface/alarm.cc +11 -14
  406. data/src/core/lib/surface/alarm_internal.h +0 -8
  407. data/src/core/lib/surface/byte_buffer.cc +2 -3
  408. data/src/core/lib/surface/byte_buffer_reader.cc +7 -9
  409. data/src/core/lib/surface/call.cc +198 -241
  410. data/src/core/lib/surface/call.h +9 -23
  411. data/src/core/lib/surface/call_details.cc +3 -4
  412. data/src/core/lib/surface/call_log_batch.cc +1 -1
  413. data/src/core/lib/surface/call_test_only.h +0 -8
  414. data/src/core/lib/surface/channel.cc +53 -64
  415. data/src/core/lib/surface/channel.h +12 -23
  416. data/src/core/lib/surface/channel_init.cc +2 -3
  417. data/src/core/lib/surface/channel_init.h +2 -12
  418. data/src/core/lib/surface/channel_ping.cc +7 -9
  419. data/src/core/lib/surface/channel_stack_type.h +0 -8
  420. data/src/core/lib/surface/completion_queue.cc +158 -176
  421. data/src/core/lib/surface/completion_queue.h +9 -20
  422. data/src/core/lib/surface/completion_queue_factory.h +0 -8
  423. data/src/core/lib/surface/event_string.cc +1 -1
  424. data/src/core/lib/surface/event_string.h +0 -8
  425. data/src/core/lib/surface/init.cc +27 -25
  426. data/src/core/lib/surface/init.h +0 -8
  427. data/src/core/lib/surface/init_secure.cc +2 -2
  428. data/src/core/lib/surface/lame_client.cc +30 -33
  429. data/src/core/lib/surface/lame_client.h +0 -8
  430. data/src/core/lib/surface/server.cc +151 -203
  431. data/src/core/lib/surface/server.h +7 -16
  432. data/src/core/lib/surface/validate_metadata.h +0 -8
  433. data/src/core/lib/surface/version.cc +2 -2
  434. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  435. data/src/core/lib/transport/bdp_estimator.h +1 -1
  436. data/src/core/lib/transport/byte_stream.cc +24 -38
  437. data/src/core/lib/transport/byte_stream.h +10 -25
  438. data/src/core/lib/transport/connectivity_state.cc +9 -13
  439. data/src/core/lib/transport/connectivity_state.h +4 -14
  440. data/src/core/lib/transport/error_utils.cc +6 -6
  441. data/src/core/lib/transport/error_utils.h +2 -11
  442. data/src/core/lib/transport/metadata.cc +21 -23
  443. data/src/core/lib/transport/metadata.h +8 -20
  444. data/src/core/lib/transport/metadata_batch.cc +34 -45
  445. data/src/core/lib/transport/metadata_batch.h +18 -32
  446. data/src/core/lib/transport/service_config.cc +11 -15
  447. data/src/core/lib/transport/service_config.h +3 -13
  448. data/src/core/lib/transport/static_metadata.cc +1 -1
  449. data/src/core/lib/transport/static_metadata.h +1 -7
  450. data/src/core/lib/transport/status_conversion.cc +2 -3
  451. data/src/core/lib/transport/status_conversion.h +1 -10
  452. data/src/core/lib/transport/timeout_encoding.cc +1 -1
  453. data/src/core/lib/transport/timeout_encoding.h +1 -9
  454. data/src/core/lib/transport/transport.cc +36 -50
  455. data/src/core/lib/transport/transport.h +28 -30
  456. data/src/core/lib/transport/transport_impl.h +12 -23
  457. data/src/core/lib/transport/transport_op_string.cc +2 -2
  458. data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -34
  459. data/src/core/tsi/fake_transport_security.cc +7 -10
  460. data/src/core/tsi/fake_transport_security.h +0 -8
  461. data/src/core/tsi/gts_transport_security.cc +2 -2
  462. data/src/core/tsi/gts_transport_security.h +0 -8
  463. data/src/core/tsi/ssl_transport_security.cc +3 -0
  464. data/src/core/tsi/ssl_transport_security.h +0 -8
  465. data/src/core/tsi/ssl_types.h +0 -8
  466. data/src/core/tsi/transport_security.h +1 -9
  467. data/src/core/tsi/transport_security_adapter.h +0 -8
  468. data/src/core/tsi/transport_security_grpc.cc +11 -18
  469. data/src/core/tsi/transport_security_grpc.h +9 -21
  470. data/src/core/tsi/transport_security_interface.h +0 -8
  471. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -30
  472. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -48
  473. data/src/ruby/lib/grpc/version.rb +1 -1
  474. data/src/ruby/spec/channel_connection_spec.rb +2 -1
  475. data/src/ruby/spec/client_auth_spec.rb +1 -1
  476. data/src/ruby/spec/client_server_spec.rb +2 -2
  477. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  478. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  479. data/src/ruby/spec/generic/interceptor_registry_spec.rb +1 -1
  480. data/src/ruby/spec/generic/rpc_server_spec.rb +12 -12
  481. data/src/ruby/spec/google_rpc_status_utils_spec.rb +3 -2
  482. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  483. data/src/ruby/spec/server_spec.rb +9 -9
  484. data/src/ruby/spec/support/helpers.rb +35 -1
  485. metadata +68 -66
  486. data/include/grpc/impl/codegen/exec_ctx_fwd.h +0 -26
  487. data/include/grpc/support/histogram.h +0 -64
  488. data/src/core/lib/support/histogram.cc +0 -227
@@ -21,22 +21,19 @@
21
21
 
22
22
  #include "src/core/ext/filters/client_channel/connector.h"
23
23
  #include "src/core/lib/channel/channel_stack.h"
24
+ #include "src/core/lib/gpr++/ref_counted.h"
25
+ #include "src/core/lib/gpr++/ref_counted_ptr.h"
26
+ #include "src/core/lib/gpr/arena.h"
24
27
  #include "src/core/lib/iomgr/polling_entity.h"
25
- #include "src/core/lib/support/arena.h"
26
28
  #include "src/core/lib/transport/connectivity_state.h"
27
29
  #include "src/core/lib/transport/metadata.h"
28
30
 
29
- #ifdef __cplusplus
30
- extern "C" {
31
- #endif
32
-
33
31
  // Channel arg containing a grpc_resolved_address to connect to.
34
32
  #define GRPC_ARG_SUBCHANNEL_ADDRESS "grpc.subchannel_address"
35
33
 
36
34
  /** A (sub-)channel that knows how to connect to exactly one target
37
35
  address. Provides a target for load balancing. */
38
36
  typedef struct grpc_subchannel grpc_subchannel;
39
- typedef struct grpc_connected_subchannel grpc_connected_subchannel;
40
37
  typedef struct grpc_subchannel_call grpc_subchannel_call;
41
38
  typedef struct grpc_subchannel_args grpc_subchannel_args;
42
39
  typedef struct grpc_subchannel_key grpc_subchannel_key;
@@ -46,82 +43,72 @@ typedef struct grpc_subchannel_key grpc_subchannel_key;
46
43
  grpc_subchannel_ref((p), __FILE__, __LINE__, (r))
47
44
  #define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) \
48
45
  grpc_subchannel_ref_from_weak_ref((p), __FILE__, __LINE__, (r))
49
- #define GRPC_SUBCHANNEL_UNREF(cl, p, r) \
50
- grpc_subchannel_unref((cl), (p), __FILE__, __LINE__, (r))
46
+ #define GRPC_SUBCHANNEL_UNREF(p, r) \
47
+ grpc_subchannel_unref((p), __FILE__, __LINE__, (r))
51
48
  #define GRPC_SUBCHANNEL_WEAK_REF(p, r) \
52
49
  grpc_subchannel_weak_ref((p), __FILE__, __LINE__, (r))
53
- #define GRPC_SUBCHANNEL_WEAK_UNREF(cl, p, r) \
54
- grpc_subchannel_weak_unref((cl), (p), __FILE__, __LINE__, (r))
55
- #define GRPC_CONNECTED_SUBCHANNEL_REF(p, r) \
56
- grpc_connected_subchannel_ref((p), __FILE__, __LINE__, (r))
57
- #define GRPC_CONNECTED_SUBCHANNEL_UNREF(cl, p, r) \
58
- grpc_connected_subchannel_unref((cl), (p), __FILE__, __LINE__, (r))
50
+ #define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) \
51
+ grpc_subchannel_weak_unref((p), __FILE__, __LINE__, (r))
59
52
  #define GRPC_SUBCHANNEL_CALL_REF(p, r) \
60
53
  grpc_subchannel_call_ref((p), __FILE__, __LINE__, (r))
61
- #define GRPC_SUBCHANNEL_CALL_UNREF(cl, p, r) \
62
- grpc_subchannel_call_unref((cl), (p), __FILE__, __LINE__, (r))
54
+ #define GRPC_SUBCHANNEL_CALL_UNREF(p, r) \
55
+ grpc_subchannel_call_unref((p), __FILE__, __LINE__, (r))
63
56
  #define GRPC_SUBCHANNEL_REF_EXTRA_ARGS \
64
57
  , const char *file, int line, const char *reason
65
58
  #else
66
59
  #define GRPC_SUBCHANNEL_REF(p, r) grpc_subchannel_ref((p))
67
60
  #define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) \
68
61
  grpc_subchannel_ref_from_weak_ref((p))
69
- #define GRPC_SUBCHANNEL_UNREF(cl, p, r) grpc_subchannel_unref((cl), (p))
62
+ #define GRPC_SUBCHANNEL_UNREF(p, r) grpc_subchannel_unref((p))
70
63
  #define GRPC_SUBCHANNEL_WEAK_REF(p, r) grpc_subchannel_weak_ref((p))
71
- #define GRPC_SUBCHANNEL_WEAK_UNREF(cl, p, r) \
72
- grpc_subchannel_weak_unref((cl), (p))
73
- #define GRPC_CONNECTED_SUBCHANNEL_REF(p, r) grpc_connected_subchannel_ref((p))
74
- #define GRPC_CONNECTED_SUBCHANNEL_UNREF(cl, p, r) \
75
- grpc_connected_subchannel_unref((cl), (p))
64
+ #define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) grpc_subchannel_weak_unref((p))
76
65
  #define GRPC_SUBCHANNEL_CALL_REF(p, r) grpc_subchannel_call_ref((p))
77
- #define GRPC_SUBCHANNEL_CALL_UNREF(cl, p, r) \
78
- grpc_subchannel_call_unref((cl), (p))
66
+ #define GRPC_SUBCHANNEL_CALL_UNREF(p, r) grpc_subchannel_call_unref((p))
79
67
  #define GRPC_SUBCHANNEL_REF_EXTRA_ARGS
80
68
  #endif
81
69
 
70
+ namespace grpc_core {
71
+ class ConnectedSubchannel : public grpc_core::RefCountedWithTracing {
72
+ public:
73
+ struct CallArgs {
74
+ grpc_polling_entity* pollent;
75
+ grpc_slice path;
76
+ gpr_timespec start_time;
77
+ grpc_millis deadline;
78
+ gpr_arena* arena;
79
+ grpc_call_context_element* context;
80
+ grpc_call_combiner* call_combiner;
81
+ };
82
+
83
+ explicit ConnectedSubchannel(grpc_channel_stack* channel_stack);
84
+ ~ConnectedSubchannel();
85
+
86
+ grpc_channel_stack* channel_stack() { return channel_stack_; }
87
+ void NotifyOnStateChange(grpc_pollset_set* interested_parties,
88
+ grpc_connectivity_state* state,
89
+ grpc_closure* closure);
90
+ void Ping(grpc_closure* on_initiate, grpc_closure* on_ack);
91
+ grpc_error* CreateCall(const CallArgs& args, grpc_subchannel_call** call);
92
+
93
+ private:
94
+ grpc_channel_stack* channel_stack_;
95
+ };
96
+ } // namespace grpc_core
97
+
82
98
  grpc_subchannel* grpc_subchannel_ref(
83
99
  grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
84
100
  grpc_subchannel* grpc_subchannel_ref_from_weak_ref(
85
101
  grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
86
- void grpc_subchannel_unref(grpc_exec_ctx* exec_ctx,
87
- grpc_subchannel* channel
88
- GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
102
+ void grpc_subchannel_unref(
103
+ grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
89
104
  grpc_subchannel* grpc_subchannel_weak_ref(
90
105
  grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
91
- void grpc_subchannel_weak_unref(grpc_exec_ctx* exec_ctx,
92
- grpc_subchannel* channel
93
- GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
94
- grpc_connected_subchannel* grpc_connected_subchannel_ref(
95
- grpc_connected_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
96
- void grpc_connected_subchannel_unref(grpc_exec_ctx* exec_ctx,
97
- grpc_connected_subchannel* channel
98
- GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
106
+ void grpc_subchannel_weak_unref(
107
+ grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
99
108
  void grpc_subchannel_call_ref(
100
109
  grpc_subchannel_call* call GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
101
- void grpc_subchannel_call_unref(grpc_exec_ctx* exec_ctx,
102
- grpc_subchannel_call* call
103
- GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
104
-
105
- /** construct a subchannel call */
106
- typedef struct {
107
- grpc_polling_entity* pollent;
108
- grpc_slice path;
109
- gpr_timespec start_time;
110
- grpc_millis deadline;
111
- gpr_arena* arena;
112
- grpc_call_context_element* context;
113
- grpc_call_combiner* call_combiner;
114
- } grpc_connected_subchannel_call_args;
115
-
116
- grpc_error* grpc_connected_subchannel_create_call(
117
- grpc_exec_ctx* exec_ctx, grpc_connected_subchannel* connected_subchannel,
118
- const grpc_connected_subchannel_call_args* args,
119
- grpc_subchannel_call** subchannel_call);
120
-
121
- /** process a transport level op */
122
- void grpc_connected_subchannel_process_transport_op(
123
- grpc_exec_ctx* exec_ctx, grpc_connected_subchannel* subchannel,
124
- grpc_transport_op* op);
110
+ void grpc_subchannel_call_unref(
111
+ grpc_subchannel_call* call GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
125
112
 
126
113
  /** poll the current connectivity state of a channel */
127
114
  grpc_connectivity_state grpc_subchannel_check_connectivity(
@@ -130,29 +117,21 @@ grpc_connectivity_state grpc_subchannel_check_connectivity(
130
117
  /** Calls notify when the connectivity state of a channel becomes different
131
118
  from *state. Updates *state with the new state of the channel. */
132
119
  void grpc_subchannel_notify_on_state_change(
133
- grpc_exec_ctx* exec_ctx, grpc_subchannel* channel,
134
- grpc_pollset_set* interested_parties, grpc_connectivity_state* state,
135
- grpc_closure* notify);
136
- void grpc_connected_subchannel_notify_on_state_change(
137
- grpc_exec_ctx* exec_ctx, grpc_connected_subchannel* channel,
138
- grpc_pollset_set* interested_parties, grpc_connectivity_state* state,
139
- grpc_closure* notify);
140
- void grpc_connected_subchannel_ping(grpc_exec_ctx* exec_ctx,
141
- grpc_connected_subchannel* channel,
142
- grpc_closure* notify);
143
-
144
- /** retrieve the grpc_connected_subchannel - or NULL if called before
145
- the subchannel becomes connected */
146
- grpc_connected_subchannel* grpc_subchannel_get_connected_subchannel(
147
- grpc_subchannel* subchannel);
120
+ grpc_subchannel* channel, grpc_pollset_set* interested_parties,
121
+ grpc_connectivity_state* state, grpc_closure* notify);
122
+
123
+ /** retrieve the grpc_core::ConnectedSubchannel - or nullptr if not connected
124
+ * (which may happen before it initially connects or during transient failures)
125
+ * */
126
+ grpc_core::RefCountedPtr<grpc_core::ConnectedSubchannel>
127
+ grpc_subchannel_get_connected_subchannel(grpc_subchannel* c);
148
128
 
149
129
  /** return the subchannel index key for \a subchannel */
150
130
  const grpc_subchannel_key* grpc_subchannel_get_key(
151
131
  const grpc_subchannel* subchannel);
152
132
 
153
133
  /** continue processing a transport op */
154
- void grpc_subchannel_call_process_op(grpc_exec_ctx* exec_ctx,
155
- grpc_subchannel_call* subchannel_call,
134
+ void grpc_subchannel_call_process_op(grpc_subchannel_call* subchannel_call,
156
135
  grpc_transport_stream_op_batch* op);
157
136
 
158
137
  /** Must be called once per call. Sets the 'then_schedule_closure' argument for
@@ -176,13 +155,11 @@ struct grpc_subchannel_args {
176
155
  };
177
156
 
178
157
  /** create a subchannel given a connector */
179
- grpc_subchannel* grpc_subchannel_create(grpc_exec_ctx* exec_ctx,
180
- grpc_connector* connector,
158
+ grpc_subchannel* grpc_subchannel_create(grpc_connector* connector,
181
159
  const grpc_subchannel_args* args);
182
160
 
183
161
  /// Sets \a addr from \a args.
184
- void grpc_get_subchannel_address_arg(grpc_exec_ctx* exec_ctx,
185
- const grpc_channel_args* args,
162
+ void grpc_get_subchannel_address_arg(const grpc_channel_args* args,
186
163
  grpc_resolved_address* addr);
187
164
 
188
165
  /// Returns the URI string for the address to connect to.
@@ -192,8 +169,4 @@ const char* grpc_get_subchannel_address_uri_arg(const grpc_channel_args* args);
192
169
  /// Caller is responsible for freeing the string.
193
170
  grpc_arg grpc_create_subchannel_address_arg(const grpc_resolved_address* addr);
194
171
 
195
- #ifdef __cplusplus
196
- }
197
- #endif
198
-
199
172
  #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_H */
@@ -81,16 +81,14 @@ int grpc_subchannel_key_compare(const grpc_subchannel_key* a,
81
81
  return grpc_channel_args_compare(a->args.args, b->args.args);
82
82
  }
83
83
 
84
- void grpc_subchannel_key_destroy(grpc_exec_ctx* exec_ctx,
85
- grpc_subchannel_key* k) {
84
+ void grpc_subchannel_key_destroy(grpc_subchannel_key* k) {
86
85
  gpr_free((grpc_channel_args*)k->args.filters);
87
- grpc_channel_args_destroy(exec_ctx, (grpc_channel_args*)k->args.args);
86
+ grpc_channel_args_destroy((grpc_channel_args*)k->args.args);
88
87
  gpr_free(k);
89
88
  }
90
89
 
91
90
  static void sck_avl_destroy(void* p, void* user_data) {
92
- grpc_exec_ctx* exec_ctx = (grpc_exec_ctx*)user_data;
93
- grpc_subchannel_key_destroy(exec_ctx, (grpc_subchannel_key*)p);
91
+ grpc_subchannel_key_destroy((grpc_subchannel_key*)p);
94
92
  }
95
93
 
96
94
  static void* sck_avl_copy(void* p, void* unused) {
@@ -103,8 +101,7 @@ static long sck_avl_compare(void* a, void* b, void* unused) {
103
101
  }
104
102
 
105
103
  static void scv_avl_destroy(void* p, void* user_data) {
106
- grpc_exec_ctx* exec_ctx = (grpc_exec_ctx*)user_data;
107
- GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, (grpc_subchannel*)p, "subchannel_index");
104
+ GRPC_SUBCHANNEL_WEAK_UNREF((grpc_subchannel*)p, "subchannel_index");
108
105
  }
109
106
 
110
107
  static void* scv_avl_copy(void* p, void* unused) {
@@ -135,32 +132,29 @@ void grpc_subchannel_index_shutdown(void) {
135
132
 
136
133
  void grpc_subchannel_index_unref(void) {
137
134
  if (gpr_unref(&g_refcount)) {
138
- grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
139
135
  gpr_mu_destroy(&g_mu);
140
- gpr_avl_unref(g_subchannel_index, &exec_ctx);
141
- grpc_exec_ctx_finish(&exec_ctx);
136
+ gpr_avl_unref(g_subchannel_index, grpc_core::ExecCtx::Get());
142
137
  }
143
138
  }
144
139
 
145
140
  void grpc_subchannel_index_ref(void) { gpr_ref_non_zero(&g_refcount); }
146
141
 
147
- grpc_subchannel* grpc_subchannel_index_find(grpc_exec_ctx* exec_ctx,
148
- grpc_subchannel_key* key) {
142
+ grpc_subchannel* grpc_subchannel_index_find(grpc_subchannel_key* key) {
149
143
  // Lock, and take a reference to the subchannel index.
150
144
  // We don't need to do the search under a lock as avl's are immutable.
151
145
  gpr_mu_lock(&g_mu);
152
- gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx);
146
+ gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get());
153
147
  gpr_mu_unlock(&g_mu);
154
148
 
155
149
  grpc_subchannel* c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(
156
- (grpc_subchannel*)gpr_avl_get(index, key, exec_ctx), "index_find");
157
- gpr_avl_unref(index, exec_ctx);
150
+ (grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get()),
151
+ "index_find");
152
+ gpr_avl_unref(index, grpc_core::ExecCtx::Get());
158
153
 
159
154
  return c;
160
155
  }
161
156
 
162
- grpc_subchannel* grpc_subchannel_index_register(grpc_exec_ctx* exec_ctx,
163
- grpc_subchannel_key* key,
157
+ grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key,
164
158
  grpc_subchannel* constructed) {
165
159
  grpc_subchannel* c = nullptr;
166
160
  bool need_to_unref_constructed = false;
@@ -171,11 +165,11 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_exec_ctx* exec_ctx,
171
165
  // Compare and swap loop:
172
166
  // - take a reference to the current index
173
167
  gpr_mu_lock(&g_mu);
174
- gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx);
168
+ gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get());
175
169
  gpr_mu_unlock(&g_mu);
176
170
 
177
171
  // - Check to see if a subchannel already exists
178
- c = (grpc_subchannel*)gpr_avl_get(index, key, exec_ctx);
172
+ c = (grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get());
179
173
  if (c != nullptr) {
180
174
  c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(c, "index_register");
181
175
  }
@@ -184,9 +178,11 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_exec_ctx* exec_ctx,
184
178
  need_to_unref_constructed = true;
185
179
  } else {
186
180
  // no -> update the avl and compare/swap
187
- gpr_avl updated = gpr_avl_add(
188
- gpr_avl_ref(index, exec_ctx), subchannel_key_copy(key),
189
- GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"), exec_ctx);
181
+ gpr_avl updated =
182
+ gpr_avl_add(gpr_avl_ref(index, grpc_core::ExecCtx::Get()),
183
+ subchannel_key_copy(key),
184
+ GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"),
185
+ grpc_core::ExecCtx::Get());
190
186
 
191
187
  // it may happen (but it's expected to be unlikely)
192
188
  // that some other thread has changed the index:
@@ -198,41 +194,42 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_exec_ctx* exec_ctx,
198
194
  }
199
195
  gpr_mu_unlock(&g_mu);
200
196
 
201
- gpr_avl_unref(updated, exec_ctx);
197
+ gpr_avl_unref(updated, grpc_core::ExecCtx::Get());
202
198
  }
203
- gpr_avl_unref(index, exec_ctx);
199
+ gpr_avl_unref(index, grpc_core::ExecCtx::Get());
204
200
  }
205
201
 
206
202
  if (need_to_unref_constructed) {
207
- GRPC_SUBCHANNEL_UNREF(exec_ctx, constructed, "index_register");
203
+ GRPC_SUBCHANNEL_UNREF(constructed, "index_register");
208
204
  }
209
205
 
210
206
  return c;
211
207
  }
212
208
 
213
- void grpc_subchannel_index_unregister(grpc_exec_ctx* exec_ctx,
214
- grpc_subchannel_key* key,
209
+ void grpc_subchannel_index_unregister(grpc_subchannel_key* key,
215
210
  grpc_subchannel* constructed) {
216
211
  bool done = false;
217
212
  while (!done) {
218
213
  // Compare and swap loop:
219
214
  // - take a reference to the current index
220
215
  gpr_mu_lock(&g_mu);
221
- gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx);
216
+ gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get());
222
217
  gpr_mu_unlock(&g_mu);
223
218
 
224
219
  // Check to see if this key still refers to the previously
225
220
  // registered subchannel
226
- grpc_subchannel* c = (grpc_subchannel*)gpr_avl_get(index, key, exec_ctx);
221
+ grpc_subchannel* c =
222
+ (grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get());
227
223
  if (c != constructed) {
228
- gpr_avl_unref(index, exec_ctx);
224
+ gpr_avl_unref(index, grpc_core::ExecCtx::Get());
229
225
  break;
230
226
  }
231
227
 
232
228
  // compare and swap the update (some other thread may have
233
229
  // mutated the index behind us)
234
230
  gpr_avl updated =
235
- gpr_avl_remove(gpr_avl_ref(index, exec_ctx), key, exec_ctx);
231
+ gpr_avl_remove(gpr_avl_ref(index, grpc_core::ExecCtx::Get()), key,
232
+ grpc_core::ExecCtx::Get());
236
233
 
237
234
  gpr_mu_lock(&g_mu);
238
235
  if (index.root == g_subchannel_index.root) {
@@ -241,8 +238,8 @@ void grpc_subchannel_index_unregister(grpc_exec_ctx* exec_ctx,
241
238
  }
242
239
  gpr_mu_unlock(&g_mu);
243
240
 
244
- gpr_avl_unref(updated, exec_ctx);
245
- gpr_avl_unref(index, exec_ctx);
241
+ gpr_avl_unref(updated, grpc_core::ExecCtx::Get());
242
+ gpr_avl_unref(index, grpc_core::ExecCtx::Get());
246
243
  }
247
244
  }
248
245
 
@@ -21,10 +21,6 @@
21
21
 
22
22
  #include "src/core/ext/filters/client_channel/subchannel.h"
23
23
 
24
- #ifdef __cplusplus
25
- extern "C" {
26
- #endif
27
-
28
24
  /** \file Provides an index of active subchannels so that they can be
29
25
  shared amongst channels */
30
26
 
@@ -33,26 +29,22 @@ grpc_subchannel_key* grpc_subchannel_key_create(
33
29
  const grpc_subchannel_args* args);
34
30
 
35
31
  /** Destroy a subchannel key */
36
- void grpc_subchannel_key_destroy(grpc_exec_ctx* exec_ctx,
37
- grpc_subchannel_key* key);
32
+ void grpc_subchannel_key_destroy(grpc_subchannel_key* key);
38
33
 
39
34
  /** Given a subchannel key, find the subchannel registered for it.
40
35
  Returns NULL if no such channel exists.
41
36
  Thread-safe. */
42
- grpc_subchannel* grpc_subchannel_index_find(grpc_exec_ctx* exec_ctx,
43
- grpc_subchannel_key* key);
37
+ grpc_subchannel* grpc_subchannel_index_find(grpc_subchannel_key* key);
44
38
 
45
39
  /** Register a subchannel against a key.
46
40
  Takes ownership of \a constructed.
47
41
  Returns the registered subchannel. This may be different from
48
42
  \a constructed in the case of a registration race. */
49
- grpc_subchannel* grpc_subchannel_index_register(grpc_exec_ctx* exec_ctx,
50
- grpc_subchannel_key* key,
43
+ grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key,
51
44
  grpc_subchannel* constructed);
52
45
 
53
46
  /** Remove \a constructed as the registered subchannel for \a key. */
54
- void grpc_subchannel_index_unregister(grpc_exec_ctx* exec_ctx,
55
- grpc_subchannel_key* key,
47
+ void grpc_subchannel_index_unregister(grpc_subchannel_key* key,
56
48
  grpc_subchannel* constructed);
57
49
 
58
50
  int grpc_subchannel_key_compare(const grpc_subchannel_key* a,
@@ -82,8 +74,4 @@ void grpc_subchannel_index_unref(void);
82
74
  * force_creation set. */
83
75
  void grpc_subchannel_index_test_only_set_force_creation(bool force_creation);
84
76
 
85
- #ifdef __cplusplus
86
- }
87
- #endif
88
-
89
77
  #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H */
@@ -26,10 +26,10 @@
26
26
  #include <grpc/support/port_platform.h>
27
27
  #include <grpc/support/string_util.h>
28
28
 
29
+ #include "src/core/lib/gpr/string.h"
29
30
  #include "src/core/lib/slice/percent_encoding.h"
30
31
  #include "src/core/lib/slice/slice_internal.h"
31
32
  #include "src/core/lib/slice/slice_string_helpers.h"
32
- #include "src/core/lib/support/string.h"
33
33
 
34
34
  /** a size_t default value... maps to all 1's */
35
35
  #define NOT_SET (~(size_t)0)
@@ -56,8 +56,8 @@ static grpc_uri* bad_uri(const char* uri_text, size_t pos, const char* section,
56
56
  }
57
57
 
58
58
  /** Returns a copy of percent decoded \a src[begin, end) */
59
- static char* decode_and_copy_component(grpc_exec_ctx* exec_ctx, const char* src,
60
- size_t begin, size_t end) {
59
+ static char* decode_and_copy_component(const char* src, size_t begin,
60
+ size_t end) {
61
61
  grpc_slice component =
62
62
  (begin == NOT_SET || end == NOT_SET)
63
63
  ? grpc_empty_slice()
@@ -65,8 +65,8 @@ static char* decode_and_copy_component(grpc_exec_ctx* exec_ctx, const char* src,
65
65
  grpc_slice decoded_component =
66
66
  grpc_permissive_percent_decode_slice(component);
67
67
  char* out = grpc_dump_slice(decoded_component, GPR_DUMP_ASCII);
68
- grpc_slice_unref_internal(exec_ctx, component);
69
- grpc_slice_unref_internal(exec_ctx, decoded_component);
68
+ grpc_slice_unref_internal(component);
69
+ grpc_slice_unref_internal(decoded_component);
70
70
  return out;
71
71
  }
72
72
 
@@ -184,8 +184,7 @@ static void parse_query_parts(grpc_uri* uri) {
184
184
  }
185
185
  }
186
186
 
187
- grpc_uri* grpc_uri_parse(grpc_exec_ctx* exec_ctx, const char* uri_text,
188
- bool suppress_errors) {
187
+ grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors) {
189
188
  grpc_uri* uri;
190
189
  size_t scheme_begin = 0;
191
190
  size_t scheme_end = NOT_SET;
@@ -273,16 +272,13 @@ grpc_uri* grpc_uri_parse(grpc_exec_ctx* exec_ctx, const char* uri_text,
273
272
  }
274
273
 
275
274
  uri = (grpc_uri*)gpr_zalloc(sizeof(*uri));
276
- uri->scheme =
277
- decode_and_copy_component(exec_ctx, uri_text, scheme_begin, scheme_end);
278
- uri->authority = decode_and_copy_component(exec_ctx, uri_text,
279
- authority_begin, authority_end);
280
- uri->path =
281
- decode_and_copy_component(exec_ctx, uri_text, path_begin, path_end);
282
- uri->query =
283
- decode_and_copy_component(exec_ctx, uri_text, query_begin, query_end);
284
- uri->fragment = decode_and_copy_component(exec_ctx, uri_text, fragment_begin,
285
- fragment_end);
275
+ uri->scheme = decode_and_copy_component(uri_text, scheme_begin, scheme_end);
276
+ uri->authority =
277
+ decode_and_copy_component(uri_text, authority_begin, authority_end);
278
+ uri->path = decode_and_copy_component(uri_text, path_begin, path_end);
279
+ uri->query = decode_and_copy_component(uri_text, query_begin, query_end);
280
+ uri->fragment =
281
+ decode_and_copy_component(uri_text, fragment_begin, fragment_end);
286
282
  parse_query_parts(uri);
287
283
 
288
284
  return uri;