grpc 0.11.0 → 0.12.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 (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +29456 -0
  3. data/Rakefile +13 -8
  4. data/etc/roots.pem +5114 -0
  5. data/include/grpc/byte_buffer.h +120 -0
  6. data/include/grpc/byte_buffer_reader.h +58 -0
  7. data/include/grpc/census.h +488 -0
  8. data/include/grpc/compression.h +106 -0
  9. data/include/grpc/grpc.h +732 -0
  10. data/include/grpc/grpc_security.h +374 -0
  11. data/include/grpc/grpc_zookeeper.h +59 -0
  12. data/include/grpc/status.h +163 -0
  13. data/include/grpc/support/alloc.h +72 -0
  14. data/include/grpc/support/atm.h +92 -0
  15. data/include/grpc/support/atm_gcc_atomic.h +72 -0
  16. data/include/grpc/support/atm_gcc_sync.h +87 -0
  17. data/include/grpc/support/atm_win32.h +125 -0
  18. data/include/grpc/support/avl.h +91 -0
  19. data/include/grpc/support/cmdline.h +101 -0
  20. data/include/grpc/support/cpu.h +57 -0
  21. data/include/grpc/support/histogram.h +76 -0
  22. data/include/grpc/support/host_port.h +64 -0
  23. data/include/grpc/support/log.h +108 -0
  24. data/include/grpc/support/log_win32.h +51 -0
  25. data/include/grpc/support/port_platform.h +356 -0
  26. data/include/grpc/support/slice.h +182 -0
  27. data/include/grpc/support/slice_buffer.h +102 -0
  28. data/include/grpc/support/string_util.h +61 -0
  29. data/include/grpc/support/subprocess.h +57 -0
  30. data/include/grpc/support/sync.h +315 -0
  31. data/include/grpc/support/sync_generic.h +55 -0
  32. data/include/grpc/support/sync_posix.h +47 -0
  33. data/include/grpc/support/sync_win32.h +49 -0
  34. data/include/grpc/support/thd.h +91 -0
  35. data/include/grpc/support/time.h +128 -0
  36. data/include/grpc/support/tls.h +77 -0
  37. data/include/grpc/support/tls_gcc.h +56 -0
  38. data/include/grpc/support/tls_msvc.h +56 -0
  39. data/include/grpc/support/tls_pthread.h +60 -0
  40. data/include/grpc/support/useful.h +75 -0
  41. data/src/core/census/aggregation.h +66 -0
  42. data/src/core/census/context.c +46 -0
  43. data/src/core/census/context.h +47 -0
  44. data/src/core/census/grpc_context.c +53 -0
  45. data/src/core/census/grpc_filter.c +184 -0
  46. data/src/core/census/grpc_filter.h +44 -0
  47. data/src/core/census/initialize.c +57 -0
  48. data/src/core/census/operation.c +63 -0
  49. data/src/core/census/rpc_metric_id.h +51 -0
  50. data/src/core/census/tracing.c +45 -0
  51. data/src/core/channel/channel_args.c +209 -0
  52. data/src/core/channel/channel_args.h +88 -0
  53. data/src/core/channel/channel_stack.c +262 -0
  54. data/src/core/channel/channel_stack.h +260 -0
  55. data/src/core/channel/client_channel.c +524 -0
  56. data/src/core/channel/client_channel.h +63 -0
  57. data/src/core/channel/client_uchannel.c +243 -0
  58. data/src/core/channel/client_uchannel.h +60 -0
  59. data/src/core/channel/compress_filter.c +297 -0
  60. data/src/core/channel/compress_filter.h +65 -0
  61. data/src/core/channel/connected_channel.c +167 -0
  62. data/src/core/channel/connected_channel.h +51 -0
  63. data/src/core/channel/context.h +49 -0
  64. data/src/core/channel/http_client_filter.c +248 -0
  65. data/src/core/channel/http_client_filter.h +44 -0
  66. data/src/core/channel/http_server_filter.c +233 -0
  67. data/src/core/channel/http_server_filter.h +42 -0
  68. data/src/core/channel/subchannel_call_holder.c +259 -0
  69. data/src/core/channel/subchannel_call_holder.h +98 -0
  70. data/src/core/client_config/client_config.c +72 -0
  71. data/src/core/client_config/client_config.h +53 -0
  72. data/src/core/client_config/connector.c +54 -0
  73. data/src/core/client_config/connector.h +95 -0
  74. data/src/core/client_config/default_initial_connect_string.c +39 -0
  75. data/src/core/client_config/initial_connect_string.c +53 -0
  76. data/src/core/client_config/initial_connect_string.h +50 -0
  77. data/src/core/client_config/lb_policies/pick_first.c +398 -0
  78. data/src/core/client_config/lb_policies/pick_first.h +43 -0
  79. data/src/core/client_config/lb_policies/round_robin.c +537 -0
  80. data/src/core/client_config/lb_policies/round_robin.h +46 -0
  81. data/src/core/client_config/lb_policy.c +134 -0
  82. data/src/core/client_config/lb_policy.h +143 -0
  83. data/src/core/client_config/lb_policy_factory.c +48 -0
  84. data/src/core/client_config/lb_policy_factory.h +73 -0
  85. data/src/core/client_config/lb_policy_registry.c +88 -0
  86. data/src/core/client_config/lb_policy_registry.h +54 -0
  87. data/src/core/client_config/resolver.c +82 -0
  88. data/src/core/client_config/resolver.h +94 -0
  89. data/src/core/client_config/resolver_factory.c +55 -0
  90. data/src/core/client_config/resolver_factory.h +82 -0
  91. data/src/core/client_config/resolver_registry.c +137 -0
  92. data/src/core/client_config/resolver_registry.h +65 -0
  93. data/src/core/client_config/resolvers/dns_resolver.c +257 -0
  94. data/src/core/client_config/resolvers/dns_resolver.h +42 -0
  95. data/src/core/client_config/resolvers/sockaddr_resolver.c +391 -0
  96. data/src/core/client_config/resolvers/sockaddr_resolver.h +50 -0
  97. data/src/core/client_config/subchannel.c +697 -0
  98. data/src/core/client_config/subchannel.h +165 -0
  99. data/src/core/client_config/subchannel_factory.c +49 -0
  100. data/src/core/client_config/subchannel_factory.h +66 -0
  101. data/src/core/client_config/uri_parser.c +242 -0
  102. data/src/core/client_config/uri_parser.h +51 -0
  103. data/src/core/compression/algorithm.c +166 -0
  104. data/src/core/compression/algorithm_metadata.h +53 -0
  105. data/src/core/compression/message_compress.c +198 -0
  106. data/src/core/compression/message_compress.h +52 -0
  107. data/src/core/debug/trace.c +136 -0
  108. data/src/core/debug/trace.h +43 -0
  109. data/src/core/httpcli/format_request.c +120 -0
  110. data/src/core/httpcli/format_request.h +45 -0
  111. data/src/core/httpcli/httpcli.c +286 -0
  112. data/src/core/httpcli/httpcli.h +162 -0
  113. data/src/core/httpcli/httpcli_security_connector.c +189 -0
  114. data/src/core/httpcli/parser.c +211 -0
  115. data/src/core/httpcli/parser.h +64 -0
  116. data/src/core/iomgr/closure.c +98 -0
  117. data/src/core/iomgr/closure.h +97 -0
  118. data/src/core/iomgr/endpoint.c +67 -0
  119. data/src/core/iomgr/endpoint.h +102 -0
  120. data/src/core/iomgr/endpoint_pair.h +47 -0
  121. data/src/core/iomgr/endpoint_pair_posix.c +82 -0
  122. data/src/core/iomgr/endpoint_pair_windows.c +97 -0
  123. data/src/core/iomgr/exec_ctx.c +72 -0
  124. data/src/core/iomgr/exec_ctx.h +78 -0
  125. data/src/core/iomgr/executor.c +143 -0
  126. data/src/core/iomgr/executor.h +53 -0
  127. data/src/core/iomgr/fd_posix.c +438 -0
  128. data/src/core/iomgr/fd_posix.h +189 -0
  129. data/src/core/iomgr/iocp_windows.c +206 -0
  130. data/src/core/iomgr/iocp_windows.h +56 -0
  131. data/src/core/iomgr/iomgr.c +156 -0
  132. data/src/core/iomgr/iomgr.h +43 -0
  133. data/src/core/iomgr/iomgr_internal.h +58 -0
  134. data/src/core/iomgr/iomgr_posix.c +52 -0
  135. data/src/core/iomgr/iomgr_posix.h +39 -0
  136. data/src/core/iomgr/iomgr_windows.c +73 -0
  137. data/src/core/iomgr/pollset.h +95 -0
  138. data/src/core/iomgr/pollset_multipoller_with_epoll.c +258 -0
  139. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +227 -0
  140. data/src/core/iomgr/pollset_posix.c +638 -0
  141. data/src/core/iomgr/pollset_posix.h +147 -0
  142. data/src/core/iomgr/pollset_set.h +67 -0
  143. data/src/core/iomgr/pollset_set_posix.c +182 -0
  144. data/src/core/iomgr/pollset_set_posix.h +61 -0
  145. data/src/core/iomgr/pollset_set_windows.c +60 -0
  146. data/src/core/iomgr/pollset_set_windows.h +39 -0
  147. data/src/core/iomgr/pollset_windows.c +248 -0
  148. data/src/core/iomgr/pollset_windows.h +79 -0
  149. data/src/core/iomgr/resolve_address.h +72 -0
  150. data/src/core/iomgr/resolve_address_posix.c +183 -0
  151. data/src/core/iomgr/resolve_address_windows.c +166 -0
  152. data/src/core/iomgr/sockaddr.h +47 -0
  153. data/src/core/iomgr/sockaddr_posix.h +44 -0
  154. data/src/core/iomgr/sockaddr_utils.c +234 -0
  155. data/src/core/iomgr/sockaddr_utils.h +89 -0
  156. data/src/core/iomgr/sockaddr_win32.h +46 -0
  157. data/src/core/iomgr/socket_utils_common_posix.c +208 -0
  158. data/src/core/iomgr/socket_utils_linux.c +51 -0
  159. data/src/core/iomgr/socket_utils_posix.c +70 -0
  160. data/src/core/iomgr/socket_utils_posix.h +113 -0
  161. data/src/core/iomgr/socket_windows.c +98 -0
  162. data/src/core/iomgr/socket_windows.h +111 -0
  163. data/src/core/iomgr/tcp_client.h +53 -0
  164. data/src/core/iomgr/tcp_client_posix.c +304 -0
  165. data/src/core/iomgr/tcp_client_windows.c +221 -0
  166. data/src/core/iomgr/tcp_posix.c +485 -0
  167. data/src/core/iomgr/tcp_posix.h +65 -0
  168. data/src/core/iomgr/tcp_server.h +83 -0
  169. data/src/core/iomgr/tcp_server_posix.c +562 -0
  170. data/src/core/iomgr/tcp_server_windows.c +509 -0
  171. data/src/core/iomgr/tcp_windows.c +406 -0
  172. data/src/core/iomgr/tcp_windows.h +57 -0
  173. data/src/core/iomgr/time_averaged_stats.c +77 -0
  174. data/src/core/iomgr/time_averaged_stats.h +88 -0
  175. data/src/core/iomgr/timer.c +345 -0
  176. data/src/core/iomgr/timer.h +89 -0
  177. data/src/core/iomgr/timer_heap.c +148 -0
  178. data/src/core/iomgr/timer_heap.h +57 -0
  179. data/src/core/iomgr/timer_internal.h +61 -0
  180. data/src/core/iomgr/udp_server.c +439 -0
  181. data/src/core/iomgr/udp_server.h +83 -0
  182. data/src/core/iomgr/wakeup_fd_eventfd.c +85 -0
  183. data/src/core/iomgr/wakeup_fd_nospecial.c +51 -0
  184. data/src/core/iomgr/wakeup_fd_pipe.c +97 -0
  185. data/src/core/iomgr/wakeup_fd_pipe.h +41 -0
  186. data/src/core/iomgr/wakeup_fd_posix.c +72 -0
  187. data/src/core/iomgr/wakeup_fd_posix.h +101 -0
  188. data/src/core/iomgr/workqueue.h +85 -0
  189. data/src/core/iomgr/workqueue_posix.c +143 -0
  190. data/src/core/iomgr/workqueue_posix.h +51 -0
  191. data/src/core/iomgr/workqueue_windows.c +40 -0
  192. data/src/core/iomgr/workqueue_windows.h +37 -0
  193. data/src/core/json/json.c +64 -0
  194. data/src/core/json/json.h +88 -0
  195. data/src/core/json/json_common.h +49 -0
  196. data/src/core/json/json_reader.c +660 -0
  197. data/src/core/json/json_reader.h +160 -0
  198. data/src/core/json/json_string.c +379 -0
  199. data/src/core/json/json_writer.c +260 -0
  200. data/src/core/json/json_writer.h +97 -0
  201. data/src/core/profiling/basic_timers.c +274 -0
  202. data/src/core/profiling/stap_timers.c +65 -0
  203. data/src/core/profiling/timers.h +119 -0
  204. data/src/core/security/auth_filters.h +42 -0
  205. data/src/core/security/base64.c +233 -0
  206. data/src/core/security/base64.h +52 -0
  207. data/src/core/security/client_auth_filter.c +337 -0
  208. data/src/core/security/credentials.c +1273 -0
  209. data/src/core/security/credentials.h +376 -0
  210. data/src/core/security/credentials_metadata.c +101 -0
  211. data/src/core/security/credentials_posix.c +61 -0
  212. data/src/core/security/credentials_win32.c +61 -0
  213. data/src/core/security/google_default_credentials.c +260 -0
  214. data/src/core/security/handshake.c +327 -0
  215. data/src/core/security/handshake.h +50 -0
  216. data/src/core/security/json_token.c +405 -0
  217. data/src/core/security/json_token.h +118 -0
  218. data/src/core/security/jwt_verifier.c +842 -0
  219. data/src/core/security/jwt_verifier.h +136 -0
  220. data/src/core/security/secure_endpoint.c +383 -0
  221. data/src/core/security/secure_endpoint.h +49 -0
  222. data/src/core/security/security_connector.c +756 -0
  223. data/src/core/security/security_connector.h +246 -0
  224. data/src/core/security/security_context.c +342 -0
  225. data/src/core/security/security_context.h +114 -0
  226. data/src/core/security/server_auth_filter.c +264 -0
  227. data/src/core/security/server_secure_chttp2.c +268 -0
  228. data/src/core/statistics/census_interface.h +76 -0
  229. data/src/core/statistics/census_rpc_stats.h +101 -0
  230. data/src/core/support/alloc.c +90 -0
  231. data/src/core/support/avl.c +288 -0
  232. data/src/core/support/block_annotate.h +48 -0
  233. data/src/core/support/cmdline.c +347 -0
  234. data/src/core/support/cpu_iphone.c +49 -0
  235. data/src/core/support/cpu_linux.c +78 -0
  236. data/src/core/support/cpu_posix.c +77 -0
  237. data/src/core/support/cpu_windows.c +47 -0
  238. data/src/core/support/env.h +60 -0
  239. data/src/core/support/env_linux.c +62 -0
  240. data/src/core/support/env_posix.c +57 -0
  241. data/src/core/support/env_win32.c +65 -0
  242. data/src/core/support/file.c +91 -0
  243. data/src/core/support/file.h +63 -0
  244. data/src/core/support/file_posix.c +85 -0
  245. data/src/core/support/file_win32.c +84 -0
  246. data/src/core/support/histogram.c +244 -0
  247. data/src/core/support/host_port.c +110 -0
  248. data/src/core/support/log.c +66 -0
  249. data/src/core/support/log_android.c +87 -0
  250. data/src/core/support/log_linux.c +105 -0
  251. data/src/core/support/log_posix.c +102 -0
  252. data/src/core/support/log_win32.c +125 -0
  253. data/src/core/support/murmur_hash.c +96 -0
  254. data/src/core/support/murmur_hash.h +44 -0
  255. data/src/core/support/slice.c +343 -0
  256. data/src/core/support/slice_buffer.c +282 -0
  257. data/src/core/support/stack_lockfree.c +175 -0
  258. data/src/core/support/stack_lockfree.h +53 -0
  259. data/src/core/support/string.c +296 -0
  260. data/src/core/support/string.h +121 -0
  261. data/src/core/support/string_posix.c +86 -0
  262. data/src/core/support/string_win32.c +109 -0
  263. data/src/core/support/string_win32.h +47 -0
  264. data/src/core/support/subprocess_posix.c +112 -0
  265. data/src/core/support/sync.c +122 -0
  266. data/src/core/support/sync_posix.c +104 -0
  267. data/src/core/support/sync_win32.c +128 -0
  268. data/src/core/support/thd.c +64 -0
  269. data/src/core/support/thd_internal.h +39 -0
  270. data/src/core/support/thd_posix.c +94 -0
  271. data/src/core/support/thd_win32.c +117 -0
  272. data/src/core/support/time.c +304 -0
  273. data/src/core/support/time_posix.c +161 -0
  274. data/src/core/support/time_precise.c +89 -0
  275. data/src/core/support/time_precise.h +42 -0
  276. data/src/core/support/time_win32.c +101 -0
  277. data/src/core/support/tls_pthread.c +45 -0
  278. data/src/core/surface/api_trace.c +36 -0
  279. data/src/core/surface/api_trace.h +65 -0
  280. data/src/core/surface/byte_buffer.c +97 -0
  281. data/src/core/surface/byte_buffer_reader.c +123 -0
  282. data/src/core/surface/call.c +1424 -0
  283. data/src/core/surface/call.h +109 -0
  284. data/src/core/surface/call_details.c +50 -0
  285. data/src/core/surface/call_log_batch.c +118 -0
  286. data/src/core/surface/call_test_only.h +64 -0
  287. data/src/core/surface/channel.c +327 -0
  288. data/src/core/surface/channel.h +74 -0
  289. data/src/core/surface/channel_connectivity.c +220 -0
  290. data/src/core/surface/channel_create.c +235 -0
  291. data/src/core/surface/channel_ping.c +79 -0
  292. data/src/core/surface/completion_queue.c +481 -0
  293. data/src/core/surface/completion_queue.h +91 -0
  294. data/src/core/surface/event_string.c +81 -0
  295. data/src/core/surface/event_string.h +42 -0
  296. data/src/core/surface/init.c +168 -0
  297. data/src/core/surface/init.h +40 -0
  298. data/src/core/surface/init_secure.c +42 -0
  299. data/src/core/surface/lame_client.c +149 -0
  300. data/src/core/surface/metadata_array.c +49 -0
  301. data/src/core/surface/secure_channel_create.c +336 -0
  302. data/src/core/surface/server.c +1343 -0
  303. data/src/core/surface/server.h +67 -0
  304. data/src/core/surface/server_chttp2.c +149 -0
  305. data/src/core/surface/server_create.c +51 -0
  306. data/src/core/surface/surface_trace.h +48 -0
  307. data/src/core/surface/validate_metadata.c +73 -0
  308. data/src/core/surface/version.c +39 -0
  309. data/src/core/transport/byte_stream.c +76 -0
  310. data/src/core/transport/byte_stream.h +88 -0
  311. data/src/core/transport/chttp2/alpn.c +56 -0
  312. data/src/core/transport/chttp2/alpn.h +49 -0
  313. data/src/core/transport/chttp2/bin_encoder.c +285 -0
  314. data/src/core/transport/chttp2/bin_encoder.h +54 -0
  315. data/src/core/transport/chttp2/frame.h +69 -0
  316. data/src/core/transport/chttp2/frame_data.c +245 -0
  317. data/src/core/transport/chttp2/frame_data.h +101 -0
  318. data/src/core/transport/chttp2/frame_goaway.c +193 -0
  319. data/src/core/transport/chttp2/frame_goaway.h +77 -0
  320. data/src/core/transport/chttp2/frame_ping.c +97 -0
  321. data/src/core/transport/chttp2/frame_ping.h +56 -0
  322. data/src/core/transport/chttp2/frame_rst_stream.c +100 -0
  323. data/src/core/transport/chttp2/frame_rst_stream.h +55 -0
  324. data/src/core/transport/chttp2/frame_settings.c +259 -0
  325. data/src/core/transport/chttp2/frame_settings.h +103 -0
  326. data/src/core/transport/chttp2/frame_window_update.c +114 -0
  327. data/src/core/transport/chttp2/frame_window_update.h +58 -0
  328. data/src/core/transport/chttp2/hpack_encoder.c +572 -0
  329. data/src/core/transport/chttp2/hpack_encoder.h +95 -0
  330. data/src/core/transport/chttp2/hpack_parser.c +1449 -0
  331. data/src/core/transport/chttp2/hpack_parser.h +116 -0
  332. data/src/core/transport/chttp2/hpack_table.c +361 -0
  333. data/src/core/transport/chttp2/hpack_table.h +108 -0
  334. data/src/core/transport/chttp2/http2_errors.h +56 -0
  335. data/src/core/transport/chttp2/huffsyms.c +297 -0
  336. data/src/core/transport/chttp2/huffsyms.h +48 -0
  337. data/src/core/transport/chttp2/incoming_metadata.c +96 -0
  338. data/src/core/transport/chttp2/incoming_metadata.h +60 -0
  339. data/src/core/transport/chttp2/internal.h +757 -0
  340. data/src/core/transport/chttp2/parsing.c +866 -0
  341. data/src/core/transport/chttp2/status_conversion.c +109 -0
  342. data/src/core/transport/chttp2/status_conversion.h +50 -0
  343. data/src/core/transport/chttp2/stream_lists.c +401 -0
  344. data/src/core/transport/chttp2/stream_map.c +198 -0
  345. data/src/core/transport/chttp2/stream_map.h +85 -0
  346. data/src/core/transport/chttp2/timeout_encoding.c +185 -0
  347. data/src/core/transport/chttp2/timeout_encoding.h +47 -0
  348. data/src/core/transport/chttp2/varint.c +66 -0
  349. data/src/core/transport/chttp2/varint.h +76 -0
  350. data/src/core/transport/chttp2/writing.c +356 -0
  351. data/src/core/transport/chttp2_transport.c +1692 -0
  352. data/src/core/transport/chttp2_transport.h +51 -0
  353. data/src/core/transport/connectivity_state.c +164 -0
  354. data/src/core/transport/connectivity_state.h +85 -0
  355. data/src/core/transport/metadata.c +690 -0
  356. data/src/core/transport/metadata.h +156 -0
  357. data/src/core/transport/metadata_batch.c +194 -0
  358. data/src/core/transport/metadata_batch.h +125 -0
  359. data/src/core/transport/static_metadata.c +90 -0
  360. data/src/core/transport/static_metadata.h +408 -0
  361. data/src/core/transport/transport.c +183 -0
  362. data/src/core/transport/transport.h +222 -0
  363. data/src/core/transport/transport_impl.h +78 -0
  364. data/src/core/transport/transport_op_string.c +140 -0
  365. data/src/core/tsi/fake_transport_security.c +525 -0
  366. data/src/core/tsi/fake_transport_security.h +61 -0
  367. data/src/core/tsi/ssl_transport_security.c +1467 -0
  368. data/src/core/tsi/ssl_transport_security.h +173 -0
  369. data/src/core/tsi/transport_security.c +284 -0
  370. data/src/core/tsi/transport_security.h +111 -0
  371. data/src/core/tsi/transport_security_interface.h +344 -0
  372. data/{bin → src/ruby/bin}/apis/google/protobuf/empty.rb +0 -0
  373. data/{bin → src/ruby/bin}/apis/pubsub_demo.rb +7 -15
  374. data/{bin → src/ruby/bin}/apis/tech/pubsub/proto/pubsub.rb +0 -0
  375. data/{bin → src/ruby/bin}/apis/tech/pubsub/proto/pubsub_services.rb +0 -0
  376. data/{bin → src/ruby/bin}/grpc_ruby_interop_client +0 -0
  377. data/{bin → src/ruby/bin}/grpc_ruby_interop_server +0 -0
  378. data/{bin → src/ruby/bin}/interop/interop_client.rb +0 -0
  379. data/{bin → src/ruby/bin}/interop/interop_server.rb +0 -0
  380. data/src/ruby/bin/math.rb +32 -0
  381. data/{bin → src/ruby/bin}/math_client.rb +1 -1
  382. data/{bin → src/ruby/bin}/math_server.rb +1 -1
  383. data/src/ruby/bin/math_services.rb +27 -0
  384. data/{bin → src/ruby/bin}/noproto_client.rb +1 -1
  385. data/{bin → src/ruby/bin}/noproto_server.rb +1 -1
  386. data/{ext → src/ruby/ext}/grpc/extconf.rb +24 -40
  387. data/{ext → src/ruby/ext}/grpc/rb_byte_buffer.c +0 -0
  388. data/{ext → src/ruby/ext}/grpc/rb_byte_buffer.h +0 -0
  389. data/{ext → src/ruby/ext}/grpc/rb_call.c +80 -18
  390. data/{ext → src/ruby/ext}/grpc/rb_call.h +6 -0
  391. data/src/ruby/ext/grpc/rb_call_credentials.c +315 -0
  392. data/src/ruby/ext/grpc/rb_call_credentials.h +46 -0
  393. data/{ext → src/ruby/ext}/grpc/rb_channel.c +19 -7
  394. data/{ext → src/ruby/ext}/grpc/rb_channel.h +0 -0
  395. data/{ext → src/ruby/ext}/grpc/rb_channel_args.c +2 -0
  396. data/{ext → src/ruby/ext}/grpc/rb_channel_args.h +0 -0
  397. data/src/ruby/ext/grpc/rb_channel_credentials.c +266 -0
  398. data/{ext/grpc/rb_credentials.h → src/ruby/ext/grpc/rb_channel_credentials.h} +3 -3
  399. data/{ext → src/ruby/ext}/grpc/rb_completion_queue.c +3 -1
  400. data/{ext → src/ruby/ext}/grpc/rb_completion_queue.h +0 -0
  401. data/src/ruby/ext/grpc/rb_event_thread.c +153 -0
  402. data/src/ruby/ext/grpc/rb_event_thread.h +37 -0
  403. data/{ext → src/ruby/ext}/grpc/rb_grpc.c +25 -5
  404. data/{ext → src/ruby/ext}/grpc/rb_grpc.h +0 -0
  405. data/{ext → src/ruby/ext}/grpc/rb_server.c +4 -1
  406. data/{ext → src/ruby/ext}/grpc/rb_server.h +0 -0
  407. data/{ext → src/ruby/ext}/grpc/rb_server_credentials.c +2 -0
  408. data/{ext → src/ruby/ext}/grpc/rb_server_credentials.h +0 -0
  409. data/{lib → src/ruby/lib}/grpc.rb +6 -1
  410. data/{lib → src/ruby/lib}/grpc/core/time_consts.rb +0 -0
  411. data/{lib → src/ruby/lib}/grpc/errors.rb +0 -0
  412. data/{lib → src/ruby/lib}/grpc/generic/active_call.rb +4 -6
  413. data/{lib → src/ruby/lib}/grpc/generic/bidi_call.rb +16 -4
  414. data/{lib → src/ruby/lib}/grpc/generic/client_stub.rb +42 -52
  415. data/{lib → src/ruby/lib}/grpc/generic/rpc_desc.rb +0 -0
  416. data/{lib → src/ruby/lib}/grpc/generic/rpc_server.rb +15 -8
  417. data/{lib → src/ruby/lib}/grpc/generic/service.rb +4 -2
  418. data/src/ruby/lib/grpc/grpc.so +0 -0
  419. data/{lib → src/ruby/lib}/grpc/logconfig.rb +0 -0
  420. data/{lib → src/ruby/lib}/grpc/notifier.rb +0 -0
  421. data/{lib → src/ruby/lib}/grpc/version.rb +2 -2
  422. data/src/ruby/pb/README.md +42 -0
  423. data/src/ruby/pb/generate_proto_ruby.sh +51 -0
  424. data/src/ruby/pb/grpc/health/checker.rb +75 -0
  425. data/src/ruby/pb/grpc/health/v1alpha/health.rb +29 -0
  426. data/src/ruby/pb/grpc/health/v1alpha/health_services.rb +28 -0
  427. data/src/ruby/pb/test/client.rb +469 -0
  428. data/src/ruby/pb/test/proto/empty.rb +15 -0
  429. data/src/ruby/pb/test/proto/messages.rb +80 -0
  430. data/src/ruby/pb/test/proto/test.rb +14 -0
  431. data/src/ruby/pb/test/proto/test_services.rb +64 -0
  432. data/src/ruby/pb/test/server.rb +253 -0
  433. data/{bin/math_services.rb → src/ruby/spec/call_credentials_spec.rb} +19 -18
  434. data/{spec → src/ruby/spec}/call_spec.rb +10 -1
  435. data/{spec/credentials_spec.rb → src/ruby/spec/channel_credentials_spec.rb} +38 -12
  436. data/{spec → src/ruby/spec}/channel_spec.rb +14 -9
  437. data/{spec → src/ruby/spec}/client_server_spec.rb +31 -2
  438. data/{spec → src/ruby/spec}/completion_queue_spec.rb +0 -0
  439. data/{spec → src/ruby/spec}/generic/active_call_spec.rb +2 -1
  440. data/{spec → src/ruby/spec}/generic/client_stub_spec.rb +27 -67
  441. data/{spec → src/ruby/spec}/generic/rpc_desc_spec.rb +0 -0
  442. data/{spec → src/ruby/spec}/generic/rpc_server_pool_spec.rb +0 -0
  443. data/{spec → src/ruby/spec}/generic/rpc_server_spec.rb +12 -46
  444. data/{spec → src/ruby/spec}/generic/service_spec.rb +6 -3
  445. data/{spec → src/ruby/spec}/pb/health/checker_spec.rb +8 -8
  446. data/{spec → src/ruby/spec}/server_credentials_spec.rb +0 -0
  447. data/{spec → src/ruby/spec}/server_spec.rb +0 -0
  448. data/{spec → src/ruby/spec}/spec_helper.rb +0 -0
  449. data/{spec → src/ruby/spec}/testdata/README +0 -0
  450. data/{spec → src/ruby/spec}/testdata/ca.pem +0 -0
  451. data/{spec → src/ruby/spec}/testdata/server1.key +0 -0
  452. data/src/ruby/spec/testdata/server1.pem +16 -0
  453. data/{spec → src/ruby/spec}/time_consts_spec.rb +0 -0
  454. metadata +496 -97
  455. data/bin/math.proto +0 -80
  456. data/bin/math.rb +0 -61
  457. data/ext/grpc/rb_credentials.c +0 -294
  458. data/lib/grpc/grpc.so +0 -0
  459. data/spec/testdata/server1.pem +0 -16
@@ -0,0 +1,183 @@
1
+ /*
2
+ *
3
+ * Copyright 2015, Google Inc.
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are
8
+ * met:
9
+ *
10
+ * * Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * * Redistributions in binary form must reproduce the above
13
+ * copyright notice, this list of conditions and the following disclaimer
14
+ * in the documentation and/or other materials provided with the
15
+ * distribution.
16
+ * * Neither the name of Google Inc. nor the names of its
17
+ * contributors may be used to endorse or promote products derived from
18
+ * this software without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ *
32
+ */
33
+
34
+ #include "src/core/transport/transport.h"
35
+ #include <grpc/support/alloc.h>
36
+ #include <grpc/support/atm.h>
37
+ #include <grpc/support/log.h>
38
+ #include "src/core/transport/transport_impl.h"
39
+
40
+ #ifdef GRPC_STREAM_REFCOUNT_DEBUG
41
+ void grpc_stream_ref(grpc_stream_refcount *refcount, const char *reason) {
42
+ gpr_atm val = gpr_atm_no_barrier_load(&refcount->refs.count);
43
+ gpr_log(GPR_DEBUG, "%s %p:%p REF %d->%d %s", refcount->object_type,
44
+ refcount, refcount->destroy.cb_arg, val, val + 1, reason);
45
+ #else
46
+ void grpc_stream_ref(grpc_stream_refcount *refcount) {
47
+ #endif
48
+ gpr_ref(&refcount->refs);
49
+ }
50
+
51
+ #ifdef GRPC_STREAM_REFCOUNT_DEBUG
52
+ void grpc_stream_unref(grpc_exec_ctx *exec_ctx, grpc_stream_refcount *refcount,
53
+ const char *reason) {
54
+ gpr_atm val = gpr_atm_no_barrier_load(&refcount->refs.count);
55
+ gpr_log(GPR_DEBUG, "%s %p:%p UNREF %d->%d %s", refcount->object_type,
56
+ refcount, refcount->destroy.cb_arg, val, val - 1, reason);
57
+ #else
58
+ void grpc_stream_unref(grpc_exec_ctx *exec_ctx,
59
+ grpc_stream_refcount *refcount) {
60
+ #endif
61
+ if (gpr_unref(&refcount->refs)) {
62
+ grpc_exec_ctx_enqueue(exec_ctx, &refcount->destroy, 1);
63
+ }
64
+ }
65
+
66
+ #ifdef GRPC_STREAM_REFCOUNT_DEBUG
67
+ void grpc_stream_ref_init(grpc_stream_refcount *refcount, int initial_refs,
68
+ grpc_iomgr_cb_func cb, void *cb_arg,
69
+ const char *object_type) {
70
+ refcount->object_type = object_type;
71
+ #else
72
+ void grpc_stream_ref_init(grpc_stream_refcount *refcount, int initial_refs,
73
+ grpc_iomgr_cb_func cb, void *cb_arg) {
74
+ #endif
75
+ gpr_ref_init(&refcount->refs, initial_refs);
76
+ grpc_closure_init(&refcount->destroy, cb, cb_arg);
77
+ }
78
+
79
+ size_t grpc_transport_stream_size(grpc_transport *transport) {
80
+ return transport->vtable->sizeof_stream;
81
+ }
82
+
83
+ void grpc_transport_destroy(grpc_exec_ctx *exec_ctx,
84
+ grpc_transport *transport) {
85
+ transport->vtable->destroy(exec_ctx, transport);
86
+ }
87
+
88
+ int grpc_transport_init_stream(grpc_exec_ctx *exec_ctx,
89
+ grpc_transport *transport, grpc_stream *stream,
90
+ grpc_stream_refcount *refcount,
91
+ const void *server_data) {
92
+ return transport->vtable->init_stream(exec_ctx, transport, stream, refcount,
93
+ server_data);
94
+ }
95
+
96
+ void grpc_transport_perform_stream_op(grpc_exec_ctx *exec_ctx,
97
+ grpc_transport *transport,
98
+ grpc_stream *stream,
99
+ grpc_transport_stream_op *op) {
100
+ transport->vtable->perform_stream_op(exec_ctx, transport, stream, op);
101
+ }
102
+
103
+ void grpc_transport_perform_op(grpc_exec_ctx *exec_ctx,
104
+ grpc_transport *transport,
105
+ grpc_transport_op *op) {
106
+ transport->vtable->perform_op(exec_ctx, transport, op);
107
+ }
108
+
109
+ void grpc_transport_set_pollset(grpc_exec_ctx *exec_ctx,
110
+ grpc_transport *transport, grpc_stream *stream,
111
+ grpc_pollset *pollset) {
112
+ transport->vtable->set_pollset(exec_ctx, transport, stream, pollset);
113
+ }
114
+
115
+ void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
116
+ grpc_transport *transport,
117
+ grpc_stream *stream) {
118
+ transport->vtable->destroy_stream(exec_ctx, transport, stream);
119
+ }
120
+
121
+ char *grpc_transport_get_peer(grpc_exec_ctx *exec_ctx,
122
+ grpc_transport *transport) {
123
+ return transport->vtable->get_peer(exec_ctx, transport);
124
+ }
125
+
126
+ void grpc_transport_stream_op_finish_with_failure(
127
+ grpc_exec_ctx *exec_ctx, grpc_transport_stream_op *op) {
128
+ grpc_exec_ctx_enqueue(exec_ctx, op->recv_message_ready, 0);
129
+ grpc_exec_ctx_enqueue(exec_ctx, op->on_complete, 0);
130
+ }
131
+
132
+ void grpc_transport_stream_op_add_cancellation(grpc_transport_stream_op *op,
133
+ grpc_status_code status) {
134
+ GPR_ASSERT(status != GRPC_STATUS_OK);
135
+ if (op->cancel_with_status == GRPC_STATUS_OK) {
136
+ op->cancel_with_status = status;
137
+ }
138
+ if (op->close_with_status != GRPC_STATUS_OK) {
139
+ op->close_with_status = GRPC_STATUS_OK;
140
+ if (op->optional_close_message != NULL) {
141
+ gpr_slice_unref(*op->optional_close_message);
142
+ op->optional_close_message = NULL;
143
+ }
144
+ }
145
+ }
146
+
147
+ typedef struct {
148
+ gpr_slice message;
149
+ grpc_closure *then_call;
150
+ grpc_closure closure;
151
+ } close_message_data;
152
+
153
+ static void free_message(grpc_exec_ctx *exec_ctx, void *p, int iomgr_success) {
154
+ close_message_data *cmd = p;
155
+ gpr_slice_unref(cmd->message);
156
+ if (cmd->then_call != NULL) {
157
+ cmd->then_call->cb(exec_ctx, cmd->then_call->cb_arg, iomgr_success);
158
+ }
159
+ gpr_free(cmd);
160
+ }
161
+
162
+ void grpc_transport_stream_op_add_close(grpc_transport_stream_op *op,
163
+ grpc_status_code status,
164
+ gpr_slice *optional_message) {
165
+ close_message_data *cmd;
166
+ GPR_ASSERT(status != GRPC_STATUS_OK);
167
+ if (op->cancel_with_status != GRPC_STATUS_OK ||
168
+ op->close_with_status != GRPC_STATUS_OK) {
169
+ if (optional_message) {
170
+ gpr_slice_unref(*optional_message);
171
+ }
172
+ return;
173
+ }
174
+ if (optional_message) {
175
+ cmd = gpr_malloc(sizeof(*cmd));
176
+ cmd->message = *optional_message;
177
+ cmd->then_call = op->on_complete;
178
+ grpc_closure_init(&cmd->closure, free_message, cmd);
179
+ op->on_complete = &cmd->closure;
180
+ op->optional_close_message = &cmd->message;
181
+ }
182
+ op->close_with_status = status;
183
+ }
@@ -0,0 +1,222 @@
1
+ /*
2
+ *
3
+ * Copyright 2015, Google Inc.
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are
8
+ * met:
9
+ *
10
+ * * Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * * Redistributions in binary form must reproduce the above
13
+ * copyright notice, this list of conditions and the following disclaimer
14
+ * in the documentation and/or other materials provided with the
15
+ * distribution.
16
+ * * Neither the name of Google Inc. nor the names of its
17
+ * contributors may be used to endorse or promote products derived from
18
+ * this software without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ *
32
+ */
33
+
34
+ #ifndef GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_H
35
+ #define GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_H
36
+
37
+ #include <stddef.h>
38
+
39
+ #include "src/core/iomgr/pollset.h"
40
+ #include "src/core/iomgr/pollset_set.h"
41
+ #include "src/core/transport/metadata_batch.h"
42
+ #include "src/core/transport/byte_stream.h"
43
+ #include "src/core/channel/context.h"
44
+
45
+ /* forward declarations */
46
+ typedef struct grpc_transport grpc_transport;
47
+
48
+ /* grpc_stream doesn't actually exist. It's used as a typesafe
49
+ opaque pointer for whatever data the transport wants to track
50
+ for a stream. */
51
+ typedef struct grpc_stream grpc_stream;
52
+
53
+ /*#define GRPC_STREAM_REFCOUNT_DEBUG*/
54
+
55
+ typedef struct grpc_stream_refcount {
56
+ gpr_refcount refs;
57
+ grpc_closure destroy;
58
+ #ifdef GRPC_STREAM_REFCOUNT_DEBUG
59
+ const char *object_type;
60
+ #endif
61
+ } grpc_stream_refcount;
62
+
63
+ #ifdef GRPC_STREAM_REFCOUNT_DEBUG
64
+ void grpc_stream_ref_init(grpc_stream_refcount *refcount, int initial_refs,
65
+ grpc_iomgr_cb_func cb, void *cb_arg,
66
+ const char *object_type);
67
+ void grpc_stream_ref(grpc_stream_refcount *refcount, const char *reason);
68
+ void grpc_stream_unref(grpc_exec_ctx *exec_ctx, grpc_stream_refcount *refcount,
69
+ const char *reason);
70
+ #define GRPC_STREAM_REF_INIT(rc, ir, cb, cb_arg, objtype) \
71
+ grpc_stream_ref_init(rc, ir, cb, cb_arg, objtype)
72
+ #else
73
+ void grpc_stream_ref_init(grpc_stream_refcount *refcount, int initial_refs,
74
+ grpc_iomgr_cb_func cb, void *cb_arg);
75
+ void grpc_stream_ref(grpc_stream_refcount *refcount);
76
+ void grpc_stream_unref(grpc_exec_ctx *exec_ctx, grpc_stream_refcount *refcount);
77
+ #define GRPC_STREAM_REF_INIT(rc, ir, cb, cb_arg, objtype) \
78
+ grpc_stream_ref_init(rc, ir, cb, cb_arg)
79
+ #endif
80
+
81
+ /* Transport stream op: a set of operations to perform on a transport
82
+ against a single stream */
83
+ typedef struct grpc_transport_stream_op {
84
+ grpc_metadata_batch *send_initial_metadata;
85
+ grpc_metadata_batch *send_trailing_metadata;
86
+
87
+ grpc_byte_stream *send_message;
88
+
89
+ grpc_metadata_batch *recv_initial_metadata;
90
+ grpc_byte_stream **recv_message;
91
+ grpc_closure *recv_message_ready;
92
+ grpc_metadata_batch *recv_trailing_metadata;
93
+
94
+ grpc_closure *on_complete;
95
+
96
+ /** If != GRPC_STATUS_OK, cancel this stream */
97
+ grpc_status_code cancel_with_status;
98
+
99
+ /** If != GRPC_STATUS_OK, send grpc-status, grpc-message, and close this
100
+ stream for both reading and writing */
101
+ grpc_status_code close_with_status;
102
+ gpr_slice *optional_close_message;
103
+
104
+ /* Indexes correspond to grpc_context_index enum values */
105
+ grpc_call_context_element *context;
106
+ } grpc_transport_stream_op;
107
+
108
+ /** Transport op: a set of operations to perform on a transport as a whole */
109
+ typedef struct grpc_transport_op {
110
+ /** called when processing of this op is done */
111
+ grpc_closure *on_consumed;
112
+ /** connectivity monitoring - set connectivity_state to NULL to unsubscribe */
113
+ grpc_closure *on_connectivity_state_change;
114
+ grpc_connectivity_state *connectivity_state;
115
+ /** should the transport be disconnected */
116
+ int disconnect;
117
+ /** should we send a goaway?
118
+ after a goaway is sent, once there are no more active calls on
119
+ the transport, the transport should disconnect */
120
+ int send_goaway;
121
+ /** what should the goaway contain? */
122
+ grpc_status_code goaway_status;
123
+ gpr_slice *goaway_message;
124
+ /** set the callback for accepting new streams;
125
+ this is a permanent callback, unlike the other one-shot closures */
126
+ void (*set_accept_stream)(grpc_exec_ctx *exec_ctx, void *user_data,
127
+ grpc_transport *transport, const void *server_data);
128
+ void *set_accept_stream_user_data;
129
+ /** add this transport to a pollset */
130
+ grpc_pollset *bind_pollset;
131
+ /** add this transport to a pollset_set */
132
+ grpc_pollset_set *bind_pollset_set;
133
+ /** send a ping, call this back if not NULL */
134
+ grpc_closure *send_ping;
135
+ } grpc_transport_op;
136
+
137
+ /* Returns the amount of memory required to store a grpc_stream for this
138
+ transport */
139
+ size_t grpc_transport_stream_size(grpc_transport *transport);
140
+
141
+ /* Initialize transport data for a stream.
142
+
143
+ Returns 0 on success, any other (transport-defined) value for failure.
144
+
145
+ Arguments:
146
+ transport - the transport on which to create this stream
147
+ stream - a pointer to uninitialized memory to initialize
148
+ server_data - either NULL for a client initiated stream, or a pointer
149
+ supplied from the accept_stream callback function */
150
+ int grpc_transport_init_stream(grpc_exec_ctx *exec_ctx,
151
+ grpc_transport *transport, grpc_stream *stream,
152
+ grpc_stream_refcount *refcount,
153
+ const void *server_data);
154
+
155
+ void grpc_transport_set_pollset(grpc_exec_ctx *exec_ctx,
156
+ grpc_transport *transport, grpc_stream *stream,
157
+ grpc_pollset *pollset);
158
+
159
+ /* Destroy transport data for a stream.
160
+
161
+ Requires: a recv_batch with final_state == GRPC_STREAM_CLOSED has been
162
+ received by the up-layer. Must not be called in the same call stack as
163
+ recv_frame.
164
+
165
+ Arguments:
166
+ transport - the transport on which to create this stream
167
+ stream - the grpc_stream to destroy (memory is still owned by the
168
+ caller, but any child memory must be cleaned up) */
169
+ void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
170
+ grpc_transport *transport,
171
+ grpc_stream *stream);
172
+
173
+ void grpc_transport_stream_op_finish_with_failure(grpc_exec_ctx *exec_ctx,
174
+ grpc_transport_stream_op *op);
175
+
176
+ void grpc_transport_stream_op_add_cancellation(grpc_transport_stream_op *op,
177
+ grpc_status_code status);
178
+
179
+ void grpc_transport_stream_op_add_close(grpc_transport_stream_op *op,
180
+ grpc_status_code status,
181
+ gpr_slice *optional_message);
182
+
183
+ char *grpc_transport_stream_op_string(grpc_transport_stream_op *op);
184
+
185
+ /* Send a batch of operations on a transport
186
+
187
+ Takes ownership of any objects contained in ops.
188
+
189
+ Arguments:
190
+ transport - the transport on which to initiate the stream
191
+ stream - the stream on which to send the operations. This must be
192
+ non-NULL and previously initialized by the same transport.
193
+ op - a grpc_transport_stream_op specifying the op to perform */
194
+ void grpc_transport_perform_stream_op(grpc_exec_ctx *exec_ctx,
195
+ grpc_transport *transport,
196
+ grpc_stream *stream,
197
+ grpc_transport_stream_op *op);
198
+
199
+ void grpc_transport_perform_op(grpc_exec_ctx *exec_ctx,
200
+ grpc_transport *transport,
201
+ grpc_transport_op *op);
202
+
203
+ /* Send a ping on a transport
204
+
205
+ Calls cb with user data when a response is received. */
206
+ void grpc_transport_ping(grpc_transport *transport, grpc_closure *cb);
207
+
208
+ /* Advise peer of pending connection termination. */
209
+ void grpc_transport_goaway(grpc_transport *transport, grpc_status_code status,
210
+ gpr_slice debug_data);
211
+
212
+ /* Close a transport. Aborts all open streams. */
213
+ void grpc_transport_close(grpc_transport *transport);
214
+
215
+ /* Destroy the transport */
216
+ void grpc_transport_destroy(grpc_exec_ctx *exec_ctx, grpc_transport *transport);
217
+
218
+ /* Get the transports peer */
219
+ char *grpc_transport_get_peer(grpc_exec_ctx *exec_ctx,
220
+ grpc_transport *transport);
221
+
222
+ #endif /* GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_H */
@@ -0,0 +1,78 @@
1
+ /*
2
+ *
3
+ * Copyright 2015, Google Inc.
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are
8
+ * met:
9
+ *
10
+ * * Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * * Redistributions in binary form must reproduce the above
13
+ * copyright notice, this list of conditions and the following disclaimer
14
+ * in the documentation and/or other materials provided with the
15
+ * distribution.
16
+ * * Neither the name of Google Inc. nor the names of its
17
+ * contributors may be used to endorse or promote products derived from
18
+ * this software without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ *
32
+ */
33
+
34
+ #ifndef GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_IMPL_H
35
+ #define GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_IMPL_H
36
+
37
+ #include "src/core/transport/transport.h"
38
+
39
+ typedef struct grpc_transport_vtable {
40
+ /* Memory required for a single stream element - this is allocated by upper
41
+ layers and initialized by the transport */
42
+ size_t sizeof_stream; /* = sizeof(transport stream) */
43
+
44
+ /* implementation of grpc_transport_init_stream */
45
+ int (*init_stream)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
46
+ grpc_stream *stream, grpc_stream_refcount *refcount,
47
+ const void *server_data);
48
+
49
+ /* implementation of grpc_transport_set_pollset */
50
+ void (*set_pollset)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
51
+ grpc_stream *stream, grpc_pollset *pollset);
52
+
53
+ /* implementation of grpc_transport_perform_stream_op */
54
+ void (*perform_stream_op)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
55
+ grpc_stream *stream, grpc_transport_stream_op *op);
56
+
57
+ /* implementation of grpc_transport_perform_op */
58
+ void (*perform_op)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
59
+ grpc_transport_op *op);
60
+
61
+ /* implementation of grpc_transport_destroy_stream */
62
+ void (*destroy_stream)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
63
+ grpc_stream *stream);
64
+
65
+ /* implementation of grpc_transport_destroy */
66
+ void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_transport *self);
67
+
68
+ /* implementation of grpc_transport_get_peer */
69
+ char *(*get_peer)(grpc_exec_ctx *exec_ctx, grpc_transport *self);
70
+ } grpc_transport_vtable;
71
+
72
+ /* an instance of a grpc transport */
73
+ struct grpc_transport {
74
+ /* pointer to a vtable defining operations on this transport */
75
+ const grpc_transport_vtable *vtable;
76
+ };
77
+
78
+ #endif /* GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_IMPL_H */