grpc 1.45.0 → 1.46.2

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 (513) 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_certificate_provider.cc +2 -0
  343. data/src/core/ext/xds/xds_certificate_provider.h +8 -0
  344. data/src/core/ext/xds/xds_client.cc +83 -93
  345. data/src/core/ext/xds/xds_client.h +11 -4
  346. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  347. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  348. data/src/core/ext/xds/xds_common_types.cc +9 -9
  349. data/src/core/ext/xds/xds_common_types.h +3 -3
  350. data/src/core/ext/xds/xds_endpoint.cc +12 -5
  351. data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
  352. data/src/core/ext/xds/xds_listener.cc +1 -1
  353. data/src/core/ext/xds/xds_route_config.cc +162 -25
  354. data/src/core/ext/xds/xds_route_config.h +13 -10
  355. data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
  356. data/src/core/lib/avl/avl.h +68 -5
  357. data/src/core/lib/channel/call_tracer.h +4 -1
  358. data/src/core/lib/channel/channel_args.cc +138 -59
  359. data/src/core/lib/channel/channel_args.h +210 -9
  360. data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
  361. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  362. data/src/core/lib/channel/channel_stack.h +2 -5
  363. data/src/core/lib/channel/channel_stack_builder.cc +0 -65
  364. data/src/core/lib/channel/channel_stack_builder.h +27 -6
  365. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  366. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  367. data/src/core/lib/channel/connected_channel.h +1 -0
  368. data/src/core/lib/channel/promise_based_filter.cc +495 -162
  369. data/src/core/lib/channel/promise_based_filter.h +55 -41
  370. data/src/core/lib/compression/compression_internal.cc +1 -7
  371. data/src/core/lib/debug/stats_data.cc +2 -6
  372. data/src/core/lib/debug/stats_data.h +18 -21
  373. data/src/core/lib/gpr/tls.h +1 -0
  374. data/src/core/lib/gprpp/bitset.h +12 -0
  375. data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
  376. data/src/core/lib/gprpp/match.h +73 -0
  377. data/src/core/lib/gprpp/overload.h +59 -0
  378. data/src/core/lib/gprpp/ref_counted.h +2 -0
  379. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  380. data/src/core/lib/gprpp/status_helper.cc +18 -2
  381. data/src/core/lib/gprpp/time.cc +12 -0
  382. data/src/core/lib/gprpp/time.h +1 -1
  383. data/src/core/lib/http/format_request.cc +1 -2
  384. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  385. data/src/core/lib/http/parser.cc +80 -9
  386. data/src/core/lib/http/parser.h +14 -1
  387. data/src/core/lib/iomgr/ev_posix.cc +6 -7
  388. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  389. data/src/core/lib/iomgr/port.h +0 -2
  390. data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
  391. data/src/core/lib/iomgr/tcp_posix.cc +93 -35
  392. data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
  393. data/src/core/lib/json/json_util.h +3 -3
  394. data/src/core/lib/promise/call_push_pull.h +144 -0
  395. data/src/core/lib/promise/detail/status.h +2 -1
  396. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  397. data/src/core/lib/promise/latch.h +104 -0
  398. data/src/core/lib/resource_quota/api.cc +5 -30
  399. data/src/core/lib/resource_quota/api.h +1 -1
  400. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  401. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  402. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
  403. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
  404. data/src/core/lib/security/context/security_context.h +8 -1
  405. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  406. data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
  407. data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
  408. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  409. data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
  410. data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
  411. data/src/core/lib/security/credentials/credentials.h +16 -33
  412. data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
  413. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
  414. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
  415. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
  416. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
  417. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
  418. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
  419. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  420. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
  421. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
  422. data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
  423. data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
  424. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
  425. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
  426. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
  427. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
  428. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
  429. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
  430. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
  431. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
  432. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
  433. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
  434. data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
  435. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
  436. data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
  437. data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
  438. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  439. data/src/core/lib/security/security_connector/security_connector.h +9 -0
  440. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
  441. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
  442. data/src/core/lib/security/transport/auth_filters.h +7 -7
  443. data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
  444. data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
  445. data/src/core/lib/security/transport/secure_endpoint.h +1 -1
  446. data/src/core/lib/security/transport/security_handshaker.cc +6 -4
  447. data/src/core/lib/surface/call.cc +1023 -903
  448. data/src/core/lib/surface/call.h +0 -14
  449. data/src/core/lib/surface/channel.cc +4 -3
  450. data/src/core/lib/surface/channel_init.cc +2 -3
  451. data/src/core/lib/surface/channel_init.h +2 -6
  452. data/src/core/lib/surface/init.cc +1 -1
  453. data/src/core/lib/surface/server.cc +3 -14
  454. data/src/core/lib/surface/server.h +1 -2
  455. data/src/core/lib/surface/version.cc +2 -2
  456. data/src/core/lib/transport/byte_stream.cc +2 -0
  457. data/src/core/lib/transport/metadata_batch.h +12 -8
  458. data/src/core/lib/transport/transport.h +20 -5
  459. data/src/core/lib/transport/transport_impl.h +4 -3
  460. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
  461. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
  462. data/src/core/tsi/ssl_transport_security.cc +75 -38
  463. data/src/core/tsi/ssl_transport_security.h +8 -2
  464. data/src/core/tsi/transport_security_interface.h +2 -0
  465. data/src/ruby/ext/grpc/extconf.rb +1 -1
  466. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  467. data/src/ruby/lib/grpc/grpc.rb +1 -1
  468. data/src/ruby/lib/grpc/version.rb +1 -1
  469. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  470. data/src/ruby/pb/test/client.rb +769 -0
  471. data/src/ruby/pb/test/server.rb +252 -0
  472. data/src/ruby/pb/test/xds_client.rb +415 -0
  473. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  474. data/third_party/upb/upb/decode.c +32 -16
  475. data/third_party/upb/upb/def.c +118 -55
  476. data/third_party/upb/upb/def.h +12 -3
  477. data/third_party/upb/upb/encode.c +14 -8
  478. data/third_party/upb/upb/json_encode.c +776 -0
  479. data/third_party/upb/upb/json_encode.h +62 -0
  480. data/third_party/upb/upb/msg.c +5 -7
  481. data/third_party/upb/upb/msg.h +1 -2
  482. data/third_party/upb/upb/msg_internal.h +49 -36
  483. data/third_party/upb/upb/port_def.inc +8 -0
  484. data/third_party/upb/upb/port_undef.inc +1 -0
  485. data/third_party/upb/upb/table.c +10 -6
  486. data/third_party/upb/upb/table_internal.h +2 -0
  487. data/third_party/upb/upb/upb.h +41 -11
  488. data/third_party/zlib/crc32.c +966 -292
  489. data/third_party/zlib/crc32.h +9441 -436
  490. data/third_party/zlib/deflate.c +78 -30
  491. data/third_party/zlib/deflate.h +12 -15
  492. data/third_party/zlib/gzguts.h +3 -2
  493. data/third_party/zlib/gzlib.c +5 -3
  494. data/third_party/zlib/gzread.c +5 -7
  495. data/third_party/zlib/gzwrite.c +25 -13
  496. data/third_party/zlib/infback.c +2 -1
  497. data/third_party/zlib/inffast.c +14 -14
  498. data/third_party/zlib/inflate.c +39 -8
  499. data/third_party/zlib/inflate.h +3 -2
  500. data/third_party/zlib/inftrees.c +3 -3
  501. data/third_party/zlib/trees.c +27 -48
  502. data/third_party/zlib/zlib.h +123 -100
  503. data/third_party/zlib/zutil.c +2 -2
  504. data/third_party/zlib/zutil.h +12 -9
  505. metadata +66 -45
  506. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
  507. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
  508. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  509. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
  510. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  511. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  512. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  513. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -20,6 +20,7 @@
20
20
 
21
21
  #include "src/core/lib/gpr/useful.h"
22
22
  #include "src/core/lib/iomgr/exec_ctx.h"
23
+ #include "src/core/lib/resource_quota/resource_quota.h"
23
24
 
24
25
  namespace grpc_core {
25
26
 
@@ -30,30 +31,13 @@ ResourceQuotaRefPtr ResourceQuotaFromChannelArgs(
30
31
  ->Ref();
31
32
  }
32
33
 
33
- namespace {
34
- grpc_arg MakeArg(ResourceQuota* quota) {
35
- return grpc_channel_arg_pointer_create(
36
- const_cast<char*>(GRPC_ARG_RESOURCE_QUOTA), quota,
37
- grpc_resource_quota_arg_vtable());
38
- }
39
-
40
- const grpc_channel_args* EnsureResourceQuotaInChannelArgs(
41
- const grpc_channel_args* args) {
42
- const grpc_arg* existing =
43
- grpc_channel_args_find(args, GRPC_ARG_RESOURCE_QUOTA);
44
- if (existing != nullptr && existing->type == GRPC_ARG_POINTER &&
45
- existing->value.pointer.p != nullptr) {
46
- return grpc_channel_args_copy(args);
47
- }
34
+ ChannelArgs EnsureResourceQuotaInChannelArgs(ChannelArgs args) {
35
+ if (args.GetObject<ResourceQuota>() != nullptr) return args;
48
36
  // If there's no existing quota, add it to the default one - shared between
49
37
  // all channel args declared thusly. This prevents us from accidentally not
50
38
  // sharing subchannels due to their channel args not specifying a quota.
51
- const char* remove[] = {GRPC_ARG_RESOURCE_QUOTA};
52
- auto new_arg = MakeArg(ResourceQuota::Default().get());
53
- return grpc_channel_args_copy_and_add_and_remove(args, remove, 1, &new_arg,
54
- 1);
39
+ return args.SetObject(ResourceQuota::Default());
55
40
  }
56
- } // namespace
57
41
 
58
42
  void RegisterResourceQuota(CoreConfiguration::Builder* builder) {
59
43
  builder->channel_args_preconditioning()->RegisterStage(
@@ -63,16 +47,7 @@ void RegisterResourceQuota(CoreConfiguration::Builder* builder) {
63
47
  } // namespace grpc_core
64
48
 
65
49
  extern "C" const grpc_arg_pointer_vtable* grpc_resource_quota_arg_vtable() {
66
- static const grpc_arg_pointer_vtable vtable = {
67
- // copy
68
- [](void* p) -> void* {
69
- return static_cast<grpc_core::ResourceQuota*>(p)->Ref().release();
70
- },
71
- // destroy
72
- [](void* p) { static_cast<grpc_core::ResourceQuota*>(p)->Unref(); },
73
- // compare
74
- [](void* p, void* q) { return grpc_core::QsortCompare(p, q); }};
75
- return &vtable;
50
+ return grpc_core::ChannelArgTypeTraits<grpc_core::ResourceQuota>::VTable();
76
51
  }
77
52
 
78
53
  extern "C" grpc_resource_quota* grpc_resource_quota_create(const char* name) {
@@ -27,7 +27,7 @@ namespace grpc_core {
27
27
 
28
28
  // TODO(ctiller): This is a hack. We need to do real accounting instead of
29
29
  // hard coding.
30
- constexpr size_t kResourceQuotaChannelSize = 50 * 1024;
30
+ constexpr size_t kResourceQuotaChannelSize = 34 * 1024;
31
31
 
32
32
  // Retrieve the resource quota from the channel args.
33
33
  // UB if not set.
@@ -19,6 +19,7 @@
19
19
 
20
20
  #include <grpc/impl/codegen/grpc_types.h>
21
21
 
22
+ #include "src/core/lib/gpr/useful.h"
22
23
  #include "src/core/lib/gprpp/cpp_impl_of.h"
23
24
  #include "src/core/lib/resource_quota/memory_quota.h"
24
25
  #include "src/core/lib/resource_quota/thread_quota.h"
@@ -37,6 +38,8 @@ class ResourceQuota : public RefCounted<ResourceQuota>,
37
38
  ResourceQuota(const ResourceQuota&) = delete;
38
39
  ResourceQuota& operator=(const ResourceQuota&) = delete;
39
40
 
41
+ static absl::string_view ChannelArgName() { return GRPC_ARG_RESOURCE_QUOTA; }
42
+
40
43
  MemoryQuotaRefPtr memory_quota() { return memory_quota_; }
41
44
 
42
45
  const RefCountedPtr<ThreadQuota>& thread_quota() { return thread_quota_; }
@@ -44,6 +47,11 @@ class ResourceQuota : public RefCounted<ResourceQuota>,
44
47
  // The default global resource quota
45
48
  static ResourceQuotaRefPtr Default();
46
49
 
50
+ static int ChannelArgsCompare(const ResourceQuota* a,
51
+ const ResourceQuota* b) {
52
+ return QsortCompare(a, b);
53
+ }
54
+
47
55
  private:
48
56
  MemoryQuotaRefPtr memory_quota_;
49
57
  RefCountedPtr<ThreadQuota> thread_quota_;
@@ -23,6 +23,13 @@
23
23
  struct grpc_authorization_policy_provider
24
24
  : public grpc_core::DualRefCounted<grpc_authorization_policy_provider> {
25
25
  public:
26
+ static absl::string_view ChannelArgName() {
27
+ return GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER;
28
+ }
29
+ static int ChannelArgsCompare(const grpc_authorization_policy_provider* a,
30
+ const grpc_authorization_policy_provider* b) {
31
+ return QsortCompare(a, b);
32
+ }
26
33
  struct AuthorizationEngines {
27
34
  grpc_core::RefCountedPtr<grpc_core::AuthorizationEngine> allow_engine;
28
35
  grpc_core::RefCountedPtr<grpc_core::AuthorizationEngine> deny_engine;
@@ -32,11 +32,9 @@ GrpcServerAuthzFilter::GrpcServerAuthzFilter(
32
32
  provider_(std::move(provider)) {}
33
33
 
34
34
  absl::StatusOr<GrpcServerAuthzFilter> GrpcServerAuthzFilter::Create(
35
- const grpc_channel_args* args, ChannelFilter::Args) {
36
- grpc_auth_context* auth_context = grpc_find_auth_context_in_args(args);
37
- grpc_authorization_policy_provider* provider =
38
- grpc_channel_args_find_pointer<grpc_authorization_policy_provider>(
39
- args, GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER);
35
+ ChannelArgs args, ChannelFilter::Args) {
36
+ auto* auth_context = args.GetObject<grpc_auth_context>();
37
+ auto* provider = args.GetObject<grpc_authorization_policy_provider>();
40
38
  if (provider == nullptr) {
41
39
  return absl::InvalidArgumentError("Failed to get authorization provider.");
42
40
  }
@@ -49,7 +47,7 @@ absl::StatusOr<GrpcServerAuthzFilter> GrpcServerAuthzFilter::Create(
49
47
  }
50
48
 
51
49
  bool GrpcServerAuthzFilter::IsAuthorized(
52
- const ClientInitialMetadata& initial_metadata) {
50
+ const ClientMetadataHandle& initial_metadata) {
53
51
  EvaluateArgs args(initial_metadata.get(), &per_channel_evaluate_args_);
54
52
  if (GRPC_TRACE_FLAG_ENABLED(grpc_authz_trace)) {
55
53
  gpr_log(GPR_DEBUG,
@@ -92,14 +90,13 @@ bool GrpcServerAuthzFilter::IsAuthorized(
92
90
  return false;
93
91
  }
94
92
 
95
- ArenaPromise<TrailingMetadata> GrpcServerAuthzFilter::MakeCallPromise(
96
- ClientInitialMetadata initial_metadata,
97
- NextPromiseFactory next_promise_factory) {
98
- if (!IsAuthorized(initial_metadata)) {
99
- return ArenaPromise<TrailingMetadata>(Immediate(TrailingMetadata(
93
+ ArenaPromise<ServerMetadataHandle> GrpcServerAuthzFilter::MakeCallPromise(
94
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
95
+ if (!IsAuthorized(call_args.client_initial_metadata)) {
96
+ return ArenaPromise<ServerMetadataHandle>(Immediate(ServerMetadataHandle(
100
97
  absl::PermissionDeniedError("Unauthorized RPC request rejected."))));
101
98
  }
102
- return next_promise_factory(std::move(initial_metadata));
99
+ return next_promise_factory(std::move(call_args));
103
100
  }
104
101
 
105
102
  const grpc_channel_filter GrpcServerAuthzFilter::kFilterVtable =
@@ -27,19 +27,18 @@ class GrpcServerAuthzFilter final : public ChannelFilter {
27
27
  public:
28
28
  static const grpc_channel_filter kFilterVtable;
29
29
 
30
- static absl::StatusOr<GrpcServerAuthzFilter> Create(
31
- const grpc_channel_args* args, ChannelFilter::Args);
30
+ static absl::StatusOr<GrpcServerAuthzFilter> Create(ChannelArgs args,
31
+ ChannelFilter::Args);
32
32
 
33
- ArenaPromise<TrailingMetadata> MakeCallPromise(
34
- ClientInitialMetadata initial_metadata,
35
- NextPromiseFactory next_promise_factory) override;
33
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
34
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
36
35
 
37
36
  private:
38
37
  GrpcServerAuthzFilter(
39
38
  RefCountedPtr<grpc_auth_context> auth_context, grpc_endpoint* endpoint,
40
39
  RefCountedPtr<grpc_authorization_policy_provider> provider);
41
40
 
42
- bool IsAuthorized(const ClientInitialMetadata& initial_metadata);
41
+ bool IsAuthorized(const ClientMetadataHandle& initial_metadata);
43
42
 
44
43
  RefCountedPtr<grpc_auth_context> auth_context_;
45
44
  EvaluateArgs::PerChannelArgs per_channel_evaluate_args_;
@@ -43,6 +43,8 @@ struct grpc_auth_property_array {
43
43
 
44
44
  void grpc_auth_property_reset(grpc_auth_property* property);
45
45
 
46
+ #define GRPC_AUTH_CONTEXT_ARG "grpc.auth_context"
47
+
46
48
  // This type is forward declared as a C struct and we cannot define it as a
47
49
  // class. Otherwise, compiler will complain about type mismatch due to
48
50
  // -Wmismatched-tags.
@@ -73,6 +75,12 @@ struct grpc_auth_context
73
75
  }
74
76
  }
75
77
 
78
+ static absl::string_view ChannelArgName() { return GRPC_AUTH_CONTEXT_ARG; }
79
+ static int ChannelArgsCompare(const grpc_auth_context* a,
80
+ const grpc_auth_context* b) {
81
+ return QsortCompare(a, b);
82
+ }
83
+
76
84
  const grpc_auth_context* chained() const { return chained_.get(); }
77
85
  const grpc_auth_property_array& properties() const { return properties_; }
78
86
 
@@ -142,7 +150,6 @@ grpc_server_security_context* grpc_server_security_context_create(
142
150
  void grpc_server_security_context_destroy(void* ctx);
143
151
 
144
152
  /* --- Channel args for auth context --- */
145
- #define GRPC_AUTH_CONTEXT_ARG "grpc.auth_context"
146
153
 
147
154
  grpc_arg grpc_auth_context_to_arg(grpc_auth_context* c);
148
155
  grpc_auth_context* grpc_auth_context_from_arg(const grpc_arg* arg);
@@ -30,14 +30,12 @@
30
30
  #include "src/core/lib/security/credentials/alts/check_gcp_environment.h"
31
31
  #include "src/core/lib/security/security_connector/alts/alts_security_connector.h"
32
32
 
33
- #define GRPC_CREDENTIALS_TYPE_ALTS "Alts"
34
33
  #define GRPC_ALTS_HANDSHAKER_SERVICE_URL "metadata.google.internal.:8080"
35
34
 
36
35
  grpc_alts_credentials::grpc_alts_credentials(
37
36
  const grpc_alts_credentials_options* options,
38
37
  const char* handshaker_service_url)
39
- : grpc_channel_credentials(GRPC_CREDENTIALS_TYPE_ALTS),
40
- options_(grpc_alts_credentials_options_copy(options)),
38
+ : options_(grpc_alts_credentials_options_copy(options)),
41
39
  handshaker_service_url_(handshaker_service_url == nullptr
42
40
  ? gpr_strdup(GRPC_ALTS_HANDSHAKER_SERVICE_URL)
43
41
  : gpr_strdup(handshaker_service_url)) {
@@ -58,11 +56,12 @@ grpc_alts_credentials::create_security_connector(
58
56
  this->Ref(), std::move(call_creds), target_name);
59
57
  }
60
58
 
59
+ const char* grpc_alts_credentials::type() const { return "Alts"; }
60
+
61
61
  grpc_alts_server_credentials::grpc_alts_server_credentials(
62
62
  const grpc_alts_credentials_options* options,
63
63
  const char* handshaker_service_url)
64
- : grpc_server_credentials(GRPC_CREDENTIALS_TYPE_ALTS),
65
- options_(grpc_alts_credentials_options_copy(options)),
64
+ : options_(grpc_alts_credentials_options_copy(options)),
66
65
  handshaker_service_url_(handshaker_service_url == nullptr
67
66
  ? gpr_strdup(GRPC_ALTS_HANDSHAKER_SERVICE_URL)
68
67
  : gpr_strdup(handshaker_service_url)) {
@@ -80,6 +79,8 @@ grpc_alts_server_credentials::~grpc_alts_server_credentials() {
80
79
  gpr_free(handshaker_service_url_);
81
80
  }
82
81
 
82
+ const char* grpc_alts_server_credentials::type() const { return "Alts"; }
83
+
83
84
  grpc_channel_credentials* grpc_alts_credentials_create_customized(
84
85
  const grpc_alts_credentials_options* options,
85
86
  const char* handshaker_service_url, bool enable_untrusted_alts) {
@@ -39,6 +39,8 @@ class grpc_alts_credentials final : public grpc_channel_credentials {
39
39
  const char* target_name, const grpc_channel_args* args,
40
40
  grpc_channel_args** new_args) override;
41
41
 
42
+ const char* type() const override;
43
+
42
44
  const grpc_alts_credentials_options* options() const { return options_; }
43
45
  grpc_alts_credentials_options* mutable_options() { return options_; }
44
46
  const char* handshaker_service_url() const { return handshaker_service_url_; }
@@ -64,6 +66,8 @@ class grpc_alts_server_credentials final : public grpc_server_credentials {
64
66
  grpc_core::RefCountedPtr<grpc_server_security_connector>
65
67
  create_security_connector(const grpc_channel_args* /* args */) override;
66
68
 
69
+ const char* type() const override;
70
+
67
71
  const grpc_alts_credentials_options* options() const { return options_; }
68
72
  grpc_alts_credentials_options* mutable_options() { return options_; }
69
73
  const char* handshaker_service_url() const { return handshaker_service_url_; }
@@ -31,7 +31,7 @@ struct ServiceUrlAndMethod {
31
31
  };
32
32
 
33
33
  ServiceUrlAndMethod MakeServiceUrlAndMethod(
34
- const ClientInitialMetadata& initial_metadata,
34
+ const ClientMetadataHandle& initial_metadata,
35
35
  const grpc_call_credentials::GetRequestMetadataArgs* args) {
36
36
  auto service =
37
37
  initial_metadata->get_pointer(HttpPathMetadata())->as_string_view();
@@ -65,13 +65,13 @@ ServiceUrlAndMethod MakeServiceUrlAndMethod(
65
65
  } // namespace
66
66
 
67
67
  std::string MakeJwtServiceUrl(
68
- const ClientInitialMetadata& initial_metadata,
68
+ const ClientMetadataHandle& initial_metadata,
69
69
  const grpc_call_credentials::GetRequestMetadataArgs* args) {
70
70
  return MakeServiceUrlAndMethod(initial_metadata, args).service_url;
71
71
  }
72
72
 
73
73
  grpc_auth_metadata_context MakePluginAuthMetadataContext(
74
- const ClientInitialMetadata& initial_metadata,
74
+ const ClientMetadataHandle& initial_metadata,
75
75
  const grpc_call_credentials::GetRequestMetadataArgs* args) {
76
76
  auto fields = MakeServiceUrlAndMethod(initial_metadata, args);
77
77
  grpc_auth_metadata_context ctx;
@@ -29,12 +29,12 @@ namespace grpc_core {
29
29
 
30
30
  // Helper function to construct service URL for jwt call creds.
31
31
  std::string MakeJwtServiceUrl(
32
- const ClientInitialMetadata& initial_metadata,
32
+ const ClientMetadataHandle& initial_metadata,
33
33
  const grpc_call_credentials::GetRequestMetadataArgs* args);
34
34
 
35
35
  // Helper function to construct context for plugin call creds.
36
36
  grpc_auth_metadata_context MakePluginAuthMetadataContext(
37
- const ClientInitialMetadata& initial_metadata,
37
+ const ClientMetadataHandle& initial_metadata,
38
38
  const grpc_call_credentials::GetRequestMetadataArgs* args);
39
39
 
40
40
  } // namespace grpc_core
@@ -37,25 +37,31 @@
37
37
  #include "src/core/lib/surface/api_trace.h"
38
38
  #include "src/core/lib/transport/transport.h"
39
39
 
40
- namespace grpc_core {
41
- const char kCredentialsTypeComposite[] = "composite";
42
- } // namespace grpc_core
40
+ //
41
+ // grpc_composite_channel_credentials
42
+ //
43
+
44
+ const char* grpc_composite_channel_credentials::type() const {
45
+ return "Composite";
46
+ }
43
47
 
44
48
  /* -- Composite call credentials. -- */
45
49
 
46
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
50
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
47
51
  grpc_composite_call_credentials::GetRequestMetadata(
48
- grpc_core::ClientInitialMetadata initial_metadata,
52
+ grpc_core::ClientMetadataHandle initial_metadata,
49
53
  const grpc_call_credentials::GetRequestMetadataArgs* args) {
50
54
  auto self = Ref();
51
55
  return TrySeqIter(
52
56
  inner_.begin(), inner_.end(), std::move(initial_metadata),
53
57
  [self, args](const grpc_core::RefCountedPtr<grpc_call_credentials>& creds,
54
- grpc_core::ClientInitialMetadata initial_metadata) {
58
+ grpc_core::ClientMetadataHandle initial_metadata) {
55
59
  return creds->GetRequestMetadata(std::move(initial_metadata), args);
56
60
  });
57
61
  }
58
62
 
63
+ const char* grpc_composite_call_credentials::Type() { return "Composite"; }
64
+
59
65
  std::string grpc_composite_call_credentials::debug_string() {
60
66
  std::vector<std::string> outputs;
61
67
  for (auto& inner_cred : inner_) {
@@ -89,12 +95,11 @@ void grpc_composite_call_credentials::push_to_inner(
89
95
 
90
96
  grpc_composite_call_credentials::grpc_composite_call_credentials(
91
97
  grpc_core::RefCountedPtr<grpc_call_credentials> creds1,
92
- grpc_core::RefCountedPtr<grpc_call_credentials> creds2)
93
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE) {
98
+ grpc_core::RefCountedPtr<grpc_call_credentials> creds2) {
94
99
  const bool creds1_is_composite =
95
- strcmp(creds1->type(), GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE) == 0;
100
+ creds1->type() == grpc_composite_call_credentials::Type();
96
101
  const bool creds2_is_composite =
97
- strcmp(creds2->type(), GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE) == 0;
102
+ creds2->type() == grpc_composite_call_credentials::Type();
98
103
  const size_t size = get_creds_array_size(creds1.get(), creds1_is_composite) +
99
104
  get_creds_array_size(creds2.get(), creds2_is_composite);
100
105
  inner_.reserve(size);
@@ -30,17 +30,12 @@
30
30
 
31
31
  /* -- Composite channel credentials. -- */
32
32
 
33
- namespace grpc_core {
34
- extern const char kCredentialsTypeComposite[];
35
- }
36
-
37
33
  class grpc_composite_channel_credentials : public grpc_channel_credentials {
38
34
  public:
39
35
  grpc_composite_channel_credentials(
40
36
  grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
41
37
  grpc_core::RefCountedPtr<grpc_call_credentials> call_creds)
42
- : grpc_channel_credentials(grpc_core::kCredentialsTypeComposite),
43
- inner_creds_(std::move(channel_creds)),
38
+ : inner_creds_(std::move(channel_creds)),
44
39
  call_creds_(std::move(call_creds)) {}
45
40
 
46
41
  ~grpc_composite_channel_credentials() override = default;
@@ -60,6 +55,8 @@ class grpc_composite_channel_credentials : public grpc_channel_credentials {
60
55
  return inner_creds_->update_arguments(args);
61
56
  }
62
57
 
58
+ const char* type() const override;
59
+
63
60
  const grpc_channel_credentials* inner_creds() const {
64
61
  return inner_creds_.get();
65
62
  }
@@ -90,8 +87,8 @@ class grpc_composite_call_credentials : public grpc_call_credentials {
90
87
  grpc_core::RefCountedPtr<grpc_call_credentials> creds2);
91
88
  ~grpc_composite_call_credentials() override = default;
92
89
 
93
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
94
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
90
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
91
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
95
92
  const GetRequestMetadataArgs* args) override;
96
93
 
97
94
  grpc_security_level min_security_level() const override {
@@ -101,6 +98,10 @@ class grpc_composite_call_credentials : public grpc_call_credentials {
101
98
  const CallCredentialsList& inner() const { return inner_; }
102
99
  std::string debug_string() override;
103
100
 
101
+ static const char* Type();
102
+
103
+ const char* type() const override { return Type(); }
104
+
104
105
  private:
105
106
  int cmp_impl(const grpc_call_credentials* other) const override {
106
107
  // TODO(yashykt): Check if we can do something better here
@@ -48,17 +48,6 @@ typedef enum {
48
48
 
49
49
  #define GRPC_FAKE_TRANSPORT_SECURITY_TYPE "fake"
50
50
 
51
- #define GRPC_CHANNEL_CREDENTIALS_TYPE_SSL "Ssl"
52
- #define GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY \
53
- "FakeTransportSecurity"
54
- #define GRPC_CHANNEL_CREDENTIALS_TYPE_GOOGLE_DEFAULT "GoogleDefault"
55
- #define GRPC_CREDENTIALS_TYPE_INSECURE "insecure"
56
-
57
- #define GRPC_CALL_CREDENTIALS_TYPE_OAUTH2 "Oauth2"
58
- #define GRPC_CALL_CREDENTIALS_TYPE_JWT "Jwt"
59
- #define GRPC_CALL_CREDENTIALS_TYPE_IAM "Iam"
60
- #define GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE "Composite"
61
-
62
51
  #define GRPC_AUTHORIZATION_METADATA_KEY "authorization"
63
52
  #define GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY \
64
53
  "x-goog-iam-authorization-token"
@@ -103,13 +92,6 @@ void grpc_override_well_known_credentials_path_getter(
103
92
  struct grpc_channel_credentials
104
93
  : grpc_core::RefCounted<grpc_channel_credentials> {
105
94
  public:
106
- // The pointer value \a type is used to uniquely identify a creds
107
- // implementation for down-casting purposes. Every creds implementation should
108
- // use a unique string instance, which should be returned by all instances of
109
- // that creds implementation.
110
- explicit grpc_channel_credentials(const char* type) : type_(type) {}
111
- ~grpc_channel_credentials() override = default;
112
-
113
95
  // Creates a security connector for the channel. May also create new channel
114
96
  // args for the channel to be used in place of the passed in const args if
115
97
  // returned non NULL. In that case the caller is responsible for destroying
@@ -154,14 +136,16 @@ struct grpc_channel_credentials
154
136
  return cmp_impl(other);
155
137
  }
156
138
 
157
- const char* type() const { return type_; }
139
+ // The pointer value \a type is used to uniquely identify a creds
140
+ // implementation for down-casting purposes. Every creds implementation should
141
+ // use a unique string instance, which should be returned by all instances of
142
+ // that creds implementation.
143
+ virtual const char* type() const = 0;
158
144
 
159
145
  private:
160
146
  // Implementation for `cmp` method intended to be overridden by subclasses.
161
- // Only invoked if `type()` and `other->type()` compare equal as strings.
147
+ // Only invoked if `type()` and `other->type()` point to the same string.
162
148
  virtual int cmp_impl(const grpc_channel_credentials* other) const = 0;
163
-
164
- const char* type_;
165
149
  };
166
150
 
167
151
  // TODO(roth): Once we eliminate insecure builds, find a better way to
@@ -209,15 +193,14 @@ struct grpc_call_credentials
209
193
  // use a unique string instance, which should be returned by all instances of
210
194
  // that creds implementation.
211
195
  explicit grpc_call_credentials(
212
- const char* type,
213
196
  grpc_security_level min_security_level = GRPC_PRIVACY_AND_INTEGRITY)
214
- : type_(type), min_security_level_(min_security_level) {}
197
+ : min_security_level_(min_security_level) {}
215
198
 
216
199
  ~grpc_call_credentials() override = default;
217
200
 
218
201
  virtual grpc_core::ArenaPromise<
219
- absl::StatusOr<grpc_core::ClientInitialMetadata>>
220
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
202
+ absl::StatusOr<grpc_core::ClientMetadataHandle>>
203
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
221
204
  const GetRequestMetadataArgs* args) = 0;
222
205
 
223
206
  virtual grpc_security_level min_security_level() const {
@@ -240,14 +223,17 @@ struct grpc_call_credentials
240
223
  return "grpc_call_credentials did not provide debug string";
241
224
  }
242
225
 
243
- const char* type() const { return type_; }
226
+ // The pointer value \a type is used to uniquely identify a creds
227
+ // implementation for down-casting purposes. Every creds implementation should
228
+ // use a unique string instance, which should be returned by all instances of
229
+ // that creds implementation.
230
+ virtual const char* type() const = 0;
244
231
 
245
232
  private:
246
233
  // Implementation for `cmp` method intended to be overridden by subclasses.
247
- // Only invoked if `type()` and `other->type()` compare equal as strings.
234
+ // Only invoked if `type()` and `other->type()` point to the same string.
248
235
  virtual int cmp_impl(const grpc_call_credentials* other) const = 0;
249
236
 
250
- const char* type_;
251
237
  const grpc_security_level min_security_level_;
252
238
  };
253
239
 
@@ -264,15 +250,13 @@ grpc_call_credentials* grpc_md_only_test_credentials_create(
264
250
  struct grpc_server_credentials
265
251
  : public grpc_core::RefCounted<grpc_server_credentials> {
266
252
  public:
267
- explicit grpc_server_credentials(const char* type) : type_(type) {}
268
-
269
253
  ~grpc_server_credentials() override { DestroyProcessor(); }
270
254
 
271
255
  // Ownership of \a args is not passed.
272
256
  virtual grpc_core::RefCountedPtr<grpc_server_security_connector>
273
257
  create_security_connector(const grpc_channel_args* args) = 0;
274
258
 
275
- const char* type() const { return type_; }
259
+ virtual const char* type() const = 0;
276
260
 
277
261
  const grpc_auth_metadata_processor& auth_metadata_processor() const {
278
262
  return processor_;
@@ -287,7 +271,6 @@ struct grpc_server_credentials
287
271
  }
288
272
  }
289
273
 
290
- const char* type_;
291
274
  grpc_auth_metadata_processor processor_ =
292
275
  grpc_auth_metadata_processor(); // Zero-initialize the C struct.
293
276
  };
@@ -37,11 +37,6 @@
37
37
  namespace {
38
38
  class grpc_fake_channel_credentials final : public grpc_channel_credentials {
39
39
  public:
40
- grpc_fake_channel_credentials()
41
- : grpc_channel_credentials(
42
- GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY) {}
43
- ~grpc_fake_channel_credentials() override = default;
44
-
45
40
  grpc_core::RefCountedPtr<grpc_channel_security_connector>
46
41
  create_security_connector(
47
42
  grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
@@ -51,6 +46,8 @@ class grpc_fake_channel_credentials final : public grpc_channel_credentials {
51
46
  this->Ref(), std::move(call_creds), target, args);
52
47
  }
53
48
 
49
+ const char* type() const override { return "Fake"; }
50
+
54
51
  private:
55
52
  int cmp_impl(const grpc_channel_credentials* other) const override {
56
53
  // TODO(yashykt): Check if we can do something better here
@@ -61,15 +58,12 @@ class grpc_fake_channel_credentials final : public grpc_channel_credentials {
61
58
 
62
59
  class grpc_fake_server_credentials final : public grpc_server_credentials {
63
60
  public:
64
- grpc_fake_server_credentials()
65
- : grpc_server_credentials(
66
- GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY) {}
67
- ~grpc_fake_server_credentials() override = default;
68
-
69
61
  grpc_core::RefCountedPtr<grpc_server_security_connector>
70
62
  create_security_connector(const grpc_channel_args* /*args*/) override {
71
63
  return grpc_fake_server_security_connector_create(this->Ref());
72
64
  }
65
+
66
+ const char* type() const override { return "Fake"; }
73
67
  };
74
68
  } // namespace
75
69
 
@@ -97,9 +91,9 @@ const char* grpc_fake_transport_get_expected_targets(
97
91
 
98
92
  /* -- Metadata-only test credentials. -- */
99
93
 
100
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
94
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
101
95
  grpc_md_only_test_credentials::GetRequestMetadata(
102
- grpc_core::ClientInitialMetadata initial_metadata,
96
+ grpc_core::ClientMetadataHandle initial_metadata,
103
97
  const grpc_call_credentials::GetRequestMetadataArgs*) {
104
98
  initial_metadata->Append(
105
99
  key_.as_string_view(), value_.Ref(),
@@ -107,6 +101,8 @@ grpc_md_only_test_credentials::GetRequestMetadata(
107
101
  return grpc_core::Immediate(std::move(initial_metadata));
108
102
  }
109
103
 
104
+ const char* grpc_md_only_test_credentials::Type() { return "MdOnlyTest"; }
105
+
110
106
  grpc_call_credentials* grpc_md_only_test_credentials_create(
111
107
  const char* md_key, const char* md_value) {
112
108
  return new grpc_md_only_test_credentials(md_key, md_value);
@@ -60,16 +60,19 @@ const char* grpc_fake_transport_get_expected_targets(
60
60
  class grpc_md_only_test_credentials : public grpc_call_credentials {
61
61
  public:
62
62
  grpc_md_only_test_credentials(const char* md_key, const char* md_value)
63
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2,
64
- GRPC_SECURITY_NONE),
63
+ : grpc_call_credentials(GRPC_SECURITY_NONE),
65
64
  key_(grpc_core::Slice::FromCopiedString(md_key)),
66
65
  value_(grpc_core::Slice::FromCopiedString(md_value)) {}
67
66
 
68
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
69
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
67
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
68
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
70
69
  const GetRequestMetadataArgs* args) override;
71
70
 
72
- std::string debug_string() override { return "MD only Test Credentials"; };
71
+ std::string debug_string() override { return "MD only Test Credentials"; }
72
+
73
+ static const char* Type();
74
+
75
+ const char* type() const override { return Type(); }
73
76
 
74
77
  private:
75
78
  int cmp_impl(const grpc_call_credentials* other) const override {
@@ -138,6 +138,10 @@ grpc_channel_args* grpc_google_default_channel_credentials::update_arguments(
138
138
  return updated;
139
139
  }
140
140
 
141
+ const char* grpc_google_default_channel_credentials::type() const {
142
+ return "GoogleDefault";
143
+ }
144
+
141
145
  static void on_metadata_server_detection_http_response(
142
146
  void* user_data, grpc_error_handle error) {
143
147
  metadata_server_detector* detector =
@@ -46,9 +46,7 @@ class grpc_google_default_channel_credentials
46
46
  grpc_google_default_channel_credentials(
47
47
  grpc_core::RefCountedPtr<grpc_channel_credentials> alts_creds,
48
48
  grpc_core::RefCountedPtr<grpc_channel_credentials> ssl_creds)
49
- : grpc_channel_credentials(GRPC_CHANNEL_CREDENTIALS_TYPE_GOOGLE_DEFAULT),
50
- alts_creds_(std::move(alts_creds)),
51
- ssl_creds_(std::move(ssl_creds)) {}
49
+ : alts_creds_(std::move(alts_creds)), ssl_creds_(std::move(ssl_creds)) {}
52
50
 
53
51
  ~grpc_google_default_channel_credentials() override = default;
54
52
 
@@ -60,6 +58,8 @@ class grpc_google_default_channel_credentials
60
58
 
61
59
  grpc_channel_args* update_arguments(grpc_channel_args* args) override;
62
60
 
61
+ const char* type() const override;
62
+
63
63
  const grpc_channel_credentials* alts_creds() const {
64
64
  return alts_creds_.get();
65
65
  }