grpc 1.50.0 → 1.51.0

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

Potentially problematic release.


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

Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +131 -42
  3. data/include/grpc/event_engine/event_engine.h +10 -3
  4. data/include/grpc/event_engine/slice_buffer.h +17 -0
  5. data/include/grpc/grpc.h +0 -10
  6. data/include/grpc/impl/codegen/grpc_types.h +1 -5
  7. data/include/grpc/impl/codegen/port_platform.h +0 -3
  8. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  11. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
  12. data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
  13. data/src/core/ext/filters/client_channel/client_channel.h +3 -4
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
  15. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  17. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  18. data/src/core/ext/filters/client_channel/connector.h +1 -1
  19. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
  20. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  21. data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
  22. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
  34. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
  36. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  54. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
  59. data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
  60. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  61. data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
  62. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  64. data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
  65. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  70. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  71. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
  73. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  74. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
  75. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
  77. data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
  78. data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
  79. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
  86. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
  92. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  93. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
  94. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
  96. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
  97. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
  102. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
  103. data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
  104. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
  105. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
  106. data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
  107. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
  108. data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
  109. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  110. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  111. data/src/core/ext/xds/xds_api.cc +15 -68
  112. data/src/core/ext/xds/xds_api.h +3 -7
  113. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  114. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  115. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  116. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  117. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  118. data/src/core/ext/xds/xds_client.cc +122 -90
  119. data/src/core/ext/xds/xds_client.h +7 -2
  120. data/src/core/ext/xds/xds_client_grpc.cc +5 -24
  121. data/src/core/ext/xds/xds_cluster.cc +291 -183
  122. data/src/core/ext/xds/xds_cluster.h +11 -15
  123. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
  124. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
  125. data/src/core/ext/xds/xds_common_types.cc +208 -141
  126. data/src/core/ext/xds/xds_common_types.h +19 -13
  127. data/src/core/ext/xds/xds_endpoint.cc +214 -129
  128. data/src/core/ext/xds/xds_endpoint.h +4 -7
  129. data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
  130. data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
  131. data/src/core/ext/xds/xds_http_filters.cc +60 -73
  132. data/src/core/ext/xds/xds_http_filters.h +67 -19
  133. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
  134. data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
  135. data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
  136. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  137. data/src/core/ext/xds/xds_listener.cc +459 -417
  138. data/src/core/ext/xds/xds_listener.h +43 -47
  139. data/src/core/ext/xds/xds_resource_type.h +3 -11
  140. data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
  141. data/src/core/ext/xds/xds_route_config.cc +94 -80
  142. data/src/core/ext/xds/xds_route_config.h +10 -10
  143. data/src/core/ext/xds/xds_routing.cc +2 -1
  144. data/src/core/ext/xds/xds_routing.h +2 -0
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
  146. data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
  147. data/src/core/lib/address_utils/parse_address.cc +11 -10
  148. data/src/core/lib/channel/channel_args.h +16 -1
  149. data/src/core/lib/channel/channel_stack.cc +23 -20
  150. data/src/core/lib/channel/channel_stack.h +17 -4
  151. data/src/core/lib/channel/channel_stack_builder.cc +4 -7
  152. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  153. data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
  154. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  155. data/src/core/lib/channel/channel_trace.cc +4 -5
  156. data/src/core/lib/channel/channelz.cc +1 -1
  157. data/src/core/lib/channel/connected_channel.cc +695 -35
  158. data/src/core/lib/channel/connected_channel.h +0 -4
  159. data/src/core/lib/channel/promise_based_filter.cc +1004 -140
  160. data/src/core/lib/channel/promise_based_filter.h +364 -87
  161. data/src/core/lib/compression/message_compress.cc +5 -5
  162. data/src/core/lib/debug/event_log.cc +88 -0
  163. data/src/core/lib/debug/event_log.h +81 -0
  164. data/src/core/lib/debug/histogram_view.cc +69 -0
  165. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  166. data/src/core/lib/debug/stats.cc +22 -119
  167. data/src/core/lib/debug/stats.h +29 -35
  168. data/src/core/lib/debug/stats_data.cc +224 -73
  169. data/src/core/lib/debug/stats_data.h +263 -122
  170. data/src/core/lib/event_engine/common_closures.h +71 -0
  171. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  172. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  173. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  174. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  175. data/src/core/lib/event_engine/poller.h +10 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
  177. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  178. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
  179. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  180. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  181. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  182. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  184. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
  186. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  187. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
  189. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  191. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  192. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
  193. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
  194. data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
  195. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
  196. data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
  197. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
  198. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
  199. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
  200. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  201. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
  202. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  203. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  204. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  205. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  206. data/src/core/lib/event_engine/slice.cc +7 -6
  207. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  208. data/src/core/lib/event_engine/thread_pool.cc +106 -25
  209. data/src/core/lib/event_engine/thread_pool.h +32 -9
  210. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  211. data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  213. data/src/core/lib/experiments/config.cc +1 -1
  214. data/src/core/lib/experiments/experiments.cc +13 -2
  215. data/src/core/lib/experiments/experiments.h +8 -1
  216. data/src/core/lib/gpr/cpu_linux.cc +6 -2
  217. data/src/core/lib/gpr/log_linux.cc +3 -4
  218. data/src/core/lib/gpr/string.h +1 -1
  219. data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
  220. data/src/core/lib/gprpp/load_file.cc +75 -0
  221. data/src/core/lib/gprpp/load_file.h +33 -0
  222. data/src/core/lib/gprpp/per_cpu.h +46 -0
  223. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  224. data/src/core/lib/gprpp/stat_windows.cc +3 -2
  225. data/src/core/lib/gprpp/status_helper.h +1 -3
  226. data/src/core/lib/gprpp/strerror.cc +41 -0
  227. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
  228. data/src/core/lib/gprpp/thd_windows.cc +1 -2
  229. data/src/core/lib/gprpp/time.cc +3 -4
  230. data/src/core/lib/gprpp/time.h +13 -2
  231. data/src/core/lib/gprpp/validation_errors.h +18 -1
  232. data/src/core/lib/http/httpcli.cc +40 -44
  233. data/src/core/lib/http/httpcli.h +6 -5
  234. data/src/core/lib/http/httpcli_security_connector.cc +4 -6
  235. data/src/core/lib/http/parser.cc +54 -65
  236. data/src/core/lib/iomgr/buffer_list.cc +105 -116
  237. data/src/core/lib/iomgr/buffer_list.h +60 -44
  238. data/src/core/lib/iomgr/call_combiner.cc +11 -10
  239. data/src/core/lib/iomgr/call_combiner.h +3 -4
  240. data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
  241. data/src/core/lib/iomgr/closure.h +49 -5
  242. data/src/core/lib/iomgr/combiner.cc +2 -2
  243. data/src/core/lib/iomgr/endpoint.h +1 -1
  244. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
  245. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  246. data/src/core/lib/iomgr/error.cc +27 -42
  247. data/src/core/lib/iomgr/error.h +22 -152
  248. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  249. data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
  250. data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
  251. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  252. data/src/core/lib/iomgr/exec_ctx.h +2 -3
  253. data/src/core/lib/iomgr/executor.cc +1 -2
  254. data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
  255. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  256. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  257. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
  258. data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
  259. data/src/core/lib/iomgr/load_file.cc +5 -9
  260. data/src/core/lib/iomgr/lockfree_event.cc +10 -10
  261. data/src/core/lib/iomgr/pollset_windows.cc +4 -4
  262. data/src/core/lib/iomgr/python_util.h +2 -2
  263. data/src/core/lib/iomgr/resolve_address.cc +8 -3
  264. data/src/core/lib/iomgr/resolve_address.h +3 -4
  265. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  266. data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
  267. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  268. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
  269. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  270. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
  271. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
  272. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  273. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  274. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
  275. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
  276. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
  277. data/src/core/lib/iomgr/tcp_posix.cc +92 -108
  278. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
  279. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  280. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
  284. data/src/core/lib/iomgr/tcp_windows.cc +27 -34
  285. data/src/core/lib/iomgr/timer.h +8 -8
  286. data/src/core/lib/iomgr/timer_generic.cc +9 -15
  287. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  288. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
  289. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
  290. data/src/core/lib/json/json_channel_args.h +42 -0
  291. data/src/core/lib/json/json_object_loader.cc +7 -2
  292. data/src/core/lib/json/json_object_loader.h +22 -0
  293. data/src/core/lib/json/json_util.cc +5 -5
  294. data/src/core/lib/json/json_util.h +4 -4
  295. data/src/core/lib/load_balancing/lb_policy.cc +1 -1
  296. data/src/core/lib/load_balancing/lb_policy.h +4 -0
  297. data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
  298. data/src/core/lib/matchers/matchers.cc +3 -4
  299. data/src/core/lib/promise/activity.cc +16 -2
  300. data/src/core/lib/promise/activity.h +38 -15
  301. data/src/core/lib/promise/arena_promise.h +80 -51
  302. data/src/core/lib/promise/context.h +13 -6
  303. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  304. data/src/core/lib/promise/detail/promise_factory.h +58 -10
  305. data/src/core/lib/promise/detail/status.h +28 -0
  306. data/src/core/lib/promise/detail/switch.h +1455 -0
  307. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
  308. data/src/core/lib/promise/for_each.h +129 -0
  309. data/src/core/lib/promise/loop.h +7 -5
  310. data/src/core/lib/promise/map_pipe.h +87 -0
  311. data/src/core/lib/promise/pipe.cc +19 -0
  312. data/src/core/lib/promise/pipe.h +505 -0
  313. data/src/core/lib/promise/poll.h +13 -0
  314. data/src/core/lib/promise/seq.h +3 -5
  315. data/src/core/lib/promise/sleep.cc +5 -4
  316. data/src/core/lib/promise/sleep.h +1 -2
  317. data/src/core/lib/promise/try_concurrently.h +341 -0
  318. data/src/core/lib/promise/try_seq.h +10 -13
  319. data/src/core/lib/resolver/server_address.cc +1 -0
  320. data/src/core/lib/resolver/server_address.h +1 -3
  321. data/src/core/lib/resource_quota/api.cc +0 -1
  322. data/src/core/lib/resource_quota/arena.cc +19 -0
  323. data/src/core/lib/resource_quota/arena.h +89 -0
  324. data/src/core/lib/resource_quota/memory_quota.cc +1 -0
  325. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  326. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  327. data/src/core/lib/security/authorization/matchers.cc +25 -22
  328. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  329. data/src/core/lib/security/context/security_context.h +10 -0
  330. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  331. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  333. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  334. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  335. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
  341. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
  345. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  350. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
  354. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
  355. data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
  356. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
  357. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
  358. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
  359. data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
  360. data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
  361. data/src/core/lib/security/transport/security_handshaker.cc +53 -53
  362. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  363. data/src/core/lib/security/transport/tsi_error.cc +6 -3
  364. data/src/core/lib/security/util/json_util.cc +4 -5
  365. data/src/core/lib/service_config/service_config.h +1 -1
  366. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  367. data/src/core/lib/service_config/service_config_impl.h +14 -17
  368. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  369. data/src/core/lib/service_config/service_config_parser.h +14 -10
  370. data/src/core/lib/slice/b64.cc +2 -2
  371. data/src/core/lib/slice/slice.cc +7 -1
  372. data/src/core/lib/slice/slice.h +19 -6
  373. data/src/core/lib/slice/slice_buffer.cc +13 -14
  374. data/src/core/lib/slice/slice_internal.h +13 -21
  375. data/src/core/lib/slice/slice_refcount.h +34 -19
  376. data/src/core/lib/surface/byte_buffer.cc +3 -4
  377. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  378. data/src/core/lib/surface/call.cc +1366 -239
  379. data/src/core/lib/surface/call.h +44 -0
  380. data/src/core/lib/surface/call_details.cc +3 -3
  381. data/src/core/lib/surface/call_trace.cc +113 -0
  382. data/src/core/lib/surface/call_trace.h +30 -0
  383. data/src/core/lib/surface/channel.cc +44 -49
  384. data/src/core/lib/surface/channel.h +9 -1
  385. data/src/core/lib/surface/channel_ping.cc +1 -1
  386. data/src/core/lib/surface/channel_stack_type.cc +4 -0
  387. data/src/core/lib/surface/channel_stack_type.h +2 -0
  388. data/src/core/lib/surface/completion_queue.cc +38 -52
  389. data/src/core/lib/surface/init.cc +8 -39
  390. data/src/core/lib/surface/init_internally.h +8 -0
  391. data/src/core/lib/surface/lame_client.cc +10 -8
  392. data/src/core/lib/surface/server.cc +48 -70
  393. data/src/core/lib/surface/server.h +3 -4
  394. data/src/core/lib/surface/validate_metadata.cc +11 -12
  395. data/src/core/lib/surface/version.cc +2 -2
  396. data/src/core/lib/transport/connectivity_state.cc +2 -2
  397. data/src/core/lib/transport/error_utils.cc +34 -28
  398. data/src/core/lib/transport/error_utils.h +3 -3
  399. data/src/core/lib/transport/handshaker.cc +14 -14
  400. data/src/core/lib/transport/handshaker.h +1 -1
  401. data/src/core/lib/transport/handshaker_factory.h +26 -0
  402. data/src/core/lib/transport/handshaker_registry.cc +8 -2
  403. data/src/core/lib/transport/handshaker_registry.h +3 -4
  404. data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
  405. data/src/core/lib/transport/metadata_batch.h +17 -1
  406. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  407. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  408. data/src/core/lib/transport/transport.cc +63 -17
  409. data/src/core/lib/transport/transport.h +64 -68
  410. data/src/core/lib/transport/transport_impl.h +1 -1
  411. data/src/core/lib/transport/transport_op_string.cc +7 -6
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
  413. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
  416. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  417. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
  418. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
  419. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  420. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
  421. data/src/core/tsi/fake_transport_security.cc +3 -3
  422. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
  423. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  424. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
  425. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
  426. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
  427. data/src/ruby/lib/grpc/version.rb +1 -1
  428. data/src/ruby/spec/channel_spec.rb +0 -43
  429. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  430. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  431. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  432. data/third_party/zlib/compress.c +3 -3
  433. data/third_party/zlib/crc32.c +21 -12
  434. data/third_party/zlib/deflate.c +112 -106
  435. data/third_party/zlib/deflate.h +2 -2
  436. data/third_party/zlib/gzlib.c +1 -1
  437. data/third_party/zlib/gzread.c +3 -5
  438. data/third_party/zlib/gzwrite.c +1 -1
  439. data/third_party/zlib/infback.c +10 -7
  440. data/third_party/zlib/inflate.c +5 -2
  441. data/third_party/zlib/inftrees.c +2 -2
  442. data/third_party/zlib/inftrees.h +1 -1
  443. data/third_party/zlib/trees.c +61 -62
  444. data/third_party/zlib/uncompr.c +2 -2
  445. data/third_party/zlib/zconf.h +16 -3
  446. data/third_party/zlib/zlib.h +10 -10
  447. data/third_party/zlib/zutil.c +9 -7
  448. data/third_party/zlib/zutil.h +1 -0
  449. metadata +55 -18
  450. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  451. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  452. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  453. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  454. data/src/core/lib/gpr/murmur_hash.h +0 -29
  455. data/src/core/lib/gpr/tls.h +0 -156
  456. data/src/core/lib/promise/call_push_pull.h +0 -148
  457. data/src/core/lib/slice/slice_api.cc +0 -39
  458. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  459. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -24,34 +24,75 @@
24
24
 
25
25
  #include <stdint.h>
26
26
 
27
- #include "src/core/lib/debug/stats.h"
28
-
27
+ namespace grpc_core {
29
28
  namespace {
30
29
  union DblUint {
31
30
  double dbl;
32
31
  uint64_t uint;
33
32
  };
34
33
  } // namespace
35
- const char* grpc_stats_counter_name[GRPC_STATS_COUNTER_COUNT] = {
36
- "client_calls_created",
37
- "server_calls_created",
38
- "client_channels_created",
39
- "client_subchannels_created",
40
- "server_channels_created",
41
- "syscall_write",
42
- "syscall_read",
43
- "tcp_read_alloc_8k",
44
- "tcp_read_alloc_64k",
45
- "http2_settings_writes",
46
- "http2_pings_sent",
47
- "http2_writes_begun",
48
- "http2_transport_stalls",
49
- "http2_stream_stalls",
50
- "cq_pluck_creates",
51
- "cq_next_creates",
52
- "cq_callback_creates",
34
+ void HistogramCollector_32768_24::Collect(Histogram_32768_24* result) const {
35
+ for (int i = 0; i < 24; i++) {
36
+ result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
37
+ }
38
+ }
39
+ Histogram_32768_24 operator-(const Histogram_32768_24& left,
40
+ const Histogram_32768_24& right) {
41
+ Histogram_32768_24 result;
42
+ for (int i = 0; i < 24; i++) {
43
+ result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
44
+ }
45
+ return result;
46
+ }
47
+ void HistogramCollector_16777216_20::Collect(
48
+ Histogram_16777216_20* result) const {
49
+ for (int i = 0; i < 20; i++) {
50
+ result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
51
+ }
52
+ }
53
+ Histogram_16777216_20 operator-(const Histogram_16777216_20& left,
54
+ const Histogram_16777216_20& right) {
55
+ Histogram_16777216_20 result;
56
+ for (int i = 0; i < 20; i++) {
57
+ result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
58
+ }
59
+ return result;
60
+ }
61
+ void HistogramCollector_80_10::Collect(Histogram_80_10* result) const {
62
+ for (int i = 0; i < 10; i++) {
63
+ result->buckets_[i] += buckets_[i].load(std::memory_order_relaxed);
64
+ }
65
+ }
66
+ Histogram_80_10 operator-(const Histogram_80_10& left,
67
+ const Histogram_80_10& right) {
68
+ Histogram_80_10 result;
69
+ for (int i = 0; i < 10; i++) {
70
+ result.buckets_[i] = left.buckets_[i] - right.buckets_[i];
71
+ }
72
+ return result;
73
+ }
74
+ const absl::string_view
75
+ GlobalStats::counter_name[static_cast<int>(Counter::COUNT)] = {
76
+ "client_calls_created",
77
+ "server_calls_created",
78
+ "client_channels_created",
79
+ "client_subchannels_created",
80
+ "server_channels_created",
81
+ "syscall_write",
82
+ "syscall_read",
83
+ "tcp_read_alloc_8k",
84
+ "tcp_read_alloc_64k",
85
+ "http2_settings_writes",
86
+ "http2_pings_sent",
87
+ "http2_writes_begun",
88
+ "http2_transport_stalls",
89
+ "http2_stream_stalls",
90
+ "cq_pluck_creates",
91
+ "cq_next_creates",
92
+ "cq_callback_creates",
53
93
  };
54
- const char* grpc_stats_counter_doc[GRPC_STATS_COUNTER_COUNT] = {
94
+ const absl::string_view GlobalStats::counter_doc[static_cast<int>(
95
+ Counter::COUNT)] = {
55
96
  "Number of client side calls created by this process",
56
97
  "Number of server side calls created by this process",
57
98
  "Number of client channels created",
@@ -76,37 +117,40 @@ const char* grpc_stats_counter_doc[GRPC_STATS_COUNTER_COUNT] = {
76
117
  "Number of completion queues created for cq_callback (indicates callback "
77
118
  "api usage)",
78
119
  };
79
- const char* grpc_stats_histogram_name[GRPC_STATS_HISTOGRAM_COUNT] = {
80
- "call_initial_size", "tcp_write_size", "tcp_write_iov_size",
81
- "tcp_read_size", "tcp_read_offer", "tcp_read_offer_iov_size",
82
- "http2_send_message_size",
120
+ const absl::string_view
121
+ GlobalStats::histogram_name[static_cast<int>(Histogram::COUNT)] = {
122
+ "call_initial_size", "tcp_write_size", "tcp_write_iov_size",
123
+ "tcp_read_size", "tcp_read_offer", "tcp_read_offer_iov_size",
124
+ "http2_send_message_size",
83
125
  };
84
- const char* grpc_stats_histogram_doc[GRPC_STATS_HISTOGRAM_COUNT] = {
85
- "Initial size of the grpc_call arena created at call start",
86
- "Number of bytes offered to each syscall_write",
87
- "Number of byte segments offered to each syscall_write",
88
- "Number of bytes received by each syscall_read",
89
- "Number of bytes offered to each syscall_read",
90
- "Number of byte segments offered to each syscall_read",
91
- "Size of messages received by HTTP2 transport",
126
+ const absl::string_view
127
+ GlobalStats::histogram_doc[static_cast<int>(Histogram::COUNT)] = {
128
+ "Initial size of the grpc_call arena created at call start",
129
+ "Number of bytes offered to each syscall_write",
130
+ "Number of byte segments offered to each syscall_write",
131
+ "Number of bytes received by each syscall_read",
132
+ "Number of bytes offered to each syscall_read",
133
+ "Number of byte segments offered to each syscall_read",
134
+ "Size of messages received by HTTP2 transport",
92
135
  };
93
- const int grpc_stats_table_0[25] = {
136
+ namespace {
137
+ const int kStatsTable0[25] = {
94
138
  0, 1, 2, 4, 7, 11, 17, 26, 40, 61, 93, 142, 216,
95
139
  329, 500, 760, 1155, 1755, 2667, 4052, 6155, 9350, 14203, 21574, 32768};
96
- const uint8_t grpc_stats_table_1[27] = {3, 3, 4, 5, 6, 6, 7, 8, 9,
97
- 10, 11, 11, 12, 13, 14, 15, 16, 16,
98
- 17, 18, 19, 20, 20, 21, 22, 23, 24};
99
- const int grpc_stats_table_2[21] = {
140
+ const uint8_t kStatsTable1[27] = {3, 3, 4, 5, 6, 6, 7, 8, 9,
141
+ 10, 11, 11, 12, 13, 14, 15, 16, 16,
142
+ 17, 18, 19, 20, 20, 21, 22, 23, 24};
143
+ const int kStatsTable2[21] = {
100
144
  0, 1, 3, 8, 19, 45, 106,
101
145
  250, 588, 1383, 3252, 7646, 17976, 42262,
102
146
  99359, 233593, 549177, 1291113, 3035402, 7136218, 16777216};
103
- const uint8_t grpc_stats_table_3[23] = {2, 3, 3, 4, 5, 6, 7, 8,
104
- 8, 9, 10, 11, 12, 12, 13, 14,
105
- 15, 16, 16, 17, 18, 19, 20};
106
- const int grpc_stats_table_4[11] = {0, 1, 2, 4, 7, 11, 17, 26, 38, 56, 80};
107
- const uint8_t grpc_stats_table_5[9] = {3, 3, 4, 5, 6, 6, 7, 8, 9};
108
- namespace grpc_core {
109
- int BucketForHistogramValue_32768_24(int value) {
147
+ const uint8_t kStatsTable3[23] = {2, 3, 3, 4, 5, 6, 7, 8,
148
+ 8, 9, 10, 11, 12, 12, 13, 14,
149
+ 15, 16, 16, 17, 18, 19, 20};
150
+ const int kStatsTable4[11] = {0, 1, 2, 4, 7, 11, 17, 26, 38, 56, 80};
151
+ const uint8_t kStatsTable5[9] = {3, 3, 4, 5, 6, 6, 7, 8, 9};
152
+ } // namespace
153
+ int Histogram_32768_24::BucketFor(int value) {
110
154
  if (value < 3) {
111
155
  if (value < 0) {
112
156
  return 0;
@@ -115,19 +159,17 @@ int BucketForHistogramValue_32768_24(int value) {
115
159
  }
116
160
  } else {
117
161
  if (value < 24577) {
118
- // first_nontrivial_code=4613937818241073152
119
- // last_code=4672484613396889600 [24576.000000]
120
162
  DblUint val;
121
163
  val.dbl = value;
122
164
  const int bucket =
123
- grpc_stats_table_1[((val.uint - 4613937818241073152ull) >> 51)];
124
- return bucket - (value < grpc_stats_table_0[bucket]);
165
+ kStatsTable1[((val.uint - 4613937818241073152ull) >> 51)];
166
+ return bucket - (value < kStatsTable0[bucket]);
125
167
  } else {
126
168
  return 23;
127
169
  }
128
170
  }
129
171
  }
130
- int BucketForHistogramValue_16777216_20(int value) {
172
+ int Histogram_16777216_20::BucketFor(int value) {
131
173
  if (value < 2) {
132
174
  if (value < 0) {
133
175
  return 0;
@@ -136,19 +178,17 @@ int BucketForHistogramValue_16777216_20(int value) {
136
178
  }
137
179
  } else {
138
180
  if (value < 8388609) {
139
- // first_nontrivial_code=4611686018427387904
140
- // last_code=4710765210229538816 [8388608.000000]
141
181
  DblUint val;
142
182
  val.dbl = value;
143
183
  const int bucket =
144
- grpc_stats_table_3[((val.uint - 4611686018427387904ull) >> 52)];
145
- return bucket - (value < grpc_stats_table_2[bucket]);
184
+ kStatsTable3[((val.uint - 4611686018427387904ull) >> 52)];
185
+ return bucket - (value < kStatsTable2[bucket]);
146
186
  } else {
147
187
  return 19;
148
188
  }
149
189
  }
150
190
  }
151
- int BucketForHistogramValue_80_10(int value) {
191
+ int Histogram_80_10::BucketFor(int value) {
152
192
  if (value < 3) {
153
193
  if (value < 0) {
154
194
  return 0;
@@ -157,13 +197,11 @@ int BucketForHistogramValue_80_10(int value) {
157
197
  }
158
198
  } else {
159
199
  if (value < 49) {
160
- // first_nontrivial_code=4613937818241073152
161
- // last_code=4631952216750555136 [48.000000]
162
200
  DblUint val;
163
201
  val.dbl = value;
164
202
  const int bucket =
165
- grpc_stats_table_5[((val.uint - 4613937818241073152ull) >> 51)];
166
- return bucket - (value < grpc_stats_table_4[bucket]);
203
+ kStatsTable5[((val.uint - 4613937818241073152ull) >> 51)];
204
+ return bucket - (value < kStatsTable4[bucket]);
167
205
  } else {
168
206
  if (value < 56) {
169
207
  return 8;
@@ -173,18 +211,131 @@ int BucketForHistogramValue_80_10(int value) {
173
211
  }
174
212
  }
175
213
  }
214
+ GlobalStats::GlobalStats()
215
+ : client_calls_created{0},
216
+ server_calls_created{0},
217
+ client_channels_created{0},
218
+ client_subchannels_created{0},
219
+ server_channels_created{0},
220
+ syscall_write{0},
221
+ syscall_read{0},
222
+ tcp_read_alloc_8k{0},
223
+ tcp_read_alloc_64k{0},
224
+ http2_settings_writes{0},
225
+ http2_pings_sent{0},
226
+ http2_writes_begun{0},
227
+ http2_transport_stalls{0},
228
+ http2_stream_stalls{0},
229
+ cq_pluck_creates{0},
230
+ cq_next_creates{0},
231
+ cq_callback_creates{0} {}
232
+ HistogramView GlobalStats::histogram(Histogram which) const {
233
+ switch (which) {
234
+ default:
235
+ GPR_UNREACHABLE_CODE(return HistogramView());
236
+ case Histogram::kCallInitialSize:
237
+ return HistogramView{&Histogram_32768_24::BucketFor, kStatsTable0, 24,
238
+ call_initial_size.buckets()};
239
+ case Histogram::kTcpWriteSize:
240
+ return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable2, 20,
241
+ tcp_write_size.buckets()};
242
+ case Histogram::kTcpWriteIovSize:
243
+ return HistogramView{&Histogram_80_10::BucketFor, kStatsTable4, 10,
244
+ tcp_write_iov_size.buckets()};
245
+ case Histogram::kTcpReadSize:
246
+ return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable2, 20,
247
+ tcp_read_size.buckets()};
248
+ case Histogram::kTcpReadOffer:
249
+ return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable2, 20,
250
+ tcp_read_offer.buckets()};
251
+ case Histogram::kTcpReadOfferIovSize:
252
+ return HistogramView{&Histogram_80_10::BucketFor, kStatsTable4, 10,
253
+ tcp_read_offer_iov_size.buckets()};
254
+ case Histogram::kHttp2SendMessageSize:
255
+ return HistogramView{&Histogram_16777216_20::BucketFor, kStatsTable2, 20,
256
+ http2_send_message_size.buckets()};
257
+ }
258
+ }
259
+ std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
260
+ auto result = std::make_unique<GlobalStats>();
261
+ for (const auto& data : data_) {
262
+ result->client_calls_created +=
263
+ data.client_calls_created.load(std::memory_order_relaxed);
264
+ result->server_calls_created +=
265
+ data.server_calls_created.load(std::memory_order_relaxed);
266
+ result->client_channels_created +=
267
+ data.client_channels_created.load(std::memory_order_relaxed);
268
+ result->client_subchannels_created +=
269
+ data.client_subchannels_created.load(std::memory_order_relaxed);
270
+ result->server_channels_created +=
271
+ data.server_channels_created.load(std::memory_order_relaxed);
272
+ result->syscall_write += data.syscall_write.load(std::memory_order_relaxed);
273
+ result->syscall_read += data.syscall_read.load(std::memory_order_relaxed);
274
+ result->tcp_read_alloc_8k +=
275
+ data.tcp_read_alloc_8k.load(std::memory_order_relaxed);
276
+ result->tcp_read_alloc_64k +=
277
+ data.tcp_read_alloc_64k.load(std::memory_order_relaxed);
278
+ result->http2_settings_writes +=
279
+ data.http2_settings_writes.load(std::memory_order_relaxed);
280
+ result->http2_pings_sent +=
281
+ data.http2_pings_sent.load(std::memory_order_relaxed);
282
+ result->http2_writes_begun +=
283
+ data.http2_writes_begun.load(std::memory_order_relaxed);
284
+ result->http2_transport_stalls +=
285
+ data.http2_transport_stalls.load(std::memory_order_relaxed);
286
+ result->http2_stream_stalls +=
287
+ data.http2_stream_stalls.load(std::memory_order_relaxed);
288
+ result->cq_pluck_creates +=
289
+ data.cq_pluck_creates.load(std::memory_order_relaxed);
290
+ result->cq_next_creates +=
291
+ data.cq_next_creates.load(std::memory_order_relaxed);
292
+ result->cq_callback_creates +=
293
+ data.cq_callback_creates.load(std::memory_order_relaxed);
294
+ data.call_initial_size.Collect(&result->call_initial_size);
295
+ data.tcp_write_size.Collect(&result->tcp_write_size);
296
+ data.tcp_write_iov_size.Collect(&result->tcp_write_iov_size);
297
+ data.tcp_read_size.Collect(&result->tcp_read_size);
298
+ data.tcp_read_offer.Collect(&result->tcp_read_offer);
299
+ data.tcp_read_offer_iov_size.Collect(&result->tcp_read_offer_iov_size);
300
+ data.http2_send_message_size.Collect(&result->http2_send_message_size);
301
+ }
302
+ return result;
303
+ }
304
+ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
305
+ auto result = std::make_unique<GlobalStats>();
306
+ result->client_calls_created =
307
+ client_calls_created - other.client_calls_created;
308
+ result->server_calls_created =
309
+ server_calls_created - other.server_calls_created;
310
+ result->client_channels_created =
311
+ client_channels_created - other.client_channels_created;
312
+ result->client_subchannels_created =
313
+ client_subchannels_created - other.client_subchannels_created;
314
+ result->server_channels_created =
315
+ server_channels_created - other.server_channels_created;
316
+ result->syscall_write = syscall_write - other.syscall_write;
317
+ result->syscall_read = syscall_read - other.syscall_read;
318
+ result->tcp_read_alloc_8k = tcp_read_alloc_8k - other.tcp_read_alloc_8k;
319
+ result->tcp_read_alloc_64k = tcp_read_alloc_64k - other.tcp_read_alloc_64k;
320
+ result->http2_settings_writes =
321
+ http2_settings_writes - other.http2_settings_writes;
322
+ result->http2_pings_sent = http2_pings_sent - other.http2_pings_sent;
323
+ result->http2_writes_begun = http2_writes_begun - other.http2_writes_begun;
324
+ result->http2_transport_stalls =
325
+ http2_transport_stalls - other.http2_transport_stalls;
326
+ result->http2_stream_stalls = http2_stream_stalls - other.http2_stream_stalls;
327
+ result->cq_pluck_creates = cq_pluck_creates - other.cq_pluck_creates;
328
+ result->cq_next_creates = cq_next_creates - other.cq_next_creates;
329
+ result->cq_callback_creates = cq_callback_creates - other.cq_callback_creates;
330
+ result->call_initial_size = call_initial_size - other.call_initial_size;
331
+ result->tcp_write_size = tcp_write_size - other.tcp_write_size;
332
+ result->tcp_write_iov_size = tcp_write_iov_size - other.tcp_write_iov_size;
333
+ result->tcp_read_size = tcp_read_size - other.tcp_read_size;
334
+ result->tcp_read_offer = tcp_read_offer - other.tcp_read_offer;
335
+ result->tcp_read_offer_iov_size =
336
+ tcp_read_offer_iov_size - other.tcp_read_offer_iov_size;
337
+ result->http2_send_message_size =
338
+ http2_send_message_size - other.http2_send_message_size;
339
+ return result;
340
+ }
176
341
  } // namespace grpc_core
177
- const int grpc_stats_histo_buckets[7] = {24, 20, 10, 20, 20, 10, 20};
178
- const int grpc_stats_histo_start[7] = {0, 24, 44, 54, 74, 94, 104};
179
- const int* const grpc_stats_histo_bucket_boundaries[7] = {
180
- grpc_stats_table_0, grpc_stats_table_2, grpc_stats_table_4,
181
- grpc_stats_table_2, grpc_stats_table_2, grpc_stats_table_4,
182
- grpc_stats_table_2};
183
- int (*const grpc_stats_get_bucket[7])(int value) = {
184
- grpc_core::BucketForHistogramValue_32768_24,
185
- grpc_core::BucketForHistogramValue_16777216_20,
186
- grpc_core::BucketForHistogramValue_80_10,
187
- grpc_core::BucketForHistogramValue_16777216_20,
188
- grpc_core::BucketForHistogramValue_16777216_20,
189
- grpc_core::BucketForHistogramValue_80_10,
190
- grpc_core::BucketForHistogramValue_16777216_20};