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,57 +22,61 @@
22
22
  #include "src/core/lib/json/json.h"
23
23
  #include "src/core/lib/security/credentials/credentials.h"
24
24
 
25
+ #ifdef __cplusplus
26
+ extern "C" {
27
+ #endif
28
+
25
29
  // auth_refresh_token parsing.
26
30
  typedef struct {
27
- const char *type;
28
- char *client_id;
29
- char *client_secret;
30
- char *refresh_token;
31
+ const char* type;
32
+ char* client_id;
33
+ char* client_secret;
34
+ char* refresh_token;
31
35
  } grpc_auth_refresh_token;
32
36
 
33
37
  /// Returns 1 if the object is valid, 0 otherwise.
34
38
  int grpc_auth_refresh_token_is_valid(
35
- const grpc_auth_refresh_token *refresh_token);
39
+ const grpc_auth_refresh_token* refresh_token);
36
40
 
37
41
  /// Creates a refresh token object from string. Returns an invalid object if a
38
42
  /// parsing error has been encountered.
39
43
  grpc_auth_refresh_token grpc_auth_refresh_token_create_from_string(
40
- const char *json_string);
44
+ const char* json_string);
41
45
 
42
46
  /// Creates a refresh token object from parsed json. Returns an invalid object
43
47
  /// if a parsing error has been encountered.
44
48
  grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json(
45
- const grpc_json *json);
49
+ const grpc_json* json);
46
50
 
47
51
  /// Destructs the object.
48
- void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token *refresh_token);
52
+ void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token* refresh_token);
49
53
 
50
54
  // -- Oauth2 Token Fetcher credentials --
51
55
  //
52
56
  // This object is a base for credentials that need to acquire an oauth2 token
53
57
  // from an http service.
54
58
 
55
- typedef void (*grpc_fetch_oauth2_func)(grpc_exec_ctx *exec_ctx,
56
- grpc_credentials_metadata_request *req,
57
- grpc_httpcli_context *http_context,
58
- grpc_polling_entity *pollent,
59
+ typedef void (*grpc_fetch_oauth2_func)(grpc_exec_ctx* exec_ctx,
60
+ grpc_credentials_metadata_request* req,
61
+ grpc_httpcli_context* http_context,
62
+ grpc_polling_entity* pollent,
59
63
  grpc_iomgr_cb_func cb,
60
- gpr_timespec deadline);
64
+ grpc_millis deadline);
61
65
 
62
66
  typedef struct grpc_oauth2_pending_get_request_metadata {
63
- grpc_credentials_mdelem_array *md_array;
64
- grpc_closure *on_request_metadata;
65
- grpc_polling_entity *pollent;
66
- struct grpc_oauth2_pending_get_request_metadata *next;
67
+ grpc_credentials_mdelem_array* md_array;
68
+ grpc_closure* on_request_metadata;
69
+ grpc_polling_entity* pollent;
70
+ struct grpc_oauth2_pending_get_request_metadata* next;
67
71
  } grpc_oauth2_pending_get_request_metadata;
68
72
 
69
73
  typedef struct {
70
74
  grpc_call_credentials base;
71
75
  gpr_mu mu;
72
76
  grpc_mdelem access_token_md;
73
- gpr_timespec token_expiration;
77
+ grpc_millis token_expiration;
74
78
  bool token_fetch_pending;
75
- grpc_oauth2_pending_get_request_metadata *pending_requests;
79
+ grpc_oauth2_pending_get_request_metadata* pending_requests;
76
80
  grpc_httpcli_context httpcli_context;
77
81
  grpc_fetch_oauth2_func fetch_func;
78
82
  grpc_polling_entity pollent;
@@ -92,14 +96,18 @@ typedef struct {
92
96
 
93
97
  // Private constructor for refresh token credentials from an already parsed
94
98
  // refresh token. Takes ownership of the refresh token.
95
- grpc_call_credentials *
99
+ grpc_call_credentials*
96
100
  grpc_refresh_token_credentials_create_from_auth_refresh_token(
97
101
  grpc_auth_refresh_token token);
98
102
 
99
103
  // Exposed for testing only.
100
104
  grpc_credentials_status
101
105
  grpc_oauth2_token_fetcher_credentials_parse_server_response(
102
- grpc_exec_ctx *exec_ctx, const struct grpc_http_response *response,
103
- grpc_mdelem *token_md, gpr_timespec *token_lifetime);
106
+ grpc_exec_ctx* exec_ctx, const struct grpc_http_response* response,
107
+ grpc_mdelem* token_md, grpc_millis* token_lifetime);
108
+
109
+ #ifdef __cplusplus
110
+ }
111
+ #endif
104
112
 
105
113
  #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_OAUTH2_OAUTH2_CREDENTIALS_H */
@@ -31,27 +31,26 @@
31
31
  #include "src/core/lib/surface/api_trace.h"
32
32
  #include "src/core/lib/surface/validate_metadata.h"
33
33
 
34
- grpc_tracer_flag grpc_plugin_credentials_trace =
35
- GRPC_TRACER_INITIALIZER(false, "plugin_credentials");
34
+ grpc_core::TraceFlag grpc_plugin_credentials_trace(false, "plugin_credentials");
36
35
 
37
- static void plugin_destruct(grpc_exec_ctx *exec_ctx,
38
- grpc_call_credentials *creds) {
39
- grpc_plugin_credentials *c = (grpc_plugin_credentials *)creds;
36
+ static void plugin_destruct(grpc_exec_ctx* exec_ctx,
37
+ grpc_call_credentials* creds) {
38
+ grpc_plugin_credentials* c = (grpc_plugin_credentials*)creds;
40
39
  gpr_mu_destroy(&c->mu);
41
- if (c->plugin.state != NULL && c->plugin.destroy != NULL) {
40
+ if (c->plugin.state != nullptr && c->plugin.destroy != nullptr) {
42
41
  c->plugin.destroy(c->plugin.state);
43
42
  }
44
43
  }
45
44
 
46
45
  static void pending_request_remove_locked(
47
- grpc_plugin_credentials *c,
48
- grpc_plugin_credentials_pending_request *pending_request) {
49
- if (pending_request->prev == NULL) {
46
+ grpc_plugin_credentials* c,
47
+ grpc_plugin_credentials_pending_request* pending_request) {
48
+ if (pending_request->prev == nullptr) {
50
49
  c->pending_requests = pending_request->next;
51
50
  } else {
52
51
  pending_request->prev->next = pending_request->next;
53
52
  }
54
- if (pending_request->next != NULL) {
53
+ if (pending_request->next != nullptr) {
55
54
  pending_request->next->prev = pending_request->prev;
56
55
  }
57
56
  }
@@ -62,7 +61,7 @@ static void pending_request_remove_locked(
62
61
  // When this returns, r->cancelled indicates whether the request was
63
62
  // cancelled before completion.
64
63
  static void pending_request_complete(
65
- grpc_exec_ctx *exec_ctx, grpc_plugin_credentials_pending_request *r) {
64
+ grpc_exec_ctx* exec_ctx, grpc_plugin_credentials_pending_request* r) {
66
65
  gpr_mu_lock(&r->creds->mu);
67
66
  if (!r->cancelled) pending_request_remove_locked(r->creds, r);
68
67
  gpr_mu_unlock(&r->creds->mu);
@@ -70,13 +69,13 @@ static void pending_request_complete(
70
69
  grpc_call_credentials_unref(exec_ctx, &r->creds->base);
71
70
  }
72
71
 
73
- static grpc_error *process_plugin_result(
74
- grpc_exec_ctx *exec_ctx, grpc_plugin_credentials_pending_request *r,
75
- const grpc_metadata *md, size_t num_md, grpc_status_code status,
76
- const char *error_details) {
77
- grpc_error *error = GRPC_ERROR_NONE;
72
+ static grpc_error* process_plugin_result(
73
+ grpc_exec_ctx* exec_ctx, grpc_plugin_credentials_pending_request* r,
74
+ const grpc_metadata* md, size_t num_md, grpc_status_code status,
75
+ const char* error_details) {
76
+ grpc_error* error = GRPC_ERROR_NONE;
78
77
  if (status != GRPC_STATUS_OK) {
79
- char *msg;
78
+ char* msg;
80
79
  gpr_asprintf(&msg, "Getting metadata from plugin failed with error: %s",
81
80
  error_details);
82
81
  error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
@@ -112,18 +111,18 @@ static grpc_error *process_plugin_result(
112
111
  return error;
113
112
  }
114
113
 
115
- static void plugin_md_request_metadata_ready(void *request,
116
- const grpc_metadata *md,
114
+ static void plugin_md_request_metadata_ready(void* request,
115
+ const grpc_metadata* md,
117
116
  size_t num_md,
118
117
  grpc_status_code status,
119
- const char *error_details) {
118
+ const char* error_details) {
120
119
  /* called from application code */
121
120
  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INITIALIZER(
122
121
  GRPC_EXEC_CTX_FLAG_IS_FINISHED | GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP,
123
- NULL, NULL);
124
- grpc_plugin_credentials_pending_request *r =
125
- (grpc_plugin_credentials_pending_request *)request;
126
- if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) {
122
+ nullptr, nullptr);
123
+ grpc_plugin_credentials_pending_request* r =
124
+ (grpc_plugin_credentials_pending_request*)request;
125
+ if (grpc_plugin_credentials_trace.enabled()) {
127
126
  gpr_log(GPR_INFO,
128
127
  "plugin_credentials[%p]: request %p: plugin returned "
129
128
  "asynchronously",
@@ -133,10 +132,10 @@ static void plugin_md_request_metadata_ready(void *request,
133
132
  pending_request_complete(&exec_ctx, r);
134
133
  // If it has not been cancelled, process it.
135
134
  if (!r->cancelled) {
136
- grpc_error *error =
135
+ grpc_error* error =
137
136
  process_plugin_result(&exec_ctx, r, md, num_md, status, error_details);
138
137
  GRPC_CLOSURE_SCHED(&exec_ctx, r->on_request_metadata, error);
139
- } else if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) {
138
+ } else if (grpc_plugin_credentials_trace.enabled()) {
140
139
  gpr_log(GPR_INFO,
141
140
  "plugin_credentials[%p]: request %p: plugin was previously "
142
141
  "cancelled",
@@ -146,33 +145,33 @@ static void plugin_md_request_metadata_ready(void *request,
146
145
  grpc_exec_ctx_finish(&exec_ctx);
147
146
  }
148
147
 
149
- static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx,
150
- grpc_call_credentials *creds,
151
- grpc_polling_entity *pollent,
148
+ static bool plugin_get_request_metadata(grpc_exec_ctx* exec_ctx,
149
+ grpc_call_credentials* creds,
150
+ grpc_polling_entity* pollent,
152
151
  grpc_auth_metadata_context context,
153
- grpc_credentials_mdelem_array *md_array,
154
- grpc_closure *on_request_metadata,
155
- grpc_error **error) {
156
- grpc_plugin_credentials *c = (grpc_plugin_credentials *)creds;
152
+ grpc_credentials_mdelem_array* md_array,
153
+ grpc_closure* on_request_metadata,
154
+ grpc_error** error) {
155
+ grpc_plugin_credentials* c = (grpc_plugin_credentials*)creds;
157
156
  bool retval = true; // Synchronous return.
158
- if (c->plugin.get_metadata != NULL) {
157
+ if (c->plugin.get_metadata != nullptr) {
159
158
  // Create pending_request object.
160
- grpc_plugin_credentials_pending_request *pending_request =
161
- (grpc_plugin_credentials_pending_request *)gpr_zalloc(
159
+ grpc_plugin_credentials_pending_request* pending_request =
160
+ (grpc_plugin_credentials_pending_request*)gpr_zalloc(
162
161
  sizeof(*pending_request));
163
162
  pending_request->creds = c;
164
163
  pending_request->md_array = md_array;
165
164
  pending_request->on_request_metadata = on_request_metadata;
166
165
  // Add it to the pending list.
167
166
  gpr_mu_lock(&c->mu);
168
- if (c->pending_requests != NULL) {
167
+ if (c->pending_requests != nullptr) {
169
168
  c->pending_requests->prev = pending_request;
170
169
  }
171
170
  pending_request->next = c->pending_requests;
172
171
  c->pending_requests = pending_request;
173
172
  gpr_mu_unlock(&c->mu);
174
173
  // Invoke the plugin. The callback holds a ref to us.
175
- if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) {
174
+ if (grpc_plugin_credentials_trace.enabled()) {
176
175
  gpr_log(GPR_INFO, "plugin_credentials[%p]: request %p: invoking plugin",
177
176
  c, pending_request);
178
177
  }
@@ -180,12 +179,12 @@ static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx,
180
179
  grpc_metadata creds_md[GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX];
181
180
  size_t num_creds_md = 0;
182
181
  grpc_status_code status = GRPC_STATUS_OK;
183
- const char *error_details = NULL;
182
+ const char* error_details = nullptr;
184
183
  if (!c->plugin.get_metadata(c->plugin.state, context,
185
184
  plugin_md_request_metadata_ready,
186
185
  pending_request, creds_md, &num_creds_md,
187
186
  &status, &error_details)) {
188
- if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) {
187
+ if (grpc_plugin_credentials_trace.enabled()) {
189
188
  gpr_log(GPR_INFO,
190
189
  "plugin_credentials[%p]: request %p: plugin will return "
191
190
  "asynchronously",
@@ -200,7 +199,7 @@ static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx,
200
199
  // asynchronously by plugin_cancel_get_request_metadata(), so return
201
200
  // false. Otherwise, process the result.
202
201
  if (pending_request->cancelled) {
203
- if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) {
202
+ if (grpc_plugin_credentials_trace.enabled()) {
204
203
  gpr_log(GPR_INFO,
205
204
  "plugin_credentials[%p]: request %p was cancelled, error "
206
205
  "will be returned asynchronously",
@@ -208,7 +207,7 @@ static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx,
208
207
  }
209
208
  retval = false;
210
209
  } else {
211
- if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) {
210
+ if (grpc_plugin_credentials_trace.enabled()) {
212
211
  gpr_log(GPR_INFO,
213
212
  "plugin_credentials[%p]: request %p: plugin returned "
214
213
  "synchronously",
@@ -222,22 +221,22 @@ static bool plugin_get_request_metadata(grpc_exec_ctx *exec_ctx,
222
221
  grpc_slice_unref_internal(exec_ctx, creds_md[i].key);
223
222
  grpc_slice_unref_internal(exec_ctx, creds_md[i].value);
224
223
  }
225
- gpr_free((void *)error_details);
224
+ gpr_free((void*)error_details);
226
225
  gpr_free(pending_request);
227
226
  }
228
227
  return retval;
229
228
  }
230
229
 
231
230
  static void plugin_cancel_get_request_metadata(
232
- grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds,
233
- grpc_credentials_mdelem_array *md_array, grpc_error *error) {
234
- grpc_plugin_credentials *c = (grpc_plugin_credentials *)creds;
231
+ grpc_exec_ctx* exec_ctx, grpc_call_credentials* creds,
232
+ grpc_credentials_mdelem_array* md_array, grpc_error* error) {
233
+ grpc_plugin_credentials* c = (grpc_plugin_credentials*)creds;
235
234
  gpr_mu_lock(&c->mu);
236
- for (grpc_plugin_credentials_pending_request *pending_request =
235
+ for (grpc_plugin_credentials_pending_request* pending_request =
237
236
  c->pending_requests;
238
- pending_request != NULL; pending_request = pending_request->next) {
237
+ pending_request != nullptr; pending_request = pending_request->next) {
239
238
  if (pending_request->md_array == md_array) {
240
- if (GRPC_TRACER_ON(grpc_plugin_credentials_trace)) {
239
+ if (grpc_plugin_credentials_trace.enabled()) {
241
240
  gpr_log(GPR_INFO, "plugin_credentials[%p]: cancelling request %p", c,
242
241
  pending_request);
243
242
  }
@@ -256,12 +255,12 @@ static grpc_call_credentials_vtable plugin_vtable = {
256
255
  plugin_destruct, plugin_get_request_metadata,
257
256
  plugin_cancel_get_request_metadata};
258
257
 
259
- grpc_call_credentials *grpc_metadata_credentials_create_from_plugin(
260
- grpc_metadata_credentials_plugin plugin, void *reserved) {
261
- grpc_plugin_credentials *c = gpr_zalloc(sizeof(*c));
258
+ grpc_call_credentials* grpc_metadata_credentials_create_from_plugin(
259
+ grpc_metadata_credentials_plugin plugin, void* reserved) {
260
+ grpc_plugin_credentials* c = (grpc_plugin_credentials*)gpr_zalloc(sizeof(*c));
262
261
  GRPC_API_TRACE("grpc_metadata_credentials_create_from_plugin(reserved=%p)", 1,
263
262
  (reserved));
264
- GPR_ASSERT(reserved == NULL);
263
+ GPR_ASSERT(reserved == nullptr);
265
264
  c->base.type = plugin.type;
266
265
  c->base.vtable = &plugin_vtable;
267
266
  gpr_ref_init(&c->base.refcount, 1);
@@ -21,24 +21,24 @@
21
21
 
22
22
  #include "src/core/lib/security/credentials/credentials.h"
23
23
 
24
- extern grpc_tracer_flag grpc_plugin_credentials_trace;
24
+ extern grpc_core::TraceFlag grpc_plugin_credentials_trace;
25
25
 
26
26
  struct grpc_plugin_credentials;
27
27
 
28
28
  typedef struct grpc_plugin_credentials_pending_request {
29
29
  bool cancelled;
30
- struct grpc_plugin_credentials *creds;
31
- grpc_credentials_mdelem_array *md_array;
32
- grpc_closure *on_request_metadata;
33
- struct grpc_plugin_credentials_pending_request *prev;
34
- struct grpc_plugin_credentials_pending_request *next;
30
+ struct grpc_plugin_credentials* creds;
31
+ grpc_credentials_mdelem_array* md_array;
32
+ grpc_closure* on_request_metadata;
33
+ struct grpc_plugin_credentials_pending_request* prev;
34
+ struct grpc_plugin_credentials_pending_request* next;
35
35
  } grpc_plugin_credentials_pending_request;
36
36
 
37
37
  typedef struct grpc_plugin_credentials {
38
38
  grpc_call_credentials base;
39
39
  grpc_metadata_credentials_plugin plugin;
40
40
  gpr_mu mu;
41
- grpc_plugin_credentials_pending_request *pending_requests;
41
+ grpc_plugin_credentials_pending_request* pending_requests;
42
42
  } grpc_plugin_credentials;
43
43
 
44
44
  #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_PLUGIN_PLUGIN_CREDENTIALS_H */
@@ -0,0 +1,344 @@
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/security/credentials/ssl/ssl_credentials.h"
20
+
21
+ #include <string.h>
22
+
23
+ #include "src/core/lib/channel/channel_args.h"
24
+ #include "src/core/lib/surface/api_trace.h"
25
+
26
+ #include <grpc/support/alloc.h>
27
+ #include <grpc/support/log.h>
28
+ #include <grpc/support/string_util.h>
29
+
30
+ //
31
+ // SSL Channel Credentials.
32
+ //
33
+
34
+ void grpc_tsi_ssl_pem_key_cert_pairs_destroy(tsi_ssl_pem_key_cert_pair* kp,
35
+ size_t num_key_cert_pairs) {
36
+ if (kp == nullptr) return;
37
+ for (size_t i = 0; i < num_key_cert_pairs; i++) {
38
+ gpr_free((void*)kp[i].private_key);
39
+ gpr_free((void*)kp[i].cert_chain);
40
+ }
41
+ gpr_free(kp);
42
+ }
43
+
44
+ static void ssl_destruct(grpc_exec_ctx* exec_ctx,
45
+ grpc_channel_credentials* creds) {
46
+ grpc_ssl_credentials* c = (grpc_ssl_credentials*)creds;
47
+ gpr_free(c->config.pem_root_certs);
48
+ grpc_tsi_ssl_pem_key_cert_pairs_destroy(c->config.pem_key_cert_pair, 1);
49
+ }
50
+
51
+ static grpc_security_status ssl_create_security_connector(
52
+ grpc_exec_ctx* exec_ctx, grpc_channel_credentials* creds,
53
+ grpc_call_credentials* call_creds, const char* target,
54
+ const grpc_channel_args* args, grpc_channel_security_connector** sc,
55
+ grpc_channel_args** new_args) {
56
+ grpc_ssl_credentials* c = (grpc_ssl_credentials*)creds;
57
+ grpc_security_status status = GRPC_SECURITY_OK;
58
+ const char* overridden_target_name = nullptr;
59
+ for (size_t i = 0; args && i < args->num_args; i++) {
60
+ grpc_arg* arg = &args->args[i];
61
+ if (strcmp(arg->key, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG) == 0 &&
62
+ arg->type == GRPC_ARG_STRING) {
63
+ overridden_target_name = arg->value.string;
64
+ break;
65
+ }
66
+ }
67
+ status = grpc_ssl_channel_security_connector_create(
68
+ exec_ctx, creds, call_creds, &c->config, target, overridden_target_name,
69
+ sc);
70
+ if (status != GRPC_SECURITY_OK) {
71
+ return status;
72
+ }
73
+ grpc_arg new_arg = grpc_channel_arg_string_create(
74
+ (char*)GRPC_ARG_HTTP2_SCHEME, (char*)"https");
75
+ *new_args = grpc_channel_args_copy_and_add(args, &new_arg, 1);
76
+ return status;
77
+ }
78
+
79
+ static grpc_channel_credentials_vtable ssl_vtable = {
80
+ ssl_destruct, ssl_create_security_connector, nullptr};
81
+
82
+ static void ssl_build_config(const char* pem_root_certs,
83
+ grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
84
+ grpc_ssl_config* config) {
85
+ if (pem_root_certs != nullptr) {
86
+ config->pem_root_certs = gpr_strdup(pem_root_certs);
87
+ }
88
+ if (pem_key_cert_pair != nullptr) {
89
+ GPR_ASSERT(pem_key_cert_pair->private_key != nullptr);
90
+ GPR_ASSERT(pem_key_cert_pair->cert_chain != nullptr);
91
+ config->pem_key_cert_pair = (tsi_ssl_pem_key_cert_pair*)gpr_zalloc(
92
+ sizeof(tsi_ssl_pem_key_cert_pair));
93
+ config->pem_key_cert_pair->cert_chain =
94
+ gpr_strdup(pem_key_cert_pair->cert_chain);
95
+ config->pem_key_cert_pair->private_key =
96
+ gpr_strdup(pem_key_cert_pair->private_key);
97
+ }
98
+ }
99
+
100
+ grpc_channel_credentials* grpc_ssl_credentials_create(
101
+ const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
102
+ void* reserved) {
103
+ grpc_ssl_credentials* c =
104
+ (grpc_ssl_credentials*)gpr_zalloc(sizeof(grpc_ssl_credentials));
105
+ GRPC_API_TRACE(
106
+ "grpc_ssl_credentials_create(pem_root_certs=%s, "
107
+ "pem_key_cert_pair=%p, "
108
+ "reserved=%p)",
109
+ 3, (pem_root_certs, pem_key_cert_pair, reserved));
110
+ GPR_ASSERT(reserved == nullptr);
111
+ c->base.type = GRPC_CHANNEL_CREDENTIALS_TYPE_SSL;
112
+ c->base.vtable = &ssl_vtable;
113
+ gpr_ref_init(&c->base.refcount, 1);
114
+ ssl_build_config(pem_root_certs, pem_key_cert_pair, &c->config);
115
+ return &c->base;
116
+ }
117
+
118
+ //
119
+ // SSL Server Credentials.
120
+ //
121
+
122
+ struct grpc_ssl_server_credentials_options {
123
+ grpc_ssl_client_certificate_request_type client_certificate_request;
124
+ grpc_ssl_server_certificate_config* certificate_config;
125
+ grpc_ssl_server_certificate_config_fetcher* certificate_config_fetcher;
126
+ };
127
+
128
+ static void ssl_server_destruct(grpc_exec_ctx* exec_ctx,
129
+ grpc_server_credentials* creds) {
130
+ grpc_ssl_server_credentials* c = (grpc_ssl_server_credentials*)creds;
131
+ grpc_tsi_ssl_pem_key_cert_pairs_destroy(c->config.pem_key_cert_pairs,
132
+ c->config.num_key_cert_pairs);
133
+ gpr_free(c->config.pem_root_certs);
134
+ }
135
+
136
+ static grpc_security_status ssl_server_create_security_connector(
137
+ grpc_exec_ctx* exec_ctx, grpc_server_credentials* creds,
138
+ grpc_server_security_connector** sc) {
139
+ return grpc_ssl_server_security_connector_create(exec_ctx, creds, sc);
140
+ }
141
+
142
+ static grpc_server_credentials_vtable ssl_server_vtable = {
143
+ ssl_server_destruct, ssl_server_create_security_connector};
144
+
145
+ tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs(
146
+ const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
147
+ size_t num_key_cert_pairs) {
148
+ tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr;
149
+ if (num_key_cert_pairs > 0) {
150
+ GPR_ASSERT(pem_key_cert_pairs != nullptr);
151
+ tsi_pairs = (tsi_ssl_pem_key_cert_pair*)gpr_zalloc(
152
+ num_key_cert_pairs * sizeof(tsi_ssl_pem_key_cert_pair));
153
+ }
154
+ for (size_t i = 0; i < num_key_cert_pairs; i++) {
155
+ GPR_ASSERT(pem_key_cert_pairs[i].private_key != nullptr);
156
+ GPR_ASSERT(pem_key_cert_pairs[i].cert_chain != nullptr);
157
+ tsi_pairs[i].cert_chain = gpr_strdup(pem_key_cert_pairs[i].cert_chain);
158
+ tsi_pairs[i].private_key = gpr_strdup(pem_key_cert_pairs[i].private_key);
159
+ }
160
+ return tsi_pairs;
161
+ }
162
+
163
+ static void ssl_build_server_config(
164
+ const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
165
+ size_t num_key_cert_pairs,
166
+ grpc_ssl_client_certificate_request_type client_certificate_request,
167
+ grpc_ssl_server_config* config) {
168
+ config->client_certificate_request = client_certificate_request;
169
+ if (pem_root_certs != nullptr) {
170
+ config->pem_root_certs = gpr_strdup(pem_root_certs);
171
+ }
172
+ config->pem_key_cert_pairs = grpc_convert_grpc_to_tsi_cert_pairs(
173
+ pem_key_cert_pairs, num_key_cert_pairs);
174
+ config->num_key_cert_pairs = num_key_cert_pairs;
175
+ }
176
+
177
+ grpc_ssl_server_certificate_config* grpc_ssl_server_certificate_config_create(
178
+ const char* pem_root_certs,
179
+ const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
180
+ size_t num_key_cert_pairs) {
181
+ grpc_ssl_server_certificate_config* config =
182
+ (grpc_ssl_server_certificate_config*)gpr_zalloc(
183
+ sizeof(grpc_ssl_server_certificate_config));
184
+ if (pem_root_certs != nullptr) {
185
+ config->pem_root_certs = gpr_strdup(pem_root_certs);
186
+ }
187
+ if (num_key_cert_pairs > 0) {
188
+ GPR_ASSERT(pem_key_cert_pairs != nullptr);
189
+ config->pem_key_cert_pairs = (grpc_ssl_pem_key_cert_pair*)gpr_zalloc(
190
+ num_key_cert_pairs * sizeof(grpc_ssl_pem_key_cert_pair));
191
+ }
192
+ config->num_key_cert_pairs = num_key_cert_pairs;
193
+ for (size_t i = 0; i < num_key_cert_pairs; i++) {
194
+ GPR_ASSERT(pem_key_cert_pairs[i].private_key != nullptr);
195
+ GPR_ASSERT(pem_key_cert_pairs[i].cert_chain != nullptr);
196
+ config->pem_key_cert_pairs[i].cert_chain =
197
+ gpr_strdup(pem_key_cert_pairs[i].cert_chain);
198
+ config->pem_key_cert_pairs[i].private_key =
199
+ gpr_strdup(pem_key_cert_pairs[i].private_key);
200
+ }
201
+ return config;
202
+ }
203
+
204
+ void grpc_ssl_server_certificate_config_destroy(
205
+ grpc_ssl_server_certificate_config* config) {
206
+ if (config == nullptr) return;
207
+ for (size_t i = 0; i < config->num_key_cert_pairs; i++) {
208
+ gpr_free((void*)config->pem_key_cert_pairs[i].private_key);
209
+ gpr_free((void*)config->pem_key_cert_pairs[i].cert_chain);
210
+ }
211
+ gpr_free(config->pem_key_cert_pairs);
212
+ gpr_free(config->pem_root_certs);
213
+ gpr_free(config);
214
+ }
215
+
216
+ grpc_ssl_server_credentials_options*
217
+ grpc_ssl_server_credentials_create_options_using_config(
218
+ grpc_ssl_client_certificate_request_type client_certificate_request,
219
+ grpc_ssl_server_certificate_config* config) {
220
+ grpc_ssl_server_credentials_options* options = nullptr;
221
+ if (config == nullptr) {
222
+ gpr_log(GPR_ERROR, "Certificate config must not be NULL.");
223
+ goto done;
224
+ }
225
+ options = (grpc_ssl_server_credentials_options*)gpr_zalloc(
226
+ sizeof(grpc_ssl_server_credentials_options));
227
+ options->client_certificate_request = client_certificate_request;
228
+ options->certificate_config = config;
229
+ done:
230
+ return options;
231
+ }
232
+
233
+ grpc_ssl_server_credentials_options*
234
+ grpc_ssl_server_credentials_create_options_using_config_fetcher(
235
+ grpc_ssl_client_certificate_request_type client_certificate_request,
236
+ grpc_ssl_server_certificate_config_callback cb, void* user_data) {
237
+ if (cb == nullptr) {
238
+ gpr_log(GPR_ERROR, "Invalid certificate config callback parameter.");
239
+ return nullptr;
240
+ }
241
+
242
+ grpc_ssl_server_certificate_config_fetcher* fetcher =
243
+ (grpc_ssl_server_certificate_config_fetcher*)gpr_zalloc(
244
+ sizeof(grpc_ssl_server_certificate_config_fetcher));
245
+ fetcher->cb = cb;
246
+ fetcher->user_data = user_data;
247
+
248
+ grpc_ssl_server_credentials_options* options =
249
+ (grpc_ssl_server_credentials_options*)gpr_zalloc(
250
+ sizeof(grpc_ssl_server_credentials_options));
251
+ options->client_certificate_request = client_certificate_request;
252
+ options->certificate_config_fetcher = fetcher;
253
+
254
+ return options;
255
+ }
256
+
257
+ grpc_server_credentials* grpc_ssl_server_credentials_create(
258
+ const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
259
+ size_t num_key_cert_pairs, int force_client_auth, void* reserved) {
260
+ return grpc_ssl_server_credentials_create_ex(
261
+ pem_root_certs, pem_key_cert_pairs, num_key_cert_pairs,
262
+ force_client_auth
263
+ ? GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
264
+ : GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
265
+ reserved);
266
+ }
267
+
268
+ grpc_server_credentials* grpc_ssl_server_credentials_create_ex(
269
+ const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
270
+ size_t num_key_cert_pairs,
271
+ grpc_ssl_client_certificate_request_type client_certificate_request,
272
+ void* reserved) {
273
+ GRPC_API_TRACE(
274
+ "grpc_ssl_server_credentials_create_ex("
275
+ "pem_root_certs=%s, pem_key_cert_pairs=%p, num_key_cert_pairs=%lu, "
276
+ "client_certificate_request=%d, reserved=%p)",
277
+ 5,
278
+ (pem_root_certs, pem_key_cert_pairs, (unsigned long)num_key_cert_pairs,
279
+ client_certificate_request, reserved));
280
+ GPR_ASSERT(reserved == nullptr);
281
+
282
+ grpc_ssl_server_certificate_config* cert_config =
283
+ grpc_ssl_server_certificate_config_create(
284
+ pem_root_certs, pem_key_cert_pairs, num_key_cert_pairs);
285
+ grpc_ssl_server_credentials_options* options =
286
+ grpc_ssl_server_credentials_create_options_using_config(
287
+ client_certificate_request, cert_config);
288
+
289
+ return grpc_ssl_server_credentials_create_with_options(options);
290
+ }
291
+
292
+ grpc_server_credentials* grpc_ssl_server_credentials_create_with_options(
293
+ grpc_ssl_server_credentials_options* options) {
294
+ grpc_server_credentials* retval = nullptr;
295
+ grpc_ssl_server_credentials* c = nullptr;
296
+
297
+ if (options == nullptr) {
298
+ gpr_log(GPR_ERROR,
299
+ "Invalid options trying to create SSL server credentials.");
300
+ goto done;
301
+ }
302
+
303
+ if (options->certificate_config == nullptr &&
304
+ options->certificate_config_fetcher == nullptr) {
305
+ gpr_log(GPR_ERROR,
306
+ "SSL server credentials options must specify either "
307
+ "certificate config or fetcher.");
308
+ goto done;
309
+ } else if (options->certificate_config_fetcher != nullptr &&
310
+ options->certificate_config_fetcher->cb == nullptr) {
311
+ gpr_log(GPR_ERROR, "Certificate config fetcher callback must not be NULL.");
312
+ goto done;
313
+ }
314
+
315
+ c = (grpc_ssl_server_credentials*)gpr_zalloc(
316
+ sizeof(grpc_ssl_server_credentials));
317
+ c->base.type = GRPC_CHANNEL_CREDENTIALS_TYPE_SSL;
318
+ gpr_ref_init(&c->base.refcount, 1);
319
+ c->base.vtable = &ssl_server_vtable;
320
+
321
+ if (options->certificate_config_fetcher != nullptr) {
322
+ c->config.client_certificate_request = options->client_certificate_request;
323
+ c->certificate_config_fetcher = *options->certificate_config_fetcher;
324
+ } else {
325
+ ssl_build_server_config(options->certificate_config->pem_root_certs,
326
+ options->certificate_config->pem_key_cert_pairs,
327
+ options->certificate_config->num_key_cert_pairs,
328
+ options->client_certificate_request, &c->config);
329
+ }
330
+
331
+ retval = &c->base;
332
+
333
+ done:
334
+ grpc_ssl_server_credentials_options_destroy(options);
335
+ return retval;
336
+ }
337
+
338
+ void grpc_ssl_server_credentials_options_destroy(
339
+ grpc_ssl_server_credentials_options* o) {
340
+ if (o == nullptr) return;
341
+ gpr_free(o->certificate_config_fetcher);
342
+ grpc_ssl_server_certificate_config_destroy(o->certificate_config);
343
+ gpr_free(o);
344
+ }