grpc 1.46.2-x86_64-linux → 1.48.0.pre1-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (816) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +138 -128
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +62 -18
  5. data/include/grpc/event_engine/memory_allocator.h +0 -15
  6. data/include/grpc/event_engine/port.h +1 -1
  7. data/include/grpc/event_engine/slice.h +286 -0
  8. data/include/grpc/event_engine/slice_buffer.h +118 -0
  9. data/include/grpc/grpc.h +3 -3
  10. data/include/grpc/grpc_security.h +11 -0
  11. data/include/grpc/impl/codegen/compression_types.h +2 -1
  12. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  13. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  14. data/include/grpc/impl/codegen/grpc_types.h +2 -1
  15. data/include/grpc/impl/codegen/port_platform.h +106 -39
  16. data/include/grpc/impl/codegen/slice.h +1 -1
  17. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  18. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +35 -35
  19. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +20 -1
  20. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  21. data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
  22. data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
  23. data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
  24. data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
  25. data/src/core/ext/filters/client_channel/channel_connectivity.cc +43 -21
  26. data/src/core/ext/filters/client_channel/client_channel.cc +111 -82
  27. data/src/core/ext/filters/client_channel/client_channel.h +43 -8
  28. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
  29. data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
  30. data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
  31. data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
  32. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
  33. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  34. data/src/core/ext/filters/client_channel/config_selector.h +8 -6
  35. data/src/core/ext/filters/client_channel/connector.h +9 -3
  36. data/src/core/ext/filters/client_channel/dynamic_filters.cc +19 -6
  37. data/src/core/ext/filters/client_channel/dynamic_filters.h +12 -2
  38. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
  39. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
  40. data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
  41. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
  42. data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
  43. data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
  45. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
  46. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  47. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
  48. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -5
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +132 -62
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
  56. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
  57. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  58. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
  59. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  60. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +149 -147
  61. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +176 -85
  62. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +303 -203
  63. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
  64. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +92 -54
  65. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +240 -214
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +119 -111
  67. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +86 -71
  68. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +101 -25
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
  70. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -11
  71. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +36 -20
  72. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +78 -14
  73. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
  74. data/src/core/ext/filters/client_channel/lb_policy.h +18 -31
  75. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
  76. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
  77. data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
  78. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  79. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
  80. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  81. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
  82. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  83. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +26 -6
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +139 -48
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
  87. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -6
  88. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -14
  89. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
  90. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
  91. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  92. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  93. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +39 -7
  94. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -19
  95. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
  96. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -16
  97. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +14 -2
  98. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
  99. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +17 -12
  100. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +111 -46
  101. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  102. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +12 -18
  103. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
  104. data/src/core/ext/filters/client_channel/retry_filter.cc +75 -36
  105. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  106. data/src/core/ext/filters/client_channel/retry_service_config.cc +12 -13
  107. data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
  108. data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
  109. data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
  110. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +24 -6
  111. data/src/core/ext/filters/client_channel/subchannel.cc +186 -187
  112. data/src/core/ext/filters/client_channel/subchannel.h +80 -36
  113. data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
  114. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  115. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
  116. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
  117. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +24 -95
  118. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +17 -9
  119. data/src/core/ext/filters/deadline/deadline_filter.cc +18 -9
  120. data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
  121. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +22 -6
  122. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
  123. data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
  124. data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
  125. data/src/core/ext/filters/http/client/http_client_filter.cc +30 -10
  126. data/src/core/ext/filters/http/client/http_client_filter.h +15 -2
  127. data/src/core/ext/filters/http/client_authority_filter.cc +16 -20
  128. data/src/core/ext/filters/http/client_authority_filter.h +5 -2
  129. data/src/core/ext/filters/http/http_filters_plugin.cc +16 -9
  130. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +65 -187
  131. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  132. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -107
  133. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  134. data/src/core/ext/filters/http/server/http_server_filter.cc +95 -255
  135. data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
  136. data/src/core/ext/filters/message_size/message_size_filter.cc +45 -41
  137. data/src/core/ext/filters/message_size/message_size_filter.h +15 -2
  138. data/src/core/ext/filters/rbac/rbac_filter.cc +15 -3
  139. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  140. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
  141. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
  142. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  143. data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
  144. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
  145. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  146. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +104 -138
  147. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
  148. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +58 -29
  149. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
  150. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
  151. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  152. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  153. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -491
  154. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +6 -1
  155. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
  156. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
  157. data/src/core/ext/transport/chttp2/transport/flow_control.cc +145 -261
  158. data/src/core/ext/transport/chttp2/transport/flow_control.h +179 -288
  159. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  160. data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -211
  161. data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
  162. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
  163. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
  164. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
  165. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
  166. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
  167. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
  168. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -42
  169. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
  170. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
  171. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
  172. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
  173. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
  174. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
  175. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
  176. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -13
  177. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
  178. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +53 -37
  179. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
  180. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  181. data/src/core/ext/transport/chttp2/transport/internal.h +31 -112
  182. data/src/core/ext/transport/chttp2/transport/parsing.cc +77 -43
  183. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
  184. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  185. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  186. data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
  187. data/src/core/ext/transport/chttp2/transport/writing.cc +54 -21
  188. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  189. data/src/core/ext/transport/inproc/inproc_transport.cc +93 -86
  190. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  191. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  192. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
  193. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  194. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
  195. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  196. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  197. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  198. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  199. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  200. data/src/core/ext/xds/certificate_provider_store.cc +6 -2
  201. data/src/core/ext/xds/certificate_provider_store.h +10 -1
  202. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  203. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  204. data/src/core/ext/xds/upb_utils.h +1 -2
  205. data/src/core/ext/xds/xds_api.cc +16 -18
  206. data/src/core/ext/xds/xds_api.h +12 -5
  207. data/src/core/ext/xds/xds_bootstrap.cc +39 -26
  208. data/src/core/ext/xds/xds_bootstrap.h +11 -11
  209. data/src/core/ext/xds/xds_certificate_provider.cc +16 -4
  210. data/src/core/ext/xds/xds_certificate_provider.h +17 -2
  211. data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -5
  212. data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
  213. data/src/core/ext/xds/xds_client.cc +121 -46
  214. data/src/core/ext/xds/xds_client.h +19 -4
  215. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  216. data/src/core/ext/xds/xds_client_stats.h +4 -3
  217. data/src/core/ext/xds/xds_cluster.cc +126 -25
  218. data/src/core/ext/xds/xds_cluster.h +12 -1
  219. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
  220. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
  221. data/src/core/ext/xds/xds_common_types.cc +36 -22
  222. data/src/core/ext/xds/xds_common_types.h +12 -4
  223. data/src/core/ext/xds/xds_endpoint.cc +25 -15
  224. data/src/core/ext/xds/xds_endpoint.h +13 -5
  225. data/src/core/ext/xds/xds_http_fault_filter.cc +10 -8
  226. data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
  227. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  228. data/src/core/ext/xds/xds_http_filters.h +3 -3
  229. data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
  230. data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
  231. data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
  232. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  233. data/src/core/ext/xds/xds_listener.cc +70 -42
  234. data/src/core/ext/xds/xds_listener.h +10 -1
  235. data/src/core/ext/xds/xds_resource_type.h +3 -3
  236. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  237. data/src/core/ext/xds/xds_route_config.cc +56 -28
  238. data/src/core/ext/xds/xds_route_config.h +11 -2
  239. data/src/core/ext/xds/xds_routing.cc +16 -0
  240. data/src/core/ext/xds/xds_routing.h +7 -2
  241. data/src/core/ext/xds/xds_server_config_fetcher.cc +56 -7
  242. data/src/core/lib/address_utils/parse_address.cc +5 -8
  243. data/src/core/lib/address_utils/parse_address.h +3 -2
  244. data/src/core/lib/address_utils/sockaddr_utils.cc +60 -26
  245. data/src/core/lib/address_utils/sockaddr_utils.h +9 -4
  246. data/src/core/lib/avl/avl.h +6 -4
  247. data/src/core/lib/backoff/backoff.cc +1 -1
  248. data/src/core/lib/backoff/backoff.h +1 -1
  249. data/src/core/lib/channel/call_finalization.h +4 -0
  250. data/src/core/lib/channel/call_tracer.h +11 -5
  251. data/src/core/lib/channel/channel_args.cc +41 -22
  252. data/src/core/lib/channel/channel_args.h +34 -3
  253. data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
  254. data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
  255. data/src/core/lib/channel/channel_fwd.h +26 -0
  256. data/src/core/lib/channel/channel_stack.cc +45 -7
  257. data/src/core/lib/channel/channel_stack.h +45 -9
  258. data/src/core/lib/channel/channel_stack_builder.cc +9 -19
  259. data/src/core/lib/channel/channel_stack_builder.h +17 -32
  260. data/src/core/lib/channel/channel_stack_builder_impl.cc +38 -43
  261. data/src/core/lib/channel/channel_stack_builder_impl.h +4 -6
  262. data/src/core/lib/channel/channel_trace.cc +8 -13
  263. data/src/core/lib/channel/channel_trace.h +6 -3
  264. data/src/core/lib/channel/channelz.cc +10 -14
  265. data/src/core/lib/channel/channelz.h +15 -7
  266. data/src/core/lib/channel/channelz_registry.cc +11 -19
  267. data/src/core/lib/channel/channelz_registry.h +10 -9
  268. data/src/core/lib/channel/connected_channel.cc +22 -31
  269. data/src/core/lib/channel/connected_channel.h +2 -0
  270. data/src/core/lib/channel/promise_based_filter.cc +451 -190
  271. data/src/core/lib/channel/promise_based_filter.h +162 -27
  272. data/src/core/lib/channel/status_util.cc +2 -0
  273. data/src/core/lib/channel/status_util.h +0 -3
  274. data/src/core/lib/compression/compression.cc +6 -1
  275. data/src/core/lib/compression/compression_internal.cc +48 -16
  276. data/src/core/lib/compression/compression_internal.h +4 -3
  277. data/src/core/lib/compression/message_compress.cc +3 -1
  278. data/src/core/lib/compression/message_compress.h +2 -3
  279. data/src/core/lib/config/core_configuration.cc +3 -0
  280. data/src/core/lib/config/core_configuration.h +2 -1
  281. data/src/core/lib/debug/stats.cc +9 -9
  282. data/src/core/lib/debug/stats.h +2 -1
  283. data/src/core/lib/debug/stats_data.cc +2 -1
  284. data/src/core/lib/debug/stats_data.h +0 -4
  285. data/src/core/lib/debug/trace.h +13 -12
  286. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
  287. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
  288. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
  289. data/src/core/lib/event_engine/event_engine.cc +29 -14
  290. data/src/core/lib/event_engine/event_engine_factory.h +5 -0
  291. data/src/core/lib/event_engine/handle_containers.h +67 -0
  292. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
  293. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
  294. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
  295. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
  296. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
  297. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
  298. data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
  299. data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
  300. data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
  301. data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
  302. data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
  303. data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
  304. data/src/core/lib/event_engine/memory_allocator.cc +12 -4
  305. data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
  306. data/src/core/lib/event_engine/resolved_address.cc +4 -2
  307. data/src/core/lib/event_engine/slice.cc +102 -0
  308. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  309. data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
  310. data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
  311. data/src/core/lib/gpr/log.cc +5 -0
  312. data/src/core/lib/gpr/time_posix.cc +6 -9
  313. data/src/core/lib/gpr/time_windows.cc +10 -7
  314. data/src/core/lib/gpr/tls.h +3 -5
  315. data/src/core/lib/gprpp/bitset.h +5 -1
  316. data/src/core/lib/gprpp/chunked_vector.h +4 -0
  317. data/src/core/lib/gprpp/construct_destruct.h +1 -0
  318. data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
  319. data/src/core/lib/gprpp/examine_stack.h +0 -1
  320. data/src/core/lib/gprpp/fork.cc +3 -6
  321. data/src/core/lib/gprpp/global_config.h +2 -4
  322. data/src/core/lib/gprpp/global_config_env.cc +3 -2
  323. data/src/core/lib/gprpp/global_config_env.h +3 -1
  324. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  325. data/src/core/lib/gprpp/host_port.cc +2 -0
  326. data/src/core/lib/gprpp/manual_constructor.h +0 -68
  327. data/src/core/lib/gprpp/match.h +2 -0
  328. data/src/core/lib/gprpp/memory.h +1 -5
  329. data/src/core/lib/gprpp/orphanable.h +1 -4
  330. data/src/core/lib/gprpp/ref_counted.h +1 -3
  331. data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
  332. data/src/core/lib/gprpp/stat.h +0 -2
  333. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  334. data/src/core/lib/gprpp/status_helper.cc +50 -32
  335. data/src/core/lib/gprpp/status_helper.h +4 -0
  336. data/src/core/lib/gprpp/sync.h +3 -1
  337. data/src/core/lib/gprpp/table.h +10 -0
  338. data/src/core/lib/gprpp/thd.h +2 -5
  339. data/src/core/lib/gprpp/thd_posix.cc +4 -2
  340. data/src/core/lib/gprpp/thd_windows.cc +2 -0
  341. data/src/core/lib/gprpp/time.cc +16 -0
  342. data/src/core/lib/gprpp/time.h +10 -1
  343. data/src/core/lib/gprpp/time_util.cc +4 -0
  344. data/src/core/lib/gprpp/time_util.h +1 -1
  345. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  346. data/src/core/lib/http/format_request.cc +34 -4
  347. data/src/core/lib/http/format_request.h +3 -1
  348. data/src/core/lib/http/httpcli.cc +106 -93
  349. data/src/core/lib/http/httpcli.h +58 -10
  350. data/src/core/lib/http/httpcli_security_connector.cc +19 -8
  351. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  352. data/src/core/lib/http/parser.cc +6 -7
  353. data/src/core/lib/http/parser.h +3 -0
  354. data/src/core/lib/iomgr/call_combiner.cc +2 -2
  355. data/src/core/lib/iomgr/endpoint.cc +4 -4
  356. data/src/core/lib/iomgr/endpoint.h +7 -5
  357. data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
  358. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  359. data/src/core/lib/iomgr/error.cc +11 -9
  360. data/src/core/lib/iomgr/error.h +9 -5
  361. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  362. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  363. data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
  364. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  365. data/src/core/lib/iomgr/ev_posix.cc +55 -96
  366. data/src/core/lib/iomgr/ev_posix.h +5 -3
  367. data/src/core/lib/iomgr/exec_ctx.h +1 -2
  368. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  369. data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
  370. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  371. data/src/core/lib/iomgr/iomgr.cc +7 -1
  372. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
  373. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  374. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  375. data/src/core/lib/iomgr/load_file.cc +1 -1
  376. data/src/core/lib/iomgr/pollset_set.h +1 -2
  377. data/src/core/lib/iomgr/port.h +25 -6
  378. data/src/core/lib/iomgr/resolve_address.cc +8 -0
  379. data/src/core/lib/iomgr/resolve_address.h +21 -14
  380. data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
  381. data/src/core/lib/iomgr/resolve_address_posix.cc +9 -15
  382. data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
  383. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -15
  384. data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
  385. data/src/core/lib/iomgr/sockaddr.h +2 -3
  386. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  387. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  388. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
  389. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  390. data/src/core/lib/iomgr/tcp_client.h +24 -13
  391. data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
  392. data/src/core/lib/iomgr/tcp_client_posix.cc +154 -29
  393. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  394. data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
  395. data/src/core/lib/iomgr/tcp_posix.cc +96 -52
  396. data/src/core/lib/iomgr/tcp_server_posix.cc +33 -19
  397. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +41 -38
  398. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -6
  399. data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
  400. data/src/core/lib/iomgr/tcp_windows.cc +12 -9
  401. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  402. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  403. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  404. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  405. data/src/core/lib/iomgr/work_serializer.h +2 -3
  406. data/src/core/lib/json/json.h +1 -2
  407. data/src/core/lib/json/json_reader.cc +9 -1
  408. data/src/core/lib/json/json_util.cc +7 -0
  409. data/src/core/lib/json/json_util.h +10 -1
  410. data/src/core/lib/json/json_writer.cc +6 -1
  411. data/src/core/lib/matchers/matchers.cc +6 -3
  412. data/src/core/lib/matchers/matchers.h +2 -0
  413. data/src/core/lib/promise/activity.cc +1 -2
  414. data/src/core/lib/promise/activity.h +13 -19
  415. data/src/core/lib/promise/arena_promise.h +11 -1
  416. data/src/core/lib/promise/call_push_pull.h +4 -0
  417. data/src/core/lib/promise/context.h +1 -1
  418. data/src/core/lib/promise/detail/basic_seq.h +2 -2
  419. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  420. data/src/core/lib/promise/latch.h +0 -1
  421. data/src/core/lib/promise/loop.h +2 -0
  422. data/src/core/lib/promise/promise.h +1 -0
  423. data/src/core/lib/promise/race.h +0 -1
  424. data/src/core/lib/promise/seq.h +0 -2
  425. data/src/core/lib/promise/sleep.cc +38 -31
  426. data/src/core/lib/promise/sleep.h +32 -22
  427. data/src/core/lib/promise/try_seq.h +2 -2
  428. data/src/core/lib/resolver/resolver.cc +5 -0
  429. data/src/core/lib/resolver/resolver.h +3 -0
  430. data/src/core/lib/resolver/resolver_factory.h +6 -4
  431. data/src/core/lib/resolver/resolver_registry.cc +2 -9
  432. data/src/core/lib/resolver/resolver_registry.h +12 -1
  433. data/src/core/lib/resolver/server_address.cc +17 -3
  434. data/src/core/lib/resolver/server_address.h +13 -6
  435. data/src/core/lib/resource_quota/api.cc +14 -1
  436. data/src/core/lib/resource_quota/api.h +4 -1
  437. data/src/core/lib/resource_quota/arena.cc +0 -6
  438. data/src/core/lib/resource_quota/arena.h +1 -2
  439. data/src/core/lib/resource_quota/memory_quota.cc +62 -62
  440. data/src/core/lib/resource_quota/memory_quota.h +35 -30
  441. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  442. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  443. data/src/core/lib/resource_quota/thread_quota.h +4 -0
  444. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  445. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  446. data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
  447. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  448. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  449. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  450. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -0
  451. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
  452. data/src/core/lib/security/authorization/matchers.cc +9 -1
  453. data/src/core/lib/security/authorization/matchers.h +7 -0
  454. data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
  455. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  456. data/src/core/lib/security/context/security_context.cc +5 -2
  457. data/src/core/lib/security/context/security_context.h +14 -2
  458. data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -4
  459. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -3
  460. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  461. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  462. data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
  463. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  464. data/src/core/lib/security/credentials/channel_creds_registry.h +7 -1
  465. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  466. data/src/core/lib/security/credentials/composite/composite_credentials.cc +11 -7
  467. data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -6
  468. data/src/core/lib/security/credentials/credentials.cc +4 -8
  469. data/src/core/lib/security/credentials/credentials.h +27 -18
  470. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +108 -9
  471. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +18 -0
  472. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  473. data/src/core/lib/security/credentials/external/external_account_credentials.cc +27 -9
  474. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  475. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
  476. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  477. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +22 -4
  478. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  479. data/src/core/lib/security/credentials/fake/fake_credentials.cc +21 -9
  480. data/src/core/lib/security/credentials/fake/fake_credentials.h +15 -3
  481. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  482. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +51 -24
  483. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +12 -3
  484. data/src/core/lib/security/credentials/iam/iam_credentials.cc +13 -4
  485. data/src/core/lib/security/credentials/iam/iam_credentials.h +12 -2
  486. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +12 -2
  487. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +9 -4
  488. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  489. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  490. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -7
  491. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -2
  492. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
  493. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  494. data/src/core/lib/security/credentials/local/local_credentials.cc +12 -5
  495. data/src/core/lib/security/credentials/local/local_credentials.h +9 -2
  496. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +36 -19
  497. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -4
  498. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -8
  499. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -1
  500. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -2
  501. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +17 -4
  502. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  503. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  504. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
  505. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -11
  506. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +35 -3
  507. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +34 -11
  508. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  509. data/src/core/lib/security/credentials/tls/tls_credentials.cc +17 -2
  510. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -3
  511. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  512. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  513. data/src/core/lib/security/credentials/xds/xds_credentials.cc +20 -4
  514. data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
  515. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
  516. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  517. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +18 -2
  518. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  519. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
  520. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
  521. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  522. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  523. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  524. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
  525. data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
  526. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  527. data/src/core/lib/security/security_connector/security_connector.h +19 -7
  528. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +19 -7
  529. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  530. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  531. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  532. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  533. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
  534. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
  535. data/src/core/lib/security/transport/auth_filters.h +7 -0
  536. data/src/core/lib/security/transport/client_auth_filter.cc +24 -17
  537. data/src/core/lib/security/transport/secure_endpoint.cc +81 -20
  538. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  539. data/src/core/lib/security/transport/security_handshaker.cc +49 -16
  540. data/src/core/lib/security/transport/security_handshaker.h +5 -1
  541. data/src/core/lib/security/transport/server_auth_filter.cc +29 -6
  542. data/src/core/lib/security/util/json_util.cc +3 -2
  543. data/src/core/lib/security/util/json_util.h +0 -2
  544. data/src/core/lib/service_config/service_config.h +4 -8
  545. data/src/core/lib/service_config/service_config_call_data.h +6 -2
  546. data/src/core/lib/service_config/service_config_impl.cc +13 -6
  547. data/src/core/lib/service_config/service_config_impl.h +9 -4
  548. data/src/core/lib/service_config/service_config_parser.cc +8 -2
  549. data/src/core/lib/service_config/service_config_parser.h +7 -0
  550. data/src/core/lib/slice/b64.cc +1 -1
  551. data/src/core/lib/slice/b64.h +2 -0
  552. data/src/core/lib/slice/percent_encoding.cc +4 -1
  553. data/src/core/lib/slice/percent_encoding.h +0 -6
  554. data/src/core/lib/slice/slice.cc +2 -1
  555. data/src/core/lib/slice/slice.h +10 -5
  556. data/src/core/lib/slice/slice_api.cc +1 -1
  557. data/src/core/lib/slice/slice_buffer.cc +79 -23
  558. data/src/core/lib/slice/slice_buffer.h +137 -0
  559. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  560. data/src/core/lib/slice/slice_internal.h +4 -3
  561. data/src/core/lib/slice/slice_refcount.h +2 -3
  562. data/src/core/lib/slice/slice_refcount_base.h +2 -3
  563. data/src/core/lib/slice/slice_string_helpers.cc +0 -16
  564. data/src/core/lib/slice/slice_string_helpers.h +1 -8
  565. data/src/core/lib/surface/builtins.cc +7 -2
  566. data/src/core/lib/surface/byte_buffer.cc +7 -1
  567. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  568. data/src/core/lib/surface/call.cc +90 -137
  569. data/src/core/lib/surface/call.h +21 -3
  570. data/src/core/lib/surface/call_details.cc +4 -4
  571. data/src/core/lib/surface/call_log_batch.cc +7 -1
  572. data/src/core/lib/surface/call_test_only.h +4 -1
  573. data/src/core/lib/surface/channel.cc +179 -242
  574. data/src/core/lib/surface/channel.h +97 -58
  575. data/src/core/lib/surface/channel_init.h +2 -0
  576. data/src/core/lib/surface/channel_ping.cc +8 -2
  577. data/src/core/lib/surface/channel_stack_type.cc +0 -2
  578. data/src/core/lib/surface/channel_stack_type.h +0 -2
  579. data/src/core/lib/surface/completion_queue.cc +29 -20
  580. data/src/core/lib/surface/completion_queue.h +7 -2
  581. data/src/core/lib/surface/completion_queue_factory.cc +1 -0
  582. data/src/core/lib/surface/completion_queue_factory.h +1 -3
  583. data/src/core/lib/surface/event_string.cc +1 -7
  584. data/src/core/lib/surface/event_string.h +1 -1
  585. data/src/core/lib/surface/init.cc +17 -46
  586. data/src/core/lib/surface/init.h +0 -8
  587. data/src/core/lib/surface/lame_client.cc +63 -109
  588. data/src/core/lib/surface/lame_client.h +41 -3
  589. data/src/core/lib/surface/metadata_array.cc +2 -0
  590. data/src/core/lib/surface/server.cc +83 -64
  591. data/src/core/lib/surface/server.h +42 -9
  592. data/src/core/lib/surface/validate_metadata.cc +3 -6
  593. data/src/core/lib/surface/validate_metadata.h +3 -0
  594. data/src/core/lib/surface/version.cc +2 -2
  595. data/src/core/lib/transport/bdp_estimator.cc +3 -1
  596. data/src/core/lib/transport/bdp_estimator.h +2 -3
  597. data/src/core/lib/transport/connectivity_state.cc +6 -4
  598. data/src/core/lib/transport/connectivity_state.h +2 -3
  599. data/src/core/lib/transport/error_utils.cc +16 -8
  600. data/src/core/lib/transport/error_utils.h +5 -1
  601. data/src/core/lib/{channel → transport}/handshaker.cc +12 -7
  602. data/src/core/lib/{channel → transport}/handshaker.h +13 -6
  603. data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
  604. data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
  605. data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
  606. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +28 -14
  607. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
  608. data/src/core/lib/transport/metadata_batch.cc +287 -0
  609. data/src/core/lib/transport/metadata_batch.h +133 -264
  610. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  611. data/src/core/lib/transport/parsed_metadata.h +10 -3
  612. data/src/core/lib/transport/status_conversion.cc +2 -0
  613. data/src/core/lib/transport/status_conversion.h +2 -2
  614. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  615. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  616. data/src/core/lib/transport/timeout_encoding.cc +2 -6
  617. data/src/core/lib/transport/timeout_encoding.h +5 -1
  618. data/src/core/lib/transport/transport.cc +18 -20
  619. data/src/core/lib/transport/transport.h +48 -16
  620. data/src/core/lib/transport/transport_fwd.h +20 -0
  621. data/src/core/lib/transport/transport_impl.h +11 -0
  622. data/src/core/lib/transport/transport_op_string.cc +17 -18
  623. data/src/core/lib/uri/uri_parser.cc +11 -3
  624. data/src/core/lib/uri/uri_parser.h +0 -2
  625. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
  626. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  627. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  628. data/src/core/tsi/fake_transport_security.cc +13 -1
  629. data/src/core/tsi/fake_transport_security.h +6 -0
  630. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
  631. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  632. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
  633. data/src/core/tsi/ssl_transport_security.cc +1 -1
  634. data/src/core/tsi/transport_security_grpc.cc +3 -2
  635. data/src/core/tsi/transport_security_grpc.h +5 -2
  636. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  637. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  638. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  639. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  640. data/src/ruby/ext/grpc/extconf.rb +50 -19
  641. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  642. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
  643. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  644. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  645. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  646. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  647. data/src/ruby/lib/grpc/errors.rb +1 -1
  648. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  649. data/src/ruby/lib/grpc/version.rb +1 -1
  650. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  651. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  652. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  653. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  654. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  655. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  656. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  657. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  658. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  659. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  660. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  661. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  662. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  663. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  664. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  665. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  666. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  667. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  668. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  669. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  670. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  671. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  672. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  673. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  674. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  675. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  676. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  677. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  678. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  679. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  680. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
  681. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  682. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  683. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  684. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  685. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  686. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  687. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  688. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  689. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  690. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  691. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  692. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  693. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  694. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  695. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  696. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  697. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  698. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  699. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  700. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  701. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  702. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  703. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  704. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  705. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  706. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  707. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  708. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  709. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  710. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  711. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  712. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  713. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  714. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  715. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  716. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  717. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  718. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  719. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  720. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  721. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  722. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  723. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  724. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  725. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  726. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  727. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  728. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  729. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  730. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  731. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  732. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  733. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  734. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  735. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  736. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  737. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  738. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  739. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  740. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  741. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  742. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  743. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  744. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  745. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  746. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  747. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  748. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  749. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  750. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  751. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  752. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  753. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  754. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  755. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  756. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  757. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  758. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  759. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  760. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  761. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  762. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  763. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  764. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  765. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  766. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  767. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  768. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  769. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  770. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  771. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  772. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  773. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  774. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  775. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  776. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  777. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  778. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  779. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  780. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  781. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  782. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  783. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  784. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  785. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  786. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  787. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  788. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  789. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  790. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  791. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  792. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  793. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  794. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  795. metadata +69 -38
  796. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  797. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  798. data/src/core/lib/event_engine/sockaddr.h +0 -44
  799. data/src/core/lib/gprpp/capture.h +0 -76
  800. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  801. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  802. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  803. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  804. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
  805. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
  806. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
  807. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
  808. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
  809. data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
  810. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
  811. data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
  812. data/src/core/lib/slice/slice_split.cc +0 -100
  813. data/src/core/lib/slice/slice_split.h +0 -40
  814. data/src/core/lib/transport/byte_stream.cc +0 -164
  815. data/src/core/lib/transport/byte_stream.h +0 -166
  816. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -23,18 +23,34 @@
23
23
 
24
24
  #include <stddef.h>
25
25
 
26
- #include <grpc/support/time.h>
26
+ #include <functional>
27
+ #include <vector>
27
28
 
28
- #include "src/core/lib/channel/handshaker.h"
29
+ #include "absl/base/thread_annotations.h"
30
+ #include "absl/status/statusor.h"
31
+ #include "absl/types/optional.h"
32
+
33
+ #include <grpc/grpc.h>
34
+ #include <grpc/impl/codegen/grpc_types.h>
35
+ #include <grpc/slice.h>
36
+
37
+ #include "src/core/lib/gprpp/debug_location.h"
29
38
  #include "src/core/lib/gprpp/orphanable.h"
39
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
40
+ #include "src/core/lib/gprpp/sync.h"
41
+ #include "src/core/lib/gprpp/time.h"
30
42
  #include "src/core/lib/http/parser.h"
43
+ #include "src/core/lib/iomgr/closure.h"
31
44
  #include "src/core/lib/iomgr/endpoint.h"
45
+ #include "src/core/lib/iomgr/error.h"
46
+ #include "src/core/lib/iomgr/exec_ctx.h"
47
+ #include "src/core/lib/iomgr/iomgr_fwd.h"
32
48
  #include "src/core/lib/iomgr/iomgr_internal.h"
33
49
  #include "src/core/lib/iomgr/polling_entity.h"
34
- #include "src/core/lib/iomgr/pollset_set.h"
35
50
  #include "src/core/lib/iomgr/resolve_address.h"
51
+ #include "src/core/lib/iomgr/resolved_address.h"
36
52
  #include "src/core/lib/resource_quota/resource_quota.h"
37
- #include "src/core/lib/security/credentials/credentials.h"
53
+ #include "src/core/lib/transport/handshaker.h"
38
54
  #include "src/core/lib/uri/uri_parser.h"
39
55
 
40
56
  /* User agent this library reports */
@@ -50,6 +66,10 @@ typedef int (*grpc_httpcli_post_override)(
50
66
  const grpc_http_request* request, const char* host, const char* path,
51
67
  const char* body_bytes, size_t body_size, grpc_core::Timestamp deadline,
52
68
  grpc_closure* on_complete, grpc_http_response* response);
69
+ typedef int (*grpc_httpcli_put_override)(
70
+ const grpc_http_request* request, const char* host, const char* path,
71
+ const char* body_bytes, size_t body_size, grpc_core::Timestamp deadline,
72
+ grpc_closure* on_complete, grpc_http_response* response);
53
73
 
54
74
  namespace grpc_core {
55
75
 
@@ -112,6 +132,32 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
112
132
  RefCountedPtr<grpc_channel_credentials> channel_creds)
113
133
  GRPC_MUST_USE_RESULT;
114
134
 
135
+ // Asynchronously perform a HTTP PUT.
136
+ // 'uri' is the target to make the request to. The scheme field is used to
137
+ // determine the port number. The authority field is the target host. The
138
+ // path field determines the path of the request. No other fields are used.
139
+ // 'args' are optional channel args for the request.
140
+ // 'pollent' indicates a grpc_polling_entity that is interested in the result
141
+ // of the post - work on this entity may be used to progress the post
142
+ // operation
143
+ // 'request' contains request parameters - these are caller owned and can be
144
+ // destroyed once the call returns
145
+ // 'deadline' contains a deadline for the request (or gpr_inf_future)
146
+ // 'on_done' is a callback to report results to
147
+ // 'channel_creds' are used to configurably secure the connection.
148
+ // For insecure requests, use grpc_insecure_credentials_create.
149
+ // For secure requests, use CreateHttpRequestSSLCredentials().
150
+ // nullptr is treated as insecure credentials.
151
+ // TODO(apolcyn): disallow nullptr as a value after unsecure builds
152
+ // are removed.
153
+ // Does not support ?var1=val1&var2=val2 in the path.
154
+ static OrphanablePtr<HttpRequest> Put(
155
+ URI uri, const grpc_channel_args* args, grpc_polling_entity* pollent,
156
+ const grpc_http_request* request, Timestamp deadline,
157
+ grpc_closure* on_done, grpc_http_response* response,
158
+ RefCountedPtr<grpc_channel_credentials> channel_creds)
159
+ GRPC_MUST_USE_RESULT;
160
+
115
161
  HttpRequest(URI uri, const grpc_slice& request_text,
116
162
  grpc_http_response* response, Timestamp deadline,
117
163
  const grpc_channel_args* channel_args, grpc_closure* on_done,
@@ -126,7 +172,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
126
172
  void Orphan() override;
127
173
 
128
174
  static void SetOverride(grpc_httpcli_get_override get,
129
- grpc_httpcli_post_override post);
175
+ grpc_httpcli_post_override post,
176
+ grpc_httpcli_put_override put);
130
177
 
131
178
  static void TestOnlySetOnHandshakeDoneIntercept(
132
179
  void (*intercept)(HttpRequest* req));
@@ -141,7 +188,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
141
188
 
142
189
  void DoRead() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
143
190
  Ref().release(); // ref held by pending read
144
- grpc_endpoint_read(ep_, &incoming_, &on_read_, /*urgent=*/true);
191
+ grpc_endpoint_read(ep_, &incoming_, &on_read_, /*urgent=*/true,
192
+ /*min_progress_size=*/1);
145
193
  }
146
194
 
147
195
  static void OnRead(void* user_data, grpc_error_handle error) {
@@ -179,7 +227,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
179
227
 
180
228
  static void OnHandshakeDone(void* arg, grpc_error_handle error);
181
229
 
182
- static void OnConnected(void* arg, grpc_error_handle error);
230
+ void DoHandshake(const grpc_resolved_address* addr)
231
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
183
232
 
184
233
  void NextAddress(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
185
234
 
@@ -195,7 +244,6 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
195
244
  grpc_closure continue_on_read_after_schedule_on_exec_ctx_;
196
245
  grpc_closure done_write_;
197
246
  grpc_closure continue_done_write_after_schedule_on_exec_ctx_;
198
- grpc_closure connected_;
199
247
  grpc_endpoint* ep_ = nullptr;
200
248
  grpc_closure* on_done_;
201
249
  ResourceQuotaRefPtr resource_quota_;
@@ -206,7 +254,6 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
206
254
  RefCountedPtr<HandshakeManager> handshake_mgr_ ABSL_GUARDED_BY(mu_);
207
255
  bool own_endpoint_ ABSL_GUARDED_BY(mu_) = true;
208
256
  bool cancelled_ ABSL_GUARDED_BY(mu_) = false;
209
- bool connecting_ ABSL_GUARDED_BY(mu_) = false;
210
257
  grpc_http_parser parser_ ABSL_GUARDED_BY(mu_);
211
258
  std::vector<grpc_resolved_address> addresses_ ABSL_GUARDED_BY(mu_);
212
259
  size_t next_address_ ABSL_GUARDED_BY(mu_) = 0;
@@ -215,7 +262,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
215
262
  grpc_slice_buffer incoming_ ABSL_GUARDED_BY(mu_);
216
263
  grpc_slice_buffer outgoing_ ABSL_GUARDED_BY(mu_);
217
264
  grpc_error_handle overall_error_ ABSL_GUARDED_BY(mu_) = GRPC_ERROR_NONE;
218
- OrphanablePtr<DNSResolver::Request> dns_request_ ABSL_GUARDED_BY(mu_);
265
+ absl::optional<DNSResolver::TaskHandle> dns_request_handle_
266
+ ABSL_GUARDED_BY(mu_) = DNSResolver::kNullHandle;
219
267
  };
220
268
 
221
269
  } // namespace grpc_core
@@ -20,24 +20,36 @@
20
20
 
21
21
  #include <string.h>
22
22
 
23
+ #include "absl/status/status.h"
23
24
  #include "absl/strings/str_cat.h"
24
25
  #include "absl/strings/string_view.h"
25
26
 
27
+ #include <grpc/grpc.h>
28
+ #include <grpc/grpc_security.h>
29
+ #include <grpc/impl/codegen/grpc_types.h>
26
30
  #include <grpc/support/alloc.h>
27
31
  #include <grpc/support/log.h>
28
32
  #include <grpc/support/string_util.h>
29
33
 
30
34
  #include "src/core/lib/channel/channel_args.h"
31
- #include "src/core/lib/config/core_configuration.h"
32
- #include "src/core/lib/gpr/string.h"
35
+ #include "src/core/lib/gprpp/debug_location.h"
33
36
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
34
- #include "src/core/lib/iomgr/pollset.h"
37
+ #include "src/core/lib/gprpp/unique_type_name.h"
38
+ #include "src/core/lib/iomgr/closure.h"
39
+ #include "src/core/lib/iomgr/endpoint.h"
40
+ #include "src/core/lib/iomgr/error.h"
41
+ #include "src/core/lib/iomgr/exec_ctx.h"
42
+ #include "src/core/lib/iomgr/iomgr_fwd.h"
43
+ #include "src/core/lib/promise/arena_promise.h"
44
+ #include "src/core/lib/promise/poll.h"
35
45
  #include "src/core/lib/promise/promise.h"
36
46
  #include "src/core/lib/security/credentials/credentials.h"
47
+ #include "src/core/lib/security/security_connector/security_connector.h"
37
48
  #include "src/core/lib/security/security_connector/ssl_utils.h"
38
49
  #include "src/core/lib/security/transport/security_handshaker.h"
39
- #include "src/core/lib/slice/slice_internal.h"
50
+ #include "src/core/lib/transport/handshaker.h"
40
51
  #include "src/core/tsi/ssl_transport_security.h"
52
+ #include "src/core/tsi/transport_security_interface.h"
41
53
 
42
54
  namespace grpc_core {
43
55
 
@@ -178,12 +190,11 @@ class HttpRequestSSLCredentials : public grpc_channel_credentials {
178
190
  return Ref();
179
191
  }
180
192
 
181
- grpc_channel_args* update_arguments(grpc_channel_args* args) override {
182
- return args;
193
+ UniqueTypeName type() const override {
194
+ static UniqueTypeName::Factory kFactory("HttpRequestSSL");
195
+ return kFactory.Create();
183
196
  }
184
197
 
185
- const char* type() const override { return "HttpRequestSSL"; }
186
-
187
198
  private:
188
199
  int cmp_impl(const grpc_channel_credentials* /* other */) const override {
189
200
  // There's no differentiating factor between two HttpRequestSSLCredentials
@@ -19,7 +19,9 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include "src/core/lib/security/credentials/credentials.h"
22
+ #include <grpc/grpc.h>
23
+
24
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
23
25
 
24
26
  namespace grpc_core {
25
27
 
@@ -20,14 +20,13 @@
20
20
 
21
21
  #include "src/core/lib/http/parser.h"
22
22
 
23
- #include <stdbool.h>
24
23
  #include <string.h>
25
24
 
25
+ #include <algorithm>
26
+
26
27
  #include <grpc/support/alloc.h>
27
28
  #include <grpc/support/log.h>
28
29
 
29
- #include "src/core/lib/gpr/useful.h"
30
-
31
30
  grpc_core::TraceFlag grpc_http1_trace(false, "http1");
32
31
 
33
32
  static char* buf2str(void* buffer, size_t length) {
@@ -236,7 +235,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
236
235
  (*hdrs)[(*hdr_count)++] = hdr;
237
236
 
238
237
  done:
239
- if (error != GRPC_ERROR_NONE) {
238
+ if (!GRPC_ERROR_IS_NONE(error)) {
240
239
  gpr_free(hdr.key);
241
240
  gpr_free(hdr.value);
242
241
  }
@@ -249,7 +248,7 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
249
248
  switch (parser->state) {
250
249
  case GRPC_HTTP_FIRST_LINE:
251
250
  err = handle_first_line(parser);
252
- if (err != GRPC_ERROR_NONE) return err;
251
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
253
252
  parser->state = GRPC_HTTP_HEADERS;
254
253
  break;
255
254
  case GRPC_HTTP_HEADERS:
@@ -264,7 +263,7 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
264
263
  break;
265
264
  } else {
266
265
  err = add_header(parser);
267
- if (err != GRPC_ERROR_NONE) {
266
+ if (!GRPC_ERROR_IS_NONE(err)) {
268
267
  return err;
269
268
  }
270
269
  }
@@ -449,7 +448,7 @@ grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser,
449
448
  bool found_body_start = false;
450
449
  grpc_error_handle err =
451
450
  addbyte(parser, GRPC_SLICE_START_PTR(slice)[i], &found_body_start);
452
- if (err != GRPC_ERROR_NONE) return err;
451
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
453
452
  if (found_body_start && start_of_body != nullptr) *start_of_body = i + 1;
454
453
  }
455
454
  return GRPC_ERROR_NONE;
@@ -21,6 +21,9 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <stddef.h>
25
+ #include <stdint.h>
26
+
24
27
  #include <grpc/slice.h>
25
28
 
26
29
  #include "src/core/lib/debug/trace.h"
@@ -217,7 +217,7 @@ void CallCombiner::SetNotifyOnCancel(grpc_closure* closure) {
217
217
  grpc_error_handle original_error = DecodeCancelStateError(original_state);
218
218
  // If error is set, invoke the cancellation closure immediately.
219
219
  // Otherwise, store the new closure.
220
- if (original_error != GRPC_ERROR_NONE) {
220
+ if (!GRPC_ERROR_IS_NONE(original_error)) {
221
221
  if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
222
222
  gpr_log(GPR_INFO,
223
223
  "call_combiner=%p: scheduling notify_on_cancel callback=%p "
@@ -263,7 +263,7 @@ void CallCombiner::Cancel(grpc_error_handle error) {
263
263
  while (true) {
264
264
  gpr_atm original_state = gpr_atm_acq_load(&cancel_state_);
265
265
  grpc_error_handle original_error = DecodeCancelStateError(original_state);
266
- if (original_error != GRPC_ERROR_NONE) {
266
+ if (!GRPC_ERROR_IS_NONE(original_error)) {
267
267
  #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
268
268
  internal::StatusFreeHeapPtr(status_ptr);
269
269
  #else
@@ -23,13 +23,13 @@
23
23
  grpc_core::TraceFlag grpc_tcp_trace(false, "tcp");
24
24
 
25
25
  void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
26
- grpc_closure* cb, bool urgent) {
27
- ep->vtable->read(ep, slices, cb, urgent);
26
+ grpc_closure* cb, bool urgent, int min_progress_size) {
27
+ ep->vtable->read(ep, slices, cb, urgent, min_progress_size);
28
28
  }
29
29
 
30
30
  void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
31
- grpc_closure* cb, void* arg) {
32
- ep->vtable->write(ep, slices, cb, arg);
31
+ grpc_closure* cb, void* arg, int max_frame_size) {
32
+ ep->vtable->write(ep, slices, cb, arg, max_frame_size);
33
33
  }
34
34
 
35
35
  void grpc_endpoint_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) {
@@ -38,9 +38,9 @@ typedef struct grpc_endpoint_vtable grpc_endpoint_vtable;
38
38
 
39
39
  struct grpc_endpoint_vtable {
40
40
  void (*read)(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
41
- bool urgent);
41
+ bool urgent, int min_progress_size);
42
42
  void (*write)(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
43
- void* arg);
43
+ void* arg, int max_frame_size);
44
44
  void (*add_to_pollset)(grpc_endpoint* ep, grpc_pollset* pollset);
45
45
  void (*add_to_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
46
46
  void (*delete_from_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
@@ -56,9 +56,9 @@ struct grpc_endpoint_vtable {
56
56
  Callback success indicates that the endpoint can accept more reads, failure
57
57
  indicates the endpoint is closed.
58
58
  Valid slices may be placed into \a slices even when the callback is
59
- invoked with error != GRPC_ERROR_NONE. */
59
+ invoked with !GRPC_ERROR_IS_NONE(error). */
60
60
  void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
61
- grpc_closure* cb, bool urgent);
61
+ grpc_closure* cb, bool urgent, int min_progress_size);
62
62
 
63
63
  absl::string_view grpc_endpoint_get_peer(grpc_endpoint* ep);
64
64
 
@@ -79,9 +79,11 @@ int grpc_endpoint_get_fd(grpc_endpoint* ep);
79
79
  it is a valid slice buffer.
80
80
  \a arg is platform specific. It is currently only used by TCP on linux
81
81
  platforms as an argument that would be forwarded to the timestamps callback.
82
+ \a max_frame_size. A hint to the endpoint implementation to construct
83
+ frames which do not exceed the specified size.
82
84
  */
83
85
  void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
84
- grpc_closure* cb, void* arg);
86
+ grpc_closure* cb, void* arg, int max_frame_size);
85
87
 
86
88
  /* Causes any pending and future read/write callbacks to run immediately with
87
89
  success==0 */
@@ -147,7 +147,7 @@ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error_handle error) {
147
147
  static void ReadAction(void* arg, grpc_error_handle error) {
148
148
  CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
149
149
  GPR_ASSERT(ep->read_cb != nullptr);
150
- if (error != GRPC_ERROR_NONE) {
150
+ if (!GRPC_ERROR_IS_NONE(error)) {
151
151
  grpc_slice_buffer_reset_and_unref_internal(ep->read_slices);
152
152
  CallReadCb(ep, GRPC_ERROR_REF(error));
153
153
  EP_UNREF(ep, "read");
@@ -189,7 +189,7 @@ static void ReadAction(void* arg, grpc_error_handle error) {
189
189
  static void WriteAction(void* arg, grpc_error_handle error) {
190
190
  CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
191
191
  GPR_ASSERT(ep->write_cb != nullptr);
192
- if (error != GRPC_ERROR_NONE) {
192
+ if (!GRPC_ERROR_IS_NONE(error)) {
193
193
  grpc_slice_buffer_reset_and_unref_internal(ep->write_slices);
194
194
  CallWriteCb(ep, GRPC_ERROR_REF(error));
195
195
  EP_UNREF(ep, "write");
@@ -237,7 +237,8 @@ static void WriteAction(void* arg, grpc_error_handle error) {
237
237
  }
238
238
 
239
239
  static void CFStreamRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
240
- grpc_closure* cb, bool urgent) {
240
+ grpc_closure* cb, bool urgent,
241
+ int /*min_progress_size*/) {
241
242
  CFStreamEndpoint* ep_impl = reinterpret_cast<CFStreamEndpoint*>(ep);
242
243
  if (grpc_tcp_trace.enabled()) {
243
244
  gpr_log(GPR_DEBUG, "CFStream endpoint:%p read (%p, %p) length:%zu", ep_impl,
@@ -254,7 +255,7 @@ static void CFStreamRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
254
255
  }
255
256
 
256
257
  static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
257
- grpc_closure* cb, void* arg) {
258
+ grpc_closure* cb, void* arg, int /*max_frame_size*/) {
258
259
  CFStreamEndpoint* ep_impl = reinterpret_cast<CFStreamEndpoint*>(ep);
259
260
  if (grpc_tcp_trace.enabled()) {
260
261
  gpr_log(GPR_DEBUG, "CFStream endpoint:%p write (%p, %p) length:%zu",
@@ -351,11 +352,13 @@ grpc_endpoint* grpc_cfstream_endpoint_create(CFReadStreamRef read_stream,
351
352
  if (native_handle) {
352
353
  CFRelease(native_handle);
353
354
  }
355
+ absl::StatusOr<std::string> addr_uri;
354
356
  if (getsockname(sockfd, reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
355
- &resolved_local_addr.len) < 0) {
357
+ &resolved_local_addr.len) < 0 ||
358
+ !(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
356
359
  ep_impl->local_address = "";
357
360
  } else {
358
- ep_impl->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
361
+ ep_impl->local_address = addr_uri.value();
359
362
  }
360
363
  ep_impl->read_cb = nil;
361
364
  ep_impl->write_cb = nil;
@@ -62,7 +62,8 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char* name,
62
62
  std::string final_name = absl::StrCat(name, ":client");
63
63
  const grpc_channel_args* new_args = grpc_core::CoreConfiguration::Get()
64
64
  .channel_args_preconditioning()
65
- .PreconditionChannelArgs(args);
65
+ .PreconditionChannelArgs(args)
66
+ .ToC();
66
67
  p.client = grpc_tcp_create(grpc_fd_create(sv[1], final_name.c_str(), false),
67
68
  new_args, "socketpair-server");
68
69
  final_name = absl::StrCat(name, ":server");
@@ -71,7 +71,7 @@ std::string grpc_error_std_string(absl::Status error) {
71
71
  absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
72
72
  const char* call_name) {
73
73
  absl::Status s =
74
- StatusCreate(absl::StatusCode::kUnknown, "OS Error", location, {});
74
+ StatusCreate(absl::StatusCode::kUnknown, strerror(err), location, {});
75
75
  grpc_core::StatusSetInt(&s, grpc_core::StatusIntProperty::kErrorNo, err);
76
76
  grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError,
77
77
  strerror(err));
@@ -87,6 +87,8 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
87
87
  absl::Status s =
88
88
  StatusCreate(absl::StatusCode::kUnavailable, "WSA Error", location, {});
89
89
  StatusSetInt(&s, grpc_core::StatusIntProperty::kWsaError, err);
90
+ StatusSetInt(&s, grpc_core::StatusIntProperty::kRpcStatus,
91
+ GRPC_STATUS_UNAVAILABLE);
90
92
  StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError, utf8_message);
91
93
  StatusSetStr(&s, grpc_core::StatusStrProperty::kSyscall, call_name);
92
94
  return s;
@@ -95,7 +97,7 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
95
97
 
96
98
  grpc_error_handle grpc_error_set_int(grpc_error_handle src,
97
99
  grpc_error_ints which, intptr_t value) {
98
- if (src == GRPC_ERROR_NONE) {
100
+ if (GRPC_ERROR_IS_NONE(src)) {
99
101
  src = absl::UnknownError("");
100
102
  StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
101
103
  GRPC_STATUS_OK);
@@ -136,7 +138,7 @@ bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which,
136
138
  grpc_error_handle grpc_error_set_str(grpc_error_handle src,
137
139
  grpc_error_strs which,
138
140
  absl::string_view str) {
139
- if (src == GRPC_ERROR_NONE) {
141
+ if (GRPC_ERROR_IS_NONE(src)) {
140
142
  src = absl::UnknownError("");
141
143
  StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
142
144
  GRPC_STATUS_OK);
@@ -211,7 +213,7 @@ grpc_error_handle grpc_error_add_child(grpc_error_handle src,
211
213
 
212
214
  bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
213
215
  int line) {
214
- GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE);
216
+ GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(error));
215
217
  gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what,
216
218
  grpc_core::StatusToString(error).c_str());
217
219
  return false;
@@ -562,7 +564,7 @@ static grpc_error_handle copy_error_and_unref(grpc_error_handle in) {
562
564
  grpc_error_handle out;
563
565
  if (grpc_error_is_special(in)) {
564
566
  out = GRPC_ERROR_CREATE_FROM_STATIC_STRING("unknown");
565
- if (in == GRPC_ERROR_NONE) {
567
+ if (GRPC_ERROR_IS_NONE(in)) {
566
568
  internal_set_str(&out, GRPC_ERROR_STR_DESCRIPTION,
567
569
  grpc_slice_from_static_string("no error"));
568
570
  internal_set_int(&out, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK);
@@ -675,8 +677,8 @@ bool grpc_error_get_str(grpc_error_handle err, grpc_error_strs which,
675
677
 
676
678
  grpc_error_handle grpc_error_add_child(grpc_error_handle src,
677
679
  grpc_error_handle child) {
678
- if (src != GRPC_ERROR_NONE) {
679
- if (child == GRPC_ERROR_NONE) {
680
+ if (!GRPC_ERROR_IS_NONE(src)) {
681
+ if (GRPC_ERROR_IS_NONE(child)) {
680
682
  /* \a child is empty. Simply return the ref to \a src */
681
683
  return src;
682
684
  } else if (child != src) {
@@ -906,7 +908,7 @@ static char* finish_kvs(kv_pairs* kvs) {
906
908
  }
907
909
 
908
910
  const char* grpc_error_string(grpc_error_handle err) {
909
- if (err == GRPC_ERROR_NONE) return no_error_string;
911
+ if (GRPC_ERROR_IS_NONE(err)) return no_error_string;
910
912
  if (err == GRPC_ERROR_OOM) return oom_error_string;
911
913
  if (err == GRPC_ERROR_CANCELLED) return cancelled_error_string;
912
914
 
@@ -978,7 +980,7 @@ grpc_error_handle grpc_wsa_error(const char* file, int line, int err,
978
980
 
979
981
  bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
980
982
  int line) {
981
- GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE);
983
+ GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(error));
982
984
  const char* msg = grpc_error_string(error);
983
985
  gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what, msg);
984
986
  GRPC_ERROR_UNREF(error);
@@ -161,6 +161,8 @@ void grpc_enable_error_creation();
161
161
  #define GRPC_ERROR_REF(err) (err)
162
162
  #define GRPC_ERROR_UNREF(err) (void)(err)
163
163
 
164
+ #define GRPC_ERROR_IS_NONE(err) (err).ok()
165
+
164
166
  #define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc) \
165
167
  StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
166
168
  #define GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc) \
@@ -208,7 +210,7 @@ absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
208
210
  const char* call_name) GRPC_MUST_USE_RESULT;
209
211
 
210
212
  inline absl::Status grpc_assert_never_ok(absl::Status error) {
211
- GPR_ASSERT(error != GRPC_ERROR_NONE);
213
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
212
214
  return error;
213
215
  }
214
216
 
@@ -236,6 +238,8 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
236
238
  #define GRPC_ERROR_CANCELLED ((grpc_error_handle)4)
237
239
  #define GRPC_ERROR_SPECIAL_MAX GRPC_ERROR_CANCELLED
238
240
 
241
+ #define GRPC_ERROR_IS_NONE(err) ((err) == GRPC_ERROR_NONE)
242
+
239
243
  inline bool grpc_error_is_special(grpc_error_handle err) {
240
244
  return err <= GRPC_ERROR_SPECIAL_MAX;
241
245
  }
@@ -340,7 +344,7 @@ grpc_error_handle grpc_os_error(const char* file, int line, int err,
340
344
  const char* call_name) GRPC_MUST_USE_RESULT;
341
345
 
342
346
  inline grpc_error_handle grpc_assert_never_ok(grpc_error_handle error) {
343
- GPR_ASSERT(error != GRPC_ERROR_NONE);
347
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
344
348
  return error;
345
349
  }
346
350
 
@@ -387,8 +391,8 @@ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
387
391
  int line);
388
392
  inline bool grpc_log_if_error(const char* what, grpc_error_handle error,
389
393
  const char* file, int line) {
390
- return error == GRPC_ERROR_NONE ? true
391
- : grpc_log_error(what, error, file, line);
394
+ return GRPC_ERROR_IS_NONE(error) ? true
395
+ : grpc_log_error(what, error, file, line);
392
396
  }
393
397
 
394
398
  #define GRPC_LOG_IF_ERROR(what, error) \
@@ -413,7 +417,7 @@ class AtomicError {
413
417
  /// returns get() == GRPC_ERROR_NONE
414
418
  bool ok() {
415
419
  gpr_spinlock_lock(&lock_);
416
- bool ret = error_ == GRPC_ERROR_NONE;
420
+ bool ret = GRPC_ERROR_IS_NONE(error_);
417
421
  gpr_spinlock_unlock(&lock_);
418
422
  return ret;
419
423
  }