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
@@ -22,7 +22,6 @@
22
22
  #include <grpc/impl/codegen/port_platform.h>
23
23
 
24
24
  #include <grpc/impl/codegen/compression_types.h>
25
- #include <grpc/impl/codegen/exec_ctx_fwd.h>
26
25
  #include <grpc/impl/codegen/gpr_types.h>
27
26
  #include <grpc/impl/codegen/slice.h>
28
27
  #include <grpc/impl/codegen/status.h>
@@ -85,7 +84,7 @@ typedef enum {
85
84
 
86
85
  typedef struct grpc_arg_pointer_vtable {
87
86
  void* (*copy)(void* p);
88
- void (*destroy)(grpc_exec_ctx* exec_ctx, void* p);
87
+ void (*destroy)(void* p);
89
88
  int (*cmp)(void* p, void* q);
90
89
  } grpc_arg_pointer_vtable;
91
90
 
@@ -173,6 +173,7 @@
173
173
  #endif /* _LP64 */
174
174
  #ifdef __GLIBC__
175
175
  #define GPR_POSIX_CRASH_HANDLER 1
176
+ #define GPR_LINUX_PTHREAD_NAME 1
176
177
  #else /* musl libc */
177
178
  #define GPR_MUSL_LIBC_COMPAT 1
178
179
  #endif
@@ -194,11 +195,25 @@
194
195
  #define GPR_PTHREAD_TLS 1
195
196
  #else /* __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 */
196
197
  #define GPR_CPU_POSIX 1
198
+ /* TODO(vjpai): there is a reported issue in bazel build for Mac where __thread
199
+ in a header is currently not working (bazelbuild/bazel#4341). Remove
200
+ the following conditional and use GPR_GCC_TLS when that is fixed */
201
+ #ifndef GRPC_BAZEL_BUILD
197
202
  #define GPR_GCC_TLS 1
203
+ #else /* GRPC_BAZEL_BUILD */
204
+ #define GPR_PTHREAD_TLS 1
205
+ #endif /* GRPC_BAZEL_BUILD */
206
+ #define GPR_APPLE_PTHREAD_NAME 1
198
207
  #endif
199
208
  #else /* __MAC_OS_X_VERSION_MIN_REQUIRED */
200
209
  #define GPR_CPU_POSIX 1
210
+ /* TODO(vjpai): Remove the following conditional and use only GPR_GCC_TLS
211
+ when bazelbuild/bazel#4341 is fixed */
212
+ #ifndef GRPC_BAZEL_BUILD
201
213
  #define GPR_GCC_TLS 1
214
+ #else /* GRPC_BAZEL_BUILD */
215
+ #define GPR_PTHREAD_TLS 1
216
+ #endif /* GRPC_BAZEL_BUILD */
202
217
  #endif
203
218
  #define GPR_POSIX_CRASH_HANDLER 1
204
219
  #endif
@@ -303,20 +318,23 @@
303
318
  * This is primarily because of linker problems and toolchain misconfiguration:
304
319
  * TLS isn't supported until NDK r12b per
305
320
  * https://developer.android.com/ndk/downloads/revision_history.html
321
+ * TLS also does not work with Android NDK if GCC is being used as the compiler
322
+ * instead of Clang.
306
323
  * Since NDK r16, `__NDK_MAJOR__` and `__NDK_MINOR__` are defined in
307
324
  * <android/ndk-version.h>. For NDK < r16, users should define these macros,
308
325
  * e.g. `-D__NDK_MAJOR__=11 -D__NKD_MINOR__=0` for NDK r11. */
309
- #if defined(__ANDROID__) && defined(__clang__) && defined(GPR_GCC_TLS)
326
+ #if defined(__ANDROID__) && defined(GPR_GCC_TLS)
310
327
  #if __has_include(<android/ndk-version.h>)
311
328
  #include <android/ndk-version.h>
312
329
  #endif /* __has_include(<android/ndk-version.h>) */
313
- #if defined(__ANDROID__) && defined(__clang__) && defined(__NDK_MAJOR__) && \
314
- defined(__NDK_MINOR__) && \
315
- ((__NDK_MAJOR__ < 12) || ((__NDK_MAJOR__ == 12) && (__NDK_MINOR__ < 1)))
330
+ #if (defined(__clang__) && defined(__NDK_MAJOR__) && defined(__NDK_MINOR__) && \
331
+ ((__NDK_MAJOR__ < 12) || \
332
+ ((__NDK_MAJOR__ == 12) && (__NDK_MINOR__ < 1)))) || \
333
+ (defined(__GNUC__) && !defined(__clang__))
316
334
  #undef GPR_GCC_TLS
317
335
  #define GPR_PTHREAD_TLS 1
318
336
  #endif
319
- #endif /*defined(__ANDROID__) && defined(__clang__) && defined(GPR_GCC_TLS) */
337
+ #endif /*defined(__ANDROID__) && defined(GPR_GCC_TLS) */
320
338
 
321
339
  #if defined(__has_include)
322
340
  #if __has_include(<atomic>)
@@ -416,6 +434,14 @@ typedef unsigned __int64 uint64_t;
416
434
  #endif
417
435
  #endif
418
436
 
437
+ #ifndef GRPC_UNUSED
438
+ #if defined(__GNUC__) && !defined(__MINGW32__)
439
+ #define GRPC_UNUSED __attribute__((unused))
440
+ #else
441
+ #define GRPC_UNUSED
442
+ #endif
443
+ #endif
444
+
419
445
  #ifndef GPR_PRINT_FORMAT_CHECK
420
446
  #ifdef __GNUC__
421
447
  #define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS) \
@@ -459,6 +485,21 @@ typedef unsigned __int64 uint64_t;
459
485
  #endif /* GPR_ATTRIBUTE_NO_TSAN (2) */
460
486
  #endif /* GPR_ATTRIBUTE_NO_TSAN (1) */
461
487
 
488
+ /* GRPC_ALLOW_EXCEPTIONS should be 0 or 1 if exceptions are allowed or not */
489
+ #ifndef GRPC_ALLOW_EXCEPTIONS
490
+ /* If not already set, set to 1 on Windows (style guide standard) but to
491
+ * 0 on non-Windows platforms unless the compiler defines __EXCEPTIONS */
492
+ #ifdef GPR_WINDOWS
493
+ #define GRPC_ALLOW_EXCEPTIONS 1
494
+ #else /* GPR_WINDOWS */
495
+ #ifdef __EXCEPTIONS
496
+ #define GRPC_ALLOW_EXCEPTIONS 1
497
+ #else /* __EXCEPTIONS */
498
+ #define GRPC_ALLOW_EXCEPTIONS 0
499
+ #endif /* __EXCEPTIONS */
500
+ #endif /* __GPR_WINDOWS */
501
+ #endif /* GRPC_ALLOW_EXCEPTIONS */
502
+
462
503
  #ifndef __STDC_FORMAT_MACROS
463
504
  #define __STDC_FORMAT_MACROS
464
505
  #endif
@@ -23,7 +23,6 @@
23
23
 
24
24
  #include <stddef.h>
25
25
 
26
- #include <grpc/impl/codegen/exec_ctx_fwd.h>
27
26
  #include <grpc/impl/codegen/gpr_slice.h>
28
27
 
29
28
  typedef struct grpc_slice grpc_slice;
@@ -43,7 +42,7 @@ typedef struct grpc_slice grpc_slice;
43
42
 
44
43
  typedef struct grpc_slice_refcount_vtable {
45
44
  void (*ref)(void*);
46
- void (*unref)(grpc_exec_ctx* exec_ctx, void*);
45
+ void (*unref)(void*);
47
46
  int (*eq)(grpc_slice a, grpc_slice b);
48
47
  uint32_t (*hash)(grpc_slice slice);
49
48
  } grpc_slice_refcount_vtable;
@@ -7,7 +7,6 @@ framework module grpc {
7
7
  header "support/avl.h"
8
8
  header "support/cmdline.h"
9
9
  header "support/cpu.h"
10
- header "support/histogram.h"
11
10
  header "support/host_port.h"
12
11
  header "support/log.h"
13
12
  header "support/log_windows.h"
@@ -31,7 +30,6 @@ framework module grpc {
31
30
  header "impl/codegen/byte_buffer_reader.h"
32
31
  header "impl/codegen/compression_types.h"
33
32
  header "impl/codegen/connectivity_state.h"
34
- header "impl/codegen/exec_ctx_fwd.h"
35
33
  header "impl/codegen/grpc_types.h"
36
34
  header "impl/codegen/propagation_bits.h"
37
35
  header "impl/codegen/slice.h"
@@ -67,8 +67,7 @@ GPRAPI void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer* src,
67
67
  size_t n,
68
68
  grpc_slice_buffer* dst);
69
69
  /** move the first n bytes of src into dst (copying them) */
70
- GPRAPI void grpc_slice_buffer_move_first_into_buffer(grpc_exec_ctx* exec_ctx,
71
- grpc_slice_buffer* src,
70
+ GPRAPI void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer* src,
72
71
  size_t n, void* dst);
73
72
  /** take the first slice in the slice buffer */
74
73
  GPRAPI grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer* src);
@@ -73,12 +73,14 @@ GPRAPI void gpr_log_verbosity_init(void);
73
73
  /** Log overrides: applications can use this API to intercept logging calls
74
74
  and use their own implementations */
75
75
 
76
- typedef struct {
76
+ struct gpr_log_func_args {
77
77
  const char* file;
78
78
  int line;
79
79
  gpr_log_severity severity;
80
80
  const char* message;
81
- } gpr_log_func_args;
81
+ };
82
+
83
+ typedef struct gpr_log_func_args gpr_log_func_args;
82
84
 
83
85
  typedef void (*gpr_log_func)(gpr_log_func_args* args);
84
86
  GPRAPI void gpr_set_log_function(gpr_log_func func);
@@ -42,9 +42,12 @@ typedef struct {
42
42
 
43
43
  /** Create a new thread running (*thd_body)(arg) and place its thread identifier
44
44
  in *t, and return true. If there are insufficient resources, return false.
45
+ thd_name is the name of the thread for identification purposes on platforms
46
+ that support thread naming.
45
47
  If options==NULL, default options are used.
46
48
  The thread is immediately runnable, and exits when (*thd_body)() returns. */
47
- GPRAPI int gpr_thd_new(gpr_thd_id* t, void (*thd_body)(void* arg), void* arg,
49
+ GPRAPI int gpr_thd_new(gpr_thd_id* t, const char* thd_name,
50
+ void (*thd_body)(void* arg), void* arg,
48
51
  const gpr_thd_options* options);
49
52
 
50
53
  /** Return a gpr_thd_options struct with all fields set to defaults. */
@@ -32,6 +32,12 @@
32
32
  GPR_TLS_DECL(foo);
33
33
  Thread locals always have static scope.
34
34
 
35
+ Declaring a thread local class variable 'foo':
36
+ GPR_TLS_CLASS_DECL(foo);
37
+
38
+ Defining the thread local class variable:
39
+ GPR_TLS_CLASS_DEF(foo);
40
+
35
41
  Initializing a thread local (must be done at library initialization
36
42
  time):
37
43
  gpr_tls_init(&foo);
@@ -26,44 +26,6 @@
26
26
  /** Thread local storage based on gcc compiler primitives.
27
27
  #include tls.h to use this - and see that file for documentation */
28
28
 
29
- #ifndef NDEBUG
30
-
31
- struct gpr_gcc_thread_local {
32
- intptr_t value;
33
- bool* inited;
34
- };
35
-
36
- #define GPR_TLS_DECL(name) \
37
- static bool name##_inited = false; \
38
- static __thread struct gpr_gcc_thread_local name = {0, &(name##_inited)}
39
-
40
- #define gpr_tls_init(tls) \
41
- do { \
42
- GPR_ASSERT(*((tls)->inited) == false); \
43
- *((tls)->inited) = true; \
44
- } while (0)
45
-
46
- /** It is allowed to call gpr_tls_init after gpr_tls_destroy is called. */
47
- #define gpr_tls_destroy(tls) \
48
- do { \
49
- GPR_ASSERT(*((tls)->inited)); \
50
- *((tls)->inited) = false; \
51
- } while (0)
52
-
53
- #define gpr_tls_set(tls, new_value) \
54
- do { \
55
- GPR_ASSERT(*((tls)->inited)); \
56
- (tls)->value = (new_value); \
57
- } while (0)
58
-
59
- #define gpr_tls_get(tls) \
60
- ({ \
61
- GPR_ASSERT(*((tls)->inited)); \
62
- (tls)->value; \
63
- })
64
-
65
- #else /* NDEBUG */
66
-
67
29
  struct gpr_gcc_thread_local {
68
30
  intptr_t value;
69
31
  };
@@ -71,6 +33,11 @@ struct gpr_gcc_thread_local {
71
33
  #define GPR_TLS_DECL(name) \
72
34
  static __thread struct gpr_gcc_thread_local name = {0}
73
35
 
36
+ #define GPR_TLS_CLASS_DECL(name) \
37
+ static __thread struct gpr_gcc_thread_local name
38
+
39
+ #define GPR_TLS_CLASS_DEF(name) __thread struct gpr_gcc_thread_local name = {0}
40
+
74
41
  #define gpr_tls_init(tls) \
75
42
  do { \
76
43
  } while (0)
@@ -80,6 +47,4 @@ struct gpr_gcc_thread_local {
80
47
  #define gpr_tls_set(tls, new_value) (((tls)->value) = (new_value))
81
48
  #define gpr_tls_get(tls) ((tls)->value)
82
49
 
83
- #endif /* NDEBUG */
84
-
85
50
  #endif /* GRPC_SUPPORT_TLS_GCC_H */
@@ -26,9 +26,18 @@ struct gpr_msvc_thread_local {
26
26
  intptr_t value;
27
27
  };
28
28
 
29
+ /** Use GPR_TLS_DECL to declare tls static variables outside a class */
29
30
  #define GPR_TLS_DECL(name) \
30
31
  static __declspec(thread) struct gpr_msvc_thread_local name = {0}
31
32
 
33
+ /** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class.
34
+ * GPR_TLS_CLASS_DEF needs to be called to define this member. */
35
+ #define GPR_TLS_CLASS_DECL(name) \
36
+ static __declspec(thread) struct gpr_msvc_thread_local name
37
+
38
+ #define GPR_TLS_CLASS_DEF(name) \
39
+ __declspec(thread) struct gpr_msvc_thread_local name = {0}
40
+
32
41
  #define gpr_tls_init(tls) \
33
42
  do { \
34
43
  } while (0)
@@ -29,8 +29,17 @@ struct gpr_pthread_thread_local {
29
29
  pthread_key_t key;
30
30
  };
31
31
 
32
+ /** Use GPR_TLS_DECL to declare tls static variables outside a class */
32
33
  #define GPR_TLS_DECL(name) static struct gpr_pthread_thread_local name = {0}
33
34
 
35
+ /** Use GPR_TLS_CLASS_DECL to declare tls static variable members of a class.
36
+ * GPR_TLS_CLASS_DEF needs to be called to define this member. */
37
+ #define GPR_TLS_CLASS_DECL(name) static struct gpr_pthread_thread_local name
38
+
39
+ /** Use GPR_TLS_CLASS_DEF to declare tls static variable members of a class.
40
+ * GPR_TLS_CLASS_DEF needs to be called to define this member. */
41
+ #define GPR_TLS_CLASS_DEF(name) struct gpr_pthread_thread_local name = {0}
42
+
34
43
  #define gpr_tls_init(tls) GPR_ASSERT(0 == pthread_key_create(&(tls)->key, NULL))
35
44
  #define gpr_tls_destroy(tls) pthread_key_delete((tls)->key)
36
45
  #define gpr_tls_get(tls) ((intptr_t)pthread_getspecific((tls)->key))
@@ -23,17 +23,18 @@
23
23
  #include <grpc/support/log.h>
24
24
  #include <grpc/support/sync.h>
25
25
  #include "src/core/ext/filters/client_channel/client_channel.h"
26
+ #include "src/core/lib/gpr/env.h"
27
+ #include "src/core/lib/gpr/string.h"
26
28
  #include "src/core/lib/iomgr/error.h"
27
29
  #include "src/core/lib/iomgr/pollset.h"
28
30
  #include "src/core/lib/iomgr/timer.h"
29
- #include "src/core/lib/support/env.h"
30
- #include "src/core/lib/support/string.h"
31
31
  #include "src/core/lib/surface/channel.h"
32
32
  #include "src/core/lib/surface/completion_queue.h"
33
33
 
34
34
  #define DEFAULT_POLL_INTERVAL_MS 5000
35
35
 
36
- typedef struct backup_poller {
36
+ namespace {
37
+ struct backup_poller {
37
38
  grpc_timer polling_timer;
38
39
  grpc_closure run_poller_closure;
39
40
  grpc_closure shutdown_closure;
@@ -42,7 +43,8 @@ typedef struct backup_poller {
42
43
  bool shutting_down; // guarded by pollset_mu
43
44
  gpr_refcount refs;
44
45
  gpr_refcount shutdown_refs;
45
- } backup_poller;
46
+ };
47
+ } // namespace
46
48
 
47
49
  static gpr_once g_once = GPR_ONCE_INIT;
48
50
  static gpr_mu g_poller_mu;
@@ -69,61 +71,62 @@ static void init_globals() {
69
71
  gpr_free(env);
70
72
  }
71
73
 
72
- static void backup_poller_shutdown_unref(grpc_exec_ctx* exec_ctx,
73
- backup_poller* p) {
74
+ static void backup_poller_shutdown_unref(backup_poller* p) {
74
75
  if (gpr_unref(&p->shutdown_refs)) {
75
- grpc_pollset_destroy(exec_ctx, p->pollset);
76
+ grpc_pollset_destroy(p->pollset);
76
77
  gpr_free(p->pollset);
77
78
  gpr_free(p);
78
79
  }
79
80
  }
80
81
 
81
- static void done_poller(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
82
- backup_poller_shutdown_unref(exec_ctx, (backup_poller*)arg);
82
+ static void done_poller(void* arg, grpc_error* error) {
83
+ backup_poller_shutdown_unref((backup_poller*)arg);
83
84
  }
84
85
 
85
- static void g_poller_unref(grpc_exec_ctx* exec_ctx) {
86
+ static void g_poller_unref() {
87
+ gpr_mu_lock(&g_poller_mu);
86
88
  if (gpr_unref(&g_poller->refs)) {
87
- gpr_mu_lock(&g_poller_mu);
88
89
  backup_poller* p = g_poller;
89
90
  g_poller = nullptr;
90
91
  gpr_mu_unlock(&g_poller_mu);
91
92
  gpr_mu_lock(p->pollset_mu);
92
93
  p->shutting_down = true;
93
- grpc_pollset_shutdown(exec_ctx, p->pollset,
94
- GRPC_CLOSURE_INIT(&p->shutdown_closure, done_poller,
95
- p, grpc_schedule_on_exec_ctx));
94
+ grpc_pollset_shutdown(
95
+ p->pollset, GRPC_CLOSURE_INIT(&p->shutdown_closure, done_poller, p,
96
+ grpc_schedule_on_exec_ctx));
96
97
  gpr_mu_unlock(p->pollset_mu);
97
- grpc_timer_cancel(exec_ctx, &p->polling_timer);
98
+ grpc_timer_cancel(&p->polling_timer);
99
+ } else {
100
+ gpr_mu_unlock(&g_poller_mu);
98
101
  }
99
102
  }
100
103
 
101
- static void run_poller(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
104
+ static void run_poller(void* arg, grpc_error* error) {
102
105
  backup_poller* p = (backup_poller*)arg;
103
106
  if (error != GRPC_ERROR_NONE) {
104
107
  if (error != GRPC_ERROR_CANCELLED) {
105
108
  GRPC_LOG_IF_ERROR("run_poller", GRPC_ERROR_REF(error));
106
109
  }
107
- backup_poller_shutdown_unref(exec_ctx, p);
110
+ backup_poller_shutdown_unref(p);
108
111
  return;
109
112
  }
110
113
  gpr_mu_lock(p->pollset_mu);
111
114
  if (p->shutting_down) {
112
115
  gpr_mu_unlock(p->pollset_mu);
113
- backup_poller_shutdown_unref(exec_ctx, p);
116
+ backup_poller_shutdown_unref(p);
114
117
  return;
115
118
  }
116
- grpc_error* err = grpc_pollset_work(exec_ctx, p->pollset, nullptr,
117
- grpc_exec_ctx_now(exec_ctx));
119
+ grpc_error* err =
120
+ grpc_pollset_work(p->pollset, nullptr, grpc_core::ExecCtx::Get()->Now());
118
121
  gpr_mu_unlock(p->pollset_mu);
119
122
  GRPC_LOG_IF_ERROR("Run client channel backup poller", err);
120
- grpc_timer_init(exec_ctx, &p->polling_timer,
121
- grpc_exec_ctx_now(exec_ctx) + g_poll_interval_ms,
123
+ grpc_timer_init(&p->polling_timer,
124
+ grpc_core::ExecCtx::Get()->Now() + g_poll_interval_ms,
122
125
  &p->run_poller_closure);
123
126
  }
124
127
 
125
128
  void grpc_client_channel_start_backup_polling(
126
- grpc_exec_ctx* exec_ctx, grpc_pollset_set* interested_parties) {
129
+ grpc_pollset_set* interested_parties) {
127
130
  gpr_once_init(&g_once, init_globals);
128
131
  if (g_poll_interval_ms == 0) {
129
132
  return;
@@ -139,8 +142,8 @@ void grpc_client_channel_start_backup_polling(
139
142
  gpr_ref_init(&g_poller->shutdown_refs, 2);
140
143
  GRPC_CLOSURE_INIT(&g_poller->run_poller_closure, run_poller, g_poller,
141
144
  grpc_schedule_on_exec_ctx);
142
- grpc_timer_init(exec_ctx, &g_poller->polling_timer,
143
- grpc_exec_ctx_now(exec_ctx) + g_poll_interval_ms,
145
+ grpc_timer_init(&g_poller->polling_timer,
146
+ grpc_core::ExecCtx::Get()->Now() + g_poll_interval_ms,
144
147
  &g_poller->run_poller_closure);
145
148
  }
146
149
 
@@ -152,14 +155,14 @@ void grpc_client_channel_start_backup_polling(
152
155
  grpc_pollset* pollset = g_poller->pollset;
153
156
  gpr_mu_unlock(&g_poller_mu);
154
157
 
155
- grpc_pollset_set_add_pollset(exec_ctx, interested_parties, pollset);
158
+ grpc_pollset_set_add_pollset(interested_parties, pollset);
156
159
  }
157
160
 
158
161
  void grpc_client_channel_stop_backup_polling(
159
- grpc_exec_ctx* exec_ctx, grpc_pollset_set* interested_parties) {
162
+ grpc_pollset_set* interested_parties) {
160
163
  if (g_poll_interval_ms == 0) {
161
164
  return;
162
165
  }
163
- grpc_pollset_set_del_pollset(exec_ctx, interested_parties, g_poller->pollset);
164
- g_poller_unref(exec_ctx);
166
+ grpc_pollset_set_del_pollset(interested_parties, g_poller->pollset);
167
+ g_poller_unref();
165
168
  }