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
@@ -31,9 +31,9 @@
31
31
  #include "src/core/lib/promise/promise.h"
32
32
  #include "src/core/lib/surface/api_trace.h"
33
33
 
34
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
34
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
35
35
  grpc_google_iam_credentials::GetRequestMetadata(
36
- grpc_core::ClientInitialMetadata initial_metadata,
36
+ grpc_core::ClientMetadataHandle initial_metadata,
37
37
  const grpc_call_credentials::GetRequestMetadataArgs*) {
38
38
  if (token_.has_value()) {
39
39
  initial_metadata->Append(
@@ -48,8 +48,7 @@ grpc_google_iam_credentials::GetRequestMetadata(
48
48
 
49
49
  grpc_google_iam_credentials::grpc_google_iam_credentials(
50
50
  const char* token, const char* authority_selector)
51
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_IAM),
52
- token_(token == nullptr ? absl::optional<grpc_core::Slice>()
51
+ : token_(token == nullptr ? absl::optional<grpc_core::Slice>()
53
52
  : grpc_core::Slice::FromCopiedString(token)),
54
53
  authority_selector_(
55
54
  grpc_core::Slice::FromCopiedString(authority_selector)),
@@ -57,6 +56,8 @@ grpc_google_iam_credentials::grpc_google_iam_credentials(
57
56
  "GoogleIAMCredentials{Token:%s,AuthoritySelector:%s}",
58
57
  token != nullptr ? "present" : "absent", authority_selector)) {}
59
58
 
59
+ const char* grpc_google_iam_credentials::Type() { return "Iam"; }
60
+
60
61
  grpc_call_credentials* grpc_google_iam_credentials_create(
61
62
  const char* token, const char* authority_selector, void* reserved) {
62
63
  grpc_core::ExecCtx exec_ctx;
@@ -30,12 +30,16 @@ class grpc_google_iam_credentials : public grpc_call_credentials {
30
30
  grpc_google_iam_credentials(const char* token,
31
31
  const char* authority_selector);
32
32
 
33
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
34
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
33
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
34
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
35
35
  const GetRequestMetadataArgs* args) override;
36
36
 
37
37
  std::string debug_string() override { return debug_string_; }
38
38
 
39
+ static const char* Type();
40
+
41
+ const char* type() const override { return Type(); }
42
+
39
43
  private:
40
44
  int cmp_impl(const grpc_call_credentials* other) const override {
41
45
  // TODO(yashykt): Check if we can do something better here
@@ -18,44 +18,37 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/lib/security/credentials/credentials.h"
21
+ #include "src/core/lib/security/credentials/insecure/insecure_credentials.h"
22
+
22
23
  #include "src/core/lib/security/security_connector/insecure/insecure_security_connector.h"
23
24
 
24
25
  namespace grpc_core {
25
- namespace {
26
26
 
27
- class InsecureCredentials final : public grpc_channel_credentials {
28
- public:
29
- InsecureCredentials()
30
- : grpc_channel_credentials(GRPC_CREDENTIALS_TYPE_INSECURE) {}
27
+ RefCountedPtr<grpc_channel_security_connector>
28
+ InsecureCredentials::create_security_connector(
29
+ RefCountedPtr<grpc_call_credentials> request_metadata_creds,
30
+ const char* /* target_name */, const grpc_channel_args* /* args */,
31
+ grpc_channel_args** /* new_args */) {
32
+ return MakeRefCounted<InsecureChannelSecurityConnector>(
33
+ Ref(), std::move(request_metadata_creds));
34
+ }
31
35
 
32
- RefCountedPtr<grpc_channel_security_connector> create_security_connector(
33
- RefCountedPtr<grpc_call_credentials> call_creds,
34
- const char* /* target_name */, const grpc_channel_args* /* args */,
35
- grpc_channel_args** /* new_args */) override {
36
- return MakeRefCounted<InsecureChannelSecurityConnector>(
37
- Ref(), std::move(call_creds));
38
- }
36
+ const char* InsecureCredentials::Type() { return "Insecure"; }
39
37
 
40
- private:
41
- int cmp_impl(const grpc_channel_credentials* /* other */) const override {
42
- // All insecure credentials objects should compare equal.
43
- return 0;
44
- }
45
- };
38
+ int InsecureCredentials::cmp_impl(
39
+ const grpc_channel_credentials* /* other */) const {
40
+ // All insecure credentials objects should compare equal.
41
+ return 0;
42
+ }
46
43
 
47
- class InsecureServerCredentials final : public grpc_server_credentials {
48
- public:
49
- InsecureServerCredentials()
50
- : grpc_server_credentials(GRPC_CREDENTIALS_TYPE_INSECURE) {}
44
+ RefCountedPtr<grpc_server_security_connector>
45
+ InsecureServerCredentials::create_security_connector(
46
+ const grpc_channel_args* /* args */) {
47
+ return MakeRefCounted<InsecureServerSecurityConnector>(Ref());
48
+ }
51
49
 
52
- RefCountedPtr<grpc_server_security_connector> create_security_connector(
53
- const grpc_channel_args* /* args */) override {
54
- return MakeRefCounted<InsecureServerSecurityConnector>(Ref());
55
- }
56
- };
50
+ const char* InsecureServerCredentials::Type() { return "Insecure"; }
57
51
 
58
- } // namespace
59
52
  } // namespace grpc_core
60
53
 
61
54
  grpc_channel_credentials* grpc_insecure_credentials_create() {
@@ -0,0 +1,57 @@
1
+ //
2
+ //
3
+ // Copyright 2022 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
+
19
+ #ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_INSECURE_INSECURE_CREDENTIALS_H
20
+ #define GRPC_CORE_LIB_SECURITY_CREDENTIALS_INSECURE_INSECURE_CREDENTIALS_H
21
+
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ #include <grpc/grpc_security.h>
25
+
26
+ #include "src/core/lib/security/credentials/credentials.h"
27
+
28
+ namespace grpc_core {
29
+
30
+ class InsecureCredentials final : public grpc_channel_credentials {
31
+ public:
32
+ RefCountedPtr<grpc_channel_security_connector> create_security_connector(
33
+ RefCountedPtr<grpc_call_credentials> request_metadata_creds,
34
+ const char* /* target_name */, const grpc_channel_args* /* args */,
35
+ grpc_channel_args** /* new_args */) override;
36
+
37
+ static const char* Type();
38
+
39
+ const char* type() const override { return Type(); }
40
+
41
+ private:
42
+ int cmp_impl(const grpc_channel_credentials* other) const override;
43
+ };
44
+
45
+ class InsecureServerCredentials final : public grpc_server_credentials {
46
+ public:
47
+ RefCountedPtr<grpc_server_security_connector> create_security_connector(
48
+ const grpc_channel_args* /* args */) override;
49
+
50
+ static const char* Type();
51
+
52
+ const char* type() const override { return Type(); }
53
+ };
54
+
55
+ } // namespace grpc_core
56
+
57
+ #endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_INSECURE_INSECURE_CREDENTIALS_H
@@ -49,9 +49,9 @@ grpc_service_account_jwt_access_credentials::
49
49
  gpr_mu_destroy(&cache_mu_);
50
50
  }
51
51
 
52
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
52
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
53
53
  grpc_service_account_jwt_access_credentials::GetRequestMetadata(
54
- grpc_core::ClientInitialMetadata initial_metadata,
54
+ grpc_core::ClientMetadataHandle initial_metadata,
55
55
  const grpc_call_credentials::GetRequestMetadataArgs* args) {
56
56
  gpr_timespec refresh_threshold = gpr_time_from_seconds(
57
57
  GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS, GPR_TIMESPAN);
@@ -106,7 +106,7 @@ grpc_service_account_jwt_access_credentials::GetRequestMetadata(
106
106
  grpc_service_account_jwt_access_credentials::
107
107
  grpc_service_account_jwt_access_credentials(grpc_auth_json_key key,
108
108
  gpr_timespec token_lifetime)
109
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_JWT), key_(key) {
109
+ : key_(key) {
110
110
  gpr_timespec max_token_lifetime = grpc_max_auth_token_lifetime();
111
111
  if (gpr_time_cmp(token_lifetime, max_token_lifetime) > 0) {
112
112
  gpr_log(GPR_INFO,
@@ -118,6 +118,10 @@ grpc_service_account_jwt_access_credentials::
118
118
  gpr_mu_init(&cache_mu_);
119
119
  }
120
120
 
121
+ const char* grpc_service_account_jwt_access_credentials::Type() {
122
+ return "Jwt";
123
+ }
124
+
121
125
  grpc_core::RefCountedPtr<grpc_call_credentials>
122
126
  grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
123
127
  grpc_auth_json_key key, gpr_timespec token_lifetime) {
@@ -38,8 +38,8 @@ class grpc_service_account_jwt_access_credentials
38
38
  gpr_timespec token_lifetime);
39
39
  ~grpc_service_account_jwt_access_credentials() override;
40
40
 
41
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
42
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
41
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
42
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
43
43
  const GetRequestMetadataArgs* args) override;
44
44
 
45
45
  const gpr_timespec& jwt_lifetime() const { return jwt_lifetime_; }
@@ -52,6 +52,10 @@ class grpc_service_account_jwt_access_credentials
52
52
  static_cast<int64_t>(gpr_timespec_to_micros(jwt_lifetime_)))));
53
53
  };
54
54
 
55
+ static const char* Type();
56
+
57
+ const char* type() const override { return Type(); }
58
+
55
59
  private:
56
60
  int cmp_impl(const grpc_call_credentials* other) const override {
57
61
  // TODO(yashykt): Check if we can do something better here
@@ -27,8 +27,6 @@
27
27
  #include "src/core/lib/channel/channel_args.h"
28
28
  #include "src/core/lib/security/security_connector/local/local_security_connector.h"
29
29
 
30
- #define GRPC_CREDENTIALS_TYPE_LOCAL "Local"
31
-
32
30
  grpc_core::RefCountedPtr<grpc_channel_security_connector>
33
31
  grpc_local_credentials::create_security_connector(
34
32
  grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
@@ -38,16 +36,19 @@ grpc_local_credentials::create_security_connector(
38
36
  this->Ref(), std::move(request_metadata_creds), args, target_name);
39
37
  }
40
38
 
39
+ const char* grpc_local_credentials::type() const { return "Local"; }
40
+
41
41
  grpc_core::RefCountedPtr<grpc_server_security_connector>
42
42
  grpc_local_server_credentials::create_security_connector(
43
43
  const grpc_channel_args* /* args */) {
44
44
  return grpc_local_server_security_connector_create(this->Ref());
45
45
  }
46
46
 
47
+ const char* grpc_local_server_credentials::type() const { return "Local"; }
48
+
47
49
  grpc_local_credentials::grpc_local_credentials(
48
50
  grpc_local_connect_type connect_type)
49
- : grpc_channel_credentials(GRPC_CREDENTIALS_TYPE_LOCAL),
50
- connect_type_(connect_type) {}
51
+ : connect_type_(connect_type) {}
51
52
 
52
53
  grpc_channel_credentials* grpc_local_credentials_create(
53
54
  grpc_local_connect_type connect_type) {
@@ -56,8 +57,7 @@ grpc_channel_credentials* grpc_local_credentials_create(
56
57
 
57
58
  grpc_local_server_credentials::grpc_local_server_credentials(
58
59
  grpc_local_connect_type connect_type)
59
- : grpc_server_credentials(GRPC_CREDENTIALS_TYPE_LOCAL),
60
- connect_type_(connect_type) {}
60
+ : connect_type_(connect_type) {}
61
61
 
62
62
  grpc_server_credentials* grpc_local_server_credentials_create(
63
63
  grpc_local_connect_type connect_type) {
@@ -37,6 +37,8 @@ class grpc_local_credentials final : public grpc_channel_credentials {
37
37
  const char* target_name, const grpc_channel_args* args,
38
38
  grpc_channel_args** new_args) override;
39
39
 
40
+ const char* type() const override;
41
+
40
42
  grpc_local_connect_type connect_type() const { return connect_type_; }
41
43
 
42
44
  private:
@@ -58,6 +60,8 @@ class grpc_local_server_credentials final : public grpc_server_credentials {
58
60
  grpc_core::RefCountedPtr<grpc_server_security_connector>
59
61
  create_security_connector(const grpc_channel_args* /* args */) override;
60
62
 
63
+ const char* type() const override;
64
+
61
65
  grpc_local_connect_type connect_type() const { return connect_type_; }
62
66
 
63
67
  private:
@@ -281,9 +281,9 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response(
281
281
  delete r;
282
282
  }
283
283
 
284
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
284
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
285
285
  grpc_oauth2_token_fetcher_credentials::GetRequestMetadata(
286
- grpc_core::ClientInitialMetadata initial_metadata,
286
+ grpc_core::ClientMetadataHandle initial_metadata,
287
287
  const grpc_call_credentials::GetRequestMetadataArgs*) {
288
288
  // Check if we can use the cached token.
289
289
  absl::optional<grpc_core::Slice> cached_access_token_value;
@@ -328,7 +328,7 @@ grpc_oauth2_token_fetcher_credentials::GetRequestMetadata(
328
328
  }
329
329
  return
330
330
  [pending_request]()
331
- -> grpc_core::Poll<absl::StatusOr<grpc_core::ClientInitialMetadata>> {
331
+ -> grpc_core::Poll<absl::StatusOr<grpc_core::ClientMetadataHandle>> {
332
332
  if (!pending_request->done.load(std::memory_order_acquire)) {
333
333
  return grpc_core::Pending{};
334
334
  }
@@ -337,8 +337,7 @@ grpc_oauth2_token_fetcher_credentials::GetRequestMetadata(
337
337
  }
338
338
 
339
339
  grpc_oauth2_token_fetcher_credentials::grpc_oauth2_token_fetcher_credentials()
340
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2),
341
- token_expiration_(gpr_inf_past(GPR_CLOCK_MONOTONIC)),
340
+ : token_expiration_(gpr_inf_past(GPR_CLOCK_MONOTONIC)),
342
341
  pollent_(grpc_polling_entity_create_from_pollset_set(
343
342
  grpc_pollset_set_create())) {
344
343
  gpr_mu_init(&mu_);
@@ -348,6 +347,10 @@ std::string grpc_oauth2_token_fetcher_credentials::debug_string() {
348
347
  return "OAuth2TokenFetcherCredentials";
349
348
  }
350
349
 
350
+ const char* grpc_oauth2_token_fetcher_credentials::type() const {
351
+ return "Oauth2";
352
+ }
353
+
351
354
  //
352
355
  // Google Compute Engine credentials.
353
356
  //
@@ -473,6 +476,10 @@ std::string grpc_google_refresh_token_credentials::debug_string() {
473
476
  grpc_oauth2_token_fetcher_credentials::debug_string());
474
477
  }
475
478
 
479
+ const char* grpc_google_refresh_token_credentials::type() const {
480
+ return "GoogleRefreshToken";
481
+ }
482
+
476
483
  static std::string create_loggable_refresh_token(
477
484
  grpc_auth_refresh_token* token) {
478
485
  if (strcmp(token->type, GRPC_AUTH_JSON_TYPE_INVALID) == 0) {
@@ -696,9 +703,9 @@ grpc_call_credentials* grpc_sts_credentials_create(
696
703
  // Oauth2 Access Token credentials.
697
704
  //
698
705
 
699
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
706
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
700
707
  grpc_access_token_credentials::GetRequestMetadata(
701
- grpc_core::ClientInitialMetadata initial_metadata,
708
+ grpc_core::ClientMetadataHandle initial_metadata,
702
709
  const grpc_call_credentials::GetRequestMetadataArgs*) {
703
710
  initial_metadata->Append(
704
711
  GRPC_AUTHORIZATION_METADATA_KEY, access_token_value_.Ref(),
@@ -706,10 +713,11 @@ grpc_access_token_credentials::GetRequestMetadata(
706
713
  return grpc_core::Immediate(std::move(initial_metadata));
707
714
  }
708
715
 
716
+ const char* grpc_access_token_credentials::Type() { return "AccessToken"; }
717
+
709
718
  grpc_access_token_credentials::grpc_access_token_credentials(
710
719
  const char* access_token)
711
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2),
712
- access_token_value_(grpc_core::Slice::FromCopiedString(
720
+ : access_token_value_(grpc_core::Slice::FromCopiedString(
713
721
  absl::StrCat("Bearer ", access_token))) {}
714
722
 
715
723
  std::string grpc_access_token_credentials::debug_string() {
@@ -79,9 +79,9 @@ struct grpc_oauth2_pending_get_request_metadata
79
79
  std::atomic<bool> done{false};
80
80
  grpc_core::Waker waker;
81
81
  grpc_polling_entity* pollent;
82
- grpc_core::ClientInitialMetadata md;
82
+ grpc_core::ClientMetadataHandle md;
83
83
  struct grpc_oauth2_pending_get_request_metadata* next;
84
- absl::StatusOr<grpc_core::ClientInitialMetadata> result;
84
+ absl::StatusOr<grpc_core::ClientMetadataHandle> result;
85
85
  };
86
86
 
87
87
  // -- Oauth2 Token Fetcher credentials --
@@ -94,14 +94,16 @@ class grpc_oauth2_token_fetcher_credentials : public grpc_call_credentials {
94
94
  grpc_oauth2_token_fetcher_credentials();
95
95
  ~grpc_oauth2_token_fetcher_credentials() override;
96
96
 
97
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
98
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
97
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
98
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
99
99
  const GetRequestMetadataArgs* args) override;
100
100
 
101
101
  void on_http_response(grpc_credentials_metadata_request* r,
102
102
  grpc_error_handle error);
103
103
  std::string debug_string() override;
104
104
 
105
+ const char* type() const override;
106
+
105
107
  protected:
106
108
  virtual void fetch_oauth2(grpc_credentials_metadata_request* req,
107
109
  grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
@@ -136,6 +138,8 @@ class grpc_google_refresh_token_credentials final
136
138
 
137
139
  std::string debug_string() override;
138
140
 
141
+ const char* type() const override;
142
+
139
143
  protected:
140
144
  void fetch_oauth2(grpc_credentials_metadata_request* req,
141
145
  grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
@@ -152,12 +156,16 @@ class grpc_access_token_credentials final : public grpc_call_credentials {
152
156
  public:
153
157
  explicit grpc_access_token_credentials(const char* access_token);
154
158
 
155
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
156
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
159
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
160
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
157
161
  const GetRequestMetadataArgs* args) override;
158
162
 
159
163
  std::string debug_string() override;
160
164
 
165
+ static const char* Type();
166
+
167
+ const char* type() const override { return Type(); }
168
+
161
169
  private:
162
170
  int cmp_impl(const grpc_call_credentials* other) const override {
163
171
  // TODO(yashykt): Check if we can do something better here
@@ -60,7 +60,9 @@ std::string grpc_plugin_credentials::debug_string() {
60
60
  return debug_str;
61
61
  }
62
62
 
63
- absl::StatusOr<grpc_core::ClientInitialMetadata>
63
+ const char* grpc_plugin_credentials::type() const { return "Plugin"; }
64
+
65
+ absl::StatusOr<grpc_core::ClientMetadataHandle>
64
66
  grpc_plugin_credentials::PendingRequest::ProcessPluginResult(
65
67
  const grpc_metadata* md, size_t num_md, grpc_status_code status,
66
68
  const char* error_details) {
@@ -96,12 +98,12 @@ grpc_plugin_credentials::PendingRequest::ProcessPluginResult(
96
98
  });
97
99
  }
98
100
  if (!error.ok()) return std::move(error);
99
- return grpc_core::ClientInitialMetadata(std::move(md_));
101
+ return grpc_core::ClientMetadataHandle(std::move(md_));
100
102
  }
101
103
  }
102
104
  }
103
105
 
104
- grpc_core::Poll<absl::StatusOr<grpc_core::ClientInitialMetadata>>
106
+ grpc_core::Poll<absl::StatusOr<grpc_core::ClientMetadataHandle>>
105
107
  grpc_plugin_credentials::PendingRequest::PollAsyncResult() {
106
108
  if (!ready_.load(std::memory_order_acquire)) {
107
109
  return grpc_core::Pending{};
@@ -137,9 +139,9 @@ void grpc_plugin_credentials::PendingRequest::RequestMetadataReady(
137
139
  r->waker_.Wakeup();
138
140
  }
139
141
 
140
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
142
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
141
143
  grpc_plugin_credentials::GetRequestMetadata(
142
- grpc_core::ClientInitialMetadata initial_metadata,
144
+ grpc_core::ClientMetadataHandle initial_metadata,
143
145
  const grpc_call_credentials::GetRequestMetadataArgs* args) {
144
146
  if (plugin_.get_metadata == nullptr) {
145
147
  return grpc_core::Immediate(std::move(initial_metadata));
@@ -197,7 +199,7 @@ grpc_plugin_credentials::GetRequestMetadata(
197
199
  grpc_plugin_credentials::grpc_plugin_credentials(
198
200
  grpc_metadata_credentials_plugin plugin,
199
201
  grpc_security_level min_security_level)
200
- : grpc_call_credentials(plugin.type, min_security_level), plugin_(plugin) {}
202
+ : grpc_call_credentials(min_security_level), plugin_(plugin) {}
201
203
 
202
204
  grpc_call_credentials* grpc_metadata_credentials_create_from_plugin(
203
205
  grpc_metadata_credentials_plugin plugin,
@@ -35,17 +35,19 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
35
35
  grpc_security_level min_security_level);
36
36
  ~grpc_plugin_credentials() override;
37
37
 
38
- grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientInitialMetadata>>
39
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
38
+ grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
39
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
40
40
  const GetRequestMetadataArgs* args) override;
41
41
 
42
42
  std::string debug_string() override;
43
43
 
44
+ const char* type() const override;
45
+
44
46
  private:
45
47
  class PendingRequest : public grpc_core::RefCounted<PendingRequest> {
46
48
  public:
47
49
  PendingRequest(grpc_core::RefCountedPtr<grpc_plugin_credentials> creds,
48
- grpc_core::ClientInitialMetadata initial_metadata,
50
+ grpc_core::ClientMetadataHandle initial_metadata,
49
51
  const grpc_call_credentials::GetRequestMetadataArgs* args)
50
52
  : call_creds_(std::move(creds)),
51
53
  context_(
@@ -60,11 +62,11 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
60
62
  }
61
63
  }
62
64
 
63
- absl::StatusOr<grpc_core::ClientInitialMetadata> ProcessPluginResult(
65
+ absl::StatusOr<grpc_core::ClientMetadataHandle> ProcessPluginResult(
64
66
  const grpc_metadata* md, size_t num_md, grpc_status_code status,
65
67
  const char* error_details);
66
68
 
67
- grpc_core::Poll<absl::StatusOr<grpc_core::ClientInitialMetadata>>
69
+ grpc_core::Poll<absl::StatusOr<grpc_core::ClientMetadataHandle>>
68
70
  PollAsyncResult();
69
71
 
70
72
  static void RequestMetadataReady(void* request, const grpc_metadata* md,
@@ -80,7 +82,7 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
80
82
  grpc_core::Activity::current()->MakeNonOwningWaker()};
81
83
  grpc_core::RefCountedPtr<grpc_plugin_credentials> call_creds_;
82
84
  grpc_auth_metadata_context context_;
83
- grpc_core::ClientInitialMetadata md_;
85
+ grpc_core::ClientMetadataHandle md_;
84
86
  // final status
85
87
  absl::InlinedVector<grpc_metadata, 2> metadata_;
86
88
  std::string error_details_;
@@ -37,8 +37,7 @@
37
37
 
38
38
  grpc_ssl_credentials::grpc_ssl_credentials(
39
39
  const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
40
- const grpc_ssl_verify_peer_options* verify_options)
41
- : grpc_channel_credentials(GRPC_CHANNEL_CREDENTIALS_TYPE_SSL) {
40
+ const grpc_ssl_verify_peer_options* verify_options) {
42
41
  build_config(pem_root_certs, pem_key_cert_pair, verify_options);
43
42
  }
44
43
 
@@ -83,6 +82,8 @@ grpc_ssl_credentials::create_security_connector(
83
82
  return sc;
84
83
  }
85
84
 
85
+ const char* grpc_ssl_credentials::Type() { return "Ssl"; }
86
+
86
87
  void grpc_ssl_credentials::build_config(
87
88
  const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
88
89
  const grpc_ssl_verify_peer_options* verify_options) {
@@ -162,8 +163,7 @@ struct grpc_ssl_server_credentials_options {
162
163
  };
163
164
 
164
165
  grpc_ssl_server_credentials::grpc_ssl_server_credentials(
165
- const grpc_ssl_server_credentials_options& options)
166
- : grpc_server_credentials(GRPC_CHANNEL_CREDENTIALS_TYPE_SSL) {
166
+ const grpc_ssl_server_credentials_options& options) {
167
167
  if (options.certificate_config_fetcher != nullptr) {
168
168
  config_.client_certificate_request = options.client_certificate_request;
169
169
  certificate_config_fetcher_ = *options.certificate_config_fetcher;
@@ -186,6 +186,8 @@ grpc_ssl_server_credentials::create_security_connector(
186
186
  return grpc_ssl_server_security_connector_create(this->Ref());
187
187
  }
188
188
 
189
+ const char* grpc_ssl_server_credentials::Type() { return "Ssl"; }
190
+
189
191
  tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs(
190
192
  const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
191
193
  size_t num_key_cert_pairs) {
@@ -37,6 +37,10 @@ class grpc_ssl_credentials : public grpc_channel_credentials {
37
37
  const char* target, const grpc_channel_args* args,
38
38
  grpc_channel_args** new_args) override;
39
39
 
40
+ static const char* Type();
41
+
42
+ const char* type() const override { return Type(); }
43
+
40
44
  // TODO(mattstev): Plumb to wrapped languages. Until then, setting the TLS
41
45
  // version should be done for testing purposes only.
42
46
  void set_min_tls_version(grpc_tls_version min_tls_version);
@@ -76,6 +80,10 @@ class grpc_ssl_server_credentials final : public grpc_server_credentials {
76
80
  grpc_core::RefCountedPtr<grpc_server_security_connector>
77
81
  create_security_connector(const grpc_channel_args* /* args */) override;
78
82
 
83
+ static const char* Type();
84
+
85
+ const char* type() const override { return Type(); }
86
+
79
87
  bool has_cert_config_fetcher() const {
80
88
  return certificate_config_fetcher_.cb != nullptr;
81
89
  }
@@ -26,6 +26,7 @@
26
26
 
27
27
  #include <grpc/grpc_security.h>
28
28
 
29
+ #include "src/core/lib/gpr/useful.h"
29
30
  #include "src/core/lib/gprpp/ref_counted.h"
30
31
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
31
32
  #include "src/core/lib/gprpp/thd.h"
@@ -50,6 +51,36 @@ struct grpc_tls_certificate_provider
50
51
 
51
52
  virtual grpc_core::RefCountedPtr<grpc_tls_certificate_distributor>
52
53
  distributor() const = 0;
54
+
55
+ // Compares this grpc_tls_certificate_provider object with \a other.
56
+ // If this method returns 0, it means that gRPC can treat the two certificate
57
+ // providers as effectively the same. This method is used to compare
58
+ // `grpc_tls_certificate_provider` objects when they are present in
59
+ // channel_args. One important usage of this is when channel args are used in
60
+ // SubchannelKey, which leads to a useful property that allows subchannels to
61
+ // be reused when two different `grpc_tls_certificate_provider` objects are
62
+ // used but they compare as equal (assuming other channel args match).
63
+ int Compare(const grpc_tls_certificate_provider* other) const {
64
+ GPR_ASSERT(other != nullptr);
65
+ // Intentionally uses grpc_core::QsortCompare instead of strcmp as a safety
66
+ // against different grpc_tls_certificate_provider types using the same
67
+ // name.
68
+ int r = grpc_core::QsortCompare(type(), other->type());
69
+ if (r != 0) return r;
70
+ return CompareImpl(other);
71
+ }
72
+
73
+ // The pointer value \a type is used to uniquely identify a creds
74
+ // implementation for down-casting purposes. Every provider implementation
75
+ // should use a unique string instance, which should be returned by all
76
+ // instances of that provider implementation.
77
+ virtual const char* type() const = 0;
78
+
79
+ private:
80
+ // Implementation for `Compare` method intended to be overridden by
81
+ // subclasses. Only invoked if `type()` and `other->type()` point to the same
82
+ // string.
83
+ virtual int CompareImpl(const grpc_tls_certificate_provider* other) const = 0;
53
84
  };
54
85
 
55
86
  namespace grpc_core {
@@ -68,11 +99,20 @@ class StaticDataCertificateProvider final
68
99
  return distributor_;
69
100
  }
70
101
 
102
+ const char* type() const override { return "StaticData"; }
103
+
71
104
  private:
72
105
  struct WatcherInfo {
73
106
  bool root_being_watched = false;
74
107
  bool identity_being_watched = false;
75
108
  };
109
+
110
+ int CompareImpl(const grpc_tls_certificate_provider* other) const override {
111
+ // TODO(yashykt): Maybe do something better here.
112
+ return QsortCompare(static_cast<const grpc_tls_certificate_provider*>(this),
113
+ other);
114
+ }
115
+
76
116
  RefCountedPtr<grpc_tls_certificate_distributor> distributor_;
77
117
  std::string root_certificate_;
78
118
  PemKeyCertPairList pem_key_cert_pairs_;
@@ -98,11 +138,20 @@ class FileWatcherCertificateProvider final
98
138
  return distributor_;
99
139
  }
100
140
 
141
+ const char* type() const override { return "FileWatcher"; }
142
+
101
143
  private:
102
144
  struct WatcherInfo {
103
145
  bool root_being_watched = false;
104
146
  bool identity_being_watched = false;
105
147
  };
148
+
149
+ int CompareImpl(const grpc_tls_certificate_provider* other) const override {
150
+ // TODO(yashykt): Maybe do something better here.
151
+ return QsortCompare(static_cast<const grpc_tls_certificate_provider*>(this),
152
+ other);
153
+ }
154
+
106
155
  // Force an update from the file system regardless of the interval.
107
156
  void ForceUpdate();
108
157
  // Read the root certificates from files and update the distributor.