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
@@ -24,10 +24,6 @@
24
24
  #include "src/core/lib/debug/trace.h"
25
25
  #include "src/core/lib/iomgr/exec_ctx.h"
26
26
 
27
- #ifdef __cplusplus
28
- extern "C" {
29
- #endif
30
-
31
27
  /** \file Tracks resource usage against a pool.
32
28
 
33
29
  The current implementation tracks only memory usage, but in the future
@@ -69,8 +65,7 @@ extern grpc_core::TraceFlag grpc_resource_quota_trace;
69
65
 
70
66
  grpc_resource_quota* grpc_resource_quota_ref_internal(
71
67
  grpc_resource_quota* resource_quota);
72
- void grpc_resource_quota_unref_internal(grpc_exec_ctx* exec_ctx,
73
- grpc_resource_quota* resource_quota);
68
+ void grpc_resource_quota_unref_internal(grpc_resource_quota* resource_quota);
74
69
  grpc_resource_quota* grpc_resource_quota_from_channel_args(
75
70
  const grpc_channel_args* channel_args);
76
71
 
@@ -93,32 +88,26 @@ grpc_resource_quota* grpc_resource_user_quota(
93
88
  grpc_resource_user* resource_user);
94
89
 
95
90
  void grpc_resource_user_ref(grpc_resource_user* resource_user);
96
- void grpc_resource_user_unref(grpc_exec_ctx* exec_ctx,
97
- grpc_resource_user* resource_user);
98
- void grpc_resource_user_shutdown(grpc_exec_ctx* exec_ctx,
99
- grpc_resource_user* resource_user);
91
+ void grpc_resource_user_unref(grpc_resource_user* resource_user);
92
+ void grpc_resource_user_shutdown(grpc_resource_user* resource_user);
100
93
 
101
94
  /* Allocate from the resource user (and its quota).
102
95
  If optional_on_done is NULL, then allocate immediately. This may push the
103
96
  quota over-limit, at which point reclamation will kick in.
104
97
  If optional_on_done is non-NULL, it will be scheduled when the allocation has
105
98
  been granted by the quota. */
106
- void grpc_resource_user_alloc(grpc_exec_ctx* exec_ctx,
107
- grpc_resource_user* resource_user, size_t size,
99
+ void grpc_resource_user_alloc(grpc_resource_user* resource_user, size_t size,
108
100
  grpc_closure* optional_on_done);
109
101
  /* Release memory back to the quota */
110
- void grpc_resource_user_free(grpc_exec_ctx* exec_ctx,
111
- grpc_resource_user* resource_user, size_t size);
102
+ void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size);
112
103
  /* Post a memory reclaimer to the resource user. Only one benign and one
113
104
  destructive reclaimer can be posted at once. When executed, the reclaimer
114
105
  MUST call grpc_resource_user_finish_reclamation before it completes, to
115
106
  return control to the resource quota. */
116
- void grpc_resource_user_post_reclaimer(grpc_exec_ctx* exec_ctx,
117
- grpc_resource_user* resource_user,
107
+ void grpc_resource_user_post_reclaimer(grpc_resource_user* resource_user,
118
108
  bool destructive, grpc_closure* closure);
119
109
  /* Finish a reclamation step */
120
- void grpc_resource_user_finish_reclamation(grpc_exec_ctx* exec_ctx,
121
- grpc_resource_user* resource_user);
110
+ void grpc_resource_user_finish_reclamation(grpc_resource_user* resource_user);
122
111
 
123
112
  /* Helper to allocate slices from a resource user */
124
113
  typedef struct grpc_resource_user_slice_allocator {
@@ -145,17 +134,11 @@ void grpc_resource_user_slice_allocator_init(
145
134
  /* Allocate \a count slices of length \a length into \a dest. Only one request
146
135
  can be outstanding at a time. */
147
136
  void grpc_resource_user_alloc_slices(
148
- grpc_exec_ctx* exec_ctx,
149
137
  grpc_resource_user_slice_allocator* slice_allocator, size_t length,
150
138
  size_t count, grpc_slice_buffer* dest);
151
139
 
152
140
  /* Allocate one slice of length \a size synchronously. */
153
- grpc_slice grpc_resource_user_slice_malloc(grpc_exec_ctx* exec_ctx,
154
- grpc_resource_user* resource_user,
141
+ grpc_slice grpc_resource_user_slice_malloc(grpc_resource_user* resource_user,
155
142
  size_t size);
156
143
 
157
- #ifdef __cplusplus
158
- }
159
- #endif
160
-
161
144
  #endif /* GRPC_CORE_LIB_IOMGR_RESOURCE_QUOTA_H */
@@ -28,10 +28,10 @@
28
28
  #include <grpc/support/port_platform.h>
29
29
  #include <grpc/support/string_util.h>
30
30
 
31
+ #include "src/core/lib/gpr/string.h"
31
32
  #include "src/core/lib/iomgr/sockaddr.h"
32
33
  #include "src/core/lib/iomgr/socket_utils.h"
33
34
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
34
- #include "src/core/lib/support/string.h"
35
35
 
36
36
  static const uint8_t kV4MappedPrefix[] = {0, 0, 0, 0, 0, 0,
37
37
  0, 0, 0, 0, 0xff, 0xff};
@@ -21,10 +21,6 @@
21
21
 
22
22
  #include "src/core/lib/iomgr/resolve_address.h"
23
23
 
24
- #ifdef __cplusplus
25
- extern "C" {
26
- #endif
27
-
28
24
  /* Returns true if addr is an IPv4-mapped IPv6 address within the
29
25
  ::ffff:0.0.0.0/96 range, or false otherwise.
30
26
 
@@ -81,8 +77,4 @@ const char* grpc_sockaddr_get_uri_scheme(const grpc_resolved_address* addr);
81
77
 
82
78
  int grpc_sockaddr_get_family(const grpc_resolved_address* resolved_addr);
83
79
 
84
- #ifdef __cplusplus
85
- }
86
- #endif
87
-
88
80
  #endif /* GRPC_CORE_LIB_IOMGR_SOCKADDR_UTILS_H */
@@ -72,7 +72,7 @@ static void* socket_factory_arg_copy(void* p) {
72
72
  return grpc_socket_factory_ref((grpc_socket_factory*)p);
73
73
  }
74
74
 
75
- static void socket_factory_arg_destroy(grpc_exec_ctx* exec_ctx, void* p) {
75
+ static void socket_factory_arg_destroy(void* p) {
76
76
  grpc_socket_factory_unref((grpc_socket_factory*)p);
77
77
  }
78
78
 
@@ -23,10 +23,6 @@
23
23
  #include <grpc/support/sync.h>
24
24
  #include "src/core/lib/iomgr/resolve_address.h"
25
25
 
26
- #ifdef __cplusplus
27
- extern "C" {
28
- #endif
29
-
30
26
  /** The virtual table of grpc_socket_factory */
31
27
  typedef struct {
32
28
  /** Replacement for socket(2) */
@@ -68,8 +64,4 @@ int grpc_socket_factory_compare(grpc_socket_factory* a, grpc_socket_factory* b);
68
64
  grpc_socket_factory* grpc_socket_factory_ref(grpc_socket_factory* factory);
69
65
  void grpc_socket_factory_unref(grpc_socket_factory* factory);
70
66
 
71
- #ifdef __cplusplus
72
- }
73
- #endif
74
-
75
67
  #endif /* GRPC_CORE_LIB_IOMGR_SOCKET_FACTORY_POSIX_H */
@@ -63,7 +63,7 @@ static void* socket_mutator_arg_copy(void* p) {
63
63
  return grpc_socket_mutator_ref((grpc_socket_mutator*)p);
64
64
  }
65
65
 
66
- static void socket_mutator_arg_destroy(grpc_exec_ctx* exec_ctx, void* p) {
66
+ static void socket_mutator_arg_destroy(void* p) {
67
67
  grpc_socket_mutator_unref((grpc_socket_mutator*)p);
68
68
  }
69
69
 
@@ -24,13 +24,9 @@
24
24
 
25
25
  #include <stdbool.h>
26
26
 
27
- #ifdef __cplusplus
28
- extern "C" {
29
- #endif
30
-
31
27
  /** The virtual table of grpc_socket_mutator */
32
28
  typedef struct {
33
- /** Mutates the socket opitons of \a fd */
29
+ /** Mutates the socket options of \a fd */
34
30
  bool (*mutate_fd)(int fd, grpc_socket_mutator* mutator);
35
31
  /** Compare socket mutator \a a and \a b */
36
32
  int (*compare)(grpc_socket_mutator* a, grpc_socket_mutator* b);
@@ -60,8 +56,4 @@ int grpc_socket_mutator_compare(grpc_socket_mutator* a, grpc_socket_mutator* b);
60
56
  grpc_socket_mutator* grpc_socket_mutator_ref(grpc_socket_mutator* mutator);
61
57
  void grpc_socket_mutator_unref(grpc_socket_mutator* mutator);
62
58
 
63
- #ifdef __cplusplus
64
- }
65
- #endif
66
-
67
59
  #endif /* GRPC_CORE_LIB_IOMGR_SOCKET_MUTATOR_H */
@@ -21,15 +21,7 @@
21
21
 
22
22
  #include <stddef.h>
23
23
 
24
- #ifdef __cplusplus
25
- extern "C" {
26
- #endif
27
-
28
24
  /* A wrapper for inet_ntop on POSIX systems and InetNtop on Windows systems */
29
25
  const char* grpc_inet_ntop(int af, const void* src, char* dst, size_t size);
30
26
 
31
- #ifdef __cplusplus
32
- }
33
- #endif
34
-
35
27
  #endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_H */
@@ -40,8 +40,8 @@
40
40
  #include <grpc/support/log.h>
41
41
  #include <grpc/support/port_platform.h>
42
42
  #include <grpc/support/sync.h>
43
+ #include "src/core/lib/gpr/string.h"
43
44
  #include "src/core/lib/iomgr/sockaddr_utils.h"
44
- #include "src/core/lib/support/string.h"
45
45
 
46
46
  /* set a socket to non blocking mode */
47
47
  grpc_error* grpc_set_socket_nonblocking(int fd, int non_blocking) {
@@ -29,10 +29,6 @@
29
29
  #include "src/core/lib/iomgr/socket_factory_posix.h"
30
30
  #include "src/core/lib/iomgr/socket_mutator.h"
31
31
 
32
- #ifdef __cplusplus
33
- extern "C" {
34
- #endif
35
-
36
32
  /* a wrapper for accept or accept4 */
37
33
  int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock,
38
34
  int cloexec);
@@ -133,8 +129,4 @@ grpc_error* grpc_create_dualstack_socket_using_factory(
133
129
  grpc_socket_factory* factory, const grpc_resolved_address* addr, int type,
134
130
  int protocol, grpc_dualstack_mode* dsmode, int* newfd);
135
131
 
136
- #ifdef __cplusplus
137
- }
138
- #endif
139
-
140
132
  #endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_POSIX_H */
@@ -109,37 +109,34 @@ void grpc_winsocket_destroy(grpc_winsocket* winsocket) {
109
109
  -) The IOCP already completed in the background, and we need to call
110
110
  the callback now.
111
111
  -) The IOCP hasn't completed yet, and we're queuing it for later. */
112
- static void socket_notify_on_iocp(grpc_exec_ctx* exec_ctx,
113
- grpc_winsocket* socket, grpc_closure* closure,
112
+ static void socket_notify_on_iocp(grpc_winsocket* socket, grpc_closure* closure,
114
113
  grpc_winsocket_callback_info* info) {
115
114
  GPR_ASSERT(info->closure == NULL);
116
115
  gpr_mu_lock(&socket->state_mu);
117
116
  if (info->has_pending_iocp) {
118
117
  info->has_pending_iocp = 0;
119
- GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE);
118
+ GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE);
120
119
  } else {
121
120
  info->closure = closure;
122
121
  }
123
122
  gpr_mu_unlock(&socket->state_mu);
124
123
  }
125
124
 
126
- void grpc_socket_notify_on_write(grpc_exec_ctx* exec_ctx,
127
- grpc_winsocket* socket,
125
+ void grpc_socket_notify_on_write(grpc_winsocket* socket,
128
126
  grpc_closure* closure) {
129
- socket_notify_on_iocp(exec_ctx, socket, closure, &socket->write_info);
127
+ socket_notify_on_iocp(socket, closure, &socket->write_info);
130
128
  }
131
129
 
132
- void grpc_socket_notify_on_read(grpc_exec_ctx* exec_ctx, grpc_winsocket* socket,
133
- grpc_closure* closure) {
134
- socket_notify_on_iocp(exec_ctx, socket, closure, &socket->read_info);
130
+ void grpc_socket_notify_on_read(grpc_winsocket* socket, grpc_closure* closure) {
131
+ socket_notify_on_iocp(socket, closure, &socket->read_info);
135
132
  }
136
133
 
137
- void grpc_socket_become_ready(grpc_exec_ctx* exec_ctx, grpc_winsocket* socket,
134
+ void grpc_socket_become_ready(grpc_winsocket* socket,
138
135
  grpc_winsocket_callback_info* info) {
139
136
  GPR_ASSERT(!info->has_pending_iocp);
140
137
  gpr_mu_lock(&socket->state_mu);
141
138
  if (info->closure) {
142
- GRPC_CLOSURE_SCHED(exec_ctx, info->closure, GRPC_ERROR_NONE);
139
+ GRPC_CLOSURE_SCHED(info->closure, GRPC_ERROR_NONE);
143
140
  info->closure = NULL;
144
141
  } else {
145
142
  info->has_pending_iocp = 1;
@@ -31,10 +31,6 @@
31
31
  #include "src/core/lib/iomgr/exec_ctx.h"
32
32
  #include "src/core/lib/iomgr/iomgr_internal.h"
33
33
 
34
- #ifdef __cplusplus
35
- extern "C" {
36
- #endif
37
-
38
34
  /* This holds the data for an outstanding read or write on a socket.
39
35
  The mutex to protect the concurrent access to that data is the one
40
36
  inside the winsocket wrapper. */
@@ -102,22 +98,15 @@ void grpc_winsocket_shutdown(grpc_winsocket* socket);
102
98
  /* Destroy a socket. Should only be called if there's no pending operation. */
103
99
  void grpc_winsocket_destroy(grpc_winsocket* socket);
104
100
 
105
- void grpc_socket_notify_on_write(grpc_exec_ctx* exec_ctx,
106
- grpc_winsocket* winsocket,
101
+ void grpc_socket_notify_on_write(grpc_winsocket* winsocket,
107
102
  grpc_closure* closure);
108
103
 
109
- void grpc_socket_notify_on_read(grpc_exec_ctx* exec_ctx,
110
- grpc_winsocket* winsocket,
104
+ void grpc_socket_notify_on_read(grpc_winsocket* winsocket,
111
105
  grpc_closure* closure);
112
106
 
113
- void grpc_socket_become_ready(grpc_exec_ctx* exec_ctx,
114
- grpc_winsocket* winsocket,
107
+ void grpc_socket_become_ready(grpc_winsocket* winsocket,
115
108
  grpc_winsocket_callback_info* ci);
116
109
 
117
- #ifdef __cplusplus
118
- }
119
- #endif
120
-
121
110
  #endif
122
111
 
123
112
  #endif /* GRPC_CORE_LIB_IOMGR_SOCKET_WINDOWS_H */
@@ -25,24 +25,15 @@
25
25
  #include "src/core/lib/iomgr/pollset_set.h"
26
26
  #include "src/core/lib/iomgr/resolve_address.h"
27
27
 
28
- #ifdef __cplusplus
29
- extern "C" {
30
- #endif
31
-
32
28
  /* Asynchronously connect to an address (specified as (addr, len)), and call
33
29
  cb with arg and the completed connection when done (or call cb with arg and
34
30
  NULL on failure).
35
31
  interested_parties points to a set of pollsets that would be interested
36
32
  in this connection being established (in order to continue their work) */
37
- void grpc_tcp_client_connect(grpc_exec_ctx* exec_ctx, grpc_closure* on_connect,
38
- grpc_endpoint** endpoint,
33
+ void grpc_tcp_client_connect(grpc_closure* on_connect, grpc_endpoint** endpoint,
39
34
  grpc_pollset_set* interested_parties,
40
35
  const grpc_channel_args* channel_args,
41
36
  const grpc_resolved_address* addr,
42
37
  grpc_millis deadline);
43
38
 
44
- #ifdef __cplusplus
45
- }
46
- #endif
47
-
48
39
  #endif /* GRPC_CORE_LIB_IOMGR_TCP_CLIENT_H */
@@ -33,6 +33,7 @@
33
33
  #include <grpc/support/time.h>
34
34
 
35
35
  #include "src/core/lib/channel/channel_args.h"
36
+ #include "src/core/lib/gpr/string.h"
36
37
  #include "src/core/lib/iomgr/ev_posix.h"
37
38
  #include "src/core/lib/iomgr/iomgr_posix.h"
38
39
  #include "src/core/lib/iomgr/sockaddr_utils.h"
@@ -41,7 +42,6 @@
41
42
  #include "src/core/lib/iomgr/tcp_posix.h"
42
43
  #include "src/core/lib/iomgr/timer.h"
43
44
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
44
- #include "src/core/lib/support/string.h"
45
45
 
46
46
  extern grpc_core::TraceFlag grpc_tcp_trace;
47
47
 
@@ -96,7 +96,7 @@ done:
96
96
  return err;
97
97
  }
98
98
 
99
- static void tc_on_alarm(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
99
+ static void tc_on_alarm(void* acp, grpc_error* error) {
100
100
  int done;
101
101
  async_connect* ac = (async_connect*)acp;
102
102
  if (grpc_tcp_trace.enabled()) {
@@ -107,26 +107,24 @@ static void tc_on_alarm(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
107
107
  gpr_mu_lock(&ac->mu);
108
108
  if (ac->fd != nullptr) {
109
109
  grpc_fd_shutdown(
110
- exec_ctx, ac->fd,
111
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out"));
110
+ ac->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out"));
112
111
  }
113
112
  done = (--ac->refs == 0);
114
113
  gpr_mu_unlock(&ac->mu);
115
114
  if (done) {
116
115
  gpr_mu_destroy(&ac->mu);
117
116
  gpr_free(ac->addr_str);
118
- grpc_channel_args_destroy(exec_ctx, ac->channel_args);
117
+ grpc_channel_args_destroy(ac->channel_args);
119
118
  gpr_free(ac);
120
119
  }
121
120
  }
122
121
 
123
122
  grpc_endpoint* grpc_tcp_client_create_from_fd(
124
- grpc_exec_ctx* exec_ctx, grpc_fd* fd, const grpc_channel_args* channel_args,
125
- const char* addr_str) {
126
- return grpc_tcp_create(exec_ctx, fd, channel_args, addr_str);
123
+ grpc_fd* fd, const grpc_channel_args* channel_args, const char* addr_str) {
124
+ return grpc_tcp_create(fd, channel_args, addr_str);
127
125
  }
128
126
 
129
- static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
127
+ static void on_writable(void* acp, grpc_error* error) {
130
128
  async_connect* ac = (async_connect*)acp;
131
129
  int so_error = 0;
132
130
  socklen_t so_error_size;
@@ -150,7 +148,7 @@ static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
150
148
  ac->fd = nullptr;
151
149
  gpr_mu_unlock(&ac->mu);
152
150
 
153
- grpc_timer_cancel(exec_ctx, &ac->alarm);
151
+ grpc_timer_cancel(&ac->alarm);
154
152
 
155
153
  gpr_mu_lock(&ac->mu);
156
154
  if (error != GRPC_ERROR_NONE) {
@@ -172,9 +170,8 @@ static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
172
170
 
173
171
  switch (so_error) {
174
172
  case 0:
175
- grpc_pollset_set_del_fd(exec_ctx, ac->interested_parties, fd);
176
- *ep = grpc_tcp_client_create_from_fd(exec_ctx, fd, ac->channel_args,
177
- ac->addr_str);
173
+ grpc_pollset_set_del_fd(ac->interested_parties, fd);
174
+ *ep = grpc_tcp_client_create_from_fd(fd, ac->channel_args, ac->addr_str);
178
175
  fd = nullptr;
179
176
  break;
180
177
  case ENOBUFS:
@@ -194,7 +191,7 @@ static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
194
191
  don't do that! */
195
192
  gpr_log(GPR_ERROR, "kernel out of buffers");
196
193
  gpr_mu_unlock(&ac->mu);
197
- grpc_fd_notify_on_write(exec_ctx, fd, &ac->write_closure);
194
+ grpc_fd_notify_on_write(fd, &ac->write_closure);
198
195
  return;
199
196
  case ECONNREFUSED:
200
197
  /* This error shouldn't happen for anything other than connect(). */
@@ -209,12 +206,15 @@ static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
209
206
 
210
207
  finish:
211
208
  if (fd != nullptr) {
212
- grpc_pollset_set_del_fd(exec_ctx, ac->interested_parties, fd);
213
- grpc_fd_orphan(exec_ctx, fd, nullptr, nullptr, false /* already_closed */,
209
+ grpc_pollset_set_del_fd(ac->interested_parties, fd);
210
+ grpc_fd_orphan(fd, nullptr, nullptr, false /* already_closed */,
214
211
  "tcp_client_orphan");
215
212
  fd = nullptr;
216
213
  }
217
214
  done = (--ac->refs == 0);
215
+ // Create a copy of the data from "ac" to be accessed after the unlock, as
216
+ // "ac" and its contents may be deallocated by the time they are read.
217
+ const grpc_slice addr_str_slice = grpc_slice_from_copied_string(ac->addr_str);
218
218
  gpr_mu_unlock(&ac->mu);
219
219
  if (error != GRPC_ERROR_NONE) {
220
220
  char* error_descr;
@@ -228,89 +228,93 @@ finish:
228
228
  gpr_free(error_descr);
229
229
  gpr_free(desc);
230
230
  error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
231
- grpc_slice_from_copied_string(ac->addr_str));
231
+ addr_str_slice /* takes ownership */);
232
+ } else {
233
+ grpc_slice_unref(addr_str_slice);
232
234
  }
233
235
  if (done) {
236
+ // This is safe even outside the lock, because "done", the sentinel, is
237
+ // populated *inside* the lock.
234
238
  gpr_mu_destroy(&ac->mu);
235
239
  gpr_free(ac->addr_str);
236
- grpc_channel_args_destroy(exec_ctx, ac->channel_args);
240
+ grpc_channel_args_destroy(ac->channel_args);
237
241
  gpr_free(ac);
238
242
  }
239
- GRPC_CLOSURE_SCHED(exec_ctx, closure, error);
243
+ GRPC_CLOSURE_SCHED(closure, error);
240
244
  }
241
245
 
242
- static void tcp_client_connect_impl(grpc_exec_ctx* exec_ctx,
243
- grpc_closure* closure, grpc_endpoint** ep,
244
- grpc_pollset_set* interested_parties,
245
- const grpc_channel_args* channel_args,
246
- const grpc_resolved_address* addr,
247
- grpc_millis deadline) {
248
- int fd;
246
+ grpc_error* grpc_tcp_client_prepare_fd(const grpc_channel_args* channel_args,
247
+ const grpc_resolved_address* addr,
248
+ grpc_resolved_address* mapped_addr,
249
+ grpc_fd** fdobj) {
249
250
  grpc_dualstack_mode dsmode;
250
- int err;
251
- async_connect* ac;
252
- grpc_resolved_address addr6_v4mapped;
253
- grpc_resolved_address addr4_copy;
254
- grpc_fd* fdobj;
251
+ int fd;
252
+ grpc_error* error;
255
253
  char* name;
256
254
  char* addr_str;
257
- grpc_error* error;
258
-
259
- *ep = nullptr;
260
-
261
- /* Use dualstack sockets where available. */
262
- if (grpc_sockaddr_to_v4mapped(addr, &addr6_v4mapped)) {
263
- addr = &addr6_v4mapped;
255
+ *fdobj = nullptr;
256
+ /* Use dualstack sockets where available. Set mapped to v6 or v4 mapped to
257
+ v6. */
258
+ if (!grpc_sockaddr_to_v4mapped(addr, mapped_addr)) {
259
+ /* addr is v4 mapped to v6 or v6. */
260
+ memcpy(mapped_addr, addr, sizeof(*mapped_addr));
264
261
  }
265
-
266
- error = grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, &dsmode, &fd);
262
+ error =
263
+ grpc_create_dualstack_socket(mapped_addr, SOCK_STREAM, 0, &dsmode, &fd);
267
264
  if (error != GRPC_ERROR_NONE) {
268
- GRPC_CLOSURE_SCHED(exec_ctx, closure, error);
269
- return;
265
+ return error;
270
266
  }
271
267
  if (dsmode == GRPC_DSMODE_IPV4) {
272
- /* If we got an AF_INET socket, map the address back to IPv4. */
273
- GPR_ASSERT(grpc_sockaddr_is_v4mapped(addr, &addr4_copy));
274
- addr = &addr4_copy;
268
+ /* Original addr is either v4 or v4 mapped to v6. Set mapped_addr to v4. */
269
+ if (!grpc_sockaddr_is_v4mapped(addr, mapped_addr)) {
270
+ memcpy(mapped_addr, addr, sizeof(*mapped_addr));
271
+ }
275
272
  }
276
- if ((error = prepare_socket(addr, fd, channel_args)) != GRPC_ERROR_NONE) {
277
- GRPC_CLOSURE_SCHED(exec_ctx, closure, error);
278
- return;
273
+ if ((error = prepare_socket(mapped_addr, fd, channel_args)) !=
274
+ GRPC_ERROR_NONE) {
275
+ return error;
279
276
  }
277
+ addr_str = grpc_sockaddr_to_uri(mapped_addr);
278
+ gpr_asprintf(&name, "tcp-client:%s", addr_str);
279
+ *fdobj = grpc_fd_create(fd, name);
280
+ gpr_free(name);
281
+ gpr_free(addr_str);
282
+ return GRPC_ERROR_NONE;
283
+ }
280
284
 
285
+ void grpc_tcp_client_create_from_prepared_fd(
286
+ grpc_pollset_set* interested_parties, grpc_closure* closure, grpc_fd* fdobj,
287
+ const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
288
+ grpc_millis deadline, grpc_endpoint** ep) {
289
+ const int fd = grpc_fd_wrapped_fd(fdobj);
290
+ int err;
291
+ async_connect* ac;
281
292
  do {
282
293
  GPR_ASSERT(addr->len < ~(socklen_t)0);
283
294
  err = connect(fd, (const struct sockaddr*)addr->addr, (socklen_t)addr->len);
284
295
  } while (err < 0 && errno == EINTR);
285
-
286
- addr_str = grpc_sockaddr_to_uri(addr);
287
- gpr_asprintf(&name, "tcp-client:%s", addr_str);
288
-
289
- fdobj = grpc_fd_create(fd, name);
290
-
291
296
  if (err >= 0) {
292
- *ep =
293
- grpc_tcp_client_create_from_fd(exec_ctx, fdobj, channel_args, addr_str);
294
- GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_ERROR_NONE);
295
- goto done;
297
+ char* addr_str = grpc_sockaddr_to_uri(addr);
298
+ *ep = grpc_tcp_client_create_from_fd(fdobj, channel_args, addr_str);
299
+ gpr_free(addr_str);
300
+ GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE);
301
+ return;
296
302
  }
297
-
298
303
  if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
299
- grpc_fd_orphan(exec_ctx, fdobj, nullptr, nullptr,
300
- false /* already_closed */, "tcp_client_connect_error");
301
- GRPC_CLOSURE_SCHED(exec_ctx, closure, GRPC_OS_ERROR(errno, "connect"));
302
- goto done;
304
+ grpc_fd_orphan(fdobj, nullptr, nullptr, false /* already_closed */,
305
+ "tcp_client_connect_error");
306
+ GRPC_CLOSURE_SCHED(closure, GRPC_OS_ERROR(errno, "connect"));
307
+ return;
303
308
  }
304
309
 
305
- grpc_pollset_set_add_fd(exec_ctx, interested_parties, fdobj);
310
+ grpc_pollset_set_add_fd(interested_parties, fdobj);
306
311
 
307
312
  ac = (async_connect*)gpr_malloc(sizeof(async_connect));
308
313
  ac->closure = closure;
309
314
  ac->ep = ep;
310
315
  ac->fd = fdobj;
311
316
  ac->interested_parties = interested_parties;
312
- ac->addr_str = addr_str;
313
- addr_str = nullptr;
317
+ ac->addr_str = grpc_sockaddr_to_uri(addr);
314
318
  gpr_mu_init(&ac->mu);
315
319
  ac->refs = 2;
316
320
  GRPC_CLOSURE_INIT(&ac->write_closure, on_writable, ac,
@@ -324,32 +328,44 @@ static void tcp_client_connect_impl(grpc_exec_ctx* exec_ctx,
324
328
 
325
329
  gpr_mu_lock(&ac->mu);
326
330
  GRPC_CLOSURE_INIT(&ac->on_alarm, tc_on_alarm, ac, grpc_schedule_on_exec_ctx);
327
- grpc_timer_init(exec_ctx, &ac->alarm, deadline, &ac->on_alarm);
328
- grpc_fd_notify_on_write(exec_ctx, ac->fd, &ac->write_closure);
331
+ grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm);
332
+ grpc_fd_notify_on_write(ac->fd, &ac->write_closure);
329
333
  gpr_mu_unlock(&ac->mu);
334
+ }
330
335
 
331
- done:
332
- gpr_free(name);
333
- gpr_free(addr_str);
336
+ static void tcp_client_connect_impl(grpc_closure* closure, grpc_endpoint** ep,
337
+ grpc_pollset_set* interested_parties,
338
+ const grpc_channel_args* channel_args,
339
+ const grpc_resolved_address* addr,
340
+ grpc_millis deadline) {
341
+ grpc_resolved_address mapped_addr;
342
+ grpc_fd* fdobj = nullptr;
343
+ grpc_error* error;
344
+ *ep = nullptr;
345
+ if ((error = grpc_tcp_client_prepare_fd(channel_args, addr, &mapped_addr,
346
+ &fdobj)) != GRPC_ERROR_NONE) {
347
+ GRPC_CLOSURE_SCHED(closure, error);
348
+ return;
349
+ }
350
+ grpc_tcp_client_create_from_prepared_fd(interested_parties, closure, fdobj,
351
+ channel_args, &mapped_addr, deadline,
352
+ ep);
334
353
  }
335
354
 
336
355
  // overridden by api_fuzzer.c
337
- extern "C" {
338
356
  void (*grpc_tcp_client_connect_impl)(
339
- grpc_exec_ctx* exec_ctx, grpc_closure* closure, grpc_endpoint** ep,
357
+ grpc_closure* closure, grpc_endpoint** ep,
340
358
  grpc_pollset_set* interested_parties, const grpc_channel_args* channel_args,
341
359
  const grpc_resolved_address* addr,
342
360
  grpc_millis deadline) = tcp_client_connect_impl;
343
- }
344
361
 
345
- void grpc_tcp_client_connect(grpc_exec_ctx* exec_ctx, grpc_closure* closure,
346
- grpc_endpoint** ep,
362
+ void grpc_tcp_client_connect(grpc_closure* closure, grpc_endpoint** ep,
347
363
  grpc_pollset_set* interested_parties,
348
364
  const grpc_channel_args* channel_args,
349
365
  const grpc_resolved_address* addr,
350
366
  grpc_millis deadline) {
351
- grpc_tcp_client_connect_impl(exec_ctx, closure, ep, interested_parties,
352
- channel_args, addr, deadline);
367
+ grpc_tcp_client_connect_impl(closure, ep, interested_parties, channel_args,
368
+ addr, deadline);
353
369
  }
354
370
 
355
371
  #endif