grpc 1.46.2-x86_64-linux → 1.48.0.pre1-x86_64-linux

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 (816) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +138 -128
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +62 -18
  5. data/include/grpc/event_engine/memory_allocator.h +0 -15
  6. data/include/grpc/event_engine/port.h +1 -1
  7. data/include/grpc/event_engine/slice.h +286 -0
  8. data/include/grpc/event_engine/slice_buffer.h +118 -0
  9. data/include/grpc/grpc.h +3 -3
  10. data/include/grpc/grpc_security.h +11 -0
  11. data/include/grpc/impl/codegen/compression_types.h +2 -1
  12. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  13. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  14. data/include/grpc/impl/codegen/grpc_types.h +2 -1
  15. data/include/grpc/impl/codegen/port_platform.h +106 -39
  16. data/include/grpc/impl/codegen/slice.h +1 -1
  17. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  18. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +35 -35
  19. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +20 -1
  20. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  21. data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
  22. data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
  23. data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
  24. data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
  25. data/src/core/ext/filters/client_channel/channel_connectivity.cc +43 -21
  26. data/src/core/ext/filters/client_channel/client_channel.cc +111 -82
  27. data/src/core/ext/filters/client_channel/client_channel.h +43 -8
  28. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
  29. data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
  30. data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
  31. data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
  32. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
  33. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  34. data/src/core/ext/filters/client_channel/config_selector.h +8 -6
  35. data/src/core/ext/filters/client_channel/connector.h +9 -3
  36. data/src/core/ext/filters/client_channel/dynamic_filters.cc +19 -6
  37. data/src/core/ext/filters/client_channel/dynamic_filters.h +12 -2
  38. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
  39. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
  40. data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
  41. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
  42. data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
  43. data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
  45. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
  46. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  47. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
  48. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -5
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +132 -62
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
  56. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
  57. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  58. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
  59. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  60. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +149 -147
  61. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +176 -85
  62. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +303 -203
  63. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
  64. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +92 -54
  65. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +240 -214
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +119 -111
  67. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +86 -71
  68. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +101 -25
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
  70. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -11
  71. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +36 -20
  72. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +78 -14
  73. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
  74. data/src/core/ext/filters/client_channel/lb_policy.h +18 -31
  75. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
  76. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
  77. data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
  78. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  79. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
  80. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  81. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
  82. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  83. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +26 -6
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +139 -48
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
  87. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -6
  88. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -14
  89. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
  90. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
  91. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  92. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  93. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +39 -7
  94. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -19
  95. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
  96. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -16
  97. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +14 -2
  98. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
  99. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +17 -12
  100. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +111 -46
  101. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  102. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +12 -18
  103. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
  104. data/src/core/ext/filters/client_channel/retry_filter.cc +75 -36
  105. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  106. data/src/core/ext/filters/client_channel/retry_service_config.cc +12 -13
  107. data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
  108. data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
  109. data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
  110. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +24 -6
  111. data/src/core/ext/filters/client_channel/subchannel.cc +186 -187
  112. data/src/core/ext/filters/client_channel/subchannel.h +80 -36
  113. data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
  114. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  115. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
  116. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
  117. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +24 -95
  118. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +17 -9
  119. data/src/core/ext/filters/deadline/deadline_filter.cc +18 -9
  120. data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
  121. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +22 -6
  122. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
  123. data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
  124. data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
  125. data/src/core/ext/filters/http/client/http_client_filter.cc +30 -10
  126. data/src/core/ext/filters/http/client/http_client_filter.h +15 -2
  127. data/src/core/ext/filters/http/client_authority_filter.cc +16 -20
  128. data/src/core/ext/filters/http/client_authority_filter.h +5 -2
  129. data/src/core/ext/filters/http/http_filters_plugin.cc +16 -9
  130. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +65 -187
  131. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  132. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -107
  133. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  134. data/src/core/ext/filters/http/server/http_server_filter.cc +95 -255
  135. data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
  136. data/src/core/ext/filters/message_size/message_size_filter.cc +45 -41
  137. data/src/core/ext/filters/message_size/message_size_filter.h +15 -2
  138. data/src/core/ext/filters/rbac/rbac_filter.cc +15 -3
  139. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  140. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
  141. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
  142. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  143. data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
  144. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
  145. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  146. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +104 -138
  147. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
  148. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +58 -29
  149. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
  150. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
  151. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  152. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  153. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -491
  154. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +6 -1
  155. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
  156. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
  157. data/src/core/ext/transport/chttp2/transport/flow_control.cc +145 -261
  158. data/src/core/ext/transport/chttp2/transport/flow_control.h +179 -288
  159. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  160. data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -211
  161. data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
  162. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
  163. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
  164. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
  165. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
  166. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
  167. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
  168. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -42
  169. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
  170. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
  171. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
  172. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
  173. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
  174. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
  175. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
  176. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -13
  177. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
  178. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +53 -37
  179. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
  180. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  181. data/src/core/ext/transport/chttp2/transport/internal.h +31 -112
  182. data/src/core/ext/transport/chttp2/transport/parsing.cc +77 -43
  183. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
  184. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  185. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  186. data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
  187. data/src/core/ext/transport/chttp2/transport/writing.cc +54 -21
  188. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  189. data/src/core/ext/transport/inproc/inproc_transport.cc +93 -86
  190. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  191. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  192. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
  193. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  194. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
  195. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  196. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  197. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  198. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  199. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  200. data/src/core/ext/xds/certificate_provider_store.cc +6 -2
  201. data/src/core/ext/xds/certificate_provider_store.h +10 -1
  202. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  203. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  204. data/src/core/ext/xds/upb_utils.h +1 -2
  205. data/src/core/ext/xds/xds_api.cc +16 -18
  206. data/src/core/ext/xds/xds_api.h +12 -5
  207. data/src/core/ext/xds/xds_bootstrap.cc +39 -26
  208. data/src/core/ext/xds/xds_bootstrap.h +11 -11
  209. data/src/core/ext/xds/xds_certificate_provider.cc +16 -4
  210. data/src/core/ext/xds/xds_certificate_provider.h +17 -2
  211. data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -5
  212. data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
  213. data/src/core/ext/xds/xds_client.cc +121 -46
  214. data/src/core/ext/xds/xds_client.h +19 -4
  215. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  216. data/src/core/ext/xds/xds_client_stats.h +4 -3
  217. data/src/core/ext/xds/xds_cluster.cc +126 -25
  218. data/src/core/ext/xds/xds_cluster.h +12 -1
  219. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
  220. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
  221. data/src/core/ext/xds/xds_common_types.cc +36 -22
  222. data/src/core/ext/xds/xds_common_types.h +12 -4
  223. data/src/core/ext/xds/xds_endpoint.cc +25 -15
  224. data/src/core/ext/xds/xds_endpoint.h +13 -5
  225. data/src/core/ext/xds/xds_http_fault_filter.cc +10 -8
  226. data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
  227. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  228. data/src/core/ext/xds/xds_http_filters.h +3 -3
  229. data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
  230. data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
  231. data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
  232. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  233. data/src/core/ext/xds/xds_listener.cc +70 -42
  234. data/src/core/ext/xds/xds_listener.h +10 -1
  235. data/src/core/ext/xds/xds_resource_type.h +3 -3
  236. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  237. data/src/core/ext/xds/xds_route_config.cc +56 -28
  238. data/src/core/ext/xds/xds_route_config.h +11 -2
  239. data/src/core/ext/xds/xds_routing.cc +16 -0
  240. data/src/core/ext/xds/xds_routing.h +7 -2
  241. data/src/core/ext/xds/xds_server_config_fetcher.cc +56 -7
  242. data/src/core/lib/address_utils/parse_address.cc +5 -8
  243. data/src/core/lib/address_utils/parse_address.h +3 -2
  244. data/src/core/lib/address_utils/sockaddr_utils.cc +60 -26
  245. data/src/core/lib/address_utils/sockaddr_utils.h +9 -4
  246. data/src/core/lib/avl/avl.h +6 -4
  247. data/src/core/lib/backoff/backoff.cc +1 -1
  248. data/src/core/lib/backoff/backoff.h +1 -1
  249. data/src/core/lib/channel/call_finalization.h +4 -0
  250. data/src/core/lib/channel/call_tracer.h +11 -5
  251. data/src/core/lib/channel/channel_args.cc +41 -22
  252. data/src/core/lib/channel/channel_args.h +34 -3
  253. data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
  254. data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
  255. data/src/core/lib/channel/channel_fwd.h +26 -0
  256. data/src/core/lib/channel/channel_stack.cc +45 -7
  257. data/src/core/lib/channel/channel_stack.h +45 -9
  258. data/src/core/lib/channel/channel_stack_builder.cc +9 -19
  259. data/src/core/lib/channel/channel_stack_builder.h +17 -32
  260. data/src/core/lib/channel/channel_stack_builder_impl.cc +38 -43
  261. data/src/core/lib/channel/channel_stack_builder_impl.h +4 -6
  262. data/src/core/lib/channel/channel_trace.cc +8 -13
  263. data/src/core/lib/channel/channel_trace.h +6 -3
  264. data/src/core/lib/channel/channelz.cc +10 -14
  265. data/src/core/lib/channel/channelz.h +15 -7
  266. data/src/core/lib/channel/channelz_registry.cc +11 -19
  267. data/src/core/lib/channel/channelz_registry.h +10 -9
  268. data/src/core/lib/channel/connected_channel.cc +22 -31
  269. data/src/core/lib/channel/connected_channel.h +2 -0
  270. data/src/core/lib/channel/promise_based_filter.cc +451 -190
  271. data/src/core/lib/channel/promise_based_filter.h +162 -27
  272. data/src/core/lib/channel/status_util.cc +2 -0
  273. data/src/core/lib/channel/status_util.h +0 -3
  274. data/src/core/lib/compression/compression.cc +6 -1
  275. data/src/core/lib/compression/compression_internal.cc +48 -16
  276. data/src/core/lib/compression/compression_internal.h +4 -3
  277. data/src/core/lib/compression/message_compress.cc +3 -1
  278. data/src/core/lib/compression/message_compress.h +2 -3
  279. data/src/core/lib/config/core_configuration.cc +3 -0
  280. data/src/core/lib/config/core_configuration.h +2 -1
  281. data/src/core/lib/debug/stats.cc +9 -9
  282. data/src/core/lib/debug/stats.h +2 -1
  283. data/src/core/lib/debug/stats_data.cc +2 -1
  284. data/src/core/lib/debug/stats_data.h +0 -4
  285. data/src/core/lib/debug/trace.h +13 -12
  286. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
  287. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
  288. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
  289. data/src/core/lib/event_engine/event_engine.cc +29 -14
  290. data/src/core/lib/event_engine/event_engine_factory.h +5 -0
  291. data/src/core/lib/event_engine/handle_containers.h +67 -0
  292. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
  293. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
  294. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
  295. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
  296. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
  297. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
  298. data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
  299. data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
  300. data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
  301. data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
  302. data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
  303. data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
  304. data/src/core/lib/event_engine/memory_allocator.cc +12 -4
  305. data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
  306. data/src/core/lib/event_engine/resolved_address.cc +4 -2
  307. data/src/core/lib/event_engine/slice.cc +102 -0
  308. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  309. data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
  310. data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
  311. data/src/core/lib/gpr/log.cc +5 -0
  312. data/src/core/lib/gpr/time_posix.cc +6 -9
  313. data/src/core/lib/gpr/time_windows.cc +10 -7
  314. data/src/core/lib/gpr/tls.h +3 -5
  315. data/src/core/lib/gprpp/bitset.h +5 -1
  316. data/src/core/lib/gprpp/chunked_vector.h +4 -0
  317. data/src/core/lib/gprpp/construct_destruct.h +1 -0
  318. data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
  319. data/src/core/lib/gprpp/examine_stack.h +0 -1
  320. data/src/core/lib/gprpp/fork.cc +3 -6
  321. data/src/core/lib/gprpp/global_config.h +2 -4
  322. data/src/core/lib/gprpp/global_config_env.cc +3 -2
  323. data/src/core/lib/gprpp/global_config_env.h +3 -1
  324. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  325. data/src/core/lib/gprpp/host_port.cc +2 -0
  326. data/src/core/lib/gprpp/manual_constructor.h +0 -68
  327. data/src/core/lib/gprpp/match.h +2 -0
  328. data/src/core/lib/gprpp/memory.h +1 -5
  329. data/src/core/lib/gprpp/orphanable.h +1 -4
  330. data/src/core/lib/gprpp/ref_counted.h +1 -3
  331. data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
  332. data/src/core/lib/gprpp/stat.h +0 -2
  333. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  334. data/src/core/lib/gprpp/status_helper.cc +50 -32
  335. data/src/core/lib/gprpp/status_helper.h +4 -0
  336. data/src/core/lib/gprpp/sync.h +3 -1
  337. data/src/core/lib/gprpp/table.h +10 -0
  338. data/src/core/lib/gprpp/thd.h +2 -5
  339. data/src/core/lib/gprpp/thd_posix.cc +4 -2
  340. data/src/core/lib/gprpp/thd_windows.cc +2 -0
  341. data/src/core/lib/gprpp/time.cc +16 -0
  342. data/src/core/lib/gprpp/time.h +10 -1
  343. data/src/core/lib/gprpp/time_util.cc +4 -0
  344. data/src/core/lib/gprpp/time_util.h +1 -1
  345. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  346. data/src/core/lib/http/format_request.cc +34 -4
  347. data/src/core/lib/http/format_request.h +3 -1
  348. data/src/core/lib/http/httpcli.cc +106 -93
  349. data/src/core/lib/http/httpcli.h +58 -10
  350. data/src/core/lib/http/httpcli_security_connector.cc +19 -8
  351. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  352. data/src/core/lib/http/parser.cc +6 -7
  353. data/src/core/lib/http/parser.h +3 -0
  354. data/src/core/lib/iomgr/call_combiner.cc +2 -2
  355. data/src/core/lib/iomgr/endpoint.cc +4 -4
  356. data/src/core/lib/iomgr/endpoint.h +7 -5
  357. data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
  358. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  359. data/src/core/lib/iomgr/error.cc +11 -9
  360. data/src/core/lib/iomgr/error.h +9 -5
  361. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  362. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  363. data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
  364. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  365. data/src/core/lib/iomgr/ev_posix.cc +55 -96
  366. data/src/core/lib/iomgr/ev_posix.h +5 -3
  367. data/src/core/lib/iomgr/exec_ctx.h +1 -2
  368. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  369. data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
  370. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  371. data/src/core/lib/iomgr/iomgr.cc +7 -1
  372. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
  373. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  374. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  375. data/src/core/lib/iomgr/load_file.cc +1 -1
  376. data/src/core/lib/iomgr/pollset_set.h +1 -2
  377. data/src/core/lib/iomgr/port.h +25 -6
  378. data/src/core/lib/iomgr/resolve_address.cc +8 -0
  379. data/src/core/lib/iomgr/resolve_address.h +21 -14
  380. data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
  381. data/src/core/lib/iomgr/resolve_address_posix.cc +9 -15
  382. data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
  383. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -15
  384. data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
  385. data/src/core/lib/iomgr/sockaddr.h +2 -3
  386. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  387. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  388. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
  389. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  390. data/src/core/lib/iomgr/tcp_client.h +24 -13
  391. data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
  392. data/src/core/lib/iomgr/tcp_client_posix.cc +154 -29
  393. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  394. data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
  395. data/src/core/lib/iomgr/tcp_posix.cc +96 -52
  396. data/src/core/lib/iomgr/tcp_server_posix.cc +33 -19
  397. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +41 -38
  398. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -6
  399. data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
  400. data/src/core/lib/iomgr/tcp_windows.cc +12 -9
  401. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  402. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  403. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  404. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  405. data/src/core/lib/iomgr/work_serializer.h +2 -3
  406. data/src/core/lib/json/json.h +1 -2
  407. data/src/core/lib/json/json_reader.cc +9 -1
  408. data/src/core/lib/json/json_util.cc +7 -0
  409. data/src/core/lib/json/json_util.h +10 -1
  410. data/src/core/lib/json/json_writer.cc +6 -1
  411. data/src/core/lib/matchers/matchers.cc +6 -3
  412. data/src/core/lib/matchers/matchers.h +2 -0
  413. data/src/core/lib/promise/activity.cc +1 -2
  414. data/src/core/lib/promise/activity.h +13 -19
  415. data/src/core/lib/promise/arena_promise.h +11 -1
  416. data/src/core/lib/promise/call_push_pull.h +4 -0
  417. data/src/core/lib/promise/context.h +1 -1
  418. data/src/core/lib/promise/detail/basic_seq.h +2 -2
  419. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  420. data/src/core/lib/promise/latch.h +0 -1
  421. data/src/core/lib/promise/loop.h +2 -0
  422. data/src/core/lib/promise/promise.h +1 -0
  423. data/src/core/lib/promise/race.h +0 -1
  424. data/src/core/lib/promise/seq.h +0 -2
  425. data/src/core/lib/promise/sleep.cc +38 -31
  426. data/src/core/lib/promise/sleep.h +32 -22
  427. data/src/core/lib/promise/try_seq.h +2 -2
  428. data/src/core/lib/resolver/resolver.cc +5 -0
  429. data/src/core/lib/resolver/resolver.h +3 -0
  430. data/src/core/lib/resolver/resolver_factory.h +6 -4
  431. data/src/core/lib/resolver/resolver_registry.cc +2 -9
  432. data/src/core/lib/resolver/resolver_registry.h +12 -1
  433. data/src/core/lib/resolver/server_address.cc +17 -3
  434. data/src/core/lib/resolver/server_address.h +13 -6
  435. data/src/core/lib/resource_quota/api.cc +14 -1
  436. data/src/core/lib/resource_quota/api.h +4 -1
  437. data/src/core/lib/resource_quota/arena.cc +0 -6
  438. data/src/core/lib/resource_quota/arena.h +1 -2
  439. data/src/core/lib/resource_quota/memory_quota.cc +62 -62
  440. data/src/core/lib/resource_quota/memory_quota.h +35 -30
  441. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  442. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  443. data/src/core/lib/resource_quota/thread_quota.h +4 -0
  444. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  445. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  446. data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
  447. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  448. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  449. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  450. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -0
  451. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
  452. data/src/core/lib/security/authorization/matchers.cc +9 -1
  453. data/src/core/lib/security/authorization/matchers.h +7 -0
  454. data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
  455. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  456. data/src/core/lib/security/context/security_context.cc +5 -2
  457. data/src/core/lib/security/context/security_context.h +14 -2
  458. data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -4
  459. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -3
  460. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  461. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  462. data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
  463. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  464. data/src/core/lib/security/credentials/channel_creds_registry.h +7 -1
  465. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  466. data/src/core/lib/security/credentials/composite/composite_credentials.cc +11 -7
  467. data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -6
  468. data/src/core/lib/security/credentials/credentials.cc +4 -8
  469. data/src/core/lib/security/credentials/credentials.h +27 -18
  470. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +108 -9
  471. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +18 -0
  472. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  473. data/src/core/lib/security/credentials/external/external_account_credentials.cc +27 -9
  474. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  475. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
  476. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  477. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +22 -4
  478. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  479. data/src/core/lib/security/credentials/fake/fake_credentials.cc +21 -9
  480. data/src/core/lib/security/credentials/fake/fake_credentials.h +15 -3
  481. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  482. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +51 -24
  483. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +12 -3
  484. data/src/core/lib/security/credentials/iam/iam_credentials.cc +13 -4
  485. data/src/core/lib/security/credentials/iam/iam_credentials.h +12 -2
  486. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +12 -2
  487. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +9 -4
  488. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  489. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  490. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -7
  491. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -2
  492. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
  493. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  494. data/src/core/lib/security/credentials/local/local_credentials.cc +12 -5
  495. data/src/core/lib/security/credentials/local/local_credentials.h +9 -2
  496. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +36 -19
  497. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -4
  498. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -8
  499. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -1
  500. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -2
  501. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +17 -4
  502. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  503. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  504. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
  505. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -11
  506. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +35 -3
  507. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +34 -11
  508. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  509. data/src/core/lib/security/credentials/tls/tls_credentials.cc +17 -2
  510. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -3
  511. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  512. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  513. data/src/core/lib/security/credentials/xds/xds_credentials.cc +20 -4
  514. data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
  515. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
  516. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  517. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +18 -2
  518. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  519. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
  520. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
  521. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  522. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  523. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  524. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
  525. data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
  526. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  527. data/src/core/lib/security/security_connector/security_connector.h +19 -7
  528. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +19 -7
  529. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  530. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  531. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  532. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  533. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
  534. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
  535. data/src/core/lib/security/transport/auth_filters.h +7 -0
  536. data/src/core/lib/security/transport/client_auth_filter.cc +24 -17
  537. data/src/core/lib/security/transport/secure_endpoint.cc +81 -20
  538. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  539. data/src/core/lib/security/transport/security_handshaker.cc +49 -16
  540. data/src/core/lib/security/transport/security_handshaker.h +5 -1
  541. data/src/core/lib/security/transport/server_auth_filter.cc +29 -6
  542. data/src/core/lib/security/util/json_util.cc +3 -2
  543. data/src/core/lib/security/util/json_util.h +0 -2
  544. data/src/core/lib/service_config/service_config.h +4 -8
  545. data/src/core/lib/service_config/service_config_call_data.h +6 -2
  546. data/src/core/lib/service_config/service_config_impl.cc +13 -6
  547. data/src/core/lib/service_config/service_config_impl.h +9 -4
  548. data/src/core/lib/service_config/service_config_parser.cc +8 -2
  549. data/src/core/lib/service_config/service_config_parser.h +7 -0
  550. data/src/core/lib/slice/b64.cc +1 -1
  551. data/src/core/lib/slice/b64.h +2 -0
  552. data/src/core/lib/slice/percent_encoding.cc +4 -1
  553. data/src/core/lib/slice/percent_encoding.h +0 -6
  554. data/src/core/lib/slice/slice.cc +2 -1
  555. data/src/core/lib/slice/slice.h +10 -5
  556. data/src/core/lib/slice/slice_api.cc +1 -1
  557. data/src/core/lib/slice/slice_buffer.cc +79 -23
  558. data/src/core/lib/slice/slice_buffer.h +137 -0
  559. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  560. data/src/core/lib/slice/slice_internal.h +4 -3
  561. data/src/core/lib/slice/slice_refcount.h +2 -3
  562. data/src/core/lib/slice/slice_refcount_base.h +2 -3
  563. data/src/core/lib/slice/slice_string_helpers.cc +0 -16
  564. data/src/core/lib/slice/slice_string_helpers.h +1 -8
  565. data/src/core/lib/surface/builtins.cc +7 -2
  566. data/src/core/lib/surface/byte_buffer.cc +7 -1
  567. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  568. data/src/core/lib/surface/call.cc +90 -137
  569. data/src/core/lib/surface/call.h +21 -3
  570. data/src/core/lib/surface/call_details.cc +4 -4
  571. data/src/core/lib/surface/call_log_batch.cc +7 -1
  572. data/src/core/lib/surface/call_test_only.h +4 -1
  573. data/src/core/lib/surface/channel.cc +179 -242
  574. data/src/core/lib/surface/channel.h +97 -58
  575. data/src/core/lib/surface/channel_init.h +2 -0
  576. data/src/core/lib/surface/channel_ping.cc +8 -2
  577. data/src/core/lib/surface/channel_stack_type.cc +0 -2
  578. data/src/core/lib/surface/channel_stack_type.h +0 -2
  579. data/src/core/lib/surface/completion_queue.cc +29 -20
  580. data/src/core/lib/surface/completion_queue.h +7 -2
  581. data/src/core/lib/surface/completion_queue_factory.cc +1 -0
  582. data/src/core/lib/surface/completion_queue_factory.h +1 -3
  583. data/src/core/lib/surface/event_string.cc +1 -7
  584. data/src/core/lib/surface/event_string.h +1 -1
  585. data/src/core/lib/surface/init.cc +17 -46
  586. data/src/core/lib/surface/init.h +0 -8
  587. data/src/core/lib/surface/lame_client.cc +63 -109
  588. data/src/core/lib/surface/lame_client.h +41 -3
  589. data/src/core/lib/surface/metadata_array.cc +2 -0
  590. data/src/core/lib/surface/server.cc +83 -64
  591. data/src/core/lib/surface/server.h +42 -9
  592. data/src/core/lib/surface/validate_metadata.cc +3 -6
  593. data/src/core/lib/surface/validate_metadata.h +3 -0
  594. data/src/core/lib/surface/version.cc +2 -2
  595. data/src/core/lib/transport/bdp_estimator.cc +3 -1
  596. data/src/core/lib/transport/bdp_estimator.h +2 -3
  597. data/src/core/lib/transport/connectivity_state.cc +6 -4
  598. data/src/core/lib/transport/connectivity_state.h +2 -3
  599. data/src/core/lib/transport/error_utils.cc +16 -8
  600. data/src/core/lib/transport/error_utils.h +5 -1
  601. data/src/core/lib/{channel → transport}/handshaker.cc +12 -7
  602. data/src/core/lib/{channel → transport}/handshaker.h +13 -6
  603. data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
  604. data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
  605. data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
  606. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +28 -14
  607. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
  608. data/src/core/lib/transport/metadata_batch.cc +287 -0
  609. data/src/core/lib/transport/metadata_batch.h +133 -264
  610. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  611. data/src/core/lib/transport/parsed_metadata.h +10 -3
  612. data/src/core/lib/transport/status_conversion.cc +2 -0
  613. data/src/core/lib/transport/status_conversion.h +2 -2
  614. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  615. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  616. data/src/core/lib/transport/timeout_encoding.cc +2 -6
  617. data/src/core/lib/transport/timeout_encoding.h +5 -1
  618. data/src/core/lib/transport/transport.cc +18 -20
  619. data/src/core/lib/transport/transport.h +48 -16
  620. data/src/core/lib/transport/transport_fwd.h +20 -0
  621. data/src/core/lib/transport/transport_impl.h +11 -0
  622. data/src/core/lib/transport/transport_op_string.cc +17 -18
  623. data/src/core/lib/uri/uri_parser.cc +11 -3
  624. data/src/core/lib/uri/uri_parser.h +0 -2
  625. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
  626. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  627. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  628. data/src/core/tsi/fake_transport_security.cc +13 -1
  629. data/src/core/tsi/fake_transport_security.h +6 -0
  630. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
  631. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  632. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
  633. data/src/core/tsi/ssl_transport_security.cc +1 -1
  634. data/src/core/tsi/transport_security_grpc.cc +3 -2
  635. data/src/core/tsi/transport_security_grpc.h +5 -2
  636. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  637. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  638. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  639. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  640. data/src/ruby/ext/grpc/extconf.rb +50 -19
  641. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  642. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
  643. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  644. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  645. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  646. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  647. data/src/ruby/lib/grpc/errors.rb +1 -1
  648. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  649. data/src/ruby/lib/grpc/version.rb +1 -1
  650. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  651. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  652. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  653. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  654. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  655. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  656. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  657. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  658. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  659. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  660. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  661. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  662. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  663. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  664. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  665. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  666. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  667. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  668. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  669. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  670. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  671. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  672. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  673. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  674. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  675. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  676. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  677. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  678. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  679. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  680. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
  681. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  682. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  683. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  684. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  685. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  686. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  687. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  688. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  689. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  690. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  691. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  692. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  693. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  694. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  695. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  696. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  697. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  698. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  699. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  700. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  701. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  702. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  703. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  704. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  705. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  706. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  707. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  708. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  709. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  710. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  711. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  712. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  713. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  714. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  715. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  716. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  717. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  718. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  719. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  720. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  721. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  722. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  723. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  724. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  725. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  726. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  727. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  728. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  729. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  730. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  731. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  732. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  733. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  734. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  735. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  736. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  737. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  738. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  739. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  740. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  741. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  742. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  743. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  744. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  745. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  746. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  747. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  748. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  749. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  750. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  751. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  752. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  753. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  754. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  755. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  756. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  757. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  758. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  759. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  760. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  761. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  762. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  763. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  764. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  765. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  766. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  767. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  768. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  769. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  770. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  771. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  772. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  773. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  774. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  775. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  776. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  777. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  778. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  779. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  780. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  781. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  782. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  783. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  784. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  785. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  786. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  787. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  788. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  789. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  790. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  791. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  792. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  793. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  794. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  795. metadata +69 -38
  796. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  797. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  798. data/src/core/lib/event_engine/sockaddr.h +0 -44
  799. data/src/core/lib/gprpp/capture.h +0 -76
  800. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  801. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  802. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  803. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  804. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
  805. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
  806. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
  807. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
  808. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
  809. data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
  810. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
  811. data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
  812. data/src/core/lib/slice/slice_split.cc +0 -100
  813. data/src/core/lib/slice/slice_split.h +0 -40
  814. data/src/core/lib/transport/byte_stream.cc +0 -164
  815. data/src/core/lib/transport/byte_stream.h +0 -166
  816. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -20,24 +20,25 @@
20
20
 
21
21
  #include "src/core/lib/security/credentials/plugin/plugin_credentials.h"
22
22
 
23
- #include <string.h>
24
-
25
23
  #include <atomic>
24
+ #include <type_traits>
26
25
 
26
+ #include "absl/status/status.h"
27
27
  #include "absl/strings/str_cat.h"
28
+ #include "absl/strings/string_view.h"
28
29
 
29
- #include <grpc/grpc.h>
30
+ #include <grpc/slice.h>
30
31
  #include <grpc/support/alloc.h>
31
32
  #include <grpc/support/log.h>
32
- #include <grpc/support/sync.h>
33
33
 
34
- #include "src/core/lib/gprpp/memory.h"
34
+ #include "src/core/lib/iomgr/error.h"
35
+ #include "src/core/lib/iomgr/exec_ctx.h"
35
36
  #include "src/core/lib/promise/promise.h"
36
- #include "src/core/lib/security/credentials/plugin/plugin_credentials.h"
37
+ #include "src/core/lib/slice/slice.h"
37
38
  #include "src/core/lib/slice/slice_internal.h"
38
- #include "src/core/lib/slice/slice_string_helpers.h"
39
39
  #include "src/core/lib/surface/api_trace.h"
40
40
  #include "src/core/lib/surface/validate_metadata.h"
41
+ #include "src/core/lib/transport/metadata_batch.h"
41
42
 
42
43
  grpc_core::TraceFlag grpc_plugin_credentials_trace(false, "plugin_credentials");
43
44
 
@@ -60,7 +61,10 @@ std::string grpc_plugin_credentials::debug_string() {
60
61
  return debug_str;
61
62
  }
62
63
 
63
- const char* grpc_plugin_credentials::type() const { return "Plugin"; }
64
+ grpc_core::UniqueTypeName grpc_plugin_credentials::type() const {
65
+ static grpc_core::UniqueTypeName::Factory kFactory("Plugin");
66
+ return kFactory.Create();
67
+ }
64
68
 
65
69
  absl::StatusOr<grpc_core::ClientMetadataHandle>
66
70
  grpc_plugin_credentials::PendingRequest::ProcessPluginResult(
@@ -21,8 +21,32 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <stddef.h>
25
+
26
+ #include <atomic>
27
+ #include <string>
28
+ #include <utility>
29
+
30
+ #include "absl/container/inlined_vector.h"
31
+ #include "absl/status/statusor.h"
32
+
33
+ #include <grpc/grpc_security.h>
34
+ #include <grpc/grpc_security_constants.h>
35
+ #include <grpc/impl/codegen/grpc_types.h>
36
+ #include <grpc/status.h>
37
+
38
+ #include "src/core/lib/debug/trace.h"
39
+ #include "src/core/lib/gpr/useful.h"
40
+ #include "src/core/lib/gprpp/ref_counted.h"
41
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
42
+ #include "src/core/lib/gprpp/unique_type_name.h"
43
+ #include "src/core/lib/promise/activity.h"
44
+ #include "src/core/lib/promise/arena_promise.h"
45
+ #include "src/core/lib/promise/poll.h"
24
46
  #include "src/core/lib/security/credentials/call_creds_util.h"
25
47
  #include "src/core/lib/security/credentials/credentials.h"
48
+ #include "src/core/lib/slice/slice_refcount.h"
49
+ #include "src/core/lib/transport/transport.h"
26
50
 
27
51
  extern grpc_core::TraceFlag grpc_plugin_credentials_trace;
28
52
 
@@ -41,7 +65,7 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
41
65
 
42
66
  std::string debug_string() override;
43
67
 
44
- const char* type() const override;
68
+ grpc_core::UniqueTypeName type() const override;
45
69
 
46
70
  private:
47
71
  class PendingRequest : public grpc_core::RefCounted<PendingRequest> {
@@ -22,11 +22,16 @@
22
22
 
23
23
  #include <string.h>
24
24
 
25
+ #include <utility>
26
+
27
+ #include "absl/strings/string_view.h"
28
+
25
29
  #include <grpc/support/alloc.h>
26
30
  #include <grpc/support/log.h>
27
31
  #include <grpc/support/string_util.h>
28
32
 
29
33
  #include "src/core/lib/channel/channel_args.h"
34
+ #include "src/core/lib/debug/trace.h"
30
35
  #include "src/core/lib/security/security_connector/ssl_utils.h"
31
36
  #include "src/core/lib/surface/api_trace.h"
32
37
  #include "src/core/tsi/ssl_transport_security.h"
@@ -82,7 +87,10 @@ grpc_ssl_credentials::create_security_connector(
82
87
  return sc;
83
88
  }
84
89
 
85
- const char* grpc_ssl_credentials::Type() { return "Ssl"; }
90
+ grpc_core::UniqueTypeName grpc_ssl_credentials::Type() {
91
+ static grpc_core::UniqueTypeName::Factory kFactory("Ssl");
92
+ return kFactory.Create();
93
+ }
86
94
 
87
95
  void grpc_ssl_credentials::build_config(
88
96
  const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
@@ -186,7 +194,10 @@ grpc_ssl_server_credentials::create_security_connector(
186
194
  return grpc_ssl_server_security_connector_create(this->Ref());
187
195
  }
188
196
 
189
- const char* grpc_ssl_server_credentials::Type() { return "Ssl"; }
197
+ grpc_core::UniqueTypeName grpc_ssl_server_credentials::Type() {
198
+ static grpc_core::UniqueTypeName::Factory kFactory("Ssl");
199
+ return kFactory.Create();
200
+ }
190
201
 
191
202
  tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs(
192
203
  const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
@@ -20,8 +20,21 @@
20
20
 
21
21
  #include <grpc/support/port_platform.h>
22
22
 
23
+ #include <stddef.h>
24
+
25
+ #include <grpc/grpc.h>
26
+ #include <grpc/grpc_security.h>
27
+ #include <grpc/grpc_security_constants.h>
28
+ #include <grpc/impl/codegen/grpc_types.h>
29
+ #include <grpc/support/log.h>
30
+
31
+ #include "src/core/lib/gpr/useful.h"
32
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
33
+ #include "src/core/lib/gprpp/unique_type_name.h"
23
34
  #include "src/core/lib/security/credentials/credentials.h"
35
+ #include "src/core/lib/security/security_connector/security_connector.h"
24
36
  #include "src/core/lib/security/security_connector/ssl/ssl_security_connector.h"
37
+ #include "src/core/tsi/ssl_transport_security.h"
25
38
 
26
39
  class grpc_ssl_credentials : public grpc_channel_credentials {
27
40
  public:
@@ -37,9 +50,9 @@ class grpc_ssl_credentials : public grpc_channel_credentials {
37
50
  const char* target, const grpc_channel_args* args,
38
51
  grpc_channel_args** new_args) override;
39
52
 
40
- static const char* Type();
53
+ static grpc_core::UniqueTypeName Type();
41
54
 
42
- const char* type() const override { return Type(); }
55
+ grpc_core::UniqueTypeName type() const override { return Type(); }
43
56
 
44
57
  // TODO(mattstev): Plumb to wrapped languages. Until then, setting the TLS
45
58
  // version should be done for testing purposes only.
@@ -80,9 +93,9 @@ class grpc_ssl_server_credentials final : public grpc_server_credentials {
80
93
  grpc_core::RefCountedPtr<grpc_server_security_connector>
81
94
  create_security_connector(const grpc_channel_args* /* args */) override;
82
95
 
83
- static const char* Type();
96
+ static grpc_core::UniqueTypeName Type();
84
97
 
85
- const char* type() const override { return Type(); }
98
+ grpc_core::UniqueTypeName type() const override { return Type(); }
86
99
 
87
100
  bool has_cert_config_fetcher() const {
88
101
  return certificate_config_fetcher_.cb != nullptr;
@@ -18,12 +18,11 @@
18
18
 
19
19
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
20
20
 
21
- #include <stdlib.h>
22
- #include <string.h>
21
+ #include <algorithm>
22
+ #include <vector>
23
23
 
24
- #include <grpc/support/alloc.h>
24
+ #include <grpc/grpc_security.h>
25
25
  #include <grpc/support/log.h>
26
- #include <grpc/support/string_util.h>
27
26
 
28
27
  void grpc_tls_certificate_distributor::SetKeyMaterials(
29
28
  const std::string& cert_name, absl::optional<std::string> pem_root_certs,
@@ -154,7 +153,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
154
153
  };
155
154
 
156
155
  void grpc_tls_certificate_distributor::SetError(grpc_error_handle error) {
157
- GPR_ASSERT(error != GRPC_ERROR_NONE);
156
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
158
157
  grpc_core::MutexLock lock(&mu_);
159
158
  for (const auto& watcher : watchers_) {
160
159
  const auto watcher_ptr = watcher.first;
@@ -232,7 +231,8 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates(
232
231
  std::move(updated_identity_pairs));
233
232
  }
234
233
  // Notify this watcher if the certs it is watching already had some errors.
235
- if (root_error != GRPC_ERROR_NONE || identity_error != GRPC_ERROR_NONE) {
234
+ if (!GRPC_ERROR_IS_NONE(root_error) ||
235
+ !GRPC_ERROR_IS_NONE(identity_error)) {
236
236
  watcher_ptr->OnError(GRPC_ERROR_REF(root_error),
237
237
  GRPC_ERROR_REF(identity_error));
238
238
  }
@@ -19,14 +19,20 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
+ #include <functional>
23
+ #include <map>
24
+ #include <memory>
25
+ #include <set>
26
+ #include <string>
22
27
  #include <utility>
23
28
 
24
- #include "absl/container/inlined_vector.h"
29
+ #include "absl/base/thread_annotations.h"
30
+ #include "absl/strings/string_view.h"
25
31
  #include "absl/types/optional.h"
26
32
 
27
- #include <grpc/grpc_security.h>
28
-
29
33
  #include "src/core/lib/gprpp/ref_counted.h"
34
+ #include "src/core/lib/gprpp/sync.h"
35
+ #include "src/core/lib/iomgr/error.h"
30
36
  #include "src/core/lib/security/security_connector/ssl_utils.h"
31
37
 
32
38
  struct grpc_tls_identity_pairs {
@@ -18,14 +18,33 @@
18
18
 
19
19
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
20
20
 
21
- #include <openssl/ssl.h>
21
+ #include <stdint.h>
22
+ #include <time.h>
22
23
 
23
- #include <grpc/support/alloc.h>
24
+ #include <algorithm>
25
+ #include <utility>
26
+ #include <vector>
27
+
28
+ #include <openssl/bio.h>
29
+ #include <openssl/crypto.h>
30
+ #include <openssl/evp.h>
31
+ #include <openssl/pem.h>
32
+ #include <openssl/x509.h>
33
+
34
+ #include "absl/status/status.h"
35
+
36
+ #include <grpc/impl/codegen/gpr_types.h>
37
+ #include <grpc/slice.h>
24
38
  #include <grpc/support/log.h>
25
- #include <grpc/support/string_util.h>
39
+ #include <grpc/support/time.h>
26
40
 
41
+ #include "src/core/lib/debug/trace.h"
27
42
  #include "src/core/lib/gprpp/stat.h"
43
+ #include "src/core/lib/iomgr/error.h"
44
+ #include "src/core/lib/iomgr/exec_ctx.h"
45
+ #include "src/core/lib/iomgr/load_file.h"
28
46
  #include "src/core/lib/slice/slice_internal.h"
47
+ #include "src/core/lib/slice/slice_refcount.h"
29
48
  #include "src/core/lib/surface/api_trace.h"
30
49
 
31
50
  namespace grpc_core {
@@ -71,8 +90,8 @@ StaticDataCertificateProvider::StaticDataCertificateProvider(
71
90
  identity_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
72
91
  "Unable to get latest identity certificates.");
73
92
  }
74
- if (root_cert_error != GRPC_ERROR_NONE ||
75
- identity_cert_error != GRPC_ERROR_NONE) {
93
+ if (!GRPC_ERROR_IS_NONE(root_cert_error) ||
94
+ !GRPC_ERROR_IS_NONE(identity_cert_error)) {
76
95
  distributor_->SetErrorForCert(cert_name, root_cert_error,
77
96
  identity_cert_error);
78
97
  }
@@ -85,6 +104,11 @@ StaticDataCertificateProvider::~StaticDataCertificateProvider() {
85
104
  distributor_->SetWatchStatusCallback(nullptr);
86
105
  }
87
106
 
107
+ UniqueTypeName StaticDataCertificateProvider::type() const {
108
+ static UniqueTypeName::Factory kFactory("StaticData");
109
+ return kFactory.Create();
110
+ }
111
+
88
112
  namespace {
89
113
 
90
114
  gpr_timespec TimeoutSecondsToDeadline(int64_t seconds) {
@@ -161,8 +185,8 @@ FileWatcherCertificateProvider::FileWatcherCertificateProvider(
161
185
  identity_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
162
186
  "Unable to get latest identity certificates.");
163
187
  }
164
- if (root_cert_error != GRPC_ERROR_NONE ||
165
- identity_cert_error != GRPC_ERROR_NONE) {
188
+ if (!GRPC_ERROR_IS_NONE(root_cert_error) ||
189
+ !GRPC_ERROR_IS_NONE(identity_cert_error)) {
166
190
  distributor_->SetErrorForCert(cert_name, root_cert_error,
167
191
  identity_cert_error);
168
192
  }
@@ -177,6 +201,11 @@ FileWatcherCertificateProvider::~FileWatcherCertificateProvider() {
177
201
  refresh_thread_.Join();
178
202
  }
179
203
 
204
+ UniqueTypeName FileWatcherCertificateProvider::type() const {
205
+ static UniqueTypeName::Factory kFactory("FileWatcher");
206
+ return kFactory.Create();
207
+ }
208
+
180
209
  void FileWatcherCertificateProvider::ForceUpdate() {
181
210
  absl::optional<std::string> root_certificate;
182
211
  absl::optional<PemKeyCertPairList> pem_key_cert_pairs;
@@ -260,7 +289,7 @@ FileWatcherCertificateProvider::ReadRootCertificatesFromFile(
260
289
  grpc_slice root_slice = grpc_empty_slice();
261
290
  grpc_error_handle root_error =
262
291
  grpc_load_file(root_cert_full_path.c_str(), 0, &root_slice);
263
- if (root_error != GRPC_ERROR_NONE) {
292
+ if (!GRPC_ERROR_IS_NONE(root_error)) {
264
293
  gpr_log(GPR_ERROR, "Reading file %s failed: %s",
265
294
  root_cert_full_path.c_str(),
266
295
  grpc_error_std_string(root_error).c_str());
@@ -319,7 +348,7 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles(
319
348
  SliceWrapper key_slice, cert_slice;
320
349
  grpc_error_handle key_error =
321
350
  grpc_load_file(private_key_path.c_str(), 0, &key_slice.slice);
322
- if (key_error != GRPC_ERROR_NONE) {
351
+ if (!GRPC_ERROR_IS_NONE(key_error)) {
323
352
  gpr_log(GPR_ERROR, "Reading file %s failed: %s. Start retrying...",
324
353
  private_key_path.c_str(),
325
354
  grpc_error_std_string(key_error).c_str());
@@ -328,7 +357,7 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles(
328
357
  }
329
358
  grpc_error_handle cert_error =
330
359
  grpc_load_file(identity_certificate_path.c_str(), 0, &cert_slice.slice);
331
- if (cert_error != GRPC_ERROR_NONE) {
360
+ if (!GRPC_ERROR_IS_NONE(cert_error)) {
332
361
  gpr_log(GPR_ERROR, "Reading file %s failed: %s. Start retrying...",
333
362
  identity_certificate_path.c_str(),
334
363
  grpc_error_std_string(cert_error).c_str());
@@ -19,19 +19,25 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include <string.h>
22
+ #include <map>
23
+ #include <string>
23
24
 
24
- #include "absl/container/inlined_vector.h"
25
+ #include "absl/base/thread_annotations.h"
25
26
  #include "absl/status/statusor.h"
27
+ #include "absl/strings/string_view.h"
28
+ #include "absl/types/optional.h"
26
29
 
27
30
  #include <grpc/grpc_security.h>
31
+ #include <grpc/support/log.h>
32
+ #include <grpc/support/sync.h>
28
33
 
29
34
  #include "src/core/lib/gpr/useful.h"
30
35
  #include "src/core/lib/gprpp/ref_counted.h"
31
36
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
37
+ #include "src/core/lib/gprpp/sync.h"
32
38
  #include "src/core/lib/gprpp/thd.h"
33
- #include "src/core/lib/iomgr/load_file.h"
34
- #include "src/core/lib/iomgr/pollset_set.h"
39
+ #include "src/core/lib/gprpp/unique_type_name.h"
40
+ #include "src/core/lib/iomgr/iomgr_fwd.h"
35
41
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
36
42
  #include "src/core/lib/security/security_connector/ssl_utils.h"
37
43
 
@@ -62,10 +68,7 @@ struct grpc_tls_certificate_provider
62
68
  // used but they compare as equal (assuming other channel args match).
63
69
  int Compare(const grpc_tls_certificate_provider* other) const {
64
70
  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());
71
+ int r = type().Compare(other->type());
69
72
  if (r != 0) return r;
70
73
  return CompareImpl(other);
71
74
  }
@@ -74,7 +77,7 @@ struct grpc_tls_certificate_provider
74
77
  // implementation for down-casting purposes. Every provider implementation
75
78
  // should use a unique string instance, which should be returned by all
76
79
  // instances of that provider implementation.
77
- virtual const char* type() const = 0;
80
+ virtual grpc_core::UniqueTypeName type() const = 0;
78
81
 
79
82
  private:
80
83
  // Implementation for `Compare` method intended to be overridden by
@@ -99,7 +102,7 @@ class StaticDataCertificateProvider final
99
102
  return distributor_;
100
103
  }
101
104
 
102
- const char* type() const override { return "StaticData"; }
105
+ UniqueTypeName type() const override;
103
106
 
104
107
  private:
105
108
  struct WatcherInfo {
@@ -138,7 +141,7 @@ class FileWatcherCertificateProvider final
138
141
  return distributor_;
139
142
  }
140
143
 
141
- const char* type() const override { return "FileWatcher"; }
144
+ UniqueTypeName type() const override;
142
145
 
143
146
  private:
144
147
  struct WatcherInfo {
@@ -18,14 +18,21 @@
18
18
 
19
19
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h"
20
20
 
21
+ #include <string.h>
22
+
23
+ #include <string>
24
+ #include <utility>
25
+
26
+ #include "absl/strings/string_view.h"
27
+
21
28
  #include <grpc/support/alloc.h>
22
29
  #include <grpc/support/log.h>
23
30
  #include <grpc/support/string_util.h>
24
31
 
32
+ #include "src/core/lib/debug/trace.h"
25
33
  #include "src/core/lib/gprpp/host_port.h"
26
- #include "src/core/lib/gprpp/stat.h"
34
+ #include "src/core/lib/iomgr/exec_ctx.h"
27
35
  #include "src/core/lib/security/credentials/tls/tls_utils.h"
28
- #include "src/core/lib/slice/slice_internal.h"
29
36
  #include "src/core/lib/surface/api_trace.h"
30
37
 
31
38
  namespace grpc_core {
@@ -60,6 +67,11 @@ bool ExternalCertificateVerifier::Verify(
60
67
  return is_done;
61
68
  }
62
69
 
70
+ UniqueTypeName ExternalCertificateVerifier::type() const {
71
+ static UniqueTypeName::Factory kFactory("External");
72
+ return kFactory.Create();
73
+ }
74
+
63
75
  void ExternalCertificateVerifier::OnVerifyDone(
64
76
  grpc_tls_custom_verification_check_request* request, void* callback_arg,
65
77
  grpc_status_code status, const char* error_details) {
@@ -84,6 +96,15 @@ void ExternalCertificateVerifier::OnVerifyDone(
84
96
  }
85
97
  }
86
98
 
99
+ //
100
+ // NoOpCertificateVerifier
101
+ //
102
+
103
+ UniqueTypeName NoOpCertificateVerifier::type() const {
104
+ static UniqueTypeName::Factory kFactory("NoOp");
105
+ return kFactory.Create();
106
+ }
107
+
87
108
  //
88
109
  // HostNameCertificateVerifier
89
110
  //
@@ -142,7 +163,8 @@ bool HostNameCertificateVerifier::Verify(
142
163
  const char* common_name = request->peer_info.common_name;
143
164
  // We are using the target name sent from the client as a matcher to match
144
165
  // against identity name on the peer cert.
145
- if (VerifySubjectAlternativeName(common_name, std::string(target_host))) {
166
+ if (common_name != nullptr &&
167
+ VerifySubjectAlternativeName(common_name, std::string(target_host))) {
146
168
  return true; // synchronous check
147
169
  }
148
170
  }
@@ -151,6 +173,11 @@ bool HostNameCertificateVerifier::Verify(
151
173
  return true; // synchronous check
152
174
  }
153
175
 
176
+ UniqueTypeName HostNameCertificateVerifier::type() const {
177
+ static UniqueTypeName::Factory kFactory("Hostname");
178
+ return kFactory.Create();
179
+ }
180
+
154
181
  } // namespace grpc_core
155
182
 
156
183
  //
@@ -194,6 +221,11 @@ grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_external_create(
194
221
  return new grpc_core::ExternalCertificateVerifier(external_verifier);
195
222
  }
196
223
 
224
+ grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_no_op_create() {
225
+ grpc_core::ExecCtx exec_ctx;
226
+ return new grpc_core::NoOpCertificateVerifier();
227
+ }
228
+
197
229
  grpc_tls_certificate_verifier*
198
230
  grpc_tls_certificate_verifier_host_name_create() {
199
231
  grpc_core::ExecCtx exec_ctx;
@@ -19,20 +19,20 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include <string.h>
22
+ #include <functional>
23
+ #include <map>
23
24
 
25
+ #include "absl/base/thread_annotations.h"
24
26
  #include "absl/status/status.h"
25
27
 
26
28
  #include <grpc/grpc_security.h>
29
+ #include <grpc/status.h>
30
+ #include <grpc/support/log.h>
27
31
 
28
32
  #include "src/core/lib/gpr/useful.h"
29
33
  #include "src/core/lib/gprpp/ref_counted.h"
30
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
31
- #include "src/core/lib/gprpp/thd.h"
32
- #include "src/core/lib/iomgr/load_file.h"
33
- #include "src/core/lib/iomgr/pollset_set.h"
34
- #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
35
- #include "src/core/lib/security/security_connector/ssl_utils.h"
34
+ #include "src/core/lib/gprpp/sync.h"
35
+ #include "src/core/lib/gprpp/unique_type_name.h"
36
36
 
37
37
  // An abstraction of the verifier that all verifier subclasses should extend.
38
38
  struct grpc_tls_certificate_verifier
@@ -57,7 +57,7 @@ struct grpc_tls_certificate_verifier
57
57
  // verifiers as effectively the same.
58
58
  int Compare(const grpc_tls_certificate_verifier* other) const {
59
59
  GPR_ASSERT(other != nullptr);
60
- int r = grpc_core::QsortCompare(type(), other->type());
60
+ int r = type().Compare(other->type());
61
61
  if (r != 0) return r;
62
62
  return CompareImpl(other);
63
63
  }
@@ -66,7 +66,7 @@ struct grpc_tls_certificate_verifier
66
66
  // implementation for down-casting purposes. Every verifier implementation
67
67
  // should use a unique string instance, which should be returned by all
68
68
  // instances of that verifier implementation.
69
- virtual const char* type() const = 0;
69
+ virtual grpc_core::UniqueTypeName type() const = 0;
70
70
 
71
71
  private:
72
72
  // Implementation for `Compare` method intended to be overridden by
@@ -99,7 +99,7 @@ class ExternalCertificateVerifier : public grpc_tls_certificate_verifier {
99
99
  external_verifier_->cancel(external_verifier_->user_data, request);
100
100
  }
101
101
 
102
- const char* type() const override { return "External"; }
102
+ UniqueTypeName type() const override;
103
103
 
104
104
  private:
105
105
  int CompareImpl(const grpc_tls_certificate_verifier* other) const override {
@@ -121,6 +121,29 @@ class ExternalCertificateVerifier : public grpc_tls_certificate_verifier {
121
121
  request_map_ ABSL_GUARDED_BY(mu_);
122
122
  };
123
123
 
124
+ // An internal verifier that won't perform any post-handshake checks.
125
+ // Note: using this solely without any other authentication mechanisms on the
126
+ // peer identity will leave your applications to the MITM(Man-In-The-Middle)
127
+ // attacks. Users should avoid doing so in production environments.
128
+ class NoOpCertificateVerifier : public grpc_tls_certificate_verifier {
129
+ public:
130
+ bool Verify(grpc_tls_custom_verification_check_request*,
131
+ std::function<void(absl::Status)>, absl::Status*) override {
132
+ return true; // synchronous check
133
+ };
134
+ void Cancel(grpc_tls_custom_verification_check_request*) override {}
135
+
136
+ UniqueTypeName type() const override;
137
+
138
+ private:
139
+ int CompareImpl(
140
+ const grpc_tls_certificate_verifier* /* other */) const override {
141
+ // No differentiating factor between different NoOpCertificateVerifier
142
+ // objects.
143
+ return 0;
144
+ }
145
+ };
146
+
124
147
  // An internal verifier that will perform hostname verification check.
125
148
  class HostNameCertificateVerifier : public grpc_tls_certificate_verifier {
126
149
  public:
@@ -129,7 +152,7 @@ class HostNameCertificateVerifier : public grpc_tls_certificate_verifier {
129
152
  absl::Status* sync_status) override;
130
153
  void Cancel(grpc_tls_custom_verification_check_request*) override {}
131
154
 
132
- const char* type() const override { return "Hostname"; }
155
+ UniqueTypeName type() const override;
133
156
 
134
157
  private:
135
158
  int CompareImpl(
@@ -20,14 +20,13 @@
20
20
 
21
21
  #include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
22
22
 
23
- #include <stdlib.h>
24
- #include <string.h>
25
-
26
- #include <grpc/support/alloc.h>
27
23
  #include <grpc/support/log.h>
28
- #include <grpc/support/string_util.h>
29
24
 
25
+ #include "src/core/lib/debug/trace.h"
26
+ #include "src/core/lib/gprpp/debug_location.h"
27
+ #include "src/core/lib/iomgr/exec_ctx.h"
30
28
  #include "src/core/lib/surface/api_trace.h"
29
+ #include "src/core/tsi/ssl_transport_security.h"
31
30
 
32
31
  /** -- Wrapper APIs declared in grpc_security.h -- **/
33
32
 
@@ -21,15 +21,20 @@
21
21
  #include "src/core/lib/security/credentials/tls/tls_credentials.h"
22
22
 
23
23
  #include <cstring>
24
+ #include <utility>
25
+
26
+ #include "absl/strings/string_view.h"
24
27
 
25
28
  #include <grpc/grpc.h>
26
- #include <grpc/support/alloc.h>
29
+ #include <grpc/grpc_security_constants.h>
27
30
  #include <grpc/support/log.h>
28
- #include <grpc/support/string_util.h>
29
31
 
30
32
  #include "src/core/lib/channel/channel_args.h"
33
+ #include "src/core/lib/gpr/useful.h"
31
34
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h"
35
+ #include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
32
36
  #include "src/core/lib/security/security_connector/tls/tls_security_connector.h"
37
+ #include "src/core/tsi/ssl_transport_security.h"
33
38
 
34
39
  namespace {
35
40
 
@@ -106,6 +111,11 @@ TlsCredentials::create_security_connector(
106
111
  return sc;
107
112
  }
108
113
 
114
+ grpc_core::UniqueTypeName TlsCredentials::type() const {
115
+ static grpc_core::UniqueTypeName::Factory kFactory("Tls");
116
+ return kFactory.Create();
117
+ }
118
+
109
119
  int TlsCredentials::cmp_impl(const grpc_channel_credentials* other) const {
110
120
  const TlsCredentials* o = static_cast<const TlsCredentials*>(other);
111
121
  if (*options_ == *o->options_) return 0;
@@ -126,6 +136,11 @@ TlsServerCredentials::create_security_connector(
126
136
  CreateTlsServerSecurityConnector(this->Ref(), options_);
127
137
  }
128
138
 
139
+ grpc_core::UniqueTypeName TlsServerCredentials::type() const {
140
+ static grpc_core::UniqueTypeName::Factory kFactory("Tls");
141
+ return kFactory.Create();
142
+ }
143
+
129
144
  /** -- Wrapper APIs declared in grpc_security.h -- **/
130
145
 
131
146
  grpc_channel_credentials* grpc_tls_credentials_create(