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,26 +1,27 @@
1
- /*
2
- *
3
- * Copyright 2015 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
1
+ //
2
+ //
3
+ // Copyright 2015 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include <grpc/impl/codegen/grpc_types.h>
21
+ #include <grpc/impl/grpc_types.h>
22
22
 
23
23
  #include "src/core/lib/gprpp/global_config_generic.h"
24
+ #include "src/core/lib/iomgr/exec_ctx.h"
24
25
  #include "src/core/lib/iomgr/port.h"
25
26
 
26
27
  #ifdef GRPC_POSIX_SOCKET_TCP
@@ -48,11 +49,15 @@
48
49
  #include <grpc/support/time.h>
49
50
 
50
51
  #include "src/core/lib/address_utils/sockaddr_utils.h"
52
+ #include "src/core/lib/debug/event_log.h"
51
53
  #include "src/core/lib/debug/stats.h"
54
+ #include "src/core/lib/debug/stats_data.h"
52
55
  #include "src/core/lib/debug/trace.h"
53
56
  #include "src/core/lib/experiments/experiments.h"
54
57
  #include "src/core/lib/gpr/string.h"
55
58
  #include "src/core/lib/gpr/useful.h"
59
+ #include "src/core/lib/gprpp/crash.h"
60
+ #include "src/core/lib/gprpp/strerror.h"
56
61
  #include "src/core/lib/gprpp/sync.h"
57
62
  #include "src/core/lib/iomgr/buffer_list.h"
58
63
  #include "src/core/lib/iomgr/ev_posix.h"
@@ -105,7 +110,7 @@ class TcpZerocopySendRecord {
105
110
 
106
111
  ~TcpZerocopySendRecord() {
107
112
  AssertEmpty();
108
- grpc_slice_buffer_destroy_internal(&buf_);
113
+ grpc_slice_buffer_destroy(&buf_);
109
114
  }
110
115
 
111
116
  // Given the slices that we wish to send, and the current offset into the
@@ -173,7 +178,7 @@ class TcpZerocopySendRecord {
173
178
  // reference to the underlying data since we no longer need it.
174
179
  void AllSendsComplete() {
175
180
  GPR_DEBUG_ASSERT(ref_.load(std::memory_order_relaxed) == 0);
176
- grpc_slice_buffer_reset_and_unref_internal(&buf_);
181
+ grpc_slice_buffer_reset_and_unref(&buf_);
177
182
  }
178
183
 
179
184
  grpc_slice_buffer buf_;
@@ -360,7 +365,7 @@ class TcpZerocopySendCtx {
360
365
  // state was CHECK and is_in_write is false. This means that after the
361
366
  // previous sendmsg returned and set is_in_write to false, it did
362
367
  // not update the z-copy change from CHECK to OPEN.
363
- GPR_ASSERT(false && "OMem state error!");
368
+ Crash("OMem state error!");
364
369
  }
365
370
  }
366
371
 
@@ -474,8 +479,8 @@ struct grpc_tcp {
474
479
  grpc_endpoint base;
475
480
  grpc_fd* em_fd;
476
481
  int fd;
477
- /* Used by the endpoint read function to distinguish the very first read call
478
- * from the rest */
482
+ // Used by the endpoint read function to distinguish the very first read call
483
+ // from the rest
479
484
  bool is_first_read;
480
485
  bool has_posted_reclaimer ABSL_GUARDED_BY(read_mu) = false;
481
486
  double target_length;
@@ -487,16 +492,16 @@ struct grpc_tcp {
487
492
  int max_read_chunk_size;
488
493
  int set_rcvlowat = 0;
489
494
 
490
- /* garbage after the last read */
495
+ // garbage after the last read
491
496
  grpc_slice_buffer last_read_buffer;
492
497
 
493
498
  grpc_core::Mutex read_mu;
494
499
  grpc_slice_buffer* incoming_buffer ABSL_GUARDED_BY(read_mu) = nullptr;
495
- int inq; /* bytes pending on the socket from the last read. */
496
- bool inq_capable; /* cache whether kernel supports inq */
500
+ int inq; // bytes pending on the socket from the last read.
501
+ bool inq_capable; // cache whether kernel supports inq
497
502
 
498
503
  grpc_slice_buffer* outgoing_buffer;
499
- /* byte within outgoing_buffer->slices[0] to write next */
504
+ // byte within outgoing_buffer->slices[0] to write next
500
505
  size_t outgoing_byte_idx;
501
506
 
502
507
  grpc_closure* read_cb;
@@ -514,35 +519,33 @@ struct grpc_tcp {
514
519
  grpc_core::MemoryOwner memory_owner;
515
520
  grpc_core::MemoryAllocator::Reservation self_reservation;
516
521
 
517
- grpc_core::TracedBuffer* tb_head; /* List of traced buffers */
518
- gpr_mu tb_mu; /* Lock for access to list of traced buffers */
519
-
520
- /* grpc_endpoint_write takes an argument which if non-null means that the
521
- * transport layer wants the TCP layer to collect timestamps for this write.
522
- * This arg is forwarded to the timestamps callback function when the ACK
523
- * timestamp is received from the kernel. This arg is a (void *) which allows
524
- * users of this API to pass in a pointer to any kind of structure. This
525
- * structure could actually be a tag or any book-keeping object that the user
526
- * can use to distinguish between different traced writes. The only
527
- * requirement from the TCP endpoint layer is that this arg should be non-null
528
- * if the user wants timestamps for the write. */
522
+ grpc_core::TracedBufferList tb_list; // List of traced buffers
523
+
524
+ // grpc_endpoint_write takes an argument which if non-null means that the
525
+ // transport layer wants the TCP layer to collect timestamps for this write.
526
+ // This arg is forwarded to the timestamps callback function when the ACK
527
+ // timestamp is received from the kernel. This arg is a (void *) which allows
528
+ // users of this API to pass in a pointer to any kind of structure. This
529
+ // structure could actually be a tag or any book-keeping object that the user
530
+ // can use to distinguish between different traced writes. The only
531
+ // requirement from the TCP endpoint layer is that this arg should be non-null
532
+ // if the user wants timestamps for the write.
529
533
  void* outgoing_buffer_arg;
530
- /* A counter which starts at 0. It is initialized the first time the socket
531
- * options for collecting timestamps are set, and is incremented with each
532
- * byte sent. */
534
+ // A counter which starts at 0. It is initialized the first time the socket
535
+ // options for collecting timestamps are set, and is incremented with each
536
+ // byte sent.
533
537
  int bytes_counter;
534
- bool socket_ts_enabled; /* True if timestamping options are set on the socket
535
- */
536
- bool ts_capable; /* Cache whether we can set timestamping options */
537
- gpr_atm stop_error_notification; /* Set to 1 if we do not want to be notified
538
- on errors anymore */
538
+ bool socket_ts_enabled; // True if timestamping options are set on the socket
539
+ //
540
+ bool ts_capable; // Cache whether we can set timestamping options
541
+ gpr_atm stop_error_notification; // Set to 1 if we do not want to be notified
542
+ // on errors anymore
539
543
  TcpZerocopySendCtx tcp_zerocopy_send_ctx;
540
544
  TcpZerocopySendRecord* current_zerocopy_send = nullptr;
541
545
 
542
- bool frame_size_tuning_enabled;
543
- int min_progress_size; /* A hint from upper layers specifying the minimum
544
- number of bytes that need to be read to make
545
- meaningful progress */
546
+ int min_progress_size; // A hint from upper layers specifying the minimum
547
+ // number of bytes that need to be read to make
548
+ // meaningful progress
546
549
  };
547
550
 
548
551
  struct backup_poller {
@@ -588,7 +591,7 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
588
591
  grpc_pollset_work(BACKUP_POLLER_POLLSET(p), nullptr, deadline));
589
592
  gpr_mu_unlock(p->pollset_mu);
590
593
  g_backup_poller_mu->Lock();
591
- /* last "uncovered" notification is the ref that keeps us polling */
594
+ // last "uncovered" notification is the ref that keeps us polling
592
595
  if (g_uncovered_notifications_pending == 1) {
593
596
  GPR_ASSERT(g_backup_poller == p);
594
597
  g_backup_poller = nullptr;
@@ -605,7 +608,7 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
605
608
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
606
609
  gpr_log(GPR_INFO, "BACKUP_POLLER:%p reschedule", p);
607
610
  }
608
- grpc_core::Executor::Run(&p->run_poller, GRPC_ERROR_NONE,
611
+ grpc_core::Executor::Run(&p->run_poller, absl::OkStatus(),
609
612
  grpc_core::ExecutorType::DEFAULT,
610
613
  grpc_core::ExecutorJobType::LONG);
611
614
  }
@@ -648,7 +651,7 @@ static void cover_self(grpc_tcp* tcp) {
648
651
  }
649
652
  grpc_core::Executor::Run(
650
653
  GRPC_CLOSURE_INIT(&p->run_poller, run_poller, p, nullptr),
651
- GRPC_ERROR_NONE, grpc_core::ExecutorType::DEFAULT,
654
+ absl::OkStatus(), grpc_core::ExecutorType::DEFAULT,
652
655
  grpc_core::ExecutorJobType::LONG);
653
656
  } else {
654
657
  old_count = g_uncovered_notifications_pending++;
@@ -683,7 +686,7 @@ static void tcp_drop_uncovered_then_handle_write(void* arg,
683
686
  grpc_error_handle error) {
684
687
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
685
688
  gpr_log(GPR_INFO, "TCP:%p got_write: %s", arg,
686
- grpc_error_std_string(error).c_str());
689
+ grpc_core::StatusToString(error).c_str());
687
690
  }
688
691
  drop_uncovered(static_cast<grpc_tcp*>(arg));
689
692
  tcp_handle_write(arg, error);
@@ -694,9 +697,9 @@ static void add_to_estimate(grpc_tcp* tcp, size_t bytes) {
694
697
  }
695
698
 
696
699
  static void finish_estimate(grpc_tcp* tcp) {
697
- /* If we read >80% of the target buffer in one read loop, increase the size
698
- of the target buffer to either the amount read, or twice its previous
699
- value */
700
+ // If we read >80% of the target buffer in one read loop, increase the size
701
+ // of the target buffer to either the amount read, or twice its previous
702
+ // value
700
703
  if (tcp->bytes_read_this_round > tcp->target_length * 0.8) {
701
704
  tcp->target_length =
702
705
  std::max(2 * tcp->target_length, tcp->bytes_read_this_round);
@@ -711,11 +714,12 @@ static grpc_error_handle tcp_annotate_error(grpc_error_handle src_error,
711
714
  grpc_tcp* tcp) {
712
715
  return grpc_error_set_str(
713
716
  grpc_error_set_int(
714
- grpc_error_set_int(src_error, GRPC_ERROR_INT_FD, tcp->fd),
715
- /* All tcp errors are marked with UNAVAILABLE so that application may
716
- * choose to retry. */
717
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
718
- GRPC_ERROR_STR_TARGET_ADDRESS, tcp->peer_string);
717
+ grpc_error_set_int(src_error, grpc_core::StatusIntProperty::kFd,
718
+ tcp->fd),
719
+ // All tcp errors are marked with UNAVAILABLE so that application may
720
+ // choose to retry.
721
+ grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE),
722
+ grpc_core::StatusStrProperty::kTargetAddress, tcp->peer_string);
719
723
  }
720
724
 
721
725
  static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error);
@@ -730,15 +734,10 @@ static void tcp_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
730
734
  static void tcp_free(grpc_tcp* tcp) {
731
735
  grpc_fd_orphan(tcp->em_fd, tcp->release_fd_cb, tcp->release_fd,
732
736
  "tcp_unref_orphan");
733
- grpc_slice_buffer_destroy_internal(&tcp->last_read_buffer);
734
- /* The lock is not really necessary here, since all refs have been released */
735
- gpr_mu_lock(&tcp->tb_mu);
736
- grpc_core::TracedBuffer::Shutdown(
737
- &tcp->tb_head, tcp->outgoing_buffer_arg,
738
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("endpoint destroyed"));
739
- gpr_mu_unlock(&tcp->tb_mu);
737
+ grpc_slice_buffer_destroy(&tcp->last_read_buffer);
738
+ tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg,
739
+ GRPC_ERROR_CREATE("endpoint destroyed"));
740
740
  tcp->outgoing_buffer_arg = nullptr;
741
- gpr_mu_destroy(&tcp->tb_mu);
742
741
  delete tcp;
743
742
  }
744
743
 
@@ -770,7 +769,7 @@ static void tcp_ref(grpc_tcp* tcp) { tcp->refcount.Ref(); }
770
769
 
771
770
  static void tcp_destroy(grpc_endpoint* ep) {
772
771
  grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
773
- grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
772
+ grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
774
773
  if (grpc_event_engine_can_track_errors()) {
775
774
  ZerocopyDisableAndWaitForRemaining(tcp);
776
775
  gpr_atm_no_barrier_store(&tcp->stop_error_notification, true);
@@ -786,7 +785,7 @@ static void perform_reclamation(grpc_tcp* tcp)
786
785
  }
787
786
  tcp->read_mu.Lock();
788
787
  if (tcp->incoming_buffer != nullptr) {
789
- grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
788
+ grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
790
789
  }
791
790
  tcp->has_posted_reclaimer = false;
792
791
  tcp->read_mu.Unlock();
@@ -812,12 +811,12 @@ static void tcp_trace_read(grpc_tcp* tcp, grpc_error_handle error)
812
811
  gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
813
812
  size_t i;
814
813
  gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp,
815
- tcp->peer_string.c_str(), grpc_error_std_string(error).c_str());
814
+ tcp->peer_string.c_str(), grpc_core::StatusToString(error).c_str());
816
815
  if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
817
816
  for (i = 0; i < tcp->incoming_buffer->count; i++) {
818
817
  char* dump = grpc_dump_slice(tcp->incoming_buffer->slices[i],
819
818
  GPR_DUMP_HEX | GPR_DUMP_ASCII);
820
- gpr_log(GPR_DEBUG, "DATA: %s", dump);
819
+ gpr_log(GPR_DEBUG, "READ DATA: %s", dump);
821
820
  gpr_free(dump);
822
821
  }
823
822
  }
@@ -861,14 +860,14 @@ static void update_rcvlowat(grpc_tcp* tcp)
861
860
  sizeof(remaining)) != 0) {
862
861
  gpr_log(GPR_ERROR, "%s",
863
862
  absl::StrCat("Cannot set SO_RCVLOWAT on fd=", tcp->fd,
864
- " err=", strerror(errno))
863
+ " err=", grpc_core::StrError(errno).c_str())
865
864
  .c_str());
866
865
  return;
867
866
  }
868
867
  tcp->set_rcvlowat = remaining;
869
868
  }
870
869
 
871
- /* Returns true if data available to read or error other than EAGAIN. */
870
+ // Returns true if data available to read or error other than EAGAIN.
872
871
  #define MAX_READ_IOVEC 64
873
872
  static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
874
873
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
@@ -886,7 +885,7 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
886
885
  CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) + CMSG_SPACE(sizeof(int));
887
886
  #else
888
887
  constexpr size_t cmsg_alloc_space = 24 /* CMSG_SPACE(sizeof(int)) */;
889
- #endif /* GRPC_LINUX_ERRQUEUE */
888
+ #endif // GRPC_LINUX_ERRQUEUE
890
889
  char cmsgbuf[cmsg_alloc_space];
891
890
  for (size_t i = 0; i < iov_len; i++) {
892
891
  iov[i].iov_base = GRPC_SLICE_START_PTR(tcp->incoming_buffer->slices[i]);
@@ -897,9 +896,9 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
897
896
  GPR_DEBUG_ASSERT(tcp->min_progress_size > 0);
898
897
 
899
898
  do {
900
- /* Assume there is something on the queue. If we receive TCP_INQ from
901
- * kernel, we will update this value, otherwise, we have to assume there is
902
- * always something to read until we get EAGAIN. */
899
+ // Assume there is something on the queue. If we receive TCP_INQ from
900
+ // kernel, we will update this value, otherwise, we have to assume there is
901
+ // always something to read until we get EAGAIN.
903
902
  tcp->inq = 1;
904
903
 
905
904
  msg.msg_name = nullptr;
@@ -915,51 +914,49 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
915
914
  }
916
915
  msg.msg_flags = 0;
917
916
 
918
- GRPC_STATS_INC_TCP_READ_OFFER(tcp->incoming_buffer->length);
919
- GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(tcp->incoming_buffer->count);
917
+ grpc_core::global_stats().IncrementTcpReadOffer(
918
+ tcp->incoming_buffer->length);
919
+ grpc_core::global_stats().IncrementTcpReadOfferIovSize(
920
+ tcp->incoming_buffer->count);
920
921
 
921
922
  do {
922
- GRPC_STATS_INC_SYSCALL_READ();
923
+ grpc_core::global_stats().IncrementSyscallRead();
923
924
  read_bytes = recvmsg(tcp->fd, &msg, 0);
924
925
  } while (read_bytes < 0 && errno == EINTR);
925
926
 
926
- /* We have read something in previous reads. We need to deliver those
927
- * bytes to the upper layer. */
928
- if (read_bytes <= 0 &&
929
- total_read_bytes >= static_cast<size_t>(tcp->min_progress_size)) {
927
+ if (read_bytes < 0 && errno == EAGAIN) {
928
+ // NB: After calling call_read_cb a parallel call of the read handler may
929
+ // be running.
930
+ if (total_read_bytes > 0) {
931
+ break;
932
+ }
933
+ finish_estimate(tcp);
934
+ tcp->inq = 0;
935
+ return false;
936
+ }
937
+
938
+ // We have read something in previous reads. We need to deliver those
939
+ // bytes to the upper layer.
940
+ if (read_bytes <= 0 && total_read_bytes >= 1) {
930
941
  tcp->inq = 1;
931
942
  break;
932
943
  }
933
944
 
934
- if (read_bytes < 0) {
935
- /* NB: After calling call_read_cb a parallel call of the read handler may
936
- * be running. */
937
- if (errno == EAGAIN) {
938
- if (total_read_bytes > 0) {
939
- break;
940
- }
941
- finish_estimate(tcp);
942
- tcp->inq = 0;
943
- return false;
945
+ if (read_bytes <= 0) {
946
+ // 0 read size ==> end of stream
947
+ grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
948
+ if (read_bytes == 0) {
949
+ *error = tcp_annotate_error(absl::InternalError("Socket closed"), tcp);
944
950
  } else {
945
- grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
946
- *error = tcp_annotate_error(GRPC_OS_ERROR(errno, "recvmsg"), tcp);
947
- return true;
951
+ *error =
952
+ tcp_annotate_error(absl::InternalError(absl::StrCat(
953
+ "recvmsg:", grpc_core::StrError(errno))),
954
+ tcp);
948
955
  }
949
- }
950
- if (read_bytes == 0) {
951
- /* 0 read size ==> end of stream
952
- *
953
- * We may have read something, i.e., total_read_bytes > 0, but
954
- * since the connection is closed we will drop the data here, because we
955
- * can't call the callback multiple times. */
956
- grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
957
- *error = tcp_annotate_error(
958
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp);
959
956
  return true;
960
957
  }
961
958
 
962
- GRPC_STATS_INC_TCP_READ_SIZE(read_bytes);
959
+ grpc_core::global_stats().IncrementTcpReadSize(read_bytes);
963
960
  add_to_estimate(tcp, static_cast<size_t>(read_bytes));
964
961
  GPR_DEBUG_ASSERT((size_t)read_bytes <=
965
962
  tcp->incoming_buffer->length - total_read_bytes);
@@ -976,15 +973,15 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
976
973
  }
977
974
  }
978
975
  }
979
- #endif /* GRPC_HAVE_TCP_INQ */
976
+ #endif // GRPC_HAVE_TCP_INQ
980
977
 
981
978
  total_read_bytes += read_bytes;
982
979
  if (tcp->inq == 0 || total_read_bytes == tcp->incoming_buffer->length) {
983
980
  break;
984
981
  }
985
982
 
986
- /* We had a partial read, and still have space to read more data.
987
- * So, adjust IOVs and try to read more. */
983
+ // We had a partial read, and still have space to read more data.
984
+ // So, adjust IOVs and try to read more.
988
985
  size_t remaining = read_bytes;
989
986
  size_t j = 0;
990
987
  for (size_t i = 0; i < iov_len; i++) {
@@ -1010,8 +1007,8 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
1010
1007
  }
1011
1008
 
1012
1009
  GPR_DEBUG_ASSERT(total_read_bytes > 0);
1013
- *error = GRPC_ERROR_NONE;
1014
- if (tcp->frame_size_tuning_enabled) {
1010
+ *error = absl::OkStatus();
1011
+ if (grpc_core::IsTcpFrameSizeTuningEnabled()) {
1015
1012
  // Update min progress size based on the total number of bytes read in
1016
1013
  // this round.
1017
1014
  tcp->min_progress_size -= total_read_bytes;
@@ -1069,14 +1066,14 @@ static void maybe_make_read_slices(grpc_tcp* tcp)
1069
1066
  extra_wanted -= kBigAlloc;
1070
1067
  grpc_slice_buffer_add_indexed(tcp->incoming_buffer,
1071
1068
  tcp->memory_owner.MakeSlice(kBigAlloc));
1072
- GRPC_STATS_INC_TCP_READ_ALLOC_64K();
1069
+ grpc_core::global_stats().IncrementTcpReadAlloc64k();
1073
1070
  }
1074
1071
  } else {
1075
1072
  while (extra_wanted > 0) {
1076
1073
  extra_wanted -= kSmallAlloc;
1077
1074
  grpc_slice_buffer_add_indexed(
1078
1075
  tcp->incoming_buffer, tcp->memory_owner.MakeSlice(kSmallAlloc));
1079
- GRPC_STATS_INC_TCP_READ_ALLOC_8K();
1076
+ grpc_core::global_stats().IncrementTcpReadAlloc8k();
1080
1077
  }
1081
1078
  }
1082
1079
  maybe_post_reclaimer(tcp);
@@ -1114,14 +1111,14 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
1114
1111
  grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
1115
1112
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
1116
1113
  gpr_log(GPR_INFO, "TCP:%p got_read: %s", tcp,
1117
- grpc_error_std_string(error).c_str());
1114
+ grpc_core::StatusToString(error).c_str());
1118
1115
  }
1119
1116
  tcp->read_mu.Lock();
1120
1117
  grpc_error_handle tcp_read_error;
1121
- if (GPR_LIKELY(GRPC_ERROR_IS_NONE(error))) {
1118
+ if (GPR_LIKELY(error.ok())) {
1122
1119
  maybe_make_read_slices(tcp);
1123
1120
  if (!tcp_do_read(tcp, &tcp_read_error)) {
1124
- /* We've consumed the edge, request a new one */
1121
+ // We've consumed the edge, request a new one
1125
1122
  update_rcvlowat(tcp);
1126
1123
  tcp->read_mu.Unlock();
1127
1124
  notify_on_read(tcp);
@@ -1129,9 +1126,9 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
1129
1126
  }
1130
1127
  tcp_trace_read(tcp, tcp_read_error);
1131
1128
  } else {
1132
- tcp_read_error = GRPC_ERROR_REF(error);
1133
- grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
1134
- grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
1129
+ tcp_read_error = error;
1130
+ grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
1131
+ grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
1135
1132
  }
1136
1133
  grpc_closure* cb = tcp->read_cb;
1137
1134
  tcp->read_cb = nullptr;
@@ -1148,62 +1145,63 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
1148
1145
  tcp->read_cb = cb;
1149
1146
  tcp->read_mu.Lock();
1150
1147
  tcp->incoming_buffer = incoming_buffer;
1151
- tcp->min_progress_size =
1152
- tcp->frame_size_tuning_enabled ? min_progress_size : 1;
1153
- grpc_slice_buffer_reset_and_unref_internal(incoming_buffer);
1148
+ tcp->min_progress_size = grpc_core::IsTcpFrameSizeTuningEnabled()
1149
+ ? std::max(min_progress_size, 1)
1150
+ : 1;
1151
+ grpc_slice_buffer_reset_and_unref(incoming_buffer);
1154
1152
  grpc_slice_buffer_swap(incoming_buffer, &tcp->last_read_buffer);
1155
1153
  TCP_REF(tcp, "read");
1156
1154
  if (tcp->is_first_read) {
1157
1155
  update_rcvlowat(tcp);
1158
1156
  tcp->read_mu.Unlock();
1159
- /* Endpoint read called for the very first time. Register read callback with
1160
- * the polling engine */
1157
+ // Endpoint read called for the very first time. Register read callback with
1158
+ // the polling engine
1161
1159
  tcp->is_first_read = false;
1162
1160
  notify_on_read(tcp);
1163
1161
  } else if (!urgent && tcp->inq == 0) {
1164
1162
  update_rcvlowat(tcp);
1165
1163
  tcp->read_mu.Unlock();
1166
- /* Upper layer asked to read more but we know there is no pending data
1167
- * to read from previous reads. So, wait for POLLIN.
1168
- */
1164
+ // Upper layer asked to read more but we know there is no pending data
1165
+ // to read from previous reads. So, wait for POLLIN.
1166
+ //
1169
1167
  notify_on_read(tcp);
1170
1168
  } else {
1171
1169
  tcp->read_mu.Unlock();
1172
- /* Not the first time. We may or may not have more bytes available. In any
1173
- * case call tcp->read_done_closure (i.e tcp_handle_read()) which does the
1174
- * right thing (i.e calls tcp_do_read() which either reads the available
1175
- * bytes or calls notify_on_read() to be notified when new bytes become
1176
- * available */
1170
+ // Not the first time. We may or may not have more bytes available. In any
1171
+ // case call tcp->read_done_closure (i.e tcp_handle_read()) which does the
1172
+ // right thing (i.e calls tcp_do_read() which either reads the available
1173
+ // bytes or calls notify_on_read() to be notified when new bytes become
1174
+ // available
1177
1175
  grpc_core::Closure::Run(DEBUG_LOCATION, &tcp->read_done_closure,
1178
- GRPC_ERROR_NONE);
1176
+ absl::OkStatus());
1179
1177
  }
1180
1178
  }
1181
1179
 
1182
- /* A wrapper around sendmsg. It sends \a msg over \a fd and returns the number
1183
- * of bytes sent. */
1180
+ // A wrapper around sendmsg. It sends \a msg over \a fd and returns the number
1181
+ // of bytes sent.
1184
1182
  ssize_t tcp_send(int fd, const struct msghdr* msg, int* saved_errno,
1185
1183
  int additional_flags = 0) {
1186
1184
  ssize_t sent_length;
1187
1185
  do {
1188
- /* TODO(klempner): Cork if this is a partial write */
1189
- GRPC_STATS_INC_SYSCALL_WRITE();
1186
+ // TODO(klempner): Cork if this is a partial write
1187
+ grpc_core::global_stats().IncrementSyscallWrite();
1190
1188
  sent_length = sendmsg(fd, msg, SENDMSG_FLAGS | additional_flags);
1191
1189
  } while (sent_length < 0 && (*saved_errno = errno) == EINTR);
1192
1190
  return sent_length;
1193
1191
  }
1194
1192
 
1195
- /** This is to be called if outgoing_buffer_arg is not null. On linux platforms,
1196
- * this will call sendmsg with socket options set to collect timestamps inside
1197
- * the kernel. On return, sent_length is set to the return value of the sendmsg
1198
- * call. Returns false if setting the socket options failed. This is not
1199
- * implemented for non-linux platforms currently, and crashes out.
1200
- */
1193
+ /// This is to be called if outgoing_buffer_arg is not null. On linux platforms,
1194
+ /// this will call sendmsg with socket options set to collect timestamps inside
1195
+ /// the kernel. On return, sent_length is set to the return value of the sendmsg
1196
+ /// call. Returns false if setting the socket options failed. This is not
1197
+ /// implemented for non-linux platforms currently, and crashes out.
1198
+ ///
1201
1199
  static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
1202
1200
  size_t sending_length,
1203
1201
  ssize_t* sent_length, int* saved_errno,
1204
1202
  int additional_flags = 0);
1205
1203
 
1206
- /** The callback function to be invoked when we get an error on the socket. */
1204
+ /// The callback function to be invoked when we get an error on the socket.
1207
1205
  static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error_handle error);
1208
1206
 
1209
1207
  static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
@@ -1258,7 +1256,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
1258
1256
  tcp->bytes_counter = -1;
1259
1257
  tcp->socket_ts_enabled = true;
1260
1258
  }
1261
- /* Set control message to indicate that you want timestamps. */
1259
+ // Set control message to indicate that you want timestamps.
1262
1260
  union {
1263
1261
  char cmsg_buf[CMSG_SPACE(sizeof(uint32_t))];
1264
1262
  struct cmsghdr align;
@@ -1272,16 +1270,13 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
1272
1270
  msg->msg_control = u.cmsg_buf;
1273
1271
  msg->msg_controllen = CMSG_SPACE(sizeof(uint32_t));
1274
1272
 
1275
- /* If there was an error on sendmsg the logic in tcp_flush will handle it. */
1273
+ // If there was an error on sendmsg the logic in tcp_flush will handle it.
1276
1274
  ssize_t length = tcp_send(tcp->fd, msg, saved_errno, additional_flags);
1277
1275
  *sent_length = length;
1278
- /* Only save timestamps if all the bytes were taken by sendmsg. */
1276
+ // Only save timestamps if all the bytes were taken by sendmsg.
1279
1277
  if (sending_length == static_cast<size_t>(length)) {
1280
- gpr_mu_lock(&tcp->tb_mu);
1281
- grpc_core::TracedBuffer::AddNewEntry(
1282
- &tcp->tb_head, static_cast<uint32_t>(tcp->bytes_counter + length),
1283
- tcp->fd, tcp->outgoing_buffer_arg);
1284
- gpr_mu_unlock(&tcp->tb_mu);
1278
+ tcp->tb_list.AddNewEntry(static_cast<uint32_t>(tcp->bytes_counter + length),
1279
+ tcp->fd, tcp->outgoing_buffer_arg);
1285
1280
  tcp->outgoing_buffer_arg = nullptr;
1286
1281
  }
1287
1282
  return true;
@@ -1327,13 +1322,13 @@ static bool CmsgIsZeroCopy(const cmsghdr& cmsg) {
1327
1322
  return serr->ee_errno == 0 && serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY;
1328
1323
  }
1329
1324
 
1330
- /** Reads \a cmsg to derive timestamps from the control messages. If a valid
1331
- * timestamp is found, the traced buffer list is updated with this timestamp.
1332
- * The caller of this function should be looping on the control messages found
1333
- * in \a msg. \a cmsg should point to the control message that the caller wants
1334
- * processed.
1335
- * On return, a pointer to a control message is returned. On the next iteration,
1336
- * CMSG_NXTHDR(msg, ret_val) should be passed as \a cmsg. */
1325
+ /// Reads \a cmsg to derive timestamps from the control messages. If a valid
1326
+ /// timestamp is found, the traced buffer list is updated with this timestamp.
1327
+ /// The caller of this function should be looping on the control messages found
1328
+ /// in \a msg. \a cmsg should point to the control message that the caller wants
1329
+ /// processed.
1330
+ /// On return, a pointer to a control message is returned. On the next
1331
+ /// iteration, CMSG_NXTHDR(msg, ret_val) should be passed as \a cmsg.
1337
1332
  struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
1338
1333
  struct cmsghdr* cmsg) {
1339
1334
  auto next_cmsg = CMSG_NXTHDR(msg, cmsg);
@@ -1345,7 +1340,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
1345
1340
  return cmsg;
1346
1341
  }
1347
1342
 
1348
- /* Check if next_cmsg is an OPT_STATS msg */
1343
+ // Check if next_cmsg is an OPT_STATS msg
1349
1344
  if (next_cmsg->cmsg_level == SOL_SOCKET &&
1350
1345
  next_cmsg->cmsg_type == SCM_TIMESTAMPING_OPT_STATS) {
1351
1346
  opt_stats = next_cmsg;
@@ -1375,19 +1370,13 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
1375
1370
  gpr_log(GPR_ERROR, "Unexpected control message");
1376
1371
  return cmsg;
1377
1372
  }
1378
- /* The error handling can potentially be done on another thread so we need
1379
- * to protect the traced buffer list. A lock free list might be better. Using
1380
- * a simple mutex for now. */
1381
- gpr_mu_lock(&tcp->tb_mu);
1382
- grpc_core::TracedBuffer::ProcessTimestamp(&tcp->tb_head, serr, opt_stats,
1383
- tss);
1384
- gpr_mu_unlock(&tcp->tb_mu);
1373
+ tcp->tb_list.ProcessTimestamp(serr, opt_stats, tss);
1385
1374
  return next_cmsg;
1386
1375
  }
1387
1376
 
1388
- /** For linux platforms, reads the socket's error queue and processes error
1389
- * messages from the queue.
1390
- */
1377
+ /// For linux platforms, reads the socket's error queue and processes error
1378
+ /// messages from the queue.
1379
+ ///
1391
1380
  static bool process_errors(grpc_tcp* tcp) {
1392
1381
  bool processed_err = false;
1393
1382
  struct iovec iov;
@@ -1399,13 +1388,13 @@ static bool process_errors(grpc_tcp* tcp) {
1399
1388
  msg.msg_iov = &iov;
1400
1389
  msg.msg_iovlen = 0;
1401
1390
  msg.msg_flags = 0;
1402
- /* Allocate enough space so we don't need to keep increasing this as size
1403
- * of OPT_STATS increase */
1391
+ // Allocate enough space so we don't need to keep increasing this as size
1392
+ // of OPT_STATS increase
1404
1393
  constexpr size_t cmsg_alloc_space =
1405
1394
  CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) +
1406
1395
  CMSG_SPACE(sizeof(sock_extended_err) + sizeof(sockaddr_in)) +
1407
1396
  CMSG_SPACE(32 * NLA_ALIGN(NLA_HDRLEN + sizeof(uint64_t)));
1408
- /* Allocate aligned space for cmsgs received along with timestamps */
1397
+ // Allocate aligned space for cmsgs received along with timestamps
1409
1398
  union {
1410
1399
  char rbuf[cmsg_alloc_space];
1411
1400
  struct cmsghdr align;
@@ -1420,7 +1409,7 @@ static bool process_errors(grpc_tcp* tcp) {
1420
1409
  } while (r < 0 && saved_errno == EINTR);
1421
1410
 
1422
1411
  if (r == -1 && saved_errno == EAGAIN) {
1423
- return processed_err; /* No more errors to process */
1412
+ return processed_err; // No more errors to process
1424
1413
  }
1425
1414
  if (r == -1) {
1426
1415
  return processed_err;
@@ -1430,7 +1419,7 @@ static bool process_errors(grpc_tcp* tcp) {
1430
1419
  }
1431
1420
 
1432
1421
  if (msg.msg_controllen == 0) {
1433
- /* There was no control message found. It was probably spurious. */
1422
+ // There was no control message found. It was probably spurious.
1434
1423
  return processed_err;
1435
1424
  }
1436
1425
  bool seen = false;
@@ -1446,8 +1435,8 @@ static bool process_errors(grpc_tcp* tcp) {
1446
1435
  seen = true;
1447
1436
  processed_err = true;
1448
1437
  } else {
1449
- /* Got a control message that is not a timestamp or zerocopy. Don't know
1450
- * how to handle this. */
1438
+ // Got a control message that is not a timestamp or zerocopy. Don't know
1439
+ // how to handle this.
1451
1440
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
1452
1441
  gpr_log(GPR_INFO,
1453
1442
  "unknown control message cmsg_level:%d cmsg_type:%d",
@@ -1467,22 +1456,22 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
1467
1456
  grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
1468
1457
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
1469
1458
  gpr_log(GPR_INFO, "TCP:%p got_error: %s", tcp,
1470
- grpc_error_std_string(error).c_str());
1459
+ grpc_core::StatusToString(error).c_str());
1471
1460
  }
1472
1461
 
1473
- if (!GRPC_ERROR_IS_NONE(error) ||
1462
+ if (!error.ok() ||
1474
1463
  static_cast<bool>(gpr_atm_acq_load(&tcp->stop_error_notification))) {
1475
- /* We aren't going to register to hear on error anymore, so it is safe to
1476
- * unref. */
1464
+ // We aren't going to register to hear on error anymore, so it is safe to
1465
+ // unref.
1477
1466
  TCP_UNREF(tcp, "error-tracking");
1478
1467
  return;
1479
1468
  }
1480
1469
 
1481
- /* We are still interested in collecting timestamps, so let's try reading
1482
- * them. */
1470
+ // We are still interested in collecting timestamps, so let's try reading
1471
+ // them.
1483
1472
  bool processed = process_errors(tcp);
1484
- /* This might not a timestamps error. Set the read and write closures to be
1485
- * ready. */
1473
+ // This might not a timestamps error. Set the read and write closures to be
1474
+ // ready.
1486
1475
  if (!processed) {
1487
1476
  grpc_fd_set_readable(tcp->em_fd);
1488
1477
  grpc_fd_set_writable(tcp->em_fd);
@@ -1490,7 +1479,7 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
1490
1479
  grpc_fd_notify_on_error(tcp->em_fd, &tcp->error_closure);
1491
1480
  }
1492
1481
 
1493
- #else /* GRPC_LINUX_ERRQUEUE */
1482
+ #else // GRPC_LINUX_ERRQUEUE
1494
1483
  static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
1495
1484
  grpc_tcp* /*tcp*/, grpc_slice_buffer* /*buf*/) {
1496
1485
  return nullptr;
@@ -1513,17 +1502,14 @@ static void tcp_handle_error(void* /*arg*/ /* grpc_tcp */,
1513
1502
  gpr_log(GPR_ERROR, "Error handling is not supported for this platform");
1514
1503
  GPR_ASSERT(0);
1515
1504
  }
1516
- #endif /* GRPC_LINUX_ERRQUEUE */
1505
+ #endif // GRPC_LINUX_ERRQUEUE
1517
1506
 
1518
- /* If outgoing_buffer_arg is filled, shuts down the list early, so that any
1519
- * release operations needed can be performed on the arg */
1507
+ // If outgoing_buffer_arg is filled, shuts down the list early, so that any
1508
+ // release operations needed can be performed on the arg
1520
1509
  void tcp_shutdown_buffer_list(grpc_tcp* tcp) {
1521
1510
  if (tcp->outgoing_buffer_arg) {
1522
- gpr_mu_lock(&tcp->tb_mu);
1523
- grpc_core::TracedBuffer::Shutdown(
1524
- &tcp->tb_head, tcp->outgoing_buffer_arg,
1525
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("TracedBuffer list shutdown"));
1526
- gpr_mu_unlock(&tcp->tb_mu);
1511
+ tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg,
1512
+ GRPC_ERROR_CREATE("TracedBuffer list shutdown"));
1527
1513
  tcp->outgoing_buffer_arg = nullptr;
1528
1514
  }
1529
1515
  }
@@ -1606,8 +1592,8 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
1606
1592
  if (!tcp->ts_capable ||
1607
1593
  !tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
1608
1594
  &saved_errno, MSG_ZEROCOPY)) {
1609
- /* We could not set socket options to collect Fathom timestamps.
1610
- * Fallback on writing without timestamps. */
1595
+ // We could not set socket options to collect Fathom timestamps.
1596
+ // Fallback on writing without timestamps.
1611
1597
  tcp->ts_capable = false;
1612
1598
  tcp_shutdown_buffer_list(tcp);
1613
1599
  } else {
@@ -1617,8 +1603,8 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
1617
1603
  if (!tried_sending_message) {
1618
1604
  msg.msg_control = nullptr;
1619
1605
  msg.msg_controllen = 0;
1620
- GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
1621
- GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
1606
+ grpc_core::global_stats().IncrementTcpWriteSize(sending_length);
1607
+ grpc_core::global_stats().IncrementTcpWriteIovSize(iov_size);
1622
1608
  sent_length = tcp_send(tcp->fd, &msg, &saved_errno, MSG_ZEROCOPY);
1623
1609
  }
1624
1610
  if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterSend(
@@ -1641,11 +1627,12 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
1641
1627
  return true;
1642
1628
  }
1643
1629
  }
1630
+ grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
1644
1631
  tcp->bytes_counter += sent_length;
1645
1632
  record->UpdateOffsetForBytesSent(sending_length,
1646
1633
  static_cast<size_t>(sent_length));
1647
1634
  if (record->AllSlicesSent()) {
1648
- *error = GRPC_ERROR_NONE;
1635
+ *error = absl::OkStatus();
1649
1636
  return true;
1650
1637
  }
1651
1638
  }
@@ -1717,8 +1704,8 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
1717
1704
  if (!tcp->ts_capable ||
1718
1705
  !tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
1719
1706
  &saved_errno)) {
1720
- /* We could not set socket options to collect Fathom timestamps.
1721
- * Fallback on writing without timestamps. */
1707
+ // We could not set socket options to collect Fathom timestamps.
1708
+ // Fallback on writing without timestamps.
1722
1709
  tcp->ts_capable = false;
1723
1710
  tcp_shutdown_buffer_list(tcp);
1724
1711
  } else {
@@ -1729,8 +1716,8 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
1729
1716
  msg.msg_control = nullptr;
1730
1717
  msg.msg_controllen = 0;
1731
1718
 
1732
- GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
1733
- GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
1719
+ grpc_core::global_stats().IncrementTcpWriteSize(sending_length);
1720
+ grpc_core::global_stats().IncrementTcpWriteIovSize(iov_size);
1734
1721
 
1735
1722
  sent_length = tcp_send(tcp->fd, &msg, &saved_errno);
1736
1723
  }
@@ -1746,18 +1733,19 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
1746
1733
  return false;
1747
1734
  } else if (saved_errno == EPIPE) {
1748
1735
  *error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
1749
- grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
1736
+ grpc_slice_buffer_reset_and_unref(tcp->outgoing_buffer);
1750
1737
  tcp_shutdown_buffer_list(tcp);
1751
1738
  return true;
1752
1739
  } else {
1753
1740
  *error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
1754
- grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
1741
+ grpc_slice_buffer_reset_and_unref(tcp->outgoing_buffer);
1755
1742
  tcp_shutdown_buffer_list(tcp);
1756
1743
  return true;
1757
1744
  }
1758
1745
  }
1759
1746
 
1760
1747
  GPR_ASSERT(tcp->outgoing_byte_idx == 0);
1748
+ grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
1761
1749
  tcp->bytes_counter += sent_length;
1762
1750
  trailing = sending_length - static_cast<size_t>(sent_length);
1763
1751
  while (trailing > 0) {
@@ -1774,8 +1762,8 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
1774
1762
  }
1775
1763
  }
1776
1764
  if (outgoing_slice_idx == tcp->outgoing_buffer->count) {
1777
- *error = GRPC_ERROR_NONE;
1778
- grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
1765
+ *error = absl::OkStatus();
1766
+ grpc_slice_buffer_reset_and_unref(tcp->outgoing_buffer);
1779
1767
  return true;
1780
1768
  }
1781
1769
  }
@@ -1786,7 +1774,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
1786
1774
  grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
1787
1775
  grpc_closure* cb;
1788
1776
 
1789
- if (!GRPC_ERROR_IS_NONE(error)) {
1777
+ if (!error.ok()) {
1790
1778
  cb = tcp->write_cb;
1791
1779
  tcp->write_cb = nullptr;
1792
1780
  if (tcp->current_zerocopy_send != nullptr) {
@@ -1794,7 +1782,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
1794
1782
  "handle_write_err");
1795
1783
  tcp->current_zerocopy_send = nullptr;
1796
1784
  }
1797
- grpc_core::Closure::Run(DEBUG_LOCATION, cb, GRPC_ERROR_REF(error));
1785
+ grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
1798
1786
  TCP_UNREF(tcp, "write");
1799
1787
  return;
1800
1788
  }
@@ -1808,13 +1796,13 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
1808
1796
  }
1809
1797
  notify_on_write(tcp);
1810
1798
  // tcp_flush does not populate error if it has returned false.
1811
- GPR_DEBUG_ASSERT(GRPC_ERROR_IS_NONE(error));
1799
+ GPR_DEBUG_ASSERT(error.ok());
1812
1800
  } else {
1813
1801
  cb = tcp->write_cb;
1814
1802
  tcp->write_cb = nullptr;
1815
1803
  tcp->current_zerocopy_send = nullptr;
1816
1804
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
1817
- gpr_log(GPR_INFO, "write: %s", grpc_error_std_string(error).c_str());
1805
+ gpr_log(GPR_INFO, "write: %s", grpc_core::StatusToString(error).c_str());
1818
1806
  }
1819
1807
  // No need to take a ref on error since tcp_flush provides a ref.
1820
1808
  grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
@@ -1825,9 +1813,11 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
1825
1813
  static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
1826
1814
  grpc_closure* cb, void* arg, int /*max_frame_size*/) {
1827
1815
  grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
1828
- grpc_error_handle error = GRPC_ERROR_NONE;
1816
+ grpc_error_handle error;
1829
1817
  TcpZerocopySendRecord* zerocopy_send_record = nullptr;
1830
1818
 
1819
+ grpc_core::EventLog::Append("tcp-write-outstanding", buf->length);
1820
+
1831
1821
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
1832
1822
  size_t i;
1833
1823
 
@@ -1836,7 +1826,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
1836
1826
  if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1837
1827
  char* data =
1838
1828
  grpc_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
1839
- gpr_log(GPR_DEBUG, "DATA: %s", data);
1829
+ gpr_log(GPR_DEBUG, "WRITE DATA: %s", data);
1840
1830
  gpr_free(data);
1841
1831
  }
1842
1832
  }
@@ -1849,9 +1839,8 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
1849
1839
  grpc_core::Closure::Run(
1850
1840
  DEBUG_LOCATION, cb,
1851
1841
  grpc_fd_is_shutdown(tcp->em_fd)
1852
- ? tcp_annotate_error(GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF"),
1853
- tcp)
1854
- : GRPC_ERROR_NONE);
1842
+ ? tcp_annotate_error(GRPC_ERROR_CREATE("EOF"), tcp)
1843
+ : absl::OkStatus());
1855
1844
  tcp_shutdown_buffer_list(tcp);
1856
1845
  return;
1857
1846
  }
@@ -1881,7 +1870,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
1881
1870
  notify_on_write(tcp);
1882
1871
  } else {
1883
1872
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
1884
- gpr_log(GPR_INFO, "write: %s", grpc_error_std_string(error).c_str());
1873
+ gpr_log(GPR_INFO, "write: %s", grpc_core::StatusToString(error).c_str());
1885
1874
  }
1886
1875
  grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
1887
1876
  }
@@ -1974,13 +1963,12 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1974
1963
  tcp->release_fd = nullptr;
1975
1964
  tcp->target_length = static_cast<double>(options.tcp_read_chunk_size);
1976
1965
  tcp->bytes_read_this_round = 0;
1977
- /* Will be set to false by the very first endpoint read function */
1966
+ // Will be set to false by the very first endpoint read function
1978
1967
  tcp->is_first_read = true;
1979
1968
  tcp->bytes_counter = -1;
1980
1969
  tcp->socket_ts_enabled = false;
1981
1970
  tcp->ts_capable = true;
1982
1971
  tcp->outgoing_buffer_arg = nullptr;
1983
- tcp->frame_size_tuning_enabled = grpc_core::IsTcpFrameSizeTuningEnabled();
1984
1972
  tcp->min_progress_size = 1;
1985
1973
  if (options.tcp_tx_zero_copy_enabled &&
1986
1974
  !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
@@ -1995,14 +1983,12 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1995
1983
  }
1996
1984
  #endif
1997
1985
  }
1998
- /* paired with unref in grpc_tcp_destroy */
1986
+ // paired with unref in grpc_tcp_destroy
1999
1987
  new (&tcp->refcount) grpc_core::RefCount(
2000
1988
  1, GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) ? "tcp" : nullptr);
2001
1989
  gpr_atm_no_barrier_store(&tcp->shutdown_count, 0);
2002
1990
  tcp->em_fd = em_fd;
2003
1991
  grpc_slice_buffer_init(&tcp->last_read_buffer);
2004
- gpr_mu_init(&tcp->tb_mu);
2005
- tcp->tb_head = nullptr;
2006
1992
  GRPC_CLOSURE_INIT(&tcp->read_done_closure, tcp_handle_read, tcp,
2007
1993
  grpc_schedule_on_exec_ctx);
2008
1994
  if (grpc_event_engine_run_in_background()) {
@@ -2015,7 +2001,7 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
2015
2001
  tcp_drop_uncovered_then_handle_write, tcp,
2016
2002
  grpc_schedule_on_exec_ctx);
2017
2003
  }
2018
- /* Always assume there is something on the queue to read. */
2004
+ // Always assume there is something on the queue to read.
2019
2005
  tcp->inq = 1;
2020
2006
  #ifdef GRPC_HAVE_TCP_INQ
2021
2007
  int one = 1;
@@ -2027,12 +2013,12 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
2027
2013
  }
2028
2014
  #else
2029
2015
  tcp->inq_capable = false;
2030
- #endif /* GRPC_HAVE_TCP_INQ */
2031
- /* Start being notified on errors if event engine can track errors. */
2016
+ #endif // GRPC_HAVE_TCP_INQ
2017
+ // Start being notified on errors if event engine can track errors.
2032
2018
  if (grpc_event_engine_can_track_errors()) {
2033
- /* Grab a ref to tcp so that we can safely access the tcp struct when
2034
- * processing errors. We unref when we no longer want to track errors
2035
- * separately. */
2019
+ // Grab a ref to tcp so that we can safely access the tcp struct when
2020
+ // processing errors. We unref when we no longer want to track errors
2021
+ // separately.
2036
2022
  TCP_REF(tcp, "error-tracking");
2037
2023
  gpr_atm_rel_store(&tcp->stop_error_notification, 0);
2038
2024
  GRPC_CLOSURE_INIT(&tcp->error_closure, tcp_handle_error, tcp,
@@ -2055,9 +2041,9 @@ void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd,
2055
2041
  GPR_ASSERT(ep->vtable == &vtable);
2056
2042
  tcp->release_fd = fd;
2057
2043
  tcp->release_fd_cb = done;
2058
- grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
2044
+ grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
2059
2045
  if (grpc_event_engine_can_track_errors()) {
2060
- /* Stop errors notification. */
2046
+ // Stop errors notification.
2061
2047
  ZerocopyDisableAndWaitForRemaining(tcp);
2062
2048
  gpr_atm_no_barrier_store(&tcp->stop_error_notification, true);
2063
2049
  grpc_fd_set_error(tcp->em_fd);
@@ -2072,4 +2058,4 @@ void grpc_tcp_posix_shutdown() {
2072
2058
  g_backup_poller_mu = nullptr;
2073
2059
  }
2074
2060
 
2075
- #endif /* GRPC_POSIX_SOCKET_TCP */
2061
+ #endif // GRPC_POSIX_SOCKET_TCP