grpc 1.7.3 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (616) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2106 -2116
  3. data/include/grpc/census.h +1 -432
  4. data/include/grpc/compression.h +9 -9
  5. data/include/grpc/grpc.h +115 -98
  6. data/include/grpc/grpc_cronet.h +3 -3
  7. data/include/grpc/grpc_posix.h +4 -4
  8. data/include/grpc/grpc_security.h +160 -88
  9. data/include/grpc/grpc_security_constants.h +7 -0
  10. data/include/grpc/impl/codegen/atm.h +9 -1
  11. data/include/grpc/impl/codegen/atm_gcc_atomic.h +13 -4
  12. data/include/grpc/impl/codegen/atm_gcc_sync.h +6 -5
  13. data/include/grpc/impl/codegen/atm_windows.h +23 -22
  14. data/include/grpc/impl/codegen/byte_buffer.h +14 -14
  15. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -2
  16. data/include/grpc/impl/codegen/connectivity_state.h +0 -2
  17. data/include/grpc/impl/codegen/grpc_types.h +32 -28
  18. data/include/grpc/impl/codegen/port_platform.h +48 -0
  19. data/include/grpc/impl/codegen/slice.h +10 -10
  20. data/include/grpc/impl/codegen/sync_generic.h +9 -3
  21. data/include/grpc/slice.h +16 -17
  22. data/include/grpc/slice_buffer.h +22 -22
  23. data/include/grpc/support/alloc.h +11 -11
  24. data/include/grpc/support/avl.h +28 -20
  25. data/include/grpc/support/cmdline.h +13 -13
  26. data/include/grpc/support/histogram.h +17 -17
  27. data/include/grpc/support/host_port.h +2 -2
  28. data/include/grpc/support/log.h +9 -9
  29. data/include/grpc/support/log_windows.h +1 -1
  30. data/include/grpc/support/string_util.h +2 -2
  31. data/include/grpc/support/subprocess.h +5 -5
  32. data/include/grpc/support/sync.h +43 -27
  33. data/include/grpc/support/thd.h +6 -6
  34. data/include/grpc/support/tls_gcc.h +1 -1
  35. data/include/grpc/support/tls_pthread.h +1 -1
  36. data/src/core/ext/census/{grpc_context.c → grpc_context.cc} +5 -8
  37. data/src/core/ext/filters/client_channel/backup_poller.cc +165 -0
  38. data/src/core/ext/{census/grpc_filter.h → filters/client_channel/backup_poller.h} +12 -7
  39. data/src/core/ext/filters/client_channel/{channel_connectivity.c → channel_connectivity.cc} +45 -42
  40. data/src/core/ext/filters/client_channel/{client_channel.c → client_channel.cc} +452 -417
  41. data/src/core/ext/filters/client_channel/client_channel.h +16 -8
  42. data/src/core/ext/filters/client_channel/{client_channel_factory.c → client_channel_factory.cc} +0 -0
  43. data/src/core/ext/filters/client_channel/client_channel_factory.h +29 -21
  44. data/src/core/ext/filters/client_channel/{client_channel_plugin.c → client_channel_plugin.cc} +15 -19
  45. data/src/core/ext/filters/client_channel/{connector.c → connector.cc} +0 -0
  46. data/src/core/ext/filters/client_channel/connector.h +29 -21
  47. data/src/core/ext/filters/client_channel/{http_connect_handshaker.c → http_connect_handshaker.cc} +10 -10
  48. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +8 -0
  49. data/src/core/ext/filters/client_channel/{http_proxy.c → http_proxy.cc} +14 -14
  50. data/src/core/ext/filters/client_channel/http_proxy.h +8 -0
  51. data/src/core/ext/filters/client_channel/{lb_policy.c → lb_policy.cc} +47 -48
  52. data/src/core/ext/filters/client_channel/lb_policy.h +76 -70
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{client_load_reporting_filter.c → client_load_reporting_filter.cc} +28 -29
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +9 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb.c → grpclb.cc} +554 -563
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +9 -1
  57. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +17 -9
  58. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_channel_secure.c → grpclb_channel_secure.cc} +17 -17
  59. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_client_stats.c → grpclb_client_stats.cc} +3 -3
  60. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +9 -1
  61. data/src/core/ext/filters/client_channel/lb_policy/grpclb/{load_balancer_api.c → load_balancer_api.cc} +64 -67
  62. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +20 -21
  63. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +599 -0
  64. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +695 -0
  65. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +270 -0
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +153 -0
  67. data/src/core/ext/filters/client_channel/{lb_policy_factory.c → lb_policy_factory.cc} +10 -10
  68. data/src/core/ext/filters/client_channel/lb_policy_factory.h +48 -40
  69. data/src/core/ext/filters/client_channel/{lb_policy_registry.c → lb_policy_registry.cc} +9 -9
  70. data/src/core/ext/filters/client_channel/lb_policy_registry.h +11 -3
  71. data/src/core/ext/filters/client_channel/{parse_address.c → parse_address.cc} +24 -24
  72. data/src/core/ext/filters/client_channel/parse_address.h +14 -6
  73. data/src/core/ext/filters/client_channel/{proxy_mapper.c → proxy_mapper.cc} +0 -0
  74. data/src/core/ext/filters/client_channel/proxy_mapper.h +8 -0
  75. data/src/core/ext/filters/client_channel/{proxy_mapper_registry.c → proxy_mapper_registry.cc} +0 -0
  76. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -0
  77. data/src/core/ext/filters/client_channel/{resolver.c → resolver.cc} +21 -23
  78. data/src/core/ext/filters/client_channel/resolver.h +33 -27
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{dns_resolver_ares.c → dns_resolver_ares.cc} +133 -133
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +18 -9
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_ev_driver_posix.c → grpc_ares_ev_driver_posix.cc} +58 -56
  82. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_wrapper.c → grpc_ares_wrapper.cc} +118 -115
  83. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +23 -15
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +60 -0
  85. data/src/core/ext/filters/client_channel/resolver/dns/native/{dns_resolver.c → dns_resolver.cc} +100 -94
  86. data/src/core/ext/filters/client_channel/resolver/fake/{fake_resolver.c → fake_resolver.cc} +14 -14
  87. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +9 -1
  88. data/src/core/ext/filters/client_channel/resolver/sockaddr/{sockaddr_resolver.c → sockaddr_resolver.cc} +60 -60
  89. data/src/core/ext/filters/client_channel/{resolver_factory.c → resolver_factory.cc} +2 -2
  90. data/src/core/ext/filters/client_channel/resolver_factory.h +27 -19
  91. data/src/core/ext/filters/client_channel/{resolver_registry.c → resolver_registry.cc} +35 -35
  92. data/src/core/ext/filters/client_channel/resolver_registry.h +18 -10
  93. data/src/core/ext/filters/client_channel/{retry_throttle.c → retry_throttle.cc} +10 -10
  94. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -0
  95. data/src/core/ext/filters/client_channel/{subchannel.c → subchannel.cc} +210 -213
  96. data/src/core/ext/filters/client_channel/subchannel.h +68 -60
  97. data/src/core/ext/filters/client_channel/{subchannel_index.c → subchannel_index.cc} +52 -52
  98. data/src/core/ext/filters/client_channel/subchannel_index.h +22 -14
  99. data/src/core/ext/filters/client_channel/{uri_parser.c → uri_parser.cc} +29 -27
  100. data/src/core/ext/filters/client_channel/uri_parser.h +18 -10
  101. data/src/core/ext/filters/deadline/{deadline_filter.c → deadline_filter.cc} +12 -15
  102. data/src/core/ext/filters/deadline/deadline_filter.h +11 -2
  103. data/src/core/ext/filters/http/client/{http_client_filter.c → http_client_filter.cc} +83 -83
  104. data/src/core/ext/filters/http/client/http_client_filter.h +8 -0
  105. data/src/core/ext/filters/http/{http_filters_plugin.c → http_filters_plugin.cc} +20 -21
  106. data/src/core/ext/filters/http/message_compress/{message_compress_filter.c → message_compress_filter.cc} +84 -83
  107. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +9 -1
  108. data/src/core/ext/filters/http/server/{http_server_filter.c → http_server_filter.cc} +80 -78
  109. data/src/core/ext/filters/http/server/http_server_filter.h +8 -0
  110. data/src/core/ext/filters/load_reporting/{server_load_reporting_filter.c → server_load_reporting_filter.cc} +29 -29
  111. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +9 -1
  112. data/src/core/ext/filters/load_reporting/{server_load_reporting_plugin.c → server_load_reporting_plugin.cc} +11 -11
  113. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +13 -5
  114. data/src/core/ext/filters/max_age/{max_age_filter.c → max_age_filter.cc} +46 -56
  115. data/src/core/ext/filters/max_age/max_age_filter.h +8 -0
  116. data/src/core/ext/filters/message_size/{message_size_filter.c → message_size_filter.cc} +62 -40
  117. data/src/core/ext/filters/message_size/message_size_filter.h +8 -0
  118. data/src/core/ext/filters/workarounds/{workaround_cronet_compression_filter.c → workaround_cronet_compression_filter.cc} +11 -11
  119. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +8 -0
  120. data/src/core/ext/filters/workarounds/{workaround_utils.c → workaround_utils.cc} +7 -7
  121. data/src/core/ext/filters/workarounds/workaround_utils.h +9 -1
  122. data/src/core/ext/transport/chttp2/alpn/{alpn.c → alpn.cc} +3 -3
  123. data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -2
  124. data/src/core/ext/transport/chttp2/client/{chttp2_connector.c → chttp2_connector.cc} +49 -45
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +8 -0
  126. data/src/core/ext/transport/chttp2/client/insecure/{channel_create.c → channel_create.cc} +28 -27
  127. data/src/core/ext/transport/chttp2/client/insecure/{channel_create_posix.c → channel_create_posix.cc} +14 -13
  128. data/src/core/ext/transport/chttp2/client/secure/{secure_channel_create.c → secure_channel_create.cc} +68 -66
  129. data/src/core/ext/transport/chttp2/server/{chttp2_server.c → chttp2_server.cc} +76 -77
  130. data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -3
  131. data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2.c → server_chttp2.cc} +3 -3
  132. data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2_posix.c → server_chttp2_posix.cc} +13 -12
  133. data/src/core/ext/transport/chttp2/server/secure/{server_secure_chttp2.c → server_secure_chttp2.cc} +12 -10
  134. data/src/core/ext/transport/chttp2/transport/{bin_decoder.c → bin_decoder.cc} +7 -7
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +15 -7
  136. data/src/core/ext/transport/chttp2/transport/{bin_encoder.c → bin_encoder.cc} +11 -11
  137. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -0
  138. data/src/core/ext/transport/chttp2/transport/{chttp2_plugin.c → chttp2_plugin.cc} +2 -9
  139. data/src/core/ext/transport/chttp2/transport/{chttp2_transport.c → chttp2_transport.cc} +778 -778
  140. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -10
  141. data/src/core/ext/transport/chttp2/transport/flow_control.cc +385 -0
  142. data/src/core/ext/transport/chttp2/transport/flow_control.h +337 -0
  143. data/src/core/ext/transport/chttp2/transport/frame.h +8 -0
  144. data/src/core/ext/transport/chttp2/transport/{frame_data.c → frame_data.cc} +34 -34
  145. data/src/core/ext/transport/chttp2/transport/frame_data.h +25 -17
  146. data/src/core/ext/transport/chttp2/transport/{frame_goaway.c → frame_goaway.cc} +18 -18
  147. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -10
  148. data/src/core/ext/transport/chttp2/transport/{frame_ping.c → frame_ping.cc} +18 -19
  149. data/src/core/ext/transport/chttp2/transport/frame_ping.h +12 -4
  150. data/src/core/ext/transport/chttp2/transport/{frame_rst_stream.c → frame_rst_stream.cc} +16 -16
  151. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +16 -8
  152. data/src/core/ext/transport/chttp2/transport/{frame_settings.c → frame_settings.cc} +23 -24
  153. data/src/core/ext/transport/chttp2/transport/frame_settings.h +17 -9
  154. data/src/core/ext/transport/chttp2/transport/{frame_window_update.c → frame_window_update.cc} +22 -24
  155. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +14 -6
  156. data/src/core/ext/transport/chttp2/transport/{hpack_encoder.c → hpack_encoder.cc} +206 -161
  157. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +23 -13
  158. data/src/core/ext/transport/chttp2/transport/{hpack_parser.c → hpack_parser.cc} +340 -334
  159. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -22
  160. data/src/core/ext/transport/chttp2/transport/{hpack_table.c → hpack_table.cc} +25 -25
  161. data/src/core/ext/transport/chttp2/transport/hpack_table.h +19 -11
  162. data/src/core/ext/transport/chttp2/transport/{http2_settings.c → http2_settings.cc} +1 -1
  163. data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -2
  164. data/src/core/ext/transport/chttp2/transport/{huffsyms.c → huffsyms.cc} +0 -0
  165. data/src/core/ext/transport/chttp2/transport/huffsyms.h +8 -0
  166. data/src/core/ext/transport/chttp2/transport/{incoming_metadata.c → incoming_metadata.cc} +14 -13
  167. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +18 -10
  168. data/src/core/ext/transport/chttp2/transport/internal.h +214 -340
  169. data/src/core/ext/transport/chttp2/transport/{parsing.c → parsing.cc} +152 -141
  170. data/src/core/ext/transport/chttp2/transport/{stream_lists.c → stream_lists.cc} +53 -53
  171. data/src/core/ext/transport/chttp2/transport/{stream_map.c → stream_map.cc} +35 -34
  172. data/src/core/ext/transport/chttp2/transport/stream_map.h +22 -14
  173. data/src/core/ext/transport/chttp2/transport/{varint.c → varint.cc} +0 -0
  174. data/src/core/ext/transport/chttp2/transport/varint.h +8 -0
  175. data/src/core/ext/transport/chttp2/transport/writing.cc +636 -0
  176. data/src/core/ext/transport/inproc/{inproc_plugin.c → inproc_plugin.cc} +5 -6
  177. data/src/core/ext/transport/inproc/{inproc_transport.c → inproc_transport.cc} +479 -544
  178. data/src/core/ext/transport/inproc/inproc_transport.h +4 -4
  179. data/src/core/lib/backoff/backoff.cc +80 -0
  180. data/src/core/lib/backoff/backoff.h +83 -0
  181. data/src/core/lib/channel/{channel_args.c → channel_args.cc} +92 -92
  182. data/src/core/lib/channel/channel_args.h +45 -37
  183. data/src/core/lib/channel/{channel_stack.c → channel_stack.cc} +67 -68
  184. data/src/core/lib/channel/channel_stack.h +76 -75
  185. data/src/core/lib/channel/{channel_stack_builder.c → channel_stack_builder.cc} +91 -91
  186. data/src/core/lib/channel/channel_stack_builder.h +45 -45
  187. data/src/core/lib/channel/{connected_channel.c → connected_channel.cc} +70 -70
  188. data/src/core/lib/channel/connected_channel.h +12 -4
  189. data/src/core/lib/channel/context.h +2 -2
  190. data/src/core/lib/channel/{handshaker.c → handshaker.cc} +7 -9
  191. data/src/core/lib/channel/handshaker.h +9 -1
  192. data/src/core/lib/channel/{handshaker_factory.c → handshaker_factory.cc} +7 -7
  193. data/src/core/lib/channel/handshaker_factory.h +18 -10
  194. data/src/core/lib/channel/{handshaker_registry.c → handshaker_registry.cc} +0 -0
  195. data/src/core/lib/channel/handshaker_registry.h +8 -0
  196. data/src/core/lib/compression/algorithm_metadata.h +8 -0
  197. data/src/core/lib/compression/{compression.c → compression.cc} +9 -9
  198. data/src/core/lib/compression/{message_compress.c → message_compress.cc} +0 -0
  199. data/src/core/lib/compression/message_compress.h +8 -0
  200. data/src/core/lib/compression/{stream_compression.c → stream_compression.cc} +12 -12
  201. data/src/core/lib/compression/stream_compression.h +27 -19
  202. data/src/core/lib/compression/{stream_compression_gzip.c → stream_compression_gzip.cc} +35 -36
  203. data/src/core/lib/compression/stream_compression_gzip.h +8 -0
  204. data/src/core/lib/compression/{stream_compression_identity.c → stream_compression_identity.cc} +19 -20
  205. data/src/core/lib/compression/stream_compression_identity.h +8 -0
  206. data/src/core/lib/debug/{stats.c → stats.cc} +19 -19
  207. data/src/core/lib/debug/stats.h +17 -9
  208. data/src/core/lib/debug/{stats_data.c → stats_data.cc} +45 -22
  209. data/src/core/lib/debug/stats_data.h +58 -19
  210. data/src/core/lib/debug/trace.cc +142 -0
  211. data/src/core/lib/debug/trace.h +74 -14
  212. data/src/core/lib/http/{format_request.c → format_request.cc} +10 -10
  213. data/src/core/lib/http/format_request.h +12 -4
  214. data/src/core/lib/http/{httpcli.c → httpcli.cc} +80 -80
  215. data/src/core/lib/http/httpcli.h +41 -33
  216. data/src/core/lib/http/{httpcli_security_connector.c → httpcli_security_connector.cc} +69 -55
  217. data/src/core/lib/http/{parser.c → parser.cc} +42 -42
  218. data/src/core/lib/http/parser.h +28 -20
  219. data/src/core/lib/{support → iomgr}/block_annotate.h +17 -8
  220. data/src/core/lib/iomgr/{call_combiner.c → call_combiner.cc} +29 -17
  221. data/src/core/lib/iomgr/call_combiner.h +9 -1
  222. data/src/core/lib/iomgr/closure.h +220 -62
  223. data/src/core/lib/iomgr/{combiner.c → combiner.cc} +63 -62
  224. data/src/core/lib/iomgr/combiner.h +16 -8
  225. data/src/core/lib/iomgr/{endpoint.c → endpoint.cc} +6 -0
  226. data/src/core/lib/iomgr/endpoint.h +47 -32
  227. data/src/core/lib/iomgr/endpoint_pair.h +12 -4
  228. data/src/core/lib/iomgr/{endpoint_pair_posix.c → endpoint_pair_posix.cc} +3 -3
  229. data/src/core/lib/iomgr/{endpoint_pair_uv.c → endpoint_pair_uv.cc} +2 -2
  230. data/src/core/lib/iomgr/{endpoint_pair_windows.c → endpoint_pair_windows.cc} +6 -6
  231. data/src/core/lib/iomgr/{error.c → error.cc} +125 -124
  232. data/src/core/lib/iomgr/error.h +32 -27
  233. data/src/core/lib/iomgr/error_internal.h +11 -2
  234. data/src/core/lib/iomgr/{ev_epoll1_linux.c → ev_epoll1_linux.cc} +214 -215
  235. data/src/core/lib/iomgr/ev_epoll1_linux.h +9 -1
  236. data/src/core/lib/iomgr/ev_epollex_linux.cc +1488 -0
  237. data/src/core/lib/iomgr/ev_epollex_linux.h +9 -1
  238. data/src/core/lib/iomgr/{ev_epollsig_linux.c → ev_epollsig_linux.cc} +304 -305
  239. data/src/core/lib/iomgr/ev_epollsig_linux.h +12 -4
  240. data/src/core/lib/iomgr/{ev_poll_posix.c → ev_poll_posix.cc} +272 -283
  241. data/src/core/lib/iomgr/ev_poll_posix.h +10 -2
  242. data/src/core/lib/iomgr/ev_posix.cc +288 -0
  243. data/src/core/lib/iomgr/ev_posix.h +75 -67
  244. data/src/core/lib/iomgr/{ev_windows.c → ev_windows.cc} +2 -2
  245. data/src/core/lib/iomgr/exec_ctx.cc +177 -0
  246. data/src/core/lib/iomgr/exec_ctx.h +35 -13
  247. data/src/core/lib/iomgr/{executor.c → executor.cc} +34 -35
  248. data/src/core/lib/iomgr/executor.h +12 -4
  249. data/src/core/lib/iomgr/{fork_posix.c → fork_posix.cc} +0 -0
  250. data/src/core/lib/iomgr/{fork_windows.c → fork_windows.cc} +0 -0
  251. data/src/core/lib/iomgr/gethostname.h +9 -1
  252. data/src/core/lib/iomgr/{gethostname_fallback.c → gethostname_fallback.cc} +2 -1
  253. data/src/core/lib/iomgr/{gethostname_host_name_max.c → gethostname_host_name_max.cc} +4 -3
  254. data/src/core/lib/iomgr/{gethostname_sysconf.c → gethostname_sysconf.cc} +3 -2
  255. data/src/core/lib/iomgr/{iocp_windows.c → iocp_windows.cc} +23 -25
  256. data/src/core/lib/iomgr/iocp_windows.h +17 -3
  257. data/src/core/lib/iomgr/{iomgr.c → iomgr.cc} +25 -19
  258. data/src/core/lib/iomgr/iomgr.h +11 -3
  259. data/src/core/lib/iomgr/iomgr_internal.h +13 -5
  260. data/src/core/lib/iomgr/{iomgr_posix.c → iomgr_posix.cc} +0 -1
  261. data/src/core/lib/iomgr/{iomgr_uv.c → iomgr_uv.cc} +1 -1
  262. data/src/core/lib/iomgr/iomgr_uv.h +8 -0
  263. data/src/core/lib/iomgr/{iomgr_windows.c → iomgr_windows.cc} +0 -0
  264. data/src/core/lib/iomgr/{is_epollexclusive_available.c → is_epollexclusive_available.cc} +1 -1
  265. data/src/core/lib/iomgr/is_epollexclusive_available.h +8 -0
  266. data/src/core/lib/iomgr/{load_file.c → load_file.cc} +12 -12
  267. data/src/core/lib/iomgr/load_file.h +2 -2
  268. data/src/core/lib/iomgr/{lockfree_event.c → lockfree_event.cc} +76 -68
  269. data/src/core/lib/iomgr/lockfree_event.h +30 -11
  270. data/src/core/lib/iomgr/{network_status_tracker.c → network_status_tracker.cc} +3 -2
  271. data/src/core/lib/iomgr/network_status_tracker.h +2 -2
  272. data/src/core/lib/iomgr/{polling_entity.c → polling_entity.cc} +18 -18
  273. data/src/core/lib/iomgr/polling_entity.h +21 -13
  274. data/src/core/lib/iomgr/pollset.h +17 -11
  275. data/src/core/lib/iomgr/pollset_set.h +23 -15
  276. data/src/core/lib/iomgr/{pollset_set_uv.c → pollset_set_uv.cc} +0 -0
  277. data/src/core/lib/iomgr/{pollset_set_windows.c → pollset_set_windows.cc} +0 -0
  278. data/src/core/lib/iomgr/{pollset_uv.c → pollset_uv.cc} +31 -29
  279. data/src/core/lib/iomgr/pollset_uv.h +8 -0
  280. data/src/core/lib/iomgr/{pollset_windows.c → pollset_windows.cc} +24 -24
  281. data/src/core/lib/iomgr/pollset_windows.h +17 -4
  282. data/src/core/lib/iomgr/port.h +10 -0
  283. data/src/core/lib/iomgr/resolve_address.h +18 -10
  284. data/src/core/lib/iomgr/{resolve_address_posix.c → resolve_address_posix.cc} +40 -40
  285. data/src/core/lib/iomgr/{resolve_address_uv.c → resolve_address_uv.cc} +61 -56
  286. data/src/core/lib/iomgr/{resolve_address_windows.c → resolve_address_windows.cc} +36 -34
  287. data/src/core/lib/iomgr/{resource_quota.c → resource_quota.cc} +209 -180
  288. data/src/core/lib/iomgr/resource_quota.h +45 -37
  289. data/src/core/lib/iomgr/{sockaddr_utils.c → sockaddr_utils.cc} +61 -61
  290. data/src/core/lib/iomgr/sockaddr_utils.h +23 -15
  291. data/src/core/lib/iomgr/sockaddr_windows.h +6 -0
  292. data/src/core/lib/iomgr/{socket_factory_posix.c → socket_factory_posix.cc} +20 -20
  293. data/src/core/lib/iomgr/socket_factory_posix.h +15 -15
  294. data/src/core/lib/iomgr/{socket_mutator.c → socket_mutator.cc} +18 -18
  295. data/src/core/lib/iomgr/socket_mutator.h +11 -11
  296. data/src/core/lib/iomgr/socket_utils.h +9 -1
  297. data/src/core/lib/iomgr/{socket_utils_common_posix.c → socket_utils_common_posix.cc} +28 -28
  298. data/src/core/lib/iomgr/{socket_utils_linux.c → socket_utils_linux.cc} +3 -3
  299. data/src/core/lib/iomgr/{socket_utils_posix.c → socket_utils_posix.cc} +3 -3
  300. data/src/core/lib/iomgr/socket_utils_posix.h +26 -18
  301. data/src/core/lib/iomgr/{socket_utils_uv.c → socket_utils_uv.cc} +1 -1
  302. data/src/core/lib/iomgr/{socket_utils_windows.c → socket_utils_windows.cc} +2 -2
  303. data/src/core/lib/iomgr/{socket_windows.c → socket_windows.cc} +18 -18
  304. data/src/core/lib/iomgr/socket_windows.h +26 -13
  305. data/src/core/lib/iomgr/tcp_client.h +14 -6
  306. data/src/core/lib/iomgr/{tcp_client_posix.c → tcp_client_posix.cc} +69 -70
  307. data/src/core/lib/iomgr/tcp_client_posix.h +11 -3
  308. data/src/core/lib/iomgr/{tcp_client_uv.c → tcp_client_uv.cc} +47 -48
  309. data/src/core/lib/iomgr/{tcp_client_windows.c → tcp_client_windows.cc} +46 -44
  310. data/src/core/lib/iomgr/{tcp_posix.c → tcp_posix.cc} +198 -175
  311. data/src/core/lib/iomgr/tcp_posix.h +15 -7
  312. data/src/core/lib/iomgr/tcp_server.h +31 -23
  313. data/src/core/lib/iomgr/{tcp_server_posix.c → tcp_server_posix.cc} +78 -77
  314. data/src/core/lib/iomgr/tcp_server_utils_posix.h +27 -19
  315. data/src/core/lib/iomgr/{tcp_server_utils_posix_common.c → tcp_server_utils_posix_common.cc} +27 -27
  316. data/src/core/lib/iomgr/{tcp_server_utils_posix_ifaddrs.c → tcp_server_utils_posix_ifaddrs.cc} +25 -25
  317. data/src/core/lib/iomgr/{tcp_server_utils_posix_noifaddrs.c → tcp_server_utils_posix_noifaddrs.cc} +2 -2
  318. data/src/core/lib/iomgr/{tcp_server_uv.c → tcp_server_uv.cc} +133 -105
  319. data/src/core/lib/iomgr/{tcp_server_windows.c → tcp_server_windows.cc} +81 -77
  320. data/src/core/lib/iomgr/tcp_uv.cc +420 -0
  321. data/src/core/lib/iomgr/tcp_uv.h +18 -4
  322. data/src/core/lib/iomgr/{tcp_windows.c → tcp_windows.cc} +90 -79
  323. data/src/core/lib/iomgr/tcp_windows.h +17 -4
  324. data/src/core/lib/iomgr/{time_averaged_stats.c → time_averaged_stats.cc} +0 -0
  325. data/src/core/lib/iomgr/time_averaged_stats.h +8 -0
  326. data/src/core/lib/iomgr/timer.h +16 -9
  327. data/src/core/lib/iomgr/{timer_generic.c → timer_generic.cc} +130 -171
  328. data/src/core/lib/iomgr/timer_generic.h +4 -4
  329. data/src/core/lib/iomgr/{timer_heap.c → timer_heap.cc} +20 -21
  330. data/src/core/lib/iomgr/timer_heap.h +16 -8
  331. data/src/core/lib/iomgr/{timer_manager.c → timer_manager.cc} +54 -52
  332. data/src/core/lib/iomgr/timer_manager.h +8 -0
  333. data/src/core/lib/iomgr/{timer_uv.c → timer_uv.cc} +22 -24
  334. data/src/core/lib/iomgr/timer_uv.h +2 -2
  335. data/src/core/lib/iomgr/{udp_server.c → udp_server.cc} +75 -75
  336. data/src/core/lib/iomgr/udp_server.h +25 -17
  337. data/src/core/lib/iomgr/{unix_sockets_posix.c → unix_sockets_posix.cc} +22 -21
  338. data/src/core/lib/iomgr/unix_sockets_posix.h +14 -6
  339. data/src/core/lib/iomgr/{unix_sockets_posix_noop.c → unix_sockets_posix_noop.cc} +5 -5
  340. data/src/core/lib/iomgr/{wakeup_fd_cv.c → wakeup_fd_cv.cc} +2 -2
  341. data/src/core/lib/iomgr/wakeup_fd_cv.h +10 -0
  342. data/src/core/lib/iomgr/{wakeup_fd_eventfd.c → wakeup_fd_eventfd.cc} +0 -0
  343. data/src/core/lib/iomgr/{wakeup_fd_nospecial.c → wakeup_fd_nospecial.cc} +0 -0
  344. data/src/core/lib/iomgr/{wakeup_fd_pipe.c → wakeup_fd_pipe.cc} +1 -0
  345. data/src/core/lib/iomgr/wakeup_fd_pipe.h +9 -1
  346. data/src/core/lib/iomgr/{wakeup_fd_posix.c → wakeup_fd_posix.cc} +6 -7
  347. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -0
  348. data/src/core/lib/json/{json.c → json.cc} +0 -0
  349. data/src/core/lib/json/json.h +8 -0
  350. data/src/core/lib/json/{json_reader.c → json_reader.cc} +18 -18
  351. data/src/core/lib/json/json_reader.h +26 -18
  352. data/src/core/lib/json/{json_string.c → json_string.cc} +57 -57
  353. data/src/core/lib/json/{json_writer.c → json_writer.cc} +20 -20
  354. data/src/core/lib/json/json_writer.h +23 -15
  355. data/src/core/lib/profiling/{basic_timers.c → basic_timers.cc} +34 -34
  356. data/src/core/lib/profiling/{stap_timers.c → stap_timers.cc} +5 -5
  357. data/src/core/lib/profiling/timers.h +6 -6
  358. data/src/core/lib/security/context/{security_context.c → security_context.cc} +98 -95
  359. data/src/core/lib/security/context/security_context.h +27 -29
  360. data/src/core/lib/security/credentials/composite/{composite_credentials.c → composite_credentials.cc} +79 -73
  361. data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -9
  362. data/src/core/lib/security/credentials/{credentials.c → credentials.cc} +97 -92
  363. data/src/core/lib/security/credentials/credentials.h +83 -75
  364. data/src/core/lib/security/credentials/{credentials_metadata.c → credentials_metadata.cc} +7 -6
  365. data/src/core/lib/security/credentials/fake/{fake_credentials.c → fake_credentials.cc} +39 -36
  366. data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
  367. data/src/core/lib/security/credentials/google_default/{credentials_generic.c → credentials_generic.cc} +5 -5
  368. data/src/core/lib/security/credentials/google_default/{google_default_credentials.c → google_default_credentials.cc} +55 -55
  369. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -1
  370. data/src/core/lib/security/credentials/iam/{iam_credentials.c → iam_credentials.cc} +19 -18
  371. data/src/core/lib/security/credentials/jwt/{json_token.c → json_token.cc} +80 -75
  372. data/src/core/lib/security/credentials/jwt/json_token.h +23 -15
  373. data/src/core/lib/security/credentials/jwt/{jwt_credentials.c → jwt_credentials.cc} +45 -41
  374. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
  375. data/src/core/lib/security/credentials/jwt/{jwt_verifier.c → jwt_verifier.cc} +262 -252
  376. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +38 -30
  377. data/src/core/lib/security/credentials/oauth2/{oauth2_credentials.c → oauth2_credentials.cc} +138 -141
  378. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +30 -22
  379. data/src/core/lib/security/credentials/plugin/{plugin_credentials.c → plugin_credentials.cc} +52 -53
  380. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +7 -7
  381. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +344 -0
  382. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +27 -0
  383. data/src/core/lib/security/transport/auth_filters.h +16 -0
  384. data/src/core/lib/security/transport/{client_auth_filter.c → client_auth_filter.cc} +127 -115
  385. data/src/core/lib/security/transport/{lb_targets_info.c → lb_targets_info.cc} +16 -13
  386. data/src/core/lib/security/transport/lb_targets_info.h +11 -3
  387. data/src/core/lib/security/transport/{secure_endpoint.c → secure_endpoint.cc} +84 -76
  388. data/src/core/lib/security/transport/secure_endpoint.h +13 -5
  389. data/src/core/lib/security/transport/security_connector.cc +1121 -0
  390. data/src/core/lib/security/transport/security_connector.h +97 -79
  391. data/src/core/lib/security/transport/{security_handshaker.c → security_handshaker.cc} +139 -132
  392. data/src/core/lib/security/transport/security_handshaker.h +11 -3
  393. data/src/core/lib/security/transport/{server_auth_filter.c → server_auth_filter.cc} +68 -68
  394. data/src/core/lib/security/transport/{tsi_error.c → tsi_error.cc} +1 -1
  395. data/src/core/lib/security/transport/tsi_error.h +9 -1
  396. data/src/core/lib/security/util/{json_util.c → json_util.cc} +11 -11
  397. data/src/core/lib/security/util/json_util.h +12 -4
  398. data/src/core/lib/slice/{b64.c → b64.cc} +15 -15
  399. data/src/core/lib/slice/b64.h +12 -4
  400. data/src/core/lib/slice/{percent_encoding.c → percent_encoding.cc} +15 -15
  401. data/src/core/lib/slice/percent_encoding.h +11 -3
  402. data/src/core/lib/slice/{slice.c → slice.cc} +64 -64
  403. data/src/core/lib/slice/{slice_buffer.c → slice_buffer.cc} +38 -38
  404. data/src/core/lib/slice/{slice_hash_table.c → slice_hash_table.cc} +7 -7
  405. data/src/core/lib/slice/slice_hash_table.h +19 -11
  406. data/src/core/lib/slice/{slice_intern.c → slice_intern.cc} +35 -34
  407. data/src/core/lib/slice/slice_internal.h +17 -6
  408. data/src/core/lib/slice/{slice_string_helpers.c → slice_string_helpers.cc} +9 -9
  409. data/src/core/lib/slice/slice_string_helpers.h +3 -3
  410. data/src/core/lib/support/abstract.h +29 -0
  411. data/src/core/lib/support/{alloc.c → alloc.cc} +22 -22
  412. data/src/core/lib/support/{arena.c → arena.cc} +12 -12
  413. data/src/core/lib/support/arena.h +11 -3
  414. data/src/core/lib/support/{atm.c → atm.cc} +1 -1
  415. data/src/core/lib/support/{avl.c → avl.cc} +71 -70
  416. data/src/core/lib/support/{cmdline.c → cmdline.cc} +62 -62
  417. data/src/core/lib/support/{cpu_iphone.c → cpu_iphone.cc} +2 -0
  418. data/src/core/lib/support/{cpu_linux.c → cpu_linux.cc} +10 -0
  419. data/src/core/lib/support/{cpu_posix.c → cpu_posix.cc} +27 -4
  420. data/src/core/lib/support/{cpu_windows.c → cpu_windows.cc} +1 -0
  421. data/src/core/lib/support/env.h +3 -3
  422. data/src/core/lib/support/{env_linux.c → env_linux.cc} +11 -11
  423. data/src/core/lib/support/{env_posix.c → env_posix.cc} +4 -4
  424. data/src/core/lib/support/{env_windows.c → env_windows.cc} +5 -5
  425. data/src/core/lib/support/{fork.c → fork.cc} +2 -2
  426. data/src/core/lib/support/{histogram.c → histogram.cc} +25 -26
  427. data/src/core/lib/support/{host_port.c → host_port.cc} +16 -16
  428. data/src/core/lib/support/{log.c → log.cc} +8 -8
  429. data/src/core/lib/support/{log_android.c → log_android.cc} +7 -7
  430. data/src/core/lib/support/{log_linux.c → log_linux.cc} +8 -8
  431. data/src/core/lib/support/{log_posix.c → log_posix.cc} +9 -10
  432. data/src/core/lib/support/{log_windows.c → log_windows.cc} +7 -7
  433. data/src/core/lib/support/manual_constructor.h +211 -0
  434. data/src/core/lib/support/memory.h +41 -0
  435. data/src/core/lib/support/mpscq.cc +114 -0
  436. data/src/core/lib/support/mpscq.h +45 -7
  437. data/src/core/lib/support/{murmur_hash.c → murmur_hash.cc} +9 -12
  438. data/src/core/lib/support/murmur_hash.h +9 -1
  439. data/src/core/lib/support/spinlock.h +8 -1
  440. data/src/core/lib/support/{string.c → string.cc} +56 -55
  441. data/src/core/lib/support/string.h +21 -21
  442. data/src/core/lib/support/{string_posix.c → string_posix.cc} +5 -4
  443. data/src/core/lib/support/{string_util_windows.c → string_util_windows.cc} +9 -6
  444. data/src/core/lib/support/{string_windows.c → string_windows.cc} +3 -2
  445. data/src/core/lib/support/string_windows.h +8 -0
  446. data/src/core/lib/support/{subprocess_posix.c → subprocess_posix.cc} +13 -13
  447. data/src/core/lib/support/{subprocess_windows.c → subprocess_windows.cc} +9 -9
  448. data/src/core/lib/support/{sync.c → sync.cc} +22 -22
  449. data/src/core/lib/support/{sync_posix.c → sync_posix.cc} +6 -2
  450. data/src/core/lib/support/{sync_windows.c → sync_windows.cc} +14 -14
  451. data/src/core/lib/support/{thd.c → thd.cc} +0 -0
  452. data/src/core/lib/support/{thd_posix.c → thd_posix.cc} +10 -10
  453. data/src/core/lib/support/{thd_windows.c → thd_windows.cc} +10 -10
  454. data/src/core/lib/support/{time.c → time.cc} +0 -0
  455. data/src/core/lib/support/{time_posix.c → time_posix.cc} +5 -6
  456. data/src/core/lib/support/{time_precise.c → time_precise.cc} +6 -4
  457. data/src/core/lib/support/time_precise.h +9 -1
  458. data/src/core/lib/support/{time_windows.c → time_windows.cc} +2 -3
  459. data/src/core/lib/support/{tls_pthread.c → tls_pthread.cc} +2 -2
  460. data/src/core/lib/support/tmpfile.h +1 -1
  461. data/src/core/lib/support/{tmpfile_msys.c → tmpfile_msys.cc} +2 -2
  462. data/src/core/lib/support/{tmpfile_posix.c → tmpfile_posix.cc} +7 -7
  463. data/src/core/lib/support/{tmpfile_windows.c → tmpfile_windows.cc} +2 -2
  464. data/src/core/lib/support/{wrap_memcpy.c → wrap_memcpy.cc} +4 -2
  465. data/src/core/lib/surface/{alarm.c → alarm.cc} +32 -31
  466. data/src/core/lib/surface/alarm_internal.h +10 -2
  467. data/src/core/lib/surface/{api_trace.c → api_trace.cc} +1 -1
  468. data/src/core/lib/surface/api_trace.h +2 -2
  469. data/src/core/lib/surface/{byte_buffer.c → byte_buffer.cc} +13 -13
  470. data/src/core/lib/surface/{byte_buffer_reader.c → byte_buffer_reader.cc} +9 -9
  471. data/src/core/lib/surface/{call.c → call.cc} +379 -372
  472. data/src/core/lib/surface/call.h +37 -38
  473. data/src/core/lib/surface/{call_details.c → call_details.cc} +0 -0
  474. data/src/core/lib/surface/{call_log_batch.c → call_log_batch.cc} +13 -11
  475. data/src/core/lib/surface/call_test_only.h +5 -5
  476. data/src/core/lib/surface/{channel.c → channel.cc} +94 -95
  477. data/src/core/lib/surface/channel.h +29 -21
  478. data/src/core/lib/surface/{channel_init.c → channel_init.cc} +13 -13
  479. data/src/core/lib/surface/channel_init.h +6 -6
  480. data/src/core/lib/surface/{channel_ping.c → channel_ping.cc} +12 -12
  481. data/src/core/lib/surface/{channel_stack_type.c → channel_stack_type.cc} +1 -1
  482. data/src/core/lib/surface/channel_stack_type.h +9 -1
  483. data/src/core/lib/surface/{completion_queue.c → completion_queue.cc} +416 -379
  484. data/src/core/lib/surface/completion_queue.h +29 -29
  485. data/src/core/lib/surface/{completion_queue_factory.c → completion_queue_factory.cc} +1 -1
  486. data/src/core/lib/surface/completion_queue_factory.h +8 -0
  487. data/src/core/lib/surface/{event_string.c → event_string.cc} +9 -9
  488. data/src/core/lib/surface/event_string.h +9 -1
  489. data/src/core/lib/surface/{init.c → init.cc} +16 -39
  490. data/src/core/lib/surface/init.h +8 -0
  491. data/src/core/lib/surface/{init_secure.c → init_secure.cc} +12 -25
  492. data/src/core/lib/surface/lame_client.cc +38 -40
  493. data/src/core/lib/surface/lame_client.h +8 -0
  494. data/src/core/lib/surface/{metadata_array.c → metadata_array.cc} +0 -0
  495. data/src/core/lib/surface/{server.c → server.cc} +340 -404
  496. data/src/core/lib/surface/server.h +22 -14
  497. data/src/core/lib/surface/{validate_metadata.c → validate_metadata.cc} +10 -9
  498. data/src/core/lib/surface/validate_metadata.h +10 -2
  499. data/src/core/lib/surface/{version.c → version.cc} +2 -2
  500. data/src/core/lib/transport/bdp_estimator.cc +84 -0
  501. data/src/core/lib/transport/bdp_estimator.h +67 -42
  502. data/src/core/lib/transport/{byte_stream.c → byte_stream.cc} +51 -51
  503. data/src/core/lib/transport/byte_stream.h +41 -33
  504. data/src/core/lib/transport/{connectivity_state.c → connectivity_state.cc} +36 -40
  505. data/src/core/lib/transport/connectivity_state.h +29 -21
  506. data/src/core/lib/transport/{error_utils.c → error_utils.cc} +26 -22
  507. data/src/core/lib/transport/error_utils.h +18 -6
  508. data/src/core/lib/transport/{metadata.c → metadata.cc} +92 -88
  509. data/src/core/lib/transport/metadata.h +22 -20
  510. data/src/core/lib/transport/{metadata_batch.c → metadata_batch.cc} +78 -79
  511. data/src/core/lib/transport/metadata_batch.h +46 -45
  512. data/src/core/lib/transport/pid_controller.cc +48 -0
  513. data/src/core/lib/transport/pid_controller.h +84 -32
  514. data/src/core/lib/transport/{service_config.c → service_config.cc} +66 -48
  515. data/src/core/lib/transport/service_config.h +11 -2
  516. data/src/core/lib/transport/{static_metadata.c → static_metadata.cc} +2 -2
  517. data/src/core/lib/transport/static_metadata.h +30 -23
  518. data/src/core/lib/transport/{status_conversion.c → status_conversion.cc} +4 -3
  519. data/src/core/lib/transport/status_conversion.h +12 -2
  520. data/src/core/lib/transport/{timeout_encoding.c → timeout_encoding.cc} +28 -61
  521. data/src/core/lib/transport/timeout_encoding.h +11 -2
  522. data/src/core/lib/transport/{transport.c → transport.cc} +79 -79
  523. data/src/core/lib/transport/transport.h +78 -80
  524. data/src/core/lib/transport/transport_impl.h +27 -19
  525. data/src/core/lib/transport/{transport_op_string.c → transport_op_string.cc} +32 -30
  526. data/src/core/plugin_registry/{grpc_plugin_registry.c → grpc_plugin_registry.cc} +34 -38
  527. data/src/core/tsi/{fake_transport_security.c → fake_transport_security.cc} +141 -132
  528. data/src/core/tsi/fake_transport_security.h +5 -5
  529. data/src/core/tsi/{gts_transport_security.c → gts_transport_security.cc} +4 -4
  530. data/src/core/tsi/gts_transport_security.h +11 -3
  531. data/src/core/tsi/{ssl_transport_security.c → ssl_transport_security.cc} +309 -300
  532. data/src/core/tsi/ssl_transport_security.h +25 -25
  533. data/src/core/tsi/ssl_types.h +8 -0
  534. data/src/core/tsi/{transport_security.c → transport_security.cc} +94 -87
  535. data/src/core/tsi/transport_security.h +55 -55
  536. data/src/core/tsi/{transport_security_adapter.c → transport_security_adapter.cc} +58 -55
  537. data/src/core/tsi/transport_security_adapter.h +2 -2
  538. data/src/core/tsi/{transport_security_grpc.c → transport_security_grpc.cc} +21 -21
  539. data/src/core/tsi/transport_security_grpc.h +19 -19
  540. data/src/core/tsi/transport_security_interface.h +41 -41
  541. data/src/ruby/ext/grpc/extconf.rb +4 -2
  542. data/src/ruby/ext/grpc/rb_byte_buffer.c +5 -5
  543. data/src/ruby/ext/grpc/rb_byte_buffer.h +2 -2
  544. data/src/ruby/ext/grpc/rb_call.c +41 -42
  545. data/src/ruby/ext/grpc/rb_call.h +6 -6
  546. data/src/ruby/ext/grpc/rb_call_credentials.c +30 -30
  547. data/src/ruby/ext/grpc/rb_channel.c +87 -87
  548. data/src/ruby/ext/grpc/rb_channel_credentials.c +23 -23
  549. data/src/ruby/ext/grpc/rb_completion_queue.c +11 -11
  550. data/src/ruby/ext/grpc/rb_completion_queue.h +3 -3
  551. data/src/ruby/ext/grpc/rb_compression_options.c +20 -20
  552. data/src/ruby/ext/grpc/rb_event_thread.c +14 -14
  553. data/src/ruby/ext/grpc/rb_event_thread.h +1 -1
  554. data/src/ruby/ext/grpc/rb_grpc.c +8 -8
  555. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -58
  556. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +242 -306
  557. data/src/ruby/ext/grpc/rb_server.c +23 -23
  558. data/src/ruby/ext/grpc/rb_server_credentials.c +13 -13
  559. data/src/ruby/lib/grpc/generic/rpc_server.rb +25 -12
  560. data/src/ruby/lib/grpc/version.rb +1 -1
  561. data/src/ruby/pb/grpc/health/checker.rb +14 -0
  562. data/src/ruby/spec/pb/health/checker_spec.rb +29 -0
  563. data/third_party/cares/config_freebsd/ares_config.h +502 -0
  564. data/third_party/cares/config_openbsd/ares_config.h +502 -0
  565. metadata +302 -328
  566. data/src/core/ext/census/aggregation.h +0 -51
  567. data/src/core/ext/census/base_resources.c +0 -56
  568. data/src/core/ext/census/base_resources.h +0 -24
  569. data/src/core/ext/census/census_interface.h +0 -61
  570. data/src/core/ext/census/census_rpc_stats.h +0 -86
  571. data/src/core/ext/census/context.c +0 -496
  572. data/src/core/ext/census/gen/census.pb.c +0 -161
  573. data/src/core/ext/census/gen/census.pb.h +0 -280
  574. data/src/core/ext/census/gen/trace_context.pb.c +0 -39
  575. data/src/core/ext/census/gen/trace_context.pb.h +0 -78
  576. data/src/core/ext/census/grpc_filter.c +0 -196
  577. data/src/core/ext/census/grpc_plugin.c +0 -70
  578. data/src/core/ext/census/initialize.c +0 -51
  579. data/src/core/ext/census/intrusive_hash_map.c +0 -305
  580. data/src/core/ext/census/intrusive_hash_map.h +0 -152
  581. data/src/core/ext/census/intrusive_hash_map_internal.h +0 -48
  582. data/src/core/ext/census/mlog.c +0 -586
  583. data/src/core/ext/census/mlog.h +0 -80
  584. data/src/core/ext/census/operation.c +0 -48
  585. data/src/core/ext/census/placeholders.c +0 -49
  586. data/src/core/ext/census/resource.c +0 -303
  587. data/src/core/ext/census/resource.h +0 -48
  588. data/src/core/ext/census/rpc_metric_id.h +0 -36
  589. data/src/core/ext/census/trace_context.c +0 -71
  590. data/src/core/ext/census/trace_context.h +0 -56
  591. data/src/core/ext/census/trace_label.h +0 -46
  592. data/src/core/ext/census/trace_propagation.h +0 -48
  593. data/src/core/ext/census/trace_status.h +0 -30
  594. data/src/core/ext/census/trace_string.h +0 -35
  595. data/src/core/ext/census/tracing.c +0 -55
  596. data/src/core/ext/census/tracing.h +0 -109
  597. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +0 -714
  598. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +0 -924
  599. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +0 -60
  600. data/src/core/ext/transport/chttp2/transport/flow_control.c +0 -502
  601. data/src/core/ext/transport/chttp2/transport/writing.c +0 -534
  602. data/src/core/lib/debug/trace.c +0 -146
  603. data/src/core/lib/iomgr/closure.c +0 -219
  604. data/src/core/lib/iomgr/ev_epollex_linux.c +0 -1461
  605. data/src/core/lib/iomgr/ev_posix.c +0 -266
  606. data/src/core/lib/iomgr/exec_ctx.c +0 -113
  607. data/src/core/lib/iomgr/tcp_uv.c +0 -381
  608. data/src/core/lib/security/credentials/ssl/ssl_credentials.c +0 -194
  609. data/src/core/lib/security/transport/security_connector.c +0 -914
  610. data/src/core/lib/support/backoff.c +0 -72
  611. data/src/core/lib/support/backoff.h +0 -56
  612. data/src/core/lib/support/mpscq.c +0 -79
  613. data/src/core/lib/support/stack_lockfree.c +0 -137
  614. data/src/core/lib/support/stack_lockfree.h +0 -38
  615. data/src/core/lib/transport/bdp_estimator.c +0 -110
  616. data/src/core/lib/transport/pid_controller.c +0 -63
@@ -22,6 +22,7 @@
22
22
 
23
23
  #include "src/core/lib/iomgr/sockaddr.h"
24
24
 
25
+ #include <inttypes.h>
25
26
  #include <io.h>
26
27
 
27
28
  #include <grpc/support/alloc.h>
@@ -51,11 +52,11 @@ struct grpc_tcp_listener {
51
52
  /* This will hold the socket for the next accept. */
52
53
  SOCKET new_socket;
53
54
  /* The listener winsocket. */
54
- grpc_winsocket *socket;
55
+ grpc_winsocket* socket;
55
56
  /* The actual TCP port number. */
56
57
  int port;
57
58
  unsigned port_index;
58
- grpc_tcp_server *server;
59
+ grpc_tcp_server* server;
59
60
  /* The cached AcceptEx for that port. */
60
61
  LPFN_ACCEPTEX AcceptEx;
61
62
  int shutting_down;
@@ -63,7 +64,7 @@ struct grpc_tcp_listener {
63
64
  /* closure for socket notification of accept being ready */
64
65
  grpc_closure on_accept;
65
66
  /* linked list */
66
- struct grpc_tcp_listener *next;
67
+ struct grpc_tcp_listener* next;
67
68
  };
68
69
 
69
70
  /* the overall server */
@@ -71,7 +72,7 @@ struct grpc_tcp_server {
71
72
  gpr_refcount refs;
72
73
  /* Called whenever accept() succeeds on a server port. */
73
74
  grpc_tcp_server_cb on_accept_cb;
74
- void *on_accept_cb_arg;
75
+ void* on_accept_cb_arg;
75
76
 
76
77
  gpr_mu mu;
77
78
 
@@ -79,25 +80,25 @@ struct grpc_tcp_server {
79
80
  int active_ports;
80
81
 
81
82
  /* linked list of server ports */
82
- grpc_tcp_listener *head;
83
- grpc_tcp_listener *tail;
83
+ grpc_tcp_listener* head;
84
+ grpc_tcp_listener* tail;
84
85
 
85
86
  /* List of closures passed to shutdown_starting_add(). */
86
87
  grpc_closure_list shutdown_starting;
87
88
 
88
89
  /* shutdown callback */
89
- grpc_closure *shutdown_complete;
90
+ grpc_closure* shutdown_complete;
90
91
 
91
- grpc_channel_args *channel_args;
92
+ grpc_channel_args* channel_args;
92
93
  };
93
94
 
94
95
  /* Public function. Allocates the proper data structures to hold a
95
96
  grpc_tcp_server. */
96
- grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx,
97
- grpc_closure *shutdown_complete,
98
- const grpc_channel_args *args,
99
- grpc_tcp_server **server) {
100
- grpc_tcp_server *s = gpr_malloc(sizeof(grpc_tcp_server));
97
+ grpc_error* grpc_tcp_server_create(grpc_exec_ctx* exec_ctx,
98
+ grpc_closure* shutdown_complete,
99
+ const grpc_channel_args* args,
100
+ grpc_tcp_server** server) {
101
+ grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server));
101
102
  s->channel_args = grpc_channel_args_copy(args);
102
103
  gpr_ref_init(&s->refs, 1);
103
104
  gpr_mu_init(&s->mu);
@@ -113,15 +114,15 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx,
113
114
  return GRPC_ERROR_NONE;
114
115
  }
115
116
 
116
- static void destroy_server(grpc_exec_ctx *exec_ctx, void *arg,
117
- grpc_error *error) {
118
- grpc_tcp_server *s = arg;
117
+ static void destroy_server(grpc_exec_ctx* exec_ctx, void* arg,
118
+ grpc_error* error) {
119
+ grpc_tcp_server* s = (grpc_tcp_server*)arg;
119
120
 
120
121
  /* Now that the accepts have been aborted, we can destroy the sockets.
121
122
  The IOCP won't get notified on these, so we can flag them as already
122
123
  closed by the system. */
123
124
  while (s->head) {
124
- grpc_tcp_listener *sp = s->head;
125
+ grpc_tcp_listener* sp = s->head;
125
126
  s->head = sp->next;
126
127
  sp->next = NULL;
127
128
  grpc_winsocket_destroy(sp->socket);
@@ -131,32 +132,33 @@ static void destroy_server(grpc_exec_ctx *exec_ctx, void *arg,
131
132
  gpr_free(s);
132
133
  }
133
134
 
134
- static void finish_shutdown_locked(grpc_exec_ctx *exec_ctx,
135
- grpc_tcp_server *s) {
135
+ static void finish_shutdown_locked(grpc_exec_ctx* exec_ctx,
136
+ grpc_tcp_server* s) {
136
137
  if (s->shutdown_complete != NULL) {
137
138
  GRPC_CLOSURE_SCHED(exec_ctx, s->shutdown_complete, GRPC_ERROR_NONE);
138
139
  }
139
140
 
140
- GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(destroy_server, s,
141
- grpc_schedule_on_exec_ctx),
142
- GRPC_ERROR_NONE);
141
+ GRPC_CLOSURE_SCHED(
142
+ exec_ctx,
143
+ GRPC_CLOSURE_CREATE(destroy_server, s, grpc_schedule_on_exec_ctx),
144
+ GRPC_ERROR_NONE);
143
145
  }
144
146
 
145
- grpc_tcp_server *grpc_tcp_server_ref(grpc_tcp_server *s) {
147
+ grpc_tcp_server* grpc_tcp_server_ref(grpc_tcp_server* s) {
146
148
  gpr_ref_non_zero(&s->refs);
147
149
  return s;
148
150
  }
149
151
 
150
- void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server *s,
151
- grpc_closure *shutdown_starting) {
152
+ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s,
153
+ grpc_closure* shutdown_starting) {
152
154
  gpr_mu_lock(&s->mu);
153
155
  grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
154
156
  GRPC_ERROR_NONE);
155
157
  gpr_mu_unlock(&s->mu);
156
158
  }
157
159
 
158
- static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
159
- grpc_tcp_listener *sp;
160
+ static void tcp_server_destroy(grpc_exec_ctx* exec_ctx, grpc_tcp_server* s) {
161
+ grpc_tcp_listener* sp;
160
162
  gpr_mu_lock(&s->mu);
161
163
 
162
164
  /* First, shutdown all fd's. This will queue abortion calls for all
@@ -172,7 +174,7 @@ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
172
174
  gpr_mu_unlock(&s->mu);
173
175
  }
174
176
 
175
- void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
177
+ void grpc_tcp_server_unref(grpc_exec_ctx* exec_ctx, grpc_tcp_server* s) {
176
178
  if (gpr_unref(&s->refs)) {
177
179
  grpc_tcp_server_shutdown_listeners(exec_ctx, s);
178
180
  gpr_mu_lock(&s->mu);
@@ -183,18 +185,19 @@ void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
183
185
  }
184
186
 
185
187
  /* Prepare (bind) a recently-created socket for listening. */
186
- static grpc_error *prepare_socket(SOCKET sock,
187
- const grpc_resolved_address *addr,
188
- int *port) {
188
+ static grpc_error* prepare_socket(SOCKET sock,
189
+ const grpc_resolved_address* addr,
190
+ int* port) {
189
191
  grpc_resolved_address sockname_temp;
190
- grpc_error *error = GRPC_ERROR_NONE;
192
+ grpc_error* error = GRPC_ERROR_NONE;
193
+ int sockname_temp_len;
191
194
 
192
195
  error = grpc_tcp_prepare_socket(sock);
193
196
  if (error != GRPC_ERROR_NONE) {
194
197
  goto failure;
195
198
  }
196
199
 
197
- if (bind(sock, (const struct sockaddr *)addr->addr, (int)addr->len) ==
200
+ if (bind(sock, (const struct sockaddr*)addr->addr, (int)addr->len) ==
198
201
  SOCKET_ERROR) {
199
202
  error = GRPC_WSA_ERROR(WSAGetLastError(), "bind");
200
203
  goto failure;
@@ -205,8 +208,8 @@ static grpc_error *prepare_socket(SOCKET sock,
205
208
  goto failure;
206
209
  }
207
210
 
208
- int sockname_temp_len = sizeof(struct sockaddr_storage);
209
- if (getsockname(sock, (struct sockaddr *)sockname_temp.addr,
211
+ sockname_temp_len = sizeof(struct sockaddr_storage);
212
+ if (getsockname(sock, (struct sockaddr*)sockname_temp.addr,
210
213
  &sockname_temp_len) == SOCKET_ERROR) {
211
214
  error = GRPC_WSA_ERROR(WSAGetLastError(), "getsockname");
212
215
  goto failure;
@@ -218,7 +221,7 @@ static grpc_error *prepare_socket(SOCKET sock,
218
221
 
219
222
  failure:
220
223
  GPR_ASSERT(error != GRPC_ERROR_NONE);
221
- char *tgtaddr = grpc_sockaddr_to_uri(addr);
224
+ char* tgtaddr = grpc_sockaddr_to_uri(addr);
222
225
  grpc_error_set_int(
223
226
  grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
224
227
  "Failed to prepare server socket", &error, 1),
@@ -231,8 +234,8 @@ failure:
231
234
  return error;
232
235
  }
233
236
 
234
- static void decrement_active_ports_and_notify_locked(grpc_exec_ctx *exec_ctx,
235
- grpc_tcp_listener *sp) {
237
+ static void decrement_active_ports_and_notify_locked(grpc_exec_ctx* exec_ctx,
238
+ grpc_tcp_listener* sp) {
236
239
  sp->shutting_down = 0;
237
240
  GPR_ASSERT(sp->server->active_ports > 0);
238
241
  if (0 == --sp->server->active_ports) {
@@ -242,13 +245,13 @@ static void decrement_active_ports_and_notify_locked(grpc_exec_ctx *exec_ctx,
242
245
 
243
246
  /* In order to do an async accept, we need to create a socket first which
244
247
  will be the one assigned to the new incoming connection. */
245
- static grpc_error *start_accept_locked(grpc_exec_ctx *exec_ctx,
246
- grpc_tcp_listener *port) {
248
+ static grpc_error* start_accept_locked(grpc_exec_ctx* exec_ctx,
249
+ grpc_tcp_listener* port) {
247
250
  SOCKET sock = INVALID_SOCKET;
248
251
  BOOL success;
249
252
  DWORD addrlen = sizeof(struct sockaddr_in6) + 16;
250
253
  DWORD bytes_received = 0;
251
- grpc_error *error = GRPC_ERROR_NONE;
254
+ grpc_error* error = GRPC_ERROR_NONE;
252
255
 
253
256
  if (port->shutting_down) {
254
257
  return GRPC_ERROR_NONE;
@@ -293,14 +296,14 @@ failure:
293
296
  }
294
297
 
295
298
  /* Event manager callback when reads are ready. */
296
- static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
297
- grpc_tcp_listener *sp = arg;
299
+ static void on_accept(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
300
+ grpc_tcp_listener* sp = (grpc_tcp_listener*)arg;
298
301
  SOCKET sock = sp->new_socket;
299
- grpc_winsocket_callback_info *info = &sp->socket->read_info;
300
- grpc_endpoint *ep = NULL;
302
+ grpc_winsocket_callback_info* info = &sp->socket->read_info;
303
+ grpc_endpoint* ep = NULL;
301
304
  grpc_resolved_address peer_name;
302
- char *peer_name_string;
303
- char *fd_name;
305
+ char* peer_name_string;
306
+ char* fd_name;
304
307
  DWORD transfered_bytes;
305
308
  DWORD flags;
306
309
  BOOL wsa_success;
@@ -314,7 +317,7 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
314
317
  this is necessary in the read/write case, it's useless for the accept
315
318
  case. We only need to adjust the pending callback count */
316
319
  if (error != GRPC_ERROR_NONE) {
317
- const char *msg = grpc_error_string(error);
320
+ const char* msg = grpc_error_string(error);
318
321
  gpr_log(GPR_INFO, "Skipping on_accept due to error: %s", msg);
319
322
 
320
323
  gpr_mu_unlock(&sp->server->mu);
@@ -328,7 +331,7 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
328
331
  &transfered_bytes, FALSE, &flags);
329
332
  if (!wsa_success) {
330
333
  if (!sp->shutting_down) {
331
- char *utf8_message = gpr_format_message(WSAGetLastError());
334
+ char* utf8_message = gpr_format_message(WSAGetLastError());
332
335
  gpr_log(GPR_ERROR, "on_accept error: %s", utf8_message);
333
336
  gpr_free(utf8_message);
334
337
  }
@@ -337,20 +340,19 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
337
340
  if (!sp->shutting_down) {
338
341
  peer_name_string = NULL;
339
342
  err = setsockopt(sock, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
340
- (char *)&sp->socket->socket, sizeof(sp->socket->socket));
343
+ (char*)&sp->socket->socket, sizeof(sp->socket->socket));
341
344
  if (err) {
342
- char *utf8_message = gpr_format_message(WSAGetLastError());
345
+ char* utf8_message = gpr_format_message(WSAGetLastError());
343
346
  gpr_log(GPR_ERROR, "setsockopt error: %s", utf8_message);
344
347
  gpr_free(utf8_message);
345
348
  }
346
349
  int peer_name_len = (int)peer_name.len;
347
- err =
348
- getpeername(sock, (struct sockaddr *)peer_name.addr, &peer_name_len);
350
+ err = getpeername(sock, (struct sockaddr*)peer_name.addr, &peer_name_len);
349
351
  peer_name.len = (size_t)peer_name_len;
350
352
  if (!err) {
351
353
  peer_name_string = grpc_sockaddr_to_uri(&peer_name);
352
354
  } else {
353
- char *utf8_message = gpr_format_message(WSAGetLastError());
355
+ char* utf8_message = gpr_format_message(WSAGetLastError());
354
356
  gpr_log(GPR_ERROR, "getpeername error: %s", utf8_message);
355
357
  gpr_free(utf8_message);
356
358
  }
@@ -368,7 +370,8 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
368
370
  managed to accept a connection, and created an endpoint. */
369
371
  if (ep) {
370
372
  // Create acceptor.
371
- grpc_tcp_server_acceptor *acceptor = gpr_malloc(sizeof(*acceptor));
373
+ grpc_tcp_server_acceptor* acceptor =
374
+ (grpc_tcp_server_acceptor*)gpr_malloc(sizeof(*acceptor));
372
375
  acceptor->from_server = sp->server;
373
376
  acceptor->port_index = sp->port_index;
374
377
  acceptor->fd_index = 0;
@@ -387,17 +390,17 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
387
390
  gpr_mu_unlock(&sp->server->mu);
388
391
  }
389
392
 
390
- static grpc_error *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
391
- const grpc_resolved_address *addr,
393
+ static grpc_error* add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
394
+ const grpc_resolved_address* addr,
392
395
  unsigned port_index,
393
- grpc_tcp_listener **listener) {
394
- grpc_tcp_listener *sp = NULL;
396
+ grpc_tcp_listener** listener) {
397
+ grpc_tcp_listener* sp = NULL;
395
398
  int port = -1;
396
399
  int status;
397
400
  GUID guid = WSAID_ACCEPTEX;
398
401
  DWORD ioctl_num_bytes;
399
402
  LPFN_ACCEPTEX AcceptEx;
400
- grpc_error *error = GRPC_ERROR_NONE;
403
+ grpc_error* error = GRPC_ERROR_NONE;
401
404
 
402
405
  /* We need to grab the AcceptEx pointer for that port, as it may be
403
406
  interface-dependent. We'll cache it to avoid doing that again. */
@@ -406,7 +409,7 @@ static grpc_error *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
406
409
  &AcceptEx, sizeof(AcceptEx), &ioctl_num_bytes, NULL, NULL);
407
410
 
408
411
  if (status != 0) {
409
- char *utf8_message = gpr_format_message(WSAGetLastError());
412
+ char* utf8_message = gpr_format_message(WSAGetLastError());
410
413
  gpr_log(GPR_ERROR, "on_connect error: %s", utf8_message);
411
414
  gpr_free(utf8_message);
412
415
  closesocket(sock);
@@ -421,7 +424,7 @@ static grpc_error *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
421
424
  GPR_ASSERT(port >= 0);
422
425
  gpr_mu_lock(&s->mu);
423
426
  GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
424
- sp = gpr_malloc(sizeof(grpc_tcp_listener));
427
+ sp = (grpc_tcp_listener*)gpr_malloc(sizeof(grpc_tcp_listener));
425
428
  sp->next = NULL;
426
429
  if (s->head == NULL) {
427
430
  s->head = sp;
@@ -445,17 +448,17 @@ static grpc_error *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
445
448
  return GRPC_ERROR_NONE;
446
449
  }
447
450
 
448
- grpc_error *grpc_tcp_server_add_port(grpc_tcp_server *s,
449
- const grpc_resolved_address *addr,
450
- int *port) {
451
- grpc_tcp_listener *sp = NULL;
451
+ grpc_error* grpc_tcp_server_add_port(grpc_tcp_server* s,
452
+ const grpc_resolved_address* addr,
453
+ int* port) {
454
+ grpc_tcp_listener* sp = NULL;
452
455
  SOCKET sock;
453
456
  grpc_resolved_address addr6_v4mapped;
454
457
  grpc_resolved_address wildcard;
455
- grpc_resolved_address *allocated_addr = NULL;
458
+ grpc_resolved_address* allocated_addr = NULL;
456
459
  grpc_resolved_address sockname_temp;
457
460
  unsigned port_index = 0;
458
- grpc_error *error = GRPC_ERROR_NONE;
461
+ grpc_error* error = GRPC_ERROR_NONE;
459
462
 
460
463
  if (s->tail != NULL) {
461
464
  port_index = s->tail->port_index + 1;
@@ -467,12 +470,13 @@ grpc_error *grpc_tcp_server_add_port(grpc_tcp_server *s,
467
470
  for (sp = s->head; sp; sp = sp->next) {
468
471
  int sockname_temp_len = sizeof(struct sockaddr_storage);
469
472
  if (0 == getsockname(sp->socket->socket,
470
- (struct sockaddr *)sockname_temp.addr,
473
+ (struct sockaddr*)sockname_temp.addr,
471
474
  &sockname_temp_len)) {
472
475
  sockname_temp.len = (size_t)sockname_temp_len;
473
476
  *port = grpc_sockaddr_get_port(&sockname_temp);
474
477
  if (*port > 0) {
475
- allocated_addr = gpr_malloc(sizeof(grpc_resolved_address));
478
+ allocated_addr =
479
+ (grpc_resolved_address*)gpr_malloc(sizeof(grpc_resolved_address));
476
480
  memcpy(allocated_addr, addr, sizeof(grpc_resolved_address));
477
481
  grpc_sockaddr_set_port(allocated_addr, *port);
478
482
  addr = allocated_addr;
@@ -506,7 +510,7 @@ done:
506
510
  gpr_free(allocated_addr);
507
511
 
508
512
  if (error != GRPC_ERROR_NONE) {
509
- grpc_error *error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
513
+ grpc_error* error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
510
514
  "Failed to add port to server", &error, 1);
511
515
  GRPC_ERROR_UNREF(error);
512
516
  error = error_out;
@@ -518,11 +522,11 @@ done:
518
522
  return error;
519
523
  }
520
524
 
521
- void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
522
- grpc_pollset **pollset, size_t pollset_count,
525
+ void grpc_tcp_server_start(grpc_exec_ctx* exec_ctx, grpc_tcp_server* s,
526
+ grpc_pollset** pollset, size_t pollset_count,
523
527
  grpc_tcp_server_cb on_accept_cb,
524
- void *on_accept_cb_arg) {
525
- grpc_tcp_listener *sp;
528
+ void* on_accept_cb_arg) {
529
+ grpc_tcp_listener* sp;
526
530
  GPR_ASSERT(on_accept_cb);
527
531
  gpr_mu_lock(&s->mu);
528
532
  GPR_ASSERT(!s->on_accept_cb);
@@ -537,7 +541,7 @@ void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
537
541
  gpr_mu_unlock(&s->mu);
538
542
  }
539
543
 
540
- void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx *exec_ctx,
541
- grpc_tcp_server *s) {}
544
+ void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx* exec_ctx,
545
+ grpc_tcp_server* s) {}
542
546
 
543
547
  #endif /* GRPC_WINSOCK_SOCKET */
@@ -0,0 +1,420 @@
1
+ /*
2
+ *
3
+ * Copyright 2016 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #include "src/core/lib/iomgr/port.h"
20
+
21
+ #ifdef GRPC_UV
22
+
23
+ #include <limits.h>
24
+ #include <string.h>
25
+
26
+ #include <grpc/slice_buffer.h>
27
+
28
+ #include <grpc/support/alloc.h>
29
+ #include <grpc/support/log.h>
30
+ #include <grpc/support/string_util.h>
31
+
32
+ #include "src/core/lib/iomgr/error.h"
33
+ #include "src/core/lib/iomgr/iomgr_uv.h"
34
+ #include "src/core/lib/iomgr/network_status_tracker.h"
35
+ #include "src/core/lib/iomgr/resource_quota.h"
36
+ #include "src/core/lib/iomgr/tcp_uv.h"
37
+ #include "src/core/lib/slice/slice_internal.h"
38
+ #include "src/core/lib/slice/slice_string_helpers.h"
39
+ #include "src/core/lib/support/string.h"
40
+
41
+ grpc_core::TraceFlag grpc_tcp_trace(false, "tcp");
42
+
43
+ typedef struct {
44
+ grpc_endpoint base;
45
+ gpr_refcount refcount;
46
+
47
+ uv_write_t write_req;
48
+ uv_shutdown_t shutdown_req;
49
+
50
+ uv_tcp_t* handle;
51
+
52
+ grpc_closure* read_cb;
53
+ grpc_closure* write_cb;
54
+
55
+ grpc_slice_buffer* read_slices;
56
+ grpc_slice_buffer* write_slices;
57
+ uv_buf_t* write_buffers;
58
+
59
+ grpc_resource_user* resource_user;
60
+ grpc_resource_user_slice_allocator slice_allocator;
61
+
62
+ bool shutting_down;
63
+
64
+ char* peer_string;
65
+ grpc_pollset* pollset;
66
+ } grpc_tcp;
67
+
68
+ static void tcp_free(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp) {
69
+ grpc_resource_user_unref(exec_ctx, tcp->resource_user);
70
+ gpr_free(tcp->handle);
71
+ gpr_free(tcp->peer_string);
72
+ gpr_free(tcp);
73
+ }
74
+
75
+ #ifndef NDEBUG
76
+ #define TCP_UNREF(exec_ctx, tcp, reason) \
77
+ tcp_unref((exec_ctx), (tcp), (reason), __FILE__, __LINE__)
78
+ #define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__)
79
+ static void tcp_unref(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp,
80
+ const char* reason, const char* file, int line) {
81
+ if (grpc_tcp_trace.enabled()) {
82
+ gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
83
+ gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
84
+ "TCP unref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
85
+ val - 1);
86
+ }
87
+ if (gpr_unref(&tcp->refcount)) {
88
+ tcp_free(exec_ctx, tcp);
89
+ }
90
+ }
91
+
92
+ static void tcp_ref(grpc_tcp* tcp, const char* reason, const char* file,
93
+ int line) {
94
+ if (grpc_tcp_trace.enabled()) {
95
+ gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
96
+ gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
97
+ "TCP ref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
98
+ val + 1);
99
+ }
100
+ gpr_ref(&tcp->refcount);
101
+ }
102
+ #else
103
+ #define TCP_UNREF(exec_ctx, tcp, reason) tcp_unref((exec_ctx), (tcp))
104
+ #define TCP_REF(tcp, reason) tcp_ref((tcp))
105
+ static void tcp_unref(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp) {
106
+ if (gpr_unref(&tcp->refcount)) {
107
+ tcp_free(exec_ctx, tcp);
108
+ }
109
+ }
110
+
111
+ static void tcp_ref(grpc_tcp* tcp) { gpr_ref(&tcp->refcount); }
112
+ #endif
113
+
114
+ static void uv_close_callback(uv_handle_t* handle) {
115
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
116
+ grpc_tcp* tcp = (grpc_tcp*)handle->data;
117
+ TCP_UNREF(&exec_ctx, tcp, "destroy");
118
+ grpc_exec_ctx_finish(&exec_ctx);
119
+ }
120
+
121
+ static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size,
122
+ uv_buf_t* buf) {
123
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
124
+ grpc_tcp* tcp = (grpc_tcp*)handle->data;
125
+ (void)suggested_size;
126
+ /* Before calling uv_read_start, we allocate a buffer with exactly one slice
127
+ * to tcp->read_slices and wait for the callback indicating that the
128
+ * allocation was successful. So slices[0] should always exist here */
129
+ buf->base = (char*)GRPC_SLICE_START_PTR(tcp->read_slices->slices[0]);
130
+ buf->len = GRPC_SLICE_LENGTH(tcp->read_slices->slices[0]);
131
+ grpc_exec_ctx_finish(&exec_ctx);
132
+ }
133
+
134
+ static void call_read_cb(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp,
135
+ grpc_error* error) {
136
+ grpc_closure* cb = tcp->read_cb;
137
+ if (grpc_tcp_trace.enabled()) {
138
+ gpr_log(GPR_DEBUG, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
139
+ size_t i;
140
+ const char* str = grpc_error_string(error);
141
+ gpr_log(GPR_DEBUG, "read: error=%s", str);
142
+
143
+ for (i = 0; i < tcp->read_slices->count; i++) {
144
+ char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
145
+ GPR_DUMP_HEX | GPR_DUMP_ASCII);
146
+ gpr_log(GPR_DEBUG, "READ %p (peer=%s): %s", tcp, tcp->peer_string, dump);
147
+ gpr_free(dump);
148
+ }
149
+ }
150
+ tcp->read_slices = NULL;
151
+ tcp->read_cb = NULL;
152
+ GRPC_CLOSURE_RUN(exec_ctx, cb, error);
153
+ }
154
+
155
+ static void read_callback(uv_stream_t* stream, ssize_t nread,
156
+ const uv_buf_t* buf) {
157
+ grpc_error* error;
158
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
159
+ grpc_tcp* tcp = (grpc_tcp*)stream->data;
160
+ grpc_slice_buffer garbage;
161
+ if (nread == 0) {
162
+ // Nothing happened. Wait for the next callback
163
+ return;
164
+ }
165
+ TCP_UNREF(&exec_ctx, tcp, "read");
166
+ // TODO(murgatroid99): figure out what the return value here means
167
+ uv_read_stop(stream);
168
+ if (nread == UV_EOF) {
169
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF");
170
+ grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, tcp->read_slices);
171
+ } else if (nread > 0) {
172
+ // Successful read
173
+ error = GRPC_ERROR_NONE;
174
+ if ((size_t)nread < tcp->read_slices->length) {
175
+ /* TODO(murgatroid99): Instead of discarding the unused part of the read
176
+ * buffer, reuse it as the next read buffer. */
177
+ grpc_slice_buffer_init(&garbage);
178
+ grpc_slice_buffer_trim_end(
179
+ tcp->read_slices, tcp->read_slices->length - (size_t)nread, &garbage);
180
+ grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, &garbage);
181
+ }
182
+ } else {
183
+ // nread < 0: Error
184
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed");
185
+ grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, tcp->read_slices);
186
+ }
187
+ call_read_cb(&exec_ctx, tcp, error);
188
+ grpc_exec_ctx_finish(&exec_ctx);
189
+ }
190
+
191
+ static void tcp_read_allocation_done(grpc_exec_ctx* exec_ctx, void* tcpp,
192
+ grpc_error* error) {
193
+ int status;
194
+ grpc_tcp* tcp = (grpc_tcp*)tcpp;
195
+ if (grpc_tcp_trace.enabled()) {
196
+ gpr_log(GPR_DEBUG, "TCP:%p read_allocation_done: %s", tcp,
197
+ grpc_error_string(error));
198
+ }
199
+ if (error == GRPC_ERROR_NONE) {
200
+ status =
201
+ uv_read_start((uv_stream_t*)tcp->handle, alloc_uv_buf, read_callback);
202
+ if (status != 0) {
203
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed at start");
204
+ error = grpc_error_set_str(
205
+ error, GRPC_ERROR_STR_OS_ERROR,
206
+ grpc_slice_from_static_string(uv_strerror(status)));
207
+ }
208
+ }
209
+ if (error != GRPC_ERROR_NONE) {
210
+ grpc_slice_buffer_reset_and_unref_internal(exec_ctx, tcp->read_slices);
211
+ call_read_cb(exec_ctx, tcp, GRPC_ERROR_REF(error));
212
+ TCP_UNREF(exec_ctx, tcp, "read");
213
+ }
214
+ if (grpc_tcp_trace.enabled()) {
215
+ const char* str = grpc_error_string(error);
216
+ gpr_log(GPR_DEBUG, "Initiating read on %p: error=%s", tcp, str);
217
+ }
218
+ }
219
+
220
+ static void uv_endpoint_read(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
221
+ grpc_slice_buffer* read_slices, grpc_closure* cb) {
222
+ grpc_tcp* tcp = (grpc_tcp*)ep;
223
+ GRPC_UV_ASSERT_SAME_THREAD();
224
+ GPR_ASSERT(tcp->read_cb == NULL);
225
+ tcp->read_cb = cb;
226
+ tcp->read_slices = read_slices;
227
+ grpc_slice_buffer_reset_and_unref_internal(exec_ctx, read_slices);
228
+ TCP_REF(tcp, "read");
229
+ grpc_resource_user_alloc_slices(exec_ctx, &tcp->slice_allocator,
230
+ GRPC_TCP_DEFAULT_READ_SLICE_SIZE, 1,
231
+ tcp->read_slices);
232
+ }
233
+
234
+ static void write_callback(uv_write_t* req, int status) {
235
+ grpc_tcp* tcp = (grpc_tcp*)req->data;
236
+ grpc_error* error;
237
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
238
+ grpc_closure* cb = tcp->write_cb;
239
+ tcp->write_cb = NULL;
240
+ TCP_UNREF(&exec_ctx, tcp, "write");
241
+ if (status == 0) {
242
+ error = GRPC_ERROR_NONE;
243
+ } else {
244
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Write failed");
245
+ }
246
+ if (grpc_tcp_trace.enabled()) {
247
+ const char* str = grpc_error_string(error);
248
+ gpr_log(GPR_DEBUG, "write complete on %p: error=%s", tcp, str);
249
+ }
250
+ gpr_free(tcp->write_buffers);
251
+ GRPC_CLOSURE_SCHED(&exec_ctx, cb, error);
252
+ grpc_exec_ctx_finish(&exec_ctx);
253
+ }
254
+
255
+ static void uv_endpoint_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
256
+ grpc_slice_buffer* write_slices,
257
+ grpc_closure* cb) {
258
+ grpc_tcp* tcp = (grpc_tcp*)ep;
259
+ uv_buf_t* buffers;
260
+ unsigned int buffer_count;
261
+ unsigned int i;
262
+ grpc_slice* slice;
263
+ uv_write_t* write_req;
264
+ GRPC_UV_ASSERT_SAME_THREAD();
265
+
266
+ if (grpc_tcp_trace.enabled()) {
267
+ size_t j;
268
+
269
+ for (j = 0; j < write_slices->count; j++) {
270
+ char* data = grpc_dump_slice(write_slices->slices[j],
271
+ GPR_DUMP_HEX | GPR_DUMP_ASCII);
272
+ gpr_log(GPR_DEBUG, "WRITE %p (peer=%s): %s", tcp, tcp->peer_string, data);
273
+ gpr_free(data);
274
+ }
275
+ }
276
+
277
+ if (tcp->shutting_down) {
278
+ GRPC_CLOSURE_SCHED(
279
+ exec_ctx, cb,
280
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP socket is shutting down"));
281
+ return;
282
+ }
283
+
284
+ GPR_ASSERT(tcp->write_cb == NULL);
285
+ tcp->write_slices = write_slices;
286
+ GPR_ASSERT(tcp->write_slices->count <= UINT_MAX);
287
+ if (tcp->write_slices->count == 0) {
288
+ // No slices means we don't have to do anything,
289
+ // and libuv doesn't like empty writes
290
+ GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE);
291
+ return;
292
+ }
293
+
294
+ tcp->write_cb = cb;
295
+ buffer_count = (unsigned int)tcp->write_slices->count;
296
+ buffers = (uv_buf_t*)gpr_malloc(sizeof(uv_buf_t) * buffer_count);
297
+ for (i = 0; i < buffer_count; i++) {
298
+ slice = &tcp->write_slices->slices[i];
299
+ buffers[i].base = (char*)GRPC_SLICE_START_PTR(*slice);
300
+ buffers[i].len = GRPC_SLICE_LENGTH(*slice);
301
+ }
302
+ tcp->write_buffers = buffers;
303
+ write_req = &tcp->write_req;
304
+ write_req->data = tcp;
305
+ TCP_REF(tcp, "write");
306
+ // TODO(murgatroid99): figure out what the return value here means
307
+ uv_write(write_req, (uv_stream_t*)tcp->handle, buffers, buffer_count,
308
+ write_callback);
309
+ }
310
+
311
+ static void uv_add_to_pollset(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
312
+ grpc_pollset* pollset) {
313
+ // No-op. We're ignoring pollsets currently
314
+ (void)exec_ctx;
315
+ (void)ep;
316
+ (void)pollset;
317
+ grpc_tcp* tcp = (grpc_tcp*)ep;
318
+ tcp->pollset = pollset;
319
+ }
320
+
321
+ static void uv_add_to_pollset_set(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
322
+ grpc_pollset_set* pollset) {
323
+ // No-op. We're ignoring pollsets currently
324
+ (void)exec_ctx;
325
+ (void)ep;
326
+ (void)pollset;
327
+ }
328
+
329
+ static void uv_delete_from_pollset_set(grpc_exec_ctx* exec_ctx,
330
+ grpc_endpoint* ep,
331
+ grpc_pollset_set* pollset) {
332
+ // No-op. We're ignoring pollsets currently
333
+ (void)exec_ctx;
334
+ (void)ep;
335
+ (void)pollset;
336
+ }
337
+
338
+ static void shutdown_callback(uv_shutdown_t* req, int status) {}
339
+
340
+ static void uv_endpoint_shutdown(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
341
+ grpc_error* why) {
342
+ grpc_tcp* tcp = (grpc_tcp*)ep;
343
+ if (!tcp->shutting_down) {
344
+ if (grpc_tcp_trace.enabled()) {
345
+ const char* str = grpc_error_string(why);
346
+ gpr_log(GPR_DEBUG, "TCP %p shutdown why=%s", tcp->handle, str);
347
+ }
348
+ tcp->shutting_down = true;
349
+ uv_shutdown_t* req = &tcp->shutdown_req;
350
+ uv_shutdown(req, (uv_stream_t*)tcp->handle, shutdown_callback);
351
+ grpc_resource_user_shutdown(exec_ctx, tcp->resource_user);
352
+ }
353
+ GRPC_ERROR_UNREF(why);
354
+ }
355
+
356
+ static void uv_destroy(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep) {
357
+ grpc_network_status_unregister_endpoint(ep);
358
+ grpc_tcp* tcp = (grpc_tcp*)ep;
359
+ uv_close((uv_handle_t*)tcp->handle, uv_close_callback);
360
+ }
361
+
362
+ static char* uv_get_peer(grpc_endpoint* ep) {
363
+ grpc_tcp* tcp = (grpc_tcp*)ep;
364
+ return gpr_strdup(tcp->peer_string);
365
+ }
366
+
367
+ static grpc_resource_user* uv_get_resource_user(grpc_endpoint* ep) {
368
+ grpc_tcp* tcp = (grpc_tcp*)ep;
369
+ return tcp->resource_user;
370
+ }
371
+
372
+ static int uv_get_fd(grpc_endpoint* ep) { return -1; }
373
+
374
+ static grpc_endpoint_vtable vtable = {uv_endpoint_read,
375
+ uv_endpoint_write,
376
+ uv_add_to_pollset,
377
+ uv_add_to_pollset_set,
378
+ uv_delete_from_pollset_set,
379
+ uv_endpoint_shutdown,
380
+ uv_destroy,
381
+ uv_get_resource_user,
382
+ uv_get_peer,
383
+ uv_get_fd};
384
+
385
+ grpc_endpoint* grpc_tcp_create(uv_tcp_t* handle,
386
+ grpc_resource_quota* resource_quota,
387
+ char* peer_string) {
388
+ grpc_tcp* tcp = (grpc_tcp*)gpr_malloc(sizeof(grpc_tcp));
389
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
390
+
391
+ if (grpc_tcp_trace.enabled()) {
392
+ gpr_log(GPR_DEBUG, "Creating TCP endpoint %p", tcp);
393
+ }
394
+
395
+ /* Disable Nagle's Algorithm */
396
+ uv_tcp_nodelay(handle, 1);
397
+
398
+ memset(tcp, 0, sizeof(grpc_tcp));
399
+ tcp->base.vtable = &vtable;
400
+ tcp->handle = handle;
401
+ handle->data = tcp;
402
+ gpr_ref_init(&tcp->refcount, 1);
403
+ tcp->peer_string = gpr_strdup(peer_string);
404
+ tcp->shutting_down = false;
405
+ tcp->read_slices = NULL;
406
+ tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string);
407
+ grpc_resource_user_slice_allocator_init(
408
+ &tcp->slice_allocator, tcp->resource_user, tcp_read_allocation_done, tcp);
409
+ /* Tell network status tracking code about the new endpoint */
410
+ grpc_network_status_register_endpoint(&tcp->base);
411
+
412
+ #ifndef GRPC_UV_TCP_HOLD_LOOP
413
+ uv_unref((uv_handle_t*)handle);
414
+ #endif
415
+
416
+ grpc_exec_ctx_finish(&exec_ctx);
417
+ return &tcp->base;
418
+ }
419
+
420
+ #endif /* GRPC_UV */