grpc 1.50.0-x86_64-linux → 1.51.0-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 (464) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +131 -42
  3. data/include/grpc/event_engine/event_engine.h +10 -3
  4. data/include/grpc/event_engine/slice_buffer.h +17 -0
  5. data/include/grpc/grpc.h +0 -10
  6. data/include/grpc/impl/codegen/grpc_types.h +1 -5
  7. data/include/grpc/impl/codegen/port_platform.h +0 -3
  8. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  11. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
  12. data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
  13. data/src/core/ext/filters/client_channel/client_channel.h +3 -4
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
  15. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  17. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  18. data/src/core/ext/filters/client_channel/connector.h +1 -1
  19. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
  20. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  21. data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
  22. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
  34. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
  36. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  54. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
  59. data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
  60. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  61. data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
  62. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  64. data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
  65. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  70. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  71. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
  73. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  74. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
  75. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
  77. data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
  78. data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
  79. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
  86. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
  92. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  93. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
  94. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
  96. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
  97. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
  102. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
  103. data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
  104. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
  105. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
  106. data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
  107. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
  108. data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
  109. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  110. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  111. data/src/core/ext/xds/xds_api.cc +15 -68
  112. data/src/core/ext/xds/xds_api.h +3 -7
  113. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  114. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  115. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  116. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  117. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  118. data/src/core/ext/xds/xds_client.cc +122 -90
  119. data/src/core/ext/xds/xds_client.h +7 -2
  120. data/src/core/ext/xds/xds_client_grpc.cc +5 -24
  121. data/src/core/ext/xds/xds_cluster.cc +291 -183
  122. data/src/core/ext/xds/xds_cluster.h +11 -15
  123. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
  124. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
  125. data/src/core/ext/xds/xds_common_types.cc +208 -141
  126. data/src/core/ext/xds/xds_common_types.h +19 -13
  127. data/src/core/ext/xds/xds_endpoint.cc +214 -129
  128. data/src/core/ext/xds/xds_endpoint.h +4 -7
  129. data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
  130. data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
  131. data/src/core/ext/xds/xds_http_filters.cc +60 -73
  132. data/src/core/ext/xds/xds_http_filters.h +67 -19
  133. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
  134. data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
  135. data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
  136. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  137. data/src/core/ext/xds/xds_listener.cc +459 -417
  138. data/src/core/ext/xds/xds_listener.h +43 -47
  139. data/src/core/ext/xds/xds_resource_type.h +3 -11
  140. data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
  141. data/src/core/ext/xds/xds_route_config.cc +94 -80
  142. data/src/core/ext/xds/xds_route_config.h +10 -10
  143. data/src/core/ext/xds/xds_routing.cc +2 -1
  144. data/src/core/ext/xds/xds_routing.h +2 -0
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
  146. data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
  147. data/src/core/lib/address_utils/parse_address.cc +11 -10
  148. data/src/core/lib/channel/channel_args.h +16 -1
  149. data/src/core/lib/channel/channel_stack.cc +23 -20
  150. data/src/core/lib/channel/channel_stack.h +17 -4
  151. data/src/core/lib/channel/channel_stack_builder.cc +4 -7
  152. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  153. data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
  154. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  155. data/src/core/lib/channel/channel_trace.cc +4 -5
  156. data/src/core/lib/channel/channelz.cc +1 -1
  157. data/src/core/lib/channel/connected_channel.cc +695 -35
  158. data/src/core/lib/channel/connected_channel.h +0 -4
  159. data/src/core/lib/channel/promise_based_filter.cc +1004 -140
  160. data/src/core/lib/channel/promise_based_filter.h +364 -87
  161. data/src/core/lib/compression/message_compress.cc +5 -5
  162. data/src/core/lib/debug/event_log.cc +88 -0
  163. data/src/core/lib/debug/event_log.h +81 -0
  164. data/src/core/lib/debug/histogram_view.cc +69 -0
  165. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  166. data/src/core/lib/debug/stats.cc +22 -119
  167. data/src/core/lib/debug/stats.h +29 -35
  168. data/src/core/lib/debug/stats_data.cc +224 -73
  169. data/src/core/lib/debug/stats_data.h +263 -122
  170. data/src/core/lib/event_engine/common_closures.h +71 -0
  171. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  172. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  173. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  174. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  175. data/src/core/lib/event_engine/poller.h +10 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
  177. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  178. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
  179. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  180. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  181. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  182. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  184. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
  186. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  187. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
  189. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  191. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  192. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
  193. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
  194. data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
  195. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
  196. data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
  197. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
  198. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
  199. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
  200. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  201. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
  202. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  203. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  204. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  205. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  206. data/src/core/lib/event_engine/slice.cc +7 -6
  207. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  208. data/src/core/lib/event_engine/thread_pool.cc +106 -25
  209. data/src/core/lib/event_engine/thread_pool.h +32 -9
  210. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  211. data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  213. data/src/core/lib/experiments/config.cc +1 -1
  214. data/src/core/lib/experiments/experiments.cc +13 -2
  215. data/src/core/lib/experiments/experiments.h +8 -1
  216. data/src/core/lib/gpr/cpu_linux.cc +6 -2
  217. data/src/core/lib/gpr/log_linux.cc +3 -4
  218. data/src/core/lib/gpr/string.h +1 -1
  219. data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
  220. data/src/core/lib/gprpp/load_file.cc +75 -0
  221. data/src/core/lib/gprpp/load_file.h +33 -0
  222. data/src/core/lib/gprpp/per_cpu.h +46 -0
  223. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  224. data/src/core/lib/gprpp/stat_windows.cc +3 -2
  225. data/src/core/lib/gprpp/status_helper.h +1 -3
  226. data/src/core/lib/gprpp/strerror.cc +41 -0
  227. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
  228. data/src/core/lib/gprpp/thd_windows.cc +1 -2
  229. data/src/core/lib/gprpp/time.cc +3 -4
  230. data/src/core/lib/gprpp/time.h +13 -2
  231. data/src/core/lib/gprpp/validation_errors.h +18 -1
  232. data/src/core/lib/http/httpcli.cc +40 -44
  233. data/src/core/lib/http/httpcli.h +6 -5
  234. data/src/core/lib/http/httpcli_security_connector.cc +4 -6
  235. data/src/core/lib/http/parser.cc +54 -65
  236. data/src/core/lib/iomgr/buffer_list.cc +105 -116
  237. data/src/core/lib/iomgr/buffer_list.h +60 -44
  238. data/src/core/lib/iomgr/call_combiner.cc +11 -10
  239. data/src/core/lib/iomgr/call_combiner.h +3 -4
  240. data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
  241. data/src/core/lib/iomgr/closure.h +49 -5
  242. data/src/core/lib/iomgr/combiner.cc +2 -2
  243. data/src/core/lib/iomgr/endpoint.h +1 -1
  244. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
  245. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  246. data/src/core/lib/iomgr/error.cc +27 -42
  247. data/src/core/lib/iomgr/error.h +22 -152
  248. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  249. data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
  250. data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
  251. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  252. data/src/core/lib/iomgr/exec_ctx.h +2 -3
  253. data/src/core/lib/iomgr/executor.cc +1 -2
  254. data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
  255. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  256. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  257. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
  258. data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
  259. data/src/core/lib/iomgr/load_file.cc +5 -9
  260. data/src/core/lib/iomgr/lockfree_event.cc +10 -10
  261. data/src/core/lib/iomgr/pollset_windows.cc +4 -4
  262. data/src/core/lib/iomgr/python_util.h +2 -2
  263. data/src/core/lib/iomgr/resolve_address.cc +8 -3
  264. data/src/core/lib/iomgr/resolve_address.h +3 -4
  265. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  266. data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
  267. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  268. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
  269. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  270. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
  271. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
  272. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  273. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  274. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
  275. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
  276. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
  277. data/src/core/lib/iomgr/tcp_posix.cc +92 -108
  278. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
  279. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  280. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
  284. data/src/core/lib/iomgr/tcp_windows.cc +27 -34
  285. data/src/core/lib/iomgr/timer.h +8 -8
  286. data/src/core/lib/iomgr/timer_generic.cc +9 -15
  287. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  288. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
  289. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
  290. data/src/core/lib/json/json_channel_args.h +42 -0
  291. data/src/core/lib/json/json_object_loader.cc +7 -2
  292. data/src/core/lib/json/json_object_loader.h +22 -0
  293. data/src/core/lib/json/json_util.cc +5 -5
  294. data/src/core/lib/json/json_util.h +4 -4
  295. data/src/core/lib/load_balancing/lb_policy.cc +1 -1
  296. data/src/core/lib/load_balancing/lb_policy.h +4 -0
  297. data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
  298. data/src/core/lib/matchers/matchers.cc +3 -4
  299. data/src/core/lib/promise/activity.cc +16 -2
  300. data/src/core/lib/promise/activity.h +38 -15
  301. data/src/core/lib/promise/arena_promise.h +80 -51
  302. data/src/core/lib/promise/context.h +13 -6
  303. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  304. data/src/core/lib/promise/detail/promise_factory.h +58 -10
  305. data/src/core/lib/promise/detail/status.h +28 -0
  306. data/src/core/lib/promise/detail/switch.h +1455 -0
  307. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
  308. data/src/core/lib/promise/for_each.h +129 -0
  309. data/src/core/lib/promise/loop.h +7 -5
  310. data/src/core/lib/promise/map_pipe.h +87 -0
  311. data/src/core/lib/promise/pipe.cc +19 -0
  312. data/src/core/lib/promise/pipe.h +505 -0
  313. data/src/core/lib/promise/poll.h +13 -0
  314. data/src/core/lib/promise/seq.h +3 -5
  315. data/src/core/lib/promise/sleep.cc +5 -4
  316. data/src/core/lib/promise/sleep.h +1 -2
  317. data/src/core/lib/promise/try_concurrently.h +341 -0
  318. data/src/core/lib/promise/try_seq.h +10 -13
  319. data/src/core/lib/resolver/server_address.cc +1 -0
  320. data/src/core/lib/resolver/server_address.h +1 -3
  321. data/src/core/lib/resource_quota/api.cc +0 -1
  322. data/src/core/lib/resource_quota/arena.cc +19 -0
  323. data/src/core/lib/resource_quota/arena.h +89 -0
  324. data/src/core/lib/resource_quota/memory_quota.cc +1 -0
  325. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  326. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  327. data/src/core/lib/security/authorization/matchers.cc +25 -22
  328. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  329. data/src/core/lib/security/context/security_context.h +10 -0
  330. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  331. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  333. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  334. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  335. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
  341. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
  345. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  350. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
  354. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
  355. data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
  356. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
  357. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
  358. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
  359. data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
  360. data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
  361. data/src/core/lib/security/transport/security_handshaker.cc +53 -53
  362. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  363. data/src/core/lib/security/transport/tsi_error.cc +6 -3
  364. data/src/core/lib/security/util/json_util.cc +4 -5
  365. data/src/core/lib/service_config/service_config.h +1 -1
  366. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  367. data/src/core/lib/service_config/service_config_impl.h +14 -17
  368. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  369. data/src/core/lib/service_config/service_config_parser.h +14 -10
  370. data/src/core/lib/slice/b64.cc +2 -2
  371. data/src/core/lib/slice/slice.cc +7 -1
  372. data/src/core/lib/slice/slice.h +19 -6
  373. data/src/core/lib/slice/slice_buffer.cc +13 -14
  374. data/src/core/lib/slice/slice_internal.h +13 -21
  375. data/src/core/lib/slice/slice_refcount.h +34 -19
  376. data/src/core/lib/surface/byte_buffer.cc +3 -4
  377. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  378. data/src/core/lib/surface/call.cc +1366 -239
  379. data/src/core/lib/surface/call.h +44 -0
  380. data/src/core/lib/surface/call_details.cc +3 -3
  381. data/src/core/lib/surface/call_trace.cc +113 -0
  382. data/src/core/lib/surface/call_trace.h +30 -0
  383. data/src/core/lib/surface/channel.cc +44 -49
  384. data/src/core/lib/surface/channel.h +9 -1
  385. data/src/core/lib/surface/channel_ping.cc +1 -1
  386. data/src/core/lib/surface/channel_stack_type.cc +4 -0
  387. data/src/core/lib/surface/channel_stack_type.h +2 -0
  388. data/src/core/lib/surface/completion_queue.cc +38 -52
  389. data/src/core/lib/surface/init.cc +8 -39
  390. data/src/core/lib/surface/init_internally.h +8 -0
  391. data/src/core/lib/surface/lame_client.cc +10 -8
  392. data/src/core/lib/surface/server.cc +48 -70
  393. data/src/core/lib/surface/server.h +3 -4
  394. data/src/core/lib/surface/validate_metadata.cc +11 -12
  395. data/src/core/lib/surface/version.cc +2 -2
  396. data/src/core/lib/transport/connectivity_state.cc +2 -2
  397. data/src/core/lib/transport/error_utils.cc +34 -28
  398. data/src/core/lib/transport/error_utils.h +3 -3
  399. data/src/core/lib/transport/handshaker.cc +14 -14
  400. data/src/core/lib/transport/handshaker.h +1 -1
  401. data/src/core/lib/transport/handshaker_factory.h +26 -0
  402. data/src/core/lib/transport/handshaker_registry.cc +8 -2
  403. data/src/core/lib/transport/handshaker_registry.h +3 -4
  404. data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
  405. data/src/core/lib/transport/metadata_batch.h +17 -1
  406. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  407. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  408. data/src/core/lib/transport/transport.cc +63 -17
  409. data/src/core/lib/transport/transport.h +64 -68
  410. data/src/core/lib/transport/transport_impl.h +1 -1
  411. data/src/core/lib/transport/transport_op_string.cc +7 -6
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
  413. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
  416. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  417. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
  418. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
  419. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  420. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
  421. data/src/core/tsi/fake_transport_security.cc +3 -3
  422. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
  423. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  424. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
  425. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
  426. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
  427. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  428. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  429. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  430. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  431. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  432. data/src/ruby/lib/grpc/version.rb +1 -1
  433. data/src/ruby/spec/channel_spec.rb +0 -43
  434. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  435. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  436. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  437. data/third_party/zlib/compress.c +3 -3
  438. data/third_party/zlib/crc32.c +21 -12
  439. data/third_party/zlib/deflate.c +112 -106
  440. data/third_party/zlib/deflate.h +2 -2
  441. data/third_party/zlib/gzlib.c +1 -1
  442. data/third_party/zlib/gzread.c +3 -5
  443. data/third_party/zlib/gzwrite.c +1 -1
  444. data/third_party/zlib/infback.c +10 -7
  445. data/third_party/zlib/inflate.c +5 -2
  446. data/third_party/zlib/inftrees.c +2 -2
  447. data/third_party/zlib/inftrees.h +1 -1
  448. data/third_party/zlib/trees.c +61 -62
  449. data/third_party/zlib/uncompr.c +2 -2
  450. data/third_party/zlib/zconf.h +16 -3
  451. data/third_party/zlib/zlib.h +10 -10
  452. data/third_party/zlib/zutil.c +9 -7
  453. data/third_party/zlib/zutil.h +1 -0
  454. metadata +55 -18
  455. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  456. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  457. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  458. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  459. data/src/core/lib/gpr/murmur_hash.h +0 -29
  460. data/src/core/lib/gpr/tls.h +0 -156
  461. data/src/core/lib/promise/call_push_pull.h +0 -148
  462. data/src/core/lib/slice/slice_api.cc +0 -39
  463. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  464. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -50,6 +50,7 @@
50
50
 
51
51
  #include "src/core/lib/address_utils/sockaddr_utils.h"
52
52
  #include "src/core/lib/gpr/string.h"
53
+ #include "src/core/lib/gprpp/strerror.h"
53
54
  #include "src/core/lib/iomgr/sockaddr.h"
54
55
 
55
56
  /* set a socket to use zerocopy */
@@ -60,7 +61,7 @@ grpc_error_handle grpc_set_socket_zerocopy(int fd) {
60
61
  if (err != 0) {
61
62
  return GRPC_OS_ERROR(errno, "setsockopt(SO_ZEROCOPY)");
62
63
  }
63
- return GRPC_ERROR_NONE;
64
+ return absl::OkStatus();
64
65
  #else
65
66
  (void)fd;
66
67
  return GRPC_OS_ERROR(ENOSYS, "setsockopt(SO_ZEROCOPY)");
@@ -84,7 +85,7 @@ grpc_error_handle grpc_set_socket_nonblocking(int fd, int non_blocking) {
84
85
  return GRPC_OS_ERROR(errno, "fcntl");
85
86
  }
86
87
 
87
- return GRPC_ERROR_NONE;
88
+ return absl::OkStatus();
88
89
  }
89
90
 
90
91
  grpc_error_handle grpc_set_socket_no_sigpipe_if_possible(int fd) {
@@ -99,13 +100,13 @@ grpc_error_handle grpc_set_socket_no_sigpipe_if_possible(int fd) {
99
100
  return GRPC_OS_ERROR(errno, "getsockopt(SO_NOSIGPIPE)");
100
101
  }
101
102
  if ((newval != 0) != (val != 0)) {
102
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set SO_NOSIGPIPE");
103
+ return GRPC_ERROR_CREATE("Failed to set SO_NOSIGPIPE");
103
104
  }
104
105
  #else
105
106
  // Avoid unused parameter warning for conditional parameter
106
107
  (void)fd;
107
108
  #endif
108
- return GRPC_ERROR_NONE;
109
+ return absl::OkStatus();
109
110
  }
110
111
 
111
112
  grpc_error_handle grpc_set_socket_ip_pktinfo_if_possible(int fd) {
@@ -118,7 +119,7 @@ grpc_error_handle grpc_set_socket_ip_pktinfo_if_possible(int fd) {
118
119
  return GRPC_OS_ERROR(errno, "setsockopt(IP_PKTINFO)");
119
120
  }
120
121
  #endif
121
- return GRPC_ERROR_NONE;
122
+ return absl::OkStatus();
122
123
  }
123
124
 
124
125
  grpc_error_handle grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd) {
@@ -131,20 +132,20 @@ grpc_error_handle grpc_set_socket_ipv6_recvpktinfo_if_possible(int fd) {
131
132
  return GRPC_OS_ERROR(errno, "setsockopt(IPV6_RECVPKTINFO)");
132
133
  }
133
134
  #endif
134
- return GRPC_ERROR_NONE;
135
+ return absl::OkStatus();
135
136
  }
136
137
 
137
138
  grpc_error_handle grpc_set_socket_sndbuf(int fd, int buffer_size_bytes) {
138
139
  return 0 == setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buffer_size_bytes,
139
140
  sizeof(buffer_size_bytes))
140
- ? GRPC_ERROR_NONE
141
+ ? absl::OkStatus()
141
142
  : GRPC_OS_ERROR(errno, "setsockopt(SO_SNDBUF)");
142
143
  }
143
144
 
144
145
  grpc_error_handle grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes) {
145
146
  return 0 == setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buffer_size_bytes,
146
147
  sizeof(buffer_size_bytes))
147
- ? GRPC_ERROR_NONE
148
+ ? absl::OkStatus()
148
149
  : GRPC_OS_ERROR(errno, "setsockopt(SO_RCVBUF)");
149
150
  }
150
151
 
@@ -165,7 +166,7 @@ grpc_error_handle grpc_set_socket_cloexec(int fd, int close_on_exec) {
165
166
  return GRPC_OS_ERROR(errno, "fcntl");
166
167
  }
167
168
 
168
- return GRPC_ERROR_NONE;
169
+ return absl::OkStatus();
169
170
  }
170
171
 
171
172
  /* set a socket to reuse old addresses */
@@ -180,17 +181,16 @@ grpc_error_handle grpc_set_socket_reuse_addr(int fd, int reuse) {
180
181
  return GRPC_OS_ERROR(errno, "getsockopt(SO_REUSEADDR)");
181
182
  }
182
183
  if ((newval != 0) != val) {
183
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set SO_REUSEADDR");
184
+ return GRPC_ERROR_CREATE("Failed to set SO_REUSEADDR");
184
185
  }
185
186
 
186
- return GRPC_ERROR_NONE;
187
+ return absl::OkStatus();
187
188
  }
188
189
 
189
190
  /* set a socket to reuse old addresses */
190
191
  grpc_error_handle grpc_set_socket_reuse_port(int fd, int reuse) {
191
192
  #ifndef SO_REUSEPORT
192
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
193
- "SO_REUSEPORT unavailable on compiling system");
193
+ return GRPC_ERROR_CREATE("SO_REUSEPORT unavailable on compiling system");
194
194
  #else
195
195
  int val = (reuse != 0);
196
196
  int newval;
@@ -202,10 +202,10 @@ grpc_error_handle grpc_set_socket_reuse_port(int fd, int reuse) {
202
202
  return GRPC_OS_ERROR(errno, "getsockopt(SO_REUSEPORT)");
203
203
  }
204
204
  if ((newval != 0) != val) {
205
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set SO_REUSEPORT");
205
+ return GRPC_ERROR_CREATE("Failed to set SO_REUSEPORT");
206
206
  }
207
207
 
208
- return GRPC_ERROR_NONE;
208
+ return absl::OkStatus();
209
209
  #endif
210
210
  }
211
211
 
@@ -243,9 +243,9 @@ grpc_error_handle grpc_set_socket_low_latency(int fd, int low_latency) {
243
243
  return GRPC_OS_ERROR(errno, "getsockopt(TCP_NODELAY)");
244
244
  }
245
245
  if ((newval != 0) != val) {
246
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set TCP_NODELAY");
246
+ return GRPC_ERROR_CREATE("Failed to set TCP_NODELAY");
247
247
  }
248
- return GRPC_ERROR_NONE;
248
+ return absl::OkStatus();
249
249
  }
250
250
 
251
251
  /* The default values for TCP_USER_TIMEOUT are currently configured to be in
@@ -347,18 +347,18 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout(
347
347
  if (0 != setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &timeout,
348
348
  sizeof(timeout))) {
349
349
  gpr_log(GPR_ERROR, "setsockopt(TCP_USER_TIMEOUT) %s",
350
- strerror(errno));
351
- return GRPC_ERROR_NONE;
350
+ grpc_core::StrError(errno).c_str());
351
+ return absl::OkStatus();
352
352
  }
353
353
  if (0 != getsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &newval, &len)) {
354
354
  gpr_log(GPR_ERROR, "getsockopt(TCP_USER_TIMEOUT) %s",
355
- strerror(errno));
356
- return GRPC_ERROR_NONE;
355
+ grpc_core::StrError(errno).c_str());
356
+ return absl::OkStatus();
357
357
  }
358
358
  if (newval != timeout) {
359
359
  /* Do not fail on failing to set TCP_USER_TIMEOUT for now. */
360
360
  gpr_log(GPR_ERROR, "Failed to set TCP_USER_TIMEOUT");
361
- return GRPC_ERROR_NONE;
361
+ return absl::OkStatus();
362
362
  }
363
363
  }
364
364
  }
@@ -367,7 +367,7 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout(
367
367
  gpr_log(GPR_INFO, "TCP_USER_TIMEOUT not supported for this platform");
368
368
  }
369
369
  }
370
- return GRPC_ERROR_NONE;
370
+ return absl::OkStatus();
371
371
  }
372
372
 
373
373
  /* set a socket using a grpc_socket_mutator */
@@ -375,15 +375,15 @@ grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage,
375
375
  grpc_socket_mutator* mutator) {
376
376
  GPR_ASSERT(mutator);
377
377
  if (!grpc_socket_mutator_mutate_fd(mutator, fd, usage)) {
378
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("grpc_socket_mutator failed.");
378
+ return GRPC_ERROR_CREATE("grpc_socket_mutator failed.");
379
379
  }
380
- return GRPC_ERROR_NONE;
380
+ return absl::OkStatus();
381
381
  }
382
382
 
383
383
  grpc_error_handle grpc_apply_socket_mutator_in_args(
384
384
  int fd, grpc_fd_usage usage, const grpc_core::PosixTcpOptions& options) {
385
385
  if (options.socket_mutator == nullptr) {
386
- return GRPC_ERROR_NONE;
386
+ return absl::OkStatus();
387
387
  }
388
388
  return grpc_set_socket_with_mutator(fd, usage, options.socket_mutator);
389
389
  }
@@ -418,10 +418,11 @@ int grpc_ipv6_loopback_available(void) {
418
418
 
419
419
  static grpc_error_handle error_for_fd(int fd,
420
420
  const grpc_resolved_address* addr) {
421
- if (fd >= 0) return GRPC_ERROR_NONE;
421
+ if (fd >= 0) return absl::OkStatus();
422
422
  auto addr_str = grpc_sockaddr_to_string(addr, false);
423
423
  grpc_error_handle err = grpc_error_set_str(
424
- GRPC_OS_ERROR(errno, "socket"), GRPC_ERROR_STR_TARGET_ADDRESS,
424
+ GRPC_OS_ERROR(errno, "socket"),
425
+ grpc_core::StatusStrProperty::kTargetAddress,
425
426
  addr_str.ok() ? addr_str.value() : addr_str.status().ToString());
426
427
  return err;
427
428
  }
@@ -456,7 +457,7 @@ grpc_error_handle grpc_create_dualstack_socket_using_factory(
456
457
  /* Check if we've got a valid dualstack socket. */
457
458
  if (*newfd >= 0 && grpc_set_socket_dualstack(*newfd)) {
458
459
  *dsmode = GRPC_DSMODE_DUALSTACK;
459
- return GRPC_ERROR_NONE;
460
+ return absl::OkStatus();
460
461
  }
461
462
  /* If this isn't an IPv4 address, then return whatever we've got. */
462
463
  if (!grpc_sockaddr_is_v4mapped(resolved_addr, nullptr)) {
@@ -37,6 +37,7 @@
37
37
  #ifdef GRPC_POSIX_SOCKET_TCP
38
38
 
39
39
  #include "src/core/lib/event_engine/channel_args_endpoint_config.h"
40
+ #include "src/core/lib/gprpp/strerror.h"
40
41
  #include "src/core/lib/iomgr/socket_utils_posix.h"
41
42
 
42
43
  using ::grpc_event_engine::experimental::EndpointConfig;
@@ -64,7 +64,7 @@ struct PosixTcpOptions {
64
64
  PosixTcpOptions() = default;
65
65
  // Move ctor
66
66
  PosixTcpOptions(PosixTcpOptions&& other) noexcept {
67
- socket_mutator = absl::exchange(other.socket_mutator, nullptr);
67
+ socket_mutator = std::exchange(other.socket_mutator, nullptr);
68
68
  resource_quota = std::move(other.resource_quota);
69
69
  CopyIntegerOptions(other);
70
70
  }
@@ -73,7 +73,7 @@ struct PosixTcpOptions {
73
73
  if (socket_mutator != nullptr) {
74
74
  grpc_socket_mutator_unref(socket_mutator);
75
75
  }
76
- socket_mutator = absl::exchange(other.socket_mutator, nullptr);
76
+ socket_mutator = std::exchange(other.socket_mutator, nullptr);
77
77
  resource_quota = std::move(other.resource_quota);
78
78
  CopyIntegerOptions(other);
79
79
  return *this;
@@ -123,7 +123,7 @@ static void socket_notify_on_iocp(grpc_winsocket* socket, grpc_closure* closure,
123
123
  gpr_mu_lock(&socket->state_mu);
124
124
  if (info->has_pending_iocp) {
125
125
  info->has_pending_iocp = 0;
126
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
126
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
127
127
  } else {
128
128
  info->closure = closure;
129
129
  }
@@ -144,7 +144,7 @@ void grpc_socket_become_ready(grpc_winsocket* socket,
144
144
  GPR_ASSERT(!info->has_pending_iocp);
145
145
  gpr_mu_lock(&socket->state_mu);
146
146
  if (info->closure) {
147
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, info->closure, GRPC_ERROR_NONE);
147
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, info->closure, absl::OkStatus());
148
148
  info->closure = NULL;
149
149
  } else {
150
150
  info->has_pending_iocp = 1;
@@ -78,7 +78,7 @@ static void OnAlarm(void* arg, grpc_error_handle error) {
78
78
  CFStreamConnect* connect = static_cast<CFStreamConnect*>(arg);
79
79
  if (grpc_tcp_trace.enabled()) {
80
80
  gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnAlarm, error:%s", connect,
81
- grpc_error_std_string(error).c_str());
81
+ grpc_core::StatusToString(error).c_str());
82
82
  }
83
83
  gpr_mu_lock(&connect->mu);
84
84
  grpc_closure* closure = connect->closure;
@@ -90,8 +90,7 @@ static void OnAlarm(void* arg, grpc_error_handle error) {
90
90
  if (done) {
91
91
  CFStreamConnectCleanup(connect);
92
92
  } else {
93
- grpc_error_handle error =
94
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out");
93
+ grpc_error_handle error = GRPC_ERROR_CREATE("connect() timed out");
95
94
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
96
95
  }
97
96
  }
@@ -100,7 +99,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
100
99
  CFStreamConnect* connect = static_cast<CFStreamConnect*>(arg);
101
100
  if (grpc_tcp_trace.enabled()) {
102
101
  gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnOpen, error:%s", connect,
103
- grpc_error_std_string(error).c_str());
102
+ grpc_core::StatusToString(error).c_str());
104
103
  }
105
104
  gpr_mu_lock(&connect->mu);
106
105
  grpc_timer_cancel(&connect->alarm);
@@ -116,7 +115,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
116
115
  gpr_mu_unlock(&connect->mu);
117
116
  CFStreamConnectCleanup(connect);
118
117
  } else {
119
- if (GRPC_ERROR_IS_NONE(error)) {
118
+ if (error.ok()) {
120
119
  CFErrorRef stream_error = CFReadStreamCopyError(connect->read_stream);
121
120
  if (stream_error == NULL) {
122
121
  stream_error = CFWriteStreamCopyError(connect->write_stream);
@@ -125,13 +124,11 @@ static void OnOpen(void* arg, grpc_error_handle error) {
125
124
  error = GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "connect() error");
126
125
  CFRelease(stream_error);
127
126
  }
128
- if (GRPC_ERROR_IS_NONE(error)) {
127
+ if (error.ok()) {
129
128
  *endpoint = grpc_cfstream_endpoint_create(
130
129
  connect->read_stream, connect->write_stream,
131
130
  connect->addr_name.c_str(), connect->stream_handle);
132
131
  }
133
- } else {
134
- (void)GRPC_ERROR_REF(error);
135
132
  }
136
133
  gpr_mu_unlock(&connect->mu);
137
134
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
@@ -156,8 +153,7 @@ static int64_t CFStreamClientConnect(
156
153
  const grpc_resolved_address* resolved_addr, grpc_core::Timestamp deadline) {
157
154
  auto addr_uri = grpc_sockaddr_to_uri(resolved_addr);
158
155
  if (!addr_uri.ok()) {
159
- grpc_error_handle error =
160
- GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
156
+ grpc_error_handle error = GRPC_ERROR_CREATE(addr_uri.status().ToString());
161
157
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
162
158
  return 0;
163
159
  }
@@ -94,28 +94,28 @@ void grpc_tcp_client_global_init() {
94
94
  static grpc_error_handle prepare_socket(
95
95
  const grpc_resolved_address* addr, int fd,
96
96
  const grpc_core::PosixTcpOptions& options) {
97
- grpc_error_handle err = GRPC_ERROR_NONE;
97
+ grpc_error_handle err;
98
98
 
99
99
  GPR_ASSERT(fd >= 0);
100
100
 
101
101
  err = grpc_set_socket_nonblocking(fd, 1);
102
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
102
+ if (!err.ok()) goto error;
103
103
  err = grpc_set_socket_cloexec(fd, 1);
104
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
104
+ if (!err.ok()) goto error;
105
105
  if (!grpc_is_unix_socket(addr)) {
106
106
  err = grpc_set_socket_low_latency(fd, 1);
107
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
107
+ if (!err.ok()) goto error;
108
108
  err = grpc_set_socket_reuse_addr(fd, 1);
109
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
109
+ if (!err.ok()) goto error;
110
110
  err = grpc_set_socket_tcp_user_timeout(fd, options, true /* is_client */);
111
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
111
+ if (!err.ok()) goto error;
112
112
  }
113
113
  err = grpc_set_socket_no_sigpipe_if_possible(fd);
114
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
114
+ if (!err.ok()) goto error;
115
115
 
116
116
  err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_CLIENT_CONNECTION_USAGE,
117
117
  options);
118
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
118
+ if (!err.ok()) goto error;
119
119
 
120
120
  goto done;
121
121
 
@@ -132,12 +132,11 @@ static void tc_on_alarm(void* acp, grpc_error_handle error) {
132
132
  async_connect* ac = static_cast<async_connect*>(acp);
133
133
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
134
134
  gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s",
135
- ac->addr_str.c_str(), grpc_error_std_string(error).c_str());
135
+ ac->addr_str.c_str(), grpc_core::StatusToString(error).c_str());
136
136
  }
137
137
  gpr_mu_lock(&ac->mu);
138
138
  if (ac->fd != nullptr) {
139
- grpc_fd_shutdown(
140
- ac->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out"));
139
+ grpc_fd_shutdown(ac->fd, GRPC_ERROR_CREATE("connect() timed out"));
141
140
  }
142
141
  done = (--ac->refs == 0);
143
142
  gpr_mu_unlock(&ac->mu);
@@ -170,11 +169,9 @@ static void on_writable(void* acp, grpc_error_handle error) {
170
169
  std::string addr_str = ac->addr_str;
171
170
  grpc_fd* fd;
172
171
 
173
- (void)GRPC_ERROR_REF(error);
174
-
175
172
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
176
173
  gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_writable: error=%s",
177
- ac->addr_str.c_str(), grpc_error_std_string(error).c_str());
174
+ ac->addr_str.c_str(), grpc_core::StatusToString(error).c_str());
178
175
  }
179
176
 
180
177
  gpr_mu_lock(&ac->mu);
@@ -187,15 +184,15 @@ static void on_writable(void* acp, grpc_error_handle error) {
187
184
  grpc_timer_cancel(&ac->alarm);
188
185
 
189
186
  gpr_mu_lock(&ac->mu);
190
- if (!GRPC_ERROR_IS_NONE(error)) {
191
- error =
192
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, "Timeout occurred");
187
+ if (!error.ok()) {
188
+ error = grpc_error_set_str(error, grpc_core::StatusStrProperty::kOsError,
189
+ "Timeout occurred");
193
190
  goto finish;
194
191
  }
195
192
 
196
193
  if (connect_cancelled) {
197
194
  // The callback should not get scheduled in this case.
198
- error = GRPC_ERROR_NONE;
195
+ error = absl::OkStatus();
199
196
  goto finish;
200
197
  }
201
198
 
@@ -261,14 +258,17 @@ finish:
261
258
  }
262
259
  done = (--ac->refs == 0);
263
260
  gpr_mu_unlock(&ac->mu);
264
- if (!GRPC_ERROR_IS_NONE(error)) {
261
+ if (!error.ok()) {
265
262
  std::string str;
266
- bool ret = grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &str);
263
+ bool ret = grpc_error_get_str(
264
+ error, grpc_core::StatusStrProperty::kDescription, &str);
267
265
  GPR_ASSERT(ret);
268
266
  std::string description =
269
267
  absl::StrCat("Failed to connect to remote host: ", str);
270
- error = grpc_error_set_str(error, GRPC_ERROR_STR_DESCRIPTION, description);
271
- error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, addr_str);
268
+ error = grpc_error_set_str(
269
+ error, grpc_core::StatusStrProperty::kDescription, description);
270
+ error = grpc_error_set_str(
271
+ error, grpc_core::StatusStrProperty::kTargetAddress, addr_str);
272
272
  }
273
273
  if (done) {
274
274
  // This is safe even outside the lock, because "done", the sentinel, is
@@ -281,9 +281,6 @@ finish:
281
281
  // between the core shutdown mu and the connector mu (b/188239051)
282
282
  if (!connect_cancelled) {
283
283
  grpc_core::Executor::Run(closure, error);
284
- } else if (!GRPC_ERROR_IS_NONE(error)) {
285
- // Unref the error here because it is not used.
286
- (void)GRPC_ERROR_UNREF(error);
287
284
  }
288
285
  }
289
286
 
@@ -302,7 +299,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
302
299
  }
303
300
  error =
304
301
  grpc_create_dualstack_socket(mapped_addr, SOCK_STREAM, 0, &dsmode, fd);
305
- if (!GRPC_ERROR_IS_NONE(error)) {
302
+ if (!error.ok()) {
306
303
  return error;
307
304
  }
308
305
  if (dsmode == GRPC_DSMODE_IPV4) {
@@ -311,10 +308,10 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
311
308
  memcpy(mapped_addr, addr, sizeof(*mapped_addr));
312
309
  }
313
310
  }
314
- if ((error = prepare_socket(mapped_addr, *fd, options)) != GRPC_ERROR_NONE) {
311
+ if ((error = prepare_socket(mapped_addr, *fd, options)) != absl::OkStatus()) {
315
312
  return error;
316
313
  }
317
- return GRPC_ERROR_NONE;
314
+ return absl::OkStatus();
318
315
  }
319
316
 
320
317
  int64_t grpc_tcp_client_create_from_prepared_fd(
@@ -330,8 +327,7 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
330
327
 
331
328
  auto addr_uri = grpc_sockaddr_to_uri(addr);
332
329
  if (!addr_uri.ok()) {
333
- grpc_error_handle error =
334
- GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
330
+ grpc_error_handle error = GRPC_ERROR_CREATE(addr_uri.status().ToString());
335
331
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
336
332
  return 0;
337
333
  }
@@ -348,15 +344,15 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
348
344
  // Connection already succeded. Return 0 to discourage any cancellation
349
345
  // attempts.
350
346
  *ep = grpc_tcp_client_create_from_fd(fdobj, options, addr_uri.value());
351
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
347
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
352
348
  return 0;
353
349
  }
354
350
  if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
355
351
  // Connection already failed. Return 0 to discourage any cancellation
356
352
  // attempts.
357
353
  grpc_error_handle error = GRPC_OS_ERROR(errno, "connect");
358
- error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
359
- addr_uri.value());
354
+ error = grpc_error_set_str(
355
+ error, grpc_core::StatusStrProperty::kTargetAddress, addr_uri.value());
360
356
  grpc_fd_orphan(fdobj, nullptr, nullptr, "tcp_client_connect_error");
361
357
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
362
358
  return 0;
@@ -409,7 +405,7 @@ static int64_t tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
409
405
  grpc_error_handle error;
410
406
  *ep = nullptr;
411
407
  if ((error = grpc_tcp_client_prepare_fd(options, addr, &mapped_addr, &fd)) !=
412
- GRPC_ERROR_NONE) {
408
+ absl::OkStatus()) {
413
409
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
414
410
  return 0;
415
411
  }
@@ -455,7 +451,7 @@ static bool tcp_cancel_connect(int64_t connection_handle) {
455
451
  // Shutdown the fd. This would cause on_writable to run as soon as possible.
456
452
  // We dont need to pass a custom error here because it wont be used since
457
453
  // the on_connect_closure is not run if connect cancellation is successfull.
458
- grpc_fd_shutdown(ac->fd, GRPC_ERROR_NONE);
454
+ grpc_fd_shutdown(ac->fd, absl::OkStatus());
459
455
  }
460
456
  bool done = (--ac->refs == 0);
461
457
  gpr_mu_unlock(&ac->mu);
@@ -83,8 +83,6 @@ static void on_connect(void* acp, grpc_error_handle error) {
83
83
  GPR_ASSERT(*ep == NULL);
84
84
  grpc_closure* on_done = ac->on_done;
85
85
 
86
- (void)GRPC_ERROR_REF(error);
87
-
88
86
  gpr_mu_lock(&ac->mu);
89
87
  grpc_winsocket* socket = ac->socket;
90
88
  ac->socket = NULL;
@@ -94,7 +92,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
94
92
 
95
93
  gpr_mu_lock(&ac->mu);
96
94
 
97
- if (GRPC_ERROR_IS_NONE(error)) {
95
+ if (error.ok()) {
98
96
  if (socket != NULL) {
99
97
  DWORD transfered_bytes = 0;
100
98
  DWORD flags;
@@ -110,7 +108,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
110
108
  socket = nullptr;
111
109
  }
112
110
  } else {
113
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("socket is null");
111
+ error = GRPC_ERROR_CREATE("socket is null");
114
112
  }
115
113
  }
116
114
 
@@ -137,13 +135,13 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
137
135
  GUID guid = WSAID_CONNECTEX;
138
136
  DWORD ioctl_num_bytes;
139
137
  grpc_winsocket_callback_info* info;
140
- grpc_error_handle error = GRPC_ERROR_NONE;
138
+ grpc_error_handle error;
141
139
  async_connect* ac = NULL;
142
140
  absl::StatusOr<std::string> addr_uri;
143
141
 
144
142
  addr_uri = grpc_sockaddr_to_uri(addr);
145
143
  if (!addr_uri.ok()) {
146
- error = GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
144
+ error = GRPC_ERROR_CREATE(addr_uri.status().ToString());
147
145
  goto failure;
148
146
  }
149
147
 
@@ -162,7 +160,7 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
162
160
  }
163
161
 
164
162
  error = grpc_tcp_prepare_socket(sock);
165
- if (!GRPC_ERROR_IS_NONE(error)) {
163
+ if (!error.ok()) {
166
164
  goto failure;
167
165
  }
168
166
 
@@ -219,13 +217,11 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
219
217
  return 0;
220
218
 
221
219
  failure:
222
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
220
+ GPR_ASSERT(!error.ok());
223
221
  grpc_error_handle final_error = grpc_error_set_str(
224
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Failed to connect",
225
- &error, 1),
226
- GRPC_ERROR_STR_TARGET_ADDRESS,
222
+ GRPC_ERROR_CREATE_REFERENCING("Failed to connect", &error, 1),
223
+ grpc_core::StatusStrProperty::kTargetAddress,
227
224
  addr_uri.ok() ? *addr_uri : addr_uri.status().ToString());
228
- GRPC_ERROR_UNREF(error);
229
225
  if (socket != NULL) {
230
226
  grpc_winsocket_destroy(socket);
231
227
  } else if (sock != INVALID_SOCKET) {