grpc 1.73.0 → 1.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +116 -53
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +18 -6
  5. data/include/grpc/event_engine/event_engine.h +74 -17
  6. data/include/grpc/grpc_posix.h +20 -1
  7. data/include/grpc/impl/channel_arg_names.h +2 -4
  8. data/include/grpc/module.modulemap +1 -0
  9. data/include/grpc/support/json.h +24 -0
  10. data/src/core/call/client_call.cc +4 -4
  11. data/src/core/call/filter_fusion.h +1230 -0
  12. data/src/core/call/interception_chain.h +7 -11
  13. data/src/core/call/metadata.cc +22 -0
  14. data/src/core/call/metadata.h +24 -2
  15. data/src/core/channelz/channel_trace.cc +213 -115
  16. data/src/core/channelz/channel_trace.h +380 -86
  17. data/src/core/channelz/channelz.cc +274 -192
  18. data/src/core/channelz/channelz.h +224 -72
  19. data/src/core/channelz/channelz_registry.cc +2 -163
  20. data/src/core/channelz/channelz_registry.h +37 -6
  21. data/src/core/channelz/property_list.cc +353 -0
  22. data/src/core/channelz/property_list.h +204 -0
  23. data/src/core/channelz/v2tov1/convert.cc +683 -0
  24. data/src/core/channelz/v2tov1/convert.h +58 -0
  25. data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
  26. data/src/core/channelz/v2tov1/legacy_api.h +32 -0
  27. data/src/core/channelz/v2tov1/property_list.cc +118 -0
  28. data/src/core/channelz/v2tov1/property_list.h +52 -0
  29. data/src/core/channelz/ztrace_collector.h +3 -2
  30. data/src/core/client_channel/backup_poller.cc +17 -2
  31. data/src/core/client_channel/client_channel.cc +17 -28
  32. data/src/core/client_channel/client_channel_filter.cc +24 -33
  33. data/src/core/client_channel/client_channel_filter.h +2 -2
  34. data/src/core/client_channel/client_channel_internal.h +2 -1
  35. data/src/core/client_channel/config_selector.h +8 -2
  36. data/src/core/client_channel/dynamic_filters.cc +5 -6
  37. data/src/core/client_channel/dynamic_filters.h +1 -1
  38. data/src/core/client_channel/global_subchannel_pool.cc +4 -1
  39. data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
  40. data/src/core/client_channel/retry_filter.cc +21 -27
  41. data/src/core/client_channel/retry_filter.h +10 -7
  42. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  43. data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
  44. data/src/core/client_channel/retry_interceptor.cc +30 -44
  45. data/src/core/client_channel/retry_interceptor.h +18 -17
  46. data/src/core/client_channel/retry_throttle.cc +46 -61
  47. data/src/core/client_channel/retry_throttle.h +17 -39
  48. data/src/core/client_channel/subchannel.cc +57 -25
  49. data/src/core/client_channel/subchannel.h +10 -0
  50. data/src/core/config/config_vars.cc +2 -0
  51. data/src/core/config/core_configuration.cc +4 -1
  52. data/src/core/config/core_configuration.h +23 -0
  53. data/src/core/credentials/call/call_creds_registry.h +125 -0
  54. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  55. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
  56. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  57. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  58. data/src/core/credentials/call/jwt_util.cc +70 -0
  59. data/src/core/credentials/call/jwt_util.h +32 -0
  60. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
  61. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
  62. data/src/core/credentials/transport/channel_creds_registry_init.cc +4 -2
  63. data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
  64. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -2
  65. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
  66. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
  67. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
  68. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
  69. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
  70. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
  71. data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
  72. data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
  73. data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
  74. data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
  75. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
  76. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
  77. data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
  78. data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
  79. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
  80. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
  81. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
  82. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
  83. data/src/core/ext/filters/http/client_authority_filter.cc +3 -6
  84. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  85. data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
  86. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
  87. data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
  88. data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
  89. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  90. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
  91. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
  92. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
  93. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +165 -117
  94. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  95. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  96. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  97. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  98. data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
  99. data/src/core/ext/transport/chttp2/transport/frame.cc +99 -6
  100. data/src/core/ext/transport/chttp2/transport/frame.h +40 -2
  101. data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
  102. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
  104. data/src/core/ext/transport/chttp2/transport/header_assembler.h +290 -0
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  107. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  108. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
  109. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1233 -0
  110. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +712 -0
  111. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
  112. data/src/core/ext/transport/chttp2/transport/http2_settings.h +65 -51
  113. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
  114. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
  115. data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
  116. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  117. data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
  118. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +121 -0
  119. data/src/core/ext/transport/chttp2/transport/http2_transport.h +76 -0
  120. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
  121. data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
  122. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  123. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  124. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  125. data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -5
  126. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
  127. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +152 -0
  128. data/src/core/ext/transport/chttp2/transport/ping_promise.h +197 -0
  129. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
  130. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
  131. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
  132. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
  133. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  134. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  135. data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
  136. data/src/core/ext/transport/chttp2/transport/writing.cc +41 -13
  137. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
  138. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
  139. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
  140. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  141. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  142. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  143. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  144. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  145. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  146. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
  147. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
  148. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  149. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
  150. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
  151. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  152. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  153. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
  154. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  155. data/src/core/filter/auth/auth_filters.h +2 -27
  156. data/src/core/filter/auth/client_auth_filter.cc +0 -118
  157. data/src/core/filter/filter_args.h +9 -23
  158. data/src/core/filter/fused_filters.cc +154 -0
  159. data/src/core/handshaker/handshaker.cc +23 -14
  160. data/src/core/handshaker/handshaker.h +3 -0
  161. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
  162. data/src/core/handshaker/security/legacy_secure_endpoint.cc +7 -6
  163. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
  164. data/src/core/handshaker/security/secure_endpoint.cc +98 -38
  165. data/src/core/handshaker/security/secure_endpoint.h +8 -0
  166. data/src/core/handshaker/security/security_handshaker.cc +4 -1
  167. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
  168. data/src/core/lib/channel/channel_args.cc +15 -0
  169. data/src/core/lib/channel/channel_args.h +3 -0
  170. data/src/core/lib/channel/channel_stack.cc +22 -23
  171. data/src/core/lib/channel/channel_stack.h +9 -7
  172. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  173. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  174. data/src/core/lib/channel/promise_based_filter.cc +15 -25
  175. data/src/core/lib/channel/promise_based_filter.h +11 -10
  176. data/src/core/lib/debug/trace_impl.h +0 -1
  177. data/src/core/lib/event_engine/ares_resolver.cc +165 -46
  178. data/src/core/lib/event_engine/ares_resolver.h +51 -3
  179. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +12 -6
  180. data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
  181. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
  182. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
  183. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
  184. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
  185. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  186. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  187. data/src/core/lib/event_engine/event_engine.cc +7 -0
  188. data/src/core/lib/event_engine/extensions/channelz.h +10 -6
  189. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
  190. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +139 -169
  191. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +17 -19
  192. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +90 -131
  193. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +13 -13
  194. data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -23
  195. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -23
  196. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
  197. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  198. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  199. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +30 -19
  200. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
  201. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
  202. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
  203. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
  204. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +147 -94
  205. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
  206. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +435 -229
  207. data/src/core/lib/event_engine/posix_engine/posix_engine.h +78 -50
  208. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +46 -38
  209. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
  210. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
  211. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
  212. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  213. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  214. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  215. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  216. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  217. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
  218. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +11 -171
  219. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
  220. data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
  221. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
  222. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
  223. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
  224. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
  225. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
  226. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
  227. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
  228. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
  229. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
  230. data/src/core/lib/event_engine/shim.cc +9 -0
  231. data/src/core/lib/event_engine/shim.h +3 -0
  232. data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
  233. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
  234. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
  235. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
  236. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +6 -1
  237. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
  238. data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
  239. data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
  240. data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
  241. data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
  242. data/src/core/lib/experiments/experiments.cc +165 -99
  243. data/src/core/lib/experiments/experiments.h +65 -52
  244. data/src/core/lib/iomgr/combiner.cc +1 -1
  245. data/src/core/lib/iomgr/endpoint.cc +4 -3
  246. data/src/core/lib/iomgr/endpoint.h +7 -4
  247. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  248. data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
  249. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
  250. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
  251. data/src/core/lib/iomgr/exec_ctx.h +3 -9
  252. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  253. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
  254. data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
  255. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  256. data/src/core/lib/iomgr/tcp_posix.cc +15 -9
  257. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  258. data/src/core/lib/promise/activity.h +3 -2
  259. data/src/core/lib/promise/arena_promise.h +23 -7
  260. data/src/core/lib/promise/detail/promise_factory.h +10 -0
  261. data/src/core/lib/promise/detail/promise_like.h +118 -11
  262. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  263. data/src/core/lib/promise/detail/seq_state.h +687 -548
  264. data/src/core/lib/promise/if.h +20 -0
  265. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  266. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  267. data/src/core/lib/promise/loop.h +65 -3
  268. data/src/core/lib/promise/map.h +24 -0
  269. data/src/core/lib/promise/match_promise.h +103 -0
  270. data/src/core/lib/promise/mpsc.cc +425 -0
  271. data/src/core/lib/promise/mpsc.h +490 -0
  272. data/src/core/lib/promise/party.cc +55 -6
  273. data/src/core/lib/promise/party.h +68 -3
  274. data/src/core/lib/promise/poll.h +10 -0
  275. data/src/core/lib/promise/race.h +31 -0
  276. data/src/core/lib/promise/seq.h +4 -1
  277. data/src/core/lib/promise/status_flag.h +7 -0
  278. data/src/core/lib/promise/try_seq.h +4 -1
  279. data/src/core/lib/promise/wait_set.cc +28 -0
  280. data/src/core/lib/promise/wait_set.h +86 -0
  281. data/src/core/lib/resource_quota/arena.h +19 -0
  282. data/src/core/lib/resource_quota/memory_quota.cc +90 -3
  283. data/src/core/lib/resource_quota/memory_quota.h +20 -9
  284. data/src/core/lib/resource_quota/periodic_update.cc +14 -0
  285. data/src/core/lib/resource_quota/periodic_update.h +8 -0
  286. data/src/core/lib/resource_quota/resource_quota.cc +15 -4
  287. data/src/core/lib/resource_quota/resource_quota.h +3 -0
  288. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  289. data/src/core/lib/slice/slice.h +5 -0
  290. data/src/core/lib/surface/call.cc +5 -5
  291. data/src/core/lib/surface/call.h +6 -5
  292. data/src/core/lib/surface/channel_create.cc +88 -13
  293. data/src/core/lib/surface/channel_create.h +4 -0
  294. data/src/core/lib/surface/channel_init.cc +164 -47
  295. data/src/core/lib/surface/channel_init.h +64 -1
  296. data/src/core/lib/surface/completion_queue.cc +2 -4
  297. data/src/core/lib/surface/filter_stack_call.cc +19 -10
  298. data/src/core/lib/surface/init.cc +6 -15
  299. data/src/core/lib/surface/legacy_channel.cc +3 -5
  300. data/src/core/lib/surface/legacy_channel.h +3 -1
  301. data/src/core/lib/surface/version.cc +2 -2
  302. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  303. data/src/core/lib/transport/promise_endpoint.h +307 -0
  304. data/src/core/load_balancing/child_policy_handler.cc +2 -4
  305. data/src/core/load_balancing/delegating_helper.h +2 -3
  306. data/src/core/load_balancing/endpoint_list.cc +29 -2
  307. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
  308. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
  309. data/src/core/load_balancing/health_check_client.cc +1 -5
  310. data/src/core/load_balancing/lb_policy.h +1 -3
  311. data/src/core/load_balancing/oob_backend_metric.cc +1 -5
  312. data/src/core/load_balancing/pick_first/pick_first.cc +15 -5
  313. data/src/core/load_balancing/xds/cds.cc +10 -1
  314. data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
  315. data/src/core/net/socket_mutator.cc +19 -0
  316. data/src/core/net/socket_mutator.h +25 -0
  317. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  318. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  319. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
  320. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
  321. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
  322. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
  323. data/src/core/resolver/xds/xds_config.cc +6 -3
  324. data/src/core/resolver/xds/xds_config.h +9 -4
  325. data/src/core/resolver/xds/xds_dependency_manager.cc +22 -7
  326. data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
  327. data/src/core/resolver/xds/xds_resolver.cc +31 -11
  328. data/src/core/server/server.cc +84 -13
  329. data/src/core/server/server.h +21 -2
  330. data/src/core/server/server_call_tracer_filter.cc +0 -66
  331. data/src/core/server/server_call_tracer_filter.h +64 -0
  332. data/src/core/server/server_config_selector_filter.cc +1 -1
  333. data/src/core/server/xds_server_config_fetcher.cc +63 -25
  334. data/src/core/service_config/service_config.h +1 -1
  335. data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
  336. data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
  337. data/src/core/service_config/service_config_impl.h +1 -1
  338. data/src/core/telemetry/call_tracer.cc +20 -14
  339. data/src/core/telemetry/call_tracer.h +22 -17
  340. data/src/core/telemetry/context_list_entry.cc +38 -0
  341. data/src/core/telemetry/context_list_entry.h +42 -12
  342. data/src/core/telemetry/metrics.h +8 -8
  343. data/src/core/telemetry/stats_data.cc +369 -343
  344. data/src/core/telemetry/stats_data.h +341 -244
  345. data/src/core/telemetry/tcp_tracer.h +1 -1
  346. data/src/core/transport/auth_context.cc +20 -0
  347. data/src/core/transport/auth_context.h +4 -0
  348. data/src/core/transport/auth_context_comparator_registry.h +69 -0
  349. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
  350. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
  351. data/src/core/tsi/fake_transport_security.cc +17 -0
  352. data/src/core/tsi/ssl_transport_security.cc +205 -32
  353. data/src/core/tsi/ssl_transport_security.h +19 -10
  354. data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
  355. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  356. data/src/core/tsi/transport_security_grpc.cc +8 -0
  357. data/src/core/tsi/transport_security_grpc.h +15 -0
  358. data/src/core/util/backoff.cc +1 -5
  359. data/src/core/util/backoff.h +1 -0
  360. data/src/core/util/down_cast.h +1 -1
  361. data/src/core/util/function_signature.h +15 -1
  362. data/src/core/util/http_client/httpcli.cc +12 -5
  363. data/src/core/util/http_client/httpcli.h +4 -1
  364. data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
  365. data/src/core/util/latent_see.cc +178 -146
  366. data/src/core/util/latent_see.h +249 -189
  367. data/src/core/util/log.cc +4 -0
  368. data/src/core/util/memory_usage.h +268 -0
  369. data/src/core/util/per_cpu.cc +2 -0
  370. data/src/core/util/per_cpu.h +7 -0
  371. data/src/core/util/shared_bit_gen.h +20 -0
  372. data/src/core/util/single_set_ptr.h +7 -4
  373. data/src/core/util/upb_utils.h +42 -0
  374. data/src/core/util/uri.cc +3 -2
  375. data/src/core/util/useful.h +144 -2
  376. data/src/core/util/wait_for_single_owner.cc +31 -0
  377. data/src/core/util/wait_for_single_owner.h +24 -0
  378. data/src/core/util/windows/directory_reader.cc +1 -0
  379. data/src/core/util/windows/thd.cc +1 -3
  380. data/src/core/util/work_serializer.cc +1 -1
  381. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
  382. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
  383. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
  384. data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
  385. data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
  386. data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
  387. data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
  388. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  389. data/src/core/xds/grpc/xds_http_filter.h +7 -0
  390. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
  391. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
  392. data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
  393. data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
  394. data/src/core/xds/grpc/xds_server_grpc.h +10 -2
  395. data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
  396. data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
  397. data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
  398. data/src/core/xds/xds_client/xds_client.cc +26 -5
  399. data/src/ruby/ext/grpc/extconf.rb +2 -0
  400. data/src/ruby/ext/grpc/rb_call.c +1 -8
  401. data/src/ruby/ext/grpc/rb_channel.c +70 -557
  402. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  403. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  404. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  405. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  406. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  407. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  408. data/src/ruby/ext/grpc/rb_server.c +31 -50
  409. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  410. data/src/ruby/lib/grpc/version.rb +1 -1
  411. data/src/ruby/spec/core_spec.rb +22 -0
  412. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  413. data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
  414. data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
  415. data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
  416. data/third_party/abseil-cpp/absl/base/config.h +20 -129
  417. data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  418. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  419. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  420. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  421. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  422. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  423. data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
  424. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  425. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  426. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  427. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  428. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  429. data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
  430. data/third_party/abseil-cpp/absl/base/options.h +3 -80
  431. data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
  432. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  433. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  434. data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
  435. data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
  436. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
  437. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
  438. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
  439. data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
  440. data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
  441. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  442. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  443. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  444. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
  445. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  446. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  447. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  448. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  449. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  450. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  451. data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
  452. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  453. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
  454. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
  455. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  456. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  457. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  458. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  459. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  460. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  461. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  462. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  463. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  464. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  465. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  466. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  467. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  468. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  469. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  470. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  471. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  472. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  473. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  474. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  475. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  476. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
  477. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  478. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  479. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  480. data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
  481. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  482. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
  483. data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
  484. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  485. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  486. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  487. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  488. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  489. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  490. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  491. data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
  492. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
  493. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
  494. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
  495. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  496. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  497. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  498. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  499. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  500. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
  501. data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
  502. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  503. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  504. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  505. data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
  506. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  507. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
  508. data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
  509. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  510. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  511. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  512. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  513. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  514. data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
  515. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  516. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  517. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  518. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  519. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  520. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  521. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  522. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  523. data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
  524. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  525. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  526. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  527. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  528. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  529. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  530. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  531. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  532. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  533. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  534. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  535. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  536. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  537. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  538. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  539. data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
  540. data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
  541. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
  542. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  543. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  544. data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
  545. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  546. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  547. data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
  548. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  549. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  550. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
  551. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  552. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  553. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  554. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  555. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  556. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  557. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  558. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  559. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  560. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  561. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  562. data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
  563. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  564. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  565. data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
  566. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  567. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  568. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  569. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  570. data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
  571. data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
  572. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  573. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  574. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  575. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  576. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  577. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  578. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  579. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  580. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  581. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
  582. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  583. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  584. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  585. data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
  586. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  587. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  588. data/third_party/abseil-cpp/absl/time/time.h +20 -15
  589. data/third_party/abseil-cpp/absl/types/optional.h +7 -747
  590. data/third_party/abseil-cpp/absl/types/span.h +13 -11
  591. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  592. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  593. data/third_party/cares/cares/include/ares.h +925 -460
  594. data/third_party/cares/cares/include/ares_dns.h +86 -71
  595. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  596. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  597. data/third_party/cares/cares/include/ares_version.h +37 -14
  598. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  599. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  600. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  601. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  602. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  603. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  604. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  605. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  606. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  607. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  608. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  609. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  610. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  611. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  612. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  613. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  614. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  615. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  616. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  617. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  618. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  619. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  620. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  621. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  622. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  623. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  624. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  625. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  626. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  627. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  628. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  629. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  630. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  631. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  632. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  633. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  634. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  635. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  636. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  637. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  638. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  639. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  640. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  641. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  642. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  643. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  644. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  645. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  646. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  647. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  648. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  649. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  650. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  651. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  652. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  653. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  654. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  655. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  656. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  657. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  658. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  659. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  660. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  661. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  662. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  663. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  664. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  665. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  666. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  667. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  668. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  669. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  670. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  671. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  672. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  673. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  674. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  675. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  676. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  677. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  678. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  679. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  680. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  681. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  682. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  683. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  684. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  685. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  686. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  687. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  688. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  689. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  690. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  691. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  692. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  693. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  694. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  695. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  696. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  697. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  698. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  699. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  700. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  701. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  702. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  703. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  704. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  705. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  706. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  707. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  708. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  709. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  710. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  711. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  712. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  713. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  714. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  715. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  716. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  717. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  718. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  719. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  720. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  721. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  722. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  723. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  724. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  725. metadata +192 -68
  726. data/src/core/lib/event_engine/forkable.cc +0 -105
  727. data/src/core/lib/event_engine/forkable.h +0 -67
  728. data/src/core/lib/iomgr/python_util.h +0 -46
  729. data/src/core/util/ring_buffer.h +0 -122
  730. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  731. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  732. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  733. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  734. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  735. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  736. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  737. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  738. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  739. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
  740. data/third_party/cares/cares/include/ares_rules.h +0 -125
  741. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  742. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  743. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  744. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  745. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  746. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  747. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  748. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  749. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  750. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  751. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  752. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  753. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  754. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  755. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  756. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  757. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  758. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  759. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  760. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  761. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  762. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  763. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  764. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  765. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  766. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  767. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  768. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  769. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  770. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  771. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  772. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  773. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  774. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  775. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  776. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  777. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  778. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  779. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  780. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  781. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  782. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  783. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  784. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  785. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  786. data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -1,4 +1,4 @@
1
- // Copyright 2017 gRPC authors.
1
+ // Copyright 2025 gRPC authors.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -26,29 +26,27 @@ union DblUint {
26
26
  uint64_t uint;
27
27
  };
28
28
  } // namespace
29
- void HistogramCollector_16777216_20_64::Collect(
30
- Histogram_16777216_20_64* result) const {
31
- for (int i = 0; i < 20; i++) {
29
+ void HistogramCollector_80_10_64::Collect(Histogram_80_10_64* result) const {
30
+ for (int i = 0; i < 10; i++) {
32
31
  result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
33
32
  }
34
33
  }
35
- Histogram_16777216_20_64 operator-(const Histogram_16777216_20_64& left,
36
- const Histogram_16777216_20_64& right) {
37
- Histogram_16777216_20_64 result;
38
- for (int i = 0; i < 20; i++) {
34
+ Histogram_80_10_64 operator-(const Histogram_80_10_64& left,
35
+ const Histogram_80_10_64& right) {
36
+ Histogram_80_10_64 result;
37
+ for (int i = 0; i < 10; i++) {
39
38
  result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
40
39
  }
41
40
  return result;
42
41
  }
43
- void HistogramCollector_100000_20_64::Collect(
44
- Histogram_100000_20_64* result) const {
42
+ void HistogramCollector_100_20_64::Collect(Histogram_100_20_64* result) const {
45
43
  for (int i = 0; i < 20; i++) {
46
44
  result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
47
45
  }
48
46
  }
49
- Histogram_100000_20_64 operator-(const Histogram_100000_20_64& left,
50
- const Histogram_100000_20_64& right) {
51
- Histogram_100000_20_64 result;
47
+ Histogram_100_20_64 operator-(const Histogram_100_20_64& left,
48
+ const Histogram_100_20_64& right) {
49
+ Histogram_100_20_64 result;
52
50
  for (int i = 0; i < 20; i++) {
53
51
  result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
54
52
  }
@@ -82,74 +80,69 @@ Histogram_65536_26_64 operator-(const Histogram_65536_26_64& left,
82
80
  }
83
81
  return result;
84
82
  }
85
- void HistogramCollector_100_20_64::Collect(Histogram_100_20_64* result) const {
83
+ void HistogramCollector_100000_20_64::Collect(
84
+ Histogram_100000_20_64* result) const {
86
85
  for (int i = 0; i < 20; i++) {
87
86
  result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
88
87
  }
89
88
  }
90
- Histogram_100_20_64 operator-(const Histogram_100_20_64& left,
91
- const Histogram_100_20_64& right) {
92
- Histogram_100_20_64 result;
89
+ Histogram_100000_20_64 operator-(const Histogram_100000_20_64& left,
90
+ const Histogram_100000_20_64& right) {
91
+ Histogram_100000_20_64 result;
93
92
  for (int i = 0; i < 20; i++) {
94
93
  result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
95
94
  }
96
95
  return result;
97
96
  }
98
- void HistogramCollector_16777216_50_64::Collect(
99
- Histogram_16777216_50_64* result) const {
100
- for (int i = 0; i < 50; i++) {
97
+ void HistogramCollector_1800000_40_64::Collect(
98
+ Histogram_1800000_40_64* result) const {
99
+ for (int i = 0; i < 40; i++) {
101
100
  result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
102
101
  }
103
102
  }
104
- Histogram_16777216_50_64 operator-(const Histogram_16777216_50_64& left,
105
- const Histogram_16777216_50_64& right) {
106
- Histogram_16777216_50_64 result;
107
- for (int i = 0; i < 50; i++) {
103
+ Histogram_1800000_40_64 operator-(const Histogram_1800000_40_64& left,
104
+ const Histogram_1800000_40_64& right) {
105
+ Histogram_1800000_40_64 result;
106
+ for (int i = 0; i < 40; i++) {
108
107
  result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
109
108
  }
110
109
  return result;
111
110
  }
112
- void HistogramCollector_80_10_64::Collect(Histogram_80_10_64* result) const {
113
- for (int i = 0; i < 10; i++) {
111
+ void HistogramCollector_16777216_20_64::Collect(
112
+ Histogram_16777216_20_64* result) const {
113
+ for (int i = 0; i < 20; i++) {
114
114
  result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
115
115
  }
116
116
  }
117
- Histogram_80_10_64 operator-(const Histogram_80_10_64& left,
118
- const Histogram_80_10_64& right) {
119
- Histogram_80_10_64 result;
120
- for (int i = 0; i < 10; i++) {
117
+ Histogram_16777216_20_64 operator-(const Histogram_16777216_20_64& left,
118
+ const Histogram_16777216_20_64& right) {
119
+ Histogram_16777216_20_64 result;
120
+ for (int i = 0; i < 20; i++) {
121
121
  result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
122
122
  }
123
123
  return result;
124
124
  }
125
- void HistogramCollector_1800000_40_64::Collect(
126
- Histogram_1800000_40_64* result) const {
127
- for (int i = 0; i < 40; i++) {
125
+ void HistogramCollector_16777216_50_64::Collect(
126
+ Histogram_16777216_50_64* result) const {
127
+ for (int i = 0; i < 50; i++) {
128
128
  result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
129
129
  }
130
130
  }
131
- Histogram_1800000_40_64 operator-(const Histogram_1800000_40_64& left,
132
- const Histogram_1800000_40_64& right) {
133
- Histogram_1800000_40_64 result;
134
- for (int i = 0; i < 40; i++) {
131
+ Histogram_16777216_50_64 operator-(const Histogram_16777216_50_64& left,
132
+ const Histogram_16777216_50_64& right) {
133
+ Histogram_16777216_50_64 result;
134
+ for (int i = 0; i < 50; i++) {
135
135
  result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
136
136
  }
137
137
  return result;
138
138
  }
139
139
  namespace {
140
- const int kStatsTable0[21] = {
141
- 0, 1, 3, 8, 19, 45, 106,
142
- 250, 588, 1383, 3252, 7646, 17976, 42262,
143
- 99359, 233593, 549177, 1291113, 3035402, 7136218, 16777216};
144
- const uint8_t kStatsTable1[23] = {2, 3, 3, 4, 5, 6, 7, 8,
145
- 8, 9, 10, 11, 12, 12, 13, 14,
146
- 15, 16, 16, 17, 18, 19, 20};
147
- const int kStatsTable2[21] = {0, 1, 2, 4, 8, 15, 27,
148
- 49, 89, 160, 288, 517, 928, 1666,
149
- 2991, 5369, 9637, 17297, 31045, 55719, 100000};
150
- const uint8_t kStatsTable3[30] = {3, 3, 4, 4, 5, 6, 6, 7, 7, 8,
151
- 9, 9, 10, 10, 11, 11, 12, 13, 13, 14,
152
- 15, 15, 16, 16, 17, 17, 18, 19, 19, 20};
140
+ const int kStatsTable0[11] = {0, 1, 2, 4, 7, 11, 17, 26, 38, 56, 80};
141
+ const uint8_t kStatsTable1[9] = {3, 3, 4, 5, 6, 6, 7, 8, 9};
142
+ const int kStatsTable2[21] = {0, 1, 2, 3, 4, 5, 7, 9, 11, 14, 17,
143
+ 21, 25, 30, 36, 43, 51, 61, 72, 85, 100};
144
+ const uint8_t kStatsTable3[16] = {6, 6, 7, 8, 9, 9, 10, 11,
145
+ 12, 13, 14, 15, 16, 17, 18, 19};
153
146
  const int kStatsTable4[21] = {0, 1, 2, 4, 7, 12, 19,
154
147
  30, 47, 74, 116, 182, 285, 445,
155
148
  695, 1084, 1691, 2637, 4113, 6414, 10000};
@@ -163,14 +156,32 @@ const int kStatsTable6[27] = {0, 1, 2, 4, 7, 11, 17,
163
156
  const uint8_t kStatsTable7[29] = {3, 3, 4, 5, 6, 6, 7, 8, 9, 10,
164
157
  11, 11, 12, 13, 14, 15, 16, 16, 17, 18,
165
158
  19, 20, 21, 21, 22, 23, 24, 25, 26};
166
- const int kStatsTable8[9] = {0, 1, 11, 119, 1275,
167
- 13656, 146259, 1566467, 16777216};
168
- const uint8_t kStatsTable9[11] = {2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 8};
169
- const int kStatsTable10[21] = {0, 1, 2, 3, 4, 5, 7, 9, 11, 14, 17,
170
- 21, 25, 30, 36, 43, 51, 61, 72, 85, 100};
171
- const uint8_t kStatsTable11[16] = {6, 6, 7, 8, 9, 9, 10, 11,
172
- 12, 13, 14, 15, 16, 17, 18, 19};
173
- const int kStatsTable12[51] = {
159
+ const int kStatsTable8[21] = {0, 1, 2, 4, 8, 15, 27,
160
+ 49, 89, 160, 288, 517, 928, 1666,
161
+ 2991, 5369, 9637, 17297, 31045, 55719, 100000};
162
+ const uint8_t kStatsTable9[30] = {3, 3, 4, 4, 5, 6, 6, 7, 7, 8,
163
+ 9, 9, 10, 10, 11, 11, 12, 13, 13, 14,
164
+ 15, 15, 16, 16, 17, 17, 18, 19, 19, 20};
165
+ const int kStatsTable10[41] = {
166
+ 0, 1, 2, 3, 5, 8, 12, 18, 26,
167
+ 37, 53, 76, 108, 153, 217, 308, 436, 617,
168
+ 873, 1235, 1748, 2473, 3499, 4950, 7003, 9907, 14015,
169
+ 19825, 28044, 39670, 56116, 79379, 112286, 158835, 224680, 317821,
170
+ 449574, 635945, 899575, 1272492, 1800000};
171
+ const uint8_t kStatsTable11[37] = {
172
+ 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
173
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39};
174
+ const int kStatsTable12[9] = {0, 1, 11, 119, 1275,
175
+ 13656, 146259, 1566467, 16777216};
176
+ const uint8_t kStatsTable13[11] = {2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 8};
177
+ const int kStatsTable14[21] = {
178
+ 0, 1, 3, 8, 19, 45, 106,
179
+ 250, 588, 1383, 3252, 7646, 17976, 42262,
180
+ 99359, 233593, 549177, 1291113, 3035402, 7136218, 16777216};
181
+ const uint8_t kStatsTable15[23] = {2, 3, 3, 4, 5, 6, 7, 8,
182
+ 8, 9, 10, 11, 12, 12, 13, 14,
183
+ 15, 16, 16, 17, 18, 19, 20};
184
+ const int kStatsTable16[51] = {
174
185
  0, 1, 2, 3, 5, 7, 10, 14,
175
186
  20, 28, 39, 54, 75, 104, 144, 200,
176
187
  277, 383, 530, 733, 1014, 1402, 1939, 2681,
@@ -178,59 +189,56 @@ const int kStatsTable12[51] = {
178
189
  49412, 68303, 94416, 130512, 180408, 249380, 344720, 476509,
179
190
  658682, 910501, 1258592, 1739760, 2404882, 3324285, 4595181, 6351949,
180
191
  8780340, 12137120, 16777216};
181
- const uint8_t kStatsTable13[88] = {
192
+ const uint8_t kStatsTable17[88] = {
182
193
  4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11, 11, 12, 12, 13,
183
194
  13, 14, 14, 15, 15, 16, 16, 17, 18, 18, 18, 19, 20, 20, 21, 21, 22, 22,
184
195
  23, 23, 24, 24, 25, 25, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32,
185
196
  32, 33, 33, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 42,
186
197
  42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 50, 50};
187
- const int kStatsTable14[11] = {0, 1, 2, 4, 7, 11, 17, 26, 38, 56, 80};
188
- const uint8_t kStatsTable15[9] = {3, 3, 4, 5, 6, 6, 7, 8, 9};
189
- const int kStatsTable16[41] = {
190
- 0, 1, 2, 3, 5, 8, 12, 18, 26,
191
- 37, 53, 76, 108, 153, 217, 308, 436, 617,
192
- 873, 1235, 1748, 2473, 3499, 4950, 7003, 9907, 14015,
193
- 19825, 28044, 39670, 56116, 79379, 112286, 158835, 224680, 317821,
194
- 449574, 635945, 899575, 1272492, 1800000};
195
- const uint8_t kStatsTable17[37] = {
196
- 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
197
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39};
198
198
  } // namespace
199
- int Histogram_16777216_20_64::BucketFor(int value) {
200
- if (value < 2) {
199
+ int Histogram_80_10_64::BucketFor(int value) {
200
+ if (value < 3) {
201
201
  if (value < 0) {
202
202
  return 0;
203
203
  } else {
204
204
  return value;
205
205
  }
206
206
  } else {
207
- if (value < 8388609) {
207
+ if (value < 49) {
208
208
  DblUint val;
209
209
  val.dbl = value;
210
210
  const int bucket =
211
- kStatsTable1[((val.uint - 4611686018427387904ull) >> 52)];
211
+ kStatsTable1[((val.uint - 4613937818241073152ull) >> 51)];
212
212
  return bucket - (value < kStatsTable0[bucket]);
213
213
  } else {
214
- return 19;
214
+ if (value < 56) {
215
+ return 8;
216
+ } else {
217
+ return 9;
218
+ }
215
219
  }
216
220
  }
217
221
  }
218
- int Histogram_100000_20_64::BucketFor(int value) {
219
- if (value < 3) {
222
+ int Histogram_100_20_64::BucketFor(int value) {
223
+ if (value < 6) {
220
224
  if (value < 0) {
221
225
  return 0;
222
226
  } else {
223
227
  return value;
224
228
  }
225
229
  } else {
226
- if (value < 65537) {
230
+ if (value < 81) {
227
231
  DblUint val;
228
232
  val.dbl = value;
229
233
  const int bucket =
230
- kStatsTable3[((val.uint - 4613937818241073152ull) >> 51)];
234
+ kStatsTable3[((val.uint - 4618441417868443648ull) >> 50)];
231
235
  return bucket - (value < kStatsTable2[bucket]);
232
236
  } else {
233
- return 19;
237
+ if (value < 85) {
238
+ return 18;
239
+ } else {
240
+ return 19;
241
+ }
234
242
  }
235
243
  }
236
244
  }
@@ -276,91 +284,87 @@ int Histogram_65536_26_64::BucketFor(int value) {
276
284
  }
277
285
  }
278
286
  }
279
- int Histogram_16777216_8_8::BucketFor(int value) {
280
- if (value < 2) {
287
+ int Histogram_100000_20_64::BucketFor(int value) {
288
+ if (value < 3) {
281
289
  if (value < 0) {
282
290
  return 0;
283
291
  } else {
284
292
  return value;
285
293
  }
286
294
  } else {
287
- if (value < 2097153) {
295
+ if (value < 65537) {
288
296
  DblUint val;
289
297
  val.dbl = value;
290
298
  const int bucket =
291
- kStatsTable9[((val.uint - 4611686018427387904ull) >> 53)];
299
+ kStatsTable9[((val.uint - 4613937818241073152ull) >> 51)];
292
300
  return bucket - (value < kStatsTable8[bucket]);
293
301
  } else {
294
- return 7;
302
+ return 19;
295
303
  }
296
304
  }
297
305
  }
298
- int Histogram_100_20_64::BucketFor(int value) {
299
- if (value < 6) {
306
+ int Histogram_1800000_40_64::BucketFor(int value) {
307
+ if (value < 4) {
300
308
  if (value < 0) {
301
309
  return 0;
302
310
  } else {
303
311
  return value;
304
312
  }
305
313
  } else {
306
- if (value < 81) {
314
+ if (value < 1048577) {
307
315
  DblUint val;
308
316
  val.dbl = value;
309
317
  const int bucket =
310
- kStatsTable11[((val.uint - 4618441417868443648ull) >> 50)];
318
+ kStatsTable11[((val.uint - 4616189618054758400ull) >> 51)];
311
319
  return bucket - (value < kStatsTable10[bucket]);
312
320
  } else {
313
- if (value < 85) {
314
- return 18;
321
+ if (value < 1272492) {
322
+ return 38;
315
323
  } else {
316
- return 19;
324
+ return 39;
317
325
  }
318
326
  }
319
327
  }
320
328
  }
321
- int Histogram_16777216_50_64::BucketFor(int value) {
322
- if (value < 4) {
329
+ int Histogram_16777216_8_8::BucketFor(int value) {
330
+ if (value < 2) {
323
331
  if (value < 0) {
324
332
  return 0;
325
333
  } else {
326
334
  return value;
327
335
  }
328
336
  } else {
329
- if (value < 14680065) {
337
+ if (value < 2097153) {
330
338
  DblUint val;
331
339
  val.dbl = value;
332
340
  const int bucket =
333
- kStatsTable13[((val.uint - 4616189618054758400ull) >> 50)];
341
+ kStatsTable13[((val.uint - 4611686018427387904ull) >> 53)];
334
342
  return bucket - (value < kStatsTable12[bucket]);
335
343
  } else {
336
- return 49;
344
+ return 7;
337
345
  }
338
346
  }
339
347
  }
340
- int Histogram_80_10_64::BucketFor(int value) {
341
- if (value < 3) {
348
+ int Histogram_16777216_20_64::BucketFor(int value) {
349
+ if (value < 2) {
342
350
  if (value < 0) {
343
351
  return 0;
344
352
  } else {
345
353
  return value;
346
354
  }
347
355
  } else {
348
- if (value < 49) {
356
+ if (value < 8388609) {
349
357
  DblUint val;
350
358
  val.dbl = value;
351
359
  const int bucket =
352
- kStatsTable15[((val.uint - 4613937818241073152ull) >> 51)];
360
+ kStatsTable15[((val.uint - 4611686018427387904ull) >> 52)];
353
361
  return bucket - (value < kStatsTable14[bucket]);
354
362
  } else {
355
- if (value < 56) {
356
- return 8;
357
- } else {
358
- return 9;
359
- }
363
+ return 19;
360
364
  }
361
365
  }
362
366
  }
363
- int Histogram_1800000_40_64::BucketFor(int value) {
367
+ int Histogram_16777216_50_64::BucketFor(int value) {
364
368
  if (value < 4) {
365
369
  if (value < 0) {
366
370
  return 0;
@@ -368,18 +372,14 @@ int Histogram_1800000_40_64::BucketFor(int value) {
368
372
  return value;
369
373
  }
370
374
  } else {
371
- if (value < 1048577) {
375
+ if (value < 14680065) {
372
376
  DblUint val;
373
377
  val.dbl = value;
374
378
  const int bucket =
375
- kStatsTable17[((val.uint - 4616189618054758400ull) >> 51)];
379
+ kStatsTable17[((val.uint - 4616189618054758400ull) >> 50)];
376
380
  return bucket - (value < kStatsTable16[bucket]);
377
381
  } else {
378
- if (value < 1272492) {
379
- return 38;
380
- } else {
381
- return 39;
382
- }
382
+ return 49;
383
383
  }
384
384
  }
385
385
  }
@@ -398,13 +398,6 @@ const absl::string_view
398
398
  "syscall_read",
399
399
  "tcp_read_alloc_8k",
400
400
  "tcp_read_alloc_64k",
401
- "http2_settings_writes",
402
- "http2_pings_sent",
403
- "http2_writes_begun",
404
- "http2_transport_stalls",
405
- "http2_stream_stalls",
406
- "http2_hpack_hits",
407
- "http2_hpack_misses",
408
401
  "cq_pluck_creates",
409
402
  "cq_next_creates",
410
403
  "cq_callback_creates",
@@ -439,15 +432,6 @@ const absl::string_view GlobalStats::counter_doc[static_cast<int>(
439
432
  "Number of read syscalls (or equivalent - eg recvmsg) made by this process",
440
433
  "Number of 8k allocations by the TCP subsystem for reading",
441
434
  "Number of 64k allocations by the TCP subsystem for reading",
442
- "Number of settings frames sent",
443
- "Number of HTTP2 pings sent by process",
444
- "Number of HTTP2 writes initiated",
445
- "Number of times sending was completely stalled by the transport flow "
446
- "control window",
447
- "Number of times sending was completely stalled by the stream flow control "
448
- "window",
449
- "Number of HPACK cache hits",
450
- "Number of HPACK cache misses (entries added but never used)",
451
435
  "Number of completion queues created for cq_pluck (indicates sync api "
452
436
  "usage)",
453
437
  "Number of completion queues created for cq_next (indicates cq async api "
@@ -477,22 +461,6 @@ const absl::string_view
477
461
  "tcp_read_size",
478
462
  "tcp_read_offer",
479
463
  "tcp_read_offer_iov_size",
480
- "http2_send_message_size",
481
- "http2_metadata_size",
482
- "http2_hpack_entry_lifetime",
483
- "http2_header_table_size",
484
- "http2_initial_window_size",
485
- "http2_max_concurrent_streams",
486
- "http2_max_frame_size",
487
- "http2_max_header_list_size",
488
- "http2_preferred_receive_crypto_message_size",
489
- "http2_stream_remote_window_update",
490
- "http2_transport_remote_window_update",
491
- "http2_transport_window_update_period",
492
- "http2_stream_window_update_period",
493
- "http2_write_target_size",
494
- "http2_write_data_frame_size",
495
- "http2_read_data_frame_size",
496
464
  "wrr_subchannel_list_size",
497
465
  "wrr_subchannel_ready_size",
498
466
  "work_serializer_run_time_ms",
@@ -522,23 +490,6 @@ const absl::string_view GlobalStats::histogram_doc[static_cast<int>(
522
490
  "Number of bytes received by each syscall_read",
523
491
  "Number of bytes offered to each syscall_read",
524
492
  "Number of byte segments offered to each syscall_read",
525
- "Size of messages received by HTTP2 transport",
526
- "Number of bytes consumed by metadata, according to HPACK accounting rules",
527
- "Lifetime of HPACK entries in the cache (in milliseconds)",
528
- "Http2 header table size received through SETTINGS frame",
529
- "Http2 initial window size received through SETTINGS frame",
530
- "Http2 max concurrent streams received through SETTINGS frame",
531
- "Http2 max frame size received through SETTINGS frame",
532
- "Http2 max header list size received through SETTINGS frame",
533
- "Http2 preferred receive crypto message size received through SETTINGS "
534
- "frame",
535
- "Stream window update sent by peer",
536
- "Transport window update sent by peer",
537
- "Period in milliseconds at which peer sends transport window update",
538
- "Period in milliseconds at which peer sends stream window update",
539
- "Number of bytes targetted for http2 writes",
540
- "Number of bytes for each data frame written",
541
- "Number of bytes for each data frame read",
542
493
  "Number of subchannels in a subchannel list at picker creation time",
543
494
  "Number of READY subchannels in a subchannel list at picker creation time",
544
495
  "Number of milliseconds work serializers run for",
@@ -575,13 +526,6 @@ GlobalStats::GlobalStats()
575
526
  syscall_read{0},
576
527
  tcp_read_alloc_8k{0},
577
528
  tcp_read_alloc_64k{0},
578
- http2_settings_writes{0},
579
- http2_pings_sent{0},
580
- http2_writes_begun{0},
581
- http2_transport_stalls{0},
582
- http2_stream_stalls{0},
583
- http2_hpack_hits{0},
584
- http2_hpack_misses{0},
585
529
  cq_pluck_creates{0},
586
530
  cq_next_creates{0},
587
531
  cq_callback_creates{0},
@@ -607,69 +551,20 @@ HistogramView GlobalStats::histogram(Histogram which) const {
607
551
  return HistogramView{&Histogram_65536_26_64::BucketFor, kStatsTable6, 26,
608
552
  call_initial_size.buckets()};
609
553
  case Histogram::kTcpWriteSize:
610
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
554
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
611
555
  20, tcp_write_size.buckets()};
612
556
  case Histogram::kTcpWriteIovSize:
613
- return HistogramView{&Histogram_80_10_64::BucketFor, kStatsTable14, 10,
557
+ return HistogramView{&Histogram_80_10_64::BucketFor, kStatsTable0, 10,
614
558
  tcp_write_iov_size.buckets()};
615
559
  case Histogram::kTcpReadSize:
616
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
560
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
617
561
  20, tcp_read_size.buckets()};
618
562
  case Histogram::kTcpReadOffer:
619
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
563
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
620
564
  20, tcp_read_offer.buckets()};
621
565
  case Histogram::kTcpReadOfferIovSize:
622
- return HistogramView{&Histogram_80_10_64::BucketFor, kStatsTable14, 10,
566
+ return HistogramView{&Histogram_80_10_64::BucketFor, kStatsTable0, 10,
623
567
  tcp_read_offer_iov_size.buckets()};
624
- case Histogram::kHttp2SendMessageSize:
625
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
626
- 20, http2_send_message_size.buckets()};
627
- case Histogram::kHttp2MetadataSize:
628
- return HistogramView{&Histogram_65536_26_64::BucketFor, kStatsTable6, 26,
629
- http2_metadata_size.buckets()};
630
- case Histogram::kHttp2HpackEntryLifetime:
631
- return HistogramView{&Histogram_1800000_40_64::BucketFor, kStatsTable16,
632
- 40, http2_hpack_entry_lifetime.buckets()};
633
- case Histogram::kHttp2HeaderTableSize:
634
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
635
- 20, http2_header_table_size.buckets()};
636
- case Histogram::kHttp2InitialWindowSize:
637
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
638
- 50, http2_initial_window_size.buckets()};
639
- case Histogram::kHttp2MaxConcurrentStreams:
640
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
641
- 20, http2_max_concurrent_streams.buckets()};
642
- case Histogram::kHttp2MaxFrameSize:
643
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
644
- 50, http2_max_frame_size.buckets()};
645
- case Histogram::kHttp2MaxHeaderListSize:
646
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
647
- 20, http2_max_header_list_size.buckets()};
648
- case Histogram::kHttp2PreferredReceiveCryptoMessageSize:
649
- return HistogramView{
650
- &Histogram_16777216_20_64::BucketFor, kStatsTable0, 20,
651
- http2_preferred_receive_crypto_message_size.buckets()};
652
- case Histogram::kHttp2StreamRemoteWindowUpdate:
653
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
654
- 20, http2_stream_remote_window_update.buckets()};
655
- case Histogram::kHttp2TransportRemoteWindowUpdate:
656
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
657
- 20, http2_transport_remote_window_update.buckets()};
658
- case Histogram::kHttp2TransportWindowUpdatePeriod:
659
- return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
660
- http2_transport_window_update_period.buckets()};
661
- case Histogram::kHttp2StreamWindowUpdatePeriod:
662
- return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
663
- http2_stream_window_update_period.buckets()};
664
- case Histogram::kHttp2WriteTargetSize:
665
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
666
- 50, http2_write_target_size.buckets()};
667
- case Histogram::kHttp2WriteDataFrameSize:
668
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
669
- 50, http2_write_data_frame_size.buckets()};
670
- case Histogram::kHttp2ReadDataFrameSize:
671
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
672
- 50, http2_read_data_frame_size.buckets()};
673
568
  case Histogram::kWrrSubchannelListSize:
674
569
  return HistogramView{&Histogram_10000_20_64::BucketFor, kStatsTable4, 20,
675
570
  wrr_subchannel_list_size.buckets()};
@@ -677,79 +572,62 @@ HistogramView GlobalStats::histogram(Histogram which) const {
677
572
  return HistogramView{&Histogram_10000_20_64::BucketFor, kStatsTable4, 20,
678
573
  wrr_subchannel_ready_size.buckets()};
679
574
  case Histogram::kWorkSerializerRunTimeMs:
680
- return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
575
+ return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable8, 20,
681
576
  work_serializer_run_time_ms.buckets()};
682
577
  case Histogram::kWorkSerializerWorkTimeMs:
683
- return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
578
+ return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable8, 20,
684
579
  work_serializer_work_time_ms.buckets()};
685
580
  case Histogram::kWorkSerializerWorkTimePerItemMs:
686
- return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
581
+ return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable8, 20,
687
582
  work_serializer_work_time_per_item_ms.buckets()};
688
583
  case Histogram::kWorkSerializerItemsPerRun:
689
584
  return HistogramView{&Histogram_10000_20_64::BucketFor, kStatsTable4, 20,
690
585
  work_serializer_items_per_run.buckets()};
691
586
  case Histogram::kChaoticGoodSendmsgsPerWriteControl:
692
- return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable10, 20,
587
+ return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable2, 20,
693
588
  chaotic_good_sendmsgs_per_write_control.buckets()};
694
589
  case Histogram::kChaoticGoodRecvmsgsPerReadControl:
695
- return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable10, 20,
590
+ return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable2, 20,
696
591
  chaotic_good_recvmsgs_per_read_control.buckets()};
697
592
  case Histogram::kChaoticGoodSendmsgsPerWriteData:
698
- return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable10, 20,
593
+ return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable2, 20,
699
594
  chaotic_good_sendmsgs_per_write_data.buckets()};
700
595
  case Histogram::kChaoticGoodRecvmsgsPerReadData:
701
- return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable10, 20,
596
+ return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable2, 20,
702
597
  chaotic_good_recvmsgs_per_read_data.buckets()};
703
598
  case Histogram::kChaoticGoodThreadHopsPerWriteControl:
704
599
  return HistogramView{
705
- &Histogram_100_20_64::BucketFor, kStatsTable10, 20,
600
+ &Histogram_100_20_64::BucketFor, kStatsTable2, 20,
706
601
  chaotic_good_thread_hops_per_write_control.buckets()};
707
602
  case Histogram::kChaoticGoodThreadHopsPerReadControl:
708
- return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable10, 20,
603
+ return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable2, 20,
709
604
  chaotic_good_thread_hops_per_read_control.buckets()};
710
605
  case Histogram::kChaoticGoodThreadHopsPerWriteData:
711
- return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable10, 20,
606
+ return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable2, 20,
712
607
  chaotic_good_thread_hops_per_write_data.buckets()};
713
608
  case Histogram::kChaoticGoodThreadHopsPerReadData:
714
- return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable10, 20,
609
+ return HistogramView{&Histogram_100_20_64::BucketFor, kStatsTable2, 20,
715
610
  chaotic_good_thread_hops_per_read_data.buckets()};
716
611
  case Histogram::kChaoticGoodTcpReadSizeData:
717
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
612
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
718
613
  20, chaotic_good_tcp_read_size_data.buckets()};
719
614
  case Histogram::kChaoticGoodTcpReadSizeControl:
720
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
615
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
721
616
  20, chaotic_good_tcp_read_size_control.buckets()};
722
617
  case Histogram::kChaoticGoodTcpReadOfferData:
723
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
618
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
724
619
  20, chaotic_good_tcp_read_offer_data.buckets()};
725
620
  case Histogram::kChaoticGoodTcpReadOfferControl:
726
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
621
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
727
622
  20, chaotic_good_tcp_read_offer_control.buckets()};
728
623
  case Histogram::kChaoticGoodTcpWriteSizeData:
729
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
624
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
730
625
  20, chaotic_good_tcp_write_size_data.buckets()};
731
626
  case Histogram::kChaoticGoodTcpWriteSizeControl:
732
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
627
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
733
628
  20, chaotic_good_tcp_write_size_control.buckets()};
734
629
  }
735
630
  }
736
- const absl::string_view
737
- Http2Stats::counter_name[static_cast<int>(Counter::COUNT)] = {
738
- "http2_writes_begun",
739
- };
740
- const absl::string_view
741
- Http2Stats::counter_doc[static_cast<int>(Counter::COUNT)] = {
742
- "Number of HTTP2 writes initiated",
743
- };
744
- const absl::string_view
745
- Http2Stats::histogram_name[static_cast<int>(Histogram::COUNT)] = {
746
- "http2_write_target_size",
747
- };
748
- const absl::string_view
749
- Http2Stats::histogram_doc[static_cast<int>(Histogram::COUNT)] = {
750
- "Number of bytes targetted for http2 writes",
751
- };
752
- Http2Stats::Http2Stats() : http2_writes_begun{0} {}
753
631
  std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
754
632
  auto result = std::make_unique<GlobalStats>();
755
633
  for (const auto& data : data_) {
@@ -777,20 +655,6 @@ std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
777
655
  data.tcp_read_alloc_8k.load(std::memory_order_relaxed);
778
656
  result->tcp_read_alloc_64k +=
779
657
  data.tcp_read_alloc_64k.load(std::memory_order_relaxed);
780
- result->http2_settings_writes +=
781
- data.http2_settings_writes.load(std::memory_order_relaxed);
782
- result->http2_pings_sent +=
783
- data.http2_pings_sent.load(std::memory_order_relaxed);
784
- result->http2_writes_begun +=
785
- data.http2_writes_begun.load(std::memory_order_relaxed);
786
- result->http2_transport_stalls +=
787
- data.http2_transport_stalls.load(std::memory_order_relaxed);
788
- result->http2_stream_stalls +=
789
- data.http2_stream_stalls.load(std::memory_order_relaxed);
790
- result->http2_hpack_hits +=
791
- data.http2_hpack_hits.load(std::memory_order_relaxed);
792
- result->http2_hpack_misses +=
793
- data.http2_hpack_misses.load(std::memory_order_relaxed);
794
658
  result->cq_pluck_creates +=
795
659
  data.cq_pluck_creates.load(std::memory_order_relaxed);
796
660
  result->cq_next_creates +=
@@ -827,32 +691,6 @@ std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
827
691
  data.tcp_read_size.Collect(&result->tcp_read_size);
828
692
  data.tcp_read_offer.Collect(&result->tcp_read_offer);
829
693
  data.tcp_read_offer_iov_size.Collect(&result->tcp_read_offer_iov_size);
830
- data.http2_send_message_size.Collect(&result->http2_send_message_size);
831
- data.http2_metadata_size.Collect(&result->http2_metadata_size);
832
- data.http2_hpack_entry_lifetime.Collect(
833
- &result->http2_hpack_entry_lifetime);
834
- data.http2_header_table_size.Collect(&result->http2_header_table_size);
835
- data.http2_initial_window_size.Collect(&result->http2_initial_window_size);
836
- data.http2_max_concurrent_streams.Collect(
837
- &result->http2_max_concurrent_streams);
838
- data.http2_max_frame_size.Collect(&result->http2_max_frame_size);
839
- data.http2_max_header_list_size.Collect(
840
- &result->http2_max_header_list_size);
841
- data.http2_preferred_receive_crypto_message_size.Collect(
842
- &result->http2_preferred_receive_crypto_message_size);
843
- data.http2_stream_remote_window_update.Collect(
844
- &result->http2_stream_remote_window_update);
845
- data.http2_transport_remote_window_update.Collect(
846
- &result->http2_transport_remote_window_update);
847
- data.http2_transport_window_update_period.Collect(
848
- &result->http2_transport_window_update_period);
849
- data.http2_stream_window_update_period.Collect(
850
- &result->http2_stream_window_update_period);
851
- data.http2_write_target_size.Collect(&result->http2_write_target_size);
852
- data.http2_write_data_frame_size.Collect(
853
- &result->http2_write_data_frame_size);
854
- data.http2_read_data_frame_size.Collect(
855
- &result->http2_read_data_frame_size);
856
694
  data.wrr_subchannel_list_size.Collect(&result->wrr_subchannel_list_size);
857
695
  data.wrr_subchannel_ready_size.Collect(&result->wrr_subchannel_ready_size);
858
696
  data.work_serializer_run_time_ms.Collect(
@@ -916,15 +754,6 @@ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
916
754
  result->syscall_read = syscall_read - other.syscall_read;
917
755
  result->tcp_read_alloc_8k = tcp_read_alloc_8k - other.tcp_read_alloc_8k;
918
756
  result->tcp_read_alloc_64k = tcp_read_alloc_64k - other.tcp_read_alloc_64k;
919
- result->http2_settings_writes =
920
- http2_settings_writes - other.http2_settings_writes;
921
- result->http2_pings_sent = http2_pings_sent - other.http2_pings_sent;
922
- result->http2_writes_begun = http2_writes_begun - other.http2_writes_begun;
923
- result->http2_transport_stalls =
924
- http2_transport_stalls - other.http2_transport_stalls;
925
- result->http2_stream_stalls = http2_stream_stalls - other.http2_stream_stalls;
926
- result->http2_hpack_hits = http2_hpack_hits - other.http2_hpack_hits;
927
- result->http2_hpack_misses = http2_hpack_misses - other.http2_hpack_misses;
928
757
  result->cq_pluck_creates = cq_pluck_creates - other.cq_pluck_creates;
929
758
  result->cq_next_creates = cq_next_creates - other.cq_next_creates;
930
759
  result->cq_callback_creates = cq_callback_creates - other.cq_callback_creates;
@@ -953,42 +782,6 @@ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
953
782
  result->tcp_read_offer = tcp_read_offer - other.tcp_read_offer;
954
783
  result->tcp_read_offer_iov_size =
955
784
  tcp_read_offer_iov_size - other.tcp_read_offer_iov_size;
956
- result->http2_send_message_size =
957
- http2_send_message_size - other.http2_send_message_size;
958
- result->http2_metadata_size = http2_metadata_size - other.http2_metadata_size;
959
- result->http2_hpack_entry_lifetime =
960
- http2_hpack_entry_lifetime - other.http2_hpack_entry_lifetime;
961
- result->http2_header_table_size =
962
- http2_header_table_size - other.http2_header_table_size;
963
- result->http2_initial_window_size =
964
- http2_initial_window_size - other.http2_initial_window_size;
965
- result->http2_max_concurrent_streams =
966
- http2_max_concurrent_streams - other.http2_max_concurrent_streams;
967
- result->http2_max_frame_size =
968
- http2_max_frame_size - other.http2_max_frame_size;
969
- result->http2_max_header_list_size =
970
- http2_max_header_list_size - other.http2_max_header_list_size;
971
- result->http2_preferred_receive_crypto_message_size =
972
- http2_preferred_receive_crypto_message_size -
973
- other.http2_preferred_receive_crypto_message_size;
974
- result->http2_stream_remote_window_update =
975
- http2_stream_remote_window_update -
976
- other.http2_stream_remote_window_update;
977
- result->http2_transport_remote_window_update =
978
- http2_transport_remote_window_update -
979
- other.http2_transport_remote_window_update;
980
- result->http2_transport_window_update_period =
981
- http2_transport_window_update_period -
982
- other.http2_transport_window_update_period;
983
- result->http2_stream_window_update_period =
984
- http2_stream_window_update_period -
985
- other.http2_stream_window_update_period;
986
- result->http2_write_target_size =
987
- http2_write_target_size - other.http2_write_target_size;
988
- result->http2_write_data_frame_size =
989
- http2_write_data_frame_size - other.http2_write_data_frame_size;
990
- result->http2_read_data_frame_size =
991
- http2_read_data_frame_size - other.http2_read_data_frame_size;
992
785
  result->wrr_subchannel_list_size =
993
786
  wrr_subchannel_list_size - other.wrr_subchannel_list_size;
994
787
  result->wrr_subchannel_ready_size =
@@ -1043,4 +836,237 @@ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
1043
836
  other.chaotic_good_tcp_write_size_control;
1044
837
  return result;
1045
838
  }
839
+ const absl::string_view
840
+ Http2GlobalStats::counter_name[static_cast<int>(Counter::COUNT)] = {
841
+ "http2_settings_writes", "http2_pings_sent", "http2_transport_stalls",
842
+ "http2_stream_stalls", "http2_hpack_hits", "http2_hpack_misses",
843
+ "http2_writes_begun",
844
+ };
845
+ const absl::string_view
846
+ Http2GlobalStats::counter_doc[static_cast<int>(Counter::COUNT)] = {
847
+ "Number of settings frames sent",
848
+ "Number of HTTP2 pings sent by process",
849
+ "Number of times sending was completely stalled by the transport flow "
850
+ "control window",
851
+ "Number of times sending was completely stalled by the stream flow "
852
+ "control window",
853
+ "Number of HPACK cache hits",
854
+ "Number of HPACK cache misses (entries added but never used)",
855
+ "Number of HTTP2 writes initiated",
856
+ };
857
+ const absl::string_view
858
+ Http2GlobalStats::histogram_name[static_cast<int>(Histogram::COUNT)] = {
859
+ "http2_send_message_size",
860
+ "http2_metadata_size",
861
+ "http2_hpack_entry_lifetime",
862
+ "http2_header_table_size",
863
+ "http2_initial_window_size",
864
+ "http2_max_concurrent_streams",
865
+ "http2_max_frame_size",
866
+ "http2_max_header_list_size",
867
+ "http2_preferred_receive_crypto_message_size",
868
+ "http2_stream_remote_window_update",
869
+ "http2_transport_remote_window_update",
870
+ "http2_transport_window_update_period",
871
+ "http2_stream_window_update_period",
872
+ "http2_write_data_frame_size",
873
+ "http2_read_data_frame_size",
874
+ "http2_write_target_size",
875
+ };
876
+ const absl::string_view Http2GlobalStats::histogram_doc[static_cast<int>(
877
+ Histogram::COUNT)] = {
878
+ "Size of messages received by HTTP2 transport",
879
+ "Number of bytes consumed by metadata, according to HPACK accounting rules",
880
+ "Lifetime of HPACK entries in the cache (in milliseconds)",
881
+ "Http2 header table size received through SETTINGS frame",
882
+ "Http2 initial window size received through SETTINGS frame",
883
+ "Http2 max concurrent streams received through SETTINGS frame",
884
+ "Http2 max frame size received through SETTINGS frame",
885
+ "Http2 max header list size received through SETTINGS frame",
886
+ "Http2 preferred receive crypto message size received through SETTINGS "
887
+ "frame",
888
+ "Stream window update sent by peer",
889
+ "Transport window update sent by peer",
890
+ "Period in milliseconds at which peer sends transport window update",
891
+ "Period in milliseconds at which peer sends stream window update",
892
+ "Number of bytes for each data frame written",
893
+ "Number of bytes for each data frame read",
894
+ "Number of bytes targeted for http2 writes",
895
+ };
896
+ Http2GlobalStats::Http2GlobalStats()
897
+ : http2_settings_writes{0},
898
+ http2_pings_sent{0},
899
+ http2_transport_stalls{0},
900
+ http2_stream_stalls{0},
901
+ http2_hpack_hits{0},
902
+ http2_hpack_misses{0},
903
+ http2_writes_begun{0} {}
904
+ HistogramView Http2GlobalStats::histogram(Histogram which) const {
905
+ switch (which) {
906
+ default:
907
+ GPR_UNREACHABLE_CODE(return HistogramView());
908
+ case Histogram::kHttp2SendMessageSize:
909
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
910
+ 20, http2_send_message_size.buckets()};
911
+ case Histogram::kHttp2MetadataSize:
912
+ return HistogramView{&Histogram_65536_26_64::BucketFor, kStatsTable6, 26,
913
+ http2_metadata_size.buckets()};
914
+ case Histogram::kHttp2HpackEntryLifetime:
915
+ return HistogramView{&Histogram_1800000_40_64::BucketFor, kStatsTable10,
916
+ 40, http2_hpack_entry_lifetime.buckets()};
917
+ case Histogram::kHttp2HeaderTableSize:
918
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
919
+ 20, http2_header_table_size.buckets()};
920
+ case Histogram::kHttp2InitialWindowSize:
921
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable16,
922
+ 50, http2_initial_window_size.buckets()};
923
+ case Histogram::kHttp2MaxConcurrentStreams:
924
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
925
+ 20, http2_max_concurrent_streams.buckets()};
926
+ case Histogram::kHttp2MaxFrameSize:
927
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable16,
928
+ 50, http2_max_frame_size.buckets()};
929
+ case Histogram::kHttp2MaxHeaderListSize:
930
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
931
+ 20, http2_max_header_list_size.buckets()};
932
+ case Histogram::kHttp2PreferredReceiveCryptoMessageSize:
933
+ return HistogramView{
934
+ &Histogram_16777216_20_64::BucketFor, kStatsTable14, 20,
935
+ http2_preferred_receive_crypto_message_size.buckets()};
936
+ case Histogram::kHttp2StreamRemoteWindowUpdate:
937
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
938
+ 20, http2_stream_remote_window_update.buckets()};
939
+ case Histogram::kHttp2TransportRemoteWindowUpdate:
940
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable14,
941
+ 20, http2_transport_remote_window_update.buckets()};
942
+ case Histogram::kHttp2TransportWindowUpdatePeriod:
943
+ return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable8, 20,
944
+ http2_transport_window_update_period.buckets()};
945
+ case Histogram::kHttp2StreamWindowUpdatePeriod:
946
+ return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable8, 20,
947
+ http2_stream_window_update_period.buckets()};
948
+ case Histogram::kHttp2WriteDataFrameSize:
949
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable16,
950
+ 50, http2_write_data_frame_size.buckets()};
951
+ case Histogram::kHttp2ReadDataFrameSize:
952
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable16,
953
+ 50, http2_read_data_frame_size.buckets()};
954
+ case Histogram::kHttp2WriteTargetSize:
955
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable16,
956
+ 50, http2_write_target_size.buckets()};
957
+ }
958
+ }
959
+ std::unique_ptr<Http2GlobalStats> Http2GlobalStatsCollector::Collect() const {
960
+ auto result = std::make_unique<Http2GlobalStats>();
961
+ for (const auto& data : data_) {
962
+ result->http2_settings_writes +=
963
+ data.http2_settings_writes.load(std::memory_order_relaxed);
964
+ result->http2_pings_sent +=
965
+ data.http2_pings_sent.load(std::memory_order_relaxed);
966
+ result->http2_transport_stalls +=
967
+ data.http2_transport_stalls.load(std::memory_order_relaxed);
968
+ result->http2_stream_stalls +=
969
+ data.http2_stream_stalls.load(std::memory_order_relaxed);
970
+ result->http2_hpack_hits +=
971
+ data.http2_hpack_hits.load(std::memory_order_relaxed);
972
+ result->http2_hpack_misses +=
973
+ data.http2_hpack_misses.load(std::memory_order_relaxed);
974
+ result->http2_writes_begun +=
975
+ data.http2_writes_begun.load(std::memory_order_relaxed);
976
+ data.http2_send_message_size.Collect(&result->http2_send_message_size);
977
+ data.http2_metadata_size.Collect(&result->http2_metadata_size);
978
+ data.http2_hpack_entry_lifetime.Collect(
979
+ &result->http2_hpack_entry_lifetime);
980
+ data.http2_header_table_size.Collect(&result->http2_header_table_size);
981
+ data.http2_initial_window_size.Collect(&result->http2_initial_window_size);
982
+ data.http2_max_concurrent_streams.Collect(
983
+ &result->http2_max_concurrent_streams);
984
+ data.http2_max_frame_size.Collect(&result->http2_max_frame_size);
985
+ data.http2_max_header_list_size.Collect(
986
+ &result->http2_max_header_list_size);
987
+ data.http2_preferred_receive_crypto_message_size.Collect(
988
+ &result->http2_preferred_receive_crypto_message_size);
989
+ data.http2_stream_remote_window_update.Collect(
990
+ &result->http2_stream_remote_window_update);
991
+ data.http2_transport_remote_window_update.Collect(
992
+ &result->http2_transport_remote_window_update);
993
+ data.http2_transport_window_update_period.Collect(
994
+ &result->http2_transport_window_update_period);
995
+ data.http2_stream_window_update_period.Collect(
996
+ &result->http2_stream_window_update_period);
997
+ data.http2_write_data_frame_size.Collect(
998
+ &result->http2_write_data_frame_size);
999
+ data.http2_read_data_frame_size.Collect(
1000
+ &result->http2_read_data_frame_size);
1001
+ data.http2_write_target_size.Collect(&result->http2_write_target_size);
1002
+ }
1003
+ return result;
1004
+ }
1005
+ std::unique_ptr<Http2GlobalStats> Http2GlobalStats::Diff(
1006
+ const Http2GlobalStats& other) const {
1007
+ auto result = std::make_unique<Http2GlobalStats>();
1008
+ result->http2_settings_writes =
1009
+ http2_settings_writes - other.http2_settings_writes;
1010
+ result->http2_pings_sent = http2_pings_sent - other.http2_pings_sent;
1011
+ result->http2_transport_stalls =
1012
+ http2_transport_stalls - other.http2_transport_stalls;
1013
+ result->http2_stream_stalls = http2_stream_stalls - other.http2_stream_stalls;
1014
+ result->http2_hpack_hits = http2_hpack_hits - other.http2_hpack_hits;
1015
+ result->http2_hpack_misses = http2_hpack_misses - other.http2_hpack_misses;
1016
+ result->http2_writes_begun = http2_writes_begun - other.http2_writes_begun;
1017
+ result->http2_send_message_size =
1018
+ http2_send_message_size - other.http2_send_message_size;
1019
+ result->http2_metadata_size = http2_metadata_size - other.http2_metadata_size;
1020
+ result->http2_hpack_entry_lifetime =
1021
+ http2_hpack_entry_lifetime - other.http2_hpack_entry_lifetime;
1022
+ result->http2_header_table_size =
1023
+ http2_header_table_size - other.http2_header_table_size;
1024
+ result->http2_initial_window_size =
1025
+ http2_initial_window_size - other.http2_initial_window_size;
1026
+ result->http2_max_concurrent_streams =
1027
+ http2_max_concurrent_streams - other.http2_max_concurrent_streams;
1028
+ result->http2_max_frame_size =
1029
+ http2_max_frame_size - other.http2_max_frame_size;
1030
+ result->http2_max_header_list_size =
1031
+ http2_max_header_list_size - other.http2_max_header_list_size;
1032
+ result->http2_preferred_receive_crypto_message_size =
1033
+ http2_preferred_receive_crypto_message_size -
1034
+ other.http2_preferred_receive_crypto_message_size;
1035
+ result->http2_stream_remote_window_update =
1036
+ http2_stream_remote_window_update -
1037
+ other.http2_stream_remote_window_update;
1038
+ result->http2_transport_remote_window_update =
1039
+ http2_transport_remote_window_update -
1040
+ other.http2_transport_remote_window_update;
1041
+ result->http2_transport_window_update_period =
1042
+ http2_transport_window_update_period -
1043
+ other.http2_transport_window_update_period;
1044
+ result->http2_stream_window_update_period =
1045
+ http2_stream_window_update_period -
1046
+ other.http2_stream_window_update_period;
1047
+ result->http2_write_data_frame_size =
1048
+ http2_write_data_frame_size - other.http2_write_data_frame_size;
1049
+ result->http2_read_data_frame_size =
1050
+ http2_read_data_frame_size - other.http2_read_data_frame_size;
1051
+ result->http2_write_target_size =
1052
+ http2_write_target_size - other.http2_write_target_size;
1053
+ return result;
1054
+ }
1055
+ const absl::string_view
1056
+ Http2Stats::counter_name[static_cast<int>(Counter::COUNT)] = {
1057
+ "http2_writes_begun",
1058
+ };
1059
+ const absl::string_view
1060
+ Http2Stats::counter_doc[static_cast<int>(Counter::COUNT)] = {
1061
+ "Number of HTTP2 writes initiated",
1062
+ };
1063
+ const absl::string_view
1064
+ Http2Stats::histogram_name[static_cast<int>(Histogram::COUNT)] = {
1065
+ "http2_write_target_size",
1066
+ };
1067
+ const absl::string_view
1068
+ Http2Stats::histogram_doc[static_cast<int>(Histogram::COUNT)] = {
1069
+ "Number of bytes targeted for http2 writes",
1070
+ };
1071
+ Http2Stats::Http2Stats() : http2_writes_begun{0} {}
1046
1072
  } // namespace grpc_core