grpc 1.50.0 → 1.51.0

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

Potentially problematic release.


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

Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +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/version.rb +1 -1
  428. data/src/ruby/spec/channel_spec.rb +0 -43
  429. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  430. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  431. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  432. data/third_party/zlib/compress.c +3 -3
  433. data/third_party/zlib/crc32.c +21 -12
  434. data/third_party/zlib/deflate.c +112 -106
  435. data/third_party/zlib/deflate.h +2 -2
  436. data/third_party/zlib/gzlib.c +1 -1
  437. data/third_party/zlib/gzread.c +3 -5
  438. data/third_party/zlib/gzwrite.c +1 -1
  439. data/third_party/zlib/infback.c +10 -7
  440. data/third_party/zlib/inflate.c +5 -2
  441. data/third_party/zlib/inftrees.c +2 -2
  442. data/third_party/zlib/inftrees.h +1 -1
  443. data/third_party/zlib/trees.c +61 -62
  444. data/third_party/zlib/uncompr.c +2 -2
  445. data/third_party/zlib/zconf.h +16 -3
  446. data/third_party/zlib/zlib.h +10 -10
  447. data/third_party/zlib/zutil.c +9 -7
  448. data/third_party/zlib/zutil.h +1 -0
  449. metadata +55 -18
  450. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  451. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  452. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  453. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  454. data/src/core/lib/gpr/murmur_hash.h +0 -29
  455. data/src/core/lib/gpr/tls.h +0 -156
  456. data/src/core/lib/promise/call_push_pull.h +0 -148
  457. data/src/core/lib/slice/slice_api.cc +0 -39
  458. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  459. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -52,6 +52,7 @@
52
52
  #include "src/core/lib/address_utils/sockaddr_utils.h"
53
53
  #include "src/core/lib/gpr/string.h"
54
54
  #include "src/core/lib/gprpp/memory.h"
55
+ #include "src/core/lib/gprpp/strerror.h"
55
56
  #include "src/core/lib/iomgr/exec_ctx.h"
56
57
  #include "src/core/lib/iomgr/resolve_address.h"
57
58
  #include "src/core/lib/iomgr/sockaddr.h"
@@ -99,7 +100,7 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
99
100
  s->memory_quota = s->options.resource_quota->memory_quota();
100
101
  gpr_atm_no_barrier_store(&s->next_pollset_to_assign, 0);
101
102
  *server = s;
102
- return GRPC_ERROR_NONE;
103
+ return absl::OkStatus();
103
104
  }
104
105
 
105
106
  static void finish_shutdown(grpc_tcp_server* s) {
@@ -108,7 +109,7 @@ static void finish_shutdown(grpc_tcp_server* s) {
108
109
  gpr_mu_unlock(&s->mu);
109
110
  if (s->shutdown_complete != nullptr) {
110
111
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->shutdown_complete,
111
- GRPC_ERROR_NONE);
112
+ absl::OkStatus());
112
113
  }
113
114
  gpr_mu_destroy(&s->mu);
114
115
  while (s->head) {
@@ -166,8 +167,7 @@ static void tcp_server_destroy(grpc_tcp_server* s) {
166
167
  if (s->active_ports) {
167
168
  grpc_tcp_listener* sp;
168
169
  for (sp = s->head; sp; sp = sp->next) {
169
- grpc_fd_shutdown(
170
- sp->emfd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server destroyed"));
170
+ grpc_fd_shutdown(sp->emfd, GRPC_ERROR_CREATE("Server destroyed"));
171
171
  }
172
172
  gpr_mu_unlock(&s->mu);
173
173
  } else {
@@ -180,7 +180,7 @@ static void tcp_server_destroy(grpc_tcp_server* s) {
180
180
  static void on_read(void* arg, grpc_error_handle err) {
181
181
  grpc_tcp_listener* sp = static_cast<grpc_tcp_listener*>(arg);
182
182
  grpc_pollset* read_notifier_pollset;
183
- if (!GRPC_ERROR_IS_NONE(err)) {
183
+ if (!err.ok()) {
184
184
  goto error;
185
185
  }
186
186
 
@@ -202,7 +202,8 @@ static void on_read(void* arg, grpc_error_handle err) {
202
202
  } else {
203
203
  gpr_mu_lock(&sp->server->mu);
204
204
  if (!sp->server->shutdown_listeners) {
205
- gpr_log(GPR_ERROR, "Failed accept4: %s", strerror(errno));
205
+ gpr_log(GPR_ERROR, "Failed accept4: %s",
206
+ grpc_core::StrError(errno).c_str());
206
207
  } else {
207
208
  /* if we have shutdown listeners, accept4 could fail, and we
208
209
  needn't notify users */
@@ -230,9 +231,10 @@ static void on_read(void* arg, grpc_error_handle err) {
230
231
  if (grpc_is_unix_socket(&addr)) {
231
232
  memset(&addr, 0, sizeof(addr));
232
233
  addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
233
- if (getsockname(fd, reinterpret_cast<struct sockaddr*>(addr.addr),
234
+ if (getpeername(fd, reinterpret_cast<struct sockaddr*>(addr.addr),
234
235
  &(addr.len)) < 0) {
235
- gpr_log(GPR_ERROR, "Failed getsockname: %s", strerror(errno));
236
+ gpr_log(GPR_ERROR, "Failed getsockname: %s",
237
+ grpc_core::StrError(errno).c_str());
236
238
  close(fd);
237
239
  goto error;
238
240
  }
@@ -242,7 +244,7 @@ static void on_read(void* arg, grpc_error_handle err) {
242
244
 
243
245
  err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_CONNECTION_USAGE,
244
246
  sp->server->options);
245
- if (!GRPC_ERROR_IS_NONE(err)) {
247
+ if (!err.ok()) {
246
248
  goto error;
247
249
  }
248
250
 
@@ -280,7 +282,7 @@ static void on_read(void* arg, grpc_error_handle err) {
280
282
  read_notifier_pollset, acceptor);
281
283
  }
282
284
 
283
- GPR_UNREACHABLE_CODE(return );
285
+ GPR_UNREACHABLE_CODE(return);
284
286
 
285
287
  error:
286
288
  gpr_mu_lock(&sp->server->mu);
@@ -303,8 +305,8 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
303
305
  grpc_dualstack_mode dsmode;
304
306
  grpc_tcp_listener* sp = nullptr;
305
307
  grpc_tcp_listener* sp2 = nullptr;
306
- grpc_error_handle v6_err = GRPC_ERROR_NONE;
307
- grpc_error_handle v4_err = GRPC_ERROR_NONE;
308
+ grpc_error_handle v6_err;
309
+ grpc_error_handle v4_err;
308
310
  *out_port = -1;
309
311
 
310
312
  if (grpc_tcp_server_have_ifaddrs() && s->expand_wildcard_addrs) {
@@ -315,17 +317,17 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
315
317
  grpc_sockaddr_make_wildcards(requested_port, &wild4, &wild6);
316
318
  /* Try listening on IPv6 first. */
317
319
  if ((v6_err = grpc_tcp_server_add_addr(s, &wild6, port_index, fd_index,
318
- &dsmode, &sp)) == GRPC_ERROR_NONE) {
320
+ &dsmode, &sp)) == absl::OkStatus()) {
319
321
  ++fd_index;
320
322
  requested_port = *out_port = sp->port;
321
323
  if (dsmode == GRPC_DSMODE_DUALSTACK || dsmode == GRPC_DSMODE_IPV4) {
322
- return GRPC_ERROR_NONE;
324
+ return absl::OkStatus();
323
325
  }
324
326
  }
325
327
  /* If we got a v6-only socket or nothing, try adding 0.0.0.0. */
326
328
  grpc_sockaddr_set_port(&wild4, requested_port);
327
329
  if ((v4_err = grpc_tcp_server_add_addr(s, &wild4, port_index, fd_index,
328
- &dsmode, &sp2)) == GRPC_ERROR_NONE) {
330
+ &dsmode, &sp2)) == absl::OkStatus()) {
329
331
  *out_port = sp2->port;
330
332
  if (sp != nullptr) {
331
333
  sp2->is_sibling = 1;
@@ -333,25 +335,23 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
333
335
  }
334
336
  }
335
337
  if (*out_port > 0) {
336
- if (!GRPC_ERROR_IS_NONE(v6_err)) {
338
+ if (!v6_err.ok()) {
337
339
  gpr_log(GPR_INFO,
338
340
  "Failed to add :: listener, "
339
341
  "the environment may not support IPv6: %s",
340
- grpc_error_std_string(v6_err).c_str());
341
- GRPC_ERROR_UNREF(v6_err);
342
+ grpc_core::StatusToString(v6_err).c_str());
342
343
  }
343
- if (!GRPC_ERROR_IS_NONE(v4_err)) {
344
+ if (!v4_err.ok()) {
344
345
  gpr_log(GPR_INFO,
345
346
  "Failed to add 0.0.0.0 listener, "
346
347
  "the environment may not support IPv4: %s",
347
- grpc_error_std_string(v4_err).c_str());
348
- GRPC_ERROR_UNREF(v4_err);
348
+ grpc_core::StatusToString(v4_err).c_str());
349
349
  }
350
- return GRPC_ERROR_NONE;
350
+ return absl::OkStatus();
351
351
  } else {
352
- grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
353
- "Failed to add any wildcard listeners");
354
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(v6_err) && !GRPC_ERROR_IS_NONE(v4_err));
352
+ grpc_error_handle root_err =
353
+ GRPC_ERROR_CREATE("Failed to add any wildcard listeners");
354
+ GPR_ASSERT(!v6_err.ok() && !v4_err.ok());
355
355
  root_err = grpc_error_add_child(root_err, v6_err);
356
356
  root_err = grpc_error_add_child(root_err, v4_err);
357
357
  return root_err;
@@ -374,14 +374,14 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
374
374
  grpc_dualstack_mode dsmode;
375
375
  err = grpc_create_dualstack_socket(&listener->addr, SOCK_STREAM, 0, &dsmode,
376
376
  &fd);
377
- if (!GRPC_ERROR_IS_NONE(err)) return err;
377
+ if (!err.ok()) return err;
378
378
  err = grpc_tcp_server_prepare_socket(listener->server, fd, &listener->addr,
379
379
  true, &port);
380
- if (!GRPC_ERROR_IS_NONE(err)) return err;
380
+ if (!err.ok()) return err;
381
381
  listener->server->nports++;
382
382
  addr_str = grpc_sockaddr_to_string(&listener->addr, true);
383
383
  if (!addr_str.ok()) {
384
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
384
+ return GRPC_ERROR_CREATE(addr_str.status().ToString());
385
385
  }
386
386
  sp = static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
387
387
  sp->next = listener->next;
@@ -408,7 +408,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
408
408
  }
409
409
  }
410
410
 
411
- return GRPC_ERROR_NONE;
411
+ return absl::OkStatus();
412
412
  }
413
413
 
414
414
  static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
@@ -457,7 +457,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
457
457
  addr = &addr6_v4mapped;
458
458
  }
459
459
  if ((err = grpc_tcp_server_add_addr(s, addr, port_index, 0, &dsmode, &sp)) ==
460
- GRPC_ERROR_NONE) {
460
+ absl::OkStatus()) {
461
461
  *out_port = sp->port;
462
462
  }
463
463
  return err;
@@ -554,7 +554,7 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
554
554
  grpc_closure* shutdown_starting) {
555
555
  gpr_mu_lock(&s->mu);
556
556
  grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
557
- GRPC_ERROR_NONE);
557
+ absl::OkStatus());
558
558
  gpr_mu_unlock(&s->mu);
559
559
  }
560
560
 
@@ -575,8 +575,7 @@ static void tcp_server_shutdown_listeners(grpc_tcp_server* s) {
575
575
  if (s->active_ports) {
576
576
  grpc_tcp_listener* sp;
577
577
  for (sp = s->head; sp; sp = sp->next) {
578
- grpc_fd_shutdown(sp->emfd,
579
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"));
578
+ grpc_fd_shutdown(sp->emfd, GRPC_ERROR_CREATE("Server shutdown"));
580
579
  }
581
580
  }
582
581
  gpr_mu_unlock(&s->mu);
@@ -597,7 +596,8 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
597
596
 
598
597
  if (getpeername(fd, reinterpret_cast<struct sockaddr*>(addr.addr),
599
598
  &(addr.len)) < 0) {
600
- gpr_log(GPR_ERROR, "Failed getpeername: %s", strerror(errno));
599
+ gpr_log(GPR_ERROR, "Failed getpeername: %s",
600
+ grpc_core::StrError(errno).c_str());
601
601
  close(fd);
602
602
  return;
603
603
  }
@@ -112,7 +112,7 @@ grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server* s,
112
112
  /* Get all addresses assigned to network interfaces on the machine and create a
113
113
  listener for each. requested_port is the port to use for every listener, or 0
114
114
  to select one random port that will be used for every listener. Set *out_port
115
- to the port selected. Return GRPC_ERROR_NONE only if all listeners were
115
+ to the port selected. Return absl::OkStatus() only if all listeners were
116
116
  added. */
117
117
  grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
118
118
  unsigned port_index,
@@ -90,11 +90,11 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
90
90
 
91
91
  grpc_error_handle err =
92
92
  grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port);
93
- if (!GRPC_ERROR_IS_NONE(err)) return err;
93
+ if (!err.ok()) return err;
94
94
  GPR_ASSERT(port > 0);
95
95
  absl::StatusOr<std::string> addr_str = grpc_sockaddr_to_string(addr, true);
96
96
  if (!addr_str.ok()) {
97
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
97
+ return GRPC_ERROR_CREATE(addr_str.status().ToString());
98
98
  }
99
99
  std::string name = absl::StrCat("tcp-server-listener:", addr_str.value());
100
100
  gpr_mu_lock(&s->mu);
@@ -137,7 +137,7 @@ grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server* s,
137
137
  int fd;
138
138
  grpc_error_handle err =
139
139
  grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, dsmode, &fd);
140
- if (!GRPC_ERROR_IS_NONE(err)) {
140
+ if (!err.ok()) {
141
141
  return err;
142
142
  }
143
143
  if (*dsmode == GRPC_DSMODE_IPV4 &&
@@ -152,42 +152,41 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
152
152
  grpc_tcp_server* s, int fd, const grpc_resolved_address* addr,
153
153
  bool so_reuseport, int* port) {
154
154
  grpc_resolved_address sockname_temp;
155
- grpc_error_handle err = GRPC_ERROR_NONE;
155
+ grpc_error_handle err;
156
156
 
157
157
  GPR_ASSERT(fd >= 0);
158
158
 
159
159
  if (so_reuseport && !grpc_is_unix_socket(addr)) {
160
160
  err = grpc_set_socket_reuse_port(fd, 1);
161
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
161
+ if (!err.ok()) goto error;
162
162
  }
163
163
 
164
164
  #ifdef GRPC_LINUX_ERRQUEUE
165
165
  err = grpc_set_socket_zerocopy(fd);
166
- if (!GRPC_ERROR_IS_NONE(err)) {
166
+ if (!err.ok()) {
167
167
  /* it's not fatal, so just log it. */
168
168
  gpr_log(GPR_DEBUG, "Node does not support SO_ZEROCOPY, continuing.");
169
- GRPC_ERROR_UNREF(err);
170
169
  }
171
170
  #endif
172
171
  err = grpc_set_socket_nonblocking(fd, 1);
173
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
172
+ if (!err.ok()) goto error;
174
173
  err = grpc_set_socket_cloexec(fd, 1);
175
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
174
+ if (!err.ok()) goto error;
176
175
  if (!grpc_is_unix_socket(addr)) {
177
176
  err = grpc_set_socket_low_latency(fd, 1);
178
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
177
+ if (!err.ok()) goto error;
179
178
  err = grpc_set_socket_reuse_addr(fd, 1);
180
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
179
+ if (!err.ok()) goto error;
181
180
  err =
182
181
  grpc_set_socket_tcp_user_timeout(fd, s->options, false /* is_client */);
183
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
182
+ if (!err.ok()) goto error;
184
183
  }
185
184
  err = grpc_set_socket_no_sigpipe_if_possible(fd);
186
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
185
+ if (!err.ok()) goto error;
187
186
 
188
187
  err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_LISTENER_USAGE,
189
188
  s->options);
190
- if (!GRPC_ERROR_IS_NONE(err)) goto error;
189
+ if (!err.ok()) goto error;
191
190
 
192
191
  if (bind(fd, reinterpret_cast<grpc_sockaddr*>(const_cast<char*>(addr->addr)),
193
192
  addr->len) < 0) {
@@ -209,18 +208,16 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
209
208
  }
210
209
 
211
210
  *port = grpc_sockaddr_get_port(&sockname_temp);
212
- return GRPC_ERROR_NONE;
211
+ return absl::OkStatus();
213
212
 
214
213
  error:
215
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(err));
214
+ GPR_ASSERT(!err.ok());
216
215
  if (fd >= 0) {
217
216
  close(fd);
218
217
  }
219
- grpc_error_handle ret =
220
- grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
221
- "Unable to configure socket", &err, 1),
222
- GRPC_ERROR_INT_FD, fd);
223
- GRPC_ERROR_UNREF(err);
218
+ grpc_error_handle ret = grpc_error_set_int(
219
+ GRPC_ERROR_CREATE_REFERENCING("Unable to configure socket", &err, 1),
220
+ grpc_core::StatusIntProperty::kFd, fd);
224
221
  return ret;
225
222
  }
226
223
 
@@ -65,7 +65,7 @@ static grpc_error_handle get_unused_port(int* port) {
65
65
  int fd;
66
66
  grpc_error_handle err =
67
67
  grpc_create_dualstack_socket(&wild, SOCK_STREAM, 0, &dsmode, &fd);
68
- if (!GRPC_ERROR_IS_NONE(err)) {
68
+ if (!err.ok()) {
69
69
  return err;
70
70
  }
71
71
  if (dsmode == GRPC_DSMODE_IPV4) {
@@ -85,8 +85,7 @@ static grpc_error_handle get_unused_port(int* port) {
85
85
  }
86
86
  close(fd);
87
87
  *port = grpc_sockaddr_get_port(&wild);
88
- return *port <= 0 ? GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad port")
89
- : GRPC_ERROR_NONE;
88
+ return *port <= 0 ? GRPC_ERROR_CREATE("Bad port") : absl::OkStatus();
90
89
  }
91
90
 
92
91
  grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
@@ -97,16 +96,16 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
97
96
  struct ifaddrs* ifa_it;
98
97
  unsigned fd_index = 0;
99
98
  grpc_tcp_listener* sp = nullptr;
100
- grpc_error_handle err = GRPC_ERROR_NONE;
99
+ grpc_error_handle err;
101
100
  if (requested_port == 0) {
102
101
  /* Note: There could be a race where some local addrs can listen on the
103
102
  selected port and some can't. The sane way to handle this would be to
104
103
  retry by recreating the whole grpc_tcp_server. Backing out individual
105
104
  listeners and orphaning the FDs looks like too much trouble. */
106
- if ((err = get_unused_port(&requested_port)) != GRPC_ERROR_NONE) {
105
+ if ((err = get_unused_port(&requested_port)) != absl::OkStatus()) {
107
106
  return err;
108
107
  } else if (requested_port <= 0) {
109
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad get_unused_port()");
108
+ return GRPC_ERROR_CREATE("Bad get_unused_port()");
110
109
  }
111
110
  gpr_log(GPR_DEBUG, "Picked unused port %d", requested_port);
112
111
  }
@@ -130,12 +129,12 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
130
129
  memcpy(addr.addr, ifa_it->ifa_addr, addr.len);
131
130
  if (!grpc_sockaddr_set_port(&addr, requested_port)) {
132
131
  /* Should never happen, because we check sa_family above. */
133
- err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set port");
132
+ err = GRPC_ERROR_CREATE("Failed to set port");
134
133
  break;
135
134
  }
136
135
  auto addr_str = grpc_sockaddr_to_string(&addr, false);
137
136
  if (!addr_str.ok()) {
138
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
137
+ return GRPC_ERROR_CREATE(addr_str.status().ToString());
139
138
  }
140
139
  gpr_log(GPR_DEBUG,
141
140
  "Adding local addr from interface %s flags 0x%x to server: %s",
@@ -148,8 +147,8 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
148
147
  continue;
149
148
  }
150
149
  if ((err = grpc_tcp_server_add_addr(s, &addr, port_index, fd_index, &dsmode,
151
- &new_sp)) != GRPC_ERROR_NONE) {
152
- grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_CPP_STRING(
150
+ &new_sp)) != absl::OkStatus()) {
151
+ grpc_error_handle root_err = GRPC_ERROR_CREATE(
153
152
  absl::StrCat("Failed to add listener: ", addr_str.value()));
154
153
  err = grpc_error_add_child(root_err, err);
155
154
  break;
@@ -164,13 +163,13 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
164
163
  }
165
164
  }
166
165
  freeifaddrs(ifa);
167
- if (!GRPC_ERROR_IS_NONE(err)) {
166
+ if (!err.ok()) {
168
167
  return err;
169
168
  } else if (sp == nullptr) {
170
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No local addresses");
169
+ return GRPC_ERROR_CREATE("No local addresses");
171
170
  } else {
172
171
  *out_port = sp->port;
173
- return GRPC_ERROR_NONE;
172
+ return absl::OkStatus();
174
173
  }
175
174
  }
176
175
 
@@ -28,7 +28,7 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* /*s*/,
28
28
  unsigned /*port_index*/,
29
29
  int /*requested_port*/,
30
30
  int* /*out_port*/) {
31
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("no ifaddrs available");
31
+ return GRPC_ERROR_CREATE("no ifaddrs available");
32
32
  }
33
33
 
34
34
  bool grpc_tcp_server_have_ifaddrs(void) { return false; }
@@ -116,7 +116,7 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
116
116
  s->shutdown_starting.tail = NULL;
117
117
  s->shutdown_complete = shutdown_complete;
118
118
  *server = s;
119
- return GRPC_ERROR_NONE;
119
+ return absl::OkStatus();
120
120
  }
121
121
 
122
122
  static void destroy_server(void* arg, grpc_error_handle error) {
@@ -139,13 +139,13 @@ static void destroy_server(void* arg, grpc_error_handle error) {
139
139
  static void finish_shutdown_locked(grpc_tcp_server* s) {
140
140
  if (s->shutdown_complete != NULL) {
141
141
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->shutdown_complete,
142
- GRPC_ERROR_NONE);
142
+ absl::OkStatus());
143
143
  }
144
144
 
145
145
  grpc_core::ExecCtx::Run(
146
146
  DEBUG_LOCATION,
147
147
  GRPC_CLOSURE_CREATE(destroy_server, s, grpc_schedule_on_exec_ctx),
148
- GRPC_ERROR_NONE);
148
+ absl::OkStatus());
149
149
  }
150
150
 
151
151
  static grpc_tcp_server* tcp_server_ref(grpc_tcp_server* s) {
@@ -157,7 +157,7 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
157
157
  grpc_closure* shutdown_starting) {
158
158
  gpr_mu_lock(&s->mu);
159
159
  grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
160
- GRPC_ERROR_NONE);
160
+ absl::OkStatus());
161
161
  gpr_mu_unlock(&s->mu);
162
162
  }
163
163
 
@@ -192,11 +192,11 @@ static grpc_error_handle prepare_socket(SOCKET sock,
192
192
  const grpc_resolved_address* addr,
193
193
  int* port) {
194
194
  grpc_resolved_address sockname_temp;
195
- grpc_error_handle error = GRPC_ERROR_NONE;
195
+ grpc_error_handle error;
196
196
  int sockname_temp_len;
197
197
 
198
198
  error = grpc_tcp_prepare_socket(sock);
199
- if (!GRPC_ERROR_IS_NONE(error)) {
199
+ if (!error.ok()) {
200
200
  goto failure;
201
201
  }
202
202
 
@@ -220,19 +220,18 @@ static grpc_error_handle prepare_socket(SOCKET sock,
220
220
  sockname_temp.len = (size_t)sockname_temp_len;
221
221
 
222
222
  *port = grpc_sockaddr_get_port(&sockname_temp);
223
- return GRPC_ERROR_NONE;
223
+ return absl::OkStatus();
224
224
 
225
225
  failure:
226
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
226
+ GPR_ASSERT(!error.ok());
227
227
  auto addr_uri = grpc_sockaddr_to_uri(addr);
228
228
  grpc_error_set_int(
229
229
  grpc_error_set_str(
230
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
231
- "Failed to prepare server socket", &error, 1),
232
- GRPC_ERROR_STR_TARGET_ADDRESS,
230
+ GRPC_ERROR_CREATE_REFERENCING("Failed to prepare server socket",
231
+ &error, 1),
232
+ grpc_core::StatusStrProperty::kTargetAddress,
233
233
  addr_uri.ok() ? *addr_uri : addr_uri.status().ToString()),
234
- GRPC_ERROR_INT_FD, (intptr_t)sock);
235
- GRPC_ERROR_UNREF(error);
234
+ grpc_core::StatusIntProperty::kFd, (intptr_t)sock);
236
235
  if (sock != INVALID_SOCKET) closesocket(sock);
237
236
  return error;
238
237
  }
@@ -252,10 +251,10 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
252
251
  BOOL success;
253
252
  DWORD addrlen = sizeof(grpc_sockaddr_in6) + 16;
254
253
  DWORD bytes_received = 0;
255
- grpc_error_handle error = GRPC_ERROR_NONE;
254
+ grpc_error_handle error;
256
255
 
257
256
  if (port->shutting_down) {
258
- return GRPC_ERROR_NONE;
257
+ return absl::OkStatus();
259
258
  }
260
259
 
261
260
  sock = WSASocket(AF_INET6, SOCK_STREAM, IPPROTO_TCP, NULL, 0,
@@ -266,7 +265,7 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
266
265
  }
267
266
 
268
267
  error = grpc_tcp_prepare_socket(sock);
269
- if (!GRPC_ERROR_IS_NONE(error)) goto failure;
268
+ if (!error.ok()) goto failure;
270
269
 
271
270
  /* Start the "accept" asynchronously. */
272
271
  success = port->AcceptEx(port->socket->socket, sock, port->addresses, 0,
@@ -291,7 +290,7 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
291
290
  return error;
292
291
 
293
292
  failure:
294
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
293
+ GPR_ASSERT(!error.ok());
295
294
  if (sock != INVALID_SOCKET) closesocket(sock);
296
295
  return error;
297
296
  }
@@ -315,9 +314,9 @@ static void on_accept(void* arg, grpc_error_handle error) {
315
314
  /* The general mechanism for shutting down is to queue abortion calls. While
316
315
  this is necessary in the read/write case, it's useless for the accept
317
316
  case. We only need to adjust the pending callback count */
318
- if (!GRPC_ERROR_IS_NONE(error)) {
317
+ if (!error.ok()) {
319
318
  gpr_log(GPR_INFO, "Skipping on_accept due to error: %s",
320
- grpc_error_std_string(error).c_str());
319
+ grpc_core::StatusToString(error).c_str());
321
320
 
322
321
  gpr_mu_unlock(&sp->server->mu);
323
322
  return;
@@ -401,7 +400,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
401
400
  GUID guid = WSAID_ACCEPTEX;
402
401
  DWORD ioctl_num_bytes;
403
402
  LPFN_ACCEPTEX AcceptEx;
404
- grpc_error_handle error = GRPC_ERROR_NONE;
403
+ grpc_error_handle error;
405
404
 
406
405
  /* We need to grab the AcceptEx pointer for that port, as it may be
407
406
  interface-dependent. We'll cache it to avoid doing that again. */
@@ -414,11 +413,11 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
414
413
  gpr_log(GPR_ERROR, "on_connect error: %s", utf8_message);
415
414
  gpr_free(utf8_message);
416
415
  closesocket(sock);
417
- return GRPC_ERROR_NONE;
416
+ return absl::OkStatus();
418
417
  }
419
418
 
420
419
  error = prepare_socket(sock, addr, &port);
421
- if (!GRPC_ERROR_IS_NONE(error)) {
420
+ if (!error.ok()) {
422
421
  return error;
423
422
  }
424
423
 
@@ -446,7 +445,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
446
445
  gpr_mu_unlock(&s->mu);
447
446
  *listener = sp;
448
447
 
449
- return GRPC_ERROR_NONE;
448
+ return absl::OkStatus();
450
449
  }
451
450
 
452
451
  static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
@@ -459,7 +458,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
459
458
  grpc_resolved_address* allocated_addr = NULL;
460
459
  grpc_resolved_address sockname_temp;
461
460
  unsigned port_index = 0;
462
- grpc_error_handle error = GRPC_ERROR_NONE;
461
+ grpc_error_handle error;
463
462
 
464
463
  if (s->tail != NULL) {
465
464
  port_index = s->tail->port_index + 1;
@@ -510,11 +509,9 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
510
509
  done:
511
510
  gpr_free(allocated_addr);
512
511
 
513
- if (!GRPC_ERROR_IS_NONE(error)) {
514
- grpc_error_handle error_out =
515
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
516
- "Failed to add port to server", &error, 1);
517
- GRPC_ERROR_UNREF(error);
512
+ if (!error.ok()) {
513
+ grpc_error_handle error_out = GRPC_ERROR_CREATE_REFERENCING(
514
+ "Failed to add port to server", &error, 1);
518
515
  error = error_out;
519
516
  *port = -1;
520
517
  } else {