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,51 @@
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_SUPPORT_LOG_WIN32_H
35
+ #define GRPC_SUPPORT_LOG_WIN32_H
36
+
37
+ #ifdef __cplusplus
38
+ extern "C" {
39
+ #endif
40
+
41
+ /* Returns a string allocated with gpr_malloc that contains a UTF-8
42
+ * formatted error message, corresponding to the error messageid.
43
+ * Use in conjunction with GetLastError() et al.
44
+ */
45
+ char *gpr_format_message(DWORD messageid);
46
+
47
+ #ifdef __cplusplus
48
+ }
49
+ #endif
50
+
51
+ #endif /* GRPC_SUPPORT_LOG_WIN32_H */
@@ -0,0 +1,356 @@
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_SUPPORT_PORT_PLATFORM_H
35
+ #define GRPC_SUPPORT_PORT_PLATFORM_H
36
+
37
+ /* Get windows.h included everywhere (we need it) */
38
+ #if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
39
+ #ifndef WIN32_LEAN_AND_MEAN
40
+ #define GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
41
+ #define WIN32_LEAN_AND_MEAN
42
+ #endif /* WIN32_LEAN_AND_MEAN */
43
+
44
+ #ifndef NOMINMAX
45
+ #define GRPC_NOMINMX_WAS_NOT_DEFINED
46
+ #define NOMINMAX
47
+ #endif /* NOMINMAX */
48
+
49
+ #ifndef _WIN32_WINNT
50
+ #error \
51
+ "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"
52
+ #else /* !defined(_WIN32_WINNT) */
53
+ #if (_WIN32_WINNT < 0x0600)
54
+ #error \
55
+ "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"
56
+ #endif /* _WIN32_WINNT < 0x0600 */
57
+ #endif /* defined(_WIN32_WINNT) */
58
+
59
+ #include <windows.h>
60
+
61
+ #ifdef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
62
+ #undef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
63
+ #undef WIN32_LEAN_AND_MEAN
64
+ #endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */
65
+
66
+ #ifdef GRPC_NOMINMAX_WAS_NOT_DEFINED
67
+ #undef GRPC_NOMINMAX_WAS_NOT_DEFINED
68
+ #undef NOMINMAX
69
+ #endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */
70
+ #endif /* defined(_WIN64) || defined(WIN64) || defined(_WIN32) || \
71
+ defined(WIN32) */
72
+
73
+ /* Override this file with one for your platform if you need to redefine
74
+ things. */
75
+
76
+ #if !defined(GPR_NO_AUTODETECT_PLATFORM)
77
+ #if defined(_WIN64) || defined(WIN64)
78
+ #define GPR_PLATFORM_STRING "windows"
79
+ #define GPR_WIN32 1
80
+ #define GPR_ARCH_64 1
81
+ #define GPR_GETPID_IN_PROCESS_H 1
82
+ #define GPR_WINSOCK_SOCKET 1
83
+ #ifdef __GNUC__
84
+ #define GPR_GCC_ATOMIC 1
85
+ #define GPR_GCC_TLS 1
86
+ #else
87
+ #define GPR_WIN32_ATOMIC 1
88
+ #define GPR_MSVC_TLS 1
89
+ #endif
90
+ #define GPR_WINDOWS_CRASH_HANDLER 1
91
+ #elif defined(_WIN32) || defined(WIN32)
92
+ #define GPR_PLATFORM_STRING "windows"
93
+ #define GPR_ARCH_32 1
94
+ #define GPR_WIN32 1
95
+ #define GPR_GETPID_IN_PROCESS_H 1
96
+ #define GPR_WINSOCK_SOCKET 1
97
+ #ifdef __GNUC__
98
+ #define GPR_GCC_ATOMIC 1
99
+ #define GPR_GCC_TLS 1
100
+ #else
101
+ #define GPR_WIN32_ATOMIC 1
102
+ #define GPR_MSVC_TLS 1
103
+ #endif
104
+ #define GPR_WINDOWS_CRASH_HANDLER 1
105
+ #elif defined(ANDROID) || defined(__ANDROID__)
106
+ #define GPR_PLATFORM_STRING "android"
107
+ #define GPR_ANDROID 1
108
+ #define GPR_ARCH_32 1
109
+ #define GPR_CPU_LINUX 1
110
+ #define GPR_GCC_SYNC 1
111
+ #define GPR_GCC_TLS 1
112
+ #define GPR_POSIX_MULTIPOLL_WITH_POLL 1
113
+ #define GPR_POSIX_WAKEUP_FD 1
114
+ #define GPR_LINUX_EVENTFD 1
115
+ #define GPR_POSIX_SOCKET 1
116
+ #define GPR_POSIX_SOCKETADDR 1
117
+ #define GPR_POSIX_SOCKETUTILS 1
118
+ #define GPR_POSIX_ENV 1
119
+ #define GPR_POSIX_FILE 1
120
+ #define GPR_POSIX_STRING 1
121
+ #define GPR_POSIX_SUBPROCESS 1
122
+ #define GPR_POSIX_SYNC 1
123
+ #define GPR_POSIX_TIME 1
124
+ #define GPR_GETPID_IN_UNISTD_H 1
125
+ #define GPR_HAVE_MSG_NOSIGNAL 1
126
+ #elif defined(__linux__)
127
+ #define GPR_POSIX_CRASH_HANDLER 1
128
+ #define GPR_PLATFORM_STRING "linux"
129
+ #ifndef _BSD_SOURCE
130
+ #define _BSD_SOURCE
131
+ #endif
132
+ #ifndef _DEFAULT_SOURCE
133
+ #define _DEFAULT_SOURCE
134
+ #endif
135
+ #ifndef _GNU_SOURCE
136
+ #define _GNU_SOURCE
137
+ #endif
138
+ #include <features.h>
139
+ #define GPR_CPU_LINUX 1
140
+ #define GPR_GCC_ATOMIC 1
141
+ #define GPR_GCC_TLS 1
142
+ #define GPR_LINUX 1
143
+ #define GPR_LINUX_MULTIPOLL_WITH_EPOLL 1
144
+ #define GPR_POSIX_WAKEUP_FD 1
145
+ #define GPR_POSIX_SOCKET 1
146
+ #define GPR_POSIX_SOCKETADDR 1
147
+ #ifdef __GLIBC_PREREQ
148
+ #if __GLIBC_PREREQ(2, 9)
149
+ #define GPR_LINUX_EVENTFD 1
150
+ #endif
151
+ #if __GLIBC_PREREQ(2, 10)
152
+ #define GPR_LINUX_SOCKETUTILS 1
153
+ #endif
154
+ #if __GLIBC_PREREQ(2, 17)
155
+ #define GPR_LINUX_ENV 1
156
+ #endif
157
+ #endif
158
+ #ifndef GPR_LINUX_EVENTFD
159
+ #define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
160
+ #endif
161
+ #ifndef GPR_LINUX_SOCKETUTILS
162
+ #define GPR_POSIX_SOCKETUTILS
163
+ #endif
164
+ #ifndef GPR_LINUX_ENV
165
+ #define GPR_POSIX_ENV 1
166
+ #endif
167
+ #define GPR_POSIX_FILE 1
168
+ #define GPR_POSIX_STRING 1
169
+ #define GPR_POSIX_SUBPROCESS 1
170
+ #define GPR_POSIX_SYNC 1
171
+ #define GPR_POSIX_TIME 1
172
+ #define GPR_GETPID_IN_UNISTD_H 1
173
+ #define GPR_HAVE_MSG_NOSIGNAL 1
174
+ #ifdef _LP64
175
+ #define GPR_ARCH_64 1
176
+ #else /* _LP64 */
177
+ #define GPR_ARCH_32 1
178
+ #endif /* _LP64 */
179
+ #elif defined(__APPLE__)
180
+ #include <TargetConditionals.h>
181
+ #ifndef _BSD_SOURCE
182
+ #define _BSD_SOURCE
183
+ #endif
184
+ #define GPR_MSG_IOVLEN_TYPE int
185
+ #if TARGET_OS_IPHONE
186
+ #define GPR_FORBID_UNREACHABLE_CODE 1
187
+ #define GPR_PLATFORM_STRING "ios"
188
+ #define GPR_CPU_IPHONE 1
189
+ #define GPR_PTHREAD_TLS 1
190
+ #else /* TARGET_OS_IPHONE */
191
+ #define GPR_PLATFORM_STRING "osx"
192
+ #define GPR_CPU_POSIX 1
193
+ #define GPR_GCC_TLS 1
194
+ #define GPR_POSIX_CRASH_HANDLER 1
195
+ #endif
196
+ #define GPR_GCC_ATOMIC 1
197
+ #define GPR_POSIX_LOG 1
198
+ #define GPR_POSIX_MULTIPOLL_WITH_POLL 1
199
+ #define GPR_POSIX_WAKEUP_FD 1
200
+ #define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
201
+ #define GPR_POSIX_SOCKET 1
202
+ #define GPR_POSIX_SOCKETADDR 1
203
+ #define GPR_POSIX_SOCKETUTILS 1
204
+ #define GPR_POSIX_ENV 1
205
+ #define GPR_POSIX_FILE 1
206
+ #define GPR_POSIX_STRING 1
207
+ #define GPR_POSIX_SUBPROCESS 1
208
+ #define GPR_POSIX_SYNC 1
209
+ #define GPR_POSIX_TIME 1
210
+ #define GPR_GETPID_IN_UNISTD_H 1
211
+ #define GPR_HAVE_SO_NOSIGPIPE 1
212
+ #ifdef _LP64
213
+ #define GPR_ARCH_64 1
214
+ #else /* _LP64 */
215
+ #define GPR_ARCH_32 1
216
+ #endif /* _LP64 */
217
+ #elif defined(__FreeBSD__)
218
+ #define GPR_PLATFORM_STRING "freebsd"
219
+ #ifndef _BSD_SOURCE
220
+ #define _BSD_SOURCE
221
+ #endif
222
+ #define GPR_CPU_POSIX 1
223
+ #define GPR_GCC_ATOMIC 1
224
+ #define GPR_GCC_TLS 1
225
+ #define GPR_POSIX_LOG 1
226
+ #define GPR_POSIX_MULTIPOLL_WITH_POLL 1
227
+ #define GPR_POSIX_WAKEUP_FD 1
228
+ #define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
229
+ #define GPR_POSIX_SOCKET 1
230
+ #define GPR_POSIX_SOCKETADDR 1
231
+ #define GPR_POSIX_SOCKETUTILS 1
232
+ #define GPR_POSIX_ENV 1
233
+ #define GPR_POSIX_FILE 1
234
+ #define GPR_POSIX_STRING 1
235
+ #define GPR_POSIX_SUBPROCESS 1
236
+ #define GPR_POSIX_SYNC 1
237
+ #define GPR_POSIX_TIME 1
238
+ #define GPR_GETPID_IN_UNISTD_H 1
239
+ #define GPR_HAVE_SO_NOSIGPIPE 1
240
+ #ifdef _LP64
241
+ #define GPR_ARCH_64 1
242
+ #else /* _LP64 */
243
+ #define GPR_ARCH_32 1
244
+ #endif /* _LP64 */
245
+ #else
246
+ #error Could not auto-detect platform
247
+ #endif
248
+ #endif /* GPR_NO_AUTODETECT_PLATFORM */
249
+
250
+ #ifndef GPR_PLATFORM_STRING
251
+ #warning "GPR_PLATFORM_STRING not auto-detected"
252
+ #define GPR_PLATFORM_STRING "unknown"
253
+ #endif
254
+
255
+ #ifdef GPR_GCOV
256
+ #undef GPR_FORBID_UNREACHABLE_CODE
257
+ #define GPR_FORBID_UNREACHABLE_CODE 1
258
+ #endif
259
+
260
+ /* For a common case, assume that the platform has a C99-like stdint.h */
261
+
262
+ #include <stdint.h>
263
+
264
+ /* Cache line alignment */
265
+ #ifndef GPR_CACHELINE_SIZE_LOG
266
+ #if defined(__i386__) || defined(__x86_64__)
267
+ #define GPR_CACHELINE_SIZE_LOG 6
268
+ #endif
269
+ #ifndef GPR_CACHELINE_SIZE_LOG
270
+ /* A reasonable default guess. Note that overestimates tend to waste more
271
+ space, while underestimates tend to waste more time. */
272
+ #define GPR_CACHELINE_SIZE_LOG 6
273
+ #endif /* GPR_CACHELINE_SIZE_LOG */
274
+ #endif /* GPR_CACHELINE_SIZE_LOG */
275
+
276
+ #define GPR_CACHELINE_SIZE (1 << GPR_CACHELINE_SIZE_LOG)
277
+
278
+ /* scrub GCC_ATOMIC if it's not available on this compiler */
279
+ #if defined(GPR_GCC_ATOMIC) && !defined(__ATOMIC_RELAXED)
280
+ #undef GPR_GCC_ATOMIC
281
+ #define GPR_GCC_SYNC 1
282
+ #endif
283
+
284
+ /* Validate platform combinations */
285
+ #if defined(GPR_GCC_ATOMIC) + defined(GPR_GCC_SYNC) + \
286
+ defined(GPR_WIN32_ATOMIC) != \
287
+ 1
288
+ #error Must define exactly one of GPR_GCC_ATOMIC, GPR_GCC_SYNC, GPR_WIN32_ATOMIC
289
+ #endif
290
+
291
+ #if defined(GPR_ARCH_32) + defined(GPR_ARCH_64) != 1
292
+ #error Must define exactly one of GPR_ARCH_32, GPR_ARCH_64
293
+ #endif
294
+
295
+ #if defined(GPR_CPU_LINUX) + defined(GPR_CPU_POSIX) + defined(GPR_WIN32) + \
296
+ defined(GPR_CPU_IPHONE) + defined(GPR_CPU_CUSTOM) != \
297
+ 1
298
+ #error Must define exactly one of GPR_CPU_LINUX, GPR_CPU_POSIX, GPR_WIN32, GPR_CPU_IPHONE, GPR_CPU_CUSTOM
299
+ #endif
300
+
301
+ #if defined(GPR_POSIX_MULTIPOLL_WITH_POLL) && !defined(GPR_POSIX_SOCKET)
302
+ #error Must define GPR_POSIX_SOCKET to use GPR_POSIX_MULTIPOLL_WITH_POLL
303
+ #endif
304
+
305
+ #if defined(GPR_POSIX_SOCKET) + defined(GPR_WINSOCK_SOCKET) + \
306
+ defined(GPR_CUSTOM_SOCKET) != \
307
+ 1
308
+ #error Must define exactly one of GPR_POSIX_SOCKET, GPR_WINSOCK_SOCKET, GPR_CUSTOM_SOCKET
309
+ #endif
310
+
311
+ #if defined(GPR_MSVC_TLS) + defined(GPR_GCC_TLS) + defined(GPR_PTHREAD_TLS) + \
312
+ defined(GPR_CUSTOM_TLS) != \
313
+ 1
314
+ #error Must define exactly one of GPR_MSVC_TLS, GPR_GCC_TLS, GPR_PTHREAD_TLS, GPR_CUSTOM_TLS
315
+ #endif
316
+
317
+ typedef int16_t gpr_int16;
318
+ typedef int32_t gpr_int32;
319
+ typedef int64_t gpr_int64;
320
+ typedef uint8_t gpr_uint8;
321
+ typedef uint16_t gpr_uint16;
322
+ typedef uint32_t gpr_uint32;
323
+ typedef uint64_t gpr_uint64;
324
+ typedef intmax_t gpr_intmax;
325
+ typedef intptr_t gpr_intptr;
326
+ typedef uintmax_t gpr_uintmax;
327
+ typedef uintptr_t gpr_uintptr;
328
+
329
+ /* INT64_MAX is unavailable on some platforms. */
330
+ #define GPR_INT64_MAX (gpr_int64)(~(gpr_uint64)0 >> 1)
331
+ #define GPR_UINT32_MAX (~(gpr_uint32)0)
332
+
333
+ /* maximum alignment needed for any type on this platform, rounded up to a
334
+ power of two */
335
+ #define GPR_MAX_ALIGNMENT 16
336
+
337
+ #ifndef GRPC_MUST_USE_RESULT
338
+ #ifdef __GNUC__
339
+ #define GRPC_MUST_USE_RESULT __attribute__((warn_unused_result))
340
+ #else
341
+ #define GRPC_MUST_USE_RESULT
342
+ #endif
343
+ #endif
344
+
345
+ #if GPR_FORBID_UNREACHABLE_CODE
346
+ #define GPR_UNREACHABLE_CODE(STATEMENT)
347
+ #else
348
+ #define GPR_UNREACHABLE_CODE(STATEMENT) \
349
+ do { \
350
+ gpr_log(GPR_ERROR, "Should never reach here."); \
351
+ abort(); \
352
+ STATEMENT; \
353
+ } while (0)
354
+ #endif /* GPR_FORBID_UNREACHABLE_CODE */
355
+
356
+ #endif /* GRPC_SUPPORT_PORT_PLATFORM_H */
@@ -0,0 +1,182 @@
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_SUPPORT_SLICE_H
35
+ #define GRPC_SUPPORT_SLICE_H
36
+
37
+ #include <grpc/support/sync.h>
38
+
39
+ #include <stddef.h>
40
+
41
+ #ifdef __cplusplus
42
+ extern "C" {
43
+ #endif
44
+
45
+ /* Slice API
46
+
47
+ A slice represents a contiguous reference counted array of bytes.
48
+ It is cheap to take references to a slice, and it is cheap to create a
49
+ slice pointing to a subset of another slice.
50
+
51
+ The data-structure for slices is exposed here to allow non-gpr code to
52
+ build slices from whatever data they have available.
53
+
54
+ When defining interfaces that handle slices, care should be taken to define
55
+ reference ownership semantics (who should call unref?) and mutability
56
+ constraints (is the callee allowed to modify the slice?) */
57
+
58
+ /* Reference count container for gpr_slice. Contains function pointers to
59
+ increment and decrement reference counts. Implementations should cleanup
60
+ when the reference count drops to zero.
61
+ Typically client code should not touch this, and use gpr_slice_malloc,
62
+ gpr_slice_new, or gpr_slice_new_with_len instead. */
63
+ typedef struct gpr_slice_refcount {
64
+ void (*ref)(void *);
65
+ void (*unref)(void *);
66
+ } gpr_slice_refcount;
67
+
68
+ #define GPR_SLICE_INLINED_SIZE (sizeof(size_t) + sizeof(gpr_uint8 *) - 1)
69
+
70
+ /* A gpr_slice s, if initialized, represents the byte range
71
+ s.bytes[0..s.length-1].
72
+
73
+ It can have an associated ref count which has a destruction routine to be run
74
+ when the ref count reaches zero (see gpr_slice_new() and grp_slice_unref()).
75
+ Multiple gpr_slice values may share a ref count.
76
+
77
+ If the slice does not have a refcount, it represents an inlined small piece
78
+ of data that is copied by value. */
79
+ typedef struct gpr_slice {
80
+ struct gpr_slice_refcount *refcount;
81
+ union {
82
+ struct {
83
+ gpr_uint8 *bytes;
84
+ size_t length;
85
+ } refcounted;
86
+ struct {
87
+ gpr_uint8 length;
88
+ gpr_uint8 bytes[GPR_SLICE_INLINED_SIZE];
89
+ } inlined;
90
+ } data;
91
+ } gpr_slice;
92
+
93
+ #define GPR_SLICE_START_PTR(slice) \
94
+ ((slice).refcount ? (slice).data.refcounted.bytes \
95
+ : (slice).data.inlined.bytes)
96
+ #define GPR_SLICE_LENGTH(slice) \
97
+ ((slice).refcount ? (slice).data.refcounted.length \
98
+ : (slice).data.inlined.length)
99
+ #define GPR_SLICE_SET_LENGTH(slice, newlen) \
100
+ ((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \
101
+ : ((slice).data.inlined.length = (gpr_uint8)(newlen)))
102
+ #define GPR_SLICE_END_PTR(slice) \
103
+ GPR_SLICE_START_PTR(slice) + GPR_SLICE_LENGTH(slice)
104
+ #define GPR_SLICE_IS_EMPTY(slice) (GPR_SLICE_LENGTH(slice) == 0)
105
+
106
+ /* Increment the refcount of s. Requires slice is initialized.
107
+ Returns s. */
108
+ gpr_slice gpr_slice_ref(gpr_slice s);
109
+
110
+ /* Decrement the ref count of s. If the ref count of s reaches zero, all
111
+ slices sharing the ref count are destroyed, and considered no longer
112
+ initialized. If s is ultimately derived from a call to gpr_slice_new(start,
113
+ len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is
114
+ ultimately derived from a call to gpr_slice_new_with_len(start, len, dest)
115
+ where dest!=NULL , then (*dest)(start, len). Requires s initialized. */
116
+ void gpr_slice_unref(gpr_slice s);
117
+
118
+ /* Create a slice pointing at some data. Calls malloc to allocate a refcount
119
+ for the object, and arranges that destroy will be called with the pointer
120
+ passed in at destruction. */
121
+ gpr_slice gpr_slice_new(void *p, size_t len, void (*destroy)(void *));
122
+
123
+ /* Equivalent to gpr_slice_new, but with a two argument destroy function that
124
+ also takes the slice length. */
125
+ gpr_slice gpr_slice_new_with_len(void *p, size_t len,
126
+ void (*destroy)(void *, size_t));
127
+
128
+ /* Equivalent to gpr_slice_new(malloc(len), len, free), but saves one malloc()
129
+ call.
130
+ Aborts if malloc() fails. */
131
+ gpr_slice gpr_slice_malloc(size_t length);
132
+
133
+ /* Create a slice by copying a string.
134
+ Does not preserve null terminators.
135
+ Equivalent to:
136
+ size_t len = strlen(source);
137
+ gpr_slice slice = gpr_slice_malloc(len);
138
+ memcpy(slice->data, source, len); */
139
+ gpr_slice gpr_slice_from_copied_string(const char *source);
140
+
141
+ /* Create a slice by copying a buffer.
142
+ Equivalent to:
143
+ gpr_slice slice = gpr_slice_malloc(len);
144
+ memcpy(slice->data, source, len); */
145
+ gpr_slice gpr_slice_from_copied_buffer(const char *source, size_t len);
146
+
147
+ /* Create a slice pointing to constant memory */
148
+ gpr_slice gpr_slice_from_static_string(const char *source);
149
+
150
+ /* Return a result slice derived from s, which shares a ref count with s, where
151
+ result.data==s.data+begin, and result.length==end-begin.
152
+ The ref count of s is increased by one.
153
+ Requires s initialized, begin <= end, begin <= s.length, and
154
+ end <= source->length. */
155
+ gpr_slice gpr_slice_sub(gpr_slice s, size_t begin, size_t end);
156
+
157
+ /* The same as gpr_slice_sub, but without altering the ref count */
158
+ gpr_slice gpr_slice_sub_no_ref(gpr_slice s, size_t begin, size_t end);
159
+
160
+ /* Splits s into two: modifies s to be s[0:split], and returns a new slice,
161
+ sharing a refcount with s, that contains s[split:s.length].
162
+ Requires s intialized, split <= s.length */
163
+ gpr_slice gpr_slice_split_tail(gpr_slice *s, size_t split);
164
+
165
+ /* Splits s into two: modifies s to be s[split:s.length], and returns a new
166
+ slice, sharing a refcount with s, that contains s[0:split].
167
+ Requires s intialized, split <= s.length */
168
+ gpr_slice gpr_slice_split_head(gpr_slice *s, size_t split);
169
+
170
+ gpr_slice gpr_empty_slice(void);
171
+
172
+ /* Returns <0 if a < b, ==0 if a == b, >0 if a > b
173
+ The order is arbitrary, and is not guaranteed to be stable across different
174
+ versions of the API. */
175
+ int gpr_slice_cmp(gpr_slice a, gpr_slice b);
176
+ int gpr_slice_str_cmp(gpr_slice a, const char *b);
177
+
178
+ #ifdef __cplusplus
179
+ }
180
+ #endif
181
+
182
+ #endif /* GRPC_SUPPORT_SLICE_H */