grpc 1.4.5 → 1.6.0.pre1

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 (928) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1235 -1100
  3. data/etc/roots.pem +0 -412
  4. data/include/grpc/byte_buffer.h +10 -25
  5. data/include/grpc/byte_buffer_reader.h +10 -25
  6. data/include/grpc/census.h +10 -25
  7. data/include/grpc/compression.h +10 -25
  8. data/include/grpc/grpc.h +15 -26
  9. data/include/grpc/grpc_cronet.h +10 -25
  10. data/include/grpc/grpc_posix.h +10 -25
  11. data/include/grpc/grpc_security.h +10 -25
  12. data/include/grpc/grpc_security_constants.h +10 -25
  13. data/include/grpc/impl/codegen/atm.h +11 -25
  14. data/include/grpc/impl/codegen/atm_gcc_atomic.h +10 -25
  15. data/include/grpc/impl/codegen/atm_gcc_sync.h +10 -25
  16. data/include/grpc/impl/codegen/atm_windows.h +10 -25
  17. data/include/grpc/impl/codegen/byte_buffer_reader.h +11 -26
  18. data/include/grpc/impl/codegen/compression_types.h +12 -27
  19. data/include/grpc/impl/codegen/connectivity_state.h +10 -25
  20. data/include/grpc/impl/codegen/exec_ctx_fwd.h +10 -25
  21. data/include/grpc/impl/codegen/gpr_slice.h +10 -25
  22. data/include/grpc/impl/codegen/gpr_types.h +10 -25
  23. data/include/grpc/impl/codegen/grpc_types.h +42 -43
  24. data/include/grpc/impl/codegen/port_platform.h +10 -25
  25. data/include/grpc/impl/codegen/propagation_bits.h +10 -25
  26. data/include/grpc/impl/codegen/slice.h +13 -28
  27. data/include/grpc/impl/codegen/status.h +10 -25
  28. data/include/grpc/impl/codegen/sync.h +10 -25
  29. data/include/grpc/impl/codegen/sync_generic.h +10 -25
  30. data/include/grpc/impl/codegen/sync_posix.h +10 -25
  31. data/include/grpc/impl/codegen/sync_windows.h +10 -25
  32. data/include/grpc/load_reporting.h +10 -25
  33. data/include/grpc/slice.h +10 -25
  34. data/include/grpc/slice_buffer.h +10 -25
  35. data/include/grpc/status.h +10 -25
  36. data/include/grpc/support/alloc.h +10 -25
  37. data/include/grpc/support/atm.h +10 -25
  38. data/include/grpc/support/atm_gcc_atomic.h +10 -25
  39. data/include/grpc/support/atm_gcc_sync.h +10 -25
  40. data/include/grpc/support/atm_windows.h +10 -25
  41. data/include/grpc/support/avl.h +46 -49
  42. data/include/grpc/support/cmdline.h +10 -25
  43. data/include/grpc/support/cpu.h +10 -25
  44. data/include/grpc/support/histogram.h +10 -25
  45. data/include/grpc/support/host_port.h +10 -25
  46. data/include/grpc/support/log.h +10 -25
  47. data/include/grpc/support/log_windows.h +10 -25
  48. data/include/grpc/support/port_platform.h +10 -25
  49. data/include/grpc/support/string_util.h +10 -25
  50. data/include/grpc/support/subprocess.h +10 -25
  51. data/include/grpc/support/sync.h +10 -25
  52. data/include/grpc/support/sync_generic.h +10 -25
  53. data/include/grpc/support/sync_posix.h +10 -25
  54. data/include/grpc/support/sync_windows.h +10 -25
  55. data/include/grpc/support/thd.h +10 -25
  56. data/include/grpc/support/time.h +10 -25
  57. data/include/grpc/support/tls.h +10 -25
  58. data/include/grpc/support/tls_gcc.h +10 -25
  59. data/include/grpc/support/tls_msvc.h +10 -25
  60. data/include/grpc/support/tls_pthread.h +10 -25
  61. data/include/grpc/support/useful.h +10 -25
  62. data/include/grpc/support/workaround_list.h +11 -26
  63. data/src/boringssl/err_data.c +277 -259
  64. data/src/core/ext/census/aggregation.h +10 -25
  65. data/src/core/ext/census/base_resources.c +10 -25
  66. data/src/core/ext/census/base_resources.h +10 -25
  67. data/src/core/ext/census/census_interface.h +10 -25
  68. data/src/core/ext/census/census_rpc_stats.h +10 -25
  69. data/src/core/ext/census/context.c +10 -25
  70. data/src/core/ext/census/gen/census.pb.c +10 -25
  71. data/src/core/ext/census/gen/census.pb.h +10 -25
  72. data/src/core/ext/census/gen/trace_context.pb.c +10 -25
  73. data/src/core/ext/census/gen/trace_context.pb.h +10 -25
  74. data/src/core/ext/census/grpc_context.c +10 -25
  75. data/src/core/ext/census/grpc_filter.c +11 -26
  76. data/src/core/ext/census/grpc_filter.h +10 -25
  77. data/src/core/ext/census/grpc_plugin.c +10 -25
  78. data/src/core/ext/census/initialize.c +10 -25
  79. data/src/core/ext/census/intrusive_hash_map.c +10 -25
  80. data/src/core/ext/census/intrusive_hash_map.h +10 -25
  81. data/src/core/ext/census/intrusive_hash_map_internal.h +10 -25
  82. data/src/core/ext/census/mlog.c +10 -25
  83. data/src/core/ext/census/mlog.h +10 -25
  84. data/src/core/ext/census/operation.c +10 -25
  85. data/src/core/ext/census/placeholders.c +10 -25
  86. data/src/core/ext/census/resource.c +10 -25
  87. data/src/core/ext/census/resource.h +10 -25
  88. data/src/core/ext/census/rpc_metric_id.h +10 -25
  89. data/src/core/ext/census/trace_context.c +10 -25
  90. data/src/core/ext/census/trace_context.h +10 -25
  91. data/src/core/ext/census/trace_label.h +10 -25
  92. data/src/core/ext/census/trace_propagation.h +10 -25
  93. data/src/core/ext/census/trace_status.h +10 -25
  94. data/src/core/ext/census/trace_string.h +10 -25
  95. data/src/core/ext/census/tracing.c +10 -26
  96. data/src/core/ext/census/tracing.h +10 -25
  97. data/src/core/ext/filters/client_channel/channel_connectivity.c +20 -33
  98. data/src/core/ext/filters/client_channel/client_channel.c +617 -520
  99. data/src/core/ext/filters/client_channel/client_channel.h +15 -28
  100. data/src/core/ext/filters/client_channel/client_channel_factory.c +13 -31
  101. data/src/core/ext/filters/client_channel/client_channel_factory.h +10 -25
  102. data/src/core/ext/filters/client_channel/client_channel_plugin.c +16 -29
  103. data/src/core/ext/filters/client_channel/connector.c +10 -25
  104. data/src/core/ext/filters/client_channel/connector.h +10 -25
  105. data/src/core/ext/filters/client_channel/http_connect_handshaker.c +15 -30
  106. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -25
  107. data/src/core/ext/filters/client_channel/http_proxy.c +112 -38
  108. data/src/core/ext/filters/client_channel/http_proxy.h +10 -25
  109. data/src/core/ext/filters/client_channel/lb_policy.c +32 -36
  110. data/src/core/ext/filters/client_channel/lb_policy.h +24 -27
  111. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c +14 -30
  112. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +10 -25
  113. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c +464 -279
  114. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +10 -25
  115. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +15 -28
  116. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c +40 -48
  117. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c +65 -49
  118. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +31 -31
  119. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c +47 -32
  120. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +11 -26
  121. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +13 -9
  122. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +27 -21
  123. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +373 -136
  124. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +504 -279
  125. data/src/core/ext/filters/client_channel/lb_policy_factory.c +12 -31
  126. data/src/core/ext/filters/client_channel/lb_policy_factory.h +12 -27
  127. data/src/core/ext/filters/client_channel/lb_policy_registry.c +10 -25
  128. data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -25
  129. data/src/core/ext/filters/client_channel/parse_address.c +10 -25
  130. data/src/core/ext/filters/client_channel/parse_address.h +10 -25
  131. data/src/core/ext/filters/client_channel/proxy_mapper.c +10 -25
  132. data/src/core/ext/filters/client_channel/proxy_mapper.h +10 -25
  133. data/src/core/ext/filters/client_channel/proxy_mapper_registry.c +10 -25
  134. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +10 -25
  135. data/src/core/ext/filters/client_channel/resolver.c +33 -38
  136. data/src/core/ext/filters/client_channel/resolver.h +19 -30
  137. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c +153 -50
  138. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +14 -27
  139. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c +33 -30
  140. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c +326 -116
  141. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +35 -36
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +60 -0
  143. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c +19 -34
  144. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c +254 -0
  145. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +60 -0
  146. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c +16 -28
  147. data/src/core/ext/filters/client_channel/resolver_factory.c +10 -25
  148. data/src/core/ext/filters/client_channel/resolver_factory.h +10 -25
  149. data/src/core/ext/filters/client_channel/resolver_registry.c +10 -25
  150. data/src/core/ext/filters/client_channel/resolver_registry.h +10 -25
  151. data/src/core/ext/filters/client_channel/retry_throttle.c +23 -34
  152. data/src/core/ext/filters/client_channel/retry_throttle.h +10 -25
  153. data/src/core/ext/filters/client_channel/subchannel.c +33 -55
  154. data/src/core/ext/filters/client_channel/subchannel.h +16 -26
  155. data/src/core/ext/filters/client_channel/subchannel_index.c +55 -92
  156. data/src/core/ext/filters/client_channel/subchannel_index.h +26 -29
  157. data/src/core/ext/filters/client_channel/uri_parser.c +10 -25
  158. data/src/core/ext/filters/client_channel/uri_parser.h +10 -25
  159. data/src/core/ext/filters/deadline/deadline_filter.c +30 -45
  160. data/src/core/ext/filters/deadline/deadline_filter.h +10 -25
  161. data/src/core/ext/filters/http/client/http_client_filter.c +255 -294
  162. data/src/core/ext/filters/http/client/http_client_filter.h +10 -25
  163. data/src/core/ext/filters/http/http_filters_plugin.c +11 -26
  164. data/src/core/ext/filters/http/message_compress/message_compress_filter.c +133 -105
  165. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +10 -25
  166. data/src/core/ext/filters/http/server/http_server_filter.c +17 -32
  167. data/src/core/ext/filters/http/server/http_server_filter.h +10 -25
  168. data/src/core/ext/filters/load_reporting/load_reporting.c +11 -30
  169. data/src/core/ext/filters/load_reporting/load_reporting.h +10 -25
  170. data/src/core/ext/filters/load_reporting/load_reporting_filter.c +11 -26
  171. data/src/core/ext/filters/load_reporting/load_reporting_filter.h +10 -25
  172. data/src/core/ext/filters/max_age/max_age_filter.c +28 -43
  173. data/src/core/ext/filters/max_age/max_age_filter.h +10 -25
  174. data/src/core/ext/filters/message_size/message_size_filter.c +24 -37
  175. data/src/core/ext/filters/message_size/message_size_filter.h +10 -25
  176. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c +16 -31
  177. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +10 -25
  178. data/src/core/ext/filters/workarounds/workaround_utils.c +12 -26
  179. data/src/core/ext/filters/workarounds/workaround_utils.h +11 -26
  180. data/src/core/ext/transport/chttp2/alpn/alpn.c +10 -25
  181. data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -25
  182. data/src/core/ext/transport/chttp2/client/chttp2_connector.c +13 -28
  183. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +10 -25
  184. data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +13 -30
  185. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +12 -29
  186. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +13 -30
  187. data/src/core/ext/transport/chttp2/server/chttp2_server.c +11 -26
  188. data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -25
  189. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +10 -25
  190. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +10 -25
  191. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +10 -25
  192. data/src/core/ext/transport/chttp2/transport/bin_decoder.c +11 -25
  193. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +10 -25
  194. data/src/core/ext/transport/chttp2/transport/bin_encoder.c +10 -25
  195. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +10 -25
  196. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +15 -27
  197. data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +421 -443
  198. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -25
  199. data/src/core/ext/transport/chttp2/transport/flow_control.c +500 -0
  200. data/src/core/ext/transport/chttp2/transport/frame.h +10 -25
  201. data/src/core/ext/transport/chttp2/transport/frame_data.c +20 -28
  202. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -25
  203. data/src/core/ext/transport/chttp2/transport/frame_goaway.c +10 -25
  204. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -25
  205. data/src/core/ext/transport/chttp2/transport/frame_ping.c +11 -26
  206. data/src/core/ext/transport/chttp2/transport/frame_ping.h +10 -25
  207. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +11 -26
  208. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -25
  209. data/src/core/ext/transport/chttp2/transport/frame_settings.c +16 -29
  210. data/src/core/ext/transport/chttp2/transport/frame_settings.h +10 -25
  211. data/src/core/ext/transport/chttp2/transport/frame_window_update.c +17 -33
  212. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +10 -25
  213. data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +18 -31
  214. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +12 -25
  215. data/src/core/ext/transport/chttp2/transport/hpack_parser.c +15 -30
  216. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -25
  217. data/src/core/ext/transport/chttp2/transport/hpack_table.c +10 -25
  218. data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -25
  219. data/src/core/ext/transport/chttp2/transport/http2_settings.c +10 -25
  220. data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -25
  221. data/src/core/ext/transport/chttp2/transport/huffsyms.c +10 -25
  222. data/src/core/ext/transport/chttp2/transport/huffsyms.h +10 -25
  223. data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +10 -25
  224. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +10 -25
  225. data/src/core/ext/transport/chttp2/transport/internal.h +191 -179
  226. data/src/core/ext/transport/chttp2/transport/parsing.c +33 -102
  227. data/src/core/ext/transport/chttp2/transport/stream_lists.c +26 -28
  228. data/src/core/ext/transport/chttp2/transport/stream_map.c +10 -25
  229. data/src/core/ext/transport/chttp2/transport/stream_map.h +10 -25
  230. data/src/core/ext/transport/chttp2/transport/varint.c +14 -25
  231. data/src/core/ext/transport/chttp2/transport/varint.h +10 -25
  232. data/src/core/ext/transport/chttp2/transport/writing.c +164 -106
  233. data/src/core/ext/transport/inproc/inproc_plugin.c +29 -0
  234. data/src/core/ext/transport/inproc/inproc_transport.c +1303 -0
  235. data/src/core/ext/transport/inproc/inproc_transport.h +41 -0
  236. data/src/core/lib/channel/channel_args.c +52 -27
  237. data/src/core/lib/channel/channel_args.h +18 -27
  238. data/src/core/lib/channel/channel_stack.c +11 -26
  239. data/src/core/lib/channel/channel_stack.h +12 -27
  240. data/src/core/lib/channel/channel_stack_builder.c +11 -26
  241. data/src/core/lib/channel/channel_stack_builder.h +10 -25
  242. data/src/core/lib/channel/connected_channel.c +10 -25
  243. data/src/core/lib/channel/connected_channel.h +10 -25
  244. data/src/core/lib/channel/context.h +10 -25
  245. data/src/core/lib/channel/handshaker.c +14 -29
  246. data/src/core/lib/channel/handshaker.h +10 -25
  247. data/src/core/lib/channel/handshaker_factory.c +10 -25
  248. data/src/core/lib/channel/handshaker_factory.h +10 -25
  249. data/src/core/lib/channel/handshaker_registry.c +10 -25
  250. data/src/core/lib/channel/handshaker_registry.h +10 -25
  251. data/src/core/lib/compression/algorithm_metadata.h +10 -25
  252. data/src/core/lib/compression/compression.c +10 -25
  253. data/src/core/lib/compression/message_compress.c +10 -25
  254. data/src/core/lib/compression/message_compress.h +10 -25
  255. data/src/core/lib/compression/stream_compression.c +191 -0
  256. data/src/core/lib/compression/stream_compression.h +90 -0
  257. data/src/core/lib/debug/trace.c +28 -29
  258. data/src/core/lib/debug/trace.h +16 -30
  259. data/src/core/lib/http/format_request.c +10 -25
  260. data/src/core/lib/http/format_request.h +10 -25
  261. data/src/core/lib/http/httpcli.c +19 -35
  262. data/src/core/lib/http/httpcli.h +10 -25
  263. data/src/core/lib/http/httpcli_security_connector.c +17 -30
  264. data/src/core/lib/http/parser.c +11 -26
  265. data/src/core/lib/http/parser.h +10 -25
  266. data/src/core/lib/iomgr/closure.c +62 -25
  267. data/src/core/lib/iomgr/closure.h +81 -26
  268. data/src/core/lib/iomgr/combiner.c +103 -200
  269. data/src/core/lib/iomgr/combiner.h +14 -32
  270. data/src/core/lib/iomgr/endpoint.c +10 -29
  271. data/src/core/lib/iomgr/endpoint.h +10 -29
  272. data/src/core/lib/iomgr/endpoint_pair.h +10 -25
  273. data/src/core/lib/iomgr/endpoint_pair_posix.c +10 -25
  274. data/src/core/lib/iomgr/endpoint_pair_uv.c +10 -25
  275. data/src/core/lib/iomgr/endpoint_pair_windows.c +10 -25
  276. data/src/core/lib/iomgr/error.c +45 -46
  277. data/src/core/lib/iomgr/error.h +21 -34
  278. data/src/core/lib/iomgr/error_internal.h +10 -25
  279. data/src/core/lib/iomgr/ev_epoll1_linux.c +279 -179
  280. data/src/core/lib/iomgr/ev_epoll1_linux.h +10 -25
  281. data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c +75 -264
  282. data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h +10 -25
  283. data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c +44 -199
  284. data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.h +10 -25
  285. data/src/core/lib/iomgr/ev_epollex_linux.c +184 -247
  286. data/src/core/lib/iomgr/ev_epollex_linux.h +10 -25
  287. data/src/core/lib/iomgr/ev_epollsig_linux.c +116 -323
  288. data/src/core/lib/iomgr/ev_epollsig_linux.h +10 -25
  289. data/src/core/lib/iomgr/ev_poll_posix.c +328 -184
  290. data/src/core/lib/iomgr/ev_poll_posix.h +10 -25
  291. data/src/core/lib/iomgr/ev_posix.c +25 -56
  292. data/src/core/lib/iomgr/ev_posix.h +15 -44
  293. data/src/core/lib/iomgr/ev_windows.c +11 -26
  294. data/src/core/lib/iomgr/exec_ctx.c +36 -45
  295. data/src/core/lib/iomgr/exec_ctx.h +10 -25
  296. data/src/core/lib/iomgr/executor.c +152 -127
  297. data/src/core/lib/iomgr/executor.h +18 -26
  298. data/src/core/lib/iomgr/gethostname.h +26 -0
  299. data/src/core/lib/iomgr/gethostname_fallback.c +27 -0
  300. data/src/core/lib/iomgr/gethostname_host_name_max.c +37 -0
  301. data/src/core/lib/iomgr/gethostname_sysconf.c +37 -0
  302. data/src/core/lib/iomgr/iocp_windows.c +10 -25
  303. data/src/core/lib/iomgr/iocp_windows.h +10 -25
  304. data/src/core/lib/iomgr/iomgr.c +17 -28
  305. data/src/core/lib/iomgr/iomgr.h +12 -27
  306. data/src/core/lib/iomgr/iomgr_internal.h +10 -25
  307. data/src/core/lib/iomgr/iomgr_posix.c +11 -26
  308. data/src/core/lib/iomgr/iomgr_posix.h +10 -25
  309. data/src/core/lib/iomgr/iomgr_uv.c +19 -26
  310. data/src/core/lib/iomgr/iomgr_uv.h +37 -0
  311. data/src/core/lib/iomgr/iomgr_windows.c +10 -25
  312. data/src/core/lib/iomgr/is_epollexclusive_available.c +10 -25
  313. data/src/core/lib/iomgr/is_epollexclusive_available.h +10 -25
  314. data/src/core/lib/iomgr/load_file.c +10 -25
  315. data/src/core/lib/iomgr/load_file.h +10 -25
  316. data/src/core/lib/iomgr/lockfree_event.c +22 -35
  317. data/src/core/lib/iomgr/lockfree_event.h +13 -27
  318. data/src/core/lib/iomgr/nameser.h +104 -0
  319. data/src/core/lib/iomgr/network_status_tracker.c +10 -25
  320. data/src/core/lib/iomgr/network_status_tracker.h +10 -25
  321. data/src/core/lib/iomgr/polling_entity.c +10 -25
  322. data/src/core/lib/iomgr/polling_entity.h +14 -34
  323. data/src/core/lib/iomgr/pollset.h +14 -25
  324. data/src/core/lib/iomgr/pollset_set.h +10 -25
  325. data/src/core/lib/iomgr/pollset_set_uv.c +10 -25
  326. data/src/core/lib/iomgr/pollset_set_windows.c +10 -25
  327. data/src/core/lib/iomgr/pollset_set_windows.h +10 -25
  328. data/src/core/lib/iomgr/pollset_uv.c +25 -26
  329. data/src/core/lib/iomgr/pollset_uv.h +10 -25
  330. data/src/core/lib/iomgr/pollset_windows.c +17 -27
  331. data/src/core/lib/iomgr/pollset_windows.h +10 -25
  332. data/src/core/lib/iomgr/port.h +24 -25
  333. data/src/core/lib/iomgr/resolve_address.h +10 -25
  334. data/src/core/lib/iomgr/resolve_address_posix.c +13 -28
  335. data/src/core/lib/iomgr/resolve_address_uv.c +31 -35
  336. data/src/core/lib/iomgr/resolve_address_windows.c +13 -28
  337. data/src/core/lib/iomgr/resource_quota.c +52 -67
  338. data/src/core/lib/iomgr/resource_quota.h +10 -25
  339. data/src/core/lib/iomgr/sockaddr.h +10 -25
  340. data/src/core/lib/iomgr/sockaddr_posix.h +10 -25
  341. data/src/core/lib/iomgr/sockaddr_utils.c +15 -25
  342. data/src/core/lib/iomgr/sockaddr_utils.h +12 -25
  343. data/src/core/lib/iomgr/sockaddr_windows.h +10 -25
  344. data/src/core/lib/iomgr/socket_factory_posix.c +13 -31
  345. data/src/core/lib/iomgr/socket_factory_posix.h +10 -25
  346. data/src/core/lib/iomgr/socket_mutator.c +14 -31
  347. data/src/core/lib/iomgr/socket_mutator.h +10 -25
  348. data/src/core/lib/iomgr/socket_utils.h +10 -25
  349. data/src/core/lib/iomgr/socket_utils_common_posix.c +10 -25
  350. data/src/core/lib/iomgr/socket_utils_linux.c +10 -25
  351. data/src/core/lib/iomgr/socket_utils_posix.c +10 -25
  352. data/src/core/lib/iomgr/socket_utils_posix.h +10 -25
  353. data/src/core/lib/iomgr/socket_utils_uv.c +10 -25
  354. data/src/core/lib/iomgr/socket_utils_windows.c +10 -25
  355. data/src/core/lib/iomgr/socket_windows.c +12 -27
  356. data/src/core/lib/iomgr/socket_windows.h +10 -25
  357. data/src/core/lib/iomgr/sys_epoll_wrapper.h +10 -25
  358. data/src/core/lib/iomgr/tcp_client.h +10 -25
  359. data/src/core/lib/iomgr/tcp_client_posix.c +21 -34
  360. data/src/core/lib/iomgr/tcp_client_posix.h +10 -25
  361. data/src/core/lib/iomgr/tcp_client_uv.c +18 -27
  362. data/src/core/lib/iomgr/tcp_client_windows.c +14 -29
  363. data/src/core/lib/iomgr/tcp_posix.c +36 -55
  364. data/src/core/lib/iomgr/tcp_posix.h +10 -25
  365. data/src/core/lib/iomgr/tcp_server.h +10 -25
  366. data/src/core/lib/iomgr/tcp_server_posix.c +16 -31
  367. data/src/core/lib/iomgr/tcp_server_utils_posix.h +10 -25
  368. data/src/core/lib/iomgr/tcp_server_utils_posix_common.c +11 -26
  369. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c +10 -25
  370. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c +10 -25
  371. data/src/core/lib/iomgr/tcp_server_uv.c +103 -64
  372. data/src/core/lib/iomgr/tcp_server_windows.c +14 -29
  373. data/src/core/lib/iomgr/tcp_uv.c +41 -45
  374. data/src/core/lib/iomgr/tcp_uv.h +10 -25
  375. data/src/core/lib/iomgr/tcp_windows.c +39 -53
  376. data/src/core/lib/iomgr/tcp_windows.h +10 -25
  377. data/src/core/lib/iomgr/time_averaged_stats.c +10 -25
  378. data/src/core/lib/iomgr/time_averaged_stats.h +10 -25
  379. data/src/core/lib/iomgr/timer.h +18 -27
  380. data/src/core/lib/iomgr/timer_generic.c +91 -87
  381. data/src/core/lib/iomgr/timer_generic.h +10 -25
  382. data/src/core/lib/iomgr/timer_heap.c +10 -25
  383. data/src/core/lib/iomgr/timer_heap.h +10 -25
  384. data/src/core/lib/iomgr/timer_manager.c +178 -100
  385. data/src/core/lib/iomgr/timer_manager.h +10 -25
  386. data/src/core/lib/iomgr/timer_uv.c +23 -33
  387. data/src/core/lib/iomgr/timer_uv.h +10 -25
  388. data/src/core/lib/iomgr/udp_server.c +17 -32
  389. data/src/core/lib/iomgr/udp_server.h +10 -25
  390. data/src/core/lib/iomgr/unix_sockets_posix.c +10 -25
  391. data/src/core/lib/iomgr/unix_sockets_posix.h +10 -25
  392. data/src/core/lib/iomgr/unix_sockets_posix_noop.c +10 -25
  393. data/src/core/lib/iomgr/wakeup_fd_cv.c +10 -25
  394. data/src/core/lib/iomgr/wakeup_fd_cv.h +13 -28
  395. data/src/core/lib/iomgr/wakeup_fd_eventfd.c +10 -25
  396. data/src/core/lib/iomgr/wakeup_fd_nospecial.c +10 -25
  397. data/src/core/lib/iomgr/wakeup_fd_pipe.c +10 -25
  398. data/src/core/lib/iomgr/wakeup_fd_pipe.h +10 -25
  399. data/src/core/lib/iomgr/wakeup_fd_posix.c +10 -25
  400. data/src/core/lib/iomgr/wakeup_fd_posix.h +10 -25
  401. data/src/core/lib/json/json.c +10 -25
  402. data/src/core/lib/json/json.h +10 -25
  403. data/src/core/lib/json/json_common.h +10 -25
  404. data/src/core/lib/json/json_reader.c +11 -25
  405. data/src/core/lib/json/json_reader.h +10 -25
  406. data/src/core/lib/json/json_string.c +10 -25
  407. data/src/core/lib/json/json_writer.c +10 -25
  408. data/src/core/lib/json/json_writer.h +10 -25
  409. data/src/core/lib/profiling/basic_timers.c +10 -25
  410. data/src/core/lib/profiling/stap_timers.c +10 -25
  411. data/src/core/lib/profiling/timers.h +10 -25
  412. data/src/core/lib/security/context/security_context.c +32 -40
  413. data/src/core/lib/security/context/security_context.h +15 -26
  414. data/src/core/lib/security/credentials/composite/composite_credentials.c +76 -81
  415. data/src/core/lib/security/credentials/composite/composite_credentials.h +10 -25
  416. data/src/core/lib/security/credentials/credentials.c +29 -49
  417. data/src/core/lib/security/credentials/credentials.h +48 -61
  418. data/src/core/lib/security/credentials/credentials_metadata.c +34 -78
  419. data/src/core/lib/security/credentials/fake/fake_credentials.c +33 -56
  420. data/src/core/lib/security/credentials/fake/fake_credentials.h +12 -27
  421. data/src/core/lib/security/credentials/google_default/credentials_generic.c +10 -25
  422. data/src/core/lib/security/credentials/google_default/google_default_credentials.c +12 -27
  423. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -25
  424. data/src/core/lib/security/credentials/iam/iam_credentials.c +40 -40
  425. data/src/core/lib/security/credentials/iam/iam_credentials.h +11 -26
  426. data/src/core/lib/security/credentials/jwt/json_token.c +10 -25
  427. data/src/core/lib/security/credentials/jwt/json_token.h +10 -25
  428. data/src/core/lib/security/credentials/jwt/jwt_credentials.c +45 -48
  429. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -26
  430. data/src/core/lib/security/credentials/jwt/jwt_verifier.c +53 -33
  431. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +10 -25
  432. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +155 -87
  433. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -28
  434. data/src/core/lib/security/credentials/plugin/plugin_credentials.c +118 -82
  435. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -27
  436. data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -32
  437. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -25
  438. data/src/core/lib/security/transport/auth_filters.h +10 -25
  439. data/src/core/lib/security/transport/client_auth_filter.c +217 -112
  440. data/src/core/lib/security/transport/lb_targets_info.c +16 -32
  441. data/src/core/lib/security/transport/lb_targets_info.h +10 -25
  442. data/src/core/lib/security/transport/secure_endpoint.c +29 -43
  443. data/src/core/lib/security/transport/secure_endpoint.h +10 -25
  444. data/src/core/lib/security/transport/security_connector.c +80 -61
  445. data/src/core/lib/security/transport/security_connector.h +35 -35
  446. data/src/core/lib/security/transport/security_handshaker.c +18 -33
  447. data/src/core/lib/security/transport/security_handshaker.h +10 -25
  448. data/src/core/lib/security/transport/server_auth_filter.c +62 -116
  449. data/src/core/lib/security/transport/tsi_error.c +10 -25
  450. data/src/core/lib/security/transport/tsi_error.h +10 -25
  451. data/src/core/lib/security/util/json_util.c +10 -25
  452. data/src/core/lib/security/util/json_util.h +10 -25
  453. data/src/core/lib/slice/b64.c +10 -25
  454. data/src/core/lib/slice/b64.h +10 -25
  455. data/src/core/lib/slice/percent_encoding.c +10 -25
  456. data/src/core/lib/slice/percent_encoding.h +10 -25
  457. data/src/core/lib/slice/slice.c +10 -25
  458. data/src/core/lib/slice/slice_buffer.c +10 -25
  459. data/src/core/lib/slice/slice_hash_table.c +48 -26
  460. data/src/core/lib/slice/slice_hash_table.h +26 -28
  461. data/src/core/lib/slice/slice_intern.c +10 -25
  462. data/src/core/lib/slice/slice_internal.h +10 -25
  463. data/src/core/lib/slice/slice_string_helpers.c +10 -25
  464. data/src/core/lib/slice/slice_string_helpers.h +10 -25
  465. data/src/core/lib/support/alloc.c +10 -25
  466. data/src/core/lib/support/arena.c +12 -27
  467. data/src/core/lib/support/arena.h +10 -25
  468. data/src/core/lib/support/atm.c +17 -32
  469. data/src/core/lib/support/atomic.h +10 -25
  470. data/src/core/lib/support/atomic_with_atm.h +10 -25
  471. data/src/core/lib/support/atomic_with_std.h +10 -25
  472. data/src/core/lib/support/avl.c +101 -101
  473. data/src/core/lib/support/backoff.c +10 -25
  474. data/src/core/lib/support/backoff.h +10 -25
  475. data/src/core/lib/support/block_annotate.h +10 -25
  476. data/src/core/lib/support/cmdline.c +10 -25
  477. data/src/core/lib/support/cpu_iphone.c +10 -25
  478. data/src/core/lib/support/cpu_linux.c +10 -25
  479. data/src/core/lib/support/cpu_posix.c +10 -25
  480. data/src/core/lib/support/cpu_windows.c +10 -25
  481. data/src/core/lib/support/env.h +16 -25
  482. data/src/core/lib/support/env_linux.c +30 -37
  483. data/src/core/lib/support/env_posix.c +15 -25
  484. data/src/core/lib/support/env_windows.c +15 -25
  485. data/src/core/lib/support/histogram.c +10 -25
  486. data/src/core/lib/support/host_port.c +10 -25
  487. data/src/core/lib/support/log.c +20 -29
  488. data/src/core/lib/support/log_android.c +10 -25
  489. data/src/core/lib/support/log_linux.c +13 -26
  490. data/src/core/lib/support/log_posix.c +10 -25
  491. data/src/core/lib/support/log_windows.c +10 -25
  492. data/src/core/lib/support/memory.h +10 -25
  493. data/src/core/lib/support/mpscq.c +11 -49
  494. data/src/core/lib/support/mpscq.h +11 -50
  495. data/src/core/lib/support/murmur_hash.c +12 -25
  496. data/src/core/lib/support/murmur_hash.h +10 -25
  497. data/src/core/lib/support/spinlock.h +10 -25
  498. data/src/core/lib/support/stack_lockfree.c +10 -25
  499. data/src/core/lib/support/stack_lockfree.h +10 -25
  500. data/src/core/lib/support/string.c +10 -25
  501. data/src/core/lib/support/string.h +10 -25
  502. data/src/core/lib/support/string_posix.c +10 -25
  503. data/src/core/lib/support/string_util_windows.c +10 -25
  504. data/src/core/lib/support/string_windows.c +10 -25
  505. data/src/core/lib/support/string_windows.h +10 -25
  506. data/src/core/lib/support/subprocess_posix.c +10 -25
  507. data/src/core/lib/support/subprocess_windows.c +10 -25
  508. data/src/core/lib/support/sync.c +10 -25
  509. data/src/core/lib/support/sync_posix.c +10 -25
  510. data/src/core/lib/support/sync_windows.c +10 -25
  511. data/src/core/lib/support/thd.c +10 -25
  512. data/src/core/lib/support/thd_internal.h +10 -25
  513. data/src/core/lib/support/thd_posix.c +10 -25
  514. data/src/core/lib/support/thd_windows.c +10 -25
  515. data/src/core/lib/support/time.c +10 -25
  516. data/src/core/lib/support/time_posix.c +10 -25
  517. data/src/core/lib/support/time_precise.c +18 -33
  518. data/src/core/lib/support/time_precise.h +10 -25
  519. data/src/core/lib/support/time_windows.c +10 -25
  520. data/src/core/lib/support/tls_pthread.c +10 -25
  521. data/src/core/lib/support/tmpfile.h +10 -25
  522. data/src/core/lib/support/tmpfile_msys.c +10 -25
  523. data/src/core/lib/support/tmpfile_posix.c +10 -25
  524. data/src/core/lib/support/tmpfile_windows.c +10 -25
  525. data/src/core/lib/support/wrap_memcpy.c +10 -25
  526. data/src/core/lib/surface/alarm.c +78 -35
  527. data/src/core/lib/surface/alarm_internal.h +40 -0
  528. data/src/core/lib/surface/api_trace.c +11 -26
  529. data/src/core/lib/surface/api_trace.h +10 -25
  530. data/src/core/lib/surface/byte_buffer.c +10 -25
  531. data/src/core/lib/surface/byte_buffer_reader.c +10 -25
  532. data/src/core/lib/surface/call.c +64 -84
  533. data/src/core/lib/surface/call.h +11 -26
  534. data/src/core/lib/surface/call_details.c +10 -25
  535. data/src/core/lib/surface/call_log_batch.c +10 -25
  536. data/src/core/lib/surface/call_test_only.h +10 -25
  537. data/src/core/lib/surface/channel.c +11 -26
  538. data/src/core/lib/surface/channel.h +11 -26
  539. data/src/core/lib/surface/channel_init.c +10 -25
  540. data/src/core/lib/surface/channel_init.h +10 -25
  541. data/src/core/lib/surface/channel_ping.c +12 -27
  542. data/src/core/lib/surface/channel_stack_type.c +10 -25
  543. data/src/core/lib/surface/channel_stack_type.h +10 -25
  544. data/src/core/lib/surface/completion_queue.c +442 -331
  545. data/src/core/lib/surface/completion_queue.h +16 -33
  546. data/src/core/lib/surface/completion_queue_factory.c +10 -25
  547. data/src/core/lib/surface/completion_queue_factory.h +10 -25
  548. data/src/core/lib/surface/event_string.c +10 -25
  549. data/src/core/lib/surface/event_string.h +10 -25
  550. data/src/core/lib/surface/init.c +38 -47
  551. data/src/core/lib/surface/init.h +10 -25
  552. data/src/core/lib/surface/init_secure.c +20 -27
  553. data/src/core/lib/surface/lame_client.cc +14 -29
  554. data/src/core/lib/surface/lame_client.h +10 -25
  555. data/src/core/lib/surface/metadata_array.c +10 -25
  556. data/src/core/lib/surface/server.c +128 -81
  557. data/src/core/lib/surface/server.h +10 -25
  558. data/src/core/lib/surface/validate_metadata.c +10 -25
  559. data/src/core/lib/surface/validate_metadata.h +10 -25
  560. data/src/core/lib/surface/version.c +11 -26
  561. data/src/core/lib/transport/bdp_estimator.c +19 -29
  562. data/src/core/lib/transport/bdp_estimator.h +16 -29
  563. data/src/core/lib/transport/byte_stream.c +127 -36
  564. data/src/core/lib/transport/byte_stream.h +88 -46
  565. data/src/core/lib/transport/connectivity_state.c +17 -31
  566. data/src/core/lib/transport/connectivity_state.h +10 -25
  567. data/src/core/lib/transport/error_utils.c +10 -25
  568. data/src/core/lib/transport/error_utils.h +10 -25
  569. data/src/core/lib/transport/http2_errors.h +10 -25
  570. data/src/core/lib/transport/metadata.c +87 -85
  571. data/src/core/lib/transport/metadata.h +15 -28
  572. data/src/core/lib/transport/metadata_batch.c +10 -25
  573. data/src/core/lib/transport/metadata_batch.h +10 -25
  574. data/src/core/lib/transport/pid_controller.c +10 -25
  575. data/src/core/lib/transport/pid_controller.h +10 -25
  576. data/src/core/lib/transport/service_config.c +11 -26
  577. data/src/core/lib/transport/service_config.h +10 -25
  578. data/src/core/lib/transport/static_metadata.c +12 -26
  579. data/src/core/lib/transport/static_metadata.h +10 -25
  580. data/src/core/lib/transport/status_conversion.c +10 -25
  581. data/src/core/lib/transport/status_conversion.h +10 -25
  582. data/src/core/lib/transport/timeout_encoding.c +10 -25
  583. data/src/core/lib/transport/timeout_encoding.h +10 -25
  584. data/src/core/lib/transport/transport.c +60 -53
  585. data/src/core/lib/transport/transport.h +36 -34
  586. data/src/core/lib/transport/transport_impl.h +10 -25
  587. data/src/core/lib/transport/transport_op_string.c +10 -28
  588. data/src/core/plugin_registry/grpc_plugin_registry.c +22 -25
  589. data/src/core/tsi/fake_transport_security.c +199 -94
  590. data/src/core/tsi/fake_transport_security.h +11 -26
  591. data/src/core/tsi/gts_transport_security.c +40 -0
  592. data/src/core/tsi/gts_transport_security.h +37 -0
  593. data/src/core/tsi/ssl_transport_security.c +13 -32
  594. data/src/core/tsi/ssl_transport_security.h +10 -25
  595. data/src/core/tsi/ssl_types.h +10 -25
  596. data/src/core/tsi/transport_security.c +48 -78
  597. data/src/core/tsi/transport_security.h +18 -27
  598. data/src/core/tsi/transport_security_adapter.c +17 -29
  599. data/src/core/tsi/transport_security_adapter.h +10 -25
  600. data/src/core/tsi/transport_security_grpc.c +64 -0
  601. data/src/core/tsi/transport_security_grpc.h +80 -0
  602. data/src/core/tsi/transport_security_interface.h +21 -27
  603. data/src/ruby/bin/apis/google/protobuf/empty.rb +10 -25
  604. data/src/ruby/bin/apis/pubsub_demo.rb +10 -25
  605. data/src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb +10 -25
  606. data/src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb +10 -25
  607. data/src/ruby/bin/math_client.rb +10 -25
  608. data/src/ruby/bin/math_server.rb +10 -25
  609. data/src/ruby/bin/math_services_pb.rb +10 -25
  610. data/src/ruby/bin/noproto_client.rb +10 -25
  611. data/src/ruby/bin/noproto_server.rb +10 -25
  612. data/src/ruby/ext/grpc/extconf.rb +10 -25
  613. data/src/ruby/ext/grpc/rb_byte_buffer.c +10 -25
  614. data/src/ruby/ext/grpc/rb_byte_buffer.h +10 -25
  615. data/src/ruby/ext/grpc/rb_call.c +44 -25
  616. data/src/ruby/ext/grpc/rb_call.h +10 -25
  617. data/src/ruby/ext/grpc/rb_call_credentials.c +10 -25
  618. data/src/ruby/ext/grpc/rb_call_credentials.h +10 -25
  619. data/src/ruby/ext/grpc/rb_channel.c +10 -25
  620. data/src/ruby/ext/grpc/rb_channel.h +10 -25
  621. data/src/ruby/ext/grpc/rb_channel_args.c +10 -25
  622. data/src/ruby/ext/grpc/rb_channel_args.h +10 -25
  623. data/src/ruby/ext/grpc/rb_channel_credentials.c +10 -25
  624. data/src/ruby/ext/grpc/rb_channel_credentials.h +10 -25
  625. data/src/ruby/ext/grpc/rb_completion_queue.c +10 -25
  626. data/src/ruby/ext/grpc/rb_completion_queue.h +10 -25
  627. data/src/ruby/ext/grpc/rb_compression_options.c +10 -25
  628. data/src/ruby/ext/grpc/rb_compression_options.h +10 -25
  629. data/src/ruby/ext/grpc/rb_event_thread.c +10 -25
  630. data/src/ruby/ext/grpc/rb_event_thread.h +10 -25
  631. data/src/ruby/ext/grpc/rb_grpc.c +10 -25
  632. data/src/ruby/ext/grpc/rb_grpc.h +10 -25
  633. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -25
  634. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +16 -31
  635. data/src/ruby/ext/grpc/rb_loader.c +10 -25
  636. data/src/ruby/ext/grpc/rb_loader.h +10 -25
  637. data/src/ruby/ext/grpc/rb_server.c +10 -25
  638. data/src/ruby/ext/grpc/rb_server.h +10 -25
  639. data/src/ruby/ext/grpc/rb_server_credentials.c +10 -25
  640. data/src/ruby/ext/grpc/rb_server_credentials.h +10 -25
  641. data/src/ruby/lib/grpc.rb +10 -25
  642. data/src/ruby/lib/grpc/core/time_consts.rb +10 -25
  643. data/src/ruby/lib/grpc/errors.rb +16 -30
  644. data/src/ruby/lib/grpc/generic/active_call.rb +25 -27
  645. data/src/ruby/lib/grpc/generic/bidi_call.rb +17 -27
  646. data/src/ruby/lib/grpc/generic/client_stub.rb +10 -25
  647. data/src/ruby/lib/grpc/generic/rpc_desc.rb +10 -25
  648. data/src/ruby/lib/grpc/generic/rpc_server.rb +10 -25
  649. data/src/ruby/lib/grpc/generic/service.rb +10 -25
  650. data/src/ruby/lib/grpc/grpc.rb +10 -25
  651. data/src/ruby/lib/grpc/logconfig.rb +10 -25
  652. data/src/ruby/lib/grpc/notifier.rb +10 -25
  653. data/src/ruby/lib/grpc/version.rb +11 -26
  654. data/src/ruby/pb/generate_proto_ruby.sh +10 -25
  655. data/src/ruby/pb/grpc/health/checker.rb +10 -25
  656. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +10 -25
  657. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +10 -25
  658. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +10 -25
  659. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +10 -25
  660. data/src/ruby/pb/test/client.rb +10 -25
  661. data/src/ruby/pb/test/server.rb +10 -25
  662. data/src/ruby/spec/call_credentials_spec.rb +10 -25
  663. data/src/ruby/spec/call_spec.rb +43 -25
  664. data/src/ruby/spec/channel_connection_spec.rb +10 -25
  665. data/src/ruby/spec/channel_credentials_spec.rb +11 -26
  666. data/src/ruby/spec/channel_spec.rb +10 -25
  667. data/src/ruby/spec/client_auth_spec.rb +10 -25
  668. data/src/ruby/spec/client_server_spec.rb +66 -25
  669. data/src/ruby/spec/compression_options_spec.rb +10 -25
  670. data/src/ruby/spec/error_sanity_spec.rb +10 -25
  671. data/src/ruby/spec/generic/active_call_spec.rb +10 -25
  672. data/src/ruby/spec/generic/client_stub_spec.rb +146 -35
  673. data/src/ruby/spec/generic/rpc_desc_spec.rb +10 -25
  674. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +10 -25
  675. data/src/ruby/spec/generic/rpc_server_spec.rb +124 -34
  676. data/src/ruby/spec/generic/service_spec.rb +10 -25
  677. data/src/ruby/spec/pb/duplicate/codegen_spec.rb +10 -25
  678. data/src/ruby/spec/pb/health/checker_spec.rb +10 -25
  679. data/src/ruby/spec/server_credentials_spec.rb +10 -25
  680. data/src/ruby/spec/server_spec.rb +10 -25
  681. data/src/ruby/spec/spec_helper.rb +10 -25
  682. data/src/ruby/spec/time_consts_spec.rb +10 -25
  683. data/third_party/boringssl/crypto/aes/key_wrap.c +138 -0
  684. data/third_party/boringssl/crypto/asn1/a_bitstr.c +6 -3
  685. data/third_party/boringssl/crypto/asn1/a_enum.c +4 -1
  686. data/third_party/boringssl/crypto/asn1/a_gentm.c +20 -15
  687. data/third_party/boringssl/crypto/asn1/a_int.c +7 -4
  688. data/third_party/boringssl/crypto/asn1/a_object.c +5 -2
  689. data/third_party/boringssl/crypto/asn1/a_time.c +0 -1
  690. data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -2
  691. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -2
  692. data/third_party/boringssl/crypto/asn1/asn1_locl.h +35 -0
  693. data/third_party/boringssl/crypto/asn1/tasn_dec.c +3 -1
  694. data/third_party/boringssl/crypto/asn1/tasn_enc.c +6 -3
  695. data/third_party/boringssl/crypto/asn1/tasn_new.c +12 -7
  696. data/third_party/boringssl/crypto/asn1/tasn_utl.c +22 -8
  697. data/third_party/boringssl/crypto/{time_support.c → asn1/time_support.c} +1 -1
  698. data/third_party/boringssl/crypto/asn1/x_long.c +5 -2
  699. data/third_party/boringssl/crypto/base64/base64.c +7 -5
  700. data/third_party/boringssl/crypto/bio/bio.c +24 -10
  701. data/third_party/boringssl/crypto/bio/bio_mem.c +12 -10
  702. data/third_party/boringssl/crypto/bio/connect.c +7 -18
  703. data/third_party/boringssl/crypto/bio/fd.c +3 -6
  704. data/third_party/boringssl/crypto/bio/file.c +6 -6
  705. data/third_party/boringssl/crypto/bio/hexdump.c +4 -2
  706. data/third_party/boringssl/crypto/bio/pair.c +30 -344
  707. data/third_party/boringssl/crypto/bio/socket.c +6 -7
  708. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -3
  709. data/third_party/boringssl/crypto/bn/add.c +1 -1
  710. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +11 -10
  711. data/third_party/boringssl/crypto/bn/bn.c +6 -20
  712. data/third_party/boringssl/crypto/bn/cmp.c +14 -0
  713. data/third_party/boringssl/crypto/bn/convert.c +73 -2
  714. data/third_party/boringssl/crypto/bn/ctx.c +3 -1
  715. data/third_party/boringssl/crypto/bn/div.c +108 -51
  716. data/third_party/boringssl/crypto/bn/exponentiation.c +15 -33
  717. data/third_party/boringssl/crypto/bn/gcd.c +29 -22
  718. data/third_party/boringssl/crypto/bn/generic.c +71 -67
  719. data/third_party/boringssl/crypto/bn/internal.h +19 -6
  720. data/third_party/boringssl/crypto/bn/kronecker.c +1 -0
  721. data/third_party/boringssl/crypto/bn/montgomery.c +9 -10
  722. data/third_party/boringssl/crypto/bn/montgomery_inv.c +47 -0
  723. data/third_party/boringssl/crypto/bn/mul.c +11 -9
  724. data/third_party/boringssl/crypto/bn/random.c +6 -3
  725. data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -65
  726. data/third_party/boringssl/crypto/bn/rsaz_exp.h +0 -3
  727. data/third_party/boringssl/crypto/bn/shift.c +9 -1
  728. data/third_party/boringssl/crypto/bn/sqrt.c +3 -1
  729. data/third_party/boringssl/crypto/buf/buf.c +6 -4
  730. data/third_party/boringssl/crypto/bytestring/asn1_compat.c +2 -1
  731. data/third_party/boringssl/crypto/bytestring/ber.c +2 -1
  732. data/third_party/boringssl/crypto/bytestring/cbb.c +9 -7
  733. data/third_party/boringssl/crypto/bytestring/cbs.c +54 -2
  734. data/third_party/boringssl/crypto/chacha/chacha.c +1 -1
  735. data/third_party/boringssl/crypto/cipher/aead.c +3 -3
  736. data/third_party/boringssl/crypto/cipher/cipher.c +18 -13
  737. data/third_party/boringssl/crypto/cipher/e_aes.c +335 -281
  738. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +113 -137
  739. data/third_party/boringssl/crypto/cipher/e_null.c +2 -1
  740. data/third_party/boringssl/crypto/cipher/e_rc2.c +54 -49
  741. data/third_party/boringssl/crypto/cipher/e_ssl3.c +4 -3
  742. data/third_party/boringssl/crypto/cipher/e_tls.c +5 -5
  743. data/third_party/boringssl/crypto/cipher/tls_cbc.c +41 -112
  744. data/third_party/boringssl/crypto/cmac/cmac.c +6 -4
  745. data/third_party/boringssl/crypto/conf/conf.c +6 -3
  746. data/third_party/boringssl/crypto/cpu-arm-linux.c +2 -2
  747. data/third_party/boringssl/crypto/curve25519/curve25519.c +28 -34
  748. data/third_party/boringssl/crypto/curve25519/spake25519.c +7 -6
  749. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +2 -1
  750. data/third_party/boringssl/crypto/des/des.c +1 -1
  751. data/third_party/boringssl/crypto/des/internal.h +58 -46
  752. data/third_party/boringssl/crypto/dh/dh.c +4 -8
  753. data/third_party/boringssl/crypto/digest/digest.c +5 -2
  754. data/third_party/boringssl/crypto/digest/digests.c +70 -33
  755. data/third_party/boringssl/crypto/digest/md32_common.h +39 -27
  756. data/third_party/boringssl/crypto/dsa/dsa.c +11 -19
  757. data/third_party/boringssl/crypto/ec/ec.c +1 -1
  758. data/third_party/boringssl/crypto/ec/ec_asn1.c +3 -2
  759. data/third_party/boringssl/crypto/ec/ec_key.c +1 -1
  760. data/third_party/boringssl/crypto/ec/ec_montgomery.c +6 -11
  761. data/third_party/boringssl/crypto/ec/oct.c +2 -14
  762. data/third_party/boringssl/crypto/ec/p224-64.c +78 -122
  763. data/third_party/boringssl/crypto/ec/p256-64.c +93 -133
  764. data/third_party/boringssl/crypto/ec/p256-x86_64.c +48 -61
  765. data/third_party/boringssl/crypto/ec/p256-x86_64.h +113 -0
  766. data/third_party/boringssl/crypto/ec/simple.c +2 -1
  767. data/third_party/boringssl/crypto/ec/wnaf.c +52 -43
  768. data/third_party/boringssl/crypto/ecdh/ecdh.c +4 -2
  769. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +17 -16
  770. data/third_party/boringssl/crypto/engine/engine.c +3 -1
  771. data/third_party/boringssl/crypto/err/err.c +5 -5
  772. data/third_party/boringssl/crypto/evp/evp.c +1 -1
  773. data/third_party/boringssl/crypto/evp/evp_asn1.c +1 -1
  774. data/third_party/boringssl/crypto/evp/evp_ctx.c +23 -29
  775. data/third_party/boringssl/crypto/evp/p_ec.c +2 -1
  776. data/third_party/boringssl/crypto/evp/p_rsa.c +9 -3
  777. data/third_party/boringssl/crypto/evp/pbkdf.c +3 -1
  778. data/third_party/boringssl/crypto/hkdf/hkdf.c +3 -1
  779. data/third_party/boringssl/crypto/hmac/hmac.c +4 -2
  780. data/third_party/boringssl/crypto/internal.h +81 -0
  781. data/third_party/boringssl/crypto/lhash/lhash.c +7 -13
  782. data/third_party/boringssl/crypto/md4/md4.c +20 -18
  783. data/third_party/boringssl/crypto/md5/md5.c +31 -21
  784. data/third_party/boringssl/crypto/mem.c +4 -10
  785. data/third_party/boringssl/crypto/modes/cbc.c +2 -6
  786. data/third_party/boringssl/crypto/modes/cfb.c +2 -2
  787. data/third_party/boringssl/crypto/modes/ctr.c +1 -1
  788. data/third_party/boringssl/crypto/modes/gcm.c +117 -334
  789. data/third_party/boringssl/crypto/modes/internal.h +107 -84
  790. data/third_party/boringssl/crypto/modes/ofb.c +3 -3
  791. data/third_party/boringssl/crypto/modes/polyval.c +94 -0
  792. data/third_party/boringssl/crypto/obj/obj.c +13 -8
  793. data/third_party/boringssl/crypto/obj/obj_dat.h +6109 -5187
  794. data/third_party/boringssl/crypto/obj/obj_xref.c +55 -57
  795. data/third_party/boringssl/crypto/pem/pem_lib.c +6 -3
  796. data/third_party/boringssl/crypto/pkcs8/internal.h +27 -8
  797. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +137 -352
  798. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +371 -364
  799. data/third_party/boringssl/crypto/poly1305/poly1305.c +12 -18
  800. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +2 -2
  801. data/third_party/boringssl/crypto/{newhope/reduce.c → pool/internal.h} +24 -21
  802. data/third_party/boringssl/crypto/pool/pool.c +200 -0
  803. data/third_party/boringssl/crypto/rand/deterministic.c +6 -5
  804. data/third_party/boringssl/crypto/rand/fuchsia.c +43 -0
  805. data/third_party/boringssl/crypto/rand/rand.c +7 -7
  806. data/third_party/boringssl/crypto/rand/urandom.c +136 -22
  807. data/third_party/boringssl/crypto/rand/windows.c +2 -2
  808. data/third_party/boringssl/crypto/rsa/blinding.c +2 -1
  809. data/third_party/boringssl/crypto/rsa/padding.c +11 -11
  810. data/third_party/boringssl/crypto/rsa/rsa.c +4 -4
  811. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +7 -1
  812. data/third_party/boringssl/crypto/rsa/rsa_impl.c +41 -80
  813. data/third_party/boringssl/crypto/sha/sha1-altivec.c +346 -0
  814. data/third_party/boringssl/crypto/sha/sha1.c +60 -42
  815. data/third_party/boringssl/crypto/sha/sha256.c +4 -2
  816. data/third_party/boringssl/crypto/sha/sha512.c +9 -7
  817. data/third_party/boringssl/crypto/stack/stack.c +10 -7
  818. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  819. data/third_party/boringssl/crypto/thread_win.c +2 -2
  820. data/third_party/boringssl/crypto/x509/a_verify.c +1 -1
  821. data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -1
  822. data/third_party/boringssl/crypto/x509/by_dir.c +1 -1
  823. data/third_party/boringssl/crypto/x509/t_x509.c +78 -38
  824. data/third_party/boringssl/crypto/x509/x509_cmp.c +8 -5
  825. data/third_party/boringssl/crypto/x509/x509_lu.c +6 -1
  826. data/third_party/boringssl/crypto/x509/x509_obj.c +4 -1
  827. data/third_party/boringssl/crypto/x509/x509_vfy.c +42 -8
  828. data/third_party/boringssl/crypto/x509/x509_vpm.c +8 -6
  829. data/third_party/boringssl/crypto/x509/x509name.c +4 -1
  830. data/third_party/boringssl/crypto/x509/x_crl.c +4 -2
  831. data/third_party/boringssl/crypto/x509/x_name.c +23 -13
  832. data/third_party/boringssl/crypto/x509/x_pkey.c +4 -1
  833. data/third_party/boringssl/crypto/x509/x_x509.c +42 -3
  834. data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
  835. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
  836. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +1 -1
  837. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +4 -1
  838. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +4 -1
  839. data/third_party/boringssl/crypto/x509v3/v3_pci.c +6 -3
  840. data/third_party/boringssl/crypto/x509v3/v3_purp.c +13 -21
  841. data/third_party/boringssl/crypto/x509v3/v3_utl.c +19 -33
  842. data/third_party/boringssl/include/openssl/aead.h +9 -20
  843. data/third_party/boringssl/include/openssl/aes.h +21 -9
  844. data/third_party/boringssl/include/openssl/asn1.h +9 -1
  845. data/third_party/boringssl/include/openssl/base.h +33 -6
  846. data/third_party/boringssl/include/openssl/bio.h +10 -103
  847. data/third_party/boringssl/include/openssl/bn.h +58 -42
  848. data/third_party/boringssl/include/openssl/bytestring.h +17 -0
  849. data/third_party/boringssl/include/openssl/cipher.h +4 -3
  850. data/third_party/boringssl/include/openssl/conf.h +4 -1
  851. data/third_party/boringssl/include/openssl/curve25519.h +13 -0
  852. data/third_party/boringssl/include/openssl/digest.h +5 -3
  853. data/third_party/boringssl/include/openssl/dsa.h +5 -5
  854. data/third_party/boringssl/include/openssl/ec.h +2 -2
  855. data/third_party/boringssl/include/openssl/ecdh.h +3 -4
  856. data/third_party/boringssl/include/openssl/ecdsa.h +10 -10
  857. data/third_party/boringssl/include/openssl/err.h +5 -5
  858. data/third_party/boringssl/include/openssl/evp.h +11 -7
  859. data/third_party/boringssl/include/openssl/lhash.h +2 -3
  860. data/third_party/boringssl/include/openssl/lhash_macros.h +56 -14
  861. data/third_party/boringssl/include/openssl/nid.h +2949 -2916
  862. data/third_party/boringssl/include/openssl/obj.h +1 -1
  863. data/third_party/boringssl/include/openssl/pkcs8.h +21 -42
  864. data/third_party/boringssl/include/openssl/pool.h +87 -0
  865. data/third_party/boringssl/include/openssl/rand.h +1 -1
  866. data/third_party/boringssl/include/openssl/rsa.h +4 -2
  867. data/third_party/boringssl/include/openssl/sha.h +0 -4
  868. data/third_party/boringssl/include/openssl/ssl.h +327 -662
  869. data/third_party/boringssl/include/openssl/ssl3.h +1 -21
  870. data/third_party/boringssl/include/openssl/stack.h +1 -0
  871. data/third_party/boringssl/include/openssl/stack_macros.h +85 -0
  872. data/third_party/boringssl/include/openssl/tls1.h +23 -52
  873. data/third_party/boringssl/include/openssl/type_check.h +4 -0
  874. data/third_party/boringssl/include/openssl/x509.h +10 -59
  875. data/third_party/boringssl/include/openssl/x509_vfy.h +7 -1
  876. data/third_party/boringssl/include/openssl/x509v3.h +4 -4
  877. data/third_party/boringssl/ssl/bio_ssl.c +175 -0
  878. data/third_party/boringssl/ssl/custom_extensions.c +24 -21
  879. data/third_party/boringssl/ssl/d1_both.c +259 -289
  880. data/third_party/boringssl/ssl/d1_lib.c +8 -20
  881. data/third_party/boringssl/ssl/d1_pkt.c +6 -15
  882. data/third_party/boringssl/ssl/dtls_method.c +22 -8
  883. data/third_party/boringssl/ssl/dtls_record.c +27 -2
  884. data/third_party/boringssl/ssl/handshake_client.c +460 -579
  885. data/third_party/boringssl/ssl/handshake_server.c +662 -644
  886. data/third_party/boringssl/ssl/internal.h +1009 -375
  887. data/third_party/boringssl/ssl/s3_both.c +312 -162
  888. data/third_party/boringssl/ssl/s3_lib.c +12 -128
  889. data/third_party/boringssl/ssl/s3_pkt.c +22 -30
  890. data/third_party/boringssl/ssl/ssl_aead_ctx.c +28 -22
  891. data/third_party/boringssl/ssl/ssl_asn1.c +210 -114
  892. data/third_party/boringssl/ssl/ssl_buffer.c +2 -1
  893. data/third_party/boringssl/ssl/ssl_cert.c +417 -219
  894. data/third_party/boringssl/ssl/ssl_cipher.c +191 -393
  895. data/third_party/boringssl/ssl/ssl_ecdh.c +19 -164
  896. data/third_party/boringssl/ssl/ssl_file.c +0 -11
  897. data/third_party/boringssl/ssl/ssl_lib.c +325 -652
  898. data/third_party/boringssl/ssl/{ssl_rsa.c → ssl_privkey.c} +21 -131
  899. data/third_party/boringssl/ssl/ssl_privkey_cc.cc +76 -0
  900. data/third_party/boringssl/ssl/ssl_session.c +206 -95
  901. data/third_party/boringssl/ssl/ssl_stat.c +18 -84
  902. data/third_party/boringssl/ssl/{s3_enc.c → ssl_transcript.c} +150 -157
  903. data/third_party/boringssl/ssl/ssl_x509.c +815 -0
  904. data/third_party/boringssl/ssl/t1_enc.c +188 -174
  905. data/third_party/boringssl/ssl/t1_lib.c +1064 -764
  906. data/third_party/boringssl/ssl/tls13_both.c +290 -96
  907. data/third_party/boringssl/ssl/tls13_client.c +344 -314
  908. data/third_party/boringssl/ssl/tls13_enc.c +239 -200
  909. data/third_party/boringssl/ssl/tls13_server.c +374 -366
  910. data/third_party/boringssl/ssl/tls_method.c +40 -5
  911. data/third_party/boringssl/ssl/tls_record.c +166 -71
  912. metadata +39 -25
  913. data/src/core/lib/iomgr/workqueue.h +0 -87
  914. data/src/core/lib/iomgr/workqueue_uv.c +0 -65
  915. data/src/core/lib/iomgr/workqueue_uv.h +0 -37
  916. data/src/core/lib/iomgr/workqueue_windows.c +0 -63
  917. data/src/core/lib/iomgr/workqueue_windows.h +0 -37
  918. data/third_party/boringssl/crypto/bio/buffer.c +0 -496
  919. data/third_party/boringssl/crypto/newhope/error_correction.c +0 -131
  920. data/third_party/boringssl/crypto/newhope/internal.h +0 -71
  921. data/third_party/boringssl/crypto/newhope/newhope.c +0 -174
  922. data/third_party/boringssl/crypto/newhope/ntt.c +0 -148
  923. data/third_party/boringssl/crypto/newhope/poly.c +0 -183
  924. data/third_party/boringssl/crypto/newhope/precomp.c +0 -306
  925. data/third_party/boringssl/crypto/obj/obj_xref.h +0 -96
  926. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +0 -151
  927. data/third_party/boringssl/include/openssl/newhope.h +0 -158
  928. data/third_party/boringssl/include/openssl/time_support.h +0 -91
@@ -1,50 +1,32 @@
1
1
  /*
2
2
  *
3
- * Copyright 2016, Google Inc.
4
- * All rights reserved.
3
+ * Copyright 2016 gRPC authors.
5
4
  *
6
- * Redistribution and use in source and binary forms, with or without
7
- * modification, are permitted provided that the following conditions are
8
- * met:
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
9
8
  *
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.
9
+ * http://www.apache.org/licenses/LICENSE-2.0
19
10
  *
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.
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
31
16
  *
32
17
  */
33
18
 
34
19
  #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H
35
20
  #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H
36
21
 
37
- #include "src/core/ext/filters/client_channel/connector.h"
38
22
  #include "src/core/ext/filters/client_channel/subchannel.h"
39
23
 
40
24
  /** \file Provides an index of active subchannels so that they can be
41
25
  shared amongst channels */
42
26
 
43
- typedef struct grpc_subchannel_key grpc_subchannel_key;
44
-
45
27
  /** Create a key that can be used to uniquely identify a subchannel */
46
28
  grpc_subchannel_key *grpc_subchannel_key_create(
47
- grpc_connector *con, const grpc_subchannel_args *args);
29
+ const grpc_subchannel_args *args);
48
30
 
49
31
  /** Destroy a subchannel key */
50
32
  void grpc_subchannel_key_destroy(grpc_exec_ctx *exec_ctx,
@@ -69,9 +51,24 @@ void grpc_subchannel_index_unregister(grpc_exec_ctx *exec_ctx,
69
51
  grpc_subchannel_key *key,
70
52
  grpc_subchannel *constructed);
71
53
 
54
+ int grpc_subchannel_key_compare(const grpc_subchannel_key *a,
55
+ const grpc_subchannel_key *b);
56
+
72
57
  /** Initialize the subchannel index (global) */
73
58
  void grpc_subchannel_index_init(void);
74
59
  /** Shutdown the subchannel index (global) */
75
60
  void grpc_subchannel_index_shutdown(void);
76
61
 
62
+ /** \em TEST ONLY.
63
+ * If \a force_creation is true, all key comparisons will be false, resulting in
64
+ * new subchannels always being created. Otherwise, the keys will be compared as
65
+ * usual.
66
+ *
67
+ * This function is *not* threadsafe on purpose: it should *only* be used in
68
+ * test code.
69
+ *
70
+ * Tests using this function \em MUST run tests with and without \a
71
+ * force_creation set. */
72
+ void grpc_subchannel_index_test_only_set_force_creation(bool force_creation);
73
+
77
74
  #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H */
@@ -1,33 +1,18 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
4
- * All rights reserved.
3
+ * Copyright 2015 gRPC authors.
5
4
  *
6
- * Redistribution and use in source and binary forms, with or without
7
- * modification, are permitted provided that the following conditions are
8
- * met:
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
9
8
  *
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.
9
+ * http://www.apache.org/licenses/LICENSE-2.0
19
10
  *
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.
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
31
16
  *
32
17
  */
33
18
 
@@ -1,33 +1,18 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
4
- * All rights reserved.
3
+ * Copyright 2015 gRPC authors.
5
4
  *
6
- * Redistribution and use in source and binary forms, with or without
7
- * modification, are permitted provided that the following conditions are
8
- * met:
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
9
8
  *
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.
9
+ * http://www.apache.org/licenses/LICENSE-2.0
19
10
  *
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.
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
31
16
  *
32
17
  */
33
18
 
@@ -1,32 +1,17 @@
1
1
  //
2
- // Copyright 2016, Google Inc.
3
- // All rights reserved.
2
+ // Copyright 2016 gRPC authors.
4
3
  //
5
- // Redistribution and use in source and binary forms, with or without
6
- // modification, are permitted provided that the following conditions are
7
- // met:
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
8
7
  //
9
- // * Redistributions of source code must retain the above copyright
10
- // notice, this list of conditions and the following disclaimer.
11
- // * Redistributions in binary form must reproduce the above
12
- // copyright notice, this list of conditions and the following disclaimer
13
- // in the documentation and/or other materials provided with the
14
- // distribution.
15
- // * Neither the name of Google Inc. nor the names of its
16
- // contributors may be used to endorse or promote products derived from
17
- // this software without specific prior written permission.
8
+ // http://www.apache.org/licenses/LICENSE-2.0
18
9
  //
19
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
30
15
  //
31
16
 
32
17
  #include "src/core/ext/filters/deadline/deadline_filter.h"
@@ -52,8 +37,8 @@
52
37
  // Timer callback.
53
38
  static void timer_callback(grpc_exec_ctx* exec_ctx, void* arg,
54
39
  grpc_error* error) {
55
- grpc_call_element* elem = arg;
56
- grpc_deadline_state* deadline_state = elem->call_data;
40
+ grpc_call_element* elem = (grpc_call_element*)arg;
41
+ grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
57
42
  if (error != GRPC_ERROR_CANCELLED) {
58
43
  grpc_call_element_signal_error(
59
44
  exec_ctx, elem,
@@ -72,7 +57,7 @@ static void start_timer_if_needed(grpc_exec_ctx* exec_ctx,
72
57
  if (gpr_time_cmp(deadline, gpr_inf_future(GPR_CLOCK_MONOTONIC)) == 0) {
73
58
  return;
74
59
  }
75
- grpc_deadline_state* deadline_state = elem->call_data;
60
+ grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
76
61
  grpc_deadline_timer_state cur_state;
77
62
  grpc_closure* closure = NULL;
78
63
  retry:
@@ -89,7 +74,7 @@ retry:
89
74
  // If we've already created and destroyed a timer, we always create a
90
75
  // new closure: we have no other guarantee that the inlined closure is
91
76
  // not in use (it may hold a pending call to timer_callback)
92
- closure = grpc_closure_create(timer_callback, elem,
77
+ closure = GRPC_CLOSURE_CREATE(timer_callback, elem,
93
78
  grpc_schedule_on_exec_ctx);
94
79
  } else {
95
80
  goto retry;
@@ -100,7 +85,7 @@ retry:
100
85
  GRPC_DEADLINE_STATE_INITIAL,
101
86
  GRPC_DEADLINE_STATE_PENDING)) {
102
87
  closure =
103
- grpc_closure_init(&deadline_state->timer_callback, timer_callback,
88
+ GRPC_CLOSURE_INIT(&deadline_state->timer_callback, timer_callback,
104
89
  elem, grpc_schedule_on_exec_ctx);
105
90
  } else {
106
91
  goto retry;
@@ -127,10 +112,10 @@ static void cancel_timer_if_needed(grpc_exec_ctx* exec_ctx,
127
112
 
128
113
  // Callback run when the call is complete.
129
114
  static void on_complete(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
130
- grpc_deadline_state* deadline_state = arg;
115
+ grpc_deadline_state* deadline_state = (grpc_deadline_state*)arg;
131
116
  cancel_timer_if_needed(exec_ctx, deadline_state);
132
117
  // Invoke the next callback.
133
- grpc_closure_run(exec_ctx, deadline_state->next_on_complete,
118
+ GRPC_CLOSURE_RUN(exec_ctx, deadline_state->next_on_complete,
134
119
  GRPC_ERROR_REF(error));
135
120
  }
136
121
 
@@ -138,7 +123,7 @@ static void on_complete(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
138
123
  static void inject_on_complete_cb(grpc_deadline_state* deadline_state,
139
124
  grpc_transport_stream_op_batch* op) {
140
125
  deadline_state->next_on_complete = op->on_complete;
141
- grpc_closure_init(&deadline_state->on_complete, on_complete, deadline_state,
126
+ GRPC_CLOSURE_INIT(&deadline_state->on_complete, on_complete, deadline_state,
142
127
  grpc_schedule_on_exec_ctx);
143
128
  op->on_complete = &deadline_state->on_complete;
144
129
  }
@@ -160,7 +145,7 @@ static void start_timer_after_init(grpc_exec_ctx* exec_ctx, void* arg,
160
145
  void grpc_deadline_state_init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
161
146
  grpc_call_stack* call_stack,
162
147
  gpr_timespec deadline) {
163
- grpc_deadline_state* deadline_state = elem->call_data;
148
+ grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
164
149
  deadline_state->call_stack = call_stack;
165
150
  // Deadline will always be infinite on servers, so the timer will only be
166
151
  // set on clients with a finite deadline.
@@ -176,21 +161,21 @@ void grpc_deadline_state_init(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
176
161
  struct start_timer_after_init_state* state = gpr_malloc(sizeof(*state));
177
162
  state->elem = elem;
178
163
  state->deadline = deadline;
179
- grpc_closure_init(&state->closure, start_timer_after_init, state,
164
+ GRPC_CLOSURE_INIT(&state->closure, start_timer_after_init, state,
180
165
  grpc_schedule_on_exec_ctx);
181
- grpc_closure_sched(exec_ctx, &state->closure, GRPC_ERROR_NONE);
166
+ GRPC_CLOSURE_SCHED(exec_ctx, &state->closure, GRPC_ERROR_NONE);
182
167
  }
183
168
  }
184
169
 
185
170
  void grpc_deadline_state_destroy(grpc_exec_ctx* exec_ctx,
186
171
  grpc_call_element* elem) {
187
- grpc_deadline_state* deadline_state = elem->call_data;
172
+ grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
188
173
  cancel_timer_if_needed(exec_ctx, deadline_state);
189
174
  }
190
175
 
191
176
  void grpc_deadline_state_reset(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
192
177
  gpr_timespec new_deadline) {
193
- grpc_deadline_state* deadline_state = elem->call_data;
178
+ grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
194
179
  cancel_timer_if_needed(exec_ctx, deadline_state);
195
180
  start_timer_if_needed(exec_ctx, elem, new_deadline);
196
181
  }
@@ -198,7 +183,7 @@ void grpc_deadline_state_reset(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
198
183
  void grpc_deadline_state_client_start_transport_stream_op_batch(
199
184
  grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
200
185
  grpc_transport_stream_op_batch* op) {
201
- grpc_deadline_state* deadline_state = elem->call_data;
186
+ grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
202
187
  if (op->cancel_stream) {
203
188
  cancel_timer_if_needed(exec_ctx, deadline_state);
204
189
  } else {
@@ -271,8 +256,8 @@ static void client_start_transport_stream_op_batch(
271
256
  // Callback for receiving initial metadata on the server.
272
257
  static void recv_initial_metadata_ready(grpc_exec_ctx* exec_ctx, void* arg,
273
258
  grpc_error* error) {
274
- grpc_call_element* elem = arg;
275
- server_call_data* calld = elem->call_data;
259
+ grpc_call_element* elem = (grpc_call_element*)arg;
260
+ server_call_data* calld = (server_call_data*)elem->call_data;
276
261
  // Get deadline from metadata and start the timer if needed.
277
262
  start_timer_if_needed(exec_ctx, elem, calld->recv_initial_metadata->deadline);
278
263
  // Invoke the next callback.
@@ -284,7 +269,7 @@ static void recv_initial_metadata_ready(grpc_exec_ctx* exec_ctx, void* arg,
284
269
  static void server_start_transport_stream_op_batch(
285
270
  grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
286
271
  grpc_transport_stream_op_batch* op) {
287
- server_call_data* calld = elem->call_data;
272
+ server_call_data* calld = (server_call_data*)elem->call_data;
288
273
  if (op->cancel_stream) {
289
274
  cancel_timer_if_needed(exec_ctx, &calld->base.deadline_state);
290
275
  } else {
@@ -296,7 +281,7 @@ static void server_start_transport_stream_op_batch(
296
281
  op->payload->recv_initial_metadata.recv_initial_metadata_ready;
297
282
  calld->recv_initial_metadata =
298
283
  op->payload->recv_initial_metadata.recv_initial_metadata;
299
- grpc_closure_init(&calld->recv_initial_metadata_ready,
284
+ GRPC_CLOSURE_INIT(&calld->recv_initial_metadata_ready,
300
285
  recv_initial_metadata_ready, elem,
301
286
  grpc_schedule_on_exec_ctx);
302
287
  op->payload->recv_initial_metadata.recv_initial_metadata_ready =
@@ -356,8 +341,8 @@ static bool maybe_add_deadline_filter(grpc_exec_ctx* exec_ctx,
356
341
  void* arg) {
357
342
  return grpc_deadline_checking_enabled(
358
343
  grpc_channel_stack_builder_get_channel_arguments(builder))
359
- ? grpc_channel_stack_builder_prepend_filter(builder, arg, NULL,
360
- NULL)
344
+ ? grpc_channel_stack_builder_prepend_filter(
345
+ builder, (const grpc_channel_filter*)arg, NULL, NULL)
361
346
  : true;
362
347
  }
363
348
 
@@ -1,32 +1,17 @@
1
1
  //
2
- // Copyright 2016, Google Inc.
3
- // All rights reserved.
2
+ // Copyright 2016 gRPC authors.
4
3
  //
5
- // Redistribution and use in source and binary forms, with or without
6
- // modification, are permitted provided that the following conditions are
7
- // met:
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
8
7
  //
9
- // * Redistributions of source code must retain the above copyright
10
- // notice, this list of conditions and the following disclaimer.
11
- // * Redistributions in binary form must reproduce the above
12
- // copyright notice, this list of conditions and the following disclaimer
13
- // in the documentation and/or other materials provided with the
14
- // distribution.
15
- // * Neither the name of Google Inc. nor the names of its
16
- // contributors may be used to endorse or promote products derived from
17
- // this software without specific prior written permission.
8
+ // http://www.apache.org/licenses/LICENSE-2.0
18
9
  //
19
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
30
15
  //
31
16
 
32
17
  #ifndef GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
@@ -1,32 +1,17 @@
1
1
  /*
2
- * Copyright 2015, Google Inc.
3
- * All rights reserved.
2
+ * Copyright 2015 gRPC authors.
4
3
  *
5
- * Redistribution and use in source and binary forms, with or without
6
- * modification, are permitted provided that the following conditions are
7
- * met:
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
8
7
  *
9
- * * Redistributions of source code must retain the above copyright
10
- * notice, this list of conditions and the following disclaimer.
11
- * * Redistributions in binary form must reproduce the above
12
- * copyright notice, this list of conditions and the following disclaimer
13
- * in the documentation and/or other materials provided with the
14
- * distribution.
15
- * * Neither the name of Google Inc. nor the names of its
16
- * contributors may be used to endorse or promote products derived from
17
- * this software without specific prior written permission.
8
+ * http://www.apache.org/licenses/LICENSE-2.0
18
9
  *
19
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
30
15
  *
31
16
  */
32
17
 
@@ -51,41 +36,29 @@
51
36
  static const size_t kMaxPayloadSizeForGet = 2048;
52
37
 
53
38
  typedef struct call_data {
39
+ // State for handling send_initial_metadata ops.
54
40
  grpc_linked_mdelem method;
55
41
  grpc_linked_mdelem scheme;
56
42
  grpc_linked_mdelem authority;
57
43
  grpc_linked_mdelem te_trailers;
58
44
  grpc_linked_mdelem content_type;
59
45
  grpc_linked_mdelem user_agent;
60
-
46
+ // State for handling recv_initial_metadata ops.
61
47
  grpc_metadata_batch *recv_initial_metadata;
48
+ grpc_closure *original_recv_initial_metadata_ready;
49
+ grpc_closure recv_initial_metadata_ready;
50
+ // State for handling recv_trailing_metadata ops.
62
51
  grpc_metadata_batch *recv_trailing_metadata;
63
- uint8_t *payload_bytes;
64
-
65
- /* Vars to read data off of send_message */
66
- grpc_transport_stream_op_batch *send_op;
67
- uint32_t send_length;
68
- uint32_t send_flags;
69
- grpc_slice incoming_slice;
70
- grpc_slice_buffer_stream replacement_stream;
71
- grpc_slice_buffer slices;
72
- /* flag that indicates that all slices of send_messages aren't availble */
73
- bool send_message_blocked;
74
-
75
- /** Closure to call when finished with the hc_on_recv hook */
76
- grpc_closure *on_done_recv_initial_metadata;
77
- grpc_closure *on_done_recv_trailing_metadata;
78
- grpc_closure *on_complete;
79
- grpc_closure *post_send;
80
-
81
- /** Receive closures are chained: we inject this closure as the on_done_recv
82
- up-call on transport_op, and remember to call our on_done_recv member
83
- after handling it. */
84
- grpc_closure hc_on_recv_initial_metadata;
85
- grpc_closure hc_on_recv_trailing_metadata;
86
- grpc_closure hc_on_complete;
87
- grpc_closure got_slice;
88
- grpc_closure send_done;
52
+ grpc_closure *original_recv_trailing_metadata_on_complete;
53
+ grpc_closure recv_trailing_metadata_on_complete;
54
+ // State for handling send_message ops.
55
+ grpc_transport_stream_op_batch *send_message_batch;
56
+ size_t send_message_bytes_read;
57
+ grpc_byte_stream_cache send_message_cache;
58
+ grpc_caching_byte_stream send_message_caching_stream;
59
+ grpc_closure on_send_message_next_done;
60
+ grpc_closure *original_send_message_on_complete;
61
+ grpc_closure send_message_on_complete;
89
62
  } call_data;
90
63
 
91
64
  typedef struct channel_data {
@@ -163,7 +136,7 @@ static grpc_error *client_filter_incoming_metadata(grpc_exec_ctx *exec_ctx,
163
136
  return GRPC_ERROR_NONE;
164
137
  }
165
138
 
166
- static void hc_on_recv_initial_metadata(grpc_exec_ctx *exec_ctx,
139
+ static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx,
167
140
  void *user_data, grpc_error *error) {
168
141
  grpc_call_element *elem = user_data;
169
142
  call_data *calld = elem->call_data;
@@ -173,11 +146,13 @@ static void hc_on_recv_initial_metadata(grpc_exec_ctx *exec_ctx,
173
146
  } else {
174
147
  GRPC_ERROR_REF(error);
175
148
  }
176
- grpc_closure_run(exec_ctx, calld->on_done_recv_initial_metadata, error);
149
+ GRPC_CLOSURE_RUN(exec_ctx, calld->original_recv_initial_metadata_ready,
150
+ error);
177
151
  }
178
152
 
179
- static void hc_on_recv_trailing_metadata(grpc_exec_ctx *exec_ctx,
180
- void *user_data, grpc_error *error) {
153
+ static void recv_trailing_metadata_on_complete(grpc_exec_ctx *exec_ctx,
154
+ void *user_data,
155
+ grpc_error *error) {
181
156
  grpc_call_element *elem = user_data;
182
157
  call_data *calld = elem->call_data;
183
158
  if (error == GRPC_ERROR_NONE) {
@@ -186,25 +161,131 @@ static void hc_on_recv_trailing_metadata(grpc_exec_ctx *exec_ctx,
186
161
  } else {
187
162
  GRPC_ERROR_REF(error);
188
163
  }
189
- grpc_closure_run(exec_ctx, calld->on_done_recv_trailing_metadata, error);
164
+ GRPC_CLOSURE_RUN(exec_ctx, calld->original_recv_trailing_metadata_on_complete,
165
+ error);
190
166
  }
191
167
 
192
- static void hc_on_complete(grpc_exec_ctx *exec_ctx, void *user_data,
193
- grpc_error *error) {
194
- grpc_call_element *elem = user_data;
195
- call_data *calld = elem->call_data;
196
- if (calld->payload_bytes) {
197
- gpr_free(calld->payload_bytes);
198
- calld->payload_bytes = NULL;
168
+ static void send_message_on_complete(grpc_exec_ctx *exec_ctx, void *arg,
169
+ grpc_error *error) {
170
+ grpc_call_element *elem = (grpc_call_element *)arg;
171
+ call_data *calld = (call_data *)elem->call_data;
172
+ grpc_byte_stream_cache_destroy(exec_ctx, &calld->send_message_cache);
173
+ GRPC_CLOSURE_RUN(exec_ctx, calld->original_send_message_on_complete,
174
+ GRPC_ERROR_REF(error));
175
+ }
176
+
177
+ // Pulls a slice from the send_message byte stream, updating
178
+ // calld->send_message_bytes_read.
179
+ static grpc_error *pull_slice_from_send_message(grpc_exec_ctx *exec_ctx,
180
+ call_data *calld) {
181
+ grpc_slice incoming_slice;
182
+ grpc_error *error = grpc_byte_stream_pull(
183
+ exec_ctx, &calld->send_message_caching_stream.base, &incoming_slice);
184
+ if (error == GRPC_ERROR_NONE) {
185
+ calld->send_message_bytes_read += GRPC_SLICE_LENGTH(incoming_slice);
186
+ grpc_slice_unref_internal(exec_ctx, incoming_slice);
199
187
  }
200
- calld->on_complete->cb(exec_ctx, calld->on_complete->cb_arg, error);
188
+ return error;
201
189
  }
202
190
 
203
- static void send_done(grpc_exec_ctx *exec_ctx, void *elemp, grpc_error *error) {
204
- grpc_call_element *elem = elemp;
205
- call_data *calld = elem->call_data;
206
- grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &calld->slices);
207
- calld->post_send->cb(exec_ctx, calld->post_send->cb_arg, error);
191
+ // Reads as many slices as possible from the send_message byte stream.
192
+ // Upon successful return, if calld->send_message_bytes_read ==
193
+ // calld->send_message_caching_stream.base.length, then we have completed
194
+ // reading from the byte stream; otherwise, an async read has been dispatched
195
+ // and on_send_message_next_done() will be invoked when it is complete.
196
+ static grpc_error *read_all_available_send_message_data(grpc_exec_ctx *exec_ctx,
197
+ call_data *calld) {
198
+ while (grpc_byte_stream_next(exec_ctx,
199
+ &calld->send_message_caching_stream.base,
200
+ ~(size_t)0, &calld->on_send_message_next_done)) {
201
+ grpc_error *error = pull_slice_from_send_message(exec_ctx, calld);
202
+ if (error != GRPC_ERROR_NONE) return error;
203
+ if (calld->send_message_bytes_read ==
204
+ calld->send_message_caching_stream.base.length) {
205
+ break;
206
+ }
207
+ }
208
+ return GRPC_ERROR_NONE;
209
+ }
210
+
211
+ // Async callback for grpc_byte_stream_next().
212
+ static void on_send_message_next_done(grpc_exec_ctx *exec_ctx, void *arg,
213
+ grpc_error *error) {
214
+ grpc_call_element *elem = (grpc_call_element *)arg;
215
+ call_data *calld = (call_data *)elem->call_data;
216
+ if (error != GRPC_ERROR_NONE) {
217
+ grpc_transport_stream_op_batch_finish_with_failure(
218
+ exec_ctx, calld->send_message_batch, error);
219
+ return;
220
+ }
221
+ error = pull_slice_from_send_message(exec_ctx, calld);
222
+ if (error != GRPC_ERROR_NONE) {
223
+ grpc_transport_stream_op_batch_finish_with_failure(
224
+ exec_ctx, calld->send_message_batch, error);
225
+ return;
226
+ }
227
+ // There may or may not be more to read, but we don't care. If we got
228
+ // here, then we know that all of the data was not available
229
+ // synchronously, so we were not able to do a cached call. Instead,
230
+ // we just reset the byte stream and then send down the batch as-is.
231
+ grpc_caching_byte_stream_reset(&calld->send_message_caching_stream);
232
+ grpc_call_next_op(exec_ctx, elem, calld->send_message_batch);
233
+ }
234
+
235
+ static char *slice_buffer_to_string(grpc_slice_buffer *slice_buffer) {
236
+ char *payload_bytes = gpr_malloc(slice_buffer->length + 1);
237
+ size_t offset = 0;
238
+ for (size_t i = 0; i < slice_buffer->count; ++i) {
239
+ memcpy(payload_bytes + offset,
240
+ GRPC_SLICE_START_PTR(slice_buffer->slices[i]),
241
+ GRPC_SLICE_LENGTH(slice_buffer->slices[i]));
242
+ offset += GRPC_SLICE_LENGTH(slice_buffer->slices[i]);
243
+ }
244
+ *(payload_bytes + offset) = '\0';
245
+ return payload_bytes;
246
+ }
247
+
248
+ // Modifies the path entry in the batch's send_initial_metadata to
249
+ // append the base64-encoded query for a GET request.
250
+ static grpc_error *update_path_for_get(grpc_exec_ctx *exec_ctx,
251
+ grpc_call_element *elem,
252
+ grpc_transport_stream_op_batch *batch) {
253
+ call_data *calld = (call_data *)elem->call_data;
254
+ grpc_slice path_slice =
255
+ GRPC_MDVALUE(batch->payload->send_initial_metadata.send_initial_metadata
256
+ ->idx.named.path->md);
257
+ /* sum up individual component's lengths and allocate enough memory to
258
+ * hold combined path+query */
259
+ size_t estimated_len = GRPC_SLICE_LENGTH(path_slice);
260
+ estimated_len++; /* for the '?' */
261
+ estimated_len += grpc_base64_estimate_encoded_size(
262
+ batch->payload->send_message.send_message->length, true /* url_safe */,
263
+ false /* multi_line */);
264
+ grpc_slice path_with_query_slice = GRPC_SLICE_MALLOC(estimated_len);
265
+ /* memcopy individual pieces into this slice */
266
+ char *write_ptr = (char *)GRPC_SLICE_START_PTR(path_with_query_slice);
267
+ char *original_path = (char *)GRPC_SLICE_START_PTR(path_slice);
268
+ memcpy(write_ptr, original_path, GRPC_SLICE_LENGTH(path_slice));
269
+ write_ptr += GRPC_SLICE_LENGTH(path_slice);
270
+ *write_ptr++ = '?';
271
+ char *payload_bytes =
272
+ slice_buffer_to_string(&calld->send_message_cache.cache_buffer);
273
+ grpc_base64_encode_core((char *)write_ptr, payload_bytes,
274
+ batch->payload->send_message.send_message->length,
275
+ true /* url_safe */, false /* multi_line */);
276
+ gpr_free(payload_bytes);
277
+ /* remove trailing unused memory and add trailing 0 to terminate string */
278
+ char *t = (char *)GRPC_SLICE_START_PTR(path_with_query_slice);
279
+ /* safe to use strlen since base64_encode will always add '\0' */
280
+ path_with_query_slice =
281
+ grpc_slice_sub_no_ref(path_with_query_slice, 0, strlen(t));
282
+ /* substitute previous path with the new path+query */
283
+ grpc_mdelem mdelem_path_and_query =
284
+ grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_PATH, path_with_query_slice);
285
+ grpc_metadata_batch *b =
286
+ batch->payload->send_initial_metadata.send_initial_metadata;
287
+ return grpc_metadata_batch_substitute(exec_ctx, b, b->idx.named.path,
288
+ mdelem_path_and_query);
208
289
  }
209
290
 
210
291
  static void remove_if_present(grpc_exec_ctx *exec_ctx,
@@ -215,273 +296,153 @@ static void remove_if_present(grpc_exec_ctx *exec_ctx,
215
296
  }
216
297
  }
217
298
 
218
- static void continue_send_message(grpc_exec_ctx *exec_ctx,
219
- grpc_call_element *elem) {
299
+ static void hc_start_transport_stream_op_batch(
300
+ grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
301
+ grpc_transport_stream_op_batch *batch) {
220
302
  call_data *calld = elem->call_data;
221
- uint8_t *wrptr = calld->payload_bytes;
222
- while (grpc_byte_stream_next(
223
- exec_ctx, calld->send_op->payload->send_message.send_message, ~(size_t)0,
224
- &calld->got_slice)) {
225
- grpc_byte_stream_pull(exec_ctx,
226
- calld->send_op->payload->send_message.send_message,
227
- &calld->incoming_slice);
228
- if (GRPC_SLICE_LENGTH(calld->incoming_slice) > 0) {
229
- memcpy(wrptr, GRPC_SLICE_START_PTR(calld->incoming_slice),
230
- GRPC_SLICE_LENGTH(calld->incoming_slice));
231
- }
232
- wrptr += GRPC_SLICE_LENGTH(calld->incoming_slice);
233
- grpc_slice_buffer_add(&calld->slices, calld->incoming_slice);
234
- if (calld->send_length == calld->slices.length) {
235
- calld->send_message_blocked = false;
236
- break;
237
- }
238
- }
239
- }
303
+ channel_data *channeld = elem->channel_data;
304
+ GPR_TIMER_BEGIN("hc_start_transport_stream_op_batch", 0);
305
+ GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
240
306
 
241
- static void got_slice(grpc_exec_ctx *exec_ctx, void *elemp, grpc_error *error) {
242
- grpc_call_element *elem = elemp;
243
- call_data *calld = elem->call_data;
244
- calld->send_message_blocked = false;
245
- if (GRPC_ERROR_NONE !=
246
- grpc_byte_stream_pull(exec_ctx,
247
- calld->send_op->payload->send_message.send_message,
248
- &calld->incoming_slice)) {
249
- /* Should never reach here */
250
- abort();
251
- }
252
- grpc_slice_buffer_add(&calld->slices, calld->incoming_slice);
253
- if (calld->send_length == calld->slices.length) {
254
- /* Pass down the original send_message op that was blocked.*/
255
- grpc_slice_buffer_stream_init(&calld->replacement_stream, &calld->slices,
256
- calld->send_flags);
257
- calld->send_op->payload->send_message.send_message =
258
- &calld->replacement_stream.base;
259
- calld->post_send = calld->send_op->on_complete;
260
- calld->send_op->on_complete = &calld->send_done;
261
- grpc_call_next_op(exec_ctx, elem, calld->send_op);
262
- } else {
263
- continue_send_message(exec_ctx, elem);
307
+ if (batch->recv_initial_metadata) {
308
+ /* substitute our callback for the higher callback */
309
+ calld->recv_initial_metadata =
310
+ batch->payload->recv_initial_metadata.recv_initial_metadata;
311
+ calld->original_recv_initial_metadata_ready =
312
+ batch->payload->recv_initial_metadata.recv_initial_metadata_ready;
313
+ batch->payload->recv_initial_metadata.recv_initial_metadata_ready =
314
+ &calld->recv_initial_metadata_ready;
264
315
  }
265
- }
266
316
 
267
- static grpc_error *hc_mutate_op(grpc_exec_ctx *exec_ctx,
268
- grpc_call_element *elem,
269
- grpc_transport_stream_op_batch *op) {
270
- /* grab pointers to our data from the call element */
271
- call_data *calld = elem->call_data;
272
- channel_data *channeld = elem->channel_data;
273
- grpc_error *error;
317
+ if (batch->recv_trailing_metadata) {
318
+ /* substitute our callback for the higher callback */
319
+ calld->recv_trailing_metadata =
320
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata;
321
+ calld->original_recv_trailing_metadata_on_complete = batch->on_complete;
322
+ batch->on_complete = &calld->recv_trailing_metadata_on_complete;
323
+ }
274
324
 
275
- if (op->send_initial_metadata) {
276
- /* Decide which HTTP VERB to use. We use GET if the request is marked
277
- cacheable, and the operation contains both initial metadata and send
278
- message, and the payload is below the size threshold, and all the data
279
- for this request is immediately available. */
325
+ grpc_error *error = GRPC_ERROR_NONE;
326
+ bool batch_will_be_handled_asynchronously = false;
327
+ if (batch->send_initial_metadata) {
328
+ // Decide which HTTP VERB to use. We use GET if the request is marked
329
+ // cacheable, and the operation contains both initial metadata and send
330
+ // message, and the payload is below the size threshold, and all the data
331
+ // for this request is immediately available.
280
332
  grpc_mdelem method = GRPC_MDELEM_METHOD_POST;
281
- if (op->send_message &&
282
- (op->payload->send_initial_metadata.send_initial_metadata_flags &
333
+ if (batch->send_message &&
334
+ (batch->payload->send_initial_metadata.send_initial_metadata_flags &
283
335
  GRPC_INITIAL_METADATA_CACHEABLE_REQUEST) &&
284
- op->payload->send_message.send_message->length <
336
+ batch->payload->send_message.send_message->length <
285
337
  channeld->max_payload_size_for_get) {
286
- method = GRPC_MDELEM_METHOD_GET;
287
- /* The following write to calld->send_message_blocked isn't racy with
288
- reads in hc_start_transport_op (which deals with SEND_MESSAGE ops) because
289
- being here means ops->send_message is not NULL, which is primarily
290
- guarding the read there. */
291
- calld->send_message_blocked = true;
292
- } else if (op->payload->send_initial_metadata.send_initial_metadata_flags &
293
- GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) {
294
- method = GRPC_MDELEM_METHOD_PUT;
295
- }
296
-
297
- /* Attempt to read the data from send_message and create a header field. */
298
- if (grpc_mdelem_eq(method, GRPC_MDELEM_METHOD_GET)) {
299
- /* allocate memory to hold the entire payload */
300
- calld->payload_bytes =
301
- gpr_malloc(op->payload->send_message.send_message->length);
302
-
303
- /* read slices of send_message and copy into payload_bytes */
304
- calld->send_op = op;
305
- calld->send_length = op->payload->send_message.send_message->length;
306
- calld->send_flags = op->payload->send_message.send_message->flags;
307
- continue_send_message(exec_ctx, elem);
308
-
309
- if (calld->send_message_blocked == false) {
310
- /* when all the send_message data is available, then modify the path
311
- * MDELEM by appending base64 encoded query to the path */
312
- const int k_url_safe = 1;
313
- const int k_multi_line = 0;
314
- const unsigned char k_query_separator = '?';
315
-
316
- grpc_slice path_slice =
317
- GRPC_MDVALUE(op->payload->send_initial_metadata
318
- .send_initial_metadata->idx.named.path->md);
319
- /* sum up individual component's lengths and allocate enough memory to
320
- * hold combined path+query */
321
- size_t estimated_len = GRPC_SLICE_LENGTH(path_slice);
322
- estimated_len++; /* for the '?' */
323
- estimated_len += grpc_base64_estimate_encoded_size(
324
- op->payload->send_message.send_message->length, k_url_safe,
325
- k_multi_line);
326
- grpc_slice path_with_query_slice = GRPC_SLICE_MALLOC(estimated_len);
327
-
328
- /* memcopy individual pieces into this slice */
329
- uint8_t *write_ptr =
330
- (uint8_t *)GRPC_SLICE_START_PTR(path_with_query_slice);
331
- uint8_t *original_path = (uint8_t *)GRPC_SLICE_START_PTR(path_slice);
332
- memcpy(write_ptr, original_path, GRPC_SLICE_LENGTH(path_slice));
333
- write_ptr += GRPC_SLICE_LENGTH(path_slice);
334
-
335
- *write_ptr = k_query_separator;
336
- write_ptr++; /* for the '?' */
337
-
338
- grpc_base64_encode_core((char *)write_ptr, calld->payload_bytes,
339
- op->payload->send_message.send_message->length,
340
- k_url_safe, k_multi_line);
341
-
342
- /* remove trailing unused memory and add trailing 0 to terminate string
343
- */
344
- char *t = (char *)GRPC_SLICE_START_PTR(path_with_query_slice);
345
- /* safe to use strlen since base64_encode will always add '\0' */
346
- path_with_query_slice =
347
- grpc_slice_sub_no_ref(path_with_query_slice, 0, strlen(t));
348
-
349
- /* substitute previous path with the new path+query */
350
- grpc_mdelem mdelem_path_and_query = grpc_mdelem_from_slices(
351
- exec_ctx, GRPC_MDSTR_PATH, path_with_query_slice);
352
- grpc_metadata_batch *b =
353
- op->payload->send_initial_metadata.send_initial_metadata;
354
- error = grpc_metadata_batch_substitute(exec_ctx, b, b->idx.named.path,
355
- mdelem_path_and_query);
356
- if (error != GRPC_ERROR_NONE) return error;
357
-
358
- calld->on_complete = op->on_complete;
359
- op->on_complete = &calld->hc_on_complete;
360
- op->send_message = false;
338
+ calld->send_message_bytes_read = 0;
339
+ grpc_byte_stream_cache_init(&calld->send_message_cache,
340
+ batch->payload->send_message.send_message);
341
+ grpc_caching_byte_stream_init(&calld->send_message_caching_stream,
342
+ &calld->send_message_cache);
343
+ batch->payload->send_message.send_message =
344
+ &calld->send_message_caching_stream.base;
345
+ calld->original_send_message_on_complete = batch->on_complete;
346
+ batch->on_complete = &calld->send_message_on_complete;
347
+ calld->send_message_batch = batch;
348
+ error = read_all_available_send_message_data(exec_ctx, calld);
349
+ if (error != GRPC_ERROR_NONE) goto done;
350
+ // If all the data has been read, then we can use GET.
351
+ if (calld->send_message_bytes_read ==
352
+ calld->send_message_caching_stream.base.length) {
353
+ method = GRPC_MDELEM_METHOD_GET;
354
+ error = update_path_for_get(exec_ctx, elem, batch);
355
+ if (error != GRPC_ERROR_NONE) goto done;
356
+ batch->send_message = false;
357
+ grpc_byte_stream_destroy(exec_ctx,
358
+ &calld->send_message_caching_stream.base);
361
359
  } else {
362
- /* Not all data is available. Fall back to POST. */
360
+ // Not all data is available. The batch will be sent down
361
+ // asynchronously in on_send_message_next_done().
362
+ batch_will_be_handled_asynchronously = true;
363
+ // Fall back to POST.
363
364
  gpr_log(GPR_DEBUG,
364
- "Request is marked Cacheable but not all data is available.\
365
- Falling back to POST");
366
- method = GRPC_MDELEM_METHOD_POST;
365
+ "Request is marked Cacheable but not all data is available. "
366
+ "Falling back to POST");
367
367
  }
368
+ } else if (batch->payload->send_initial_metadata
369
+ .send_initial_metadata_flags &
370
+ GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) {
371
+ method = GRPC_MDELEM_METHOD_PUT;
368
372
  }
369
373
 
370
- remove_if_present(exec_ctx,
371
- op->payload->send_initial_metadata.send_initial_metadata,
372
- GRPC_BATCH_METHOD);
373
- remove_if_present(exec_ctx,
374
- op->payload->send_initial_metadata.send_initial_metadata,
375
- GRPC_BATCH_SCHEME);
376
- remove_if_present(exec_ctx,
377
- op->payload->send_initial_metadata.send_initial_metadata,
378
- GRPC_BATCH_TE);
379
- remove_if_present(exec_ctx,
380
- op->payload->send_initial_metadata.send_initial_metadata,
381
- GRPC_BATCH_CONTENT_TYPE);
382
- remove_if_present(exec_ctx,
383
- op->payload->send_initial_metadata.send_initial_metadata,
384
- GRPC_BATCH_USER_AGENT);
374
+ remove_if_present(
375
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
376
+ GRPC_BATCH_METHOD);
377
+ remove_if_present(
378
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
379
+ GRPC_BATCH_SCHEME);
380
+ remove_if_present(
381
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
382
+ GRPC_BATCH_TE);
383
+ remove_if_present(
384
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
385
+ GRPC_BATCH_CONTENT_TYPE);
386
+ remove_if_present(
387
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
388
+ GRPC_BATCH_USER_AGENT);
385
389
 
386
390
  /* Send : prefixed headers, which have to be before any application
387
391
  layer headers. */
388
392
  error = grpc_metadata_batch_add_head(
389
- exec_ctx, op->payload->send_initial_metadata.send_initial_metadata,
393
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
390
394
  &calld->method, method);
391
- if (error != GRPC_ERROR_NONE) return error;
395
+ if (error != GRPC_ERROR_NONE) goto done;
392
396
  error = grpc_metadata_batch_add_head(
393
- exec_ctx, op->payload->send_initial_metadata.send_initial_metadata,
397
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
394
398
  &calld->scheme, channeld->static_scheme);
395
- if (error != GRPC_ERROR_NONE) return error;
399
+ if (error != GRPC_ERROR_NONE) goto done;
396
400
  error = grpc_metadata_batch_add_tail(
397
- exec_ctx, op->payload->send_initial_metadata.send_initial_metadata,
401
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
398
402
  &calld->te_trailers, GRPC_MDELEM_TE_TRAILERS);
399
- if (error != GRPC_ERROR_NONE) return error;
403
+ if (error != GRPC_ERROR_NONE) goto done;
400
404
  error = grpc_metadata_batch_add_tail(
401
- exec_ctx, op->payload->send_initial_metadata.send_initial_metadata,
405
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
402
406
  &calld->content_type, GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC);
403
- if (error != GRPC_ERROR_NONE) return error;
407
+ if (error != GRPC_ERROR_NONE) goto done;
404
408
  error = grpc_metadata_batch_add_tail(
405
- exec_ctx, op->payload->send_initial_metadata.send_initial_metadata,
409
+ exec_ctx, batch->payload->send_initial_metadata.send_initial_metadata,
406
410
  &calld->user_agent, GRPC_MDELEM_REF(channeld->user_agent));
407
- if (error != GRPC_ERROR_NONE) return error;
411
+ if (error != GRPC_ERROR_NONE) goto done;
408
412
  }
409
413
 
410
- if (op->recv_initial_metadata) {
411
- /* substitute our callback for the higher callback */
412
- calld->recv_initial_metadata =
413
- op->payload->recv_initial_metadata.recv_initial_metadata;
414
- calld->on_done_recv_initial_metadata =
415
- op->payload->recv_initial_metadata.recv_initial_metadata_ready;
416
- op->payload->recv_initial_metadata.recv_initial_metadata_ready =
417
- &calld->hc_on_recv_initial_metadata;
418
- }
419
-
420
- if (op->recv_trailing_metadata) {
421
- /* substitute our callback for the higher callback */
422
- calld->recv_trailing_metadata =
423
- op->payload->recv_trailing_metadata.recv_trailing_metadata;
424
- calld->on_done_recv_trailing_metadata = op->on_complete;
425
- op->on_complete = &calld->hc_on_recv_trailing_metadata;
426
- }
427
-
428
- return GRPC_ERROR_NONE;
429
- }
430
-
431
- static void hc_start_transport_op(grpc_exec_ctx *exec_ctx,
432
- grpc_call_element *elem,
433
- grpc_transport_stream_op_batch *op) {
434
- GPR_TIMER_BEGIN("hc_start_transport_op", 0);
435
- GRPC_CALL_LOG_OP(GPR_INFO, elem, op);
436
- grpc_error *error = hc_mutate_op(exec_ctx, elem, op);
414
+ done:
437
415
  if (error != GRPC_ERROR_NONE) {
438
- grpc_transport_stream_op_batch_finish_with_failure(exec_ctx, op, error);
439
- } else {
440
- call_data *calld = elem->call_data;
441
- if (op->send_message && calld->send_message_blocked) {
442
- /* Don't forward the op. send_message contains slices that aren't ready
443
- yet. The call will be forwarded by the op_complete of slice read call.
444
- */
445
- } else {
446
- grpc_call_next_op(exec_ctx, elem, op);
447
- }
416
+ grpc_transport_stream_op_batch_finish_with_failure(
417
+ exec_ctx, calld->send_message_batch, error);
418
+ } else if (!batch_will_be_handled_asynchronously) {
419
+ grpc_call_next_op(exec_ctx, elem, batch);
448
420
  }
449
- GPR_TIMER_END("hc_start_transport_op", 0);
421
+ GPR_TIMER_END("hc_start_transport_stream_op_batch", 0);
450
422
  }
451
423
 
452
424
  /* Constructor for call_data */
453
425
  static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
454
426
  grpc_call_element *elem,
455
427
  const grpc_call_element_args *args) {
456
- call_data *calld = elem->call_data;
457
- calld->on_done_recv_initial_metadata = NULL;
458
- calld->on_done_recv_trailing_metadata = NULL;
459
- calld->on_complete = NULL;
460
- calld->payload_bytes = NULL;
461
- calld->send_message_blocked = false;
462
- grpc_slice_buffer_init(&calld->slices);
463
- grpc_closure_init(&calld->hc_on_recv_initial_metadata,
464
- hc_on_recv_initial_metadata, elem,
465
- grpc_schedule_on_exec_ctx);
466
- grpc_closure_init(&calld->hc_on_recv_trailing_metadata,
467
- hc_on_recv_trailing_metadata, elem,
428
+ call_data *calld = (call_data *)elem->call_data;
429
+ GRPC_CLOSURE_INIT(&calld->recv_initial_metadata_ready,
430
+ recv_initial_metadata_ready, elem,
468
431
  grpc_schedule_on_exec_ctx);
469
- grpc_closure_init(&calld->hc_on_complete, hc_on_complete, elem,
470
- grpc_schedule_on_exec_ctx);
471
- grpc_closure_init(&calld->got_slice, got_slice, elem,
472
- grpc_schedule_on_exec_ctx);
473
- grpc_closure_init(&calld->send_done, send_done, elem,
432
+ GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_on_complete,
433
+ recv_trailing_metadata_on_complete, elem,
474
434
  grpc_schedule_on_exec_ctx);
435
+ GRPC_CLOSURE_INIT(&calld->send_message_on_complete, send_message_on_complete,
436
+ elem, grpc_schedule_on_exec_ctx);
437
+ GRPC_CLOSURE_INIT(&calld->on_send_message_next_done,
438
+ on_send_message_next_done, elem, grpc_schedule_on_exec_ctx);
475
439
  return GRPC_ERROR_NONE;
476
440
  }
477
441
 
478
442
  /* Destructor for call_data */
479
443
  static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
480
444
  const grpc_call_final_info *final_info,
481
- grpc_closure *ignored) {
482
- call_data *calld = elem->call_data;
483
- grpc_slice_buffer_destroy_internal(exec_ctx, &calld->slices);
484
- }
445
+ grpc_closure *ignored) {}
485
446
 
486
447
  static grpc_mdelem scheme_from_args(const grpc_channel_args *args) {
487
448
  unsigned i;
@@ -595,7 +556,7 @@ static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
595
556
  }
596
557
 
597
558
  const grpc_channel_filter grpc_http_client_filter = {
598
- hc_start_transport_op,
559
+ hc_start_transport_stream_op_batch,
599
560
  grpc_channel_next_op,
600
561
  sizeof(call_data),
601
562
  init_call_elem,