grpc 1.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1758) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/Makefile +20074 -0
  4. data/etc/roots.pem +4644 -0
  5. data/include/grpc/byte_buffer.h +27 -0
  6. data/include/grpc/byte_buffer_reader.h +26 -0
  7. data/include/grpc/census.h +40 -0
  8. data/include/grpc/compression.h +75 -0
  9. data/include/grpc/fork.h +26 -0
  10. data/include/grpc/grpc.h +540 -0
  11. data/include/grpc/grpc_cronet.h +38 -0
  12. data/include/grpc/grpc_posix.h +59 -0
  13. data/include/grpc/grpc_security.h +1019 -0
  14. data/include/grpc/grpc_security_constants.h +146 -0
  15. data/include/grpc/impl/codegen/atm.h +95 -0
  16. data/include/grpc/impl/codegen/atm_gcc_atomic.h +91 -0
  17. data/include/grpc/impl/codegen/atm_gcc_sync.h +85 -0
  18. data/include/grpc/impl/codegen/atm_windows.h +128 -0
  19. data/include/grpc/impl/codegen/byte_buffer.h +101 -0
  20. data/include/grpc/impl/codegen/byte_buffer_reader.h +42 -0
  21. data/include/grpc/impl/codegen/compression_types.h +108 -0
  22. data/include/grpc/impl/codegen/connectivity_state.h +44 -0
  23. data/include/grpc/impl/codegen/fork.h +48 -0
  24. data/include/grpc/impl/codegen/gpr_slice.h +69 -0
  25. data/include/grpc/impl/codegen/gpr_types.h +59 -0
  26. data/include/grpc/impl/codegen/grpc_types.h +785 -0
  27. data/include/grpc/impl/codegen/log.h +112 -0
  28. data/include/grpc/impl/codegen/port_platform.h +720 -0
  29. data/include/grpc/impl/codegen/propagation_bits.h +52 -0
  30. data/include/grpc/impl/codegen/slice.h +127 -0
  31. data/include/grpc/impl/codegen/status.h +154 -0
  32. data/include/grpc/impl/codegen/sync.h +65 -0
  33. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  34. data/include/grpc/impl/codegen/sync_custom.h +38 -0
  35. data/include/grpc/impl/codegen/sync_generic.h +48 -0
  36. data/include/grpc/impl/codegen/sync_posix.h +52 -0
  37. data/include/grpc/impl/codegen/sync_windows.h +36 -0
  38. data/include/grpc/load_reporting.h +48 -0
  39. data/include/grpc/module.modulemap +64 -0
  40. data/include/grpc/slice.h +172 -0
  41. data/include/grpc/slice_buffer.h +84 -0
  42. data/include/grpc/status.h +26 -0
  43. data/include/grpc/support/alloc.h +52 -0
  44. data/include/grpc/support/atm.h +26 -0
  45. data/include/grpc/support/atm_gcc_atomic.h +26 -0
  46. data/include/grpc/support/atm_gcc_sync.h +26 -0
  47. data/include/grpc/support/atm_windows.h +26 -0
  48. data/include/grpc/support/cpu.h +44 -0
  49. data/include/grpc/support/log.h +26 -0
  50. data/include/grpc/support/log_windows.h +38 -0
  51. data/include/grpc/support/port_platform.h +24 -0
  52. data/include/grpc/support/string_util.h +51 -0
  53. data/include/grpc/support/sync.h +282 -0
  54. data/include/grpc/support/sync_abseil.h +26 -0
  55. data/include/grpc/support/sync_custom.h +26 -0
  56. data/include/grpc/support/sync_generic.h +26 -0
  57. data/include/grpc/support/sync_posix.h +26 -0
  58. data/include/grpc/support/sync_windows.h +26 -0
  59. data/include/grpc/support/thd_id.h +44 -0
  60. data/include/grpc/support/time.h +92 -0
  61. data/include/grpc/support/workaround_list.h +31 -0
  62. data/src/core/ext/filters/census/grpc_context.cc +38 -0
  63. data/src/core/ext/filters/client_channel/backend_metric.cc +81 -0
  64. data/src/core/ext/filters/client_channel/backend_metric.h +36 -0
  65. data/src/core/ext/filters/client_channel/backup_poller.cc +181 -0
  66. data/src/core/ext/filters/client_channel/backup_poller.h +41 -0
  67. data/src/core/ext/filters/client_channel/channel_connectivity.cc +264 -0
  68. data/src/core/ext/filters/client_channel/client_channel.cc +4059 -0
  69. data/src/core/ext/filters/client_channel/client_channel.h +82 -0
  70. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +95 -0
  71. data/src/core/ext/filters/client_channel/client_channel_channelz.h +78 -0
  72. data/src/core/ext/filters/client_channel/client_channel_factory.cc +55 -0
  73. data/src/core/ext/filters/client_channel/client_channel_factory.h +47 -0
  74. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +70 -0
  75. data/src/core/ext/filters/client_channel/connector.h +79 -0
  76. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +179 -0
  77. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +68 -0
  78. data/src/core/ext/filters/client_channel/health/health_check_client.cc +606 -0
  79. data/src/core/ext/filters/client_channel/health/health_check_client.h +175 -0
  80. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +389 -0
  81. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +34 -0
  82. data/src/core/ext/filters/client_channel/http_proxy.cc +216 -0
  83. data/src/core/ext/filters/client_channel/http_proxy.h +28 -0
  84. data/src/core/ext/filters/client_channel/lb_policy.cc +138 -0
  85. data/src/core/ext/filters/client_channel/lb_policy.h +421 -0
  86. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  87. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  88. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
  89. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  90. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +157 -0
  91. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +29 -0
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1754 -0
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +43 -0
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +45 -0
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +121 -0
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +91 -0
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +75 -0
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +193 -0
  101. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +74 -0
  102. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +509 -0
  103. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  104. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +504 -0
  105. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +448 -0
  106. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  107. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +417 -0
  108. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  109. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  110. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +32 -0
  111. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  112. data/src/core/ext/filters/client_channel/lb_policy_factory.h +47 -0
  113. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +182 -0
  114. data/src/core/ext/filters/client_channel/lb_policy_registry.h +65 -0
  115. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +96 -0
  116. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +57 -0
  117. data/src/core/ext/filters/client_channel/parse_address.cc +238 -0
  118. data/src/core/ext/filters/client_channel/parse_address.h +53 -0
  119. data/src/core/ext/filters/client_channel/proxy_mapper.h +54 -0
  120. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +89 -0
  121. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +50 -0
  122. data/src/core/ext/filters/client_channel/resolver.cc +85 -0
  123. data/src/core/ext/filters/client_channel/resolver.h +144 -0
  124. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +535 -0
  125. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +484 -0
  126. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +104 -0
  127. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +177 -0
  128. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +107 -0
  129. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +897 -0
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +819 -0
  131. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +97 -0
  132. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +68 -0
  133. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +38 -0
  134. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +29 -0
  135. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +34 -0
  136. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +28 -0
  137. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +29 -0
  138. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +318 -0
  139. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +383 -0
  140. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +93 -0
  141. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +188 -0
  142. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +184 -0
  143. data/src/core/ext/filters/client_channel/resolver_factory.h +73 -0
  144. data/src/core/ext/filters/client_channel/resolver_registry.cc +197 -0
  145. data/src/core/ext/filters/client_channel/resolver_registry.h +89 -0
  146. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +443 -0
  147. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +127 -0
  148. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +348 -0
  149. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +123 -0
  150. data/src/core/ext/filters/client_channel/retry_throttle.cc +191 -0
  151. data/src/core/ext/filters/client_channel/retry_throttle.h +77 -0
  152. data/src/core/ext/filters/client_channel/server_address.cc +48 -0
  153. data/src/core/ext/filters/client_channel/server_address.h +90 -0
  154. data/src/core/ext/filters/client_channel/service_config.cc +221 -0
  155. data/src/core/ext/filters/client_channel/service_config.h +123 -0
  156. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  157. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  158. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  159. data/src/core/ext/filters/client_channel/subchannel.cc +1127 -0
  160. data/src/core/ext/filters/client_channel/subchannel.h +427 -0
  161. data/src/core/ext/filters/client_channel/subchannel_interface.h +94 -0
  162. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +97 -0
  163. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +91 -0
  164. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1906 -0
  165. data/src/core/ext/filters/client_channel/xds/xds_api.h +280 -0
  166. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +342 -0
  167. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +88 -0
  168. data/src/core/ext/filters/client_channel/xds/xds_channel.h +46 -0
  169. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  170. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +106 -0
  171. data/src/core/ext/filters/client_channel/xds/xds_client.cc +2367 -0
  172. data/src/core/ext/filters/client_channel/xds/xds_client.h +309 -0
  173. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +115 -0
  174. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +211 -0
  175. data/src/core/ext/filters/client_idle/client_idle_filter.cc +440 -0
  176. data/src/core/ext/filters/deadline/deadline_filter.cc +386 -0
  177. data/src/core/ext/filters/deadline/deadline_filter.h +90 -0
  178. data/src/core/ext/filters/http/client/http_client_filter.cc +596 -0
  179. data/src/core/ext/filters/http/client/http_client_filter.h +31 -0
  180. data/src/core/ext/filters/http/client_authority_filter.cc +159 -0
  181. data/src/core/ext/filters/http/client_authority_filter.h +34 -0
  182. data/src/core/ext/filters/http/http_filters_plugin.cc +104 -0
  183. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +546 -0
  184. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +53 -0
  185. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  186. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  187. data/src/core/ext/filters/http/server/http_server_filter.cc +528 -0
  188. data/src/core/ext/filters/http/server/http_server_filter.h +29 -0
  189. data/src/core/ext/filters/max_age/max_age_filter.cc +556 -0
  190. data/src/core/ext/filters/max_age/max_age_filter.h +26 -0
  191. data/src/core/ext/filters/message_size/message_size_filter.cc +423 -0
  192. data/src/core/ext/filters/message_size/message_size_filter.h +59 -0
  193. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +210 -0
  194. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +27 -0
  195. data/src/core/ext/filters/workarounds/workaround_utils.cc +53 -0
  196. data/src/core/ext/filters/workarounds/workaround_utils.h +39 -0
  197. data/src/core/ext/transport/chttp2/alpn/alpn.cc +44 -0
  198. data/src/core/ext/transport/chttp2/alpn/alpn.h +36 -0
  199. data/src/core/ext/transport/chttp2/client/authority.cc +42 -0
  200. data/src/core/ext/transport/chttp2/client/authority.h +36 -0
  201. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +206 -0
  202. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +58 -0
  203. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +112 -0
  204. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +79 -0
  205. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +225 -0
  206. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +451 -0
  207. data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
  208. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +45 -0
  209. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +75 -0
  210. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +86 -0
  211. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +250 -0
  212. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +56 -0
  213. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +230 -0
  214. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +42 -0
  215. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +37 -0
  216. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +3346 -0
  217. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +52 -0
  218. data/src/core/ext/transport/chttp2/transport/context_list.cc +69 -0
  219. data/src/core/ext/transport/chttp2/transport/context_list.h +53 -0
  220. data/src/core/ext/transport/chttp2/transport/flow_control.cc +408 -0
  221. data/src/core/ext/transport/chttp2/transport/flow_control.h +474 -0
  222. data/src/core/ext/transport/chttp2/transport/frame.h +47 -0
  223. data/src/core/ext/transport/chttp2/transport/frame_data.cc +307 -0
  224. data/src/core/ext/transport/chttp2/transport/frame_data.h +82 -0
  225. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +187 -0
  226. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +62 -0
  227. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +133 -0
  228. data/src/core/ext/transport/chttp2/transport/frame_ping.h +44 -0
  229. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +122 -0
  230. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +50 -0
  231. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +242 -0
  232. data/src/core/ext/transport/chttp2/transport/frame_settings.h +60 -0
  233. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +123 -0
  234. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +44 -0
  235. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +900 -0
  236. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +107 -0
  237. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1761 -0
  238. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +117 -0
  239. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +246 -0
  240. data/src/core/ext/transport/chttp2/transport/hpack_table.h +148 -0
  241. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +62 -0
  242. data/src/core/ext/transport/chttp2/transport/http2_settings.h +61 -0
  243. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +92 -0
  244. data/src/core/ext/transport/chttp2/transport/huffsyms.h +32 -0
  245. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +66 -0
  246. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +58 -0
  247. data/src/core/ext/transport/chttp2/transport/internal.h +864 -0
  248. data/src/core/ext/transport/chttp2/transport/parsing.cc +803 -0
  249. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +216 -0
  250. data/src/core/ext/transport/chttp2/transport/stream_map.cc +177 -0
  251. data/src/core/ext/transport/chttp2/transport/stream_map.h +67 -0
  252. data/src/core/ext/transport/chttp2/transport/varint.cc +56 -0
  253. data/src/core/ext/transport/chttp2/transport/varint.h +60 -0
  254. data/src/core/ext/transport/chttp2/transport/writing.cc +706 -0
  255. data/src/core/ext/transport/inproc/inproc_plugin.cc +28 -0
  256. data/src/core/ext/transport/inproc/inproc_transport.cc +1296 -0
  257. data/src/core/ext/transport/inproc/inproc_transport.h +35 -0
  258. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  259. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  260. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  261. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  262. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +21 -0
  263. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +35 -0
  264. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  265. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  266. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  267. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  268. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  269. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  270. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +28 -0
  271. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +53 -0
  272. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
  273. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
  274. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +74 -0
  275. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +218 -0
  276. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +35 -0
  277. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +69 -0
  278. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +55 -0
  279. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +305 -0
  280. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +112 -0
  281. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +328 -0
  282. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  283. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  284. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +313 -0
  285. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +897 -0
  286. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +96 -0
  287. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +322 -0
  288. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  289. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  290. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +197 -0
  291. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +642 -0
  292. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +172 -0
  293. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +673 -0
  294. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +36 -0
  295. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +80 -0
  296. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +152 -0
  297. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +518 -0
  298. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  299. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  300. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +129 -0
  301. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +392 -0
  302. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +31 -0
  303. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +53 -0
  304. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
  305. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  306. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +18 -0
  307. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +33 -0
  308. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
  309. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
  310. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +112 -0
  311. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +324 -0
  312. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
  313. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  314. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
  315. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
  316. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
  317. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  318. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
  319. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  320. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
  321. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  322. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
  323. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  324. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
  325. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  326. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
  327. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  328. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
  329. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
  330. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
  331. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  332. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
  333. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  334. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
  335. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  336. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
  337. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
  338. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
  339. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  340. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  341. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  342. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +24 -0
  343. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +50 -0
  344. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +54 -0
  345. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +134 -0
  346. data/src/core/ext/upb-generated/envoy/type/http.upb.c +17 -0
  347. data/src/core/ext/upb-generated/envoy/type/http.upb.h +36 -0
  348. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
  349. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
  350. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
  351. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  352. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
  353. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  354. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +39 -0
  355. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +87 -0
  356. data/src/core/ext/upb-generated/envoy/type/range.upb.c +50 -0
  357. data/src/core/ext/upb-generated/envoy/type/range.upb.h +112 -0
  358. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
  359. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  360. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
  361. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  362. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +17 -0
  363. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +30 -0
  364. data/src/core/ext/upb-generated/google/api/annotations.upb.c +18 -0
  365. data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -0
  366. data/src/core/ext/upb-generated/google/api/http.upb.c +66 -0
  367. data/src/core/ext/upb-generated/google/api/http.upb.h +190 -0
  368. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +27 -0
  369. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +58 -0
  370. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +486 -0
  371. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1696 -0
  372. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +27 -0
  373. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +58 -0
  374. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +22 -0
  375. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +50 -0
  376. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +79 -0
  377. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +215 -0
  378. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +27 -0
  379. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +58 -0
  380. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +106 -0
  381. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +238 -0
  382. data/src/core/ext/upb-generated/google/rpc/status.upb.c +33 -0
  383. data/src/core/ext/upb-generated/google/rpc/status.upb.h +74 -0
  384. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +49 -0
  385. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +126 -0
  386. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +212 -0
  387. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +693 -0
  388. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +42 -0
  389. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +109 -0
  390. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +36 -0
  391. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +84 -0
  392. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +141 -0
  393. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +393 -0
  394. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  395. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  396. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  397. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  398. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  399. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  400. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +58 -0
  401. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +144 -0
  402. data/src/core/ext/upb-generated/validate/validate.upb.c +448 -0
  403. data/src/core/ext/upb-generated/validate/validate.upb.h +2073 -0
  404. data/src/core/lib/avl/avl.cc +306 -0
  405. data/src/core/lib/avl/avl.h +94 -0
  406. data/src/core/lib/backoff/backoff.cc +78 -0
  407. data/src/core/lib/backoff/backoff.h +89 -0
  408. data/src/core/lib/channel/channel_args.cc +380 -0
  409. data/src/core/lib/channel/channel_args.h +135 -0
  410. data/src/core/lib/channel/channel_stack.cc +252 -0
  411. data/src/core/lib/channel/channel_stack.h +304 -0
  412. data/src/core/lib/channel/channel_stack_builder.cc +323 -0
  413. data/src/core/lib/channel/channel_stack_builder.h +166 -0
  414. data/src/core/lib/channel/channel_trace.cc +194 -0
  415. data/src/core/lib/channel/channel_trace.h +134 -0
  416. data/src/core/lib/channel/channelz.cc +543 -0
  417. data/src/core/lib/channel/channelz.h +334 -0
  418. data/src/core/lib/channel/channelz_registry.cc +267 -0
  419. data/src/core/lib/channel/channelz_registry.h +97 -0
  420. data/src/core/lib/channel/connected_channel.cc +246 -0
  421. data/src/core/lib/channel/connected_channel.h +34 -0
  422. data/src/core/lib/channel/context.h +49 -0
  423. data/src/core/lib/channel/handshaker.cc +262 -0
  424. data/src/core/lib/channel/handshaker.h +179 -0
  425. data/src/core/lib/channel/handshaker_factory.h +42 -0
  426. data/src/core/lib/channel/handshaker_registry.cc +105 -0
  427. data/src/core/lib/channel/handshaker_registry.h +54 -0
  428. data/src/core/lib/channel/status_util.cc +99 -0
  429. data/src/core/lib/channel/status_util.h +58 -0
  430. data/src/core/lib/compression/algorithm_metadata.h +61 -0
  431. data/src/core/lib/compression/compression.cc +179 -0
  432. data/src/core/lib/compression/compression_args.cc +134 -0
  433. data/src/core/lib/compression/compression_args.h +56 -0
  434. data/src/core/lib/compression/compression_internal.cc +280 -0
  435. data/src/core/lib/compression/compression_internal.h +96 -0
  436. data/src/core/lib/compression/message_compress.cc +192 -0
  437. data/src/core/lib/compression/message_compress.h +40 -0
  438. data/src/core/lib/compression/stream_compression.cc +80 -0
  439. data/src/core/lib/compression/stream_compression.h +116 -0
  440. data/src/core/lib/compression/stream_compression_gzip.cc +230 -0
  441. data/src/core/lib/compression/stream_compression_gzip.h +28 -0
  442. data/src/core/lib/compression/stream_compression_identity.cc +92 -0
  443. data/src/core/lib/compression/stream_compression_identity.h +29 -0
  444. data/src/core/lib/debug/stats.cc +172 -0
  445. data/src/core/lib/debug/stats.h +70 -0
  446. data/src/core/lib/debug/stats_data.cc +687 -0
  447. data/src/core/lib/debug/stats_data.h +555 -0
  448. data/src/core/lib/debug/trace.cc +154 -0
  449. data/src/core/lib/debug/trace.h +131 -0
  450. data/src/core/lib/gpr/alloc.cc +74 -0
  451. data/src/core/lib/gpr/alloc.h +28 -0
  452. data/src/core/lib/gpr/arena.h +47 -0
  453. data/src/core/lib/gpr/atm.cc +35 -0
  454. data/src/core/lib/gpr/cpu_iphone.cc +36 -0
  455. data/src/core/lib/gpr/cpu_linux.cc +82 -0
  456. data/src/core/lib/gpr/cpu_posix.cc +83 -0
  457. data/src/core/lib/gpr/cpu_windows.cc +33 -0
  458. data/src/core/lib/gpr/env.h +40 -0
  459. data/src/core/lib/gpr/env_linux.cc +76 -0
  460. data/src/core/lib/gpr/env_posix.cc +47 -0
  461. data/src/core/lib/gpr/env_windows.cc +74 -0
  462. data/src/core/lib/gpr/log.cc +98 -0
  463. data/src/core/lib/gpr/log_android.cc +76 -0
  464. data/src/core/lib/gpr/log_linux.cc +97 -0
  465. data/src/core/lib/gpr/log_posix.cc +95 -0
  466. data/src/core/lib/gpr/log_windows.cc +102 -0
  467. data/src/core/lib/gpr/murmur_hash.cc +80 -0
  468. data/src/core/lib/gpr/murmur_hash.h +29 -0
  469. data/src/core/lib/gpr/spinlock.h +45 -0
  470. data/src/core/lib/gpr/string.cc +341 -0
  471. data/src/core/lib/gpr/string.h +111 -0
  472. data/src/core/lib/gpr/string_posix.cc +72 -0
  473. data/src/core/lib/gpr/string_util_windows.cc +82 -0
  474. data/src/core/lib/gpr/string_windows.cc +69 -0
  475. data/src/core/lib/gpr/string_windows.h +32 -0
  476. data/src/core/lib/gpr/sync.cc +124 -0
  477. data/src/core/lib/gpr/sync_abseil.cc +116 -0
  478. data/src/core/lib/gpr/sync_posix.cc +176 -0
  479. data/src/core/lib/gpr/sync_windows.cc +120 -0
  480. data/src/core/lib/gpr/time.cc +263 -0
  481. data/src/core/lib/gpr/time_posix.cc +186 -0
  482. data/src/core/lib/gpr/time_precise.cc +165 -0
  483. data/src/core/lib/gpr/time_precise.h +66 -0
  484. data/src/core/lib/gpr/time_windows.cc +98 -0
  485. data/src/core/lib/gpr/tls.h +68 -0
  486. data/src/core/lib/gpr/tls_gcc.h +52 -0
  487. data/src/core/lib/gpr/tls_msvc.h +52 -0
  488. data/src/core/lib/gpr/tls_pthread.cc +30 -0
  489. data/src/core/lib/gpr/tls_pthread.h +56 -0
  490. data/src/core/lib/gpr/tmpfile.h +32 -0
  491. data/src/core/lib/gpr/tmpfile_msys.cc +58 -0
  492. data/src/core/lib/gpr/tmpfile_posix.cc +70 -0
  493. data/src/core/lib/gpr/tmpfile_windows.cc +69 -0
  494. data/src/core/lib/gpr/useful.h +65 -0
  495. data/src/core/lib/gpr/wrap_memcpy.cc +42 -0
  496. data/src/core/lib/gprpp/arena.cc +103 -0
  497. data/src/core/lib/gprpp/arena.h +120 -0
  498. data/src/core/lib/gprpp/atomic.h +104 -0
  499. data/src/core/lib/gprpp/debug_location.h +53 -0
  500. data/src/core/lib/gprpp/fork.cc +242 -0
  501. data/src/core/lib/gprpp/fork.h +103 -0
  502. data/src/core/lib/gprpp/global_config.h +96 -0
  503. data/src/core/lib/gprpp/global_config_custom.h +29 -0
  504. data/src/core/lib/gprpp/global_config_env.cc +135 -0
  505. data/src/core/lib/gprpp/global_config_env.h +131 -0
  506. data/src/core/lib/gprpp/global_config_generic.h +44 -0
  507. data/src/core/lib/gprpp/host_port.cc +112 -0
  508. data/src/core/lib/gprpp/host_port.h +56 -0
  509. data/src/core/lib/gprpp/manual_constructor.h +213 -0
  510. data/src/core/lib/gprpp/map.h +53 -0
  511. data/src/core/lib/gprpp/memory.h +51 -0
  512. data/src/core/lib/gprpp/mpscq.cc +108 -0
  513. data/src/core/lib/gprpp/mpscq.h +98 -0
  514. data/src/core/lib/gprpp/orphanable.h +129 -0
  515. data/src/core/lib/gprpp/ref_counted.h +312 -0
  516. data/src/core/lib/gprpp/ref_counted_ptr.h +192 -0
  517. data/src/core/lib/gprpp/sync.h +135 -0
  518. data/src/core/lib/gprpp/thd.h +174 -0
  519. data/src/core/lib/gprpp/thd_posix.cc +204 -0
  520. data/src/core/lib/gprpp/thd_windows.cc +176 -0
  521. data/src/core/lib/http/format_request.cc +103 -0
  522. data/src/core/lib/http/format_request.h +34 -0
  523. data/src/core/lib/http/httpcli.cc +303 -0
  524. data/src/core/lib/http/httpcli.h +126 -0
  525. data/src/core/lib/http/httpcli_security_connector.cc +214 -0
  526. data/src/core/lib/http/parser.cc +372 -0
  527. data/src/core/lib/http/parser.h +113 -0
  528. data/src/core/lib/iomgr/block_annotate.h +57 -0
  529. data/src/core/lib/iomgr/buffer_list.cc +308 -0
  530. data/src/core/lib/iomgr/buffer_list.h +165 -0
  531. data/src/core/lib/iomgr/call_combiner.cc +256 -0
  532. data/src/core/lib/iomgr/call_combiner.h +217 -0
  533. data/src/core/lib/iomgr/cfstream_handle.cc +209 -0
  534. data/src/core/lib/iomgr/cfstream_handle.h +90 -0
  535. data/src/core/lib/iomgr/closure.h +255 -0
  536. data/src/core/lib/iomgr/combiner.cc +339 -0
  537. data/src/core/lib/iomgr/combiner.h +88 -0
  538. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  539. data/src/core/lib/iomgr/dynamic_annotations.h +67 -0
  540. data/src/core/lib/iomgr/endpoint.cc +67 -0
  541. data/src/core/lib/iomgr/endpoint.h +106 -0
  542. data/src/core/lib/iomgr/endpoint_cfstream.cc +376 -0
  543. data/src/core/lib/iomgr/endpoint_cfstream.h +49 -0
  544. data/src/core/lib/iomgr/endpoint_pair.h +33 -0
  545. data/src/core/lib/iomgr/endpoint_pair_posix.cc +73 -0
  546. data/src/core/lib/iomgr/endpoint_pair_uv.cc +40 -0
  547. data/src/core/lib/iomgr/endpoint_pair_windows.cc +87 -0
  548. data/src/core/lib/iomgr/error.cc +812 -0
  549. data/src/core/lib/iomgr/error.h +276 -0
  550. data/src/core/lib/iomgr/error_cfstream.cc +52 -0
  551. data/src/core/lib/iomgr/error_cfstream.h +31 -0
  552. data/src/core/lib/iomgr/error_internal.h +61 -0
  553. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  554. data/src/core/lib/iomgr/ev_apple.h +43 -0
  555. data/src/core/lib/iomgr/ev_epoll1_linux.cc +1365 -0
  556. data/src/core/lib/iomgr/ev_epoll1_linux.h +31 -0
  557. data/src/core/lib/iomgr/ev_epollex_linux.cc +1656 -0
  558. data/src/core/lib/iomgr/ev_epollex_linux.h +30 -0
  559. data/src/core/lib/iomgr/ev_poll_posix.cc +1427 -0
  560. data/src/core/lib/iomgr/ev_poll_posix.h +29 -0
  561. data/src/core/lib/iomgr/ev_posix.cc +417 -0
  562. data/src/core/lib/iomgr/ev_posix.h +207 -0
  563. data/src/core/lib/iomgr/ev_windows.cc +30 -0
  564. data/src/core/lib/iomgr/exec_ctx.cc +224 -0
  565. data/src/core/lib/iomgr/exec_ctx.h +380 -0
  566. data/src/core/lib/iomgr/executor.cc +469 -0
  567. data/src/core/lib/iomgr/executor.h +122 -0
  568. data/src/core/lib/iomgr/executor/mpmcqueue.cc +183 -0
  569. data/src/core/lib/iomgr/executor/mpmcqueue.h +175 -0
  570. data/src/core/lib/iomgr/executor/threadpool.cc +137 -0
  571. data/src/core/lib/iomgr/executor/threadpool.h +149 -0
  572. data/src/core/lib/iomgr/fork_posix.cc +119 -0
  573. data/src/core/lib/iomgr/fork_windows.cc +41 -0
  574. data/src/core/lib/iomgr/gethostname.h +26 -0
  575. data/src/core/lib/iomgr/gethostname_fallback.cc +30 -0
  576. data/src/core/lib/iomgr/gethostname_host_name_max.cc +40 -0
  577. data/src/core/lib/iomgr/gethostname_sysconf.cc +40 -0
  578. data/src/core/lib/iomgr/grpc_if_nametoindex.h +30 -0
  579. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +42 -0
  580. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +38 -0
  581. data/src/core/lib/iomgr/internal_errqueue.cc +67 -0
  582. data/src/core/lib/iomgr/internal_errqueue.h +191 -0
  583. data/src/core/lib/iomgr/iocp_windows.cc +157 -0
  584. data/src/core/lib/iomgr/iocp_windows.h +48 -0
  585. data/src/core/lib/iomgr/iomgr.cc +194 -0
  586. data/src/core/lib/iomgr/iomgr.h +60 -0
  587. data/src/core/lib/iomgr/iomgr_custom.cc +79 -0
  588. data/src/core/lib/iomgr/iomgr_custom.h +49 -0
  589. data/src/core/lib/iomgr/iomgr_internal.cc +57 -0
  590. data/src/core/lib/iomgr/iomgr_internal.h +73 -0
  591. data/src/core/lib/iomgr/iomgr_posix.cc +89 -0
  592. data/src/core/lib/iomgr/iomgr_posix.h +26 -0
  593. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +171 -0
  594. data/src/core/lib/iomgr/iomgr_uv.cc +43 -0
  595. data/src/core/lib/iomgr/iomgr_windows.cc +106 -0
  596. data/src/core/lib/iomgr/is_epollexclusive_available.cc +105 -0
  597. data/src/core/lib/iomgr/is_epollexclusive_available.h +36 -0
  598. data/src/core/lib/iomgr/load_file.cc +81 -0
  599. data/src/core/lib/iomgr/load_file.h +35 -0
  600. data/src/core/lib/iomgr/lockfree_event.cc +255 -0
  601. data/src/core/lib/iomgr/lockfree_event.h +72 -0
  602. data/src/core/lib/iomgr/nameser.h +106 -0
  603. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +87 -0
  604. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +88 -0
  605. data/src/core/lib/iomgr/polling_entity.cc +96 -0
  606. data/src/core/lib/iomgr/polling_entity.h +68 -0
  607. data/src/core/lib/iomgr/pollset.cc +56 -0
  608. data/src/core/lib/iomgr/pollset.h +99 -0
  609. data/src/core/lib/iomgr/pollset_custom.cc +106 -0
  610. data/src/core/lib/iomgr/pollset_custom.h +35 -0
  611. data/src/core/lib/iomgr/pollset_set.cc +55 -0
  612. data/src/core/lib/iomgr/pollset_set.h +55 -0
  613. data/src/core/lib/iomgr/pollset_set_custom.cc +48 -0
  614. data/src/core/lib/iomgr/pollset_set_custom.h +26 -0
  615. data/src/core/lib/iomgr/pollset_set_windows.cc +51 -0
  616. data/src/core/lib/iomgr/pollset_set_windows.h +26 -0
  617. data/src/core/lib/iomgr/pollset_uv.cc +93 -0
  618. data/src/core/lib/iomgr/pollset_uv.h +32 -0
  619. data/src/core/lib/iomgr/pollset_windows.cc +243 -0
  620. data/src/core/lib/iomgr/pollset_windows.h +70 -0
  621. data/src/core/lib/iomgr/port.h +244 -0
  622. data/src/core/lib/iomgr/python_util.h +46 -0
  623. data/src/core/lib/iomgr/resolve_address.cc +50 -0
  624. data/src/core/lib/iomgr/resolve_address.h +81 -0
  625. data/src/core/lib/iomgr/resolve_address_custom.cc +173 -0
  626. data/src/core/lib/iomgr/resolve_address_custom.h +45 -0
  627. data/src/core/lib/iomgr/resolve_address_posix.cc +178 -0
  628. data/src/core/lib/iomgr/resolve_address_windows.cc +154 -0
  629. data/src/core/lib/iomgr/resource_quota.cc +1013 -0
  630. data/src/core/lib/iomgr/resource_quota.h +177 -0
  631. data/src/core/lib/iomgr/sockaddr.h +32 -0
  632. data/src/core/lib/iomgr/sockaddr_custom.h +54 -0
  633. data/src/core/lib/iomgr/sockaddr_posix.h +55 -0
  634. data/src/core/lib/iomgr/sockaddr_utils.cc +293 -0
  635. data/src/core/lib/iomgr/sockaddr_utils.h +79 -0
  636. data/src/core/lib/iomgr/sockaddr_windows.h +55 -0
  637. data/src/core/lib/iomgr/socket_factory_posix.cc +94 -0
  638. data/src/core/lib/iomgr/socket_factory_posix.h +68 -0
  639. data/src/core/lib/iomgr/socket_mutator.cc +83 -0
  640. data/src/core/lib/iomgr/socket_mutator.h +60 -0
  641. data/src/core/lib/iomgr/socket_utils.h +47 -0
  642. data/src/core/lib/iomgr/socket_utils_common_posix.cc +473 -0
  643. data/src/core/lib/iomgr/socket_utils_linux.cc +42 -0
  644. data/src/core/lib/iomgr/socket_utils_posix.cc +58 -0
  645. data/src/core/lib/iomgr/socket_utils_posix.h +163 -0
  646. data/src/core/lib/iomgr/socket_utils_uv.cc +49 -0
  647. data/src/core/lib/iomgr/socket_utils_windows.cc +47 -0
  648. data/src/core/lib/iomgr/socket_windows.cc +203 -0
  649. data/src/core/lib/iomgr/socket_windows.h +127 -0
  650. data/src/core/lib/iomgr/sys_epoll_wrapper.h +30 -0
  651. data/src/core/lib/iomgr/tcp_client.cc +36 -0
  652. data/src/core/lib/iomgr/tcp_client.h +52 -0
  653. data/src/core/lib/iomgr/tcp_client_cfstream.cc +215 -0
  654. data/src/core/lib/iomgr/tcp_client_custom.cc +163 -0
  655. data/src/core/lib/iomgr/tcp_client_posix.cc +360 -0
  656. data/src/core/lib/iomgr/tcp_client_posix.h +68 -0
  657. data/src/core/lib/iomgr/tcp_client_windows.cc +232 -0
  658. data/src/core/lib/iomgr/tcp_custom.cc +370 -0
  659. data/src/core/lib/iomgr/tcp_custom.h +84 -0
  660. data/src/core/lib/iomgr/tcp_posix.cc +1855 -0
  661. data/src/core/lib/iomgr/tcp_posix.h +60 -0
  662. data/src/core/lib/iomgr/tcp_server.cc +78 -0
  663. data/src/core/lib/iomgr/tcp_server.h +143 -0
  664. data/src/core/lib/iomgr/tcp_server_custom.cc +485 -0
  665. data/src/core/lib/iomgr/tcp_server_posix.cc +638 -0
  666. data/src/core/lib/iomgr/tcp_server_utils_posix.h +125 -0
  667. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +223 -0
  668. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +181 -0
  669. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +36 -0
  670. data/src/core/lib/iomgr/tcp_server_windows.cc +564 -0
  671. data/src/core/lib/iomgr/tcp_uv.cc +419 -0
  672. data/src/core/lib/iomgr/tcp_windows.cc +533 -0
  673. data/src/core/lib/iomgr/tcp_windows.h +53 -0
  674. data/src/core/lib/iomgr/time_averaged_stats.cc +64 -0
  675. data/src/core/lib/iomgr/time_averaged_stats.h +72 -0
  676. data/src/core/lib/iomgr/timer.cc +45 -0
  677. data/src/core/lib/iomgr/timer.h +127 -0
  678. data/src/core/lib/iomgr/timer_custom.cc +95 -0
  679. data/src/core/lib/iomgr/timer_custom.h +43 -0
  680. data/src/core/lib/iomgr/timer_generic.cc +747 -0
  681. data/src/core/lib/iomgr/timer_generic.h +39 -0
  682. data/src/core/lib/iomgr/timer_heap.cc +135 -0
  683. data/src/core/lib/iomgr/timer_heap.h +43 -0
  684. data/src/core/lib/iomgr/timer_manager.cc +363 -0
  685. data/src/core/lib/iomgr/timer_manager.h +41 -0
  686. data/src/core/lib/iomgr/timer_uv.cc +66 -0
  687. data/src/core/lib/iomgr/udp_server.cc +747 -0
  688. data/src/core/lib/iomgr/udp_server.h +101 -0
  689. data/src/core/lib/iomgr/unix_sockets_posix.cc +104 -0
  690. data/src/core/lib/iomgr/unix_sockets_posix.h +43 -0
  691. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +49 -0
  692. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +82 -0
  693. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +38 -0
  694. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +100 -0
  695. data/src/core/lib/iomgr/wakeup_fd_pipe.h +28 -0
  696. data/src/core/lib/iomgr/wakeup_fd_posix.cc +69 -0
  697. data/src/core/lib/iomgr/wakeup_fd_posix.h +96 -0
  698. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  699. data/src/core/lib/iomgr/work_serializer.h +65 -0
  700. data/src/core/lib/json/json.h +240 -0
  701. data/src/core/lib/json/json_reader.cc +855 -0
  702. data/src/core/lib/json/json_writer.cc +337 -0
  703. data/src/core/lib/profiling/basic_timers.cc +293 -0
  704. data/src/core/lib/profiling/stap_timers.cc +50 -0
  705. data/src/core/lib/profiling/timers.h +94 -0
  706. data/src/core/lib/security/context/security_context.cc +321 -0
  707. data/src/core/lib/security/context/security_context.h +150 -0
  708. data/src/core/lib/security/credentials/alts/alts_credentials.cc +110 -0
  709. data/src/core/lib/security/credentials/alts/alts_credentials.h +109 -0
  710. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +72 -0
  711. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +57 -0
  712. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +68 -0
  713. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +33 -0
  714. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +102 -0
  715. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +127 -0
  716. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +46 -0
  717. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +75 -0
  718. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +59 -0
  719. data/src/core/lib/security/credentials/composite/composite_credentials.cc +229 -0
  720. data/src/core/lib/security/credentials/composite/composite_credentials.h +106 -0
  721. data/src/core/lib/security/credentials/credentials.cc +162 -0
  722. data/src/core/lib/security/credentials/credentials.h +283 -0
  723. data/src/core/lib/security/credentials/credentials_metadata.cc +62 -0
  724. data/src/core/lib/security/credentials/fake/fake_credentials.cc +112 -0
  725. data/src/core/lib/security/credentials/fake/fake_credentials.h +87 -0
  726. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +41 -0
  727. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +383 -0
  728. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +87 -0
  729. data/src/core/lib/security/credentials/iam/iam_credentials.cc +80 -0
  730. data/src/core/lib/security/credentials/iam/iam_credentials.h +49 -0
  731. data/src/core/lib/security/credentials/jwt/json_token.cc +288 -0
  732. data/src/core/lib/security/credentials/jwt/json_token.h +75 -0
  733. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +172 -0
  734. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +80 -0
  735. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +925 -0
  736. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +122 -0
  737. data/src/core/lib/security/credentials/local/local_credentials.cc +64 -0
  738. data/src/core/lib/security/credentials/local/local_credentials.h +61 -0
  739. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +771 -0
  740. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +171 -0
  741. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +269 -0
  742. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +72 -0
  743. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +364 -0
  744. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +99 -0
  745. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +245 -0
  746. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +313 -0
  747. data/src/core/lib/security/credentials/tls/tls_credentials.cc +128 -0
  748. data/src/core/lib/security/credentials/tls/tls_credentials.h +62 -0
  749. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +301 -0
  750. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +76 -0
  751. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +324 -0
  752. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +45 -0
  753. data/src/core/lib/security/security_connector/load_system_roots.h +29 -0
  754. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +32 -0
  755. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +171 -0
  756. data/src/core/lib/security/security_connector/load_system_roots_linux.h +44 -0
  757. data/src/core/lib/security/security_connector/local/local_security_connector.cc +281 -0
  758. data/src/core/lib/security/security_connector/local/local_security_connector.h +59 -0
  759. data/src/core/lib/security/security_connector/security_connector.cc +129 -0
  760. data/src/core/lib/security/security_connector/security_connector.h +176 -0
  761. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +439 -0
  762. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +77 -0
  763. data/src/core/lib/security/security_connector/ssl_utils.cc +563 -0
  764. data/src/core/lib/security/security_connector/ssl_utils.h +184 -0
  765. data/src/core/lib/security/security_connector/ssl_utils_config.cc +32 -0
  766. data/src/core/lib/security/security_connector/ssl_utils_config.h +30 -0
  767. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +603 -0
  768. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +183 -0
  769. data/src/core/lib/security/transport/auth_filters.h +35 -0
  770. data/src/core/lib/security/transport/client_auth_filter.cc +466 -0
  771. data/src/core/lib/security/transport/secure_endpoint.cc +446 -0
  772. data/src/core/lib/security/transport/secure_endpoint.h +41 -0
  773. data/src/core/lib/security/transport/security_handshaker.cc +574 -0
  774. data/src/core/lib/security/transport/security_handshaker.h +45 -0
  775. data/src/core/lib/security/transport/server_auth_filter.cc +326 -0
  776. data/src/core/lib/security/transport/target_authority_table.cc +75 -0
  777. data/src/core/lib/security/transport/target_authority_table.h +40 -0
  778. data/src/core/lib/security/transport/tsi_error.cc +29 -0
  779. data/src/core/lib/security/transport/tsi_error.h +29 -0
  780. data/src/core/lib/security/util/json_util.cc +73 -0
  781. data/src/core/lib/security/util/json_util.h +44 -0
  782. data/src/core/lib/slice/b64.cc +239 -0
  783. data/src/core/lib/slice/b64.h +50 -0
  784. data/src/core/lib/slice/percent_encoding.cc +169 -0
  785. data/src/core/lib/slice/percent_encoding.h +65 -0
  786. data/src/core/lib/slice/slice.cc +559 -0
  787. data/src/core/lib/slice/slice_buffer.cc +413 -0
  788. data/src/core/lib/slice/slice_hash_table.h +199 -0
  789. data/src/core/lib/slice/slice_intern.cc +375 -0
  790. data/src/core/lib/slice/slice_internal.h +364 -0
  791. data/src/core/lib/slice/slice_string_helpers.cc +127 -0
  792. data/src/core/lib/slice/slice_string_helpers.h +49 -0
  793. data/src/core/lib/slice/slice_utils.h +200 -0
  794. data/src/core/lib/slice/slice_weak_hash_table.h +102 -0
  795. data/src/core/lib/surface/api_trace.cc +24 -0
  796. data/src/core/lib/surface/api_trace.h +52 -0
  797. data/src/core/lib/surface/byte_buffer.cc +92 -0
  798. data/src/core/lib/surface/byte_buffer_reader.cc +101 -0
  799. data/src/core/lib/surface/call.cc +2044 -0
  800. data/src/core/lib/surface/call.h +125 -0
  801. data/src/core/lib/surface/call_details.cc +41 -0
  802. data/src/core/lib/surface/call_log_batch.cc +111 -0
  803. data/src/core/lib/surface/call_test_only.h +43 -0
  804. data/src/core/lib/surface/channel.cc +543 -0
  805. data/src/core/lib/surface/channel.h +158 -0
  806. data/src/core/lib/surface/channel_init.cc +109 -0
  807. data/src/core/lib/surface/channel_init.h +78 -0
  808. data/src/core/lib/surface/channel_ping.cc +64 -0
  809. data/src/core/lib/surface/channel_stack_type.cc +58 -0
  810. data/src/core/lib/surface/channel_stack_type.h +47 -0
  811. data/src/core/lib/surface/completion_queue.cc +1438 -0
  812. data/src/core/lib/surface/completion_queue.h +97 -0
  813. data/src/core/lib/surface/completion_queue_factory.cc +88 -0
  814. data/src/core/lib/surface/completion_queue_factory.h +38 -0
  815. data/src/core/lib/surface/event_string.cc +61 -0
  816. data/src/core/lib/surface/event_string.h +31 -0
  817. data/src/core/lib/surface/init.cc +250 -0
  818. data/src/core/lib/surface/init.h +27 -0
  819. data/src/core/lib/surface/init_secure.cc +81 -0
  820. data/src/core/lib/surface/lame_client.cc +191 -0
  821. data/src/core/lib/surface/lame_client.h +28 -0
  822. data/src/core/lib/surface/metadata_array.cc +36 -0
  823. data/src/core/lib/surface/server.cc +1800 -0
  824. data/src/core/lib/surface/server.h +99 -0
  825. data/src/core/lib/surface/validate_metadata.cc +105 -0
  826. data/src/core/lib/surface/validate_metadata.h +41 -0
  827. data/src/core/lib/surface/version.cc +28 -0
  828. data/src/core/lib/transport/bdp_estimator.cc +87 -0
  829. data/src/core/lib/transport/bdp_estimator.h +94 -0
  830. data/src/core/lib/transport/byte_stream.cc +158 -0
  831. data/src/core/lib/transport/byte_stream.h +165 -0
  832. data/src/core/lib/transport/connectivity_state.cc +180 -0
  833. data/src/core/lib/transport/connectivity_state.h +131 -0
  834. data/src/core/lib/transport/error_utils.cc +141 -0
  835. data/src/core/lib/transport/error_utils.h +46 -0
  836. data/src/core/lib/transport/http2_errors.h +41 -0
  837. data/src/core/lib/transport/metadata.cc +679 -0
  838. data/src/core/lib/transport/metadata.h +446 -0
  839. data/src/core/lib/transport/metadata_batch.cc +392 -0
  840. data/src/core/lib/transport/metadata_batch.h +191 -0
  841. data/src/core/lib/transport/pid_controller.cc +51 -0
  842. data/src/core/lib/transport/pid_controller.h +116 -0
  843. data/src/core/lib/transport/static_metadata.cc +1230 -0
  844. data/src/core/lib/transport/static_metadata.h +597 -0
  845. data/src/core/lib/transport/status_conversion.cc +92 -0
  846. data/src/core/lib/transport/status_conversion.h +38 -0
  847. data/src/core/lib/transport/status_metadata.cc +61 -0
  848. data/src/core/lib/transport/status_metadata.h +48 -0
  849. data/src/core/lib/transport/timeout_encoding.cc +151 -0
  850. data/src/core/lib/transport/timeout_encoding.h +38 -0
  851. data/src/core/lib/transport/transport.cc +259 -0
  852. data/src/core/lib/transport/transport.h +456 -0
  853. data/src/core/lib/transport/transport_impl.h +71 -0
  854. data/src/core/lib/transport/transport_op_string.cc +169 -0
  855. data/src/core/lib/uri/uri_parser.cc +314 -0
  856. data/src/core/lib/uri/uri_parser.h +49 -0
  857. data/src/core/plugin_registry/grpc_plugin_registry.cc +121 -0
  858. data/src/core/tsi/alts/crypt/aes_gcm.cc +687 -0
  859. data/src/core/tsi/alts/crypt/gsec.cc +189 -0
  860. data/src/core/tsi/alts/crypt/gsec.h +454 -0
  861. data/src/core/tsi/alts/frame_protector/alts_counter.cc +118 -0
  862. data/src/core/tsi/alts/frame_protector/alts_counter.h +98 -0
  863. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +66 -0
  864. data/src/core/tsi/alts/frame_protector/alts_crypter.h +255 -0
  865. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +407 -0
  866. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +55 -0
  867. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +114 -0
  868. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +114 -0
  869. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +105 -0
  870. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +103 -0
  871. data/src/core/tsi/alts/frame_protector/frame_handler.cc +218 -0
  872. data/src/core/tsi/alts/frame_protector/frame_handler.h +236 -0
  873. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +899 -0
  874. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +161 -0
  875. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +83 -0
  876. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +73 -0
  877. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +674 -0
  878. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +104 -0
  879. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +88 -0
  880. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +64 -0
  881. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +53 -0
  882. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +223 -0
  883. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +171 -0
  884. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +226 -0
  885. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +54 -0
  886. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +144 -0
  887. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +49 -0
  888. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +91 -0
  889. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +174 -0
  890. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +99 -0
  891. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +476 -0
  892. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +199 -0
  893. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +307 -0
  894. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +57 -0
  895. data/src/core/tsi/fake_transport_security.cc +789 -0
  896. data/src/core/tsi/fake_transport_security.h +47 -0
  897. data/src/core/tsi/local_transport_security.cc +211 -0
  898. data/src/core/tsi/local_transport_security.h +51 -0
  899. data/src/core/tsi/ssl/session_cache/ssl_session.h +71 -0
  900. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +57 -0
  901. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +214 -0
  902. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +90 -0
  903. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +75 -0
  904. data/src/core/tsi/ssl_transport_security.cc +2124 -0
  905. data/src/core/tsi/ssl_transport_security.h +353 -0
  906. data/src/core/tsi/ssl_types.h +42 -0
  907. data/src/core/tsi/transport_security.cc +370 -0
  908. data/src/core/tsi/transport_security.h +127 -0
  909. data/src/core/tsi/transport_security_grpc.cc +73 -0
  910. data/src/core/tsi/transport_security_grpc.h +79 -0
  911. data/src/core/tsi/transport_security_interface.h +476 -0
  912. data/src/ruby/bin/math_client.rb +140 -0
  913. data/src/ruby/bin/math_pb.rb +34 -0
  914. data/src/ruby/bin/math_server.rb +191 -0
  915. data/src/ruby/bin/math_services_pb.rb +51 -0
  916. data/src/ruby/bin/noproto_client.rb +93 -0
  917. data/src/ruby/bin/noproto_server.rb +97 -0
  918. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  919. data/src/ruby/ext/grpc/ext-export.gcc +6 -0
  920. data/src/ruby/ext/grpc/extconf.rb +107 -0
  921. data/src/ruby/ext/grpc/rb_byte_buffer.c +64 -0
  922. data/src/ruby/ext/grpc/rb_byte_buffer.h +35 -0
  923. data/src/ruby/ext/grpc/rb_call.c +1050 -0
  924. data/src/ruby/ext/grpc/rb_call.h +53 -0
  925. data/src/ruby/ext/grpc/rb_call_credentials.c +297 -0
  926. data/src/ruby/ext/grpc/rb_call_credentials.h +31 -0
  927. data/src/ruby/ext/grpc/rb_channel.c +835 -0
  928. data/src/ruby/ext/grpc/rb_channel.h +34 -0
  929. data/src/ruby/ext/grpc/rb_channel_args.c +155 -0
  930. data/src/ruby/ext/grpc/rb_channel_args.h +38 -0
  931. data/src/ruby/ext/grpc/rb_channel_credentials.c +267 -0
  932. data/src/ruby/ext/grpc/rb_channel_credentials.h +32 -0
  933. data/src/ruby/ext/grpc/rb_completion_queue.c +100 -0
  934. data/src/ruby/ext/grpc/rb_completion_queue.h +36 -0
  935. data/src/ruby/ext/grpc/rb_compression_options.c +470 -0
  936. data/src/ruby/ext/grpc/rb_compression_options.h +29 -0
  937. data/src/ruby/ext/grpc/rb_enable_cpp.cc +22 -0
  938. data/src/ruby/ext/grpc/rb_event_thread.c +143 -0
  939. data/src/ruby/ext/grpc/rb_event_thread.h +21 -0
  940. data/src/ruby/ext/grpc/rb_grpc.c +328 -0
  941. data/src/ruby/ext/grpc/rb_grpc.h +76 -0
  942. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +573 -0
  943. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +865 -0
  944. data/src/ruby/ext/grpc/rb_loader.c +57 -0
  945. data/src/ruby/ext/grpc/rb_loader.h +25 -0
  946. data/src/ruby/ext/grpc/rb_server.c +372 -0
  947. data/src/ruby/ext/grpc/rb_server.h +32 -0
  948. data/src/ruby/ext/grpc/rb_server_credentials.c +243 -0
  949. data/src/ruby/ext/grpc/rb_server_credentials.h +32 -0
  950. data/src/ruby/lib/grpc.rb +37 -0
  951. data/src/ruby/lib/grpc/core/status_codes.rb +135 -0
  952. data/src/ruby/lib/grpc/core/time_consts.rb +56 -0
  953. data/src/ruby/lib/grpc/errors.rb +277 -0
  954. data/src/ruby/lib/grpc/generic/active_call.rb +669 -0
  955. data/src/ruby/lib/grpc/generic/bidi_call.rb +233 -0
  956. data/src/ruby/lib/grpc/generic/client_stub.rb +501 -0
  957. data/src/ruby/lib/grpc/generic/interceptor_registry.rb +53 -0
  958. data/src/ruby/lib/grpc/generic/interceptors.rb +186 -0
  959. data/src/ruby/lib/grpc/generic/rpc_desc.rb +204 -0
  960. data/src/ruby/lib/grpc/generic/rpc_server.rb +551 -0
  961. data/src/ruby/lib/grpc/generic/service.rb +211 -0
  962. data/src/ruby/lib/grpc/google_rpc_status_utils.rb +40 -0
  963. data/src/ruby/lib/grpc/grpc.rb +24 -0
  964. data/src/ruby/lib/grpc/logconfig.rb +44 -0
  965. data/src/ruby/lib/grpc/notifier.rb +45 -0
  966. data/src/ruby/lib/grpc/structs.rb +15 -0
  967. data/src/ruby/lib/grpc/version.rb +18 -0
  968. data/src/ruby/pb/README.md +42 -0
  969. data/src/ruby/pb/generate_proto_ruby.sh +51 -0
  970. data/src/ruby/pb/grpc/health/checker.rb +75 -0
  971. data/src/ruby/pb/grpc/health/v1/health_pb.rb +31 -0
  972. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +62 -0
  973. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +44 -0
  974. data/src/ruby/pb/grpc/testing/metrics_pb.rb +28 -0
  975. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +49 -0
  976. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +17 -0
  977. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +105 -0
  978. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +16 -0
  979. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +118 -0
  980. data/src/ruby/spec/call_credentials_spec.rb +42 -0
  981. data/src/ruby/spec/call_spec.rb +180 -0
  982. data/src/ruby/spec/channel_connection_spec.rb +126 -0
  983. data/src/ruby/spec/channel_credentials_spec.rb +82 -0
  984. data/src/ruby/spec/channel_spec.rb +234 -0
  985. data/src/ruby/spec/client_auth_spec.rb +126 -0
  986. data/src/ruby/spec/client_server_spec.rb +664 -0
  987. data/src/ruby/spec/compression_options_spec.rb +149 -0
  988. data/src/ruby/spec/debug_message_spec.rb +134 -0
  989. data/src/ruby/spec/error_sanity_spec.rb +49 -0
  990. data/src/ruby/spec/errors_spec.rb +142 -0
  991. data/src/ruby/spec/generic/active_call_spec.rb +672 -0
  992. data/src/ruby/spec/generic/client_interceptors_spec.rb +153 -0
  993. data/src/ruby/spec/generic/client_stub_spec.rb +1083 -0
  994. data/src/ruby/spec/generic/interceptor_registry_spec.rb +65 -0
  995. data/src/ruby/spec/generic/rpc_desc_spec.rb +374 -0
  996. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +127 -0
  997. data/src/ruby/spec/generic/rpc_server_spec.rb +748 -0
  998. data/src/ruby/spec/generic/server_interceptors_spec.rb +218 -0
  999. data/src/ruby/spec/generic/service_spec.rb +263 -0
  1000. data/src/ruby/spec/google_rpc_status_utils_spec.rb +282 -0
  1001. data/src/ruby/spec/pb/codegen/grpc/testing/package_options.proto +28 -0
  1002. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import.proto +22 -0
  1003. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  1004. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +41 -0
  1005. data/src/ruby/spec/pb/codegen/package_option_spec.rb +82 -0
  1006. data/src/ruby/spec/pb/duplicate/codegen_spec.rb +57 -0
  1007. data/src/ruby/spec/pb/health/checker_spec.rb +236 -0
  1008. data/src/ruby/spec/server_credentials_spec.rb +79 -0
  1009. data/src/ruby/spec/server_spec.rb +209 -0
  1010. data/src/ruby/spec/spec_helper.rb +61 -0
  1011. data/src/ruby/spec/support/helpers.rb +107 -0
  1012. data/src/ruby/spec/support/services.rb +160 -0
  1013. data/src/ruby/spec/testdata/README +1 -0
  1014. data/src/ruby/spec/testdata/ca.pem +20 -0
  1015. data/src/ruby/spec/testdata/client.key +28 -0
  1016. data/src/ruby/spec/testdata/client.pem +20 -0
  1017. data/src/ruby/spec/testdata/server1.key +28 -0
  1018. data/src/ruby/spec/testdata/server1.pem +22 -0
  1019. data/src/ruby/spec/time_consts_spec.rb +74 -0
  1020. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +159 -0
  1021. data/third_party/abseil-cpp/absl/base/attributes.h +621 -0
  1022. data/third_party/abseil-cpp/absl/base/call_once.h +226 -0
  1023. data/third_party/abseil-cpp/absl/base/casts.h +184 -0
  1024. data/third_party/abseil-cpp/absl/base/config.h +671 -0
  1025. data/third_party/abseil-cpp/absl/base/const_init.h +76 -0
  1026. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +129 -0
  1027. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +389 -0
  1028. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  1029. data/third_party/abseil-cpp/absl/base/internal/bits.h +218 -0
  1030. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +107 -0
  1031. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +94 -0
  1032. data/third_party/abseil-cpp/absl/base/internal/endian.h +266 -0
  1033. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  1034. data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  1035. data/third_party/abseil-cpp/absl/base/internal/identity.h +37 -0
  1036. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
  1037. data/third_party/abseil-cpp/absl/base/internal/invoke.h +187 -0
  1038. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +107 -0
  1039. data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  1040. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +240 -0
  1041. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +183 -0
  1042. data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  1043. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +233 -0
  1044. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +243 -0
  1045. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  1046. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +66 -0
  1047. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  1048. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  1049. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +93 -0
  1050. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +37 -0
  1051. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +416 -0
  1052. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +66 -0
  1053. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +271 -0
  1054. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +152 -0
  1055. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +259 -0
  1056. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +108 -0
  1057. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
  1058. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +66 -0
  1059. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +158 -0
  1060. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +140 -0
  1061. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +124 -0
  1062. data/third_party/abseil-cpp/absl/base/log_severity.cc +27 -0
  1063. data/third_party/abseil-cpp/absl/base/log_severity.h +121 -0
  1064. data/third_party/abseil-cpp/absl/base/macros.h +220 -0
  1065. data/third_party/abseil-cpp/absl/base/optimization.h +181 -0
  1066. data/third_party/abseil-cpp/absl/base/options.h +211 -0
  1067. data/third_party/abseil-cpp/absl/base/policy_checks.h +111 -0
  1068. data/third_party/abseil-cpp/absl/base/port.h +26 -0
  1069. data/third_party/abseil-cpp/absl/base/thread_annotations.h +280 -0
  1070. data/third_party/abseil-cpp/absl/container/inlined_vector.h +848 -0
  1071. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +265 -0
  1072. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +892 -0
  1073. data/third_party/abseil-cpp/absl/memory/memory.h +695 -0
  1074. data/third_party/abseil-cpp/absl/meta/type_traits.h +759 -0
  1075. data/third_party/abseil-cpp/absl/numeric/int128.cc +404 -0
  1076. data/third_party/abseil-cpp/absl/numeric/int128.h +1091 -0
  1077. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +302 -0
  1078. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +308 -0
  1079. data/third_party/abseil-cpp/absl/strings/ascii.cc +200 -0
  1080. data/third_party/abseil-cpp/absl/strings/ascii.h +242 -0
  1081. data/third_party/abseil-cpp/absl/strings/charconv.cc +984 -0
  1082. data/third_party/abseil-cpp/absl/strings/charconv.h +119 -0
  1083. data/third_party/abseil-cpp/absl/strings/escaping.cc +949 -0
  1084. data/third_party/abseil-cpp/absl/strings/escaping.h +164 -0
  1085. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +156 -0
  1086. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
  1087. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
  1088. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  1089. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  1090. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +180 -0
  1091. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +58 -0
  1092. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +112 -0
  1093. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +148 -0
  1094. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +36 -0
  1095. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +89 -0
  1096. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +73 -0
  1097. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  1098. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  1099. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  1100. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  1101. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  1102. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  1103. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  1104. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  1105. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  1106. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  1107. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  1108. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  1109. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  1110. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  1111. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +314 -0
  1112. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +455 -0
  1113. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
  1114. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +50 -0
  1115. data/third_party/abseil-cpp/absl/strings/match.cc +40 -0
  1116. data/third_party/abseil-cpp/absl/strings/match.h +90 -0
  1117. data/third_party/abseil-cpp/absl/strings/numbers.cc +965 -0
  1118. data/third_party/abseil-cpp/absl/strings/numbers.h +266 -0
  1119. data/third_party/abseil-cpp/absl/strings/str_cat.cc +246 -0
  1120. data/third_party/abseil-cpp/absl/strings/str_cat.h +408 -0
  1121. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  1122. data/third_party/abseil-cpp/absl/strings/str_join.h +293 -0
  1123. data/third_party/abseil-cpp/absl/strings/str_replace.cc +82 -0
  1124. data/third_party/abseil-cpp/absl/strings/str_replace.h +219 -0
  1125. data/third_party/abseil-cpp/absl/strings/str_split.cc +139 -0
  1126. data/third_party/abseil-cpp/absl/strings/str_split.h +513 -0
  1127. data/third_party/abseil-cpp/absl/strings/string_view.cc +235 -0
  1128. data/third_party/abseil-cpp/absl/strings/string_view.h +622 -0
  1129. data/third_party/abseil-cpp/absl/strings/strip.h +91 -0
  1130. data/third_party/abseil-cpp/absl/strings/substitute.cc +171 -0
  1131. data/third_party/abseil-cpp/absl/strings/substitute.h +693 -0
  1132. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  1133. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  1134. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  1135. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  1136. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  1137. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  1138. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  1139. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  1140. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  1141. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  1142. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  1143. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  1144. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  1145. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  1146. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  1147. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  1148. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  1149. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  1150. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  1151. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  1152. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  1153. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  1154. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  1155. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  1156. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  1157. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  1158. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  1159. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  1160. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  1161. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  1162. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  1163. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
  1164. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +78 -0
  1165. data/third_party/abseil-cpp/absl/types/internal/optional.h +396 -0
  1166. data/third_party/abseil-cpp/absl/types/internal/span.h +128 -0
  1167. data/third_party/abseil-cpp/absl/types/optional.h +776 -0
  1168. data/third_party/abseil-cpp/absl/types/span.h +713 -0
  1169. data/third_party/abseil-cpp/absl/utility/utility.h +350 -0
  1170. data/third_party/address_sorting/address_sorting.c +375 -0
  1171. data/third_party/address_sorting/address_sorting_internal.h +70 -0
  1172. data/third_party/address_sorting/address_sorting_posix.c +97 -0
  1173. data/third_party/address_sorting/address_sorting_windows.c +95 -0
  1174. data/third_party/address_sorting/include/address_sorting/address_sorting.h +113 -0
  1175. data/third_party/boringssl-with-bazel/err_data.c +1439 -0
  1176. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +271 -0
  1177. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +123 -0
  1178. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +93 -0
  1179. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +87 -0
  1180. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +195 -0
  1181. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +261 -0
  1182. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +88 -0
  1183. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +420 -0
  1184. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +305 -0
  1185. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +286 -0
  1186. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +77 -0
  1187. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +93 -0
  1188. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +313 -0
  1189. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +212 -0
  1190. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +151 -0
  1191. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +303 -0
  1192. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +236 -0
  1193. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +446 -0
  1194. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +104 -0
  1195. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +80 -0
  1196. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +105 -0
  1197. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +93 -0
  1198. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +97 -0
  1199. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +91 -0
  1200. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +1244 -0
  1201. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +664 -0
  1202. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +244 -0
  1203. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +387 -0
  1204. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +131 -0
  1205. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +280 -0
  1206. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +206 -0
  1207. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +466 -0
  1208. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +700 -0
  1209. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +330 -0
  1210. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +545 -0
  1211. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +279 -0
  1212. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +317 -0
  1213. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c +192 -0
  1214. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +111 -0
  1215. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +488 -0
  1216. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +115 -0
  1217. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +206 -0
  1218. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +118 -0
  1219. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +64 -0
  1220. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +470 -0
  1221. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +172 -0
  1222. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +52 -0
  1223. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +265 -0
  1224. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +719 -0
  1225. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +688 -0
  1226. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +96 -0
  1227. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +155 -0
  1228. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +184 -0
  1229. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +45 -0
  1230. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +143 -0
  1231. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +152 -0
  1232. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesccm.c +447 -0
  1233. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +283 -0
  1234. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +891 -0
  1235. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +418 -0
  1236. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +85 -0
  1237. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +462 -0
  1238. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +87 -0
  1239. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +688 -0
  1240. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +128 -0
  1241. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +491 -0
  1242. data/third_party/boringssl-with-bazel/src/crypto/cmac/cmac.c +278 -0
  1243. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +810 -0
  1244. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +127 -0
  1245. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +31 -0
  1246. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-fuchsia.c +55 -0
  1247. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-linux.c +62 -0
  1248. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +220 -0
  1249. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.h +201 -0
  1250. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +38 -0
  1251. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +291 -0
  1252. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +38 -0
  1253. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +226 -0
  1254. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +2159 -0
  1255. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +7872 -0
  1256. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +146 -0
  1257. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +539 -0
  1258. data/third_party/boringssl-with-bazel/src/crypto/dh/check.c +217 -0
  1259. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +533 -0
  1260. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.c +160 -0
  1261. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +93 -0
  1262. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +240 -0
  1263. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +980 -0
  1264. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +339 -0
  1265. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +574 -0
  1266. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +95 -0
  1267. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  1268. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  1269. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +124 -0
  1270. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +267 -0
  1271. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +99 -0
  1272. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +850 -0
  1273. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +58 -0
  1274. data/third_party/boringssl-with-bazel/src/crypto/evp/digestsign.c +231 -0
  1275. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +443 -0
  1276. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +388 -0
  1277. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +484 -0
  1278. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +269 -0
  1279. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +273 -0
  1280. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +286 -0
  1281. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +255 -0
  1282. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +104 -0
  1283. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +221 -0
  1284. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +648 -0
  1285. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +194 -0
  1286. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +110 -0
  1287. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +248 -0
  1288. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +146 -0
  1289. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +489 -0
  1290. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +213 -0
  1291. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +151 -0
  1292. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +261 -0
  1293. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  1294. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  1295. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +238 -0
  1296. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +236 -0
  1297. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +106 -0
  1298. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +263 -0
  1299. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c +316 -0
  1300. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c +541 -0
  1301. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +445 -0
  1302. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +230 -0
  1303. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +200 -0
  1304. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +236 -0
  1305. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +886 -0
  1306. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +87 -0
  1307. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +1288 -0
  1308. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +378 -0
  1309. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  1310. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +711 -0
  1311. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +694 -0
  1312. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c +146 -0
  1313. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +502 -0
  1314. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +186 -0
  1315. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +749 -0
  1316. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +1068 -0
  1317. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +341 -0
  1318. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +226 -0
  1319. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +104 -0
  1320. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +364 -0
  1321. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +502 -0
  1322. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +284 -0
  1323. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +620 -0
  1324. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +1302 -0
  1325. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_des.c +237 -0
  1326. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +128 -0
  1327. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +89 -0
  1328. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +785 -0
  1329. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +240 -0
  1330. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +271 -0
  1331. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +296 -0
  1332. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +112 -0
  1333. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +268 -0
  1334. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +1252 -0
  1335. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +465 -0
  1336. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +524 -0
  1337. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +100 -0
  1338. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +775 -0
  1339. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +328 -0
  1340. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +1178 -0
  1341. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
  1342. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +632 -0
  1343. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.h +153 -0
  1344. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  1345. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  1346. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
  1347. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +357 -0
  1348. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
  1349. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +255 -0
  1350. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +270 -0
  1351. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  1352. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +328 -0
  1353. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +32 -0
  1354. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +228 -0
  1355. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +29 -0
  1356. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +256 -0
  1357. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +37 -0
  1358. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +301 -0
  1359. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +167 -0
  1360. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +202 -0
  1361. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +200 -0
  1362. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +729 -0
  1363. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  1364. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +441 -0
  1365. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +96 -0
  1366. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +91 -0
  1367. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +202 -0
  1368. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  1369. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  1370. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  1371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +163 -0
  1372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +378 -0
  1373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +391 -0
  1374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +243 -0
  1375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +127 -0
  1376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +695 -0
  1377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +898 -0
  1378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +1358 -0
  1379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +654 -0
  1380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +53 -0
  1381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +361 -0
  1382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +371 -0
  1383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +343 -0
  1384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +544 -0
  1385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +39 -0
  1386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +165 -0
  1387. data/third_party/boringssl-with-bazel/src/crypto/hkdf/hkdf.c +112 -0
  1388. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +2100 -0
  1389. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +61 -0
  1390. data/third_party/boringssl-with-bazel/src/crypto/internal.h +834 -0
  1391. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +348 -0
  1392. data/third_party/boringssl-with-bazel/src/crypto/mem.c +359 -0
  1393. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +549 -0
  1394. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +11585 -0
  1395. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c +122 -0
  1396. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +261 -0
  1397. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +360 -0
  1398. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +777 -0
  1399. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +87 -0
  1400. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +257 -0
  1401. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +218 -0
  1402. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +65 -0
  1403. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +65 -0
  1404. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +49 -0
  1405. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +159 -0
  1406. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +385 -0
  1407. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +131 -0
  1408. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +316 -0
  1409. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +530 -0
  1410. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1305 -0
  1411. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +41 -0
  1412. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +318 -0
  1413. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +305 -0
  1414. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +856 -0
  1415. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +45 -0
  1416. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +220 -0
  1417. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +52 -0
  1418. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +46 -0
  1419. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +30 -0
  1420. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +70 -0
  1421. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +69 -0
  1422. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c +98 -0
  1423. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +67 -0
  1424. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +53 -0
  1425. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +325 -0
  1426. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +22 -0
  1427. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +82 -0
  1428. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +431 -0
  1429. data/third_party/boringssl-with-bazel/src/crypto/thread.c +110 -0
  1430. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +59 -0
  1431. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +210 -0
  1432. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +260 -0
  1433. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  1434. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  1435. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  1436. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +96 -0
  1437. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +128 -0
  1438. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +653 -0
  1439. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +114 -0
  1440. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +153 -0
  1441. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +842 -0
  1442. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +458 -0
  1443. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +275 -0
  1444. data/third_party/boringssl-with-bazel/src/crypto/x509/charmap.h +15 -0
  1445. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +83 -0
  1446. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +66 -0
  1447. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +385 -0
  1448. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +125 -0
  1449. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +244 -0
  1450. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +544 -0
  1451. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +111 -0
  1452. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +71 -0
  1453. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +157 -0
  1454. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +381 -0
  1455. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +476 -0
  1456. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +106 -0
  1457. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +103 -0
  1458. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +206 -0
  1459. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +834 -0
  1460. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +198 -0
  1461. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +116 -0
  1462. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +341 -0
  1463. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +185 -0
  1464. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +326 -0
  1465. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +204 -0
  1466. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +278 -0
  1467. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +2487 -0
  1468. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +671 -0
  1469. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +210 -0
  1470. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +389 -0
  1471. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +81 -0
  1472. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +137 -0
  1473. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +151 -0
  1474. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +399 -0
  1475. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +111 -0
  1476. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +541 -0
  1477. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +75 -0
  1478. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +98 -0
  1479. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +554 -0
  1480. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +106 -0
  1481. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +368 -0
  1482. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +109 -0
  1483. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +69 -0
  1484. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +80 -0
  1485. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +69 -0
  1486. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +334 -0
  1487. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +198 -0
  1488. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +141 -0
  1489. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +56 -0
  1490. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +286 -0
  1491. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +130 -0
  1492. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +217 -0
  1493. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +155 -0
  1494. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +130 -0
  1495. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +189 -0
  1496. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +842 -0
  1497. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +207 -0
  1498. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +72 -0
  1499. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +629 -0
  1500. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +133 -0
  1501. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +141 -0
  1502. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +463 -0
  1503. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +503 -0
  1504. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +561 -0
  1505. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +100 -0
  1506. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +148 -0
  1507. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +246 -0
  1508. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +122 -0
  1509. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +218 -0
  1510. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +91 -0
  1511. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +371 -0
  1512. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +501 -0
  1513. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +68 -0
  1514. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +288 -0
  1515. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +57 -0
  1516. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +139 -0
  1517. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +110 -0
  1518. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +154 -0
  1519. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +229 -0
  1520. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +843 -0
  1521. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +155 -0
  1522. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +274 -0
  1523. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1395 -0
  1524. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +459 -0
  1525. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +195 -0
  1526. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +121 -0
  1527. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +911 -0
  1528. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +18 -0
  1529. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +892 -0
  1530. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +575 -0
  1531. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +190 -0
  1532. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +933 -0
  1533. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +93 -0
  1534. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1057 -0
  1535. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +137 -0
  1536. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +18 -0
  1537. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +561 -0
  1538. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +96 -0
  1539. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +41 -0
  1540. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +638 -0
  1541. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +91 -0
  1542. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +180 -0
  1543. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +212 -0
  1544. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +149 -0
  1545. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +201 -0
  1546. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +177 -0
  1547. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +319 -0
  1548. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +331 -0
  1549. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +457 -0
  1550. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +16 -0
  1551. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +18 -0
  1552. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +424 -0
  1553. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +372 -0
  1554. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +118 -0
  1555. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +205 -0
  1556. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +109 -0
  1557. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +465 -0
  1558. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1050 -0
  1559. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +203 -0
  1560. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +64 -0
  1561. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +186 -0
  1562. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +100 -0
  1563. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +16 -0
  1564. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +282 -0
  1565. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +108 -0
  1566. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +109 -0
  1567. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +175 -0
  1568. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +4259 -0
  1569. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +236 -0
  1570. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +18 -0
  1571. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +18 -0
  1572. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +67 -0
  1573. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +18 -0
  1574. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +18 -0
  1575. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +435 -0
  1576. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +18 -0
  1577. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +215 -0
  1578. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +269 -0
  1579. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +49 -0
  1580. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +102 -0
  1581. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +111 -0
  1582. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +96 -0
  1583. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +108 -0
  1584. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +818 -0
  1585. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +16 -0
  1586. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +294 -0
  1587. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +37 -0
  1588. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +199 -0
  1589. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +18 -0
  1590. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +5198 -0
  1591. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +333 -0
  1592. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +542 -0
  1593. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +191 -0
  1594. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +632 -0
  1595. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  1596. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +90 -0
  1597. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1207 -0
  1598. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +681 -0
  1599. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +831 -0
  1600. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +179 -0
  1601. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +837 -0
  1602. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +268 -0
  1603. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +273 -0
  1604. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +232 -0
  1605. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +200 -0
  1606. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +353 -0
  1607. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +675 -0
  1608. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +703 -0
  1609. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1890 -0
  1610. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1805 -0
  1611. data/third_party/boringssl-with-bazel/src/ssl/internal.h +3572 -0
  1612. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +724 -0
  1613. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +221 -0
  1614. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +458 -0
  1615. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +432 -0
  1616. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +856 -0
  1617. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +306 -0
  1618. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +1019 -0
  1619. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +1718 -0
  1620. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +585 -0
  1621. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +397 -0
  1622. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +3015 -0
  1623. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +835 -0
  1624. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +1333 -0
  1625. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +230 -0
  1626. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +277 -0
  1627. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +394 -0
  1628. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +1358 -0
  1629. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +365 -0
  1630. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +3870 -0
  1631. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +689 -0
  1632. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1017 -0
  1633. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +513 -0
  1634. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1096 -0
  1635. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +317 -0
  1636. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +703 -0
  1637. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +981 -0
  1638. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +619 -0
  1639. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
  1640. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1226 -0
  1641. data/third_party/cares/ares_build.h +223 -0
  1642. data/third_party/cares/cares/ares.h +670 -0
  1643. data/third_party/cares/cares/ares__close_sockets.c +61 -0
  1644. data/third_party/cares/cares/ares__get_hostent.c +261 -0
  1645. data/third_party/cares/cares/ares__read_line.c +73 -0
  1646. data/third_party/cares/cares/ares__timeval.c +111 -0
  1647. data/third_party/cares/cares/ares_cancel.c +63 -0
  1648. data/third_party/cares/cares/ares_create_query.c +206 -0
  1649. data/third_party/cares/cares/ares_data.c +222 -0
  1650. data/third_party/cares/cares/ares_data.h +72 -0
  1651. data/third_party/cares/cares/ares_destroy.c +113 -0
  1652. data/third_party/cares/cares/ares_dns.h +103 -0
  1653. data/third_party/cares/cares/ares_expand_name.c +209 -0
  1654. data/third_party/cares/cares/ares_expand_string.c +70 -0
  1655. data/third_party/cares/cares/ares_fds.c +59 -0
  1656. data/third_party/cares/cares/ares_free_hostent.c +41 -0
  1657. data/third_party/cares/cares/ares_free_string.c +25 -0
  1658. data/third_party/cares/cares/ares_getenv.c +30 -0
  1659. data/third_party/cares/cares/ares_getenv.h +26 -0
  1660. data/third_party/cares/cares/ares_gethostbyaddr.c +294 -0
  1661. data/third_party/cares/cares/ares_gethostbyname.c +529 -0
  1662. data/third_party/cares/cares/ares_getnameinfo.c +453 -0
  1663. data/third_party/cares/cares/ares_getopt.c +122 -0
  1664. data/third_party/cares/cares/ares_getopt.h +53 -0
  1665. data/third_party/cares/cares/ares_getsock.c +66 -0
  1666. data/third_party/cares/cares/ares_inet_net_pton.h +25 -0
  1667. data/third_party/cares/cares/ares_init.c +2615 -0
  1668. data/third_party/cares/cares/ares_iphlpapi.h +221 -0
  1669. data/third_party/cares/cares/ares_ipv6.h +78 -0
  1670. data/third_party/cares/cares/ares_library_init.c +195 -0
  1671. data/third_party/cares/cares/ares_library_init.h +43 -0
  1672. data/third_party/cares/cares/ares_llist.c +63 -0
  1673. data/third_party/cares/cares/ares_llist.h +39 -0
  1674. data/third_party/cares/cares/ares_mkquery.c +24 -0
  1675. data/third_party/cares/cares/ares_nowarn.c +260 -0
  1676. data/third_party/cares/cares/ares_nowarn.h +61 -0
  1677. data/third_party/cares/cares/ares_options.c +406 -0
  1678. data/third_party/cares/cares/ares_parse_a_reply.c +264 -0
  1679. data/third_party/cares/cares/ares_parse_aaaa_reply.c +264 -0
  1680. data/third_party/cares/cares/ares_parse_mx_reply.c +170 -0
  1681. data/third_party/cares/cares/ares_parse_naptr_reply.c +194 -0
  1682. data/third_party/cares/cares/ares_parse_ns_reply.c +183 -0
  1683. data/third_party/cares/cares/ares_parse_ptr_reply.c +221 -0
  1684. data/third_party/cares/cares/ares_parse_soa_reply.c +133 -0
  1685. data/third_party/cares/cares/ares_parse_srv_reply.c +179 -0
  1686. data/third_party/cares/cares/ares_parse_txt_reply.c +220 -0
  1687. data/third_party/cares/cares/ares_platform.c +11042 -0
  1688. data/third_party/cares/cares/ares_platform.h +43 -0
  1689. data/third_party/cares/cares/ares_private.h +382 -0
  1690. data/third_party/cares/cares/ares_process.c +1473 -0
  1691. data/third_party/cares/cares/ares_query.c +186 -0
  1692. data/third_party/cares/cares/ares_rules.h +125 -0
  1693. data/third_party/cares/cares/ares_search.c +323 -0
  1694. data/third_party/cares/cares/ares_send.c +137 -0
  1695. data/third_party/cares/cares/ares_setup.h +217 -0
  1696. data/third_party/cares/cares/ares_strcasecmp.c +66 -0
  1697. data/third_party/cares/cares/ares_strcasecmp.h +30 -0
  1698. data/third_party/cares/cares/ares_strdup.c +49 -0
  1699. data/third_party/cares/cares/ares_strdup.h +24 -0
  1700. data/third_party/cares/cares/ares_strerror.c +56 -0
  1701. data/third_party/cares/cares/ares_strsplit.c +174 -0
  1702. data/third_party/cares/cares/ares_strsplit.h +43 -0
  1703. data/third_party/cares/cares/ares_timeout.c +88 -0
  1704. data/third_party/cares/cares/ares_version.c +11 -0
  1705. data/third_party/cares/cares/ares_version.h +24 -0
  1706. data/third_party/cares/cares/ares_writev.c +79 -0
  1707. data/third_party/cares/cares/bitncmp.c +59 -0
  1708. data/third_party/cares/cares/bitncmp.h +26 -0
  1709. data/third_party/cares/cares/config-win32.h +351 -0
  1710. data/third_party/cares/cares/inet_net_pton.c +450 -0
  1711. data/third_party/cares/cares/inet_ntop.c +207 -0
  1712. data/third_party/cares/cares/setup_once.h +554 -0
  1713. data/third_party/cares/cares/windows_port.c +22 -0
  1714. data/third_party/cares/config_darwin/ares_config.h +428 -0
  1715. data/third_party/cares/config_freebsd/ares_config.h +505 -0
  1716. data/third_party/cares/config_linux/ares_config.h +461 -0
  1717. data/third_party/cares/config_openbsd/ares_config.h +505 -0
  1718. data/third_party/upb/upb/decode.c +609 -0
  1719. data/third_party/upb/upb/decode.h +21 -0
  1720. data/third_party/upb/upb/encode.c +378 -0
  1721. data/third_party/upb/upb/encode.h +21 -0
  1722. data/third_party/upb/upb/generated_util.h +105 -0
  1723. data/third_party/upb/upb/msg.c +111 -0
  1724. data/third_party/upb/upb/msg.h +69 -0
  1725. data/third_party/upb/upb/port.c +26 -0
  1726. data/third_party/upb/upb/port_def.inc +150 -0
  1727. data/third_party/upb/upb/port_undef.inc +21 -0
  1728. data/third_party/upb/upb/table.c +913 -0
  1729. data/third_party/upb/upb/table.int.h +507 -0
  1730. data/third_party/upb/upb/upb.c +261 -0
  1731. data/third_party/upb/upb/upb.h +364 -0
  1732. data/third_party/zlib/adler32.c +186 -0
  1733. data/third_party/zlib/compress.c +86 -0
  1734. data/third_party/zlib/crc32.c +442 -0
  1735. data/third_party/zlib/crc32.h +441 -0
  1736. data/third_party/zlib/deflate.c +2163 -0
  1737. data/third_party/zlib/deflate.h +349 -0
  1738. data/third_party/zlib/gzclose.c +25 -0
  1739. data/third_party/zlib/gzguts.h +218 -0
  1740. data/third_party/zlib/gzlib.c +637 -0
  1741. data/third_party/zlib/gzread.c +654 -0
  1742. data/third_party/zlib/gzwrite.c +665 -0
  1743. data/third_party/zlib/infback.c +640 -0
  1744. data/third_party/zlib/inffast.c +323 -0
  1745. data/third_party/zlib/inffast.h +11 -0
  1746. data/third_party/zlib/inffixed.h +94 -0
  1747. data/third_party/zlib/inflate.c +1561 -0
  1748. data/third_party/zlib/inflate.h +125 -0
  1749. data/third_party/zlib/inftrees.c +304 -0
  1750. data/third_party/zlib/inftrees.h +62 -0
  1751. data/third_party/zlib/trees.c +1203 -0
  1752. data/third_party/zlib/trees.h +128 -0
  1753. data/third_party/zlib/uncompr.c +93 -0
  1754. data/third_party/zlib/zconf.h +534 -0
  1755. data/third_party/zlib/zlib.h +1912 -0
  1756. data/third_party/zlib/zutil.c +325 -0
  1757. data/third_party/zlib/zutil.h +271 -0
  1758. metadata +2029 -0
@@ -0,0 +1,24 @@
1
+ /*
2
+ *
3
+ * Copyright 2015 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #include <grpc/support/port_platform.h>
20
+
21
+ #include "src/core/lib/debug/trace.h"
22
+ #include "src/core/lib/surface/api_trace.h"
23
+
24
+ grpc_core::TraceFlag grpc_api_trace(false, "api");
@@ -0,0 +1,52 @@
1
+ /*
2
+ *
3
+ * Copyright 2015 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #ifndef GRPC_CORE_LIB_SURFACE_API_TRACE_H
20
+ #define GRPC_CORE_LIB_SURFACE_API_TRACE_H
21
+
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ #include <grpc/support/log.h>
25
+ #include "src/core/lib/debug/trace.h"
26
+
27
+ extern grpc_core::TraceFlag grpc_api_trace;
28
+
29
+ /* Provide unwrapping macros because we're in C89 and variadic macros weren't
30
+ introduced until C99... */
31
+ #define GRPC_API_TRACE_UNWRAP0()
32
+ #define GRPC_API_TRACE_UNWRAP1(a) , a
33
+ #define GRPC_API_TRACE_UNWRAP2(a, b) , a, b
34
+ #define GRPC_API_TRACE_UNWRAP3(a, b, c) , a, b, c
35
+ #define GRPC_API_TRACE_UNWRAP4(a, b, c, d) , a, b, c, d
36
+ #define GRPC_API_TRACE_UNWRAP5(a, b, c, d, e) , a, b, c, d, e
37
+ #define GRPC_API_TRACE_UNWRAP6(a, b, c, d, e, f) , a, b, c, d, e, f
38
+ #define GRPC_API_TRACE_UNWRAP7(a, b, c, d, e, f, g) , a, b, c, d, e, f, g
39
+ #define GRPC_API_TRACE_UNWRAP8(a, b, c, d, e, f, g, h) , a, b, c, d, e, f, g, h
40
+ #define GRPC_API_TRACE_UNWRAP9(a, b, c, d, e, f, g, h, i) \
41
+ , a, b, c, d, e, f, g, h, i
42
+ #define GRPC_API_TRACE_UNWRAP10(a, b, c, d, e, f, g, h, i, j) \
43
+ , a, b, c, d, e, f, g, h, i, j
44
+
45
+ /* Due to the limitations of C89's preprocessor, the arity of the var-arg list
46
+ 'nargs' must be specified. */
47
+ #define GRPC_API_TRACE(fmt, nargs, args) \
48
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace)) { \
49
+ gpr_log(GPR_INFO, fmt GRPC_API_TRACE_UNWRAP##nargs args); \
50
+ }
51
+
52
+ #endif /* GRPC_CORE_LIB_SURFACE_API_TRACE_H */
@@ -0,0 +1,92 @@
1
+ /*
2
+ *
3
+ * Copyright 2015 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #include <grpc/support/port_platform.h>
20
+
21
+ #include <grpc/byte_buffer.h>
22
+ #include <grpc/support/alloc.h>
23
+ #include <grpc/support/log.h>
24
+
25
+ #include "src/core/lib/iomgr/exec_ctx.h"
26
+ #include "src/core/lib/slice/slice_internal.h"
27
+
28
+ grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slices,
29
+ size_t nslices) {
30
+ return grpc_raw_compressed_byte_buffer_create(slices, nslices,
31
+ GRPC_COMPRESS_NONE);
32
+ }
33
+
34
+ grpc_byte_buffer* grpc_raw_compressed_byte_buffer_create(
35
+ grpc_slice* slices, size_t nslices,
36
+ grpc_compression_algorithm compression) {
37
+ size_t i;
38
+ grpc_byte_buffer* bb =
39
+ static_cast<grpc_byte_buffer*>(gpr_malloc(sizeof(grpc_byte_buffer)));
40
+ bb->type = GRPC_BB_RAW;
41
+ bb->data.raw.compression = compression;
42
+ grpc_slice_buffer_init(&bb->data.raw.slice_buffer);
43
+ for (i = 0; i < nslices; i++) {
44
+ grpc_slice_ref_internal(slices[i]);
45
+ grpc_slice_buffer_add(&bb->data.raw.slice_buffer, slices[i]);
46
+ }
47
+ return bb;
48
+ }
49
+
50
+ grpc_byte_buffer* grpc_raw_byte_buffer_from_reader(
51
+ grpc_byte_buffer_reader* reader) {
52
+ grpc_byte_buffer* bb =
53
+ static_cast<grpc_byte_buffer*>(gpr_malloc(sizeof(grpc_byte_buffer)));
54
+ grpc_slice slice;
55
+ bb->type = GRPC_BB_RAW;
56
+ bb->data.raw.compression = GRPC_COMPRESS_NONE;
57
+ grpc_slice_buffer_init(&bb->data.raw.slice_buffer);
58
+
59
+ while (grpc_byte_buffer_reader_next(reader, &slice)) {
60
+ grpc_slice_buffer_add(&bb->data.raw.slice_buffer, slice);
61
+ }
62
+ return bb;
63
+ }
64
+
65
+ grpc_byte_buffer* grpc_byte_buffer_copy(grpc_byte_buffer* bb) {
66
+ switch (bb->type) {
67
+ case GRPC_BB_RAW:
68
+ return grpc_raw_compressed_byte_buffer_create(
69
+ bb->data.raw.slice_buffer.slices, bb->data.raw.slice_buffer.count,
70
+ bb->data.raw.compression);
71
+ }
72
+ GPR_UNREACHABLE_CODE(return nullptr);
73
+ }
74
+
75
+ void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) {
76
+ if (!bb) return;
77
+ grpc_core::ExecCtx exec_ctx;
78
+ switch (bb->type) {
79
+ case GRPC_BB_RAW:
80
+ grpc_slice_buffer_destroy_internal(&bb->data.raw.slice_buffer);
81
+ break;
82
+ }
83
+ gpr_free(bb);
84
+ }
85
+
86
+ size_t grpc_byte_buffer_length(grpc_byte_buffer* bb) {
87
+ switch (bb->type) {
88
+ case GRPC_BB_RAW:
89
+ return bb->data.raw.slice_buffer.length;
90
+ }
91
+ GPR_UNREACHABLE_CODE(return 0);
92
+ }
@@ -0,0 +1,101 @@
1
+ /*
2
+ *
3
+ * Copyright 2015 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #include <grpc/support/port_platform.h>
20
+
21
+ #include <grpc/byte_buffer_reader.h>
22
+ #include <string.h>
23
+
24
+ #include <grpc/byte_buffer.h>
25
+ #include <grpc/grpc.h>
26
+ #include <grpc/slice_buffer.h>
27
+ #include <grpc/support/alloc.h>
28
+ #include <grpc/support/log.h>
29
+
30
+ #include "src/core/lib/iomgr/exec_ctx.h"
31
+ #include "src/core/lib/slice/slice_internal.h"
32
+
33
+ int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
34
+ grpc_byte_buffer* buffer) {
35
+ reader->buffer_in = buffer;
36
+ switch (reader->buffer_in->type) {
37
+ case GRPC_BB_RAW:
38
+ reader->buffer_out = reader->buffer_in;
39
+ reader->current.index = 0;
40
+ break;
41
+ }
42
+ return 1;
43
+ }
44
+
45
+ void grpc_byte_buffer_reader_destroy(grpc_byte_buffer_reader* reader) {
46
+ reader->buffer_out = nullptr;
47
+ }
48
+
49
+ int grpc_byte_buffer_reader_peek(grpc_byte_buffer_reader* reader,
50
+ grpc_slice** slice) {
51
+ switch (reader->buffer_in->type) {
52
+ case GRPC_BB_RAW: {
53
+ grpc_slice_buffer* slice_buffer;
54
+ slice_buffer = &reader->buffer_out->data.raw.slice_buffer;
55
+ if (reader->current.index < slice_buffer->count) {
56
+ *slice = &slice_buffer->slices[reader->current.index];
57
+ reader->current.index += 1;
58
+ return 1;
59
+ }
60
+ break;
61
+ }
62
+ }
63
+ return 0;
64
+ }
65
+
66
+ int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
67
+ grpc_slice* slice) {
68
+ switch (reader->buffer_in->type) {
69
+ case GRPC_BB_RAW: {
70
+ grpc_slice_buffer* slice_buffer;
71
+ slice_buffer = &reader->buffer_out->data.raw.slice_buffer;
72
+ if (reader->current.index < slice_buffer->count) {
73
+ *slice = grpc_slice_ref_internal(
74
+ slice_buffer->slices[reader->current.index]);
75
+ reader->current.index += 1;
76
+ return 1;
77
+ }
78
+ break;
79
+ }
80
+ }
81
+ return 0;
82
+ }
83
+
84
+ grpc_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader* reader) {
85
+ grpc_slice in_slice;
86
+ size_t bytes_read = 0;
87
+ const size_t input_size = grpc_byte_buffer_length(reader->buffer_out);
88
+ grpc_slice out_slice = GRPC_SLICE_MALLOC(input_size);
89
+ uint8_t* const outbuf = GRPC_SLICE_START_PTR(out_slice); /* just an alias */
90
+
91
+ grpc_core::ExecCtx exec_ctx;
92
+ while (grpc_byte_buffer_reader_next(reader, &in_slice) != 0) {
93
+ const size_t slice_length = GRPC_SLICE_LENGTH(in_slice);
94
+ memcpy(&(outbuf[bytes_read]), GRPC_SLICE_START_PTR(in_slice), slice_length);
95
+ bytes_read += slice_length;
96
+ grpc_slice_unref_internal(in_slice);
97
+ GPR_ASSERT(bytes_read <= input_size);
98
+ }
99
+
100
+ return out_slice;
101
+ }
@@ -0,0 +1,2044 @@
1
+ /*
2
+ *
3
+ * Copyright 2015 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #include <grpc/support/port_platform.h>
20
+
21
+ #include <assert.h>
22
+ #include <limits.h>
23
+ #include <stdio.h>
24
+ #include <stdlib.h>
25
+ #include <string.h>
26
+
27
+ #include <grpc/compression.h>
28
+ #include <grpc/grpc.h>
29
+ #include <grpc/slice.h>
30
+ #include <grpc/support/alloc.h>
31
+ #include <grpc/support/log.h>
32
+ #include <grpc/support/string_util.h>
33
+
34
+ #include "src/core/lib/channel/channel_stack.h"
35
+ #include "src/core/lib/compression/algorithm_metadata.h"
36
+ #include "src/core/lib/debug/stats.h"
37
+ #include "src/core/lib/gpr/alloc.h"
38
+ #include "src/core/lib/gpr/string.h"
39
+ #include "src/core/lib/gpr/time_precise.h"
40
+ #include "src/core/lib/gpr/useful.h"
41
+ #include "src/core/lib/gprpp/arena.h"
42
+ #include "src/core/lib/gprpp/manual_constructor.h"
43
+ #include "src/core/lib/gprpp/ref_counted.h"
44
+ #include "src/core/lib/iomgr/timer.h"
45
+ #include "src/core/lib/profiling/timers.h"
46
+ #include "src/core/lib/slice/slice_string_helpers.h"
47
+ #include "src/core/lib/slice/slice_utils.h"
48
+ #include "src/core/lib/surface/api_trace.h"
49
+ #include "src/core/lib/surface/call.h"
50
+ #include "src/core/lib/surface/call_test_only.h"
51
+ #include "src/core/lib/surface/channel.h"
52
+ #include "src/core/lib/surface/completion_queue.h"
53
+ #include "src/core/lib/surface/server.h"
54
+ #include "src/core/lib/surface/validate_metadata.h"
55
+ #include "src/core/lib/transport/error_utils.h"
56
+ #include "src/core/lib/transport/metadata.h"
57
+ #include "src/core/lib/transport/static_metadata.h"
58
+ #include "src/core/lib/transport/status_metadata.h"
59
+ #include "src/core/lib/transport/transport.h"
60
+
61
+ /** The maximum number of concurrent batches possible.
62
+ Based upon the maximum number of individually queueable ops in the batch
63
+ api:
64
+ - initial metadata send
65
+ - message send
66
+ - status/close send (depending on client/server)
67
+ - initial metadata recv
68
+ - message recv
69
+ - status/close recv (depending on client/server) */
70
+ #define MAX_CONCURRENT_BATCHES 6
71
+
72
+ #define MAX_SEND_EXTRA_METADATA_COUNT 3
73
+
74
+ // Used to create arena for the first call.
75
+ #define ESTIMATED_MDELEM_COUNT 16
76
+
77
+ struct batch_control {
78
+ batch_control() = default;
79
+
80
+ grpc_call* call = nullptr;
81
+ grpc_transport_stream_op_batch op;
82
+ /* Share memory for cq_completion and notify_tag as they are never needed
83
+ simultaneously. Each byte used in this data structure count as six bytes
84
+ per call, so any savings we can make are worthwhile,
85
+
86
+ We use notify_tag to determine whether or not to send notification to the
87
+ completion queue. Once we've made that determination, we can reuse the
88
+ memory for cq_completion. */
89
+ union {
90
+ grpc_cq_completion cq_completion;
91
+ struct {
92
+ /* Any given op indicates completion by either (a) calling a closure or
93
+ (b) sending a notification on the call's completion queue. If
94
+ \a is_closure is true, \a tag indicates a closure to be invoked;
95
+ otherwise, \a tag indicates the tag to be used in the notification to
96
+ be sent to the completion queue. */
97
+ void* tag;
98
+ bool is_closure;
99
+ } notify_tag;
100
+ } completion_data;
101
+ grpc_closure start_batch;
102
+ grpc_closure finish_batch;
103
+ grpc_core::Atomic<intptr_t> steps_to_complete;
104
+ gpr_atm batch_error = reinterpret_cast<gpr_atm>(GRPC_ERROR_NONE);
105
+ void set_num_steps_to_complete(uintptr_t steps) {
106
+ steps_to_complete.Store(steps, grpc_core::MemoryOrder::RELEASE);
107
+ }
108
+ bool completed_batch_step() {
109
+ return steps_to_complete.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1;
110
+ }
111
+ };
112
+
113
+ struct parent_call {
114
+ parent_call() { gpr_mu_init(&child_list_mu); }
115
+ ~parent_call() { gpr_mu_destroy(&child_list_mu); }
116
+
117
+ gpr_mu child_list_mu;
118
+ grpc_call* first_child = nullptr;
119
+ };
120
+
121
+ struct child_call {
122
+ child_call(grpc_call* parent) : parent(parent) {}
123
+ grpc_call* parent;
124
+ /** siblings: children of the same parent form a list, and this list is
125
+ protected under
126
+ parent->mu */
127
+ grpc_call* sibling_next = nullptr;
128
+ grpc_call* sibling_prev = nullptr;
129
+ };
130
+
131
+ #define RECV_NONE ((gpr_atm)0)
132
+ #define RECV_INITIAL_METADATA_FIRST ((gpr_atm)1)
133
+
134
+ struct grpc_call {
135
+ grpc_call(grpc_core::Arena* arena, const grpc_call_create_args& args)
136
+ : arena(arena),
137
+ cq(args.cq),
138
+ channel(args.channel),
139
+ is_client(args.server_transport_data == nullptr),
140
+ stream_op_payload(context) {
141
+ for (int i = 0; i < 2; i++) {
142
+ for (int j = 0; j < 2; j++) {
143
+ metadata_batch[i][j].deadline = GRPC_MILLIS_INF_FUTURE;
144
+ }
145
+ }
146
+ }
147
+
148
+ ~grpc_call() {
149
+ gpr_free(static_cast<void*>(const_cast<char*>(final_info.error_string)));
150
+ }
151
+
152
+ grpc_core::RefCount ext_ref;
153
+ grpc_core::Arena* arena;
154
+ grpc_core::CallCombiner call_combiner;
155
+ grpc_completion_queue* cq;
156
+ grpc_polling_entity pollent;
157
+ grpc_channel* channel;
158
+ gpr_cycle_counter start_time = gpr_get_cycle_counter();
159
+ /* parent_call* */ gpr_atm parent_call_atm = 0;
160
+ child_call* child = nullptr;
161
+
162
+ /* client or server call */
163
+ bool is_client;
164
+ /** has grpc_call_unref been called */
165
+ bool destroy_called = false;
166
+ /** flag indicating that cancellation is inherited */
167
+ bool cancellation_is_inherited = false;
168
+ /** which ops are in-flight */
169
+ bool sent_initial_metadata = false;
170
+ bool sending_message = false;
171
+ bool sent_final_op = false;
172
+ bool received_initial_metadata = false;
173
+ bool receiving_message = false;
174
+ bool requested_final_op = false;
175
+ gpr_atm any_ops_sent_atm = 0;
176
+ gpr_atm received_final_op_atm = 0;
177
+
178
+ batch_control* active_batches[MAX_CONCURRENT_BATCHES] = {};
179
+ grpc_transport_stream_op_batch_payload stream_op_payload;
180
+
181
+ /* first idx: is_receiving, second idx: is_trailing */
182
+ grpc_metadata_batch metadata_batch[2][2] = {};
183
+
184
+ /* Buffered read metadata waiting to be returned to the application.
185
+ Element 0 is initial metadata, element 1 is trailing metadata. */
186
+ grpc_metadata_array* buffered_metadata[2] = {};
187
+
188
+ grpc_metadata compression_md;
189
+
190
+ // A char* indicating the peer name.
191
+ gpr_atm peer_string = 0;
192
+
193
+ /* Call data useful used for reporting. Only valid after the call has
194
+ * completed */
195
+ grpc_call_final_info final_info;
196
+
197
+ /* Compression algorithm for *incoming* data */
198
+ grpc_message_compression_algorithm incoming_message_compression_algorithm =
199
+ GRPC_MESSAGE_COMPRESS_NONE;
200
+ /* Stream compression algorithm for *incoming* data */
201
+ grpc_stream_compression_algorithm incoming_stream_compression_algorithm =
202
+ GRPC_STREAM_COMPRESS_NONE;
203
+ /* Supported encodings (compression algorithms), a bitset.
204
+ * Always support no compression. */
205
+ uint32_t encodings_accepted_by_peer = 1 << GRPC_MESSAGE_COMPRESS_NONE;
206
+ /* Supported stream encodings (stream compression algorithms), a bitset */
207
+ uint32_t stream_encodings_accepted_by_peer = 0;
208
+
209
+ /* Contexts for various subsystems (security, tracing, ...). */
210
+ grpc_call_context_element context[GRPC_CONTEXT_COUNT] = {};
211
+
212
+ /* for the client, extra metadata is initial metadata; for the
213
+ server, it's trailing metadata */
214
+ grpc_linked_mdelem send_extra_metadata[MAX_SEND_EXTRA_METADATA_COUNT];
215
+ int send_extra_metadata_count;
216
+ grpc_millis send_deadline;
217
+
218
+ grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> sending_stream;
219
+
220
+ grpc_core::OrphanablePtr<grpc_core::ByteStream> receiving_stream;
221
+ grpc_byte_buffer** receiving_buffer = nullptr;
222
+ grpc_slice receiving_slice = grpc_empty_slice();
223
+ grpc_closure receiving_slice_ready;
224
+ grpc_closure receiving_stream_ready;
225
+ grpc_closure receiving_initial_metadata_ready;
226
+ grpc_closure receiving_trailing_metadata_ready;
227
+ uint32_t test_only_last_message_flags = 0;
228
+ gpr_atm cancelled = 0;
229
+
230
+ grpc_closure release_call;
231
+
232
+ union {
233
+ struct {
234
+ grpc_status_code* status;
235
+ grpc_slice* status_details;
236
+ const char** error_string;
237
+ } client;
238
+ struct {
239
+ int* cancelled;
240
+ // backpointer to owning server if this is a server side call.
241
+ grpc_server* server;
242
+ } server;
243
+ } final_op;
244
+ gpr_atm status_error = 0;
245
+
246
+ /* recv_state can contain one of the following values:
247
+ RECV_NONE : : no initial metadata and messages received
248
+ RECV_INITIAL_METADATA_FIRST : received initial metadata first
249
+ a batch_control* : received messages first
250
+
251
+ +------1------RECV_NONE------3-----+
252
+ | |
253
+ | |
254
+ v v
255
+ RECV_INITIAL_METADATA_FIRST receiving_stream_ready_bctlp
256
+ | ^ | ^
257
+ | | | |
258
+ +-----2-----+ +-----4-----+
259
+
260
+ For 1, 4: See receiving_initial_metadata_ready() function
261
+ For 2, 3: See receiving_stream_ready() function */
262
+ gpr_atm recv_state = 0;
263
+ };
264
+
265
+ grpc_core::TraceFlag grpc_call_error_trace(false, "call_error");
266
+ grpc_core::TraceFlag grpc_compression_trace(false, "compression");
267
+
268
+ #define CALL_STACK_FROM_CALL(call) \
269
+ (grpc_call_stack*)((char*)(call) + \
270
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
271
+ #define CALL_FROM_CALL_STACK(call_stack) \
272
+ (grpc_call*)(((char*)(call_stack)) - \
273
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
274
+
275
+ #define CALL_ELEM_FROM_CALL(call, idx) \
276
+ grpc_call_stack_element(CALL_STACK_FROM_CALL(call), idx)
277
+ #define CALL_FROM_TOP_ELEM(top_elem) \
278
+ CALL_FROM_CALL_STACK(grpc_call_stack_from_top_element(top_elem))
279
+
280
+ static void execute_batch(grpc_call* call, grpc_transport_stream_op_batch* op,
281
+ grpc_closure* start_batch_closure);
282
+
283
+ static void cancel_with_status(grpc_call* c, grpc_status_code status,
284
+ const char* description);
285
+ static void cancel_with_error(grpc_call* c, grpc_error* error);
286
+ static void destroy_call(void* call_stack, grpc_error* error);
287
+ static void receiving_slice_ready(void* bctlp, grpc_error* error);
288
+ static void set_final_status(grpc_call* call, grpc_error* error);
289
+ static void process_data_after_md(batch_control* bctl);
290
+ static void post_batch_completion(batch_control* bctl);
291
+
292
+ static void add_init_error(grpc_error** composite, grpc_error* new_err) {
293
+ if (new_err == GRPC_ERROR_NONE) return;
294
+ if (*composite == GRPC_ERROR_NONE)
295
+ *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
296
+ *composite = grpc_error_add_child(*composite, new_err);
297
+ }
298
+
299
+ void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
300
+ return call->arena->Alloc(size);
301
+ }
302
+
303
+ static parent_call* get_or_create_parent_call(grpc_call* call) {
304
+ parent_call* p = (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
305
+ if (p == nullptr) {
306
+ p = call->arena->New<parent_call>();
307
+ if (!gpr_atm_rel_cas(&call->parent_call_atm, (gpr_atm) nullptr,
308
+ (gpr_atm)p)) {
309
+ p->~parent_call();
310
+ p = (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
311
+ }
312
+ }
313
+ return p;
314
+ }
315
+
316
+ static parent_call* get_parent_call(grpc_call* call) {
317
+ return (parent_call*)gpr_atm_acq_load(&call->parent_call_atm);
318
+ }
319
+
320
+ size_t grpc_call_get_initial_size_estimate() {
321
+ return sizeof(grpc_call) + sizeof(batch_control) * MAX_CONCURRENT_BATCHES +
322
+ sizeof(grpc_linked_mdelem) * ESTIMATED_MDELEM_COUNT;
323
+ }
324
+
325
+ grpc_error* grpc_call_create(const grpc_call_create_args* args,
326
+ grpc_call** out_call) {
327
+ GPR_TIMER_SCOPE("grpc_call_create", 0);
328
+
329
+ GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
330
+
331
+ grpc_core::Arena* arena;
332
+ grpc_call* call;
333
+ grpc_error* error = GRPC_ERROR_NONE;
334
+ grpc_channel_stack* channel_stack =
335
+ grpc_channel_get_channel_stack(args->channel);
336
+ size_t initial_size = grpc_channel_get_call_size_estimate(args->channel);
337
+ GRPC_STATS_INC_CALL_INITIAL_SIZE(initial_size);
338
+ size_t call_and_stack_size =
339
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)) +
340
+ channel_stack->call_stack_size;
341
+ size_t call_alloc_size =
342
+ call_and_stack_size + (args->parent ? sizeof(child_call) : 0);
343
+
344
+ std::pair<grpc_core::Arena*, void*> arena_with_call =
345
+ grpc_core::Arena::CreateWithAlloc(initial_size, call_alloc_size);
346
+ arena = arena_with_call.first;
347
+ call = new (arena_with_call.second) grpc_call(arena, *args);
348
+ *out_call = call;
349
+ grpc_slice path = grpc_empty_slice();
350
+ if (call->is_client) {
351
+ call->final_op.client.status_details = nullptr;
352
+ call->final_op.client.status = nullptr;
353
+ call->final_op.client.error_string = nullptr;
354
+ GRPC_STATS_INC_CLIENT_CALLS_CREATED();
355
+ GPR_ASSERT(args->add_initial_metadata_count <
356
+ MAX_SEND_EXTRA_METADATA_COUNT);
357
+ for (size_t i = 0; i < args->add_initial_metadata_count; i++) {
358
+ call->send_extra_metadata[i].md = args->add_initial_metadata[i];
359
+ if (grpc_slice_eq_static_interned(
360
+ GRPC_MDKEY(args->add_initial_metadata[i]), GRPC_MDSTR_PATH)) {
361
+ path = grpc_slice_ref_internal(
362
+ GRPC_MDVALUE(args->add_initial_metadata[i]));
363
+ }
364
+ }
365
+ call->send_extra_metadata_count =
366
+ static_cast<int>(args->add_initial_metadata_count);
367
+ } else {
368
+ GRPC_STATS_INC_SERVER_CALLS_CREATED();
369
+ call->final_op.server.cancelled = nullptr;
370
+ call->final_op.server.server = args->server;
371
+ GPR_ASSERT(args->add_initial_metadata_count == 0);
372
+ call->send_extra_metadata_count = 0;
373
+ }
374
+
375
+ grpc_millis send_deadline = args->send_deadline;
376
+ bool immediately_cancel = false;
377
+
378
+ if (args->parent != nullptr) {
379
+ call->child = new (reinterpret_cast<char*>(arena_with_call.second) +
380
+ call_and_stack_size) child_call(args->parent);
381
+
382
+ GRPC_CALL_INTERNAL_REF(args->parent, "child");
383
+ GPR_ASSERT(call->is_client);
384
+ GPR_ASSERT(!args->parent->is_client);
385
+
386
+ if (args->propagation_mask & GRPC_PROPAGATE_DEADLINE) {
387
+ send_deadline = GPR_MIN(send_deadline, args->parent->send_deadline);
388
+ }
389
+ /* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
390
+ * GRPC_PROPAGATE_STATS_CONTEXT */
391
+ /* TODO(ctiller): This should change to use the appropriate census start_op
392
+ * call. */
393
+ if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
394
+ if (0 == (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
395
+ add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
396
+ "Census tracing propagation requested "
397
+ "without Census context propagation"));
398
+ }
399
+ grpc_call_context_set(call, GRPC_CONTEXT_TRACING,
400
+ args->parent->context[GRPC_CONTEXT_TRACING].value,
401
+ nullptr);
402
+ } else if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
403
+ add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
404
+ "Census context propagation requested "
405
+ "without Census tracing propagation"));
406
+ }
407
+ if (args->propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
408
+ call->cancellation_is_inherited = 1;
409
+ if (gpr_atm_acq_load(&args->parent->received_final_op_atm)) {
410
+ immediately_cancel = true;
411
+ }
412
+ }
413
+ }
414
+ call->send_deadline = send_deadline;
415
+ /* initial refcount dropped by grpc_call_unref */
416
+ grpc_call_element_args call_args = {CALL_STACK_FROM_CALL(call),
417
+ args->server_transport_data,
418
+ call->context,
419
+ path,
420
+ call->start_time,
421
+ send_deadline,
422
+ call->arena,
423
+ &call->call_combiner};
424
+ add_init_error(&error, grpc_call_stack_init(channel_stack, 1, destroy_call,
425
+ call, &call_args));
426
+ // Publish this call to parent only after the call stack has been initialized.
427
+ if (args->parent != nullptr) {
428
+ child_call* cc = call->child;
429
+ parent_call* pc = get_or_create_parent_call(args->parent);
430
+ gpr_mu_lock(&pc->child_list_mu);
431
+ if (pc->first_child == nullptr) {
432
+ pc->first_child = call;
433
+ cc->sibling_next = cc->sibling_prev = call;
434
+ } else {
435
+ cc->sibling_next = pc->first_child;
436
+ cc->sibling_prev = pc->first_child->child->sibling_prev;
437
+ cc->sibling_next->child->sibling_prev =
438
+ cc->sibling_prev->child->sibling_next = call;
439
+ }
440
+ gpr_mu_unlock(&pc->child_list_mu);
441
+ }
442
+
443
+ if (error != GRPC_ERROR_NONE) {
444
+ cancel_with_error(call, GRPC_ERROR_REF(error));
445
+ }
446
+ if (immediately_cancel) {
447
+ cancel_with_error(call, GRPC_ERROR_CANCELLED);
448
+ }
449
+ if (args->cq != nullptr) {
450
+ GPR_ASSERT(args->pollset_set_alternative == nullptr &&
451
+ "Only one of 'cq' and 'pollset_set_alternative' should be "
452
+ "non-nullptr.");
453
+ GRPC_CQ_INTERNAL_REF(args->cq, "bind");
454
+ call->pollent =
455
+ grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq));
456
+ }
457
+ if (args->pollset_set_alternative != nullptr) {
458
+ call->pollent = grpc_polling_entity_create_from_pollset_set(
459
+ args->pollset_set_alternative);
460
+ }
461
+ if (!grpc_polling_entity_is_empty(&call->pollent)) {
462
+ grpc_call_stack_set_pollset_or_pollset_set(CALL_STACK_FROM_CALL(call),
463
+ &call->pollent);
464
+ }
465
+
466
+ if (call->is_client) {
467
+ grpc_core::channelz::ChannelNode* channelz_channel =
468
+ grpc_channel_get_channelz_node(call->channel);
469
+ if (channelz_channel != nullptr) {
470
+ channelz_channel->RecordCallStarted();
471
+ }
472
+ } else {
473
+ grpc_core::channelz::ServerNode* channelz_server =
474
+ grpc_server_get_channelz_node(call->final_op.server.server);
475
+ if (channelz_server != nullptr) {
476
+ channelz_server->RecordCallStarted();
477
+ }
478
+ }
479
+
480
+ grpc_slice_unref_internal(path);
481
+
482
+ return error;
483
+ }
484
+
485
+ void grpc_call_set_completion_queue(grpc_call* call,
486
+ grpc_completion_queue* cq) {
487
+ GPR_ASSERT(cq);
488
+
489
+ if (grpc_polling_entity_pollset_set(&call->pollent) != nullptr) {
490
+ gpr_log(GPR_ERROR, "A pollset_set is already registered for this call.");
491
+ abort();
492
+ }
493
+ call->cq = cq;
494
+ GRPC_CQ_INTERNAL_REF(cq, "bind");
495
+ call->pollent = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
496
+ grpc_call_stack_set_pollset_or_pollset_set(CALL_STACK_FROM_CALL(call),
497
+ &call->pollent);
498
+ }
499
+
500
+ #ifndef NDEBUG
501
+ #define REF_REASON reason
502
+ #define REF_ARG , const char* reason
503
+ #else
504
+ #define REF_REASON ""
505
+ #define REF_ARG
506
+ #endif
507
+ void grpc_call_internal_ref(grpc_call* c REF_ARG) {
508
+ GRPC_CALL_STACK_REF(CALL_STACK_FROM_CALL(c), REF_REASON);
509
+ }
510
+ void grpc_call_internal_unref(grpc_call* c REF_ARG) {
511
+ GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON);
512
+ }
513
+
514
+ static void release_call(void* call, grpc_error* /*error*/) {
515
+ grpc_call* c = static_cast<grpc_call*>(call);
516
+ grpc_channel* channel = c->channel;
517
+ grpc_core::Arena* arena = c->arena;
518
+ c->~grpc_call();
519
+ grpc_channel_update_call_size_estimate(channel, arena->Destroy());
520
+ GRPC_CHANNEL_INTERNAL_UNREF(channel, "call");
521
+ }
522
+
523
+ static void destroy_call(void* call, grpc_error* /*error*/) {
524
+ GPR_TIMER_SCOPE("destroy_call", 0);
525
+ size_t i;
526
+ int ii;
527
+ grpc_call* c = static_cast<grpc_call*>(call);
528
+ for (i = 0; i < 2; i++) {
529
+ grpc_metadata_batch_destroy(
530
+ &c->metadata_batch[1 /* is_receiving */][i /* is_initial */]);
531
+ }
532
+ c->receiving_stream.reset();
533
+ parent_call* pc = get_parent_call(c);
534
+ if (pc != nullptr) {
535
+ pc->~parent_call();
536
+ }
537
+ for (ii = 0; ii < c->send_extra_metadata_count; ii++) {
538
+ GRPC_MDELEM_UNREF(c->send_extra_metadata[ii].md);
539
+ }
540
+ for (i = 0; i < GRPC_CONTEXT_COUNT; i++) {
541
+ if (c->context[i].destroy) {
542
+ c->context[i].destroy(c->context[i].value);
543
+ }
544
+ }
545
+ if (c->cq) {
546
+ GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
547
+ }
548
+
549
+ grpc_error* status_error =
550
+ reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&c->status_error));
551
+ grpc_error_get_status(status_error, c->send_deadline,
552
+ &c->final_info.final_status, nullptr, nullptr,
553
+ &(c->final_info.error_string));
554
+ GRPC_ERROR_UNREF(status_error);
555
+ c->final_info.stats.latency =
556
+ gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time);
557
+ grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info,
558
+ GRPC_CLOSURE_INIT(&c->release_call, release_call, c,
559
+ grpc_schedule_on_exec_ctx));
560
+ }
561
+
562
+ void grpc_call_ref(grpc_call* c) { c->ext_ref.Ref(); }
563
+
564
+ void grpc_call_unref(grpc_call* c) {
565
+ if (GPR_LIKELY(!c->ext_ref.Unref())) return;
566
+
567
+ GPR_TIMER_SCOPE("grpc_call_unref", 0);
568
+
569
+ child_call* cc = c->child;
570
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
571
+ grpc_core::ExecCtx exec_ctx;
572
+
573
+ GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c));
574
+
575
+ if (cc) {
576
+ parent_call* pc = get_parent_call(cc->parent);
577
+ gpr_mu_lock(&pc->child_list_mu);
578
+ if (c == pc->first_child) {
579
+ pc->first_child = cc->sibling_next;
580
+ if (c == pc->first_child) {
581
+ pc->first_child = nullptr;
582
+ }
583
+ }
584
+ cc->sibling_prev->child->sibling_next = cc->sibling_next;
585
+ cc->sibling_next->child->sibling_prev = cc->sibling_prev;
586
+ gpr_mu_unlock(&pc->child_list_mu);
587
+ GRPC_CALL_INTERNAL_UNREF(cc->parent, "child");
588
+ }
589
+
590
+ GPR_ASSERT(!c->destroy_called);
591
+ c->destroy_called = 1;
592
+ bool cancel = gpr_atm_acq_load(&c->any_ops_sent_atm) != 0 &&
593
+ gpr_atm_acq_load(&c->received_final_op_atm) == 0;
594
+ if (cancel) {
595
+ cancel_with_error(c, GRPC_ERROR_CANCELLED);
596
+ } else {
597
+ // Unset the call combiner cancellation closure. This has the
598
+ // effect of scheduling the previously set cancellation closure, if
599
+ // any, so that it can release any internal references it may be
600
+ // holding to the call stack. Also flush the closures on exec_ctx so that
601
+ // filters that schedule cancel notification closures on exec_ctx do not
602
+ // need to take a ref of the call stack to guarantee closure liveness.
603
+ c->call_combiner.SetNotifyOnCancel(nullptr);
604
+ grpc_core::ExecCtx::Get()->Flush();
605
+ }
606
+ GRPC_CALL_INTERNAL_UNREF(c, "destroy");
607
+ }
608
+
609
+ grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
610
+ GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
611
+ GPR_ASSERT(!reserved);
612
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
613
+ grpc_core::ExecCtx exec_ctx;
614
+ cancel_with_error(call, GRPC_ERROR_CANCELLED);
615
+ return GRPC_CALL_OK;
616
+ }
617
+
618
+ // This is called via the call combiner to start sending a batch down
619
+ // the filter stack.
620
+ static void execute_batch_in_call_combiner(void* arg, grpc_error* /*ignored*/) {
621
+ GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0);
622
+ grpc_transport_stream_op_batch* batch =
623
+ static_cast<grpc_transport_stream_op_batch*>(arg);
624
+ grpc_call* call = static_cast<grpc_call*>(batch->handler_private.extra_arg);
625
+ grpc_call_element* elem = CALL_ELEM_FROM_CALL(call, 0);
626
+ GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
627
+ elem->filter->start_transport_stream_op_batch(elem, batch);
628
+ }
629
+
630
+ // start_batch_closure points to a caller-allocated closure to be used
631
+ // for entering the call combiner.
632
+ static void execute_batch(grpc_call* call,
633
+ grpc_transport_stream_op_batch* batch,
634
+ grpc_closure* start_batch_closure) {
635
+ batch->handler_private.extra_arg = call;
636
+ GRPC_CLOSURE_INIT(start_batch_closure, execute_batch_in_call_combiner, batch,
637
+ grpc_schedule_on_exec_ctx);
638
+ GRPC_CALL_COMBINER_START(&call->call_combiner, start_batch_closure,
639
+ GRPC_ERROR_NONE, "executing batch");
640
+ }
641
+
642
+ char* grpc_call_get_peer(grpc_call* call) {
643
+ char* peer_string = (char*)gpr_atm_acq_load(&call->peer_string);
644
+ if (peer_string != nullptr) return gpr_strdup(peer_string);
645
+ peer_string = grpc_channel_get_target(call->channel);
646
+ if (peer_string != nullptr) return peer_string;
647
+ return gpr_strdup("unknown");
648
+ }
649
+
650
+ grpc_call* grpc_call_from_top_element(grpc_call_element* elem) {
651
+ return CALL_FROM_TOP_ELEM(elem);
652
+ }
653
+
654
+ /*******************************************************************************
655
+ * CANCELLATION
656
+ */
657
+
658
+ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
659
+ grpc_status_code status,
660
+ const char* description,
661
+ void* reserved) {
662
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
663
+ grpc_core::ExecCtx exec_ctx;
664
+ GRPC_API_TRACE(
665
+ "grpc_call_cancel_with_status("
666
+ "c=%p, status=%d, description=%s, reserved=%p)",
667
+ 4, (c, (int)status, description, reserved));
668
+ GPR_ASSERT(reserved == nullptr);
669
+ cancel_with_status(c, status, description);
670
+ return GRPC_CALL_OK;
671
+ }
672
+
673
+ struct cancel_state {
674
+ grpc_call* call;
675
+ grpc_closure start_batch;
676
+ grpc_closure finish_batch;
677
+ };
678
+ // The on_complete callback used when sending a cancel_stream batch down
679
+ // the filter stack. Yields the call combiner when the batch is done.
680
+ static void done_termination(void* arg, grpc_error* /*error*/) {
681
+ cancel_state* state = static_cast<cancel_state*>(arg);
682
+ GRPC_CALL_COMBINER_STOP(&state->call->call_combiner,
683
+ "on_complete for cancel_stream op");
684
+ GRPC_CALL_INTERNAL_UNREF(state->call, "termination");
685
+ gpr_free(state);
686
+ }
687
+
688
+ static void cancel_with_error(grpc_call* c, grpc_error* error) {
689
+ if (!gpr_atm_rel_cas(&c->cancelled, 0, 1)) {
690
+ GRPC_ERROR_UNREF(error);
691
+ return;
692
+ }
693
+ GRPC_CALL_INTERNAL_REF(c, "termination");
694
+ // Inform the call combiner of the cancellation, so that it can cancel
695
+ // any in-flight asynchronous actions that may be holding the call
696
+ // combiner. This ensures that the cancel_stream batch can be sent
697
+ // down the filter stack in a timely manner.
698
+ c->call_combiner.Cancel(GRPC_ERROR_REF(error));
699
+ cancel_state* state = static_cast<cancel_state*>(gpr_malloc(sizeof(*state)));
700
+ state->call = c;
701
+ GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state,
702
+ grpc_schedule_on_exec_ctx);
703
+ grpc_transport_stream_op_batch* op =
704
+ grpc_make_transport_stream_op(&state->finish_batch);
705
+ op->cancel_stream = true;
706
+ op->payload->cancel_stream.cancel_error = error;
707
+ execute_batch(c, op, &state->start_batch);
708
+ }
709
+
710
+ void grpc_call_cancel_internal(grpc_call* call) {
711
+ cancel_with_error(call, GRPC_ERROR_CANCELLED);
712
+ }
713
+
714
+ static grpc_error* error_from_status(grpc_status_code status,
715
+ const char* description) {
716
+ // copying 'description' is needed to ensure the grpc_call_cancel_with_status
717
+ // guarantee that can be short-lived.
718
+ return grpc_error_set_int(
719
+ grpc_error_set_str(GRPC_ERROR_CREATE_FROM_COPIED_STRING(description),
720
+ GRPC_ERROR_STR_GRPC_MESSAGE,
721
+ grpc_slice_from_copied_string(description)),
722
+ GRPC_ERROR_INT_GRPC_STATUS, status);
723
+ }
724
+
725
+ static void cancel_with_status(grpc_call* c, grpc_status_code status,
726
+ const char* description) {
727
+ cancel_with_error(c, error_from_status(status, description));
728
+ }
729
+
730
+ static void set_final_status(grpc_call* call, grpc_error* error) {
731
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
732
+ gpr_log(GPR_DEBUG, "set_final_status %s", call->is_client ? "CLI" : "SVR");
733
+ gpr_log(GPR_DEBUG, "%s", grpc_error_string(error));
734
+ }
735
+ if (call->is_client) {
736
+ grpc_error_get_status(error, call->send_deadline,
737
+ call->final_op.client.status,
738
+ call->final_op.client.status_details, nullptr,
739
+ call->final_op.client.error_string);
740
+ // explicitly take a ref
741
+ grpc_slice_ref_internal(*call->final_op.client.status_details);
742
+ gpr_atm_rel_store(&call->status_error, reinterpret_cast<gpr_atm>(error));
743
+ grpc_core::channelz::ChannelNode* channelz_channel =
744
+ grpc_channel_get_channelz_node(call->channel);
745
+ if (channelz_channel != nullptr) {
746
+ if (*call->final_op.client.status != GRPC_STATUS_OK) {
747
+ channelz_channel->RecordCallFailed();
748
+ } else {
749
+ channelz_channel->RecordCallSucceeded();
750
+ }
751
+ }
752
+ } else {
753
+ *call->final_op.server.cancelled =
754
+ error != GRPC_ERROR_NONE ||
755
+ reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&call->status_error)) !=
756
+ GRPC_ERROR_NONE;
757
+ grpc_core::channelz::ServerNode* channelz_server =
758
+ grpc_server_get_channelz_node(call->final_op.server.server);
759
+ if (channelz_server != nullptr) {
760
+ if (*call->final_op.server.cancelled) {
761
+ channelz_server->RecordCallFailed();
762
+ } else {
763
+ channelz_server->RecordCallSucceeded();
764
+ }
765
+ }
766
+ GRPC_ERROR_UNREF(error);
767
+ }
768
+ }
769
+
770
+ /*******************************************************************************
771
+ * COMPRESSION
772
+ */
773
+
774
+ static void set_incoming_message_compression_algorithm(
775
+ grpc_call* call, grpc_message_compression_algorithm algo) {
776
+ GPR_ASSERT(algo < GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT);
777
+ call->incoming_message_compression_algorithm = algo;
778
+ }
779
+
780
+ static void set_incoming_stream_compression_algorithm(
781
+ grpc_call* call, grpc_stream_compression_algorithm algo) {
782
+ GPR_ASSERT(algo < GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT);
783
+ call->incoming_stream_compression_algorithm = algo;
784
+ }
785
+
786
+ grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
787
+ grpc_call* call) {
788
+ grpc_compression_algorithm algorithm = GRPC_COMPRESS_NONE;
789
+ grpc_compression_algorithm_from_message_stream_compression_algorithm(
790
+ &algorithm, call->incoming_message_compression_algorithm,
791
+ call->incoming_stream_compression_algorithm);
792
+ return algorithm;
793
+ }
794
+
795
+ static grpc_compression_algorithm compression_algorithm_for_level_locked(
796
+ grpc_call* call, grpc_compression_level level) {
797
+ return grpc_compression_algorithm_for_level(level,
798
+ call->encodings_accepted_by_peer);
799
+ }
800
+
801
+ uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
802
+ uint32_t flags;
803
+ flags = call->test_only_last_message_flags;
804
+ return flags;
805
+ }
806
+
807
+ static void destroy_encodings_accepted_by_peer(void* /*p*/) { return; }
808
+
809
+ static void set_encodings_accepted_by_peer(grpc_call* /*call*/,
810
+ grpc_mdelem mdel,
811
+ uint32_t* encodings_accepted_by_peer,
812
+ bool stream_encoding) {
813
+ size_t i;
814
+ uint32_t algorithm;
815
+ grpc_slice_buffer accept_encoding_parts;
816
+ grpc_slice accept_encoding_slice;
817
+ void* accepted_user_data;
818
+
819
+ accepted_user_data =
820
+ grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer);
821
+ if (accepted_user_data != nullptr) {
822
+ *encodings_accepted_by_peer =
823
+ static_cast<uint32_t>(((uintptr_t)accepted_user_data) - 1);
824
+ return;
825
+ }
826
+
827
+ *encodings_accepted_by_peer = 0;
828
+
829
+ accept_encoding_slice = GRPC_MDVALUE(mdel);
830
+ grpc_slice_buffer_init(&accept_encoding_parts);
831
+ grpc_slice_split_without_space(accept_encoding_slice, ",",
832
+ &accept_encoding_parts);
833
+
834
+ GPR_BITSET(encodings_accepted_by_peer, GRPC_COMPRESS_NONE);
835
+ for (i = 0; i < accept_encoding_parts.count; i++) {
836
+ int r;
837
+ grpc_slice accept_encoding_entry_slice = accept_encoding_parts.slices[i];
838
+ if (!stream_encoding) {
839
+ r = grpc_message_compression_algorithm_parse(
840
+ accept_encoding_entry_slice,
841
+ reinterpret_cast<grpc_message_compression_algorithm*>(&algorithm));
842
+ } else {
843
+ r = grpc_stream_compression_algorithm_parse(
844
+ accept_encoding_entry_slice,
845
+ reinterpret_cast<grpc_stream_compression_algorithm*>(&algorithm));
846
+ }
847
+ if (r) {
848
+ GPR_BITSET(encodings_accepted_by_peer, algorithm);
849
+ } else {
850
+ char* accept_encoding_entry_str =
851
+ grpc_slice_to_c_string(accept_encoding_entry_slice);
852
+ gpr_log(GPR_DEBUG,
853
+ "Unknown entry in accept encoding metadata: '%s'. Ignoring.",
854
+ accept_encoding_entry_str);
855
+ gpr_free(accept_encoding_entry_str);
856
+ }
857
+ }
858
+
859
+ grpc_slice_buffer_destroy_internal(&accept_encoding_parts);
860
+
861
+ grpc_mdelem_set_user_data(
862
+ mdel, destroy_encodings_accepted_by_peer,
863
+ (void*)((static_cast<uintptr_t>(*encodings_accepted_by_peer)) + 1));
864
+ }
865
+
866
+ uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
867
+ uint32_t encodings_accepted_by_peer;
868
+ encodings_accepted_by_peer = call->encodings_accepted_by_peer;
869
+ return encodings_accepted_by_peer;
870
+ }
871
+
872
+ grpc_stream_compression_algorithm
873
+ grpc_call_test_only_get_incoming_stream_encodings(grpc_call* call) {
874
+ return call->incoming_stream_compression_algorithm;
875
+ }
876
+
877
+ static grpc_linked_mdelem* linked_from_md(const grpc_metadata* md) {
878
+ return (grpc_linked_mdelem*)&md->internal_data;
879
+ }
880
+
881
+ static grpc_metadata* get_md_elem(grpc_metadata* metadata,
882
+ grpc_metadata* additional_metadata, int i,
883
+ int count) {
884
+ grpc_metadata* res =
885
+ i < count ? &metadata[i] : &additional_metadata[i - count];
886
+ GPR_ASSERT(res);
887
+ return res;
888
+ }
889
+
890
+ static int prepare_application_metadata(grpc_call* call, int count,
891
+ grpc_metadata* metadata,
892
+ int is_trailing,
893
+ int prepend_extra_metadata,
894
+ grpc_metadata* additional_metadata,
895
+ int additional_metadata_count) {
896
+ int total_count = count + additional_metadata_count;
897
+ int i;
898
+ grpc_metadata_batch* batch =
899
+ &call->metadata_batch[0 /* is_receiving */][is_trailing];
900
+ for (i = 0; i < total_count; i++) {
901
+ const grpc_metadata* md =
902
+ get_md_elem(metadata, additional_metadata, i, count);
903
+ grpc_linked_mdelem* l = linked_from_md(md);
904
+ GPR_ASSERT(sizeof(grpc_linked_mdelem) == sizeof(md->internal_data));
905
+ if (!GRPC_LOG_IF_ERROR("validate_metadata",
906
+ grpc_validate_header_key_is_legal(md->key))) {
907
+ break;
908
+ } else if (!grpc_is_binary_header_internal(md->key) &&
909
+ !GRPC_LOG_IF_ERROR(
910
+ "validate_metadata",
911
+ grpc_validate_header_nonbin_value_is_legal(md->value))) {
912
+ break;
913
+ } else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
914
+ // HTTP2 hpack encoding has a maximum limit.
915
+ break;
916
+ }
917
+ l->md = grpc_mdelem_from_grpc_metadata(const_cast<grpc_metadata*>(md));
918
+ }
919
+ if (i != total_count) {
920
+ for (int j = 0; j < i; j++) {
921
+ const grpc_metadata* md =
922
+ get_md_elem(metadata, additional_metadata, j, count);
923
+ grpc_linked_mdelem* l = linked_from_md(md);
924
+ GRPC_MDELEM_UNREF(l->md);
925
+ }
926
+ return 0;
927
+ }
928
+ if (prepend_extra_metadata) {
929
+ if (call->send_extra_metadata_count == 0) {
930
+ prepend_extra_metadata = 0;
931
+ } else {
932
+ for (i = 0; i < call->send_extra_metadata_count; i++) {
933
+ GRPC_LOG_IF_ERROR("prepare_application_metadata",
934
+ grpc_metadata_batch_link_tail(
935
+ batch, &call->send_extra_metadata[i]));
936
+ }
937
+ }
938
+ }
939
+ for (i = 0; i < total_count; i++) {
940
+ grpc_metadata* md = get_md_elem(metadata, additional_metadata, i, count);
941
+ grpc_linked_mdelem* l = linked_from_md(md);
942
+ grpc_error* error = grpc_metadata_batch_link_tail(batch, l);
943
+ if (error != GRPC_ERROR_NONE) {
944
+ GRPC_MDELEM_UNREF(l->md);
945
+ }
946
+ GRPC_LOG_IF_ERROR("prepare_application_metadata", error);
947
+ }
948
+ call->send_extra_metadata_count = 0;
949
+
950
+ return 1;
951
+ }
952
+
953
+ static grpc_message_compression_algorithm decode_message_compression(
954
+ grpc_mdelem md) {
955
+ grpc_message_compression_algorithm algorithm =
956
+ grpc_message_compression_algorithm_from_slice(GRPC_MDVALUE(md));
957
+ if (algorithm == GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT) {
958
+ char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
959
+ gpr_log(GPR_ERROR,
960
+ "Invalid incoming message compression algorithm: '%s'. "
961
+ "Interpreting incoming data as uncompressed.",
962
+ md_c_str);
963
+ gpr_free(md_c_str);
964
+ return GRPC_MESSAGE_COMPRESS_NONE;
965
+ }
966
+ return algorithm;
967
+ }
968
+
969
+ static grpc_stream_compression_algorithm decode_stream_compression(
970
+ grpc_mdelem md) {
971
+ grpc_stream_compression_algorithm algorithm =
972
+ grpc_stream_compression_algorithm_from_slice(GRPC_MDVALUE(md));
973
+ if (algorithm == GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT) {
974
+ char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
975
+ gpr_log(GPR_ERROR,
976
+ "Invalid incoming stream compression algorithm: '%s'. Interpreting "
977
+ "incoming data as uncompressed.",
978
+ md_c_str);
979
+ gpr_free(md_c_str);
980
+ return GRPC_STREAM_COMPRESS_NONE;
981
+ }
982
+ return algorithm;
983
+ }
984
+
985
+ static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
986
+ int is_trailing) {
987
+ if (b->list.count == 0) return;
988
+ if (!call->is_client && is_trailing) return;
989
+ if (is_trailing && call->buffered_metadata[1] == nullptr) return;
990
+ GPR_TIMER_SCOPE("publish_app_metadata", 0);
991
+ grpc_metadata_array* dest;
992
+ grpc_metadata* mdusr;
993
+ dest = call->buffered_metadata[is_trailing];
994
+ if (dest->count + b->list.count > dest->capacity) {
995
+ dest->capacity =
996
+ GPR_MAX(dest->capacity + b->list.count, dest->capacity * 3 / 2);
997
+ dest->metadata = static_cast<grpc_metadata*>(
998
+ gpr_realloc(dest->metadata, sizeof(grpc_metadata) * dest->capacity));
999
+ }
1000
+ for (grpc_linked_mdelem* l = b->list.head; l != nullptr; l = l->next) {
1001
+ mdusr = &dest->metadata[dest->count++];
1002
+ /* we pass back borrowed slices that are valid whilst the call is valid */
1003
+ mdusr->key = GRPC_MDKEY(l->md);
1004
+ mdusr->value = GRPC_MDVALUE(l->md);
1005
+ }
1006
+ }
1007
+
1008
+ static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
1009
+ if (b->idx.named.content_encoding != nullptr) {
1010
+ GPR_TIMER_SCOPE("incoming_stream_compression_algorithm", 0);
1011
+ set_incoming_stream_compression_algorithm(
1012
+ call, decode_stream_compression(b->idx.named.content_encoding->md));
1013
+ grpc_metadata_batch_remove(b, GRPC_BATCH_CONTENT_ENCODING);
1014
+ }
1015
+ if (b->idx.named.grpc_encoding != nullptr) {
1016
+ GPR_TIMER_SCOPE("incoming_message_compression_algorithm", 0);
1017
+ set_incoming_message_compression_algorithm(
1018
+ call, decode_message_compression(b->idx.named.grpc_encoding->md));
1019
+ grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_ENCODING);
1020
+ }
1021
+ uint32_t message_encodings_accepted_by_peer = 1u;
1022
+ uint32_t stream_encodings_accepted_by_peer = 1u;
1023
+ if (b->idx.named.grpc_accept_encoding != nullptr) {
1024
+ GPR_TIMER_SCOPE("encodings_accepted_by_peer", 0);
1025
+ set_encodings_accepted_by_peer(call, b->idx.named.grpc_accept_encoding->md,
1026
+ &message_encodings_accepted_by_peer, false);
1027
+ grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_ACCEPT_ENCODING);
1028
+ }
1029
+ if (b->idx.named.accept_encoding != nullptr) {
1030
+ GPR_TIMER_SCOPE("stream_encodings_accepted_by_peer", 0);
1031
+ set_encodings_accepted_by_peer(call, b->idx.named.accept_encoding->md,
1032
+ &stream_encodings_accepted_by_peer, true);
1033
+ grpc_metadata_batch_remove(b, GRPC_BATCH_ACCEPT_ENCODING);
1034
+ }
1035
+ call->encodings_accepted_by_peer =
1036
+ grpc_compression_bitset_from_message_stream_compression_bitset(
1037
+ message_encodings_accepted_by_peer,
1038
+ stream_encodings_accepted_by_peer);
1039
+ publish_app_metadata(call, b, false);
1040
+ }
1041
+
1042
+ static void recv_trailing_filter(void* args, grpc_metadata_batch* b,
1043
+ grpc_error* batch_error) {
1044
+ grpc_call* call = static_cast<grpc_call*>(args);
1045
+ if (batch_error != GRPC_ERROR_NONE) {
1046
+ set_final_status(call, batch_error);
1047
+ } else if (b->idx.named.grpc_status != nullptr) {
1048
+ grpc_status_code status_code =
1049
+ grpc_get_status_code_from_metadata(b->idx.named.grpc_status->md);
1050
+ grpc_error* error = GRPC_ERROR_NONE;
1051
+ if (status_code != GRPC_STATUS_OK) {
1052
+ char* peer_msg = nullptr;
1053
+ char* peer = grpc_call_get_peer(call);
1054
+ gpr_asprintf(&peer_msg, "Error received from peer %s", peer);
1055
+ error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(peer_msg),
1056
+ GRPC_ERROR_INT_GRPC_STATUS,
1057
+ static_cast<intptr_t>(status_code));
1058
+ gpr_free(peer);
1059
+ gpr_free(peer_msg);
1060
+ }
1061
+ if (b->idx.named.grpc_message != nullptr) {
1062
+ error = grpc_error_set_str(
1063
+ error, GRPC_ERROR_STR_GRPC_MESSAGE,
1064
+ grpc_slice_ref_internal(GRPC_MDVALUE(b->idx.named.grpc_message->md)));
1065
+ grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_MESSAGE);
1066
+ } else if (error != GRPC_ERROR_NONE) {
1067
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
1068
+ grpc_empty_slice());
1069
+ }
1070
+ set_final_status(call, GRPC_ERROR_REF(error));
1071
+ grpc_metadata_batch_remove(b, GRPC_BATCH_GRPC_STATUS);
1072
+ GRPC_ERROR_UNREF(error);
1073
+ } else if (!call->is_client) {
1074
+ set_final_status(call, GRPC_ERROR_NONE);
1075
+ } else {
1076
+ gpr_log(GPR_DEBUG,
1077
+ "Received trailing metadata with no error and no status");
1078
+ set_final_status(
1079
+ call, grpc_error_set_int(
1080
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("No status received"),
1081
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNKNOWN));
1082
+ }
1083
+ publish_app_metadata(call, b, true);
1084
+ }
1085
+
1086
+ grpc_core::Arena* grpc_call_get_arena(grpc_call* call) { return call->arena; }
1087
+
1088
+ grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
1089
+ return CALL_STACK_FROM_CALL(call);
1090
+ }
1091
+
1092
+ /*******************************************************************************
1093
+ * BATCH API IMPLEMENTATION
1094
+ */
1095
+
1096
+ static bool are_write_flags_valid(uint32_t flags) {
1097
+ /* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
1098
+ const uint32_t allowed_write_positions =
1099
+ (GRPC_WRITE_USED_MASK | GRPC_WRITE_INTERNAL_USED_MASK);
1100
+ const uint32_t invalid_positions = ~allowed_write_positions;
1101
+ return !(flags & invalid_positions);
1102
+ }
1103
+
1104
+ static bool are_initial_metadata_flags_valid(uint32_t flags, bool is_client) {
1105
+ /* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
1106
+ uint32_t invalid_positions = ~GRPC_INITIAL_METADATA_USED_MASK;
1107
+ if (!is_client) {
1108
+ invalid_positions |= GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
1109
+ }
1110
+ return !(flags & invalid_positions);
1111
+ }
1112
+
1113
+ static size_t batch_slot_for_op(grpc_op_type type) {
1114
+ switch (type) {
1115
+ case GRPC_OP_SEND_INITIAL_METADATA:
1116
+ return 0;
1117
+ case GRPC_OP_SEND_MESSAGE:
1118
+ return 1;
1119
+ case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
1120
+ case GRPC_OP_SEND_STATUS_FROM_SERVER:
1121
+ return 2;
1122
+ case GRPC_OP_RECV_INITIAL_METADATA:
1123
+ return 3;
1124
+ case GRPC_OP_RECV_MESSAGE:
1125
+ return 4;
1126
+ case GRPC_OP_RECV_CLOSE_ON_SERVER:
1127
+ case GRPC_OP_RECV_STATUS_ON_CLIENT:
1128
+ return 5;
1129
+ }
1130
+ GPR_UNREACHABLE_CODE(return 123456789);
1131
+ }
1132
+
1133
+ static batch_control* reuse_or_allocate_batch_control(grpc_call* call,
1134
+ const grpc_op* ops) {
1135
+ size_t slot_idx = batch_slot_for_op(ops[0].op);
1136
+ batch_control** pslot = &call->active_batches[slot_idx];
1137
+ batch_control* bctl;
1138
+ if (*pslot != nullptr) {
1139
+ bctl = *pslot;
1140
+ if (bctl->call != nullptr) {
1141
+ return nullptr;
1142
+ }
1143
+ bctl->~batch_control();
1144
+ bctl->op = {};
1145
+ } else {
1146
+ bctl = call->arena->New<batch_control>();
1147
+ *pslot = bctl;
1148
+ }
1149
+ bctl->call = call;
1150
+ bctl->op.payload = &call->stream_op_payload;
1151
+ return bctl;
1152
+ }
1153
+
1154
+ static void finish_batch_completion(void* user_data,
1155
+ grpc_cq_completion* /*storage*/) {
1156
+ batch_control* bctl = static_cast<batch_control*>(user_data);
1157
+ grpc_call* call = bctl->call;
1158
+ bctl->call = nullptr;
1159
+ GRPC_CALL_INTERNAL_UNREF(call, "completion");
1160
+ }
1161
+
1162
+ static void reset_batch_errors(batch_control* bctl) {
1163
+ GRPC_ERROR_UNREF(
1164
+ reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)));
1165
+ gpr_atm_rel_store(&bctl->batch_error,
1166
+ reinterpret_cast<gpr_atm>(GRPC_ERROR_NONE));
1167
+ }
1168
+
1169
+ static void post_batch_completion(batch_control* bctl) {
1170
+ grpc_call* next_child_call;
1171
+ grpc_call* call = bctl->call;
1172
+ grpc_error* error = GRPC_ERROR_REF(
1173
+ reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)));
1174
+
1175
+ if (bctl->op.send_initial_metadata) {
1176
+ grpc_metadata_batch_destroy(
1177
+ &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]);
1178
+ }
1179
+ if (bctl->op.send_message) {
1180
+ if (bctl->op.payload->send_message.stream_write_closed &&
1181
+ error == GRPC_ERROR_NONE) {
1182
+ error = grpc_error_add_child(
1183
+ error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1184
+ "Attempt to send message after stream was closed."));
1185
+ }
1186
+ call->sending_message = false;
1187
+ }
1188
+ if (bctl->op.send_trailing_metadata) {
1189
+ grpc_metadata_batch_destroy(
1190
+ &call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */]);
1191
+ }
1192
+ if (bctl->op.recv_trailing_metadata) {
1193
+ /* propagate cancellation to any interested children */
1194
+ gpr_atm_rel_store(&call->received_final_op_atm, 1);
1195
+ parent_call* pc = get_parent_call(call);
1196
+ if (pc != nullptr) {
1197
+ grpc_call* child;
1198
+ gpr_mu_lock(&pc->child_list_mu);
1199
+ child = pc->first_child;
1200
+ if (child != nullptr) {
1201
+ do {
1202
+ next_child_call = child->child->sibling_next;
1203
+ if (child->cancellation_is_inherited) {
1204
+ GRPC_CALL_INTERNAL_REF(child, "propagate_cancel");
1205
+ cancel_with_error(child, GRPC_ERROR_CANCELLED);
1206
+ GRPC_CALL_INTERNAL_UNREF(child, "propagate_cancel");
1207
+ }
1208
+ child = next_child_call;
1209
+ } while (child != pc->first_child);
1210
+ }
1211
+ gpr_mu_unlock(&pc->child_list_mu);
1212
+ }
1213
+ GRPC_ERROR_UNREF(error);
1214
+ error = GRPC_ERROR_NONE;
1215
+ }
1216
+ if (error != GRPC_ERROR_NONE && bctl->op.recv_message &&
1217
+ *call->receiving_buffer != nullptr) {
1218
+ grpc_byte_buffer_destroy(*call->receiving_buffer);
1219
+ *call->receiving_buffer = nullptr;
1220
+ }
1221
+ reset_batch_errors(bctl);
1222
+
1223
+ if (bctl->completion_data.notify_tag.is_closure) {
1224
+ /* unrefs error */
1225
+ bctl->call = nullptr;
1226
+ grpc_core::Closure::Run(DEBUG_LOCATION,
1227
+ (grpc_closure*)bctl->completion_data.notify_tag.tag,
1228
+ error);
1229
+ GRPC_CALL_INTERNAL_UNREF(call, "completion");
1230
+ } else {
1231
+ /* unrefs error */
1232
+ grpc_cq_end_op(bctl->call->cq, bctl->completion_data.notify_tag.tag, error,
1233
+ finish_batch_completion, bctl,
1234
+ &bctl->completion_data.cq_completion);
1235
+ }
1236
+ }
1237
+
1238
+ static void finish_batch_step(batch_control* bctl) {
1239
+ if (GPR_UNLIKELY(bctl->completed_batch_step())) {
1240
+ post_batch_completion(bctl);
1241
+ }
1242
+ }
1243
+
1244
+ static void continue_receiving_slices(batch_control* bctl) {
1245
+ grpc_error* error;
1246
+ grpc_call* call = bctl->call;
1247
+ for (;;) {
1248
+ size_t remaining = call->receiving_stream->length() -
1249
+ (*call->receiving_buffer)->data.raw.slice_buffer.length;
1250
+ if (remaining == 0) {
1251
+ call->receiving_message = 0;
1252
+ call->receiving_stream.reset();
1253
+ finish_batch_step(bctl);
1254
+ return;
1255
+ }
1256
+ if (call->receiving_stream->Next(remaining, &call->receiving_slice_ready)) {
1257
+ error = call->receiving_stream->Pull(&call->receiving_slice);
1258
+ if (error == GRPC_ERROR_NONE) {
1259
+ grpc_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer,
1260
+ call->receiving_slice);
1261
+ } else {
1262
+ call->receiving_stream.reset();
1263
+ grpc_byte_buffer_destroy(*call->receiving_buffer);
1264
+ *call->receiving_buffer = nullptr;
1265
+ call->receiving_message = 0;
1266
+ finish_batch_step(bctl);
1267
+ GRPC_ERROR_UNREF(error);
1268
+ return;
1269
+ }
1270
+ } else {
1271
+ return;
1272
+ }
1273
+ }
1274
+ }
1275
+
1276
+ static void receiving_slice_ready(void* bctlp, grpc_error* error) {
1277
+ batch_control* bctl = static_cast<batch_control*>(bctlp);
1278
+ grpc_call* call = bctl->call;
1279
+ bool release_error = false;
1280
+
1281
+ if (error == GRPC_ERROR_NONE) {
1282
+ grpc_slice slice;
1283
+ error = call->receiving_stream->Pull(&slice);
1284
+ if (error == GRPC_ERROR_NONE) {
1285
+ grpc_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer,
1286
+ slice);
1287
+ continue_receiving_slices(bctl);
1288
+ } else {
1289
+ /* Error returned by ByteStream::Pull() needs to be released manually */
1290
+ release_error = true;
1291
+ }
1292
+ }
1293
+
1294
+ if (error != GRPC_ERROR_NONE) {
1295
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
1296
+ GRPC_LOG_IF_ERROR("receiving_slice_ready", GRPC_ERROR_REF(error));
1297
+ }
1298
+ call->receiving_stream.reset();
1299
+ grpc_byte_buffer_destroy(*call->receiving_buffer);
1300
+ *call->receiving_buffer = nullptr;
1301
+ call->receiving_message = 0;
1302
+ finish_batch_step(bctl);
1303
+ if (release_error) {
1304
+ GRPC_ERROR_UNREF(error);
1305
+ }
1306
+ }
1307
+ }
1308
+
1309
+ static void process_data_after_md(batch_control* bctl) {
1310
+ grpc_call* call = bctl->call;
1311
+ if (call->receiving_stream == nullptr) {
1312
+ *call->receiving_buffer = nullptr;
1313
+ call->receiving_message = 0;
1314
+ finish_batch_step(bctl);
1315
+ } else {
1316
+ call->test_only_last_message_flags = call->receiving_stream->flags();
1317
+ if ((call->receiving_stream->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
1318
+ (call->incoming_message_compression_algorithm >
1319
+ GRPC_MESSAGE_COMPRESS_NONE)) {
1320
+ grpc_compression_algorithm algo;
1321
+ GPR_ASSERT(
1322
+ grpc_compression_algorithm_from_message_stream_compression_algorithm(
1323
+ &algo, call->incoming_message_compression_algorithm,
1324
+ (grpc_stream_compression_algorithm)0));
1325
+ *call->receiving_buffer =
1326
+ grpc_raw_compressed_byte_buffer_create(nullptr, 0, algo);
1327
+ } else {
1328
+ *call->receiving_buffer = grpc_raw_byte_buffer_create(nullptr, 0);
1329
+ }
1330
+ GRPC_CLOSURE_INIT(&call->receiving_slice_ready, receiving_slice_ready, bctl,
1331
+ grpc_schedule_on_exec_ctx);
1332
+ continue_receiving_slices(bctl);
1333
+ }
1334
+ }
1335
+
1336
+ static void receiving_stream_ready(void* bctlp, grpc_error* error) {
1337
+ batch_control* bctl = static_cast<batch_control*>(bctlp);
1338
+ grpc_call* call = bctl->call;
1339
+ if (error != GRPC_ERROR_NONE) {
1340
+ call->receiving_stream.reset();
1341
+ if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1342
+ GRPC_ERROR_NONE) {
1343
+ gpr_atm_rel_store(&bctl->batch_error,
1344
+ reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1345
+ }
1346
+ cancel_with_error(call, GRPC_ERROR_REF(error));
1347
+ }
1348
+ /* If recv_state is RECV_NONE, we will save the batch_control
1349
+ * object with rel_cas, and will not use it after the cas. Its corresponding
1350
+ * acq_load is in receiving_initial_metadata_ready() */
1351
+ if (error != GRPC_ERROR_NONE || call->receiving_stream == nullptr ||
1352
+ !gpr_atm_rel_cas(&call->recv_state, RECV_NONE, (gpr_atm)bctlp)) {
1353
+ process_data_after_md(bctl);
1354
+ }
1355
+ }
1356
+
1357
+ // The recv_message_ready callback used when sending a batch containing
1358
+ // a recv_message op down the filter stack. Yields the call combiner
1359
+ // before processing the received message.
1360
+ static void receiving_stream_ready_in_call_combiner(void* bctlp,
1361
+ grpc_error* error) {
1362
+ batch_control* bctl = static_cast<batch_control*>(bctlp);
1363
+ grpc_call* call = bctl->call;
1364
+ GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready");
1365
+ receiving_stream_ready(bctlp, error);
1366
+ }
1367
+
1368
+ static void GPR_ATTRIBUTE_NOINLINE
1369
+ handle_both_stream_and_msg_compression_set(grpc_call* call) {
1370
+ char* error_msg = nullptr;
1371
+ gpr_asprintf(&error_msg,
1372
+ "Incoming stream has both stream compression (%d) and message "
1373
+ "compression (%d).",
1374
+ call->incoming_stream_compression_algorithm,
1375
+ call->incoming_message_compression_algorithm);
1376
+ gpr_log(GPR_ERROR, "%s", error_msg);
1377
+ cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg);
1378
+ gpr_free(error_msg);
1379
+ }
1380
+
1381
+ static void GPR_ATTRIBUTE_NOINLINE
1382
+ handle_error_parsing_compression_algorithm(grpc_call* call) {
1383
+ char* error_msg = nullptr;
1384
+ gpr_asprintf(&error_msg,
1385
+ "Error in incoming message compression (%d) or stream "
1386
+ "compression (%d).",
1387
+ call->incoming_stream_compression_algorithm,
1388
+ call->incoming_message_compression_algorithm);
1389
+ cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg);
1390
+ gpr_free(error_msg);
1391
+ }
1392
+
1393
+ static void GPR_ATTRIBUTE_NOINLINE handle_invalid_compression(
1394
+ grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1395
+ char* error_msg = nullptr;
1396
+ gpr_asprintf(&error_msg, "Invalid compression algorithm value '%d'.",
1397
+ compression_algorithm);
1398
+ gpr_log(GPR_ERROR, "%s", error_msg);
1399
+ cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg);
1400
+ gpr_free(error_msg);
1401
+ }
1402
+
1403
+ static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_disabled(
1404
+ grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1405
+ char* error_msg = nullptr;
1406
+ const char* algo_name = nullptr;
1407
+ grpc_compression_algorithm_name(compression_algorithm, &algo_name);
1408
+ gpr_asprintf(&error_msg, "Compression algorithm '%s' is disabled.",
1409
+ algo_name);
1410
+ gpr_log(GPR_ERROR, "%s", error_msg);
1411
+ cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg);
1412
+ gpr_free(error_msg);
1413
+ }
1414
+
1415
+ static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_not_accepted(
1416
+ grpc_call* call, grpc_compression_algorithm compression_algorithm) {
1417
+ const char* algo_name = nullptr;
1418
+ grpc_compression_algorithm_name(compression_algorithm, &algo_name);
1419
+ gpr_log(GPR_ERROR,
1420
+ "Compression algorithm ('%s') not present in the bitset of "
1421
+ "accepted encodings ('0x%x')",
1422
+ algo_name, call->encodings_accepted_by_peer);
1423
+ }
1424
+
1425
+ static void validate_filtered_metadata(batch_control* bctl) {
1426
+ grpc_compression_algorithm compression_algorithm;
1427
+ grpc_call* call = bctl->call;
1428
+ if (GPR_UNLIKELY(call->incoming_stream_compression_algorithm !=
1429
+ GRPC_STREAM_COMPRESS_NONE &&
1430
+ call->incoming_message_compression_algorithm !=
1431
+ GRPC_MESSAGE_COMPRESS_NONE)) {
1432
+ handle_both_stream_and_msg_compression_set(call);
1433
+ } else if (
1434
+ GPR_UNLIKELY(
1435
+ grpc_compression_algorithm_from_message_stream_compression_algorithm(
1436
+ &compression_algorithm,
1437
+ call->incoming_message_compression_algorithm,
1438
+ call->incoming_stream_compression_algorithm) == 0)) {
1439
+ handle_error_parsing_compression_algorithm(call);
1440
+ } else {
1441
+ const grpc_compression_options compression_options =
1442
+ grpc_channel_compression_options(call->channel);
1443
+ if (GPR_UNLIKELY(compression_algorithm >= GRPC_COMPRESS_ALGORITHMS_COUNT)) {
1444
+ handle_invalid_compression(call, compression_algorithm);
1445
+ } else if (GPR_UNLIKELY(
1446
+ grpc_compression_options_is_algorithm_enabled_internal(
1447
+ &compression_options, compression_algorithm) == 0)) {
1448
+ /* check if algorithm is supported by current channel config */
1449
+ handle_compression_algorithm_disabled(call, compression_algorithm);
1450
+ }
1451
+ /* GRPC_COMPRESS_NONE is always set. */
1452
+ GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer != 0);
1453
+ if (GPR_UNLIKELY(!GPR_BITGET(call->encodings_accepted_by_peer,
1454
+ compression_algorithm))) {
1455
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
1456
+ handle_compression_algorithm_not_accepted(call, compression_algorithm);
1457
+ }
1458
+ }
1459
+ }
1460
+ }
1461
+
1462
+ static void receiving_initial_metadata_ready(void* bctlp, grpc_error* error) {
1463
+ batch_control* bctl = static_cast<batch_control*>(bctlp);
1464
+ grpc_call* call = bctl->call;
1465
+
1466
+ GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_initial_metadata_ready");
1467
+
1468
+ if (error == GRPC_ERROR_NONE) {
1469
+ grpc_metadata_batch* md =
1470
+ &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1471
+ recv_initial_filter(call, md);
1472
+
1473
+ /* TODO(ctiller): this could be moved into recv_initial_filter now */
1474
+ GPR_TIMER_SCOPE("validate_filtered_metadata", 0);
1475
+ validate_filtered_metadata(bctl);
1476
+
1477
+ if (md->deadline != GRPC_MILLIS_INF_FUTURE && !call->is_client) {
1478
+ call->send_deadline = md->deadline;
1479
+ }
1480
+ } else {
1481
+ if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1482
+ GRPC_ERROR_NONE) {
1483
+ gpr_atm_rel_store(&bctl->batch_error,
1484
+ reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1485
+ }
1486
+ cancel_with_error(call, GRPC_ERROR_REF(error));
1487
+ }
1488
+
1489
+ grpc_closure* saved_rsr_closure = nullptr;
1490
+ while (true) {
1491
+ gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state);
1492
+ /* Should only receive initial metadata once */
1493
+ GPR_ASSERT(rsr_bctlp != 1);
1494
+ if (rsr_bctlp == 0) {
1495
+ /* We haven't seen initial metadata and messages before, thus initial
1496
+ * metadata is received first.
1497
+ * no_barrier_cas is used, as this function won't access the batch_control
1498
+ * object saved by receiving_stream_ready() if the initial metadata is
1499
+ * received first. */
1500
+ if (gpr_atm_no_barrier_cas(&call->recv_state, RECV_NONE,
1501
+ RECV_INITIAL_METADATA_FIRST)) {
1502
+ break;
1503
+ }
1504
+ } else {
1505
+ /* Already received messages */
1506
+ saved_rsr_closure =
1507
+ GRPC_CLOSURE_CREATE(receiving_stream_ready, (batch_control*)rsr_bctlp,
1508
+ grpc_schedule_on_exec_ctx);
1509
+ /* No need to modify recv_state */
1510
+ break;
1511
+ }
1512
+ }
1513
+ if (saved_rsr_closure != nullptr) {
1514
+ grpc_core::Closure::Run(DEBUG_LOCATION, saved_rsr_closure,
1515
+ GRPC_ERROR_REF(error));
1516
+ }
1517
+
1518
+ finish_batch_step(bctl);
1519
+ }
1520
+
1521
+ static void receiving_trailing_metadata_ready(void* bctlp, grpc_error* error) {
1522
+ batch_control* bctl = static_cast<batch_control*>(bctlp);
1523
+ grpc_call* call = bctl->call;
1524
+ GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_trailing_metadata_ready");
1525
+ grpc_metadata_batch* md =
1526
+ &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1527
+ recv_trailing_filter(call, md, GRPC_ERROR_REF(error));
1528
+ finish_batch_step(bctl);
1529
+ }
1530
+
1531
+ static void finish_batch(void* bctlp, grpc_error* error) {
1532
+ batch_control* bctl = static_cast<batch_control*>(bctlp);
1533
+ grpc_call* call = bctl->call;
1534
+ GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete");
1535
+ if (reinterpret_cast<grpc_error*>(gpr_atm_acq_load(&bctl->batch_error)) ==
1536
+ GRPC_ERROR_NONE) {
1537
+ gpr_atm_rel_store(&bctl->batch_error,
1538
+ reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
1539
+ }
1540
+ if (error != GRPC_ERROR_NONE) {
1541
+ cancel_with_error(call, GRPC_ERROR_REF(error));
1542
+ }
1543
+ finish_batch_step(bctl);
1544
+ }
1545
+
1546
+ static void free_no_op_completion(void* /*p*/, grpc_cq_completion* completion) {
1547
+ gpr_free(completion);
1548
+ }
1549
+
1550
+ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
1551
+ size_t nops, void* notify_tag,
1552
+ int is_notify_tag_closure) {
1553
+ GPR_TIMER_SCOPE("call_start_batch", 0);
1554
+
1555
+ size_t i;
1556
+ const grpc_op* op;
1557
+ batch_control* bctl;
1558
+ bool has_send_ops = false;
1559
+ int num_recv_ops = 0;
1560
+ grpc_call_error error = GRPC_CALL_OK;
1561
+ grpc_transport_stream_op_batch* stream_op;
1562
+ grpc_transport_stream_op_batch_payload* stream_op_payload;
1563
+
1564
+ GRPC_CALL_LOG_BATCH(GPR_INFO, ops, nops);
1565
+
1566
+ if (nops == 0) {
1567
+ if (!is_notify_tag_closure) {
1568
+ GPR_ASSERT(grpc_cq_begin_op(call->cq, notify_tag));
1569
+ grpc_cq_end_op(call->cq, notify_tag, GRPC_ERROR_NONE,
1570
+ free_no_op_completion, nullptr,
1571
+ static_cast<grpc_cq_completion*>(
1572
+ gpr_malloc(sizeof(grpc_cq_completion))));
1573
+ } else {
1574
+ grpc_core::Closure::Run(DEBUG_LOCATION, (grpc_closure*)notify_tag,
1575
+ GRPC_ERROR_NONE);
1576
+ }
1577
+ error = GRPC_CALL_OK;
1578
+ goto done;
1579
+ }
1580
+
1581
+ bctl = reuse_or_allocate_batch_control(call, ops);
1582
+ if (bctl == nullptr) {
1583
+ return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1584
+ }
1585
+ bctl->completion_data.notify_tag.tag = notify_tag;
1586
+ bctl->completion_data.notify_tag.is_closure =
1587
+ static_cast<uint8_t>(is_notify_tag_closure != 0);
1588
+
1589
+ stream_op = &bctl->op;
1590
+ stream_op_payload = &call->stream_op_payload;
1591
+
1592
+ /* rewrite batch ops into a transport op */
1593
+ for (i = 0; i < nops; i++) {
1594
+ op = &ops[i];
1595
+ if (op->reserved != nullptr) {
1596
+ error = GRPC_CALL_ERROR;
1597
+ goto done_with_error;
1598
+ }
1599
+ switch (op->op) {
1600
+ case GRPC_OP_SEND_INITIAL_METADATA: {
1601
+ /* Flag validation: currently allow no flags */
1602
+ if (!are_initial_metadata_flags_valid(op->flags, call->is_client)) {
1603
+ error = GRPC_CALL_ERROR_INVALID_FLAGS;
1604
+ goto done_with_error;
1605
+ }
1606
+ if (call->sent_initial_metadata) {
1607
+ error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1608
+ goto done_with_error;
1609
+ }
1610
+ // TODO(juanlishen): If the user has already specified a compression
1611
+ // algorithm by setting the initial metadata with key of
1612
+ // GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, we shouldn't override that
1613
+ // with the compression algorithm mapped from compression level.
1614
+ /* process compression level */
1615
+ grpc_metadata& compression_md = call->compression_md;
1616
+ compression_md.key = grpc_empty_slice();
1617
+ compression_md.value = grpc_empty_slice();
1618
+ compression_md.flags = 0;
1619
+ size_t additional_metadata_count = 0;
1620
+ grpc_compression_level effective_compression_level =
1621
+ GRPC_COMPRESS_LEVEL_NONE;
1622
+ bool level_set = false;
1623
+ if (op->data.send_initial_metadata.maybe_compression_level.is_set) {
1624
+ effective_compression_level =
1625
+ op->data.send_initial_metadata.maybe_compression_level.level;
1626
+ level_set = true;
1627
+ } else {
1628
+ const grpc_compression_options copts =
1629
+ grpc_channel_compression_options(call->channel);
1630
+ if (copts.default_level.is_set) {
1631
+ level_set = true;
1632
+ effective_compression_level = copts.default_level.level;
1633
+ }
1634
+ }
1635
+ // Currently, only server side supports compression level setting.
1636
+ if (level_set && !call->is_client) {
1637
+ const grpc_compression_algorithm calgo =
1638
+ compression_algorithm_for_level_locked(
1639
+ call, effective_compression_level);
1640
+ // The following metadata will be checked and removed by the message
1641
+ // compression filter. It will be used as the call's compression
1642
+ // algorithm.
1643
+ compression_md.key = GRPC_MDSTR_GRPC_INTERNAL_ENCODING_REQUEST;
1644
+ compression_md.value = grpc_compression_algorithm_slice(calgo);
1645
+ additional_metadata_count++;
1646
+ }
1647
+ if (op->data.send_initial_metadata.count + additional_metadata_count >
1648
+ INT_MAX) {
1649
+ error = GRPC_CALL_ERROR_INVALID_METADATA;
1650
+ goto done_with_error;
1651
+ }
1652
+ stream_op->send_initial_metadata = true;
1653
+ call->sent_initial_metadata = true;
1654
+ if (!prepare_application_metadata(
1655
+ call, static_cast<int>(op->data.send_initial_metadata.count),
1656
+ op->data.send_initial_metadata.metadata, 0, call->is_client,
1657
+ &compression_md, static_cast<int>(additional_metadata_count))) {
1658
+ error = GRPC_CALL_ERROR_INVALID_METADATA;
1659
+ goto done_with_error;
1660
+ }
1661
+ /* TODO(ctiller): just make these the same variable? */
1662
+ if (call->is_client) {
1663
+ call->metadata_batch[0][0].deadline = call->send_deadline;
1664
+ }
1665
+ stream_op_payload->send_initial_metadata.send_initial_metadata =
1666
+ &call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */];
1667
+ stream_op_payload->send_initial_metadata.send_initial_metadata_flags =
1668
+ op->flags;
1669
+ if (call->is_client) {
1670
+ stream_op_payload->send_initial_metadata.peer_string =
1671
+ &call->peer_string;
1672
+ }
1673
+ has_send_ops = true;
1674
+ break;
1675
+ }
1676
+ case GRPC_OP_SEND_MESSAGE: {
1677
+ if (!are_write_flags_valid(op->flags)) {
1678
+ error = GRPC_CALL_ERROR_INVALID_FLAGS;
1679
+ goto done_with_error;
1680
+ }
1681
+ if (op->data.send_message.send_message == nullptr) {
1682
+ error = GRPC_CALL_ERROR_INVALID_MESSAGE;
1683
+ goto done_with_error;
1684
+ }
1685
+ if (call->sending_message) {
1686
+ error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1687
+ goto done_with_error;
1688
+ }
1689
+ uint32_t flags = op->flags;
1690
+ /* If the outgoing buffer is already compressed, mark it as so in the
1691
+ flags. These will be picked up by the compression filter and further
1692
+ (wasteful) attempts at compression skipped. */
1693
+ if (op->data.send_message.send_message->data.raw.compression >
1694
+ GRPC_COMPRESS_NONE) {
1695
+ flags |= GRPC_WRITE_INTERNAL_COMPRESS;
1696
+ }
1697
+ stream_op->send_message = true;
1698
+ call->sending_message = true;
1699
+ call->sending_stream.Init(
1700
+ &op->data.send_message.send_message->data.raw.slice_buffer, flags);
1701
+ stream_op_payload->send_message.send_message.reset(
1702
+ call->sending_stream.get());
1703
+ has_send_ops = true;
1704
+ break;
1705
+ }
1706
+ case GRPC_OP_SEND_CLOSE_FROM_CLIENT: {
1707
+ /* Flag validation: currently allow no flags */
1708
+ if (op->flags != 0) {
1709
+ error = GRPC_CALL_ERROR_INVALID_FLAGS;
1710
+ goto done_with_error;
1711
+ }
1712
+ if (!call->is_client) {
1713
+ error = GRPC_CALL_ERROR_NOT_ON_SERVER;
1714
+ goto done_with_error;
1715
+ }
1716
+ if (call->sent_final_op) {
1717
+ error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1718
+ goto done_with_error;
1719
+ }
1720
+ stream_op->send_trailing_metadata = true;
1721
+ call->sent_final_op = true;
1722
+ stream_op_payload->send_trailing_metadata.send_trailing_metadata =
1723
+ &call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */];
1724
+ has_send_ops = true;
1725
+ break;
1726
+ }
1727
+ case GRPC_OP_SEND_STATUS_FROM_SERVER: {
1728
+ /* Flag validation: currently allow no flags */
1729
+ if (op->flags != 0) {
1730
+ error = GRPC_CALL_ERROR_INVALID_FLAGS;
1731
+ goto done_with_error;
1732
+ }
1733
+ if (call->is_client) {
1734
+ error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
1735
+ goto done_with_error;
1736
+ }
1737
+ if (call->sent_final_op) {
1738
+ error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1739
+ goto done_with_error;
1740
+ }
1741
+ if (op->data.send_status_from_server.trailing_metadata_count >
1742
+ INT_MAX) {
1743
+ error = GRPC_CALL_ERROR_INVALID_METADATA;
1744
+ goto done_with_error;
1745
+ }
1746
+ stream_op->send_trailing_metadata = true;
1747
+ call->sent_final_op = true;
1748
+ GPR_ASSERT(call->send_extra_metadata_count == 0);
1749
+ call->send_extra_metadata_count = 1;
1750
+ call->send_extra_metadata[0].md = grpc_get_reffed_status_elem(
1751
+ op->data.send_status_from_server.status);
1752
+ grpc_error* status_error =
1753
+ op->data.send_status_from_server.status == GRPC_STATUS_OK
1754
+ ? GRPC_ERROR_NONE
1755
+ : grpc_error_set_int(
1756
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1757
+ "Server returned error"),
1758
+ GRPC_ERROR_INT_GRPC_STATUS,
1759
+ static_cast<intptr_t>(
1760
+ op->data.send_status_from_server.status));
1761
+ if (op->data.send_status_from_server.status_details != nullptr) {
1762
+ call->send_extra_metadata[1].md = grpc_mdelem_from_slices(
1763
+ GRPC_MDSTR_GRPC_MESSAGE,
1764
+ grpc_slice_ref_internal(
1765
+ *op->data.send_status_from_server.status_details));
1766
+ call->send_extra_metadata_count++;
1767
+ if (status_error != GRPC_ERROR_NONE) {
1768
+ char* msg = grpc_slice_to_c_string(
1769
+ GRPC_MDVALUE(call->send_extra_metadata[1].md));
1770
+ status_error =
1771
+ grpc_error_set_str(status_error, GRPC_ERROR_STR_GRPC_MESSAGE,
1772
+ grpc_slice_from_copied_string(msg));
1773
+ gpr_free(msg);
1774
+ }
1775
+ }
1776
+
1777
+ gpr_atm_rel_store(&call->status_error,
1778
+ reinterpret_cast<gpr_atm>(status_error));
1779
+ if (!prepare_application_metadata(
1780
+ call,
1781
+ static_cast<int>(
1782
+ op->data.send_status_from_server.trailing_metadata_count),
1783
+ op->data.send_status_from_server.trailing_metadata, 1, 1,
1784
+ nullptr, 0)) {
1785
+ for (int n = 0; n < call->send_extra_metadata_count; n++) {
1786
+ GRPC_MDELEM_UNREF(call->send_extra_metadata[n].md);
1787
+ }
1788
+ call->send_extra_metadata_count = 0;
1789
+ error = GRPC_CALL_ERROR_INVALID_METADATA;
1790
+ goto done_with_error;
1791
+ }
1792
+ stream_op_payload->send_trailing_metadata.send_trailing_metadata =
1793
+ &call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */];
1794
+ has_send_ops = true;
1795
+ break;
1796
+ }
1797
+ case GRPC_OP_RECV_INITIAL_METADATA: {
1798
+ /* Flag validation: currently allow no flags */
1799
+ if (op->flags != 0) {
1800
+ error = GRPC_CALL_ERROR_INVALID_FLAGS;
1801
+ goto done_with_error;
1802
+ }
1803
+ if (call->received_initial_metadata) {
1804
+ error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1805
+ goto done_with_error;
1806
+ }
1807
+ call->received_initial_metadata = true;
1808
+ call->buffered_metadata[0] =
1809
+ op->data.recv_initial_metadata.recv_initial_metadata;
1810
+ GRPC_CLOSURE_INIT(&call->receiving_initial_metadata_ready,
1811
+ receiving_initial_metadata_ready, bctl,
1812
+ grpc_schedule_on_exec_ctx);
1813
+ stream_op->recv_initial_metadata = true;
1814
+ stream_op_payload->recv_initial_metadata.recv_initial_metadata =
1815
+ &call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
1816
+ stream_op_payload->recv_initial_metadata.recv_initial_metadata_ready =
1817
+ &call->receiving_initial_metadata_ready;
1818
+ if (!call->is_client) {
1819
+ stream_op_payload->recv_initial_metadata.peer_string =
1820
+ &call->peer_string;
1821
+ }
1822
+ ++num_recv_ops;
1823
+ break;
1824
+ }
1825
+ case GRPC_OP_RECV_MESSAGE: {
1826
+ /* Flag validation: currently allow no flags */
1827
+ if (op->flags != 0) {
1828
+ error = GRPC_CALL_ERROR_INVALID_FLAGS;
1829
+ goto done_with_error;
1830
+ }
1831
+ if (call->receiving_message) {
1832
+ error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1833
+ goto done_with_error;
1834
+ }
1835
+ call->receiving_message = true;
1836
+ stream_op->recv_message = true;
1837
+ call->receiving_buffer = op->data.recv_message.recv_message;
1838
+ stream_op_payload->recv_message.recv_message = &call->receiving_stream;
1839
+ GRPC_CLOSURE_INIT(&call->receiving_stream_ready,
1840
+ receiving_stream_ready_in_call_combiner, bctl,
1841
+ grpc_schedule_on_exec_ctx);
1842
+ stream_op_payload->recv_message.recv_message_ready =
1843
+ &call->receiving_stream_ready;
1844
+ ++num_recv_ops;
1845
+ break;
1846
+ }
1847
+ case GRPC_OP_RECV_STATUS_ON_CLIENT: {
1848
+ /* Flag validation: currently allow no flags */
1849
+ if (op->flags != 0) {
1850
+ error = GRPC_CALL_ERROR_INVALID_FLAGS;
1851
+ goto done_with_error;
1852
+ }
1853
+ if (!call->is_client) {
1854
+ error = GRPC_CALL_ERROR_NOT_ON_SERVER;
1855
+ goto done_with_error;
1856
+ }
1857
+ if (call->requested_final_op) {
1858
+ error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1859
+ goto done_with_error;
1860
+ }
1861
+ call->requested_final_op = true;
1862
+ call->buffered_metadata[1] =
1863
+ op->data.recv_status_on_client.trailing_metadata;
1864
+ call->final_op.client.status = op->data.recv_status_on_client.status;
1865
+ call->final_op.client.status_details =
1866
+ op->data.recv_status_on_client.status_details;
1867
+ call->final_op.client.error_string =
1868
+ op->data.recv_status_on_client.error_string;
1869
+ stream_op->recv_trailing_metadata = true;
1870
+ stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
1871
+ &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1872
+ stream_op_payload->recv_trailing_metadata.collect_stats =
1873
+ &call->final_info.stats.transport_stream_stats;
1874
+ GRPC_CLOSURE_INIT(&call->receiving_trailing_metadata_ready,
1875
+ receiving_trailing_metadata_ready, bctl,
1876
+ grpc_schedule_on_exec_ctx);
1877
+ stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1878
+ &call->receiving_trailing_metadata_ready;
1879
+ ++num_recv_ops;
1880
+ break;
1881
+ }
1882
+ case GRPC_OP_RECV_CLOSE_ON_SERVER: {
1883
+ /* Flag validation: currently allow no flags */
1884
+ if (op->flags != 0) {
1885
+ error = GRPC_CALL_ERROR_INVALID_FLAGS;
1886
+ goto done_with_error;
1887
+ }
1888
+ if (call->is_client) {
1889
+ error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
1890
+ goto done_with_error;
1891
+ }
1892
+ if (call->requested_final_op) {
1893
+ error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
1894
+ goto done_with_error;
1895
+ }
1896
+ call->requested_final_op = true;
1897
+ call->final_op.server.cancelled =
1898
+ op->data.recv_close_on_server.cancelled;
1899
+ stream_op->recv_trailing_metadata = true;
1900
+ stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
1901
+ &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
1902
+ stream_op_payload->recv_trailing_metadata.collect_stats =
1903
+ &call->final_info.stats.transport_stream_stats;
1904
+ GRPC_CLOSURE_INIT(&call->receiving_trailing_metadata_ready,
1905
+ receiving_trailing_metadata_ready, bctl,
1906
+ grpc_schedule_on_exec_ctx);
1907
+ stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1908
+ &call->receiving_trailing_metadata_ready;
1909
+ ++num_recv_ops;
1910
+ break;
1911
+ }
1912
+ }
1913
+ }
1914
+
1915
+ GRPC_CALL_INTERNAL_REF(call, "completion");
1916
+ if (!is_notify_tag_closure) {
1917
+ GPR_ASSERT(grpc_cq_begin_op(call->cq, notify_tag));
1918
+ }
1919
+ bctl->set_num_steps_to_complete((has_send_ops ? 1 : 0) + num_recv_ops);
1920
+
1921
+ if (has_send_ops) {
1922
+ GRPC_CLOSURE_INIT(&bctl->finish_batch, finish_batch, bctl,
1923
+ grpc_schedule_on_exec_ctx);
1924
+ stream_op->on_complete = &bctl->finish_batch;
1925
+ }
1926
+
1927
+ gpr_atm_rel_store(&call->any_ops_sent_atm, 1);
1928
+ execute_batch(call, stream_op, &bctl->start_batch);
1929
+
1930
+ done:
1931
+ return error;
1932
+
1933
+ done_with_error:
1934
+ /* reverse any mutations that occurred */
1935
+ if (stream_op->send_initial_metadata) {
1936
+ call->sent_initial_metadata = false;
1937
+ grpc_metadata_batch_clear(&call->metadata_batch[0][0]);
1938
+ }
1939
+ if (stream_op->send_message) {
1940
+ call->sending_message = false;
1941
+ call->sending_stream->Orphan();
1942
+ }
1943
+ if (stream_op->send_trailing_metadata) {
1944
+ call->sent_final_op = false;
1945
+ grpc_metadata_batch_clear(&call->metadata_batch[0][1]);
1946
+ }
1947
+ if (stream_op->recv_initial_metadata) {
1948
+ call->received_initial_metadata = false;
1949
+ }
1950
+ if (stream_op->recv_message) {
1951
+ call->receiving_message = false;
1952
+ }
1953
+ if (stream_op->recv_trailing_metadata) {
1954
+ call->requested_final_op = false;
1955
+ }
1956
+ goto done;
1957
+ }
1958
+
1959
+ grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
1960
+ size_t nops, void* tag, void* reserved) {
1961
+ grpc_call_error err;
1962
+
1963
+ GRPC_API_TRACE(
1964
+ "grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, "
1965
+ "reserved=%p)",
1966
+ 5, (call, ops, (unsigned long)nops, tag, reserved));
1967
+
1968
+ if (reserved != nullptr) {
1969
+ err = GRPC_CALL_ERROR;
1970
+ } else {
1971
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1972
+ grpc_core::ExecCtx exec_ctx;
1973
+ err = call_start_batch(call, ops, nops, tag, 0);
1974
+ }
1975
+
1976
+ return err;
1977
+ }
1978
+
1979
+ grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
1980
+ const grpc_op* ops,
1981
+ size_t nops,
1982
+ grpc_closure* closure) {
1983
+ return call_start_batch(call, ops, nops, closure, 1);
1984
+ }
1985
+
1986
+ void grpc_call_context_set(grpc_call* call, grpc_context_index elem,
1987
+ void* value, void (*destroy)(void* value)) {
1988
+ if (call->context[elem].destroy) {
1989
+ call->context[elem].destroy(call->context[elem].value);
1990
+ }
1991
+ call->context[elem].value = value;
1992
+ call->context[elem].destroy = destroy;
1993
+ }
1994
+
1995
+ void* grpc_call_context_get(grpc_call* call, grpc_context_index elem) {
1996
+ return call->context[elem].value;
1997
+ }
1998
+
1999
+ uint8_t grpc_call_is_client(grpc_call* call) { return call->is_client; }
2000
+
2001
+ grpc_compression_algorithm grpc_call_compression_for_level(
2002
+ grpc_call* call, grpc_compression_level level) {
2003
+ grpc_compression_algorithm algo =
2004
+ compression_algorithm_for_level_locked(call, level);
2005
+ return algo;
2006
+ }
2007
+
2008
+ const char* grpc_call_error_to_string(grpc_call_error error) {
2009
+ switch (error) {
2010
+ case GRPC_CALL_ERROR:
2011
+ return "GRPC_CALL_ERROR";
2012
+ case GRPC_CALL_ERROR_ALREADY_ACCEPTED:
2013
+ return "GRPC_CALL_ERROR_ALREADY_ACCEPTED";
2014
+ case GRPC_CALL_ERROR_ALREADY_FINISHED:
2015
+ return "GRPC_CALL_ERROR_ALREADY_FINISHED";
2016
+ case GRPC_CALL_ERROR_ALREADY_INVOKED:
2017
+ return "GRPC_CALL_ERROR_ALREADY_INVOKED";
2018
+ case GRPC_CALL_ERROR_BATCH_TOO_BIG:
2019
+ return "GRPC_CALL_ERROR_BATCH_TOO_BIG";
2020
+ case GRPC_CALL_ERROR_INVALID_FLAGS:
2021
+ return "GRPC_CALL_ERROR_INVALID_FLAGS";
2022
+ case GRPC_CALL_ERROR_INVALID_MESSAGE:
2023
+ return "GRPC_CALL_ERROR_INVALID_MESSAGE";
2024
+ case GRPC_CALL_ERROR_INVALID_METADATA:
2025
+ return "GRPC_CALL_ERROR_INVALID_METADATA";
2026
+ case GRPC_CALL_ERROR_NOT_INVOKED:
2027
+ return "GRPC_CALL_ERROR_NOT_INVOKED";
2028
+ case GRPC_CALL_ERROR_NOT_ON_CLIENT:
2029
+ return "GRPC_CALL_ERROR_NOT_ON_CLIENT";
2030
+ case GRPC_CALL_ERROR_NOT_ON_SERVER:
2031
+ return "GRPC_CALL_ERROR_NOT_ON_SERVER";
2032
+ case GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE:
2033
+ return "GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE";
2034
+ case GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH:
2035
+ return "GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH";
2036
+ case GRPC_CALL_ERROR_TOO_MANY_OPERATIONS:
2037
+ return "GRPC_CALL_ERROR_TOO_MANY_OPERATIONS";
2038
+ case GRPC_CALL_ERROR_COMPLETION_QUEUE_SHUTDOWN:
2039
+ return "GRPC_CALL_ERROR_COMPLETION_QUEUE_SHUTDOWN";
2040
+ case GRPC_CALL_OK:
2041
+ return "GRPC_CALL_OK";
2042
+ }
2043
+ GPR_UNREACHABLE_CODE(return "GRPC_CALL_ERROR_UNKNOW");
2044
+ }