grpc 1.50.0.pre1 → 1.52.0.pre2

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 (1009) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +206 -49
  3. data/include/grpc/byte_buffer.h +76 -1
  4. data/include/grpc/byte_buffer_reader.h +19 -1
  5. data/include/grpc/compression.h +2 -2
  6. data/include/grpc/event_engine/event_engine.h +27 -6
  7. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
  8. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  9. data/include/grpc/event_engine/memory_allocator.h +1 -1
  10. data/include/grpc/event_engine/slice.h +24 -4
  11. data/include/grpc/event_engine/slice_buffer.h +31 -2
  12. data/include/grpc/fork.h +25 -1
  13. data/include/grpc/grpc.h +3 -13
  14. data/include/grpc/grpc_posix.h +1 -1
  15. data/include/grpc/impl/codegen/atm.h +3 -71
  16. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
  17. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
  18. data/include/grpc/impl/codegen/atm_windows.h +3 -106
  19. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  20. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  21. data/include/grpc/impl/codegen/compression_types.h +3 -82
  22. data/include/grpc/impl/codegen/connectivity_state.h +3 -20
  23. data/include/grpc/impl/codegen/fork.h +4 -25
  24. data/include/grpc/impl/codegen/gpr_types.h +2 -34
  25. data/include/grpc/impl/codegen/grpc_types.h +3 -791
  26. data/include/grpc/impl/codegen/log.h +3 -86
  27. data/include/grpc/impl/codegen/port_platform.h +3 -758
  28. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  29. data/include/grpc/impl/codegen/slice.h +3 -106
  30. data/include/grpc/impl/codegen/status.h +4 -131
  31. data/include/grpc/impl/codegen/sync.h +3 -42
  32. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  33. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  34. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  35. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  36. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  37. data/include/grpc/impl/compression_types.h +109 -0
  38. data/include/grpc/impl/connectivity_state.h +47 -0
  39. data/include/grpc/impl/grpc_types.h +824 -0
  40. data/include/grpc/impl/propagation_bits.h +54 -0
  41. data/include/grpc/impl/slice_type.h +112 -0
  42. data/include/grpc/load_reporting.h +1 -1
  43. data/include/grpc/module.modulemap +5 -1
  44. data/include/grpc/slice.h +1 -1
  45. data/include/grpc/status.h +131 -1
  46. data/include/grpc/support/atm.h +70 -1
  47. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  48. data/include/grpc/support/atm_gcc_sync.h +58 -1
  49. data/include/grpc/support/atm_windows.h +105 -1
  50. data/include/grpc/support/log.h +87 -1
  51. data/include/grpc/support/log_windows.h +1 -1
  52. data/include/grpc/support/port_platform.h +767 -1
  53. data/include/grpc/support/string_util.h +1 -1
  54. data/include/grpc/support/sync.h +35 -2
  55. data/include/grpc/support/sync_abseil.h +11 -1
  56. data/include/grpc/support/sync_custom.h +13 -1
  57. data/include/grpc/support/sync_generic.h +24 -1
  58. data/include/grpc/support/sync_posix.h +27 -1
  59. data/include/grpc/support/sync_windows.h +15 -1
  60. data/include/grpc/support/time.h +25 -2
  61. data/src/core/ext/filters/census/grpc_context.cc +17 -18
  62. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +28 -22
  63. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -1
  64. data/src/core/ext/filters/channel_idle/idle_filter_state.h +1 -1
  65. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  66. data/src/core/ext/filters/client_channel/backup_poller.cc +24 -24
  67. data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
  68. data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
  69. data/src/core/ext/filters/client_channel/client_channel.cc +157 -168
  70. data/src/core/ext/filters/client_channel/client_channel.h +10 -10
  71. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -19
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.h +19 -19
  73. data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
  74. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -18
  75. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  76. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  77. data/src/core/ext/filters/client_channel/config_selector.h +16 -20
  78. data/src/core/ext/filters/client_channel/connector.h +1 -1
  79. data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
  80. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  81. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +18 -18
  82. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -5
  83. data/src/core/ext/filters/client_channel/http_proxy.cc +39 -40
  84. data/src/core/ext/filters/client_channel/http_proxy.h +18 -18
  85. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  86. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  87. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +17 -17
  88. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +7 -2
  89. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -2
  90. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +59 -130
  91. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +37 -21
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +131 -154
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +24 -25
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +2 -4
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +18 -19
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +18 -19
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +18 -19
  100. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +8 -9
  101. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  102. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +212 -223
  103. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  104. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +11 -22
  105. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +73 -101
  106. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +20 -21
  107. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +1 -1
  108. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +119 -106
  109. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +12 -12
  110. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +30 -16
  111. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -56
  112. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +60 -64
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +22 -28
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +62 -94
  117. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +70 -146
  118. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
  119. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
  120. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  121. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +18 -18
  122. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -10
  123. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +26 -35
  124. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +40 -41
  125. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
  126. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -82
  127. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +117 -118
  128. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +51 -52
  129. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
  131. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +18 -19
  132. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -5
  133. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  134. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  135. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -27
  136. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -34
  137. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
  138. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  139. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +122 -119
  140. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
  141. data/src/core/ext/filters/client_channel/retry_filter.cc +81 -103
  142. data/src/core/ext/filters/client_channel/retry_service_config.cc +193 -235
  143. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  144. data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
  145. data/src/core/ext/filters/client_channel/retry_throttle.h +26 -25
  146. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +3 -3
  147. data/src/core/ext/filters/client_channel/subchannel.cc +158 -178
  148. data/src/core/ext/filters/client_channel/subchannel.h +17 -40
  149. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
  150. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  151. data/src/core/ext/filters/deadline/deadline_filter.cc +34 -17
  152. data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
  153. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -2
  154. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  155. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  156. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  157. data/src/core/ext/filters/http/client/http_client_filter.cc +36 -37
  158. data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
  159. data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
  160. data/src/core/ext/filters/http/client_authority_filter.h +18 -18
  161. data/src/core/ext/filters/http/http_filters_plugin.cc +35 -51
  162. data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
  163. data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
  164. data/src/core/ext/filters/http/server/http_server_filter.cc +44 -43
  165. data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
  166. data/src/core/ext/filters/message_size/message_size_filter.cc +92 -123
  167. data/src/core/ext/filters/message_size/message_size_filter.h +23 -16
  168. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  169. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  170. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  171. data/src/core/ext/filters/server_config_selector/server_config_selector.h +6 -8
  172. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +7 -9
  173. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
  174. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  175. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  176. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  177. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  178. data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
  179. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +69 -63
  180. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
  181. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +81 -97
  182. data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
  183. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
  184. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +30 -30
  185. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +29 -29
  186. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
  187. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +273 -283
  188. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +18 -19
  189. data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
  190. data/src/core/ext/transport/chttp2/transport/context_list.h +25 -25
  191. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
  192. data/src/core/ext/transport/chttp2/transport/decode_huff.h +35 -82
  193. data/src/core/ext/transport/chttp2/transport/flow_control.cc +112 -44
  194. data/src/core/ext/transport/chttp2/transport/flow_control.h +60 -34
  195. data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
  196. data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -32
  197. data/src/core/ext/transport/chttp2/transport/frame_data.h +23 -23
  198. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +36 -36
  199. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
  200. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +25 -24
  201. data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
  202. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +28 -25
  203. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
  204. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +34 -36
  205. data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
  206. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +22 -21
  207. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
  208. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +133 -181
  209. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +40 -59
  210. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  211. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +93 -143
  212. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
  213. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +26 -26
  214. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -18
  215. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  216. data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -34
  217. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  218. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  219. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  220. data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
  221. data/src/core/ext/transport/chttp2/transport/internal.h +193 -170
  222. data/src/core/ext/transport/chttp2/transport/parsing.cc +147 -80
  223. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
  224. data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
  225. data/src/core/ext/transport/chttp2/transport/stream_map.h +31 -31
  226. data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
  227. data/src/core/ext/transport/chttp2/transport/varint.h +35 -32
  228. data/src/core/ext/transport/chttp2/transport/writing.cc +60 -56
  229. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
  230. data/src/core/ext/transport/inproc/inproc_transport.cc +122 -140
  231. data/src/core/ext/transport/inproc/inproc_transport.h +19 -19
  232. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  233. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  234. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  235. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  236. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  237. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  238. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
  239. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +9 -0
  240. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -1
  241. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  242. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  243. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  244. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  245. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  246. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  247. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  248. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  249. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  250. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  251. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  252. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  253. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  254. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  255. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -1
  256. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  257. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  258. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  259. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  260. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  261. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  262. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  263. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  264. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  265. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  266. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  267. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  268. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  269. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  270. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
  271. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  272. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  273. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  274. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  275. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  276. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  277. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
  278. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  279. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  280. data/src/core/ext/xds/xds_api.cc +20 -95
  281. data/src/core/ext/xds/xds_api.h +5 -8
  282. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  283. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  284. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  285. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  286. data/src/core/ext/xds/xds_certificate_provider.h +1 -1
  287. data/src/core/ext/xds/xds_channel_args.h +1 -1
  288. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  289. data/src/core/ext/xds/xds_channel_stack_modifier.h +2 -2
  290. data/src/core/ext/xds/xds_client.cc +134 -94
  291. data/src/core/ext/xds/xds_client.h +13 -5
  292. data/src/core/ext/xds/xds_client_grpc.cc +31 -24
  293. data/src/core/ext/xds/xds_client_grpc.h +1 -1
  294. data/src/core/ext/xds/xds_client_stats.cc +17 -17
  295. data/src/core/ext/xds/xds_client_stats.h +18 -18
  296. data/src/core/ext/xds/xds_cluster.cc +359 -203
  297. data/src/core/ext/xds/xds_cluster.h +52 -35
  298. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +54 -71
  299. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +45 -21
  300. data/src/core/ext/xds/xds_common_types.cc +209 -141
  301. data/src/core/ext/xds/xds_common_types.h +19 -13
  302. data/src/core/ext/xds/xds_endpoint.cc +221 -130
  303. data/src/core/ext/xds/xds_endpoint.h +4 -7
  304. data/src/core/ext/xds/xds_health_status.cc +80 -0
  305. data/src/core/ext/xds/xds_health_status.h +82 -0
  306. data/src/core/ext/xds/xds_http_fault_filter.cc +57 -43
  307. data/src/core/ext/xds/xds_http_fault_filter.h +14 -22
  308. data/src/core/ext/xds/xds_http_filters.cc +65 -73
  309. data/src/core/ext/xds/xds_http_filters.h +68 -20
  310. data/src/core/ext/xds/xds_http_rbac_filter.cc +153 -207
  311. data/src/core/ext/xds/xds_http_rbac_filter.h +13 -16
  312. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  313. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  314. data/src/core/ext/xds/xds_lb_policy_registry.cc +120 -171
  315. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  316. data/src/core/ext/xds/xds_listener.cc +447 -419
  317. data/src/core/ext/xds/xds_listener.h +45 -47
  318. data/src/core/ext/xds/xds_resource_type.h +3 -11
  319. data/src/core/ext/xds/xds_resource_type_impl.h +10 -13
  320. data/src/core/ext/xds/xds_route_config.cc +514 -528
  321. data/src/core/ext/xds/xds_route_config.h +39 -28
  322. data/src/core/ext/xds/xds_routing.cc +2 -1
  323. data/src/core/ext/xds/xds_routing.h +2 -0
  324. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -106
  325. data/src/core/ext/xds/xds_transport_grpc.cc +6 -7
  326. data/src/core/ext/xds/xds_transport_grpc.h +1 -1
  327. data/src/core/lib/address_utils/parse_address.cc +30 -29
  328. data/src/core/lib/address_utils/parse_address.h +32 -32
  329. data/src/core/lib/address_utils/sockaddr_utils.cc +29 -28
  330. data/src/core/lib/address_utils/sockaddr_utils.h +33 -33
  331. data/src/core/lib/avl/avl.h +4 -4
  332. data/src/core/lib/backoff/backoff.cc +17 -17
  333. data/src/core/lib/backoff/backoff.h +18 -18
  334. data/src/core/lib/channel/call_tracer.h +10 -1
  335. data/src/core/lib/channel/channel_args.cc +19 -20
  336. data/src/core/lib/channel/channel_args.h +59 -43
  337. data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
  338. data/src/core/lib/channel/channel_stack.cc +62 -58
  339. data/src/core/lib/channel/channel_stack.h +144 -131
  340. data/src/core/lib/channel/channel_stack_builder.cc +21 -24
  341. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  342. data/src/core/lib/channel/channel_stack_builder_impl.cc +43 -25
  343. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  344. data/src/core/lib/channel/channel_trace.cc +21 -22
  345. data/src/core/lib/channel/channel_trace.h +19 -19
  346. data/src/core/lib/channel/channelz.cc +18 -19
  347. data/src/core/lib/channel/channelz.h +26 -26
  348. data/src/core/lib/channel/channelz_registry.cc +17 -17
  349. data/src/core/lib/channel/channelz_registry.h +18 -18
  350. data/src/core/lib/channel/connected_channel.cc +732 -63
  351. data/src/core/lib/channel/connected_channel.h +18 -22
  352. data/src/core/lib/channel/context.h +18 -18
  353. data/src/core/lib/channel/promise_based_filter.cc +1137 -150
  354. data/src/core/lib/channel/promise_based_filter.h +374 -88
  355. data/src/core/lib/channel/status_util.cc +35 -17
  356. data/src/core/lib/channel/status_util.h +26 -19
  357. data/src/core/lib/compression/compression.cc +19 -19
  358. data/src/core/lib/compression/compression_internal.cc +41 -48
  359. data/src/core/lib/compression/compression_internal.h +22 -22
  360. data/src/core/lib/compression/message_compress.cc +26 -26
  361. data/src/core/lib/compression/message_compress.h +25 -25
  362. data/src/core/lib/config/core_configuration.h +1 -1
  363. data/src/core/lib/debug/event_log.cc +88 -0
  364. data/src/core/lib/debug/event_log.h +81 -0
  365. data/src/core/lib/debug/histogram_view.cc +69 -0
  366. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  367. data/src/core/lib/debug/stats.cc +39 -136
  368. data/src/core/lib/debug/stats.h +46 -52
  369. data/src/core/lib/debug/stats_data.cc +224 -73
  370. data/src/core/lib/debug/stats_data.h +263 -122
  371. data/src/core/lib/debug/trace.cc +18 -18
  372. data/src/core/lib/debug/trace.h +19 -19
  373. data/src/core/lib/event_engine/common_closures.h +71 -0
  374. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  375. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  376. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  377. data/src/core/lib/event_engine/executor/executor.h +1 -1
  378. data/src/core/lib/event_engine/forkable.h +1 -1
  379. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  380. data/src/core/lib/event_engine/poller.h +10 -4
  381. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +614 -0
  382. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  383. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +900 -0
  384. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  385. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  386. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  387. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +11 -14
  388. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  389. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  390. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  391. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  392. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1308 -0
  393. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +684 -0
  394. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +456 -28
  395. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  396. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  397. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
  398. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
  399. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
  400. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  401. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  402. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  403. data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
  404. data/src/core/lib/event_engine/posix_engine/timer.h +87 -86
  405. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
  406. data/src/core/lib/event_engine/posix_engine/timer_heap.h +21 -21
  407. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +76 -214
  408. data/src/core/lib/event_engine/posix_engine/timer_manager.h +41 -69
  409. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  410. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  411. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  412. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  413. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  414. data/src/core/lib/event_engine/{executor/threaded_executor.h → posix_engine/wakeup_fd_pipe.h} +16 -15
  415. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  416. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  417. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  418. data/src/core/lib/event_engine/slice.cc +7 -6
  419. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  420. data/src/core/lib/event_engine/socket_notifier.h +1 -1
  421. data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
  422. data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
  423. data/src/core/lib/event_engine/thread_pool.cc +125 -43
  424. data/src/core/lib/event_engine/thread_pool.h +49 -26
  425. data/src/core/lib/event_engine/time_util.h +1 -1
  426. data/src/core/lib/event_engine/windows/iocp.cc +13 -12
  427. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  428. data/src/core/lib/event_engine/windows/win_socket.cc +9 -9
  429. data/src/core/lib/event_engine/windows/windows_engine.cc +26 -20
  430. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  431. data/src/core/lib/experiments/config.cc +1 -1
  432. data/src/core/lib/experiments/experiments.cc +13 -13
  433. data/src/core/lib/experiments/experiments.h +8 -6
  434. data/src/core/lib/gpr/alloc.cc +19 -17
  435. data/src/core/lib/gpr/alloc.h +18 -18
  436. data/src/core/lib/gpr/atm.cc +17 -17
  437. data/src/core/lib/gpr/cpu_iphone.cc +24 -24
  438. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  439. data/src/core/lib/gpr/cpu_posix.cc +23 -22
  440. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  441. data/src/core/lib/gpr/log.cc +27 -19
  442. data/src/core/lib/gpr/log_android.cc +22 -20
  443. data/src/core/lib/gpr/log_linux.cc +24 -24
  444. data/src/core/lib/gpr/log_posix.cc +20 -19
  445. data/src/core/lib/gpr/log_windows.cc +25 -24
  446. data/src/core/lib/gpr/spinlock.h +18 -18
  447. data/src/core/lib/gpr/string.cc +25 -24
  448. data/src/core/lib/gpr/string.h +58 -58
  449. data/src/core/lib/gpr/string_posix.cc +24 -24
  450. data/src/core/lib/gpr/string_util_windows.cc +22 -22
  451. data/src/core/lib/gpr/string_windows.cc +24 -24
  452. data/src/core/lib/gpr/sync.cc +25 -25
  453. data/src/core/lib/gpr/sync_abseil.cc +22 -20
  454. data/src/core/lib/gpr/sync_posix.cc +23 -21
  455. data/src/core/lib/gpr/sync_windows.cc +29 -27
  456. data/src/core/lib/gpr/time.cc +23 -21
  457. data/src/core/lib/gpr/time_posix.cc +35 -30
  458. data/src/core/lib/gpr/time_precise.cc +22 -22
  459. data/src/core/lib/gpr/time_precise.h +18 -19
  460. data/src/core/lib/gpr/time_windows.cc +25 -22
  461. data/src/core/lib/gpr/tmpfile.h +22 -22
  462. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  463. data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
  464. data/src/core/lib/gpr/tmpfile_windows.cc +23 -22
  465. data/src/core/lib/gpr/useful.h +40 -27
  466. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  467. data/src/core/lib/gprpp/atomic_utils.h +18 -18
  468. data/src/core/lib/gprpp/bitset.h +24 -0
  469. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
  470. data/src/core/lib/gprpp/crash.h +34 -0
  471. data/src/core/lib/gprpp/debug_location.h +18 -18
  472. data/src/core/lib/gprpp/dual_ref_counted.h +1 -1
  473. data/src/core/lib/gprpp/env.h +20 -20
  474. data/src/core/lib/gprpp/env_linux.cc +21 -21
  475. data/src/core/lib/gprpp/env_posix.cc +18 -18
  476. data/src/core/lib/gprpp/env_windows.cc +18 -18
  477. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  478. data/src/core/lib/gprpp/examine_stack.h +18 -18
  479. data/src/core/lib/gprpp/fork.cc +21 -22
  480. data/src/core/lib/gprpp/fork.h +22 -22
  481. data/src/core/lib/gprpp/global_config.h +18 -18
  482. data/src/core/lib/gprpp/global_config_custom.h +18 -18
  483. data/src/core/lib/gprpp/global_config_env.cc +17 -17
  484. data/src/core/lib/gprpp/global_config_env.h +23 -23
  485. data/src/core/lib/gprpp/global_config_generic.h +18 -18
  486. data/src/core/lib/gprpp/host_port.cc +26 -26
  487. data/src/core/lib/gprpp/host_port.h +29 -28
  488. data/src/core/lib/gprpp/load_file.cc +75 -0
  489. data/src/core/lib/gprpp/load_file.h +33 -0
  490. data/src/core/lib/gprpp/manual_constructor.h +18 -17
  491. data/src/core/lib/gprpp/memory.h +18 -18
  492. data/src/core/lib/gprpp/mpscq.cc +17 -17
  493. data/src/core/lib/gprpp/mpscq.h +18 -18
  494. data/src/core/lib/gprpp/no_destruct.h +1 -0
  495. data/src/core/lib/gprpp/orphanable.h +18 -18
  496. data/src/core/lib/gprpp/per_cpu.h +46 -0
  497. data/src/core/lib/gprpp/ref_counted.h +18 -18
  498. data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
  499. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  500. data/src/core/lib/gprpp/stat_windows.cc +4 -2
  501. data/src/core/lib/gprpp/status_helper.cc +4 -3
  502. data/src/core/lib/gprpp/status_helper.h +1 -3
  503. data/src/core/lib/gprpp/strerror.cc +41 -0
  504. data/src/core/lib/gprpp/strerror.h +29 -0
  505. data/src/core/lib/gprpp/sync.h +20 -20
  506. data/src/core/lib/gprpp/table.h +1 -0
  507. data/src/core/lib/gprpp/thd.h +19 -19
  508. data/src/core/lib/gprpp/thd_posix.cc +30 -31
  509. data/src/core/lib/gprpp/thd_windows.cc +26 -26
  510. data/src/core/lib/gprpp/time.cc +16 -11
  511. data/src/core/lib/gprpp/time.h +13 -3
  512. data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
  513. data/src/core/lib/gprpp/time_averaged_stats.h +48 -48
  514. data/src/core/lib/gprpp/time_util.h +1 -1
  515. data/src/core/lib/gprpp/unique_type_name.h +18 -18
  516. data/src/core/lib/gprpp/validation_errors.h +18 -1
  517. data/src/core/lib/handshaker/proxy_mapper.h +18 -18
  518. data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
  519. data/src/core/lib/handshaker/proxy_mapper_registry.h +18 -18
  520. data/src/core/lib/http/format_request.cc +18 -18
  521. data/src/core/lib/http/format_request.h +18 -18
  522. data/src/core/lib/http/httpcli.cc +57 -61
  523. data/src/core/lib/http/httpcli.h +26 -26
  524. data/src/core/lib/http/httpcli_security_connector.cc +22 -25
  525. data/src/core/lib/http/parser.cc +76 -87
  526. data/src/core/lib/http/parser.h +32 -32
  527. data/src/core/lib/iomgr/block_annotate.h +21 -21
  528. data/src/core/lib/iomgr/buffer_list.cc +156 -136
  529. data/src/core/lib/iomgr/buffer_list.h +120 -98
  530. data/src/core/lib/iomgr/call_combiner.cc +29 -27
  531. data/src/core/lib/iomgr/call_combiner.h +21 -22
  532. data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
  533. data/src/core/lib/iomgr/cfstream_handle.h +22 -22
  534. data/src/core/lib/iomgr/closure.h +90 -45
  535. data/src/core/lib/iomgr/combiner.cc +20 -19
  536. data/src/core/lib/iomgr/combiner.h +18 -18
  537. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  538. data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
  539. data/src/core/lib/iomgr/endpoint.cc +17 -17
  540. data/src/core/lib/iomgr/endpoint.h +46 -46
  541. data/src/core/lib/iomgr/endpoint_cfstream.cc +44 -43
  542. data/src/core/lib/iomgr/endpoint_cfstream.h +27 -27
  543. data/src/core/lib/iomgr/endpoint_pair.h +18 -18
  544. data/src/core/lib/iomgr/endpoint_pair_posix.cc +20 -19
  545. data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
  546. data/src/core/lib/iomgr/error.cc +49 -61
  547. data/src/core/lib/iomgr/error.h +42 -173
  548. data/src/core/lib/iomgr/error_cfstream.cc +18 -18
  549. data/src/core/lib/iomgr/error_cfstream.h +19 -19
  550. data/src/core/lib/iomgr/ev_apple.cc +21 -21
  551. data/src/core/lib/iomgr/ev_apple.h +17 -17
  552. data/src/core/lib/iomgr/ev_epoll1_linux.cc +208 -195
  553. data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
  554. data/src/core/lib/iomgr/ev_poll_posix.cc +212 -205
  555. data/src/core/lib/iomgr/ev_poll_posix.h +18 -18
  556. data/src/core/lib/iomgr/ev_posix.cc +36 -28
  557. data/src/core/lib/iomgr/ev_posix.h +85 -81
  558. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  559. data/src/core/lib/iomgr/exec_ctx.cc +34 -34
  560. data/src/core/lib/iomgr/exec_ctx.h +141 -141
  561. data/src/core/lib/iomgr/executor.cc +21 -21
  562. data/src/core/lib/iomgr/executor.h +24 -24
  563. data/src/core/lib/iomgr/fork_posix.cc +24 -22
  564. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  565. data/src/core/lib/iomgr/gethostname.h +18 -18
  566. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  567. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  568. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  569. data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
  570. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  571. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  572. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  573. data/src/core/lib/iomgr/internal_errqueue.h +80 -80
  574. data/src/core/lib/iomgr/iocp_windows.cc +22 -21
  575. data/src/core/lib/iomgr/iocp_windows.h +18 -18
  576. data/src/core/lib/iomgr/iomgr.cc +19 -18
  577. data/src/core/lib/iomgr/iomgr.h +32 -32
  578. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  579. data/src/core/lib/iomgr/iomgr_internal.h +25 -25
  580. data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
  581. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +20 -19
  582. data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
  583. data/src/core/lib/iomgr/load_file.cc +24 -27
  584. data/src/core/lib/iomgr/load_file.h +20 -20
  585. data/src/core/lib/iomgr/lockfree_event.cc +114 -114
  586. data/src/core/lib/iomgr/lockfree_event.h +19 -19
  587. data/src/core/lib/iomgr/nameser.h +84 -84
  588. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  589. data/src/core/lib/iomgr/polling_entity.h +27 -27
  590. data/src/core/lib/iomgr/pollset.cc +17 -17
  591. data/src/core/lib/iomgr/pollset.h +51 -51
  592. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  593. data/src/core/lib/iomgr/pollset_set.h +22 -22
  594. data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
  595. data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
  596. data/src/core/lib/iomgr/pollset_windows.cc +30 -29
  597. data/src/core/lib/iomgr/pollset_windows.h +22 -22
  598. data/src/core/lib/iomgr/port.h +29 -29
  599. data/src/core/lib/iomgr/python_util.h +20 -20
  600. data/src/core/lib/iomgr/resolve_address.cc +26 -20
  601. data/src/core/lib/iomgr/resolve_address.h +21 -22
  602. data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
  603. data/src/core/lib/iomgr/resolve_address_posix.cc +35 -45
  604. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  605. data/src/core/lib/iomgr/resolve_address_windows.cc +18 -20
  606. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  607. data/src/core/lib/iomgr/resolved_address.h +1 -1
  608. data/src/core/lib/iomgr/sockaddr.h +21 -21
  609. data/src/core/lib/iomgr/sockaddr_posix.h +18 -18
  610. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
  611. data/src/core/lib/iomgr/sockaddr_windows.h +18 -18
  612. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  613. data/src/core/lib/iomgr/socket_factory_posix.h +30 -30
  614. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  615. data/src/core/lib/iomgr/socket_mutator.h +37 -37
  616. data/src/core/lib/iomgr/socket_utils.h +24 -24
  617. data/src/core/lib/iomgr/socket_utils_common_posix.cc +68 -66
  618. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  619. data/src/core/lib/iomgr/socket_utils_posix.cc +22 -20
  620. data/src/core/lib/iomgr/socket_utils_posix.h +78 -78
  621. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  622. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  623. data/src/core/lib/iomgr/socket_windows.h +56 -56
  624. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  625. data/src/core/lib/{slice/slice_buffer_api.cc → iomgr/systemd_utils.h} +12 -14
  626. data/src/core/lib/iomgr/tcp_client.cc +17 -17
  627. data/src/core/lib/iomgr/tcp_client.h +26 -26
  628. data/src/core/lib/iomgr/tcp_client_cfstream.cc +25 -28
  629. data/src/core/lib/iomgr/tcp_client_posix.cc +70 -73
  630. data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
  631. data/src/core/lib/iomgr/tcp_client_windows.cc +36 -39
  632. data/src/core/lib/iomgr/tcp_posix.cc +223 -237
  633. data/src/core/lib/iomgr/tcp_posix.h +27 -27
  634. data/src/core/lib/iomgr/tcp_server.cc +30 -22
  635. data/src/core/lib/iomgr/tcp_server.h +68 -62
  636. data/src/core/lib/iomgr/tcp_server_posix.cc +124 -94
  637. data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
  638. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +90 -55
  639. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
  640. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
  641. data/src/core/lib/iomgr/tcp_server_windows.cc +97 -104
  642. data/src/core/lib/iomgr/tcp_windows.cc +109 -93
  643. data/src/core/lib/iomgr/tcp_windows.h +29 -29
  644. data/src/core/lib/iomgr/timer.cc +17 -17
  645. data/src/core/lib/iomgr/timer.h +65 -65
  646. data/src/core/lib/iomgr/timer_generic.cc +115 -122
  647. data/src/core/lib/iomgr/timer_generic.h +19 -19
  648. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  649. data/src/core/lib/iomgr/timer_heap.h +19 -19
  650. data/src/core/lib/iomgr/timer_manager.cc +30 -29
  651. data/src/core/lib/iomgr/timer_manager.h +25 -25
  652. data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
  653. data/src/core/lib/iomgr/unix_sockets_posix.h +18 -18
  654. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
  655. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -21
  656. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  657. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
  658. data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
  659. data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
  660. data/src/core/lib/iomgr/wakeup_fd_posix.h +50 -50
  661. data/src/core/lib/json/json_channel_args.h +42 -0
  662. data/src/core/lib/json/json_object_loader.cc +17 -2
  663. data/src/core/lib/json/json_object_loader.h +37 -1
  664. data/src/core/lib/json/json_reader.cc +28 -28
  665. data/src/core/lib/json/json_util.cc +5 -5
  666. data/src/core/lib/json/json_util.h +4 -4
  667. data/src/core/lib/json/json_writer.cc +56 -56
  668. data/src/core/lib/load_balancing/lb_policy.cc +18 -18
  669. data/src/core/lib/load_balancing/lb_policy.h +7 -4
  670. data/src/core/lib/load_balancing/subchannel_interface.h +1 -8
  671. data/src/core/lib/matchers/matchers.cc +6 -5
  672. data/src/core/lib/matchers/matchers.h +1 -1
  673. data/src/core/lib/promise/activity.cc +16 -2
  674. data/src/core/lib/promise/activity.h +58 -27
  675. data/src/core/lib/promise/arena_promise.h +82 -52
  676. data/src/core/lib/promise/context.h +14 -6
  677. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  678. data/src/core/lib/promise/detail/promise_factory.h +59 -10
  679. data/src/core/lib/promise/detail/status.h +28 -0
  680. data/src/core/lib/promise/detail/switch.h +1455 -0
  681. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +20 -12
  682. data/src/core/lib/promise/for_each.h +155 -0
  683. data/src/core/lib/promise/latch.h +13 -19
  684. data/src/core/lib/promise/loop.h +7 -5
  685. data/src/core/lib/promise/map.h +1 -0
  686. data/src/core/lib/promise/map_pipe.h +88 -0
  687. data/src/core/lib/promise/pipe.cc +19 -0
  688. data/src/core/lib/promise/pipe.h +505 -0
  689. data/src/core/lib/promise/poll.h +19 -0
  690. data/src/core/lib/promise/seq.h +4 -5
  691. data/src/core/lib/promise/sleep.cc +5 -4
  692. data/src/core/lib/promise/sleep.h +1 -2
  693. data/src/core/lib/promise/try_concurrently.h +342 -0
  694. data/src/core/lib/promise/try_seq.h +11 -13
  695. data/src/core/lib/resolver/resolver.cc +17 -17
  696. data/src/core/lib/resolver/server_address.cc +18 -17
  697. data/src/core/lib/resolver/server_address.h +19 -21
  698. data/src/core/lib/resource_quota/api.cc +0 -1
  699. data/src/core/lib/resource_quota/api.h +1 -1
  700. data/src/core/lib/resource_quota/arena.cc +36 -17
  701. data/src/core/lib/resource_quota/arena.h +107 -18
  702. data/src/core/lib/resource_quota/memory_quota.cc +140 -43
  703. data/src/core/lib/resource_quota/memory_quota.h +85 -23
  704. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  705. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  706. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
  707. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  708. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  709. data/src/core/lib/security/authorization/matchers.cc +25 -22
  710. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  711. data/src/core/lib/security/authorization/rbac_policy.h +1 -1
  712. data/src/core/lib/security/context/security_context.cc +22 -23
  713. data/src/core/lib/security/context/security_context.h +40 -30
  714. data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
  715. data/src/core/lib/security/credentials/alts/alts_credentials.h +50 -50
  716. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  717. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
  718. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  719. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  720. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  721. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
  722. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  723. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
  724. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
  725. data/src/core/lib/security/credentials/call_creds_util.h +1 -1
  726. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  727. data/src/core/lib/security/credentials/composite/composite_credentials.cc +22 -22
  728. data/src/core/lib/security/credentials/composite/composite_credentials.h +20 -21
  729. data/src/core/lib/security/credentials/credentials.cc +19 -18
  730. data/src/core/lib/security/credentials/credentials.h +34 -33
  731. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  732. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  733. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  734. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  735. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  736. data/src/core/lib/security/credentials/fake/fake_credentials.cc +20 -19
  737. data/src/core/lib/security/credentials/fake/fake_credentials.h +34 -35
  738. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
  739. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +75 -73
  740. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
  741. data/src/core/lib/security/credentials/iam/iam_credentials.cc +18 -17
  742. data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
  743. data/src/core/lib/security/credentials/jwt/json_token.cc +24 -25
  744. data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
  745. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +18 -18
  746. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
  747. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +75 -75
  748. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +43 -43
  749. data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
  750. data/src/core/lib/security/credentials/local/local_credentials.h +20 -20
  751. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +52 -59
  752. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
  753. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -23
  754. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +22 -22
  755. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
  756. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +18 -18
  757. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
  758. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  759. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +30 -43
  760. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  761. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
  762. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
  763. data/src/core/lib/security/credentials/tls/tls_credentials.h +18 -18
  764. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
  765. data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
  766. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +32 -38
  767. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +41 -42
  768. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +32 -41
  769. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +20 -21
  770. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  771. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -8
  772. data/src/core/lib/security/security_connector/load_system_roots.h +18 -18
  773. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
  774. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +19 -22
  775. data/src/core/lib/security/security_connector/load_system_roots_supported.h +19 -20
  776. data/src/core/lib/security/security_connector/local/local_security_connector.cc +30 -34
  777. data/src/core/lib/security/security_connector/local/local_security_connector.h +40 -41
  778. data/src/core/lib/security/security_connector/security_connector.cc +17 -17
  779. data/src/core/lib/security/security_connector/security_connector.h +32 -33
  780. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +34 -39
  781. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
  782. data/src/core/lib/security/security_connector/ssl_utils.cc +37 -39
  783. data/src/core/lib/security/security_connector/ssl_utils.h +31 -31
  784. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  785. data/src/core/lib/security/security_connector/ssl_utils_config.h +18 -19
  786. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -48
  787. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +17 -17
  788. data/src/core/lib/security/transport/auth_filters.h +18 -18
  789. data/src/core/lib/security/transport/client_auth_filter.cc +21 -21
  790. data/src/core/lib/security/transport/secure_endpoint.cc +54 -56
  791. data/src/core/lib/security/transport/secure_endpoint.h +22 -22
  792. data/src/core/lib/security/transport/security_handshaker.cc +70 -70
  793. data/src/core/lib/security/transport/security_handshaker.h +19 -19
  794. data/src/core/lib/security/transport/server_auth_filter.cc +43 -44
  795. data/src/core/lib/security/transport/tsi_error.cc +23 -20
  796. data/src/core/lib/security/transport/tsi_error.h +18 -18
  797. data/src/core/lib/security/util/json_util.cc +21 -22
  798. data/src/core/lib/security/util/json_util.h +18 -18
  799. data/src/core/lib/service_config/service_config.h +2 -2
  800. data/src/core/lib/service_config/service_config_call_data.h +7 -1
  801. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  802. data/src/core/lib/service_config/service_config_impl.h +14 -17
  803. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  804. data/src/core/lib/service_config/service_config_parser.h +14 -10
  805. data/src/core/lib/slice/b64.cc +26 -26
  806. data/src/core/lib/slice/b64.h +29 -29
  807. data/src/core/lib/slice/percent_encoding.cc +17 -17
  808. data/src/core/lib/slice/percent_encoding.h +24 -24
  809. data/src/core/lib/slice/slice.cc +44 -38
  810. data/src/core/lib/slice/slice.h +57 -11
  811. data/src/core/lib/slice/slice_buffer.cc +63 -59
  812. data/src/core/lib/slice/slice_buffer.h +27 -2
  813. data/src/core/lib/slice/slice_internal.h +31 -39
  814. data/src/core/lib/slice/slice_refcount.h +34 -19
  815. data/src/core/lib/slice/slice_string_helpers.cc +17 -17
  816. data/src/core/lib/slice/slice_string_helpers.h +19 -19
  817. data/src/core/lib/surface/api_trace.cc +17 -17
  818. data/src/core/lib/surface/api_trace.h +22 -22
  819. data/src/core/lib/surface/byte_buffer.cc +22 -23
  820. data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
  821. data/src/core/lib/surface/call.cc +1521 -335
  822. data/src/core/lib/surface/call.h +86 -39
  823. data/src/core/lib/surface/call_details.cc +20 -21
  824. data/src/core/lib/surface/call_log_batch.cc +18 -18
  825. data/src/core/lib/surface/call_test_only.h +30 -30
  826. data/src/core/lib/surface/call_trace.cc +113 -0
  827. data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/surface/call_trace.h} +10 -12
  828. data/src/core/lib/surface/channel.cc +62 -67
  829. data/src/core/lib/surface/channel.h +40 -32
  830. data/src/core/lib/surface/channel_init.cc +17 -17
  831. data/src/core/lib/surface/channel_init.h +18 -18
  832. data/src/core/lib/surface/channel_ping.cc +19 -19
  833. data/src/core/lib/surface/channel_stack_type.cc +21 -17
  834. data/src/core/lib/surface/channel_stack_type.h +20 -18
  835. data/src/core/lib/surface/completion_queue.cc +173 -191
  836. data/src/core/lib/surface/completion_queue.h +32 -32
  837. data/src/core/lib/surface/completion_queue_factory.cc +28 -28
  838. data/src/core/lib/surface/completion_queue_factory.h +20 -20
  839. data/src/core/lib/surface/event_string.cc +17 -17
  840. data/src/core/lib/surface/event_string.h +20 -20
  841. data/src/core/lib/surface/init.cc +29 -58
  842. data/src/core/lib/surface/init.h +18 -18
  843. data/src/core/lib/surface/init_internally.cc +1 -0
  844. data/src/core/lib/surface/init_internally.h +9 -0
  845. data/src/core/lib/surface/lame_client.cc +28 -26
  846. data/src/core/lib/surface/lame_client.h +19 -19
  847. data/src/core/lib/surface/metadata_array.cc +17 -18
  848. data/src/core/lib/surface/server.cc +61 -83
  849. data/src/core/lib/surface/server.h +5 -7
  850. data/src/core/lib/surface/validate_metadata.cc +28 -29
  851. data/src/core/lib/surface/validate_metadata.h +18 -18
  852. data/src/core/lib/surface/version.cc +21 -21
  853. data/src/core/lib/transport/bdp_estimator.cc +17 -17
  854. data/src/core/lib/transport/bdp_estimator.h +18 -19
  855. data/src/core/lib/transport/connectivity_state.cc +19 -19
  856. data/src/core/lib/transport/connectivity_state.h +19 -19
  857. data/src/core/lib/transport/error_utils.cc +51 -45
  858. data/src/core/lib/transport/error_utils.h +21 -21
  859. data/src/core/lib/transport/handshaker.cc +49 -46
  860. data/src/core/lib/transport/handshaker.h +43 -38
  861. data/src/core/lib/transport/handshaker_factory.h +44 -18
  862. data/src/core/lib/transport/handshaker_registry.cc +25 -19
  863. data/src/core/lib/transport/handshaker_registry.h +21 -22
  864. data/src/core/lib/transport/http2_errors.h +20 -20
  865. data/src/core/lib/transport/http_connect_handshaker.cc +40 -41
  866. data/src/core/lib/transport/http_connect_handshaker.h +18 -18
  867. data/src/core/lib/transport/metadata_batch.cc +4 -1
  868. data/src/core/lib/transport/metadata_batch.h +46 -20
  869. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  870. data/src/core/lib/transport/parsed_metadata.h +1 -0
  871. data/src/core/lib/transport/pid_controller.cc +20 -20
  872. data/src/core/lib/transport/pid_controller.h +24 -24
  873. data/src/core/lib/transport/status_conversion.cc +22 -22
  874. data/src/core/lib/transport/status_conversion.h +20 -20
  875. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  876. data/src/core/lib/transport/tcp_connect_handshaker.h +1 -1
  877. data/src/core/lib/transport/timeout_encoding.cc +22 -22
  878. data/src/core/lib/transport/timeout_encoding.h +18 -18
  879. data/src/core/lib/transport/transport.cc +88 -41
  880. data/src/core/lib/transport/transport.h +193 -195
  881. data/src/core/lib/transport/transport_impl.h +42 -42
  882. data/src/core/lib/transport/transport_op_string.cc +26 -25
  883. data/src/core/plugin_registry/grpc_plugin_registry.cc +25 -27
  884. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +7 -14
  885. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  886. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  887. data/src/core/tsi/alts/crypt/gsec.h +334 -334
  888. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  889. data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
  890. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  891. data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
  892. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
  893. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
  894. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  895. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
  896. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  897. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  898. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  899. data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
  900. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -77
  901. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +99 -99
  902. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
  903. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
  904. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +37 -36
  905. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +58 -58
  906. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +20 -20
  907. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
  908. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +36 -36
  909. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
  910. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +102 -101
  911. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
  912. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
  913. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  914. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
  915. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
  916. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
  917. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
  918. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  919. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
  920. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
  921. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
  922. data/src/core/tsi/fake_transport_security.cc +80 -79
  923. data/src/core/tsi/fake_transport_security.h +30 -30
  924. data/src/core/tsi/local_transport_security.cc +34 -33
  925. data/src/core/tsi/local_transport_security.h +31 -31
  926. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +8 -3
  927. data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
  928. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
  929. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  930. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +19 -19
  931. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
  932. data/src/core/tsi/ssl_transport_security.cc +139 -323
  933. data/src/core/tsi/ssl_transport_security.h +201 -200
  934. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  935. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  936. data/src/core/tsi/ssl_types.h +25 -25
  937. data/src/core/tsi/transport_security.cc +26 -26
  938. data/src/core/tsi/transport_security.h +45 -45
  939. data/src/core/tsi/transport_security_grpc.cc +20 -20
  940. data/src/core/tsi/transport_security_grpc.h +39 -39
  941. data/src/core/tsi/transport_security_interface.h +330 -330
  942. data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
  943. data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
  944. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  945. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  946. data/src/ruby/ext/grpc/ext-export.clang +0 -1
  947. data/src/ruby/ext/grpc/ext-export.gcc +1 -2
  948. data/src/ruby/ext/grpc/extconf.rb +47 -2
  949. data/src/ruby/ext/grpc/rb_call.c +1 -0
  950. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  951. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  952. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  953. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  954. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
  955. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
  956. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  957. data/src/ruby/lib/grpc/version.rb +1 -1
  958. data/src/ruby/spec/channel_spec.rb +0 -43
  959. data/src/ruby/spec/client_server_spec.rb +20 -8
  960. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  961. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  962. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  963. data/third_party/re2/re2/bitstate.cc +3 -3
  964. data/third_party/re2/re2/dfa.cc +13 -13
  965. data/third_party/re2/re2/nfa.cc +4 -4
  966. data/third_party/re2/re2/onepass.cc +2 -2
  967. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  968. data/third_party/re2/re2/prefilter_tree.h +3 -2
  969. data/third_party/re2/re2/prog.cc +11 -2
  970. data/third_party/re2/re2/prog.h +17 -5
  971. data/third_party/re2/re2/re2.cc +6 -11
  972. data/third_party/re2/re2/re2.h +1 -1
  973. data/third_party/re2/re2/regexp.cc +1 -2
  974. data/third_party/re2/re2/stringpiece.h +10 -7
  975. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  976. data/third_party/re2/re2/unicode_groups.cc +319 -151
  977. data/third_party/re2/re2/walker-inl.h +3 -2
  978. data/third_party/re2/util/mutex.h +4 -4
  979. data/third_party/zlib/compress.c +3 -3
  980. data/third_party/zlib/crc32.c +21 -12
  981. data/third_party/zlib/deflate.c +112 -106
  982. data/third_party/zlib/deflate.h +2 -2
  983. data/third_party/zlib/gzlib.c +1 -1
  984. data/third_party/zlib/gzread.c +3 -5
  985. data/third_party/zlib/gzwrite.c +1 -1
  986. data/third_party/zlib/infback.c +10 -7
  987. data/third_party/zlib/inflate.c +5 -2
  988. data/third_party/zlib/inftrees.c +2 -2
  989. data/third_party/zlib/inftrees.h +1 -1
  990. data/third_party/zlib/trees.c +61 -62
  991. data/third_party/zlib/uncompr.c +2 -2
  992. data/third_party/zlib/zconf.h +16 -3
  993. data/third_party/zlib/zlib.h +10 -10
  994. data/third_party/zlib/zutil.c +9 -7
  995. data/third_party/zlib/zutil.h +1 -0
  996. metadata +146 -40
  997. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  998. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  999. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  1000. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
  1001. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
  1002. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
  1003. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
  1004. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  1005. data/src/core/lib/gpr/murmur_hash.h +0 -29
  1006. data/src/core/lib/gpr/tls.h +0 -156
  1007. data/src/core/lib/promise/call_push_pull.h +0 -148
  1008. data/src/core/lib/slice/slice_api.cc +0 -39
  1009. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -1,20 +1,20 @@
1
- /*
2
- *
3
- * Copyright 2016 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
1
+ //
2
+ //
3
+ // Copyright 2016 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
@@ -35,14 +35,15 @@
35
35
  #include <string>
36
36
 
37
37
  #include "absl/strings/str_cat.h"
38
+ #include "absl/strings/str_format.h"
38
39
 
39
40
  #include <grpc/support/alloc.h>
40
41
  #include <grpc/support/log.h>
41
42
 
42
43
  #include "src/core/lib/debug/stats.h"
43
- #include "src/core/lib/gpr/murmur_hash.h"
44
- #include "src/core/lib/gpr/tls.h"
44
+ #include "src/core/lib/debug/stats_data.h"
45
45
  #include "src/core/lib/gpr/useful.h"
46
+ #include "src/core/lib/gprpp/crash.h"
46
47
  #include "src/core/lib/gprpp/thd.h"
47
48
  #include "src/core/lib/iomgr/block_annotate.h"
48
49
  #include "src/core/lib/iomgr/ev_poll_posix.h"
@@ -51,9 +52,9 @@
51
52
 
52
53
  #define GRPC_POLLSET_KICK_BROADCAST ((grpc_pollset_worker*)1)
53
54
 
54
- /*******************************************************************************
55
- * FD declarations
56
- */
55
+ //******************************************************************************
56
+ // FD declarations
57
+ //
57
58
  typedef struct grpc_fd_watcher {
58
59
  struct grpc_fd_watcher* next;
59
60
  struct grpc_fd_watcher* prev;
@@ -64,10 +65,10 @@ typedef struct grpc_fd_watcher {
64
65
 
65
66
  typedef struct grpc_cached_wakeup_fd grpc_cached_wakeup_fd;
66
67
 
67
- /* Only used when GRPC_ENABLE_FORK_SUPPORT=1 */
68
+ // Only used when GRPC_ENABLE_FORK_SUPPORT=1
68
69
  struct grpc_fork_fd_list {
69
- /* Only one of fd or cached_wakeup_fd will be set. The unused field will be
70
- set to nullptr. */
70
+ // Only one of fd or cached_wakeup_fd will be set. The unused field will be
71
+ // set to nullptr.
71
72
  grpc_fd* fd;
72
73
  grpc_cached_wakeup_fd* cached_wakeup_fd;
73
74
 
@@ -77,11 +78,11 @@ struct grpc_fork_fd_list {
77
78
 
78
79
  struct grpc_fd {
79
80
  int fd;
80
- /* refst format:
81
- bit0: 1=active/0=orphaned
82
- bit1-n: refcount
83
- meaning that mostly we ref by two to avoid altering the orphaned bit,
84
- and just unref by 1 when we're ready to flag the object as orphaned */
81
+ // refst format:
82
+ // bit0: 1=active/0=orphaned
83
+ // bit1-n: refcount
84
+ // meaning that mostly we ref by two to avoid altering the orphaned bit,
85
+ // and just unref by 1 when we're ready to flag the object as orphaned
85
86
  gpr_atm refst;
86
87
 
87
88
  gpr_mu mu;
@@ -91,28 +92,28 @@ struct grpc_fd {
91
92
  gpr_atm pollhup;
92
93
  grpc_error_handle shutdown_error;
93
94
 
94
- /* The watcher list.
95
+ // The watcher list.
95
96
 
96
- The following watcher related fields are protected by watcher_mu.
97
+ // The following watcher related fields are protected by watcher_mu.
97
98
 
98
- An fd_watcher is an ephemeral object created when an fd wants to
99
- begin polling, and destroyed after the poll.
99
+ // An fd_watcher is an ephemeral object created when an fd wants to
100
+ // begin polling, and destroyed after the poll.
100
101
 
101
- It denotes the fd's interest in whether to read poll or write poll
102
- or both or neither on this fd.
102
+ // It denotes the fd's interest in whether to read poll or write poll
103
+ // or both or neither on this fd.
103
104
 
104
- If a watcher is asked to poll for reads or writes, the read_watcher
105
- or write_watcher fields are set respectively. A watcher may be asked
106
- to poll for both, in which case both fields will be set.
105
+ // If a watcher is asked to poll for reads or writes, the read_watcher
106
+ // or write_watcher fields are set respectively. A watcher may be asked
107
+ // to poll for both, in which case both fields will be set.
107
108
 
108
- read_watcher and write_watcher may be NULL if no watcher has been
109
- asked to poll for reads or writes.
109
+ // read_watcher and write_watcher may be NULL if no watcher has been
110
+ // asked to poll for reads or writes.
110
111
 
111
- If an fd_watcher is not asked to poll for reads or writes, it's added
112
- to a linked list of inactive watchers, rooted at inactive_watcher_root.
113
- If at a later time there becomes need of a poller to poll, one of
114
- the inactive pollers may be kicked out of their poll loops to take
115
- that responsibility. */
112
+ // If an fd_watcher is not asked to poll for reads or writes, it's added
113
+ // to a linked list of inactive watchers, rooted at inactive_watcher_root.
114
+ // If at a later time there becomes need of a poller to poll, one of
115
+ // the inactive pollers may be kicked out of their poll loops to take
116
+ // that responsibility.
116
117
  grpc_fd_watcher inactive_watcher_root;
117
118
  grpc_fd_watcher* read_watcher;
118
119
  grpc_fd_watcher* write_watcher;
@@ -124,38 +125,40 @@ struct grpc_fd {
124
125
 
125
126
  grpc_iomgr_object iomgr_object;
126
127
 
127
- /* Only used when GRPC_ENABLE_FORK_SUPPORT=1 */
128
+ // Only used when GRPC_ENABLE_FORK_SUPPORT=1
128
129
  grpc_fork_fd_list* fork_fd_list;
130
+
131
+ bool is_pre_allocated;
129
132
  };
130
133
 
131
- /* True when GRPC_ENABLE_FORK_SUPPORT=1. */
134
+ // True when GRPC_ENABLE_FORK_SUPPORT=1.
132
135
  static bool track_fds_for_fork = false;
133
136
 
134
- /* Only used when GRPC_ENABLE_FORK_SUPPORT=1 */
137
+ // Only used when GRPC_ENABLE_FORK_SUPPORT=1
135
138
  static grpc_fork_fd_list* fork_fd_list_head = nullptr;
136
139
  static gpr_mu fork_fd_list_mu;
137
140
 
138
- /* Begin polling on an fd.
139
- Registers that the given pollset is interested in this fd - so that if read
140
- or writability interest changes, the pollset can be kicked to pick up that
141
- new interest.
142
- Return value is:
143
- (fd_needs_read? read_mask : 0) | (fd_needs_write? write_mask : 0)
144
- i.e. a combination of read_mask and write_mask determined by the fd's current
145
- interest in said events.
146
- Polling strategies that do not need to alter their behavior depending on the
147
- fd's current interest (such as epoll) do not need to call this function.
148
- MUST NOT be called with a pollset lock taken */
141
+ // Begin polling on an fd.
142
+ // Registers that the given pollset is interested in this fd - so that if read
143
+ // or writability interest changes, the pollset can be kicked to pick up that
144
+ // new interest.
145
+ // Return value is:
146
+ // (fd_needs_read? read_mask : 0) | (fd_needs_write? write_mask : 0)
147
+ // i.e. a combination of read_mask and write_mask determined by the fd's current
148
+ // interest in said events.
149
+ // Polling strategies that do not need to alter their behavior depending on the
150
+ // fd's current interest (such as epoll) do not need to call this function.
151
+ // MUST NOT be called with a pollset lock taken
149
152
  static uint32_t fd_begin_poll(grpc_fd* fd, grpc_pollset* pollset,
150
153
  grpc_pollset_worker* worker, uint32_t read_mask,
151
154
  uint32_t write_mask, grpc_fd_watcher* watcher);
152
- /* Complete polling previously started with fd_begin_poll
153
- MUST NOT be called with a pollset lock taken
154
- if got_read or got_write are 1, also does the become_{readable,writable} as
155
- appropriate. */
155
+ // Complete polling previously started with fd_begin_poll
156
+ // MUST NOT be called with a pollset lock taken
157
+ // if got_read or got_write are 1, also does the become_{readable,writable} as
158
+ // appropriate.
156
159
  static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write);
157
160
 
158
- /* Return 1 if this fd is orphaned, 0 otherwise */
161
+ // Return 1 if this fd is orphaned, 0 otherwise
159
162
  static bool fd_is_orphaned(grpc_fd* fd);
160
163
 
161
164
  #ifndef NDEBUG
@@ -174,15 +177,15 @@ static void fd_unref(grpc_fd* fd);
174
177
  #define CLOSURE_NOT_READY ((grpc_closure*)0)
175
178
  #define CLOSURE_READY ((grpc_closure*)1)
176
179
 
177
- /*******************************************************************************
178
- * pollset declarations
179
- */
180
+ //******************************************************************************
181
+ // pollset declarations
182
+ //
180
183
 
181
184
  typedef struct grpc_cached_wakeup_fd {
182
185
  grpc_wakeup_fd fd;
183
186
  struct grpc_cached_wakeup_fd* next;
184
187
 
185
- /* Only used when GRPC_ENABLE_FORK_SUPPORT=1 */
188
+ // Only used when GRPC_ENABLE_FORK_SUPPORT=1
186
189
  grpc_fork_fd_list* fork_fd_list;
187
190
  } grpc_cached_wakeup_fd;
188
191
 
@@ -202,45 +205,45 @@ struct grpc_pollset {
202
205
  int kicked_without_pollers;
203
206
  grpc_closure* shutdown_done;
204
207
  int pollset_set_count;
205
- /* all polled fds */
208
+ // all polled fds
206
209
  size_t fd_count;
207
210
  size_t fd_capacity;
208
211
  grpc_fd** fds;
209
- /* Local cache of eventfds for workers */
212
+ // Local cache of eventfds for workers
210
213
  grpc_cached_wakeup_fd* local_wakeup_cache;
211
214
  };
212
215
 
213
- /* Add an fd to a pollset */
216
+ // Add an fd to a pollset
214
217
  static void pollset_add_fd(grpc_pollset* pollset, struct grpc_fd* fd);
215
218
 
216
219
  static void pollset_set_add_fd(grpc_pollset_set* pollset_set, grpc_fd* fd);
217
220
 
218
- /* Convert a timespec to milliseconds:
219
- - very small or negative poll times are clamped to zero to do a
220
- non-blocking poll (which becomes spin polling)
221
- - other small values are rounded up to one millisecond
222
- - longer than a millisecond polls are rounded up to the next nearest
223
- millisecond to avoid spinning
224
- - infinite timeouts are converted to -1 */
221
+ // Convert a timespec to milliseconds:
222
+ // - very small or negative poll times are clamped to zero to do a
223
+ // non-blocking poll (which becomes spin polling)
224
+ // - other small values are rounded up to one millisecond
225
+ // - longer than a millisecond polls are rounded up to the next nearest
226
+ // millisecond to avoid spinning
227
+ // - infinite timeouts are converted to -1
225
228
  static int poll_deadline_to_millis_timeout(grpc_core::Timestamp deadline);
226
229
 
227
- /* Allow kick to wakeup the currently polling worker */
230
+ // Allow kick to wakeup the currently polling worker
228
231
  #define GRPC_POLLSET_CAN_KICK_SELF 1
229
- /* Force the wakee to repoll when awoken */
232
+ // Force the wakee to repoll when awoken
230
233
  #define GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP 2
231
- /* As per pollset_kick, with an extended set of flags (defined above)
232
- -- mostly for fd_posix's use. */
234
+ // As per pollset_kick, with an extended set of flags (defined above)
235
+ // -- mostly for fd_posix's use.
233
236
  static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
234
237
  grpc_pollset_worker* specific_worker,
235
238
  uint32_t flags) GRPC_MUST_USE_RESULT;
236
239
 
237
- /* Return 1 if the pollset has active threads in pollset_work (pollset must
238
- * be locked) */
240
+ // Return 1 if the pollset has active threads in pollset_work (pollset must
241
+ // be locked)
239
242
  static bool pollset_has_workers(grpc_pollset* pollset);
240
243
 
241
- /*******************************************************************************
242
- * pollset_set definitions
243
- */
244
+ //******************************************************************************
245
+ // pollset_set definitions
246
+ //
244
247
 
245
248
  struct grpc_pollset_set {
246
249
  gpr_mu mu;
@@ -258,9 +261,9 @@ struct grpc_pollset_set {
258
261
  grpc_fd** fds;
259
262
  };
260
263
 
261
- /*******************************************************************************
262
- * functions to track opened fds. No-ops unless track_fds_for_fork is true.
263
- */
264
+ //******************************************************************************
265
+ // functions to track opened fds. No-ops unless track_fds_for_fork is true.
266
+ //
264
267
 
265
268
  static void fork_fd_list_remove_node(grpc_fork_fd_list* node) {
266
269
  if (track_fds_for_fork) {
@@ -310,9 +313,9 @@ static void fork_fd_list_add_wakeup_fd(grpc_cached_wakeup_fd* fd) {
310
313
  }
311
314
  }
312
315
 
313
- /*******************************************************************************
314
- * fd_posix.c
315
- */
316
+ //******************************************************************************
317
+ // fd_posix.c
318
+ //
316
319
 
317
320
  #ifndef NDEBUG
318
321
  #define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
@@ -359,7 +362,6 @@ static void unref_by(grpc_fd* fd, int n) {
359
362
  grpc_iomgr_unregister_object(&fd->iomgr_object);
360
363
  fork_fd_list_remove_node(fd->fork_fd_list);
361
364
  if (fd->shutdown) {
362
- GRPC_ERROR_UNREF(fd->shutdown_error);
363
365
  }
364
366
  fd->shutdown_error.~Status();
365
367
  gpr_free(fd);
@@ -386,6 +388,7 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
386
388
  r->on_done_closure = nullptr;
387
389
  r->closed = 0;
388
390
  r->released = 0;
391
+ r->is_pre_allocated = false;
389
392
  gpr_atm_no_barrier_store(&r->pollhup, 0);
390
393
 
391
394
  std::string name2 = absl::StrCat(name, " fd=", fd);
@@ -440,9 +443,12 @@ static int has_watchers(grpc_fd* fd) {
440
443
  static void close_fd_locked(grpc_fd* fd) {
441
444
  fd->closed = 1;
442
445
  if (!fd->released) {
443
- close(fd->fd);
446
+ if (!fd->is_pre_allocated) {
447
+ close(fd->fd);
448
+ }
444
449
  }
445
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, fd->on_done_closure, GRPC_ERROR_NONE);
450
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, fd->on_done_closure,
451
+ absl::OkStatus());
446
452
  }
447
453
 
448
454
  static int fd_wrapped_fd(grpc_fd* fd) {
@@ -462,17 +468,17 @@ static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
462
468
  fd->released = true;
463
469
  }
464
470
  gpr_mu_lock(&fd->mu);
465
- REF_BY(fd, 1, reason); /* remove active status, but keep referenced */
471
+ REF_BY(fd, 1, reason); // remove active status, but keep referenced
466
472
  if (!has_watchers(fd)) {
467
473
  close_fd_locked(fd);
468
474
  } else {
469
475
  wake_all_watchers_locked(fd);
470
476
  }
471
477
  gpr_mu_unlock(&fd->mu);
472
- UNREF_BY(fd, 2, reason); /* drop the reference */
478
+ UNREF_BY(fd, 2, reason); // drop the reference
473
479
  }
474
480
 
475
- /* increment refcount by two to avoid changing the orphan bit */
481
+ // increment refcount by two to avoid changing the orphan bit
476
482
  #ifndef NDEBUG
477
483
  static void fd_ref(grpc_fd* fd, const char* reason, const char* file,
478
484
  int line) {
@@ -491,12 +497,11 @@ static void fd_unref(grpc_fd* fd) { unref_by(fd, 2); }
491
497
 
492
498
  static grpc_error_handle fd_shutdown_error(grpc_fd* fd) {
493
499
  if (!fd->shutdown) {
494
- return GRPC_ERROR_NONE;
500
+ return absl::OkStatus();
495
501
  } else {
496
- return grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
497
- "FD shutdown", &fd->shutdown_error, 1),
498
- GRPC_ERROR_INT_GRPC_STATUS,
499
- GRPC_STATUS_UNAVAILABLE);
502
+ return grpc_error_set_int(
503
+ GRPC_ERROR_CREATE_REFERENCING("FD shutdown", &fd->shutdown_error, 1),
504
+ grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
500
505
  }
501
506
  }
502
507
 
@@ -505,37 +510,36 @@ static void notify_on_locked(grpc_fd* fd, grpc_closure** st,
505
510
  if (fd->shutdown || gpr_atm_no_barrier_load(&fd->pollhup)) {
506
511
  grpc_core::ExecCtx::Run(
507
512
  DEBUG_LOCATION, closure,
508
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("FD shutdown"),
509
- GRPC_ERROR_INT_GRPC_STATUS,
513
+ grpc_error_set_int(GRPC_ERROR_CREATE("FD shutdown"),
514
+ grpc_core::StatusIntProperty::kRpcStatus,
510
515
  GRPC_STATUS_UNAVAILABLE));
511
516
  } else if (*st == CLOSURE_NOT_READY) {
512
- /* not ready ==> switch to a waiting state by setting the closure */
517
+ // not ready ==> switch to a waiting state by setting the closure
513
518
  *st = closure;
514
519
  } else if (*st == CLOSURE_READY) {
515
- /* already ready ==> queue the closure to run immediately */
520
+ // already ready ==> queue the closure to run immediately
516
521
  *st = CLOSURE_NOT_READY;
517
522
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, fd_shutdown_error(fd));
518
523
  maybe_wake_one_watcher_locked(fd);
519
524
  } else {
520
- /* upcallptr was set to a different closure. This is an error! */
521
- gpr_log(GPR_ERROR,
522
- "User called a notify_on function with a previous callback still "
523
- "pending");
524
- abort();
525
+ // upcallptr was set to a different closure. This is an error!
526
+ grpc_core::Crash(
527
+ "User called a notify_on function with a previous callback still "
528
+ "pending");
525
529
  }
526
530
  }
527
531
 
528
- /* returns 1 if state becomes not ready */
532
+ // returns 1 if state becomes not ready
529
533
  static int set_ready_locked(grpc_fd* fd, grpc_closure** st) {
530
534
  if (*st == CLOSURE_READY) {
531
- /* duplicate ready ==> ignore */
535
+ // duplicate ready ==> ignore
532
536
  return 0;
533
537
  } else if (*st == CLOSURE_NOT_READY) {
534
- /* not ready, and not waiting ==> flag ready */
538
+ // not ready, and not waiting ==> flag ready
535
539
  *st = CLOSURE_READY;
536
540
  return 0;
537
541
  } else {
538
- /* waiting ==> queue closure */
542
+ // waiting ==> queue closure
539
543
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, *st, fd_shutdown_error(fd));
540
544
  *st = CLOSURE_NOT_READY;
541
545
  return 1;
@@ -544,16 +548,16 @@ static int set_ready_locked(grpc_fd* fd, grpc_closure** st) {
544
548
 
545
549
  static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
546
550
  gpr_mu_lock(&fd->mu);
547
- /* only shutdown once */
551
+ // only shutdown once
548
552
  if (!fd->shutdown) {
549
553
  fd->shutdown = 1;
550
554
  fd->shutdown_error = why;
551
- /* signal read/write closed to OS so that future operations fail */
552
- shutdown(fd->fd, SHUT_RDWR);
555
+ // signal read/write closed to OS so that future operations fail
556
+ if (!fd->is_pre_allocated) {
557
+ shutdown(fd->fd, SHUT_RDWR);
558
+ }
553
559
  set_ready_locked(fd, &fd->read_closure);
554
560
  set_ready_locked(fd, &fd->write_closure);
555
- } else {
556
- GRPC_ERROR_UNREF(why);
557
561
  }
558
562
  gpr_mu_unlock(&fd->mu);
559
563
  }
@@ -581,7 +585,7 @@ static void fd_notify_on_error(grpc_fd* /*fd*/, grpc_closure* closure) {
581
585
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
582
586
  gpr_log(GPR_ERROR, "Polling engine does not support tracking errors.");
583
587
  }
584
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_CANCELLED);
588
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::CancelledError());
585
589
  }
586
590
 
587
591
  static void fd_set_readable(grpc_fd* fd) {
@@ -608,13 +612,13 @@ static uint32_t fd_begin_poll(grpc_fd* fd, grpc_pollset* pollset,
608
612
  uint32_t mask = 0;
609
613
  grpc_closure* cur;
610
614
  int requested;
611
- /* keep track of pollers that have requested our events, in case they change
612
- */
615
+ // keep track of pollers that have requested our events, in case they change
616
+ //
613
617
  GRPC_FD_REF(fd, "poll");
614
618
 
615
619
  gpr_mu_lock(&fd->mu);
616
620
 
617
- /* if we are shutdown, then don't add to the watcher set */
621
+ // if we are shutdown, then don't add to the watcher set
618
622
  if (fd->shutdown) {
619
623
  watcher->pollset = nullptr;
620
624
  watcher->worker = nullptr;
@@ -623,22 +627,22 @@ static uint32_t fd_begin_poll(grpc_fd* fd, grpc_pollset* pollset,
623
627
  return 0;
624
628
  }
625
629
 
626
- /* if there is nobody polling for read, but we need to, then start doing so */
630
+ // if there is nobody polling for read, but we need to, then start doing so
627
631
  cur = fd->read_closure;
628
632
  requested = cur != CLOSURE_READY;
629
633
  if (read_mask && fd->read_watcher == nullptr && requested) {
630
634
  fd->read_watcher = watcher;
631
635
  mask |= read_mask;
632
636
  }
633
- /* if there is nobody polling for write, but we need to, then start doing so
634
- */
637
+ // if there is nobody polling for write, but we need to, then start doing so
638
+ //
635
639
  cur = fd->write_closure;
636
640
  requested = cur != CLOSURE_READY;
637
641
  if (write_mask && fd->write_watcher == nullptr && requested) {
638
642
  fd->write_watcher = watcher;
639
643
  mask |= write_mask;
640
644
  }
641
- /* if not polling, remember this watcher in case we need someone to later */
645
+ // if not polling, remember this watcher in case we need someone to later
642
646
  if (mask == 0 && worker != nullptr) {
643
647
  watcher->next = &fd->inactive_watcher_root;
644
648
  watcher->prev = watcher->next->prev;
@@ -669,7 +673,7 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
669
673
  }
670
674
 
671
675
  if (watcher == fd->read_watcher) {
672
- /* remove read watcher, kick if we still need a read */
676
+ // remove read watcher, kick if we still need a read
673
677
  was_polling = 1;
674
678
  if (!got_read) {
675
679
  kick = 1;
@@ -677,7 +681,7 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
677
681
  fd->read_watcher = nullptr;
678
682
  }
679
683
  if (watcher == fd->write_watcher) {
680
- /* remove write watcher, kick if we still need a write */
684
+ // remove write watcher, kick if we still need a write
681
685
  was_polling = 1;
682
686
  if (!got_write) {
683
687
  kick = 1;
@@ -685,7 +689,7 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
685
689
  fd->write_watcher = nullptr;
686
690
  }
687
691
  if (!was_polling && watcher->worker != nullptr) {
688
- /* remove from inactive list */
692
+ // remove from inactive list
689
693
  watcher->next->prev = watcher->prev;
690
694
  watcher->prev->next = watcher->next;
691
695
  }
@@ -710,12 +714,14 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
710
714
  GRPC_FD_UNREF(fd, "poll");
711
715
  }
712
716
 
713
- /*******************************************************************************
714
- * pollset_posix.c
715
- */
717
+ static void fd_set_pre_allocated(grpc_fd* fd) { fd->is_pre_allocated = true; }
718
+
719
+ //******************************************************************************
720
+ // pollset_posix.c
721
+ //
716
722
 
717
- static GPR_THREAD_LOCAL(grpc_pollset*) g_current_thread_poller;
718
- static GPR_THREAD_LOCAL(grpc_pollset_worker*) g_current_thread_worker;
723
+ static thread_local grpc_pollset* g_current_thread_poller;
724
+ static thread_local grpc_pollset_worker* g_current_thread_worker;
719
725
 
720
726
  static void remove_worker(grpc_pollset* /*p*/, grpc_pollset_worker* worker) {
721
727
  worker->prev->next = worker->next;
@@ -758,9 +764,9 @@ static void push_front_worker(grpc_pollset* p, grpc_pollset_worker* worker) {
758
764
 
759
765
  static void kick_append_error(grpc_error_handle* composite,
760
766
  grpc_error_handle error) {
761
- if (GRPC_ERROR_IS_NONE(error)) return;
762
- if (GRPC_ERROR_IS_NONE(*composite)) {
763
- *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Kick Failure");
767
+ if (error.ok()) return;
768
+ if (composite->ok()) {
769
+ *composite = GRPC_ERROR_CREATE("Kick Failure");
764
770
  }
765
771
  *composite = grpc_error_add_child(*composite, error);
766
772
  }
@@ -768,9 +774,9 @@ static void kick_append_error(grpc_error_handle* composite,
768
774
  static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
769
775
  grpc_pollset_worker* specific_worker,
770
776
  uint32_t flags) {
771
- grpc_error_handle error = GRPC_ERROR_NONE;
777
+ grpc_error_handle error;
772
778
 
773
- /* pollset->mu already held */
779
+ // pollset->mu already held
774
780
  if (specific_worker != nullptr) {
775
781
  if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) {
776
782
  GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
@@ -819,7 +825,7 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
819
825
  }
820
826
  }
821
827
 
822
- GRPC_LOG_IF_ERROR("pollset_kick_ext", GRPC_ERROR_REF(error));
828
+ GRPC_LOG_IF_ERROR("pollset_kick_ext", error);
823
829
  return error;
824
830
  }
825
831
 
@@ -828,11 +834,11 @@ static grpc_error_handle pollset_kick(grpc_pollset* p,
828
834
  return pollset_kick_ext(p, specific_worker, 0);
829
835
  }
830
836
 
831
- /* global state management */
837
+ // global state management
832
838
 
833
- static grpc_error_handle pollset_global_init(void) { return GRPC_ERROR_NONE; }
839
+ static grpc_error_handle pollset_global_init(void) { return absl::OkStatus(); }
834
840
 
835
- /* main interface */
841
+ // main interface
836
842
 
837
843
  static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
838
844
  gpr_mu_init(&pollset->mu);
@@ -865,7 +871,7 @@ static void pollset_destroy(grpc_pollset* pollset) {
865
871
  static void pollset_add_fd(grpc_pollset* pollset, grpc_fd* fd) {
866
872
  gpr_mu_lock(&pollset->mu);
867
873
  size_t i;
868
- /* TODO(ctiller): this is O(num_fds^2); maybe switch to a hash set here */
874
+ // TODO(ctiller): this is O(num_fds^2); maybe switch to a hash set here
869
875
  for (i = 0; i < pollset->fd_count; i++) {
870
876
  if (pollset->fds[i] == fd) goto exit;
871
877
  }
@@ -889,14 +895,14 @@ static void finish_shutdown(grpc_pollset* pollset) {
889
895
  }
890
896
  pollset->fd_count = 0;
891
897
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, pollset->shutdown_done,
892
- GRPC_ERROR_NONE);
898
+ absl::OkStatus());
893
899
  }
894
900
 
895
901
  static void work_combine_error(grpc_error_handle* composite,
896
902
  grpc_error_handle error) {
897
- if (GRPC_ERROR_IS_NONE(error)) return;
898
- if (GRPC_ERROR_IS_NONE(*composite)) {
899
- *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("pollset_work");
903
+ if (error.ok()) return;
904
+ if (composite->ok()) {
905
+ *composite = GRPC_ERROR_CREATE("pollset_work");
900
906
  }
901
907
  *composite = grpc_error_add_child(*composite, error);
902
908
  }
@@ -906,19 +912,19 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
906
912
  grpc_core::Timestamp deadline) {
907
913
  grpc_pollset_worker worker;
908
914
  if (worker_hdl) *worker_hdl = &worker;
909
- grpc_error_handle error = GRPC_ERROR_NONE;
915
+ grpc_error_handle error;
910
916
 
911
- /* Avoid malloc for small number of elements. */
917
+ // Avoid malloc for small number of elements.
912
918
  enum { inline_elements = 96 };
913
919
  struct pollfd pollfd_space[inline_elements];
914
920
  struct grpc_fd_watcher watcher_space[inline_elements];
915
921
 
916
- /* pollset->mu already held */
922
+ // pollset->mu already held
917
923
  int added_worker = 0;
918
924
  int locked = 1;
919
925
  int queued_work = 0;
920
926
  int keep_polling = 0;
921
- /* this must happen before we (potentially) drop pollset->mu */
927
+ // this must happen before we (potentially) drop pollset->mu
922
928
  worker.next = worker.prev = nullptr;
923
929
  worker.reevaluate_polling_on_wakeup = 0;
924
930
  if (pollset->local_wakeup_cache != nullptr) {
@@ -929,19 +935,19 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
929
935
  gpr_malloc(sizeof(*worker.wakeup_fd)));
930
936
  error = grpc_wakeup_fd_init(&worker.wakeup_fd->fd);
931
937
  fork_fd_list_add_wakeup_fd(worker.wakeup_fd);
932
- if (!GRPC_ERROR_IS_NONE(error)) {
933
- GRPC_LOG_IF_ERROR("pollset_work", GRPC_ERROR_REF(error));
938
+ if (!error.ok()) {
939
+ GRPC_LOG_IF_ERROR("pollset_work", error);
934
940
  return error;
935
941
  }
936
942
  }
937
943
  worker.kicked_specifically = 0;
938
- /* If we're shutting down then we don't execute any extended work */
944
+ // If we're shutting down then we don't execute any extended work
939
945
  if (pollset->shutting_down) {
940
946
  goto done;
941
947
  }
942
- /* Start polling, and keep doing so while we're being asked to
943
- re-evaluate our pollers (this allows poll() based pollers to
944
- ensure they don't miss wakeups) */
948
+ // Start polling, and keep doing so while we're being asked to
949
+ // re-evaluate our pollers (this allows poll() based pollers to
950
+ // ensure they don't miss wakeups)
945
951
  keep_polling = 1;
946
952
  g_current_thread_poller = pollset;
947
953
  while (keep_polling) {
@@ -969,7 +975,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
969
975
  pfds = pollfd_space;
970
976
  watchers = watcher_space;
971
977
  } else {
972
- /* Allocate one buffer to hold both pfds and watchers arrays */
978
+ // Allocate one buffer to hold both pfds and watchers arrays
973
979
  const size_t pfd_size = sizeof(*pfds) * (pollset->fd_count + 2);
974
980
  const size_t watch_size = sizeof(*watchers) * (pollset->fd_count + 2);
975
981
  void* buf = gpr_malloc(pfd_size + watch_size);
@@ -1008,8 +1014,8 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
1008
1014
  }
1009
1015
  }
1010
1016
 
1011
- /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
1012
- even going into the blocking annotation if possible */
1017
+ // TODO(vpai): Consider first doing a 0 timeout poll here to avoid
1018
+ // even going into the blocking annotation if possible
1013
1019
  GRPC_SCHEDULING_START_BLOCKING_REGION;
1014
1020
  r = grpc_poll_function(pfds, pfd_count, timeout);
1015
1021
  GRPC_SCHEDULING_END_BLOCKING_REGION;
@@ -1057,9 +1063,9 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
1057
1063
  pfds[i].fd, (pfds[i].revents & POLLIN_CHECK) != 0,
1058
1064
  (pfds[i].revents & POLLOUT_CHECK) != 0, pfds[i].revents);
1059
1065
  }
1060
- /* This is a mitigation to prevent poll() from spinning on a
1061
- ** POLLHUP https://github.com/grpc/grpc/pull/13665
1062
- */
1066
+ // This is a mitigation to prevent poll() from spinning on a
1067
+ //* POLLHUP https://github.com/grpc/grpc/pull/13665
1068
+ //
1063
1069
  if (pfds[i].revents & POLLHUP) {
1064
1070
  gpr_atm_no_barrier_store(&watchers[i].fd->pollhup, 1);
1065
1071
  }
@@ -1070,7 +1076,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
1070
1076
  }
1071
1077
 
1072
1078
  if (pfds != pollfd_space) {
1073
- /* pfds and watchers are in the same memory block pointed to by pfds */
1079
+ // pfds and watchers are in the same memory block pointed to by pfds
1074
1080
  gpr_free(pfds);
1075
1081
  }
1076
1082
 
@@ -1078,25 +1084,25 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
1078
1084
  } else {
1079
1085
  pollset->kicked_without_pollers = 0;
1080
1086
  }
1081
- /* Finished execution - start cleaning up.
1082
- Note that we may arrive here from outside the enclosing while() loop.
1083
- In that case we won't loop though as we haven't added worker to the
1084
- worker list, which means nobody could ask us to re-evaluate polling). */
1087
+ // Finished execution - start cleaning up.
1088
+ // Note that we may arrive here from outside the enclosing while() loop.
1089
+ // In that case we won't loop though as we haven't added worker to the
1090
+ // worker list, which means nobody could ask us to re-evaluate polling).
1085
1091
  done:
1086
1092
  if (!locked) {
1087
1093
  queued_work |= grpc_core::ExecCtx::Get()->Flush();
1088
1094
  gpr_mu_lock(&pollset->mu);
1089
1095
  locked = 1;
1090
1096
  }
1091
- /* If we're forced to re-evaluate polling (via pollset_kick with
1092
- GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) then we land here and force
1093
- a loop */
1094
- if (worker.reevaluate_polling_on_wakeup && GRPC_ERROR_IS_NONE(error)) {
1097
+ // If we're forced to re-evaluate polling (via pollset_kick with
1098
+ // GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) then we land here and force
1099
+ // a loop
1100
+ if (worker.reevaluate_polling_on_wakeup && error.ok()) {
1095
1101
  worker.reevaluate_polling_on_wakeup = 0;
1096
1102
  pollset->kicked_without_pollers = 0;
1097
1103
  if (queued_work || worker.kicked_specifically) {
1098
- /* If there's queued work on the list, then set the deadline to be
1099
- immediate so we get back out of the polling loop quickly */
1104
+ // If there's queued work on the list, then set the deadline to be
1105
+ // immediate so we get back out of the polling loop quickly
1100
1106
  deadline = grpc_core::Timestamp();
1101
1107
  }
1102
1108
  keep_polling = 1;
@@ -1107,10 +1113,10 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
1107
1113
  remove_worker(pollset, &worker);
1108
1114
  g_current_thread_worker = nullptr;
1109
1115
  }
1110
- /* release wakeup fd to the local pool */
1116
+ // release wakeup fd to the local pool
1111
1117
  worker.wakeup_fd->next = pollset->local_wakeup_cache;
1112
1118
  pollset->local_wakeup_cache = worker.wakeup_fd;
1113
- /* check shutdown conditions */
1119
+ // check shutdown conditions
1114
1120
  if (pollset->shutting_down) {
1115
1121
  if (pollset_has_workers(pollset)) {
1116
1122
  (void)pollset_kick(pollset, nullptr);
@@ -1119,15 +1125,15 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
1119
1125
  gpr_mu_unlock(&pollset->mu);
1120
1126
  finish_shutdown(pollset);
1121
1127
  grpc_core::ExecCtx::Get()->Flush();
1122
- /* Continuing to access pollset here is safe -- it is the caller's
1123
- * responsibility to not destroy when it has outstanding calls to
1124
- * pollset_work.
1125
- * TODO(dklempner): Can we refactor the shutdown logic to avoid this? */
1128
+ // Continuing to access pollset here is safe -- it is the caller's
1129
+ // responsibility to not destroy when it has outstanding calls to
1130
+ // pollset_work.
1131
+ // TODO(dklempner): Can we refactor the shutdown logic to avoid this?
1126
1132
  gpr_mu_lock(&pollset->mu);
1127
1133
  }
1128
1134
  }
1129
1135
  if (worker_hdl) *worker_hdl = nullptr;
1130
- GRPC_LOG_IF_ERROR("pollset_work", GRPC_ERROR_REF(error));
1136
+ GRPC_LOG_IF_ERROR("pollset_work", error);
1131
1137
  return error;
1132
1138
  }
1133
1139
 
@@ -1151,9 +1157,9 @@ static int poll_deadline_to_millis_timeout(grpc_core::Timestamp deadline) {
1151
1157
  return static_cast<int>(n);
1152
1158
  }
1153
1159
 
1154
- /*******************************************************************************
1155
- * pollset_set_posix.c
1156
- */
1160
+ //******************************************************************************
1161
+ // pollset_set_posix.c
1162
+ //
1157
1163
 
1158
1164
  static grpc_pollset_set* pollset_set_create(void) {
1159
1165
  grpc_pollset_set* pollset_set =
@@ -1172,7 +1178,7 @@ static void pollset_set_destroy(grpc_pollset_set* pollset_set) {
1172
1178
  grpc_pollset* pollset = pollset_set->pollsets[i];
1173
1179
  gpr_mu_lock(&pollset->mu);
1174
1180
  pollset->pollset_set_count--;
1175
- /* check shutdown */
1181
+ // check shutdown
1176
1182
  if (pollset->shutting_down && !pollset->called_shutdown &&
1177
1183
  !pollset_has_observers(pollset)) {
1178
1184
  pollset->called_shutdown = 1;
@@ -1197,7 +1203,7 @@ static void pollset_set_add_pollset(grpc_pollset_set* pollset_set,
1197
1203
  gpr_mu_lock(&pollset_set->mu);
1198
1204
  if (pollset_set->pollset_count == pollset_set->pollset_capacity) {
1199
1205
  pollset_set->pollset_capacity =
1200
- std::max(size_t(8), 2 * pollset_set->pollset_capacity);
1206
+ std::max(size_t{8}, 2 * pollset_set->pollset_capacity);
1201
1207
  pollset_set->pollsets = static_cast<grpc_pollset**>(gpr_realloc(
1202
1208
  pollset_set->pollsets,
1203
1209
  pollset_set->pollset_capacity * sizeof(*pollset_set->pollsets)));
@@ -1230,7 +1236,7 @@ static void pollset_set_del_pollset(grpc_pollset_set* pollset_set,
1230
1236
  gpr_mu_unlock(&pollset_set->mu);
1231
1237
  gpr_mu_lock(&pollset->mu);
1232
1238
  pollset->pollset_set_count--;
1233
- /* check shutdown */
1239
+ // check shutdown
1234
1240
  if (pollset->shutting_down && !pollset->called_shutdown &&
1235
1241
  !pollset_has_observers(pollset)) {
1236
1242
  pollset->called_shutdown = 1;
@@ -1247,7 +1253,7 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* bag,
1247
1253
  gpr_mu_lock(&bag->mu);
1248
1254
  if (bag->pollset_set_count == bag->pollset_set_capacity) {
1249
1255
  bag->pollset_set_capacity =
1250
- std::max(size_t(8), 2 * bag->pollset_set_capacity);
1256
+ std::max(size_t{8}, 2 * bag->pollset_set_capacity);
1251
1257
  bag->pollset_sets = static_cast<grpc_pollset_set**>(
1252
1258
  gpr_realloc(bag->pollset_sets,
1253
1259
  bag->pollset_set_capacity * sizeof(*bag->pollset_sets)));
@@ -1285,7 +1291,7 @@ static void pollset_set_add_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) {
1285
1291
  gpr_mu_lock(&pollset_set->mu);
1286
1292
  if (pollset_set->fd_count == pollset_set->fd_capacity) {
1287
1293
  pollset_set->fd_capacity =
1288
- std::max(size_t(8), 2 * pollset_set->fd_capacity);
1294
+ std::max(size_t{8}, 2 * pollset_set->fd_capacity);
1289
1295
  pollset_set->fds = static_cast<grpc_fd**>(
1290
1296
  gpr_realloc(pollset_set->fds,
1291
1297
  pollset_set->fd_capacity * sizeof(*pollset_set->fds)));
@@ -1318,9 +1324,9 @@ static void pollset_set_del_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) {
1318
1324
  gpr_mu_unlock(&pollset_set->mu);
1319
1325
  }
1320
1326
 
1321
- /*******************************************************************************
1322
- * event engine binding
1323
- */
1327
+ //******************************************************************************
1328
+ // event engine binding
1329
+ //
1324
1330
 
1325
1331
  static bool is_any_background_poller_thread(void) { return false; }
1326
1332
 
@@ -1331,9 +1337,9 @@ static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
1331
1337
  return false;
1332
1338
  }
1333
1339
 
1334
- /* Called by the child process's post-fork handler to close open fds, including
1335
- * worker wakeup fds. This allows gRPC to shutdown in the child process without
1336
- * interfering with connections or RPCs ongoing in the parent. */
1340
+ // Called by the child process's post-fork handler to close open fds, including
1341
+ // worker wakeup fds. This allows gRPC to shutdown in the child process without
1342
+ // interfering with connections or RPCs ongoing in the parent.
1337
1343
  static void reset_event_manager_on_fork() {
1338
1344
  gpr_mu_lock(&fork_fd_list_mu);
1339
1345
  while (fork_fd_list_head != nullptr) {
@@ -1388,7 +1394,7 @@ const grpc_event_engine_vtable grpc_ev_poll_posix = {
1388
1394
 
1389
1395
  is_any_background_poller_thread,
1390
1396
  /* name = */ "poll",
1391
- /* check_engine_available = */
1397
+ // check_engine_available =
1392
1398
  [](bool) {
1393
1399
  if (!grpc_has_wakeup_fd()) {
1394
1400
  gpr_log(GPR_ERROR, "Skipping poll because of no wakeup fd.");
@@ -1409,6 +1415,8 @@ const grpc_event_engine_vtable grpc_ev_poll_posix = {
1409
1415
  /* shutdown_engine = */ shutdown_background_closure,
1410
1416
  []() {},
1411
1417
  add_closure_to_background_poller,
1418
+
1419
+ fd_set_pre_allocated,
1412
1420
  };
1413
1421
 
1414
1422
  namespace {
@@ -1419,8 +1427,7 @@ int phony_poll(struct pollfd fds[], nfds_t nfds, int timeout) {
1419
1427
  if (timeout == 0) {
1420
1428
  return real_poll_function(fds, nfds, 0);
1421
1429
  } else {
1422
- gpr_log(GPR_ERROR, "Attempted a blocking poll when declared non-polling.");
1423
- GPR_ASSERT(false);
1430
+ grpc_core::Crash("Attempted a blocking poll when declared non-polling.");
1424
1431
  return -1;
1425
1432
  }
1426
1433
  }
@@ -1445,4 +1452,4 @@ const grpc_event_engine_vtable grpc_ev_none_posix = []() {
1445
1452
  return v;
1446
1453
  }();
1447
1454
 
1448
- #endif /* GRPC_POSIX_SOCKET_EV_POLL */
1455
+ #endif // GRPC_POSIX_SOCKET_EV_POLL