grpc 1.50.0 → 1.51.0

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

Potentially problematic release.


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

Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +131 -42
  3. data/include/grpc/event_engine/event_engine.h +10 -3
  4. data/include/grpc/event_engine/slice_buffer.h +17 -0
  5. data/include/grpc/grpc.h +0 -10
  6. data/include/grpc/impl/codegen/grpc_types.h +1 -5
  7. data/include/grpc/impl/codegen/port_platform.h +0 -3
  8. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  11. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
  12. data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
  13. data/src/core/ext/filters/client_channel/client_channel.h +3 -4
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
  15. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  17. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  18. data/src/core/ext/filters/client_channel/connector.h +1 -1
  19. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
  20. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  21. data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
  22. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
  34. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
  36. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  54. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
  59. data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
  60. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  61. data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
  62. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  64. data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
  65. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  70. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  71. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
  73. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  74. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
  75. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
  77. data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
  78. data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
  79. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
  86. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
  92. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  93. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
  94. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
  96. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
  97. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
  102. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
  103. data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
  104. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
  105. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
  106. data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
  107. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
  108. data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
  109. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  110. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  111. data/src/core/ext/xds/xds_api.cc +15 -68
  112. data/src/core/ext/xds/xds_api.h +3 -7
  113. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  114. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  115. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  116. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  117. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  118. data/src/core/ext/xds/xds_client.cc +122 -90
  119. data/src/core/ext/xds/xds_client.h +7 -2
  120. data/src/core/ext/xds/xds_client_grpc.cc +5 -24
  121. data/src/core/ext/xds/xds_cluster.cc +291 -183
  122. data/src/core/ext/xds/xds_cluster.h +11 -15
  123. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
  124. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
  125. data/src/core/ext/xds/xds_common_types.cc +208 -141
  126. data/src/core/ext/xds/xds_common_types.h +19 -13
  127. data/src/core/ext/xds/xds_endpoint.cc +214 -129
  128. data/src/core/ext/xds/xds_endpoint.h +4 -7
  129. data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
  130. data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
  131. data/src/core/ext/xds/xds_http_filters.cc +60 -73
  132. data/src/core/ext/xds/xds_http_filters.h +67 -19
  133. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
  134. data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
  135. data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
  136. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  137. data/src/core/ext/xds/xds_listener.cc +459 -417
  138. data/src/core/ext/xds/xds_listener.h +43 -47
  139. data/src/core/ext/xds/xds_resource_type.h +3 -11
  140. data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
  141. data/src/core/ext/xds/xds_route_config.cc +94 -80
  142. data/src/core/ext/xds/xds_route_config.h +10 -10
  143. data/src/core/ext/xds/xds_routing.cc +2 -1
  144. data/src/core/ext/xds/xds_routing.h +2 -0
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
  146. data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
  147. data/src/core/lib/address_utils/parse_address.cc +11 -10
  148. data/src/core/lib/channel/channel_args.h +16 -1
  149. data/src/core/lib/channel/channel_stack.cc +23 -20
  150. data/src/core/lib/channel/channel_stack.h +17 -4
  151. data/src/core/lib/channel/channel_stack_builder.cc +4 -7
  152. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  153. data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
  154. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  155. data/src/core/lib/channel/channel_trace.cc +4 -5
  156. data/src/core/lib/channel/channelz.cc +1 -1
  157. data/src/core/lib/channel/connected_channel.cc +695 -35
  158. data/src/core/lib/channel/connected_channel.h +0 -4
  159. data/src/core/lib/channel/promise_based_filter.cc +1004 -140
  160. data/src/core/lib/channel/promise_based_filter.h +364 -87
  161. data/src/core/lib/compression/message_compress.cc +5 -5
  162. data/src/core/lib/debug/event_log.cc +88 -0
  163. data/src/core/lib/debug/event_log.h +81 -0
  164. data/src/core/lib/debug/histogram_view.cc +69 -0
  165. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  166. data/src/core/lib/debug/stats.cc +22 -119
  167. data/src/core/lib/debug/stats.h +29 -35
  168. data/src/core/lib/debug/stats_data.cc +224 -73
  169. data/src/core/lib/debug/stats_data.h +263 -122
  170. data/src/core/lib/event_engine/common_closures.h +71 -0
  171. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  172. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  173. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  174. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  175. data/src/core/lib/event_engine/poller.h +10 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
  177. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  178. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
  179. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  180. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  181. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  182. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  184. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
  186. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  187. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
  189. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  191. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  192. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
  193. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
  194. data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
  195. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
  196. data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
  197. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
  198. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
  199. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
  200. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  201. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
  202. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  203. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  204. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  205. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  206. data/src/core/lib/event_engine/slice.cc +7 -6
  207. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  208. data/src/core/lib/event_engine/thread_pool.cc +106 -25
  209. data/src/core/lib/event_engine/thread_pool.h +32 -9
  210. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  211. data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  213. data/src/core/lib/experiments/config.cc +1 -1
  214. data/src/core/lib/experiments/experiments.cc +13 -2
  215. data/src/core/lib/experiments/experiments.h +8 -1
  216. data/src/core/lib/gpr/cpu_linux.cc +6 -2
  217. data/src/core/lib/gpr/log_linux.cc +3 -4
  218. data/src/core/lib/gpr/string.h +1 -1
  219. data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
  220. data/src/core/lib/gprpp/load_file.cc +75 -0
  221. data/src/core/lib/gprpp/load_file.h +33 -0
  222. data/src/core/lib/gprpp/per_cpu.h +46 -0
  223. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  224. data/src/core/lib/gprpp/stat_windows.cc +3 -2
  225. data/src/core/lib/gprpp/status_helper.h +1 -3
  226. data/src/core/lib/gprpp/strerror.cc +41 -0
  227. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
  228. data/src/core/lib/gprpp/thd_windows.cc +1 -2
  229. data/src/core/lib/gprpp/time.cc +3 -4
  230. data/src/core/lib/gprpp/time.h +13 -2
  231. data/src/core/lib/gprpp/validation_errors.h +18 -1
  232. data/src/core/lib/http/httpcli.cc +40 -44
  233. data/src/core/lib/http/httpcli.h +6 -5
  234. data/src/core/lib/http/httpcli_security_connector.cc +4 -6
  235. data/src/core/lib/http/parser.cc +54 -65
  236. data/src/core/lib/iomgr/buffer_list.cc +105 -116
  237. data/src/core/lib/iomgr/buffer_list.h +60 -44
  238. data/src/core/lib/iomgr/call_combiner.cc +11 -10
  239. data/src/core/lib/iomgr/call_combiner.h +3 -4
  240. data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
  241. data/src/core/lib/iomgr/closure.h +49 -5
  242. data/src/core/lib/iomgr/combiner.cc +2 -2
  243. data/src/core/lib/iomgr/endpoint.h +1 -1
  244. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
  245. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  246. data/src/core/lib/iomgr/error.cc +27 -42
  247. data/src/core/lib/iomgr/error.h +22 -152
  248. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  249. data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
  250. data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
  251. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  252. data/src/core/lib/iomgr/exec_ctx.h +2 -3
  253. data/src/core/lib/iomgr/executor.cc +1 -2
  254. data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
  255. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  256. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  257. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
  258. data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
  259. data/src/core/lib/iomgr/load_file.cc +5 -9
  260. data/src/core/lib/iomgr/lockfree_event.cc +10 -10
  261. data/src/core/lib/iomgr/pollset_windows.cc +4 -4
  262. data/src/core/lib/iomgr/python_util.h +2 -2
  263. data/src/core/lib/iomgr/resolve_address.cc +8 -3
  264. data/src/core/lib/iomgr/resolve_address.h +3 -4
  265. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  266. data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
  267. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  268. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
  269. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  270. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
  271. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
  272. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  273. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  274. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
  275. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
  276. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
  277. data/src/core/lib/iomgr/tcp_posix.cc +92 -108
  278. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
  279. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  280. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
  284. data/src/core/lib/iomgr/tcp_windows.cc +27 -34
  285. data/src/core/lib/iomgr/timer.h +8 -8
  286. data/src/core/lib/iomgr/timer_generic.cc +9 -15
  287. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  288. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
  289. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
  290. data/src/core/lib/json/json_channel_args.h +42 -0
  291. data/src/core/lib/json/json_object_loader.cc +7 -2
  292. data/src/core/lib/json/json_object_loader.h +22 -0
  293. data/src/core/lib/json/json_util.cc +5 -5
  294. data/src/core/lib/json/json_util.h +4 -4
  295. data/src/core/lib/load_balancing/lb_policy.cc +1 -1
  296. data/src/core/lib/load_balancing/lb_policy.h +4 -0
  297. data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
  298. data/src/core/lib/matchers/matchers.cc +3 -4
  299. data/src/core/lib/promise/activity.cc +16 -2
  300. data/src/core/lib/promise/activity.h +38 -15
  301. data/src/core/lib/promise/arena_promise.h +80 -51
  302. data/src/core/lib/promise/context.h +13 -6
  303. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  304. data/src/core/lib/promise/detail/promise_factory.h +58 -10
  305. data/src/core/lib/promise/detail/status.h +28 -0
  306. data/src/core/lib/promise/detail/switch.h +1455 -0
  307. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
  308. data/src/core/lib/promise/for_each.h +129 -0
  309. data/src/core/lib/promise/loop.h +7 -5
  310. data/src/core/lib/promise/map_pipe.h +87 -0
  311. data/src/core/lib/promise/pipe.cc +19 -0
  312. data/src/core/lib/promise/pipe.h +505 -0
  313. data/src/core/lib/promise/poll.h +13 -0
  314. data/src/core/lib/promise/seq.h +3 -5
  315. data/src/core/lib/promise/sleep.cc +5 -4
  316. data/src/core/lib/promise/sleep.h +1 -2
  317. data/src/core/lib/promise/try_concurrently.h +341 -0
  318. data/src/core/lib/promise/try_seq.h +10 -13
  319. data/src/core/lib/resolver/server_address.cc +1 -0
  320. data/src/core/lib/resolver/server_address.h +1 -3
  321. data/src/core/lib/resource_quota/api.cc +0 -1
  322. data/src/core/lib/resource_quota/arena.cc +19 -0
  323. data/src/core/lib/resource_quota/arena.h +89 -0
  324. data/src/core/lib/resource_quota/memory_quota.cc +1 -0
  325. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  326. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  327. data/src/core/lib/security/authorization/matchers.cc +25 -22
  328. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  329. data/src/core/lib/security/context/security_context.h +10 -0
  330. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  331. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  333. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  334. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  335. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
  341. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
  345. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  350. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
  354. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
  355. data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
  356. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
  357. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
  358. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
  359. data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
  360. data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
  361. data/src/core/lib/security/transport/security_handshaker.cc +53 -53
  362. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  363. data/src/core/lib/security/transport/tsi_error.cc +6 -3
  364. data/src/core/lib/security/util/json_util.cc +4 -5
  365. data/src/core/lib/service_config/service_config.h +1 -1
  366. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  367. data/src/core/lib/service_config/service_config_impl.h +14 -17
  368. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  369. data/src/core/lib/service_config/service_config_parser.h +14 -10
  370. data/src/core/lib/slice/b64.cc +2 -2
  371. data/src/core/lib/slice/slice.cc +7 -1
  372. data/src/core/lib/slice/slice.h +19 -6
  373. data/src/core/lib/slice/slice_buffer.cc +13 -14
  374. data/src/core/lib/slice/slice_internal.h +13 -21
  375. data/src/core/lib/slice/slice_refcount.h +34 -19
  376. data/src/core/lib/surface/byte_buffer.cc +3 -4
  377. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  378. data/src/core/lib/surface/call.cc +1366 -239
  379. data/src/core/lib/surface/call.h +44 -0
  380. data/src/core/lib/surface/call_details.cc +3 -3
  381. data/src/core/lib/surface/call_trace.cc +113 -0
  382. data/src/core/lib/surface/call_trace.h +30 -0
  383. data/src/core/lib/surface/channel.cc +44 -49
  384. data/src/core/lib/surface/channel.h +9 -1
  385. data/src/core/lib/surface/channel_ping.cc +1 -1
  386. data/src/core/lib/surface/channel_stack_type.cc +4 -0
  387. data/src/core/lib/surface/channel_stack_type.h +2 -0
  388. data/src/core/lib/surface/completion_queue.cc +38 -52
  389. data/src/core/lib/surface/init.cc +8 -39
  390. data/src/core/lib/surface/init_internally.h +8 -0
  391. data/src/core/lib/surface/lame_client.cc +10 -8
  392. data/src/core/lib/surface/server.cc +48 -70
  393. data/src/core/lib/surface/server.h +3 -4
  394. data/src/core/lib/surface/validate_metadata.cc +11 -12
  395. data/src/core/lib/surface/version.cc +2 -2
  396. data/src/core/lib/transport/connectivity_state.cc +2 -2
  397. data/src/core/lib/transport/error_utils.cc +34 -28
  398. data/src/core/lib/transport/error_utils.h +3 -3
  399. data/src/core/lib/transport/handshaker.cc +14 -14
  400. data/src/core/lib/transport/handshaker.h +1 -1
  401. data/src/core/lib/transport/handshaker_factory.h +26 -0
  402. data/src/core/lib/transport/handshaker_registry.cc +8 -2
  403. data/src/core/lib/transport/handshaker_registry.h +3 -4
  404. data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
  405. data/src/core/lib/transport/metadata_batch.h +17 -1
  406. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  407. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  408. data/src/core/lib/transport/transport.cc +63 -17
  409. data/src/core/lib/transport/transport.h +64 -68
  410. data/src/core/lib/transport/transport_impl.h +1 -1
  411. data/src/core/lib/transport/transport_op_string.cc +7 -6
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
  413. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
  416. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  417. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
  418. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
  419. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  420. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
  421. data/src/core/tsi/fake_transport_security.cc +3 -3
  422. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
  423. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  424. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
  425. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
  426. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
  427. data/src/ruby/lib/grpc/version.rb +1 -1
  428. data/src/ruby/spec/channel_spec.rb +0 -43
  429. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  430. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  431. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  432. data/third_party/zlib/compress.c +3 -3
  433. data/third_party/zlib/crc32.c +21 -12
  434. data/third_party/zlib/deflate.c +112 -106
  435. data/third_party/zlib/deflate.h +2 -2
  436. data/third_party/zlib/gzlib.c +1 -1
  437. data/third_party/zlib/gzread.c +3 -5
  438. data/third_party/zlib/gzwrite.c +1 -1
  439. data/third_party/zlib/infback.c +10 -7
  440. data/third_party/zlib/inflate.c +5 -2
  441. data/third_party/zlib/inftrees.c +2 -2
  442. data/third_party/zlib/inftrees.h +1 -1
  443. data/third_party/zlib/trees.c +61 -62
  444. data/third_party/zlib/uncompr.c +2 -2
  445. data/third_party/zlib/zconf.h +16 -3
  446. data/third_party/zlib/zlib.h +10 -10
  447. data/third_party/zlib/zutil.c +9 -7
  448. data/third_party/zlib/zutil.h +1 -0
  449. metadata +55 -18
  450. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  451. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  452. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  453. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  454. data/src/core/lib/gpr/murmur_hash.h +0 -29
  455. data/src/core/lib/gpr/tls.h +0 -156
  456. data/src/core/lib/promise/call_push_pull.h +0 -148
  457. data/src/core/lib/slice/slice_api.cc +0 -39
  458. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  459. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -48,6 +48,7 @@
48
48
  #include "src/core/lib/channel/channelz.h"
49
49
  #include "src/core/lib/debug/trace.h"
50
50
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
51
+ #include "src/core/lib/gprpp/status_helper.h"
51
52
  #include "src/core/lib/gprpp/time.h"
52
53
  #include "src/core/lib/iomgr/error.h"
53
54
  #include "src/core/lib/transport/bdp_estimator.h"
@@ -130,7 +131,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
130
131
  const uint8_t* cur = beg;
131
132
  grpc_error_handle err;
132
133
 
133
- if (cur == end) return GRPC_ERROR_NONE;
134
+ if (cur == end) return absl::OkStatus();
134
135
 
135
136
  switch (t->deframe_state) {
136
137
  case GRPC_DTS_CLIENT_PREFIX_0:
@@ -159,7 +160,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
159
160
  case GRPC_DTS_CLIENT_PREFIX_23:
160
161
  while (cur != end && t->deframe_state != GRPC_DTS_FH_0) {
161
162
  if (*cur != GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state]) {
162
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
163
+ return GRPC_ERROR_CREATE(absl::StrFormat(
163
164
  "Connect string mismatch: expected '%c' (%d) got '%c' (%d) "
164
165
  "at byte %d",
165
166
  get_utf8_safe_char(
@@ -175,7 +176,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
175
176
  1 + static_cast<int>(t->deframe_state));
176
177
  }
177
178
  if (cur == end) {
178
- return GRPC_ERROR_NONE;
179
+ return absl::OkStatus();
179
180
  }
180
181
  dts_fh_0:
181
182
  ABSL_FALLTHROUGH_INTENDED;
@@ -184,7 +185,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
184
185
  t->incoming_frame_size = (static_cast<uint32_t>(*cur)) << 16;
185
186
  if (++cur == end) {
186
187
  t->deframe_state = GRPC_DTS_FH_1;
187
- return GRPC_ERROR_NONE;
188
+ return absl::OkStatus();
188
189
  }
189
190
  ABSL_FALLTHROUGH_INTENDED;
190
191
  case GRPC_DTS_FH_1:
@@ -192,7 +193,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
192
193
  t->incoming_frame_size |= (static_cast<uint32_t>(*cur)) << 8;
193
194
  if (++cur == end) {
194
195
  t->deframe_state = GRPC_DTS_FH_2;
195
- return GRPC_ERROR_NONE;
196
+ return absl::OkStatus();
196
197
  }
197
198
  ABSL_FALLTHROUGH_INTENDED;
198
199
  case GRPC_DTS_FH_2:
@@ -200,7 +201,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
200
201
  t->incoming_frame_size |= *cur;
201
202
  if (++cur == end) {
202
203
  t->deframe_state = GRPC_DTS_FH_3;
203
- return GRPC_ERROR_NONE;
204
+ return absl::OkStatus();
204
205
  }
205
206
  ABSL_FALLTHROUGH_INTENDED;
206
207
  case GRPC_DTS_FH_3:
@@ -208,7 +209,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
208
209
  t->incoming_frame_type = *cur;
209
210
  if (++cur == end) {
210
211
  t->deframe_state = GRPC_DTS_FH_4;
211
- return GRPC_ERROR_NONE;
212
+ return absl::OkStatus();
212
213
  }
213
214
  ABSL_FALLTHROUGH_INTENDED;
214
215
  case GRPC_DTS_FH_4:
@@ -216,7 +217,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
216
217
  t->incoming_frame_flags = *cur;
217
218
  if (++cur == end) {
218
219
  t->deframe_state = GRPC_DTS_FH_5;
219
- return GRPC_ERROR_NONE;
220
+ return absl::OkStatus();
220
221
  }
221
222
  ABSL_FALLTHROUGH_INTENDED;
222
223
  case GRPC_DTS_FH_5:
@@ -224,7 +225,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
224
225
  t->incoming_stream_id = ((static_cast<uint32_t>(*cur)) & 0x7f) << 24;
225
226
  if (++cur == end) {
226
227
  t->deframe_state = GRPC_DTS_FH_6;
227
- return GRPC_ERROR_NONE;
228
+ return absl::OkStatus();
228
229
  }
229
230
  ABSL_FALLTHROUGH_INTENDED;
230
231
  case GRPC_DTS_FH_6:
@@ -232,7 +233,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
232
233
  t->incoming_stream_id |= (static_cast<uint32_t>(*cur)) << 16;
233
234
  if (++cur == end) {
234
235
  t->deframe_state = GRPC_DTS_FH_7;
235
- return GRPC_ERROR_NONE;
236
+ return absl::OkStatus();
236
237
  }
237
238
  ABSL_FALLTHROUGH_INTENDED;
238
239
  case GRPC_DTS_FH_7:
@@ -240,7 +241,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
240
241
  t->incoming_stream_id |= (static_cast<uint32_t>(*cur)) << 8;
241
242
  if (++cur == end) {
242
243
  t->deframe_state = GRPC_DTS_FH_8;
243
- return GRPC_ERROR_NONE;
244
+ return absl::OkStatus();
244
245
  }
245
246
  ABSL_FALLTHROUGH_INTENDED;
246
247
  case GRPC_DTS_FH_8:
@@ -248,31 +249,31 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
248
249
  t->incoming_stream_id |= (static_cast<uint32_t>(*cur));
249
250
  t->deframe_state = GRPC_DTS_FRAME;
250
251
  err = init_frame_parser(t);
251
- if (!GRPC_ERROR_IS_NONE(err)) {
252
+ if (!err.ok()) {
252
253
  return err;
253
254
  }
254
255
  if (t->incoming_frame_size == 0) {
255
256
  err = parse_frame_slice(t, grpc_empty_slice(), 1);
256
- if (!GRPC_ERROR_IS_NONE(err)) {
257
+ if (!err.ok()) {
257
258
  return err;
258
259
  }
259
260
  t->incoming_stream = nullptr;
260
261
  if (++cur == end) {
261
262
  t->deframe_state = GRPC_DTS_FH_0;
262
- return GRPC_ERROR_NONE;
263
+ return absl::OkStatus();
263
264
  }
264
265
  goto dts_fh_0; /* loop */
265
266
  } else if (t->incoming_frame_size >
266
267
  t->settings[GRPC_ACKED_SETTINGS]
267
268
  [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
268
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
269
+ return GRPC_ERROR_CREATE(
269
270
  absl::StrFormat("Frame size %d is larger than max frame size %d",
270
271
  t->incoming_frame_size,
271
272
  t->settings[GRPC_ACKED_SETTINGS]
272
273
  [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]));
273
274
  }
274
275
  if (++cur == end) {
275
- return GRPC_ERROR_NONE;
276
+ return absl::OkStatus();
276
277
  }
277
278
  ABSL_FALLTHROUGH_INTENDED;
278
279
  case GRPC_DTS_FRAME:
@@ -283,12 +284,12 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
283
284
  grpc_slice_sub_no_ref(slice, static_cast<size_t>(cur - beg),
284
285
  static_cast<size_t>(end - beg)),
285
286
  1);
286
- if (!GRPC_ERROR_IS_NONE(err)) {
287
+ if (!err.ok()) {
287
288
  return err;
288
289
  }
289
290
  t->deframe_state = GRPC_DTS_FH_0;
290
291
  t->incoming_stream = nullptr;
291
- return GRPC_ERROR_NONE;
292
+ return absl::OkStatus();
292
293
  } else if (static_cast<uint32_t>(end - cur) > t->incoming_frame_size) {
293
294
  size_t cur_offset = static_cast<size_t>(cur - beg);
294
295
  err = parse_frame_slice(
@@ -296,7 +297,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
296
297
  grpc_slice_sub_no_ref(slice, cur_offset,
297
298
  cur_offset + t->incoming_frame_size),
298
299
  1);
299
- if (!GRPC_ERROR_IS_NONE(err)) {
300
+ if (!err.ok()) {
300
301
  return err;
301
302
  }
302
303
  cur += t->incoming_frame_size;
@@ -308,34 +309,34 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
308
309
  grpc_slice_sub_no_ref(slice, static_cast<size_t>(cur - beg),
309
310
  static_cast<size_t>(end - beg)),
310
311
  0);
311
- if (!GRPC_ERROR_IS_NONE(err)) {
312
+ if (!err.ok()) {
312
313
  return err;
313
314
  }
314
315
  t->incoming_frame_size -= static_cast<uint32_t>(end - cur);
315
- return GRPC_ERROR_NONE;
316
+ return absl::OkStatus();
316
317
  }
317
- GPR_UNREACHABLE_CODE(return GRPC_ERROR_NONE);
318
+ GPR_UNREACHABLE_CODE(return absl::OkStatus());
318
319
  }
319
320
 
320
- GPR_UNREACHABLE_CODE(return GRPC_ERROR_NONE);
321
+ GPR_UNREACHABLE_CODE(return absl::OkStatus());
321
322
  }
322
323
 
323
324
  static grpc_error_handle init_frame_parser(grpc_chttp2_transport* t) {
324
325
  if (t->is_first_frame &&
325
326
  t->incoming_frame_type != GRPC_CHTTP2_FRAME_SETTINGS) {
326
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
327
+ return GRPC_ERROR_CREATE(absl::StrCat(
327
328
  "Expected SETTINGS frame as the first frame, got frame type ",
328
329
  t->incoming_frame_type));
329
330
  }
330
331
  t->is_first_frame = false;
331
332
  if (t->expect_continuation_stream_id != 0) {
332
333
  if (t->incoming_frame_type != GRPC_CHTTP2_FRAME_CONTINUATION) {
333
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
334
+ return GRPC_ERROR_CREATE(
334
335
  absl::StrFormat("Expected CONTINUATION frame, got frame type %02x",
335
336
  t->incoming_frame_type));
336
337
  }
337
338
  if (t->expect_continuation_stream_id != t->incoming_stream_id) {
338
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrFormat(
339
+ return GRPC_ERROR_CREATE(absl::StrFormat(
339
340
  "Expected CONTINUATION frame for grpc_chttp2_stream %08x, got "
340
341
  "grpc_chttp2_stream %08x",
341
342
  t->expect_continuation_stream_id, t->incoming_stream_id));
@@ -348,8 +349,7 @@ static grpc_error_handle init_frame_parser(grpc_chttp2_transport* t) {
348
349
  case GRPC_CHTTP2_FRAME_HEADER:
349
350
  return init_header_frame_parser(t, 0);
350
351
  case GRPC_CHTTP2_FRAME_CONTINUATION:
351
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
352
- "Unexpected CONTINUATION frame");
352
+ return GRPC_ERROR_CREATE("Unexpected CONTINUATION frame");
353
353
  case GRPC_CHTTP2_FRAME_RST_STREAM:
354
354
  return init_rst_stream_parser(t);
355
355
  case GRPC_CHTTP2_FRAME_SETTINGS:
@@ -373,7 +373,7 @@ static grpc_error_handle skip_parser(void* /*parser*/,
373
373
  grpc_chttp2_stream* /*s*/,
374
374
  const grpc_slice& /*slice*/,
375
375
  int /*is_last*/) {
376
- return GRPC_ERROR_NONE;
376
+ return absl::OkStatus();
377
377
  }
378
378
 
379
379
  static HPackParser::Boundary hpack_boundary_type(grpc_chttp2_transport* t,
@@ -409,13 +409,13 @@ static grpc_error_handle init_header_skip_frame_parser(
409
409
  [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE],
410
410
  hpack_boundary_type(t, is_eoh), priority_type,
411
411
  hpack_parser_log_info(t, HPackParser::LogInfo::kDontKnow));
412
- return GRPC_ERROR_NONE;
412
+ return absl::OkStatus();
413
413
  }
414
414
 
415
415
  static grpc_error_handle init_non_header_skip_frame_parser(
416
416
  grpc_chttp2_transport* t) {
417
417
  t->parser = skip_parser;
418
- return GRPC_ERROR_NONE;
418
+ return absl::OkStatus();
419
419
  }
420
420
 
421
421
  void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t) {
@@ -473,7 +473,7 @@ error_handler:
473
473
  t->parser = grpc_chttp2_data_parser_parse;
474
474
  t->parser_data = nullptr;
475
475
  t->ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
476
- return GRPC_ERROR_NONE;
476
+ return absl::OkStatus();
477
477
  } else if (s != nullptr) {
478
478
  /* handle stream errors by closing the stream */
479
479
  grpc_chttp2_mark_stream_closed(t, s, true, false,
@@ -549,7 +549,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
549
549
  grpc_chttp2_stream_map_size(&t->stream_map) >=
550
550
  t->settings[GRPC_ACKED_SETTINGS]
551
551
  [GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS])) {
552
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Max stream count exceeded");
552
+ return GRPC_ERROR_CREATE("Max stream count exceeded");
553
553
  } else if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
554
554
  GRPC_CHTTP2_IF_TRACING(gpr_log(
555
555
  GPR_INFO,
@@ -595,6 +595,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
595
595
  if (s->trailing_metadata_available != nullptr) {
596
596
  *s->trailing_metadata_available = true;
597
597
  }
598
+ s->parsed_trailers_only = true;
598
599
  incoming_metadata_buffer = &s->trailing_metadata_buffer;
599
600
  frame_type = HPackParser::LogInfo::kTrailers;
600
601
  } else {
@@ -613,7 +614,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
613
614
  return init_header_skip_frame_parser(t, priority_type);
614
615
  }
615
616
  if (frame_type == HPackParser::LogInfo::kTrailers && !t->header_eof) {
616
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
617
+ return GRPC_ERROR_CREATE(
617
618
  "Trailing metadata frame received without an end-o-stream");
618
619
  }
619
620
  t->hpack_parser.BeginFrame(
@@ -622,7 +623,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
622
623
  [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE],
623
624
  hpack_boundary_type(t, is_eoh), priority_type,
624
625
  hpack_parser_log_info(t, frame_type));
625
- return GRPC_ERROR_NONE;
626
+ return absl::OkStatus();
626
627
  }
627
628
 
628
629
  static grpc_error_handle init_window_update_frame_parser(
@@ -630,7 +631,7 @@ static grpc_error_handle init_window_update_frame_parser(
630
631
  grpc_error_handle err = grpc_chttp2_window_update_parser_begin_frame(
631
632
  &t->simple.window_update, t->incoming_frame_size,
632
633
  t->incoming_frame_flags);
633
- if (!GRPC_ERROR_IS_NONE(err)) return err;
634
+ if (!err.ok()) return err;
634
635
  if (t->incoming_stream_id != 0) {
635
636
  grpc_chttp2_stream* s = t->incoming_stream =
636
637
  grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
@@ -641,22 +642,22 @@ static grpc_error_handle init_window_update_frame_parser(
641
642
  }
642
643
  t->parser = grpc_chttp2_window_update_parser_parse;
643
644
  t->parser_data = &t->simple.window_update;
644
- return GRPC_ERROR_NONE;
645
+ return absl::OkStatus();
645
646
  }
646
647
 
647
648
  static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t) {
648
649
  grpc_error_handle err = grpc_chttp2_ping_parser_begin_frame(
649
650
  &t->simple.ping, t->incoming_frame_size, t->incoming_frame_flags);
650
- if (!GRPC_ERROR_IS_NONE(err)) return err;
651
+ if (!err.ok()) return err;
651
652
  t->parser = grpc_chttp2_ping_parser_parse;
652
653
  t->parser_data = &t->simple.ping;
653
- return GRPC_ERROR_NONE;
654
+ return absl::OkStatus();
654
655
  }
655
656
 
656
657
  static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
657
658
  grpc_error_handle err = grpc_chttp2_rst_stream_parser_begin_frame(
658
659
  &t->simple.rst_stream, t->incoming_frame_size, t->incoming_frame_flags);
659
- if (!GRPC_ERROR_IS_NONE(err)) return err;
660
+ if (!err.ok()) return err;
660
661
  grpc_chttp2_stream* s = t->incoming_stream =
661
662
  grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
662
663
  if (!t->incoming_stream) {
@@ -665,28 +666,27 @@ static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
665
666
  s->stats.incoming.framing_bytes += 9;
666
667
  t->parser = grpc_chttp2_rst_stream_parser_parse;
667
668
  t->parser_data = &t->simple.rst_stream;
668
- return GRPC_ERROR_NONE;
669
+ return absl::OkStatus();
669
670
  }
670
671
 
671
672
  static grpc_error_handle init_goaway_parser(grpc_chttp2_transport* t) {
672
673
  grpc_error_handle err = grpc_chttp2_goaway_parser_begin_frame(
673
674
  &t->goaway_parser, t->incoming_frame_size, t->incoming_frame_flags);
674
- if (!GRPC_ERROR_IS_NONE(err)) return err;
675
+ if (!err.ok()) return err;
675
676
  t->parser = grpc_chttp2_goaway_parser_parse;
676
677
  t->parser_data = &t->goaway_parser;
677
- return GRPC_ERROR_NONE;
678
+ return absl::OkStatus();
678
679
  }
679
680
 
680
681
  static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
681
682
  if (t->incoming_stream_id != 0) {
682
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
683
- "Settings frame received for grpc_chttp2_stream");
683
+ return GRPC_ERROR_CREATE("Settings frame received for grpc_chttp2_stream");
684
684
  }
685
685
 
686
686
  grpc_error_handle err = grpc_chttp2_settings_parser_begin_frame(
687
687
  &t->simple.settings, t->incoming_frame_size, t->incoming_frame_flags,
688
688
  t->settings[GRPC_PEER_SETTINGS]);
689
- if (!GRPC_ERROR_IS_NONE(err)) {
689
+ if (!err.ok()) {
690
690
  return err;
691
691
  }
692
692
  if (t->incoming_frame_flags & GRPC_CHTTP2_FLAG_ACK) {
@@ -702,7 +702,7 @@ static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
702
702
  }
703
703
  t->parser = grpc_chttp2_settings_parser_parse;
704
704
  t->parser_data = &t->simple.settings;
705
- return GRPC_ERROR_NONE;
705
+ return absl::OkStatus();
706
706
  }
707
707
 
708
708
  static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
@@ -711,11 +711,12 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
711
711
  grpc_chttp2_stream* s = t->incoming_stream;
712
712
  grpc_error_handle err = t->parser(t->parser_data, t, s, slice, is_last);
713
713
  intptr_t unused;
714
- if (GPR_LIKELY(GRPC_ERROR_IS_NONE(err))) {
714
+ if (GPR_LIKELY(err.ok())) {
715
715
  return err;
716
- } else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, &unused)) {
716
+ } else if (grpc_error_get_int(err, grpc_core::StatusIntProperty::kStreamId,
717
+ &unused)) {
717
718
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
718
- gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
719
+ gpr_log(GPR_ERROR, "%s", grpc_core::StatusToString(err).c_str());
719
720
  }
720
721
  grpc_chttp2_parsing_become_skip_parser(t);
721
722
  if (s) {
@@ -723,8 +724,6 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
723
724
  grpc_chttp2_add_rst_stream_to_next_write(t, t->incoming_stream_id,
724
725
  GRPC_HTTP2_PROTOCOL_ERROR,
725
726
  &s->stats.outgoing);
726
- } else {
727
- GRPC_ERROR_UNREF(err);
728
727
  }
729
728
  }
730
729
  return err;
@@ -24,7 +24,7 @@
24
24
 
25
25
  namespace grpc_core {
26
26
 
27
- uint32_t VarintLength(uint32_t tail_value) {
27
+ size_t VarintLength(size_t tail_value) {
28
28
  if (tail_value < (1 << 7)) {
29
29
  return 2;
30
30
  } else if (tail_value < (1 << 14)) {
@@ -38,8 +38,7 @@ uint32_t VarintLength(uint32_t tail_value) {
38
38
  }
39
39
  }
40
40
 
41
- void VarintWriteTail(uint32_t tail_value, uint8_t* target,
42
- uint32_t tail_length) {
41
+ void VarintWriteTail(size_t tail_value, uint8_t* target, size_t tail_length) {
43
42
  switch (tail_length) {
44
43
  case 5:
45
44
  target[4] = static_cast<uint8_t>((tail_value >> 28) | 0x80);
@@ -22,6 +22,9 @@
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
24
  #include <stdint.h>
25
+ #include <stdlib.h>
26
+
27
+ #include <grpc/support/log.h>
25
28
 
26
29
  /* Helpers for hpack varint encoding */
27
30
 
@@ -36,22 +39,22 @@ constexpr uint32_t MaxInVarintPrefix(uint8_t prefix_bits) {
36
39
  /* length of a value that needs varint tail encoding (it's bigger than can be
37
40
  bitpacked into the opcode byte) - returned value includes the length of the
38
41
  opcode byte */
39
- uint32_t VarintLength(uint32_t tail_value);
40
- void VarintWriteTail(uint32_t tail_value, uint8_t* target,
41
- uint32_t tail_length);
42
+ size_t VarintLength(size_t tail_value);
43
+ void VarintWriteTail(size_t tail_value, uint8_t* target, size_t tail_length);
42
44
 
43
45
  template <uint8_t kPrefixBits>
44
46
  class VarintWriter {
45
47
  public:
46
48
  static constexpr uint32_t kMaxInPrefix = MaxInVarintPrefix(kPrefixBits);
47
49
 
48
- explicit VarintWriter(uint32_t value)
50
+ explicit VarintWriter(size_t value)
49
51
  : value_(value),
50
52
  length_(value < kMaxInPrefix ? 1 : VarintLength(value - kMaxInPrefix)) {
53
+ GPR_ASSERT(value <= UINT32_MAX);
51
54
  }
52
55
 
53
- uint32_t value() const { return value_; }
54
- uint32_t length() const { return length_; }
56
+ size_t value() const { return value_; }
57
+ size_t length() const { return length_; }
55
58
 
56
59
  void Write(uint8_t prefix, uint8_t* target) const {
57
60
  if (length_ == 1) {
@@ -63,9 +66,9 @@ class VarintWriter {
63
66
  }
64
67
 
65
68
  private:
66
- const uint32_t value_;
69
+ const size_t value_;
67
70
  // length required to bitpack value_
68
- const uint32_t length_;
71
+ const size_t length_;
69
72
  };
70
73
 
71
74
  } // namespace grpc_core
@@ -24,10 +24,12 @@
24
24
  #include <algorithm>
25
25
  #include <string>
26
26
 
27
+ #include "absl/status/status.h"
27
28
  #include "absl/types/optional.h"
28
29
 
29
30
  #include <grpc/slice.h>
30
31
  #include <grpc/slice_buffer.h>
32
+ #include <grpc/status.h>
31
33
  #include <grpc/support/log.h>
32
34
 
33
35
  // IWYU pragma: no_include "src/core/lib/gprpp/orphanable.h"
@@ -47,6 +49,7 @@
47
49
  #include "src/core/ext/transport/chttp2/transport/stream_map.h"
48
50
  #include "src/core/lib/channel/channelz.h"
49
51
  #include "src/core/lib/debug/stats.h"
52
+ #include "src/core/lib/debug/stats_data.h"
50
53
  #include "src/core/lib/debug/trace.h"
51
54
  #include "src/core/lib/gprpp/debug_location.h"
52
55
  #include "src/core/lib/gprpp/ref_counted.h"
@@ -58,7 +61,6 @@
58
61
  #include "src/core/lib/iomgr/exec_ctx.h"
59
62
  #include "src/core/lib/iomgr/timer.h"
60
63
  #include "src/core/lib/slice/slice.h"
61
- #include "src/core/lib/slice/slice_internal.h"
62
64
  #include "src/core/lib/transport/bdp_estimator.h"
63
65
  #include "src/core/lib/transport/http2_errors.h"
64
66
  #include "src/core/lib/transport/metadata_batch.h"
@@ -169,7 +171,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
169
171
  &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT]);
170
172
  grpc_slice_buffer_add(&t->outbuf,
171
173
  grpc_chttp2_ping_create(false, pq->inflight_id));
172
- GRPC_STATS_INC_HTTP2_PINGS_SENT();
174
+ grpc_core::global_stats().IncrementHttp2PingsSent();
173
175
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
174
176
  GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
175
177
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
@@ -193,13 +195,12 @@ static bool update_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
193
195
  grpc_chttp2_write_cb* next = cb->next;
194
196
  if (cb->call_at_byte <= *ctr) {
195
197
  sched_any = true;
196
- finish_write_cb(t, s, cb, GRPC_ERROR_REF(error));
198
+ finish_write_cb(t, s, cb, error);
197
199
  } else {
198
200
  add_to_write_list(list, cb);
199
201
  }
200
202
  cb = next;
201
203
  }
202
- GRPC_ERROR_UNREF(error);
203
204
  return sched_any;
204
205
  }
205
206
 
@@ -264,7 +265,7 @@ namespace {
264
265
  class WriteContext {
265
266
  public:
266
267
  explicit WriteContext(grpc_chttp2_transport* t) : t_(t) {
267
- GRPC_STATS_INC_HTTP2_WRITES_BEGUN();
268
+ grpc_core::global_stats().IncrementHttp2WritesBegun();
268
269
  }
269
270
 
270
271
  void FlushSettings() {
@@ -277,7 +278,7 @@ class WriteContext {
277
278
  t_->force_send_settings = false;
278
279
  t_->dirtied_local_settings = false;
279
280
  t_->sent_local_settings = true;
280
- GRPC_STATS_INC_HTTP2_SETTINGS_WRITES();
281
+ grpc_core::global_stats().IncrementHttp2SettingsWrites();
281
282
  }
282
283
  }
283
284
 
@@ -317,7 +318,7 @@ class WriteContext {
317
318
  void UpdateStreamsNoLongerStalled() {
318
319
  grpc_chttp2_stream* s;
319
320
  while (grpc_chttp2_list_pop_stalled_by_transport(t_, &s)) {
320
- if (GRPC_ERROR_IS_NONE(t_->closed_with_error) &&
321
+ if (t_->closed_with_error.ok() &&
321
322
  grpc_chttp2_list_add_writable_stream(t_, s)) {
322
323
  if (!s->refcount->refs.RefIfNonZero()) {
323
324
  grpc_chttp2_list_remove_writable_stream(t_, s);
@@ -412,7 +413,7 @@ class DataSendContext {
412
413
  t_, s_,
413
414
  static_cast<int64_t>(s_->sending_bytes - sending_bytes_before_),
414
415
  &s_->on_flow_controlled_cbs, &s_->flow_controlled_bytes_flowed,
415
- GRPC_ERROR_NONE)) {
416
+ absl::OkStatus())) {
416
417
  write_context_->NoteScheduledResults();
417
418
  }
418
419
  }
@@ -474,7 +475,7 @@ class StreamWriteContext {
474
475
  s_->sent_initial_metadata = true;
475
476
  write_context_->NoteScheduledResults();
476
477
  grpc_chttp2_complete_closure_step(
477
- t_, s_, &s_->send_initial_metadata_finished, GRPC_ERROR_NONE,
478
+ t_, s_, &s_->send_initial_metadata_finished, absl::OkStatus(),
478
479
  "send_initial_metadata_finished");
479
480
  }
480
481
 
@@ -503,11 +504,11 @@ class StreamWriteContext {
503
504
 
504
505
  if (!data_send_context.AnyOutgoing()) {
505
506
  if (t_->flow_control.remote_window() <= 0) {
506
- GRPC_STATS_INC_HTTP2_TRANSPORT_STALLS();
507
+ grpc_core::global_stats().IncrementHttp2TransportStalls();
507
508
  report_stall(t_, s_, "transport");
508
509
  grpc_chttp2_list_add_stalled_by_transport(t_, s_);
509
510
  } else if (data_send_context.stream_remote_window() <= 0) {
510
- GRPC_STATS_INC_HTTP2_STREAM_STALLS();
511
+ grpc_core::global_stats().IncrementHttp2StreamStalls();
511
512
  report_stall(t_, s_, "stream");
512
513
  grpc_chttp2_list_add_stalled_by_stream(t_, s_);
513
514
  }
@@ -568,7 +569,7 @@ class StreamWriteContext {
568
569
 
569
570
  write_context_->NoteScheduledResults();
570
571
  grpc_chttp2_complete_closure_step(
571
- t_, s_, &s_->send_trailing_metadata_finished, GRPC_ERROR_NONE,
572
+ t_, s_, &s_->send_trailing_metadata_finished, absl::OkStatus(),
572
573
  "send_trailing_metadata_finished");
573
574
  }
574
575
 
@@ -601,7 +602,7 @@ class StreamWriteContext {
601
602
  s_->id, GRPC_HTTP2_NO_ERROR, &s_->stats.outgoing));
602
603
  }
603
604
  grpc_chttp2_mark_stream_closed(t_, s_, !t_->is_client, true,
604
- GRPC_ERROR_NONE);
605
+ absl::OkStatus());
605
606
  }
606
607
 
607
608
  WriteContext* const write_context_;
@@ -673,11 +674,10 @@ void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error_handle error) {
673
674
  if (s->sending_bytes != 0) {
674
675
  update_list(t, s, static_cast<int64_t>(s->sending_bytes),
675
676
  &s->on_write_finished_cbs, &s->flow_controlled_bytes_written,
676
- GRPC_ERROR_REF(error));
677
+ error);
677
678
  s->sending_bytes = 0;
678
679
  }
679
680
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:end");
680
681
  }
681
- grpc_slice_buffer_reset_and_unref_internal(&t->outbuf);
682
- GRPC_ERROR_UNREF(error);
682
+ grpc_slice_buffer_reset_and_unref(&t->outbuf);
683
683
  }