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,111 @@
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_TSI_TRANSPORT_SECURITY_H
35
+ #define GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_H
36
+
37
+ #include "src/core/tsi/transport_security_interface.h"
38
+
39
+ #ifdef __cplusplus
40
+ extern "C" {
41
+ #endif
42
+
43
+ extern int tsi_tracing_enabled;
44
+
45
+ /* Base for tsi_frame_protector implementations.
46
+ See transport_security_interface.h for documentation. */
47
+ typedef struct {
48
+ tsi_result (*protect)(tsi_frame_protector *self,
49
+ const unsigned char *unprotected_bytes,
50
+ size_t *unprotected_bytes_size,
51
+ unsigned char *protected_output_frames,
52
+ size_t *protected_output_frames_size);
53
+ tsi_result (*protect_flush)(tsi_frame_protector *self,
54
+ unsigned char *protected_output_frames,
55
+ size_t *protected_output_frames_size,
56
+ size_t *still_pending_size);
57
+ tsi_result (*unprotect)(tsi_frame_protector *self,
58
+ const unsigned char *protected_frames_bytes,
59
+ size_t *protected_frames_bytes_size,
60
+ unsigned char *unprotected_bytes,
61
+ size_t *unprotected_bytes_size);
62
+ void (*destroy)(tsi_frame_protector *self);
63
+ } tsi_frame_protector_vtable;
64
+
65
+ struct tsi_frame_protector {
66
+ const tsi_frame_protector_vtable *vtable;
67
+ };
68
+
69
+ /* Base for tsi_handshaker implementations.
70
+ See transport_security_interface.h for documentation. */
71
+ typedef struct {
72
+ tsi_result (*get_bytes_to_send_to_peer)(tsi_handshaker *self,
73
+ unsigned char *bytes,
74
+ size_t *bytes_size);
75
+ tsi_result (*process_bytes_from_peer)(tsi_handshaker *self,
76
+ const unsigned char *bytes,
77
+ size_t *bytes_size);
78
+ tsi_result (*get_result)(tsi_handshaker *self);
79
+ tsi_result (*extract_peer)(tsi_handshaker *self, tsi_peer *peer);
80
+ tsi_result (*create_frame_protector)(tsi_handshaker *self,
81
+ size_t *max_protected_frame_size,
82
+ tsi_frame_protector **protector);
83
+ void (*destroy)(tsi_handshaker *self);
84
+ } tsi_handshaker_vtable;
85
+
86
+ struct tsi_handshaker {
87
+ const tsi_handshaker_vtable *vtable;
88
+ int frame_protector_created;
89
+ };
90
+
91
+ /* Peer and property construction/destruction functions. */
92
+ tsi_result tsi_construct_peer(size_t property_count, tsi_peer *peer);
93
+ tsi_peer_property tsi_init_peer_property(void);
94
+ void tsi_peer_property_destruct(tsi_peer_property *property);
95
+ tsi_result tsi_construct_string_peer_property(const char *name,
96
+ const char *value,
97
+ size_t value_length,
98
+ tsi_peer_property *property);
99
+ tsi_result tsi_construct_allocated_string_peer_property(
100
+ const char *name, size_t value_length, tsi_peer_property *property);
101
+ tsi_result tsi_construct_string_peer_property_from_cstring(
102
+ const char *name, const char *value, tsi_peer_property *property);
103
+
104
+ /* Utils. */
105
+ char *tsi_strdup(const char *src); /* Sadly, no strdup in C89. */
106
+
107
+ #ifdef __cplusplus
108
+ }
109
+ #endif
110
+
111
+ #endif /* GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_H */
@@ -0,0 +1,344 @@
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_TSI_TRANSPORT_SECURITY_INTERFACE_H
35
+ #define GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H
36
+
37
+ #include <stdint.h>
38
+ #include <stdlib.h>
39
+
40
+ #ifdef __cplusplus
41
+ extern "C" {
42
+ #endif
43
+
44
+ /* --- tsi result --- */
45
+
46
+ typedef enum {
47
+ TSI_OK = 0,
48
+ TSI_UNKNOWN_ERROR = 1,
49
+ TSI_INVALID_ARGUMENT = 2,
50
+ TSI_PERMISSION_DENIED = 3,
51
+ TSI_INCOMPLETE_DATA = 4,
52
+ TSI_FAILED_PRECONDITION = 5,
53
+ TSI_UNIMPLEMENTED = 6,
54
+ TSI_INTERNAL_ERROR = 7,
55
+ TSI_DATA_CORRUPTED = 8,
56
+ TSI_NOT_FOUND = 9,
57
+ TSI_PROTOCOL_FAILURE = 10,
58
+ TSI_HANDSHAKE_IN_PROGRESS = 11,
59
+ TSI_OUT_OF_RESOURCES = 12
60
+ } tsi_result;
61
+
62
+ const char *tsi_result_to_string(tsi_result result);
63
+
64
+ /* --- tsi tracing --- */
65
+
66
+ /* Set this early to avoid races */
67
+ extern int tsi_tracing_enabled;
68
+
69
+ /* --- tsi_frame_protector object ---
70
+
71
+ This object protects and unprotects buffers once the handshake is done.
72
+ Implementations of this object must be thread compatible. */
73
+
74
+ typedef struct tsi_frame_protector tsi_frame_protector;
75
+
76
+ /* Outputs protected frames.
77
+ - unprotected_bytes is an input only parameter and points to the data
78
+ to be protected.
79
+ - unprotected_bytes_size is an input/output parameter used by the caller to
80
+ specify how many bytes are available in unprotected_bytes. The output
81
+ value is the number of bytes consumed during the call.
82
+ - protected_output_frames points to a buffer allocated by the caller that
83
+ will be written.
84
+ - protected_output_frames_size is an input/output parameter used by the
85
+ caller to specify how many bytes are available in protected_output_frames.
86
+ As an output, this value indicates the number of bytes written.
87
+ - This method returns TSI_OK in case of success or a specific error code in
88
+ case of failure. Note that even if all the input unprotected bytes are
89
+ consumed, they may not have been processed into the returned protected
90
+ output frames. The caller should call the protect_flush method
91
+ to make sure that there are no more protected bytes buffered in the
92
+ protector.
93
+
94
+ A typical way to call this method would be:
95
+
96
+ ------------------------------------------------------------------------
97
+ unsigned char protected_buffer[4096];
98
+ size_t protected_buffer_size = sizeof(protected_buffer);
99
+ tsi_result result = TSI_OK;
100
+ while (message_size > 0) {
101
+ size_t protected_buffer_size_to_send = protected_buffer_size;
102
+ size_t processed_message_size = message_size;
103
+ result = tsi_frame_protector_protect(protector,
104
+ message_bytes,
105
+ &processed_message_size,
106
+ protected_buffer,
107
+ &protected_buffer_size_to_send);
108
+ if (result != TSI_OK) break;
109
+ send_bytes_to_peer(protected_buffer, protected_buffer_size_to_send);
110
+ message_bytes += processed_message_size;
111
+ message_size -= processed_message_size;
112
+
113
+ // Don't forget to flush.
114
+ if (message_size == 0) {
115
+ size_t still_pending_size;
116
+ do {
117
+ protected_buffer_size_to_send = protected_buffer_size;
118
+ result = tsi_frame_protector_protect_flush(
119
+ protector, protected_buffer,
120
+ &protected_buffer_size_to_send, &still_pending_size);
121
+ if (result != TSI_OK) break;
122
+ send_bytes_to_peer(protected_buffer, protected_buffer_size_to_send);
123
+ } while (still_pending_size > 0);
124
+ }
125
+ }
126
+
127
+ if (result != TSI_OK) HandleError(result);
128
+ ------------------------------------------------------------------------ */
129
+ tsi_result tsi_frame_protector_protect(tsi_frame_protector *self,
130
+ const unsigned char *unprotected_bytes,
131
+ size_t *unprotected_bytes_size,
132
+ unsigned char *protected_output_frames,
133
+ size_t *protected_output_frames_size);
134
+
135
+ /* Indicates that we need to flush the bytes buffered in the protector and get
136
+ the resulting frame.
137
+ - protected_output_frames points to a buffer allocated by the caller that
138
+ will be written.
139
+ - protected_output_frames_size is an input/output parameter used by the
140
+ caller to specify how many bytes are available in protected_output_frames.
141
+ - still_pending_bytes is an output parameter indicating the number of bytes
142
+ that still need to be flushed from the protector.*/
143
+ tsi_result tsi_frame_protector_protect_flush(
144
+ tsi_frame_protector *self, unsigned char *protected_output_frames,
145
+ size_t *protected_output_frames_size, size_t *still_pending_size);
146
+
147
+ /* Outputs unprotected bytes.
148
+ - protected_frames_bytes is an input only parameter and points to the
149
+ protected frames to be unprotected.
150
+ - protected_frames_bytes_size is an input/output only parameter used by the
151
+ caller to specify how many bytes are available in protected_bytes. The
152
+ output value is the number of bytes consumed during the call.
153
+ Implementations will buffer up to a frame of protected data.
154
+ - unprotected_bytes points to a buffer allocated by the caller that will be
155
+ written.
156
+ - unprotected_bytes_size is an input/output parameter used by the caller to
157
+ specify how many bytes are available in unprotected_bytes. This
158
+ value is expected to be at most max_protected_frame_size minus overhead
159
+ which means that max_protected_frame_size is a safe bet. The output value
160
+ is the number of bytes actually written.
161
+ If *unprotected_bytes_size is unchanged, there may be more data remaining
162
+ to unprotect, and the caller should call this function again.
163
+
164
+ - This method returns TSI_OK in case of success. Success includes cases where
165
+ there is not enough data to output a frame in which case
166
+ unprotected_bytes_size will be set to 0 and cases where the internal buffer
167
+ needs to be read before new protected data can be processed in which case
168
+ protected_frames_size will be set to 0. */
169
+ tsi_result tsi_frame_protector_unprotect(
170
+ tsi_frame_protector *self, const unsigned char *protected_frames_bytes,
171
+ size_t *protected_frames_bytes_size, unsigned char *unprotected_bytes,
172
+ size_t *unprotected_bytes_size);
173
+
174
+ /* Destroys the tsi_frame_protector object. */
175
+ void tsi_frame_protector_destroy(tsi_frame_protector *self);
176
+
177
+ /* --- tsi_peer objects ---
178
+
179
+ tsi_peer objects are a set of properties. The peer owns the properties. */
180
+
181
+ /* This property is of type TSI_PEER_PROPERTY_STRING. */
182
+ #define TSI_CERTIFICATE_TYPE_PEER_PROPERTY "certificate_type"
183
+
184
+ /* Property values may contain NULL characters just like C++ strings.
185
+ The length field gives the length of the string. */
186
+ typedef struct tsi_peer_property {
187
+ char *name;
188
+ struct {
189
+ char *data;
190
+ size_t length;
191
+ } value;
192
+ } tsi_peer_property;
193
+
194
+ typedef struct {
195
+ tsi_peer_property *properties;
196
+ size_t property_count;
197
+ } tsi_peer;
198
+
199
+ /* Destructs the tsi_peer object. */
200
+ void tsi_peer_destruct(tsi_peer *self);
201
+
202
+ /* --- tsi_handshaker objects ----
203
+
204
+ Implementations of this object must be thread compatible.
205
+
206
+ A typical usage of this object would be:
207
+
208
+ ------------------------------------------------------------------------
209
+ tsi_result result = TSI_OK;
210
+ unsigned char buf[4096];
211
+ size_t buf_offset;
212
+ size_t buf_size;
213
+ while (1) {
214
+ // See if we need to send some bytes to the peer.
215
+ do {
216
+ size_t buf_size_to_send = sizeof(buf);
217
+ result = tsi_handshaker_get_bytes_to_send_to_peer(handshaker, buf,
218
+ &buf_size_to_send);
219
+ if (buf_size_to_send > 0) send_bytes_to_peer(buf, buf_size_to_send);
220
+ } while (result == TSI_INCOMPLETE_DATA);
221
+ if (result != TSI_OK) return result;
222
+ if (!tsi_handshaker_is_in_progress(handshaker)) break;
223
+
224
+ do {
225
+ // Read bytes from the peer.
226
+ buf_size = sizeof(buf);
227
+ buf_offset = 0;
228
+ read_bytes_from_peer(buf, &buf_size);
229
+ if (buf_size == 0) break;
230
+
231
+ // Process the bytes from the peer. We have to be careful as these bytes
232
+ // may contain non-handshake data (protected data). If this is the case,
233
+ // we will exit from the loop with buf_size > 0.
234
+ size_t consumed_by_handshaker = buf_size;
235
+ result = tsi_handshaker_process_bytes_from_peer(
236
+ handshaker, buf, &consumed_by_handshaker);
237
+ buf_size -= consumed_by_handshaker;
238
+ buf_offset += consumed_by_handshaker;
239
+ } while (result == TSI_INCOMPLETE_DATA);
240
+
241
+ if (result != TSI_OK) return result;
242
+ if (!tsi_handshaker_is_in_progress(handshaker)) break;
243
+ }
244
+
245
+ // Check the Peer.
246
+ tsi_peer peer;
247
+ do {
248
+ result = tsi_handshaker_extract_peer(handshaker, &peer);
249
+ if (result != TSI_OK) break;
250
+ result = check_peer(&peer);
251
+ } while (0);
252
+ tsi_peer_destruct(&peer);
253
+ if (result != TSI_OK) return result;
254
+
255
+ // Create the protector.
256
+ tsi_frame_protector* protector = NULL;
257
+ result = tsi_handshaker_create_frame_protector(handshaker, NULL,
258
+ &protector);
259
+ if (result != TSI_OK) return result;
260
+
261
+ // Do not forget to unprotect outstanding data if any.
262
+ if (buf_size > 0) {
263
+ result = tsi_frame_protector_unprotect(protector, buf + buf_offset,
264
+ buf_size, ..., ...);
265
+ ....
266
+ }
267
+ ...
268
+ ------------------------------------------------------------------------ */
269
+ typedef struct tsi_handshaker tsi_handshaker;
270
+
271
+ /* Gets bytes that need to be sent to the peer.
272
+ - bytes is the buffer that will be written with the data to be sent to the
273
+ peer.
274
+ - bytes_size is an input/output parameter specifying the capacity of the
275
+ bytes parameter as input and the number of bytes written as output.
276
+ Returns TSI_OK if all the data to send to the peer has been written or if
277
+ nothing has to be sent to the peer (in which base bytes_size outputs to 0),
278
+ otherwise returns TSI_INCOMPLETE_DATA which indicates that this method
279
+ needs to be called again to get all the bytes to send to the peer (there
280
+ was more data to write than the specified bytes_size). In case of a fatal
281
+ error in the handshake, another specific error code is returned. */
282
+ tsi_result tsi_handshaker_get_bytes_to_send_to_peer(tsi_handshaker *self,
283
+ unsigned char *bytes,
284
+ size_t *bytes_size);
285
+
286
+ /* Processes bytes received from the peer.
287
+ - bytes is the buffer containing the data.
288
+ - bytes_size is an input/output parameter specifying the size of the data as
289
+ input and the number of bytes consumed as output.
290
+ Return TSI_OK if the handshake has all the data it needs to process,
291
+ otherwise return TSI_INCOMPLETE_DATA which indicates that this method
292
+ needs to be called again to complete the data needed for processing. In
293
+ case of a fatal error in the handshake, another specific error code is
294
+ returned. */
295
+ tsi_result tsi_handshaker_process_bytes_from_peer(tsi_handshaker *self,
296
+ const unsigned char *bytes,
297
+ size_t *bytes_size);
298
+
299
+ /* Gets the result of the handshaker.
300
+ Returns TSI_OK if the hanshake completed successfully and there has been no
301
+ errors. Returns TSI_HANDSHAKE_IN_PROGRESS if the handshaker is not done yet
302
+ but no error has been encountered so far. Otherwise the handshaker failed
303
+ with the returned error. */
304
+ tsi_result tsi_handshaker_get_result(tsi_handshaker *self);
305
+
306
+ /* Returns 1 if the handshake is in progress, 0 otherwise. */
307
+ #define tsi_handshaker_is_in_progress(h) \
308
+ (tsi_handshaker_get_result((h)) == TSI_HANDSHAKE_IN_PROGRESS)
309
+
310
+ /* This method may return TSI_FAILED_PRECONDITION if
311
+ tsi_handshaker_is_in_progress returns 1, it returns TSI_OK otherwise
312
+ assuming the handshaker is not in a fatal error state.
313
+ The caller is responsible for destructing the peer. */
314
+ tsi_result tsi_handshaker_extract_peer(tsi_handshaker *self, tsi_peer *peer);
315
+
316
+ /* This method creates a tsi_frame_protector object after the handshake phase
317
+ is done. After this method has been called successfully, the only method
318
+ that can be called on this object is Destroy.
319
+ - max_output_protected_frame_size is an input/output parameter specifying the
320
+ desired max output protected frame size as input and outputing the actual
321
+ max output frame size as the output. Passing NULL is OK and will result in
322
+ the implementation choosing the default maximum protected frame size. Note
323
+ that this size only applies to outgoing frames (generated with
324
+ tsi_frame_protector_protect) and not incoming frames (input of
325
+ tsi_frame_protector_unprotect).
326
+ - protector is an output parameter pointing to the newly created
327
+ tsi_frame_protector object.
328
+ This method may return TSI_FAILED_PRECONDITION if
329
+ tsi_handshaker_is_in_progress returns 1, it returns TSI_OK otherwise assuming
330
+ the handshaker is not in a fatal error state.
331
+ The caller is responsible for destroying the protector. */
332
+ tsi_result tsi_handshaker_create_frame_protector(
333
+ tsi_handshaker *self, size_t *max_output_protected_frame_size,
334
+ tsi_frame_protector **protector);
335
+
336
+ /* This method releases the tsi_handshaker object. After this method is called,
337
+ no other method can be called on the object. */
338
+ void tsi_handshaker_destroy(tsi_handshaker *self);
339
+
340
+ #ifdef __cplusplus
341
+ }
342
+ #endif
343
+
344
+ #endif /* GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H */