grpc 1.45.0 → 1.46.3

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 (515) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +36 -29
  3. data/include/grpc/impl/codegen/grpc_types.h +7 -13
  4. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  5. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  6. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
  7. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
  8. data/src/core/ext/filters/client_channel/client_channel.cc +163 -96
  9. data/src/core/ext/filters/client_channel/client_channel.h +2 -0
  10. data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -581
  11. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
  12. data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
  13. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  14. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +182 -142
  15. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
  16. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -10
  17. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -58
  18. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -48
  19. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -7
  20. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +229 -284
  21. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +92 -257
  22. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +51 -221
  23. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  24. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  25. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +102 -55
  26. data/src/core/ext/filters/client_channel/retry_filter.cc +18 -3
  27. data/src/core/ext/filters/client_channel/subchannel.cc +5 -5
  28. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  29. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  30. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +127 -367
  31. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
  32. data/src/core/ext/filters/http/client/http_client_filter.cc +78 -458
  33. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  34. data/src/core/ext/filters/http/client_authority_filter.cc +17 -22
  35. data/src/core/ext/filters/http/client_authority_filter.h +6 -5
  36. data/src/core/ext/filters/http/http_filters_plugin.cc +9 -6
  37. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -116
  38. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
  39. data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
  40. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
  41. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -1
  42. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -4
  43. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -28
  44. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
  45. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -6
  46. data/src/core/ext/transport/chttp2/transport/internal.h +4 -2
  47. data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -0
  48. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -13
  49. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
  50. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
  51. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
  52. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
  53. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
  54. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
  55. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
  56. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
  57. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
  58. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
  59. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
  60. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
  61. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
  62. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
  63. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
  64. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
  65. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
  66. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
  67. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
  68. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
  69. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
  70. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
  71. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
  72. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
  73. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
  74. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
  75. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
  76. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
  77. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
  78. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
  79. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
  80. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
  81. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
  82. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
  83. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
  85. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
  86. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
  87. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
  88. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
  89. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
  90. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
  91. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
  92. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
  93. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
  113. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
  119. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
  120. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
  121. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
  122. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
  123. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
  124. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
  125. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
  126. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
  127. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
  128. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
  129. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
  130. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
  131. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
  132. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
  133. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
  134. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
  135. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
  136. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
  137. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
  138. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
  139. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
  140. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
  141. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
  142. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
  143. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
  144. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
  145. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
  146. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
  147. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
  148. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
  149. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
  150. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
  151. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
  152. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
  153. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
  154. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
  155. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
  156. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
  157. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
  158. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
  159. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
  160. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
  161. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
  162. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
  163. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
  164. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
  165. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
  166. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
  167. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
  168. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
  169. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
  170. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
  171. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
  172. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
  173. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
  174. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
  175. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
  176. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
  177. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
  178. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
  179. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
  180. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
  181. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
  182. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
  183. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
  184. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
  185. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
  186. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
  187. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
  188. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
  189. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  190. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
  191. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
  192. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
  193. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
  194. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
  195. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
  196. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
  197. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
  198. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
  199. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
  200. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
  201. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
  202. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
  203. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
  204. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
  205. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
  206. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
  207. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
  208. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
  209. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
  210. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
  211. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
  212. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
  213. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
  214. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
  215. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
  216. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
  217. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
  218. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
  219. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
  220. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
  221. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
  222. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
  223. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
  224. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
  225. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
  226. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
  227. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
  228. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
  229. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
  230. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
  231. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
  232. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
  233. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
  234. data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
  235. data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
  236. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
  237. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
  238. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
  239. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
  240. data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
  241. data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
  242. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
  243. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
  244. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
  245. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
  246. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
  247. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
  248. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
  249. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
  250. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  251. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
  252. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
  253. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
  254. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
  255. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
  256. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
  257. data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
  258. data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
  259. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
  260. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
  261. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
  262. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
  263. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
  264. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
  265. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
  266. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
  267. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
  268. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
  269. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
  270. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
  271. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
  272. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
  273. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  274. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  275. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
  276. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
  277. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
  278. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
  279. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
  280. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
  281. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
  282. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
  283. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
  284. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
  285. data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
  286. data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
  287. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
  288. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
  289. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
  290. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
  291. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
  292. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
  293. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
  294. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
  295. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
  296. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
  297. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
  298. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
  299. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
  300. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
  301. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
  302. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
  303. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
  304. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
  305. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
  306. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
  307. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
  308. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
  309. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
  310. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
  311. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
  312. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
  313. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
  314. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
  315. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
  316. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
  317. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
  318. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
  319. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
  320. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
  321. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
  322. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
  323. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
  324. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
  325. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
  326. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
  327. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
  328. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
  329. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
  330. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
  331. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
  332. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
  333. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
  334. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
  335. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
  336. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
  337. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  338. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  339. data/src/core/ext/xds/certificate_provider_store.cc +8 -0
  340. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  341. data/src/core/ext/xds/xds_api.cc +20 -0
  342. data/src/core/ext/xds/xds_bootstrap.cc +2 -2
  343. data/src/core/ext/xds/xds_bootstrap.h +2 -0
  344. data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
  345. data/src/core/ext/xds/xds_certificate_provider.h +8 -0
  346. data/src/core/ext/xds/xds_client.cc +87 -95
  347. data/src/core/ext/xds/xds_client.h +13 -5
  348. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  349. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  350. data/src/core/ext/xds/xds_common_types.cc +9 -9
  351. data/src/core/ext/xds/xds_common_types.h +3 -3
  352. data/src/core/ext/xds/xds_endpoint.cc +12 -5
  353. data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
  354. data/src/core/ext/xds/xds_listener.cc +1 -1
  355. data/src/core/ext/xds/xds_route_config.cc +162 -25
  356. data/src/core/ext/xds/xds_route_config.h +13 -10
  357. data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
  358. data/src/core/lib/avl/avl.h +68 -5
  359. data/src/core/lib/channel/call_tracer.h +4 -1
  360. data/src/core/lib/channel/channel_args.cc +138 -59
  361. data/src/core/lib/channel/channel_args.h +210 -9
  362. data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
  363. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  364. data/src/core/lib/channel/channel_stack.h +2 -5
  365. data/src/core/lib/channel/channel_stack_builder.cc +0 -65
  366. data/src/core/lib/channel/channel_stack_builder.h +27 -6
  367. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  368. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  369. data/src/core/lib/channel/connected_channel.h +1 -0
  370. data/src/core/lib/channel/promise_based_filter.cc +495 -162
  371. data/src/core/lib/channel/promise_based_filter.h +55 -41
  372. data/src/core/lib/compression/compression_internal.cc +1 -7
  373. data/src/core/lib/debug/stats_data.cc +2 -6
  374. data/src/core/lib/debug/stats_data.h +18 -21
  375. data/src/core/lib/gpr/tls.h +1 -0
  376. data/src/core/lib/gprpp/bitset.h +12 -0
  377. data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
  378. data/src/core/lib/gprpp/match.h +73 -0
  379. data/src/core/lib/gprpp/overload.h +59 -0
  380. data/src/core/lib/gprpp/ref_counted.h +2 -0
  381. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  382. data/src/core/lib/gprpp/status_helper.cc +18 -2
  383. data/src/core/lib/gprpp/time.cc +12 -0
  384. data/src/core/lib/gprpp/time.h +1 -1
  385. data/src/core/lib/http/format_request.cc +1 -2
  386. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  387. data/src/core/lib/http/parser.cc +80 -9
  388. data/src/core/lib/http/parser.h +14 -1
  389. data/src/core/lib/iomgr/ev_posix.cc +6 -7
  390. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  391. data/src/core/lib/iomgr/port.h +0 -2
  392. data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
  393. data/src/core/lib/iomgr/tcp_posix.cc +93 -35
  394. data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
  395. data/src/core/lib/json/json_util.h +3 -3
  396. data/src/core/lib/promise/call_push_pull.h +144 -0
  397. data/src/core/lib/promise/detail/status.h +2 -1
  398. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  399. data/src/core/lib/promise/latch.h +104 -0
  400. data/src/core/lib/resource_quota/api.cc +5 -30
  401. data/src/core/lib/resource_quota/api.h +1 -1
  402. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  403. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  404. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
  405. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
  406. data/src/core/lib/security/context/security_context.h +8 -1
  407. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  408. data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
  409. data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
  410. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  411. data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
  412. data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
  413. data/src/core/lib/security/credentials/credentials.h +16 -33
  414. data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
  415. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
  416. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
  417. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
  418. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
  419. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
  420. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
  421. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  422. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
  423. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
  424. data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
  425. data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
  426. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
  427. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
  428. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
  429. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
  430. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
  431. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
  432. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
  433. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
  434. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
  435. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
  436. data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
  437. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
  438. data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
  439. data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
  440. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  441. data/src/core/lib/security/security_connector/security_connector.h +9 -0
  442. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
  443. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
  444. data/src/core/lib/security/transport/auth_filters.h +7 -7
  445. data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
  446. data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
  447. data/src/core/lib/security/transport/secure_endpoint.h +1 -1
  448. data/src/core/lib/security/transport/security_handshaker.cc +6 -4
  449. data/src/core/lib/surface/call.cc +1023 -903
  450. data/src/core/lib/surface/call.h +0 -14
  451. data/src/core/lib/surface/channel.cc +4 -3
  452. data/src/core/lib/surface/channel_init.cc +2 -3
  453. data/src/core/lib/surface/channel_init.h +2 -6
  454. data/src/core/lib/surface/init.cc +1 -1
  455. data/src/core/lib/surface/server.cc +3 -14
  456. data/src/core/lib/surface/server.h +1 -2
  457. data/src/core/lib/surface/version.cc +2 -2
  458. data/src/core/lib/transport/byte_stream.cc +2 -0
  459. data/src/core/lib/transport/metadata_batch.h +12 -8
  460. data/src/core/lib/transport/transport.h +20 -5
  461. data/src/core/lib/transport/transport_impl.h +4 -3
  462. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
  463. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
  464. data/src/core/tsi/ssl_transport_security.cc +75 -38
  465. data/src/core/tsi/ssl_transport_security.h +8 -2
  466. data/src/core/tsi/transport_security_interface.h +2 -0
  467. data/src/ruby/ext/grpc/extconf.rb +1 -1
  468. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  469. data/src/ruby/lib/grpc/grpc.rb +1 -1
  470. data/src/ruby/lib/grpc/version.rb +1 -1
  471. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  472. data/src/ruby/pb/test/client.rb +769 -0
  473. data/src/ruby/pb/test/server.rb +252 -0
  474. data/src/ruby/pb/test/xds_client.rb +415 -0
  475. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  476. data/third_party/upb/upb/decode.c +32 -16
  477. data/third_party/upb/upb/def.c +118 -55
  478. data/third_party/upb/upb/def.h +12 -3
  479. data/third_party/upb/upb/encode.c +14 -8
  480. data/third_party/upb/upb/json_encode.c +776 -0
  481. data/third_party/upb/upb/json_encode.h +62 -0
  482. data/third_party/upb/upb/msg.c +5 -7
  483. data/third_party/upb/upb/msg.h +1 -2
  484. data/third_party/upb/upb/msg_internal.h +49 -36
  485. data/third_party/upb/upb/port_def.inc +8 -0
  486. data/third_party/upb/upb/port_undef.inc +1 -0
  487. data/third_party/upb/upb/table.c +10 -6
  488. data/third_party/upb/upb/table_internal.h +2 -0
  489. data/third_party/upb/upb/upb.h +41 -11
  490. data/third_party/zlib/crc32.c +966 -292
  491. data/third_party/zlib/crc32.h +9441 -436
  492. data/third_party/zlib/deflate.c +78 -30
  493. data/third_party/zlib/deflate.h +12 -15
  494. data/third_party/zlib/gzguts.h +3 -2
  495. data/third_party/zlib/gzlib.c +5 -3
  496. data/third_party/zlib/gzread.c +5 -7
  497. data/third_party/zlib/gzwrite.c +25 -13
  498. data/third_party/zlib/infback.c +2 -1
  499. data/third_party/zlib/inffast.c +14 -14
  500. data/third_party/zlib/inflate.c +39 -8
  501. data/third_party/zlib/inflate.h +3 -2
  502. data/third_party/zlib/inftrees.c +3 -3
  503. data/third_party/zlib/trees.c +27 -48
  504. data/third_party/zlib/zlib.h +123 -100
  505. data/third_party/zlib/zutil.c +2 -2
  506. data/third_party/zlib/zutil.h +12 -9
  507. metadata +66 -45
  508. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
  509. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
  510. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  511. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
  512. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  513. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  514. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  515. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -0,0 +1,214 @@
1
+ //
2
+ // Copyright 2018 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_STREAM_CLIENT_H
18
+ #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_STREAM_CLIENT_H
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include <atomic>
23
+
24
+ #include "absl/status/status.h"
25
+ #include "absl/strings/string_view.h"
26
+
27
+ #include "src/core/ext/filters/client_channel/subchannel.h"
28
+ #include "src/core/lib/backoff/backoff.h"
29
+ #include "src/core/lib/gprpp/orphanable.h"
30
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
31
+ #include "src/core/lib/gprpp/sync.h"
32
+ #include "src/core/lib/iomgr/call_combiner.h"
33
+ #include "src/core/lib/iomgr/closure.h"
34
+ #include "src/core/lib/iomgr/polling_entity.h"
35
+ #include "src/core/lib/iomgr/timer.h"
36
+ #include "src/core/lib/resource_quota/arena.h"
37
+ #include "src/core/lib/transport/byte_stream.h"
38
+ #include "src/core/lib/transport/metadata_batch.h"
39
+ #include "src/core/lib/transport/transport.h"
40
+
41
+ namespace grpc_core {
42
+
43
+ // Represents a streaming call on a subchannel that should be maintained
44
+ // open at all times.
45
+ // If the call fails with UNIMPLEMENTED, no further attempts are made.
46
+ // If the call fails with any other status (including OK), we retry the
47
+ // call with appropriate backoff.
48
+ // The backoff state is reset when we receive a message on a stream.
49
+ //
50
+ // Currently, this assumes server-side streaming, but it could be extended
51
+ // to support full bidi streaming if there is a need in the future.
52
+ class SubchannelStreamClient
53
+ : public InternallyRefCounted<SubchannelStreamClient> {
54
+ public:
55
+ // Interface implemented by caller. Thread safety is provided for the
56
+ // implementation; only one method will be called by any thread at any
57
+ // one time (including destruction).
58
+ //
59
+ // The address of the SubchannelStreamClient object is passed to most
60
+ // methods for logging purposes.
61
+ class CallEventHandler {
62
+ public:
63
+ virtual ~CallEventHandler() = default;
64
+
65
+ // Returns the path for the streaming call.
66
+ virtual Slice GetPathLocked()
67
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
68
+ // Called when a new call attempt is being started.
69
+ virtual void OnCallStartLocked(SubchannelStreamClient* client)
70
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
71
+ // Called when a previous call attempt has failed and the retry
72
+ // timer is started before the next attempt.
73
+ virtual void OnRetryTimerStartLocked(SubchannelStreamClient* client)
74
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
75
+ // Returns the message payload to send from the client.
76
+ virtual grpc_slice EncodeSendMessageLocked()
77
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
78
+ // Called whenever a message is received from the server.
79
+ virtual absl::Status RecvMessageReadyLocked(
80
+ SubchannelStreamClient* client, absl::string_view serialized_message)
81
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
82
+ // Called when a stream fails.
83
+ virtual void RecvTrailingMetadataReadyLocked(SubchannelStreamClient* client,
84
+ grpc_status_code status)
85
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
86
+ };
87
+
88
+ // If tracer is non-null, it enables trace logging, with the specified
89
+ // string being the first part of the log message.
90
+ // Does not take ownership of interested_parties; the caller is responsible
91
+ // for ensuring that it will outlive the SubchannelStreamClient.
92
+ SubchannelStreamClient(
93
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel,
94
+ grpc_pollset_set* interested_parties,
95
+ std::unique_ptr<CallEventHandler> event_handler, const char* tracer);
96
+
97
+ ~SubchannelStreamClient() override;
98
+
99
+ void Orphan() override;
100
+
101
+ private:
102
+ // Contains a call to the backend and all the data related to the call.
103
+ class CallState : public Orphanable {
104
+ public:
105
+ CallState(RefCountedPtr<SubchannelStreamClient> client,
106
+ grpc_pollset_set* interested_parties);
107
+ ~CallState() override;
108
+
109
+ void Orphan() override;
110
+
111
+ void StartCallLocked()
112
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_);
113
+
114
+ private:
115
+ void Cancel();
116
+
117
+ void StartBatch(grpc_transport_stream_op_batch* batch);
118
+ static void StartBatchInCallCombiner(void* arg, grpc_error_handle error);
119
+
120
+ void CallEndedLocked(bool retry)
121
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&subchannel_stream_client_->mu_);
122
+
123
+ static void OnComplete(void* arg, grpc_error_handle error);
124
+ static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
125
+ static void RecvMessageReady(void* arg, grpc_error_handle error);
126
+ static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
127
+ static void StartCancel(void* arg, grpc_error_handle error);
128
+ static void OnCancelComplete(void* arg, grpc_error_handle error);
129
+
130
+ static void OnByteStreamNext(void* arg, grpc_error_handle error);
131
+ void ContinueReadingRecvMessage();
132
+ grpc_error_handle PullSliceFromRecvMessage();
133
+ void DoneReadingRecvMessage(grpc_error_handle error);
134
+
135
+ static void AfterCallStackDestruction(void* arg, grpc_error_handle error);
136
+
137
+ RefCountedPtr<SubchannelStreamClient> subchannel_stream_client_;
138
+ grpc_polling_entity pollent_;
139
+
140
+ ScopedArenaPtr arena_;
141
+ CallCombiner call_combiner_;
142
+ grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
143
+
144
+ // The streaming call to the backend. Always non-null.
145
+ // Refs are tracked manually; when the last ref is released, the
146
+ // CallState object will be automatically destroyed.
147
+ SubchannelCall* call_;
148
+
149
+ grpc_transport_stream_op_batch_payload payload_;
150
+ grpc_transport_stream_op_batch batch_;
151
+ grpc_transport_stream_op_batch recv_message_batch_;
152
+ grpc_transport_stream_op_batch recv_trailing_metadata_batch_;
153
+
154
+ grpc_closure on_complete_;
155
+
156
+ // send_initial_metadata
157
+ grpc_metadata_batch send_initial_metadata_;
158
+
159
+ // send_message
160
+ absl::optional<SliceBufferByteStream> send_message_;
161
+
162
+ // send_trailing_metadata
163
+ grpc_metadata_batch send_trailing_metadata_;
164
+
165
+ // recv_initial_metadata
166
+ grpc_metadata_batch recv_initial_metadata_;
167
+ grpc_closure recv_initial_metadata_ready_;
168
+
169
+ // recv_message
170
+ OrphanablePtr<ByteStream> recv_message_;
171
+ grpc_closure recv_message_ready_;
172
+ grpc_slice_buffer recv_message_buffer_;
173
+ std::atomic<bool> seen_response_{false};
174
+
175
+ // True if the cancel_stream batch has been started.
176
+ std::atomic<bool> cancelled_{false};
177
+
178
+ // recv_trailing_metadata
179
+ grpc_metadata_batch recv_trailing_metadata_;
180
+ grpc_transport_stream_stats collect_stats_;
181
+ grpc_closure recv_trailing_metadata_ready_;
182
+
183
+ // Closure for call stack destruction.
184
+ grpc_closure after_call_stack_destruction_;
185
+ };
186
+
187
+ void StartCall();
188
+ void StartCallLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
189
+
190
+ void StartRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
191
+ static void OnRetryTimer(void* arg, grpc_error_handle error);
192
+
193
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
194
+ grpc_pollset_set* interested_parties_; // Do not own.
195
+ const char* tracer_;
196
+ MemoryAllocator call_allocator_;
197
+
198
+ Mutex mu_;
199
+ std::unique_ptr<CallEventHandler> event_handler_ ABSL_GUARDED_BY(mu_);
200
+
201
+ // The data associated with the current health check call. It holds a ref
202
+ // to this SubchannelStreamClient object.
203
+ OrphanablePtr<CallState> call_state_ ABSL_GUARDED_BY(mu_);
204
+
205
+ // Call retry state.
206
+ BackOff retry_backoff_ ABSL_GUARDED_BY(mu_);
207
+ grpc_timer retry_timer_ ABSL_GUARDED_BY(mu_);
208
+ grpc_closure retry_timer_callback_ ABSL_GUARDED_BY(mu_);
209
+ bool retry_timer_callback_pending_ ABSL_GUARDED_BY(mu_) = false;
210
+ };
211
+
212
+ } // namespace grpc_core
213
+
214
+ #endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_STREAM_CLIENT_H