grpc 1.42.0 → 1.43.1

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 (739) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +85 -34
  3. data/include/grpc/event_engine/event_engine.h +37 -13
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
  5. data/include/grpc/event_engine/memory_allocator.h +27 -11
  6. data/include/grpc/event_engine/memory_request.h +57 -0
  7. data/include/grpc/grpc_security.h +276 -145
  8. data/include/grpc/grpc_security_constants.h +1 -14
  9. data/include/grpc/impl/codegen/port_platform.h +7 -3
  10. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -7
  11. data/src/core/ext/filters/client_channel/backend_metric.h +3 -2
  12. data/src/core/ext/filters/client_channel/client_channel.cc +81 -40
  13. data/src/core/ext/filters/client_channel/client_channel.h +5 -4
  14. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -2
  15. data/src/core/ext/filters/client_channel/dynamic_filters.cc +4 -4
  16. data/src/core/ext/filters/client_channel/health/health_check_client.h +1 -1
  17. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +12 -14
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
  21. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +27 -80
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +82 -34
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -91
  25. data/src/core/ext/filters/client_channel/lb_policy.h +75 -59
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
  27. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -2
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +8 -12
  29. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -3
  30. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +6 -12
  31. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +222 -294
  32. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -7
  33. data/src/core/ext/filters/client_channel/resolver_registry.h +1 -2
  34. data/src/core/ext/filters/client_channel/subchannel.cc +4 -4
  35. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  36. data/src/core/ext/filters/http/client/http_client_filter.cc +14 -30
  37. data/src/core/ext/filters/http/http_filters_plugin.cc +3 -5
  38. data/src/core/ext/filters/http/server/http_server_filter.cc +11 -28
  39. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
  40. data/src/core/ext/filters/server_config_selector/server_config_selector.h +70 -0
  41. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +265 -0
  42. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
  43. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -20
  44. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
  45. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +8 -5
  46. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
  47. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -3
  48. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +54 -79
  49. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
  50. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
  51. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
  52. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +53 -62
  53. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
  54. data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
  55. data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
  56. data/src/core/ext/transport/chttp2/transport/flow_control.cc +8 -8
  57. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
  58. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +83 -19
  59. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +33 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +66 -92
  61. data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
  62. data/src/core/ext/transport/inproc/inproc_transport.cc +16 -7
  63. data/src/core/ext/transport/inproc/inproc_transport.h +1 -1
  64. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
  65. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
  66. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
  67. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
  68. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
  69. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
  70. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
  71. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
  72. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
  73. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
  74. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
  75. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
  76. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +253 -218
  77. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2 -0
  78. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
  79. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
  80. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
  81. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
  82. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
  83. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
  84. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
  85. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
  86. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +162 -128
  87. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +2 -0
  88. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
  89. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
  90. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
  91. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
  92. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
  93. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +89 -71
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +2 -0
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +117 -93
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +2 -0
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
  112. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
  113. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
  114. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -43
  115. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
  116. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
  117. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
  118. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
  119. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
  120. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
  121. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
  122. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
  123. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
  124. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
  125. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
  126. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
  127. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
  128. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
  129. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
  130. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
  131. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
  132. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +93 -75
  133. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +2 -0
  134. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
  135. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
  136. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -440
  137. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2 -0
  138. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
  139. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
  140. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
  141. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
  142. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
  143. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
  144. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
  145. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
  146. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
  147. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
  148. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
  149. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
  150. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
  151. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
  152. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
  153. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
  154. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
  155. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
  156. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
  157. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
  158. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
  159. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
  160. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
  161. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
  162. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
  163. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
  164. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
  165. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
  166. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
  167. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
  168. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
  169. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
  170. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
  171. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
  172. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
  173. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
  174. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
  175. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
  176. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
  177. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
  178. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
  179. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
  180. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
  181. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
  182. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
  183. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
  184. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
  185. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
  186. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
  187. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
  188. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
  189. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
  190. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
  191. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
  192. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
  193. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
  194. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
  195. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
  196. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
  197. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
  198. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
  199. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
  200. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
  201. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
  202. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
  203. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
  204. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
  205. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
  206. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
  207. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
  208. data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
  209. data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
  210. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
  211. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
  212. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
  213. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
  214. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
  215. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
  216. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
  217. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
  218. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
  219. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
  220. data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
  221. data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
  222. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
  223. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
  224. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
  225. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
  226. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
  227. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
  228. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
  229. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
  230. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
  231. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
  232. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
  233. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
  234. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
  235. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
  236. data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
  237. data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
  238. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
  239. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
  240. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
  241. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
  242. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
  243. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
  244. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
  245. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
  246. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
  247. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
  248. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +26 -13
  249. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +2 -0
  250. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
  251. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
  252. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -3
  253. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
  254. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
  255. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
  256. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
  257. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
  258. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
  259. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
  260. data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
  261. data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
  262. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +54 -9
  263. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +17 -0
  264. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +13 -2
  265. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
  266. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +24 -12
  267. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
  268. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +19 -7
  269. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
  270. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +18 -7
  271. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
  272. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +27 -15
  273. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
  274. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +18 -7
  275. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
  276. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +28 -15
  277. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +2 -0
  278. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +16 -5
  279. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +2 -0
  280. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
  281. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
  282. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
  283. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
  284. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
  285. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
  286. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +2 -55
  287. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
  288. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
  289. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
  290. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
  291. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +2 -53
  292. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
  293. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
  294. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
  295. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
  296. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +2 -21
  297. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
  298. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +2 -33
  299. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
  300. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
  301. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
  302. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
  303. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
  304. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
  305. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -17
  306. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
  307. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
  308. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
  309. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
  310. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
  311. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
  312. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
  313. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
  314. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
  315. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +2 -111
  316. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
  317. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
  318. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
  319. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
  320. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
  321. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
  322. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
  323. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
  324. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
  325. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
  326. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
  327. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
  328. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
  329. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
  330. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
  331. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
  332. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
  333. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
  334. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
  335. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
  336. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
  337. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
  338. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
  339. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
  340. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
  341. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
  342. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
  343. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
  344. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
  345. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
  346. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
  347. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
  348. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
  349. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
  350. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
  351. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
  352. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
  353. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
  354. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
  355. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
  356. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
  357. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
  358. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
  359. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
  360. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
  361. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +2 -11
  362. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +2 -7
  363. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +2 -2
  364. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +2 -7
  365. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +2 -7
  366. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
  367. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +2 -13
  368. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +2 -7
  369. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +2 -9
  370. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +2 -9
  371. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +2 -7
  372. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +2 -9
  373. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +2 -7
  374. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +2 -7
  375. data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
  376. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  377. data/src/core/ext/xds/xds_api.cc +409 -304
  378. data/src/core/ext/xds/xds_api.h +3 -1
  379. data/src/core/ext/xds/xds_bootstrap.cc +6 -3
  380. data/src/core/ext/xds/xds_certificate_provider.h +1 -2
  381. data/src/core/ext/xds/xds_channel_stack_modifier.cc +3 -4
  382. data/src/core/ext/xds/xds_client.cc +395 -291
  383. data/src/core/ext/xds/xds_client.h +47 -38
  384. data/src/core/ext/xds/xds_routing.cc +247 -0
  385. data/src/core/ext/xds/xds_routing.h +98 -0
  386. data/src/core/ext/xds/xds_server_config_fetcher.cc +975 -261
  387. data/src/core/lib/avl/avl.h +389 -88
  388. data/src/core/lib/backoff/backoff.cc +2 -2
  389. data/src/core/lib/channel/channel_args.cc +17 -17
  390. data/src/core/lib/channel/channel_args.h +11 -10
  391. data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
  392. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  393. data/src/core/lib/channel/channel_stack_builder.cc +0 -2
  394. data/src/core/lib/channel/channel_trace.cc +6 -6
  395. data/src/core/lib/channel/channelz.cc +1 -1
  396. data/src/core/lib/compression/compression_args.cc +7 -5
  397. data/src/core/lib/compression/compression_args.h +6 -4
  398. data/src/core/lib/config/core_configuration.cc +3 -1
  399. data/src/core/lib/config/core_configuration.h +11 -0
  400. data/src/core/lib/debug/trace.h +2 -2
  401. data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
  402. data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
  403. data/src/core/lib/event_engine/event_engine.cc +0 -13
  404. data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
  405. data/src/core/lib/event_engine/event_engine_factory.h +33 -0
  406. data/src/core/lib/event_engine/memory_allocator.cc +70 -0
  407. data/src/core/lib/gpr/tls.h +6 -0
  408. data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
  409. data/src/core/lib/gprpp/global_config_env.cc +7 -7
  410. data/src/core/lib/gprpp/global_config_env.h +2 -2
  411. data/src/core/lib/gprpp/manual_constructor.h +2 -3
  412. data/src/core/lib/gprpp/orphanable.h +1 -1
  413. data/src/core/lib/gprpp/ref_counted.h +1 -1
  414. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
  415. data/src/core/lib/gprpp/status_helper.h +1 -1
  416. data/src/core/lib/gprpp/table.h +13 -1
  417. data/src/core/lib/http/httpcli.cc +30 -26
  418. data/src/core/lib/http/httpcli.h +14 -12
  419. data/src/core/lib/iomgr/buffer_list.cc +9 -9
  420. data/src/core/lib/iomgr/buffer_list.h +13 -13
  421. data/src/core/lib/iomgr/call_combiner.cc +2 -3
  422. data/src/core/lib/iomgr/endpoint.h +0 -1
  423. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
  424. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  425. data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
  426. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
  427. data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
  428. data/src/core/lib/iomgr/event_engine/iomgr.cc +5 -25
  429. data/src/core/lib/iomgr/event_engine/resolver.cc +3 -2
  430. data/src/core/lib/iomgr/event_engine/tcp.cc +7 -5
  431. data/src/core/lib/iomgr/event_engine/timer.cc +4 -3
  432. data/src/core/lib/iomgr/exec_ctx.h +11 -11
  433. data/src/core/lib/iomgr/executor.cc +12 -15
  434. data/src/core/lib/iomgr/executor.h +1 -1
  435. data/src/core/lib/iomgr/tcp_client.cc +2 -4
  436. data/src/core/lib/iomgr/tcp_client.h +1 -3
  437. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -9
  438. data/src/core/lib/iomgr/tcp_client_custom.cc +4 -10
  439. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -23
  440. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  441. data/src/core/lib/iomgr/tcp_client_windows.cc +1 -10
  442. data/src/core/lib/iomgr/tcp_custom.cc +9 -36
  443. data/src/core/lib/iomgr/tcp_custom.h +0 -1
  444. data/src/core/lib/iomgr/tcp_posix.cc +28 -33
  445. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  446. data/src/core/lib/iomgr/tcp_server.cc +4 -6
  447. data/src/core/lib/iomgr/tcp_server.h +6 -8
  448. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -15
  449. data/src/core/lib/iomgr/tcp_server_posix.cc +18 -22
  450. data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
  451. data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
  452. data/src/core/lib/iomgr/tcp_windows.cc +2 -7
  453. data/src/core/lib/iomgr/tcp_windows.h +1 -2
  454. data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
  455. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
  456. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +1 -1
  457. data/src/core/lib/iomgr/work_serializer.cc +115 -44
  458. data/src/core/lib/iomgr/work_serializer.h +16 -4
  459. data/src/core/lib/json/json_reader.cc +83 -35
  460. data/src/core/lib/json/json_util.cc +1 -1
  461. data/src/core/lib/promise/activity.cc +115 -0
  462. data/src/core/lib/promise/activity.h +499 -0
  463. data/src/core/lib/promise/context.h +86 -0
  464. data/src/core/lib/promise/detail/basic_seq.h +407 -0
  465. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  466. data/src/core/lib/promise/detail/promise_like.h +85 -0
  467. data/src/core/lib/promise/detail/status.h +44 -0
  468. data/src/core/lib/promise/detail/switch.h +1455 -0
  469. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  470. data/src/core/lib/promise/loop.h +108 -0
  471. data/src/core/lib/promise/map.h +88 -0
  472. data/src/core/lib/promise/poll.h +60 -0
  473. data/src/core/lib/promise/race.h +84 -0
  474. data/src/core/lib/promise/seq.h +71 -0
  475. data/src/core/lib/resource_quota/api.cc +108 -0
  476. data/src/core/lib/resource_quota/api.h +41 -0
  477. data/src/core/lib/resource_quota/memory_quota.cc +454 -0
  478. data/src/core/lib/resource_quota/memory_quota.h +421 -0
  479. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  480. data/src/core/lib/resource_quota/resource_quota.h +58 -0
  481. data/src/core/lib/resource_quota/thread_quota.cc +43 -0
  482. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  483. data/src/core/lib/resource_quota/trace.cc +19 -0
  484. data/src/core/lib/resource_quota/trace.h +24 -0
  485. data/src/core/lib/security/authorization/evaluate_args.cc +13 -19
  486. data/src/core/lib/security/authorization/evaluate_args.h +2 -1
  487. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +3 -1
  488. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +11 -12
  489. data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -10
  490. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +3 -4
  491. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -6
  492. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  493. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +4 -6
  494. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -22
  495. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
  496. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
  497. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
  498. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
  499. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +11 -90
  500. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +19 -82
  501. data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
  502. data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
  503. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
  504. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
  505. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -4
  506. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  507. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
  508. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
  509. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
  510. data/src/core/lib/security/security_connector/ssl_utils.cc +10 -2
  511. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  512. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +344 -195
  513. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -41
  514. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  515. data/src/core/lib/slice/percent_encoding.cc +30 -86
  516. data/src/core/lib/slice/percent_encoding.h +5 -11
  517. data/src/core/lib/slice/slice.cc +7 -7
  518. data/src/core/lib/slice/slice.h +341 -0
  519. data/src/core/lib/slice/slice_buffer.cc +4 -0
  520. data/src/core/lib/slice/slice_intern.cc +1 -1
  521. data/src/core/lib/slice/slice_refcount.h +5 -1
  522. data/src/core/lib/slice/slice_refcount_base.h +19 -11
  523. data/src/core/lib/slice/static_slice.cc +331 -483
  524. data/src/core/lib/slice/static_slice.h +101 -132
  525. data/src/core/lib/surface/builtins.cc +1 -1
  526. data/src/core/lib/surface/call.cc +85 -59
  527. data/src/core/lib/surface/channel.cc +4 -29
  528. data/src/core/lib/surface/channel.h +2 -12
  529. data/src/core/lib/surface/completion_queue.cc +2 -2
  530. data/src/core/lib/surface/init.cc +0 -1
  531. data/src/core/lib/surface/lame_client.cc +24 -17
  532. data/src/core/lib/surface/server.cc +22 -22
  533. data/src/core/lib/surface/server.h +8 -9
  534. data/src/core/lib/surface/validate_metadata.cc +2 -2
  535. data/src/core/lib/surface/version.cc +2 -2
  536. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  537. data/src/core/lib/transport/byte_stream.cc +4 -0
  538. data/src/core/lib/transport/metadata.h +4 -4
  539. data/src/core/lib/transport/metadata_batch.cc +5 -0
  540. data/src/core/lib/transport/metadata_batch.h +174 -99
  541. data/src/core/lib/transport/parsed_metadata.cc +35 -0
  542. data/src/core/lib/transport/parsed_metadata.h +180 -61
  543. data/src/core/lib/transport/pid_controller.cc +4 -4
  544. data/src/core/lib/transport/static_metadata.cc +529 -614
  545. data/src/core/lib/transport/static_metadata.h +0 -18
  546. data/src/core/lib/transport/transport.cc +4 -26
  547. data/src/core/lib/transport/transport.h +0 -1
  548. data/src/core/lib/transport/transport_op_string.cc +1 -1
  549. data/src/core/lib/uri/uri_parser.cc +19 -19
  550. data/src/core/lib/uri/uri_parser.h +2 -0
  551. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -2
  552. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  553. data/src/core/tsi/local_transport_security.cc +15 -15
  554. data/src/core/tsi/ssl_transport_security.cc +30 -1
  555. data/src/core/tsi/ssl_transport_security.h +1 -0
  556. data/src/ruby/ext/grpc/extconf.rb +1 -1
  557. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
  558. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
  559. data/src/ruby/lib/grpc/version.rb +1 -1
  560. data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
  561. data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
  562. data/third_party/abseil-cpp/absl/base/config.h +67 -37
  563. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
  564. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
  565. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
  566. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
  567. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
  568. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
  569. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  570. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  571. data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
  572. data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
  573. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  574. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
  575. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
  576. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
  577. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  578. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
  579. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
  580. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
  581. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  582. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  583. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
  584. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  585. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  586. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  587. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
  588. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  589. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  590. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  591. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
  592. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  593. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  594. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  595. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
  596. data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
  597. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
  598. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
  599. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  600. data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
  601. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
  602. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  603. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  604. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  605. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
  606. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
  607. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  608. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
  609. data/third_party/abseil-cpp/absl/status/status.cc +9 -17
  610. data/third_party/abseil-cpp/absl/status/status.h +19 -15
  611. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  612. data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
  613. data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
  614. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  615. data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
  616. data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
  617. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
  618. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
  619. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
  620. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  621. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  622. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  623. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  624. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  625. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  626. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  627. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  628. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
  629. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
  630. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
  631. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
  632. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  633. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  634. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  635. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  636. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  637. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  638. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  639. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  640. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  641. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  642. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
  643. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
  644. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
  645. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  646. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  647. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
  648. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
  649. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
  650. data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
  651. data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
  652. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  653. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  654. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  655. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  656. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  657. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  658. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  659. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  660. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
  661. data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
  662. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  663. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  664. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  665. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  666. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  667. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  668. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
  669. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  670. data/third_party/abseil-cpp/absl/time/time.h +67 -36
  671. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  672. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  673. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  674. data/third_party/boringssl-with-bazel/err_data.c +681 -677
  675. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
  676. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
  677. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
  678. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
  679. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  680. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  681. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
  682. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
  683. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
  684. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
  685. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  686. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
  687. data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
  688. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  689. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
  690. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  691. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
  692. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
  693. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
  694. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  695. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  696. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
  697. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  698. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
  699. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
  700. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
  701. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
  702. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
  703. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
  704. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
  705. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
  706. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -41
  707. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  708. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
  709. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
  710. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +3 -9
  711. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  712. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
  713. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +6 -9
  714. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
  715. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
  716. data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
  717. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
  718. data/third_party/upb/upb/decode.c +309 -178
  719. data/third_party/upb/upb/decode_fast.c +1 -1
  720. data/third_party/upb/upb/decode_internal.h +1 -0
  721. data/third_party/upb/upb/def.c +330 -85
  722. data/third_party/upb/upb/def.h +45 -14
  723. data/third_party/upb/upb/def.hpp +17 -4
  724. data/third_party/upb/upb/encode.c +100 -40
  725. data/third_party/upb/upb/msg.c +22 -9
  726. data/third_party/upb/upb/msg_internal.h +90 -8
  727. data/third_party/upb/upb/reflection.c +98 -58
  728. data/third_party/upb/upb/reflection.h +6 -2
  729. data/third_party/upb/upb/text_encode.c +3 -3
  730. data/third_party/upb/upb/upb.c +8 -0
  731. metadata +116 -56
  732. data/src/core/lib/avl/avl.cc +0 -306
  733. data/src/core/lib/gprpp/match.h +0 -73
  734. data/src/core/lib/gprpp/overload.h +0 -59
  735. data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
  736. data/src/core/lib/iomgr/resource_quota.cc +0 -1106
  737. data/src/core/lib/iomgr/resource_quota.h +0 -226
  738. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  739. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
@@ -32,7 +32,6 @@
32
32
  #include "src/core/lib/iomgr/error.h"
33
33
  #include "src/core/lib/iomgr/iomgr_custom.h"
34
34
  #include "src/core/lib/iomgr/port.h"
35
- #include "src/core/lib/iomgr/resource_quota.h"
36
35
  #include "src/core/lib/iomgr/tcp_client.h"
37
36
  #include "src/core/lib/iomgr/tcp_server.h"
38
37
  #include "src/core/lib/slice/slice_internal.h"
@@ -63,8 +62,6 @@ struct custom_tcp_endpoint {
63
62
  grpc_slice_buffer* read_slices = nullptr;
64
63
  grpc_slice_buffer* write_slices = nullptr;
65
64
 
66
- grpc_slice_allocator* slice_allocator;
67
-
68
65
  bool shutting_down;
69
66
 
70
67
  std::string peer_string;
@@ -73,7 +70,6 @@ struct custom_tcp_endpoint {
73
70
  static void tcp_free(grpc_custom_socket* s) {
74
71
  custom_tcp_endpoint* tcp =
75
72
  reinterpret_cast<custom_tcp_endpoint*>(s->endpoint);
76
- grpc_slice_allocator_destroy(tcp->slice_allocator);
77
73
  delete tcp;
78
74
  s->refs--;
79
75
  if (s->refs == 0) {
@@ -167,31 +163,6 @@ static void custom_read_callback(grpc_custom_socket* socket, size_t nread,
167
163
  call_read_cb(tcp, error);
168
164
  }
169
165
 
170
- static void tcp_read_allocation_done(void* tcpp, grpc_error_handle error) {
171
- custom_tcp_endpoint* tcp = static_cast<custom_tcp_endpoint*>(tcpp);
172
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
173
- gpr_log(GPR_INFO, "TCP:%p read_allocation_done: %s", tcp->socket,
174
- grpc_error_std_string(error).c_str());
175
- }
176
- if (error == GRPC_ERROR_NONE) {
177
- /* Before calling read, we allocate a buffer with exactly one slice
178
- * to tcp->read_slices and wait for the callback indicating that the
179
- * allocation was successful. So slices[0] should always exist here */
180
- char* buffer = reinterpret_cast<char*>(
181
- GRPC_SLICE_START_PTR(tcp->read_slices->slices[0]));
182
- size_t len = GRPC_SLICE_LENGTH(tcp->read_slices->slices[0]);
183
- grpc_custom_socket_vtable->read(tcp->socket, buffer, len,
184
- custom_read_callback);
185
- } else {
186
- grpc_slice_buffer_reset_and_unref_internal(tcp->read_slices);
187
- call_read_cb(tcp, GRPC_ERROR_REF(error));
188
- }
189
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
190
- gpr_log(GPR_INFO, "Initiating read on %p: error=%s", tcp->socket,
191
- grpc_error_std_string(error).c_str());
192
- }
193
- }
194
-
195
166
  static void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
196
167
  grpc_closure* cb, bool /*urgent*/) {
197
168
  custom_tcp_endpoint* tcp = reinterpret_cast<custom_tcp_endpoint*>(ep);
@@ -201,12 +172,16 @@ static void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
201
172
  tcp->read_slices = read_slices;
202
173
  grpc_slice_buffer_reset_and_unref_internal(read_slices);
203
174
  TCP_REF(tcp, "read");
204
- if (grpc_slice_allocator_allocate(
205
- tcp->slice_allocator, GRPC_TCP_DEFAULT_READ_SLICE_SIZE, 1,
206
- grpc_slice_allocator_intent::kReadBuffer, tcp->read_slices,
207
- tcp_read_allocation_done, tcp)) {
208
- tcp_read_allocation_done(tcp, GRPC_ERROR_NONE);
175
+ if (tcp->read_slices->length < GRPC_TCP_DEFAULT_READ_SLICE_SIZE) {
176
+ grpc_slice_buffer_add_indexed(
177
+ tcp->read_slices, GRPC_SLICE_MALLOC(GRPC_TCP_DEFAULT_READ_SLICE_SIZE));
209
178
  }
179
+ /* slices[0] should always exist here since we just added it if it did not */
180
+ char* buffer = reinterpret_cast<char*>(
181
+ GRPC_SLICE_START_PTR(tcp->read_slices->slices[0]));
182
+ size_t len = GRPC_SLICE_LENGTH(tcp->read_slices->slices[0]);
183
+ grpc_custom_socket_vtable->read(tcp->socket, buffer, len,
184
+ custom_read_callback);
210
185
  }
211
186
 
212
187
  static void custom_write_callback(grpc_custom_socket* socket,
@@ -346,7 +321,6 @@ static grpc_endpoint_vtable vtable = {endpoint_read,
346
321
  endpoint_can_track_err};
347
322
 
348
323
  grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
349
- grpc_slice_allocator* slice_allocator,
350
324
  const char* peer_string) {
351
325
  custom_tcp_endpoint* tcp = new custom_tcp_endpoint;
352
326
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -372,6 +346,5 @@ grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
372
346
  tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
373
347
  }
374
348
  tcp->shutting_down = false;
375
- tcp->slice_allocator = slice_allocator;
376
349
  return &tcp->base;
377
350
  }
@@ -80,7 +80,6 @@ void grpc_custom_close_server_callback(grpc_tcp_listener* listener);
80
80
 
81
81
  /// Takes ownership of \a slice_allocator.
82
82
  grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
83
- grpc_slice_allocator* slice_allocator,
84
83
  const char* peer_string);
85
84
 
86
85
  #endif /* GRPC_CORE_LIB_IOMGR_TCP_CUSTOM_H */
@@ -18,6 +18,8 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
+ #include <grpc/impl/codegen/grpc_types.h>
22
+
21
23
  #include "src/core/lib/iomgr/port.h"
22
24
 
23
25
  #ifdef GRPC_POSIX_SOCKET_TCP
@@ -54,10 +56,11 @@
54
56
  #include "src/core/lib/iomgr/buffer_list.h"
55
57
  #include "src/core/lib/iomgr/ev_posix.h"
56
58
  #include "src/core/lib/iomgr/executor.h"
57
- #include "src/core/lib/iomgr/resource_quota.h"
58
59
  #include "src/core/lib/iomgr/socket_utils_posix.h"
59
60
  #include "src/core/lib/iomgr/tcp_posix.h"
60
61
  #include "src/core/lib/profiling/timers.h"
62
+ #include "src/core/lib/resource_quota/api.h"
63
+ #include "src/core/lib/resource_quota/memory_quota.h"
61
64
  #include "src/core/lib/slice/slice_internal.h"
62
65
  #include "src/core/lib/slice/slice_string_helpers.h"
63
66
 
@@ -393,7 +396,8 @@ struct grpc_tcp {
393
396
  std::string peer_string;
394
397
  std::string local_address;
395
398
 
396
- grpc_slice_allocator* slice_allocator;
399
+ grpc_core::MemoryOwner memory_owner;
400
+ grpc_core::MemoryAllocator::Reservation self_reservation;
397
401
 
398
402
  grpc_core::TracedBuffer* tb_head; /* List of traced buffers */
399
403
  gpr_mu tb_mu; /* Lock for access to list of traced buffers */
@@ -608,7 +612,6 @@ static void tcp_free(grpc_tcp* tcp) {
608
612
  grpc_fd_orphan(tcp->em_fd, tcp->release_fd_cb, tcp->release_fd,
609
613
  "tcp_unref_orphan");
610
614
  grpc_slice_buffer_destroy_internal(&tcp->last_read_buffer);
611
- grpc_slice_allocator_destroy(tcp->slice_allocator);
612
615
  /* The lock is not really necessary here, since all refs have been released */
613
616
  gpr_mu_lock(&tcp->tb_mu);
614
617
  grpc_core::TracedBuffer::Shutdown(
@@ -701,6 +704,8 @@ static void tcp_do_read(grpc_tcp* tcp) {
701
704
  iov[i].iov_len = GRPC_SLICE_LENGTH(tcp->incoming_buffer->slices[i]);
702
705
  }
703
706
 
707
+ GPR_ASSERT(tcp->incoming_buffer->length != 0);
708
+
704
709
  do {
705
710
  /* Assume there is something on the queue. If we receive TCP_INQ from
706
711
  * kernel, we will update this value, otherwise, we have to assume there is
@@ -787,7 +792,6 @@ static void tcp_do_read(grpc_tcp* tcp) {
787
792
 
788
793
  total_read_bytes += read_bytes;
789
794
  if (tcp->inq == 0 || total_read_bytes == tcp->incoming_buffer->length) {
790
- /* We have filled incoming_buffer, and we cannot read any more. */
791
795
  break;
792
796
  }
793
797
 
@@ -827,36 +831,25 @@ static void tcp_do_read(grpc_tcp* tcp) {
827
831
  TCP_UNREF(tcp, "read");
828
832
  }
829
833
 
830
- static void tcp_read_allocation_done(void* tcpp, grpc_error_handle error) {
831
- grpc_tcp* tcp = static_cast<grpc_tcp*>(tcpp);
832
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
833
- gpr_log(GPR_INFO, "TCP:%p read_allocation_done: %s", tcp,
834
- grpc_error_std_string(error).c_str());
835
- }
836
- if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
837
- grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
838
- grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
839
- call_read_cb(tcp, GRPC_ERROR_REF(error));
840
- TCP_UNREF(tcp, "read");
841
- } else {
842
- tcp_do_read(tcp);
843
- }
844
- }
845
-
846
834
  static void tcp_continue_read(grpc_tcp* tcp) {
847
- /* Wait for allocation only when there is no buffer left. */
848
835
  if (tcp->incoming_buffer->length == 0 &&
849
836
  tcp->incoming_buffer->count < MAX_READ_IOVEC) {
850
837
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
851
- gpr_log(GPR_INFO, "TCP:%p alloc_slices", tcp);
852
- }
853
- if (GPR_UNLIKELY(!grpc_slice_allocator_allocate(
854
- tcp->slice_allocator, tcp->target_length, 1,
855
- grpc_slice_allocator_intent::kReadBuffer, tcp->incoming_buffer,
856
- tcp_read_allocation_done, tcp))) {
857
- // Wait for allocation.
858
- return;
838
+ gpr_log(GPR_INFO,
839
+ "TCP:%p alloc_slices; min_chunk=%d max_chunk=%d target=%lf "
840
+ "buf_len=%" PRIdPTR,
841
+ tcp, tcp->min_read_chunk_size, tcp->max_read_chunk_size,
842
+ tcp->target_length, tcp->incoming_buffer->length);
859
843
  }
844
+ int target_length = static_cast<int>(tcp->target_length);
845
+ int extra_wanted =
846
+ target_length - static_cast<int>(tcp->incoming_buffer->length);
847
+ grpc_slice_buffer_add_indexed(
848
+ tcp->incoming_buffer,
849
+ tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
850
+ tcp->min_read_chunk_size,
851
+ grpc_core::Clamp(extra_wanted, tcp->min_read_chunk_size,
852
+ tcp->max_read_chunk_size))));
860
853
  }
861
854
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
862
855
  gpr_log(GPR_INFO, "TCP:%p do_read", tcp);
@@ -1669,8 +1662,7 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
1669
1662
 
1670
1663
  grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1671
1664
  const grpc_channel_args* channel_args,
1672
- const char* peer_string,
1673
- grpc_slice_allocator* slice_allocator) {
1665
+ absl::string_view peer_string) {
1674
1666
  static constexpr bool kZerocpTxEnabledDefault = false;
1675
1667
  int tcp_read_chunk_size = GRPC_TCP_DEFAULT_READ_SLICE_SIZE;
1676
1668
  int tcp_max_read_chunk_size = 4 * 1024 * 1024;
@@ -1727,9 +1719,12 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1727
1719
  grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
1728
1720
  tcp_tx_zerocopy_send_bytes_thresh);
1729
1721
  tcp->base.vtable = &vtable;
1730
- tcp->peer_string = peer_string;
1722
+ tcp->peer_string = std::string(peer_string);
1731
1723
  tcp->fd = grpc_fd_wrapped_fd(em_fd);
1732
- tcp->slice_allocator = slice_allocator;
1724
+ tcp->memory_owner = grpc_core::ResourceQuotaFromChannelArgs(channel_args)
1725
+ ->memory_quota()
1726
+ ->CreateMemoryOwner(peer_string);
1727
+ tcp->self_reservation = tcp->memory_owner.MakeReservation(sizeof(grpc_tcp));
1733
1728
  grpc_resolved_address resolved_local_addr;
1734
1729
  memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
1735
1730
  resolved_local_addr.len = sizeof(resolved_local_addr.addr);
@@ -36,15 +36,13 @@
36
36
  #include "src/core/lib/iomgr/endpoint.h"
37
37
  #include "src/core/lib/iomgr/ev_posix.h"
38
38
  #include "src/core/lib/iomgr/port.h"
39
- #include "src/core/lib/iomgr/resource_quota.h"
40
39
 
41
40
  extern grpc_core::TraceFlag grpc_tcp_trace;
42
41
 
43
42
  /// Create a tcp endpoint given a file desciptor and a read slice size.
44
43
  /// Takes ownership of \a fd. Takes ownership of the \a slice_allocator.
45
44
  grpc_endpoint* grpc_tcp_create(grpc_fd* fd, const grpc_channel_args* args,
46
- const char* peer_string,
47
- grpc_slice_allocator* slice_allocator);
45
+ absl::string_view peer_string);
48
46
 
49
47
  /// Return the tcp endpoint's fd, or -1 if this is not available. Does not
50
48
  /// release the fd. Requires: \a ep must be a tcp endpoint.
@@ -22,12 +22,10 @@
22
22
 
23
23
  grpc_tcp_server_vtable* grpc_tcp_server_impl;
24
24
 
25
- grpc_error_handle grpc_tcp_server_create(
26
- grpc_closure* shutdown_complete, const grpc_channel_args* args,
27
- grpc_slice_allocator_factory* slice_allocator_factory,
28
- grpc_tcp_server** server) {
29
- return grpc_tcp_server_impl->create(shutdown_complete, args,
30
- slice_allocator_factory, server);
25
+ grpc_error_handle grpc_tcp_server_create(grpc_closure* shutdown_complete,
26
+ const grpc_channel_args* args,
27
+ grpc_tcp_server** server) {
28
+ return grpc_tcp_server_impl->create(shutdown_complete, args, server);
31
29
  }
32
30
 
33
31
  void grpc_tcp_server_start(grpc_tcp_server* server,
@@ -63,10 +63,9 @@ class TcpServerFdHandler {
63
63
  } // namespace grpc_core
64
64
 
65
65
  typedef struct grpc_tcp_server_vtable {
66
- grpc_error_handle (*create)(
67
- grpc_closure* shutdown_complete, const grpc_channel_args* args,
68
- grpc_slice_allocator_factory* slice_allocator_factory,
69
- grpc_tcp_server** server);
66
+ grpc_error_handle (*create)(grpc_closure* shutdown_complete,
67
+ const grpc_channel_args* args,
68
+ grpc_tcp_server** server);
70
69
  void (*start)(grpc_tcp_server* server,
71
70
  const std::vector<grpc_pollset*>* pollsets,
72
71
  grpc_tcp_server_cb on_accept_cb, void* cb_arg);
@@ -87,10 +86,9 @@ typedef struct grpc_tcp_server_vtable {
87
86
  If shutdown_complete is not NULL, it will be used by
88
87
  grpc_tcp_server_unref() when the ref count reaches zero.
89
88
  Takes ownership of the slice_allocator_factory. */
90
- grpc_error_handle grpc_tcp_server_create(
91
- grpc_closure* shutdown_complete, const grpc_channel_args* args,
92
- grpc_slice_allocator_factory* slice_allocator_factory,
93
- grpc_tcp_server** server);
89
+ grpc_error_handle grpc_tcp_server_create(grpc_closure* shutdown_complete,
90
+ const grpc_channel_args* args,
91
+ grpc_tcp_server** server);
94
92
 
95
93
  /* Start listening to bound ports */
96
94
  void grpc_tcp_server_start(grpc_tcp_server* server,
@@ -76,16 +76,12 @@ struct grpc_tcp_server {
76
76
 
77
77
  bool shutdown;
78
78
  bool so_reuseport;
79
-
80
- grpc_slice_allocator_factory* slice_allocator_factory;
81
79
  };
82
80
 
83
- static grpc_error_handle tcp_server_create(
84
- grpc_closure* shutdown_complete, const grpc_channel_args* args,
85
- grpc_slice_allocator_factory* slice_allocator_factory,
86
- grpc_tcp_server** server) {
87
- grpc_tcp_server* s =
88
- static_cast<grpc_tcp_server*>(gpr_malloc(sizeof(grpc_tcp_server)));
81
+ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
82
+ const grpc_channel_args* args,
83
+ grpc_tcp_server** server) {
84
+ grpc_tcp_server* s = new grpc_tcp_server();
89
85
  s->so_reuseport =
90
86
  grpc_channel_args_find_bool(args, GRPC_ARG_ALLOW_REUSEPORT, true);
91
87
  gpr_ref_init(&s->refs, 1);
@@ -98,7 +94,6 @@ static grpc_error_handle tcp_server_create(
98
94
  s->shutdown_starting.tail = nullptr;
99
95
  s->shutdown_complete = shutdown_complete;
100
96
  s->shutdown = false;
101
- s->slice_allocator_factory = slice_allocator_factory;
102
97
  *server = s;
103
98
  return GRPC_ERROR_NONE;
104
99
  }
@@ -128,7 +123,6 @@ static void finish_shutdown(grpc_tcp_server* s) {
128
123
  sp->next = nullptr;
129
124
  gpr_free(sp);
130
125
  }
131
- grpc_slice_allocator_factory_destroy(s->slice_allocator_factory);
132
126
  gpr_free(s);
133
127
  }
134
128
 
@@ -219,11 +213,7 @@ static void finish_accept(grpc_tcp_listener* sp, grpc_custom_socket* socket) {
219
213
  gpr_log(GPR_INFO, "SERVER_CONNECT: %p accepted connection: %s", sp->server,
220
214
  peer_name_string.c_str());
221
215
  }
222
- ep = custom_tcp_endpoint_create(
223
- socket,
224
- grpc_slice_allocator_factory_create_slice_allocator(
225
- sp->server->slice_allocator_factory, peer_name_string),
226
- peer_name_string.c_str());
216
+ ep = custom_tcp_endpoint_create(socket, peer_name_string.c_str());
227
217
  acceptor->from_server = sp->server;
228
218
  acceptor->port_index = sp->port_index;
229
219
  acceptor->fd_index = 0;
@@ -59,12 +59,12 @@
59
59
  #include "src/core/lib/iomgr/tcp_server.h"
60
60
  #include "src/core/lib/iomgr/tcp_server_utils_posix.h"
61
61
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
62
+ #include "src/core/lib/resource_quota/api.h"
62
63
 
63
- static grpc_error_handle tcp_server_create(
64
- grpc_closure* shutdown_complete, const grpc_channel_args* args,
65
- grpc_slice_allocator_factory* slice_allocator_factory,
66
- grpc_tcp_server** server) {
67
- grpc_tcp_server* s = grpc_core::Zalloc<grpc_tcp_server>();
64
+ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
65
+ const grpc_channel_args* args,
66
+ grpc_tcp_server** server) {
67
+ grpc_tcp_server* s = new grpc_tcp_server;
68
68
  s->so_reuseport = grpc_is_socket_reuse_port_supported();
69
69
  s->expand_wildcard_addrs = false;
70
70
  for (size_t i = 0; i < (args == nullptr ? 0 : args->num_args); i++) {
@@ -74,7 +74,6 @@ static grpc_error_handle tcp_server_create(
74
74
  (args->args[i].value.integer != 0);
75
75
  } else {
76
76
  gpr_free(s);
77
- grpc_slice_allocator_factory_destroy(slice_allocator_factory);
78
77
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(GRPC_ARG_ALLOW_REUSEPORT
79
78
  " must be an integer");
80
79
  }
@@ -83,7 +82,6 @@ static grpc_error_handle tcp_server_create(
83
82
  s->expand_wildcard_addrs = (args->args[i].value.integer != 0);
84
83
  } else {
85
84
  gpr_free(s);
86
- grpc_slice_allocator_factory_destroy(slice_allocator_factory);
87
85
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
88
86
  GRPC_ARG_EXPAND_WILDCARD_ADDRS " must be an integer");
89
87
  }
@@ -104,7 +102,8 @@ static grpc_error_handle tcp_server_create(
104
102
  s->nports = 0;
105
103
  s->channel_args = grpc_channel_args_copy(args);
106
104
  s->fd_handler = nullptr;
107
- s->slice_allocator_factory = slice_allocator_factory;
105
+ s->memory_quota =
106
+ grpc_core::ResourceQuotaFromChannelArgs(args)->memory_quota();
108
107
  gpr_atm_no_barrier_store(&s->next_pollset_to_assign, 0);
109
108
  *server = s;
110
109
  return GRPC_ERROR_NONE;
@@ -124,10 +123,9 @@ static void finish_shutdown(grpc_tcp_server* s) {
124
123
  s->head = sp->next;
125
124
  gpr_free(sp);
126
125
  }
127
- grpc_slice_allocator_factory_destroy(s->slice_allocator_factory);
128
126
  grpc_channel_args_destroy(s->channel_args);
129
127
  delete s->fd_handler;
130
- gpr_free(s);
128
+ delete s;
131
129
  }
132
130
 
133
131
  static void destroyed_port(void* server, grpc_error_handle /*error*/) {
@@ -222,6 +220,12 @@ static void on_read(void* arg, grpc_error_handle err) {
222
220
  }
223
221
  }
224
222
 
223
+ if (sp->server->memory_quota->IsMemoryPressureHigh()) {
224
+ gpr_log(GPR_INFO, "Drop incoming connection: high memory pressure");
225
+ close(fd);
226
+ continue;
227
+ }
228
+
225
229
  /* For UNIX sockets, the accept call might not fill up the member sun_path
226
230
  * of sockaddr_un, so explicitly call getsockname to get it. */
227
231
  if (grpc_is_unix_socket(&addr)) {
@@ -268,11 +272,7 @@ static void on_read(void* arg, grpc_error_handle err) {
268
272
  acceptor->external_connection = false;
269
273
  sp->server->on_accept_cb(
270
274
  sp->server->on_accept_cb_arg,
271
- grpc_tcp_create(fdobj, sp->server->channel_args, addr_str.c_str(),
272
- grpc_slice_allocator_factory_create_slice_allocator(
273
- sp->server->slice_allocator_factory,
274
- absl::StrCat("tcp_server_posix:", addr_str),
275
- sp->server->channel_args)),
275
+ grpc_tcp_create(fdobj, sp->server->channel_args, addr_str),
276
276
  read_notifier_pollset, acceptor);
277
277
  }
278
278
 
@@ -615,13 +615,9 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
615
615
  acceptor->external_connection = true;
616
616
  acceptor->listener_fd = listener_fd;
617
617
  acceptor->pending_data = buf;
618
- s_->on_accept_cb(
619
- s_->on_accept_cb_arg,
620
- grpc_tcp_create(
621
- fdobj, s_->channel_args, addr_str.c_str(),
622
- grpc_slice_allocator_factory_create_slice_allocator(
623
- s_->slice_allocator_factory, addr_str, s_->channel_args)),
624
- read_notifier_pollset, acceptor);
618
+ s_->on_accept_cb(s_->on_accept_cb_arg,
619
+ grpc_tcp_create(fdobj, s_->channel_args, addr_str),
620
+ read_notifier_pollset, acceptor);
625
621
  }
626
622
 
627
623
  private:
@@ -25,6 +25,7 @@
25
25
  #include "src/core/lib/iomgr/resolve_address.h"
26
26
  #include "src/core/lib/iomgr/socket_utils_posix.h"
27
27
  #include "src/core/lib/iomgr/tcp_server.h"
28
+ #include "src/core/lib/resource_quota/memory_quota.h"
28
29
 
29
30
  /* one listening port */
30
31
  typedef struct grpc_tcp_listener {
@@ -52,51 +53,51 @@ typedef struct grpc_tcp_listener {
52
53
  struct grpc_tcp_server {
53
54
  gpr_refcount refs;
54
55
  /* Called whenever accept() succeeds on a server port. */
55
- grpc_tcp_server_cb on_accept_cb;
56
- void* on_accept_cb_arg;
56
+ grpc_tcp_server_cb on_accept_cb = nullptr;
57
+ void* on_accept_cb_arg = nullptr;
57
58
 
58
59
  gpr_mu mu;
59
60
 
60
61
  /* active port count: how many ports are actually still listening */
61
- size_t active_ports;
62
+ size_t active_ports = 0;
62
63
  /* destroyed port count: how many ports are completely destroyed */
63
- size_t destroyed_ports;
64
+ size_t destroyed_ports = 0;
64
65
 
65
66
  /* is this server shutting down? */
66
- bool shutdown;
67
+ bool shutdown = false;
67
68
  /* have listeners been shutdown? */
68
- bool shutdown_listeners;
69
+ bool shutdown_listeners = false;
69
70
  /* use SO_REUSEPORT */
70
- bool so_reuseport;
71
+ bool so_reuseport = false;
71
72
  /* expand wildcard addresses to a list of all local addresses */
72
- bool expand_wildcard_addrs;
73
+ bool expand_wildcard_addrs = false;
73
74
 
74
75
  /* linked list of server ports */
75
- grpc_tcp_listener* head;
76
- grpc_tcp_listener* tail;
77
- unsigned nports;
76
+ grpc_tcp_listener* head = nullptr;
77
+ grpc_tcp_listener* tail = nullptr;
78
+ unsigned nports = 0;
78
79
 
79
80
  /* List of closures passed to shutdown_starting_add(). */
80
- grpc_closure_list shutdown_starting;
81
+ grpc_closure_list shutdown_starting{nullptr, nullptr};
81
82
 
82
83
  /* shutdown callback */
83
- grpc_closure* shutdown_complete;
84
+ grpc_closure* shutdown_complete = nullptr;
84
85
 
85
86
  /* all pollsets interested in new connections. The object pointed at is not
86
87
  * owned by this struct */
87
- const std::vector<grpc_pollset*>* pollsets;
88
+ const std::vector<grpc_pollset*>* pollsets = nullptr;
88
89
 
89
90
  /* next pollset to assign a channel to */
90
- gpr_atm next_pollset_to_assign;
91
+ gpr_atm next_pollset_to_assign = 0;
91
92
 
92
93
  /* channel args for this server */
93
- grpc_channel_args* channel_args;
94
+ grpc_channel_args* channel_args = nullptr;
94
95
 
95
96
  /* a handler for external connections, owned */
96
- grpc_core::TcpServerFdHandler* fd_handler;
97
+ grpc_core::TcpServerFdHandler* fd_handler = nullptr;
97
98
 
98
99
  /* used to create slice allocators for endpoints, owned */
99
- grpc_slice_allocator_factory* slice_allocator_factory;
100
+ grpc_core::MemoryQuotaRefPtr memory_quota;
100
101
  };
101
102
 
102
103
  /* If successful, add a listener to \a s for \a addr, set \a dsmode for the
@@ -96,15 +96,13 @@ struct grpc_tcp_server {
96
96
  grpc_closure* shutdown_complete;
97
97
 
98
98
  grpc_channel_args* channel_args;
99
- grpc_slice_allocator_factory* slice_allocator_factory;
100
99
  };
101
100
 
102
101
  /* Public function. Allocates the proper data structures to hold a
103
102
  grpc_tcp_server. */
104
- static grpc_error_handle tcp_server_create(
105
- grpc_closure* shutdown_complete, const grpc_channel_args* args,
106
- grpc_slice_allocator_factory* slice_allocator_factory,
107
- grpc_tcp_server** server) {
103
+ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
104
+ const grpc_channel_args* args,
105
+ grpc_tcp_server** server) {
108
106
  grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server));
109
107
  s->channel_args = grpc_channel_args_copy(args);
110
108
  gpr_ref_init(&s->refs, 1);
@@ -117,7 +115,6 @@ static grpc_error_handle tcp_server_create(
117
115
  s->shutdown_starting.head = NULL;
118
116
  s->shutdown_starting.tail = NULL;
119
117
  s->shutdown_complete = shutdown_complete;
120
- s->slice_allocator_factory = slice_allocator_factory;
121
118
  *server = s;
122
119
  return GRPC_ERROR_NONE;
123
120
  }
@@ -168,7 +165,6 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
168
165
  static void tcp_server_destroy(grpc_tcp_server* s) {
169
166
  grpc_tcp_listener* sp;
170
167
  gpr_mu_lock(&s->mu);
171
- grpc_slice_allocator_factory_destroy(s->slice_allocator_factory);
172
168
  /* First, shutdown all fd's. This will queue abortion calls for all
173
169
  of the pending accepts due to the normal operation mechanism. */
174
170
  if (s->active_ports == 0) {
@@ -358,11 +354,8 @@ static void on_accept(void* arg, grpc_error_handle error) {
358
354
  gpr_free(utf8_message);
359
355
  }
360
356
  std::string fd_name = absl::StrCat("tcp_server:", peer_name_string);
361
- ep = grpc_tcp_create(
362
- grpc_winsocket_create(sock, fd_name.c_str()),
363
- sp->server->channel_args, peer_name_string.c_str(),
364
- grpc_slice_allocator_factory_create_slice_allocator(
365
- sp->server->slice_allocator_factory, peer_name_string));
357
+ ep = grpc_tcp_create(grpc_winsocket_create(sock, fd_name.c_str()),
358
+ sp->server->channel_args, peer_name_string);
366
359
  } else {
367
360
  closesocket(sock);
368
361
  }
@@ -116,8 +116,6 @@ typedef struct grpc_tcp {
116
116
  grpc_slice_buffer* write_slices;
117
117
  grpc_slice_buffer* read_slices;
118
118
 
119
- grpc_slice_allocator* slice_allocator;
120
-
121
119
  /* The IO Completion Port runs from another thread. We need some mechanism
122
120
  to protect ourselves when requesting a shutdown. */
123
121
  gpr_mu mu;
@@ -132,7 +130,6 @@ static void tcp_free(grpc_tcp* tcp) {
132
130
  grpc_winsocket_destroy(tcp->socket);
133
131
  gpr_mu_destroy(&tcp->mu);
134
132
  grpc_slice_buffer_destroy_internal(&tcp->last_read_buffer);
135
- grpc_slice_allocator_destroy(tcp->slice_allocator);
136
133
  if (tcp->shutting_down) GRPC_ERROR_UNREF(tcp->shutdown_error);
137
134
  delete tcp;
138
135
  }
@@ -502,8 +499,7 @@ static grpc_endpoint_vtable vtable = {win_read,
502
499
 
503
500
  grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
504
501
  grpc_channel_args* channel_args,
505
- const char* peer_string,
506
- grpc_slice_allocator* slice_allocator) {
502
+ absl::string_view peer_string) {
507
503
  grpc_tcp* tcp = new grpc_tcp;
508
504
  memset(tcp, 0, sizeof(grpc_tcp));
509
505
  tcp->base.vtable = &vtable;
@@ -521,9 +517,8 @@ grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
521
517
  } else {
522
518
  tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
523
519
  }
524
- tcp->peer_string = peer_string;
520
+ tcp->peer_string = std::string(peer_string);
525
521
  grpc_slice_buffer_init(&tcp->last_read_buffer);
526
- tcp->slice_allocator = slice_allocator;
527
522
  return &tcp->base;
528
523
  }
529
524
 
@@ -42,8 +42,7 @@
42
42
  */
43
43
  grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
44
44
  grpc_channel_args* channel_args,
45
- const char* peer_string,
46
- grpc_slice_allocator* slice_allocator);
45
+ absl::string_view peer_string);
47
46
 
48
47
  grpc_error_handle grpc_tcp_prepare_socket(SOCKET sock);
49
48
 
@@ -41,7 +41,7 @@ void grpc_create_socketpair_if_unix(int sv[2]) {
41
41
  }
42
42
 
43
43
  grpc_error_handle grpc_resolve_unix_domain_address(
44
- const char* name, grpc_resolved_addresses** addresses) {
44
+ absl::string_view name, grpc_resolved_addresses** addresses) {
45
45
  *addresses = static_cast<grpc_resolved_addresses*>(
46
46
  gpr_malloc(sizeof(grpc_resolved_addresses)));
47
47
  (*addresses)->naddrs = 1;
@@ -33,7 +33,7 @@
33
33
  void grpc_create_socketpair_if_unix(int sv[2]);
34
34
 
35
35
  grpc_error_handle grpc_resolve_unix_domain_address(
36
- const char* name, grpc_resolved_addresses** addresses);
36
+ absl::string_view name, grpc_resolved_addresses** addresses);
37
37
 
38
38
  grpc_error_handle grpc_resolve_unix_abstract_domain_address(
39
39
  absl::string_view name, grpc_resolved_addresses** addresses);
@@ -34,7 +34,7 @@ void grpc_create_socketpair_if_unix(int /* sv */[2]) {
34
34
  }
35
35
 
36
36
  grpc_error_handle grpc_resolve_unix_domain_address(
37
- const char* /* name */, grpc_resolved_addresses** addresses) {
37
+ absl::string_view /* name */, grpc_resolved_addresses** addresses) {
38
38
  *addresses = NULL;
39
39
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
40
40
  "Unix domain sockets are not supported on Windows");