grpc 1.43.1 → 1.44.0.pre2

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 (382) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +84 -64
  3. data/include/grpc/grpc_security.h +10 -0
  4. data/include/grpc/impl/codegen/compression_types.h +0 -2
  5. data/include/grpc/impl/codegen/grpc_types.h +6 -0
  6. data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
  7. data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
  8. data/src/core/ext/filters/client_channel/client_channel.h +8 -8
  9. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  10. data/src/core/ext/filters/client_channel/config_selector.h +4 -4
  11. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
  13. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  14. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
  16. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
  26. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
  27. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
  28. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
  29. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
  35. data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
  36. data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
  37. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  45. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
  46. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
  48. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
  49. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  50. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
  51. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
  52. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  53. data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
  54. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
  55. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  56. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
  57. data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
  58. data/src/core/ext/filters/client_channel/subchannel.h +2 -3
  59. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
  60. data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
  61. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  62. data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
  63. data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
  64. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
  65. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
  66. data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
  67. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  68. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  69. data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
  70. data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
  71. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
  72. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
  73. data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
  74. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
  75. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
  76. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
  77. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
  78. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
  79. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
  80. data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
  81. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
  82. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
  83. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
  84. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  85. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
  86. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
  87. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
  88. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
  89. data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
  90. data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
  91. data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
  92. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  93. data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
  94. data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
  95. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
  96. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  99. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
  100. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  101. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  102. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  103. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
  104. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
  105. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
  106. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
  107. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  108. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  109. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
  110. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
  111. data/src/core/ext/xds/upb_utils.h +65 -0
  112. data/src/core/ext/xds/xds_api.cc +81 -3458
  113. data/src/core/ext/xds/xds_api.h +56 -611
  114. data/src/core/ext/xds/xds_bootstrap.cc +189 -125
  115. data/src/core/ext/xds/xds_bootstrap.h +20 -15
  116. data/src/core/ext/xds/xds_certificate_provider.h +1 -0
  117. data/src/core/ext/xds/xds_channel_creds.cc +108 -0
  118. data/src/core/ext/xds/xds_channel_creds.h +50 -0
  119. data/src/core/ext/xds/xds_client.cc +584 -994
  120. data/src/core/ext/xds/xds_client.h +78 -135
  121. data/src/core/ext/xds/xds_cluster.cc +451 -0
  122. data/src/core/ext/xds/xds_cluster.h +111 -0
  123. data/src/core/ext/xds/xds_common_types.cc +388 -0
  124. data/src/core/ext/xds/xds_common_types.h +110 -0
  125. data/src/core/ext/xds/xds_endpoint.cc +364 -0
  126. data/src/core/ext/xds/xds_endpoint.h +135 -0
  127. data/src/core/ext/xds/xds_http_filters.cc +5 -0
  128. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  129. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  130. data/src/core/ext/xds/xds_listener.cc +1036 -0
  131. data/src/core/ext/xds/xds_listener.h +220 -0
  132. data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
  133. data/src/core/ext/xds/xds_resource_type.h +98 -0
  134. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  135. data/src/core/ext/xds/xds_route_config.cc +993 -0
  136. data/src/core/ext/xds/xds_route_config.h +215 -0
  137. data/src/core/ext/xds/xds_routing.cc +11 -8
  138. data/src/core/ext/xds/xds_routing.h +8 -5
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
  140. data/src/core/lib/address_utils/parse_address.cc +20 -0
  141. data/src/core/lib/address_utils/parse_address.h +5 -0
  142. data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
  143. data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
  144. data/src/core/lib/backoff/backoff.cc +4 -30
  145. data/src/core/lib/backoff/backoff.h +3 -3
  146. data/src/core/lib/channel/channel_args.cc +0 -1
  147. data/src/core/lib/channel/channel_stack.cc +8 -0
  148. data/src/core/lib/channel/channel_stack.h +1 -1
  149. data/src/core/lib/channel/channel_stack_builder.cc +5 -9
  150. data/src/core/lib/channel/channel_stack_builder.h +4 -7
  151. data/src/core/lib/channel/channelz.cc +1 -0
  152. data/src/core/lib/compression/compression.cc +19 -111
  153. data/src/core/lib/compression/compression_internal.cc +142 -202
  154. data/src/core/lib/compression/compression_internal.h +64 -69
  155. data/src/core/lib/compression/message_compress.cc +11 -11
  156. data/src/core/lib/compression/message_compress.h +2 -2
  157. data/src/core/lib/gpr/useful.h +4 -0
  158. data/src/core/lib/gprpp/bitset.h +7 -0
  159. data/src/core/lib/gprpp/chunked_vector.h +45 -3
  160. data/src/core/lib/gprpp/status_helper.cc +20 -28
  161. data/src/core/lib/gprpp/status_helper.h +6 -19
  162. data/src/core/lib/gprpp/table.h +11 -0
  163. data/src/core/lib/http/httpcli.cc +37 -46
  164. data/src/core/lib/http/httpcli.h +3 -15
  165. data/src/core/lib/iomgr/call_combiner.cc +15 -4
  166. data/src/core/lib/iomgr/closure.h +29 -9
  167. data/src/core/lib/iomgr/combiner.cc +25 -3
  168. data/src/core/lib/iomgr/error.cc +2 -0
  169. data/src/core/lib/iomgr/error.h +3 -0
  170. data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
  171. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
  172. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
  173. data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
  174. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  175. data/src/core/lib/iomgr/exec_ctx.cc +22 -9
  176. data/src/core/lib/iomgr/executor.cc +10 -1
  177. data/src/core/lib/iomgr/fork_posix.cc +3 -2
  178. data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
  179. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  180. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  181. data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
  182. data/src/core/lib/iomgr/port.h +2 -2
  183. data/src/core/lib/iomgr/resolve_address.cc +5 -24
  184. data/src/core/lib/iomgr/resolve_address.h +47 -44
  185. data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
  186. data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
  187. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  188. data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
  189. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  190. data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
  191. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  192. data/src/core/lib/iomgr/resolved_address.h +39 -0
  193. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
  194. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
  195. data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
  196. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
  197. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
  198. data/src/core/lib/matchers/matchers.cc +1 -1
  199. data/src/core/lib/promise/activity.h +49 -20
  200. data/src/core/lib/promise/detail/status.h +5 -0
  201. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
  202. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
  203. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
  204. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
  205. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
  206. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
  207. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
  208. data/src/core/lib/resource_quota/api.h +0 -1
  209. data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
  210. data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
  211. data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
  212. data/src/core/lib/security/authorization/evaluate_args.h +1 -0
  213. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  214. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  215. data/src/core/lib/security/authorization/matchers.cc +227 -0
  216. data/src/core/lib/security/authorization/matchers.h +211 -0
  217. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  218. data/src/core/lib/security/authorization/rbac_policy.h +170 -0
  219. data/src/core/lib/security/context/security_context.cc +4 -2
  220. data/src/core/lib/security/context/security_context.h +1 -1
  221. data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
  222. data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
  223. data/src/core/lib/security/credentials/credentials.h +10 -20
  224. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
  225. data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
  226. data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
  227. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
  228. data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
  229. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
  230. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
  231. data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
  232. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
  233. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
  234. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
  235. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
  236. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
  237. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
  238. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
  239. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
  240. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
  241. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
  242. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
  243. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
  244. data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
  245. data/src/core/lib/security/security_connector/security_connector.cc +0 -4
  246. data/src/core/lib/security/security_connector/security_connector.h +5 -1
  247. data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
  248. data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
  249. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
  250. data/src/core/lib/security/transport/auth_filters.h +7 -0
  251. data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
  252. data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
  253. data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
  254. data/src/core/{ext → lib}/service_config/service_config.h +4 -4
  255. data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
  256. data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
  257. data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
  258. data/src/core/lib/slice/slice.cc +3 -1
  259. data/src/core/lib/slice/slice.h +43 -13
  260. data/src/core/lib/slice/slice_intern.cc +3 -101
  261. data/src/core/lib/slice/slice_internal.h +1 -2
  262. data/src/core/lib/slice/slice_refcount.h +4 -13
  263. data/src/core/lib/slice/slice_refcount_base.h +0 -16
  264. data/src/core/lib/surface/call.cc +140 -382
  265. data/src/core/lib/surface/call.h +4 -4
  266. data/src/core/lib/surface/channel.cc +42 -44
  267. data/src/core/lib/surface/channel.h +4 -4
  268. data/src/core/lib/surface/init.cc +0 -2
  269. data/src/core/lib/surface/lame_client.cc +0 -1
  270. data/src/core/lib/surface/server.cc +12 -29
  271. data/src/core/lib/surface/server.h +2 -2
  272. data/src/core/lib/surface/version.cc +2 -2
  273. data/src/core/lib/transport/error_utils.h +14 -0
  274. data/src/core/lib/transport/metadata_batch.h +799 -717
  275. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  276. data/src/core/lib/transport/parsed_metadata.h +95 -92
  277. data/src/core/lib/transport/timeout_encoding.cc +200 -66
  278. data/src/core/lib/transport/timeout_encoding.h +40 -10
  279. data/src/core/lib/transport/transport.h +1 -1
  280. data/src/core/lib/transport/transport_op_string.cc +6 -39
  281. data/src/core/lib/uri/uri_parser.cc +223 -53
  282. data/src/core/lib/uri/uri_parser.h +36 -23
  283. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
  284. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  285. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  286. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
  287. data/src/core/tsi/ssl_transport_security.cc +53 -13
  288. data/src/core/tsi/ssl_transport_security.h +18 -6
  289. data/src/ruby/ext/grpc/extconf.rb +10 -3
  290. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  291. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  292. data/src/ruby/lib/grpc/version.rb +1 -1
  293. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  294. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  295. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  296. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  297. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  298. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  299. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  300. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  301. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  302. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  303. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  304. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  305. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  306. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  307. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  308. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  309. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  310. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  311. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  312. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  313. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  314. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  315. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  316. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  317. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  318. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  319. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  320. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  321. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  322. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  323. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  324. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  325. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  326. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  327. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  328. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  329. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  330. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  331. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  332. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  333. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  334. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  335. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  336. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  337. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  338. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  339. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  340. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  341. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  342. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  343. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  344. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  345. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  346. data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
  347. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  348. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  349. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  350. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  351. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  352. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  353. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
  354. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  355. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
  356. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  357. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
  358. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  359. data/third_party/xxhash/xxhash.h +607 -352
  360. metadata +149 -77
  361. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  362. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  363. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  364. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  365. data/src/core/lib/compression/compression_args.cc +0 -140
  366. data/src/core/lib/compression/compression_args.h +0 -58
  367. data/src/core/lib/compression/stream_compression.cc +0 -81
  368. data/src/core/lib/compression/stream_compression.h +0 -117
  369. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  370. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  371. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  372. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  373. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  374. data/src/core/lib/slice/static_slice.cc +0 -377
  375. data/src/core/lib/slice/static_slice.h +0 -300
  376. data/src/core/lib/transport/metadata.cc +0 -714
  377. data/src/core/lib/transport/metadata.h +0 -449
  378. data/src/core/lib/transport/metadata_batch.cc +0 -99
  379. data/src/core/lib/transport/static_metadata.cc +0 -1032
  380. data/src/core/lib/transport/static_metadata.h +0 -322
  381. data/src/core/lib/transport/status_metadata.cc +0 -63
  382. data/src/core/lib/transport/status_metadata.h +0 -48
@@ -37,6 +37,7 @@
37
37
  #include <grpc/support/log.h>
38
38
  #include <grpc/support/string_util.h>
39
39
 
40
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
40
41
  #include "src/core/lib/gpr/string.h"
41
42
  #include "src/core/lib/gprpp/host_port.h"
42
43
  #include "src/core/lib/iomgr/grpc_if_nametoindex.h"
@@ -318,3 +319,22 @@ uint16_t grpc_strhtons(const char* port) {
318
319
  }
319
320
  return htons(static_cast<unsigned short>(atoi(port)));
320
321
  }
322
+
323
+ grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out,
324
+ const char* addr, int port) {
325
+ memset(out, 0, sizeof(grpc_resolved_address));
326
+ grpc_sockaddr_in6* addr6 = reinterpret_cast<grpc_sockaddr_in6*>(out->addr);
327
+ grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(out->addr);
328
+ if (grpc_inet_pton(GRPC_AF_INET6, addr, &addr6->sin6_addr) == 1) {
329
+ addr6->sin6_family = GRPC_AF_INET6;
330
+ out->len = sizeof(grpc_sockaddr_in6);
331
+ } else if (grpc_inet_pton(GRPC_AF_INET, addr, &addr4->sin_addr) == 1) {
332
+ addr4->sin_family = GRPC_AF_INET;
333
+ out->len = sizeof(grpc_sockaddr_in);
334
+ } else {
335
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(
336
+ absl::StrCat("Failed to parse address:", addr));
337
+ }
338
+ grpc_sockaddr_set_port(out, port);
339
+ return GRPC_ERROR_NONE;
340
+ }
@@ -61,6 +61,11 @@ bool grpc_parse_ipv6_hostport(absl::string_view hostport,
61
61
  /* Converts named or numeric port to a uint16 suitable for use in a sockaddr. */
62
62
  uint16_t grpc_strhtons(const char* port);
63
63
 
64
+ // Newer form of grpc_string_to_sockaddr which returns an error instead of
65
+ // crashing if \a addr is not IPv6/IPv6
66
+ grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out,
67
+ const char* addr, int port);
68
+
64
69
  namespace grpc_core {
65
70
 
66
71
  /** Populate \a resolved_addr to be a unix socket at |path| */
@@ -29,16 +29,42 @@
29
29
  #include "absl/strings/str_cat.h"
30
30
  #include "absl/strings/str_format.h"
31
31
 
32
- #include <grpc/event_engine/event_engine.h>
33
32
  #include <grpc/support/alloc.h>
34
33
  #include <grpc/support/log.h>
35
34
 
36
35
  #include "src/core/lib/gpr/string.h"
37
36
  #include "src/core/lib/gprpp/host_port.h"
38
- #include "src/core/lib/iomgr/event_engine/resolved_address_internal.h"
39
37
  #include "src/core/lib/iomgr/sockaddr.h"
40
38
  #include "src/core/lib/iomgr/socket_utils.h"
41
- #include "src/core/lib/iomgr/unix_sockets_posix.h"
39
+
40
+ #ifdef GRPC_HAVE_UNIX_SOCKET
41
+ #include <sys/un.h>
42
+ #endif
43
+
44
+ #ifdef GRPC_HAVE_UNIX_SOCKET
45
+ static std::string grpc_sockaddr_to_uri_unix_if_possible(
46
+ const grpc_resolved_address* resolved_addr) {
47
+ const grpc_sockaddr* addr =
48
+ reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr);
49
+ if (addr->sa_family != AF_UNIX) {
50
+ return "";
51
+ }
52
+ const auto* unix_addr = reinterpret_cast<const struct sockaddr_un*>(addr);
53
+ if (unix_addr->sun_path[0] == '\0' && unix_addr->sun_path[1] != '\0') {
54
+ return absl::StrCat(
55
+ "unix-abstract:",
56
+ absl::string_view(
57
+ unix_addr->sun_path + 1,
58
+ resolved_addr->len - sizeof(unix_addr->sun_family) - 1));
59
+ }
60
+ return absl::StrCat("unix:", unix_addr->sun_path);
61
+ }
62
+ #else
63
+ static std::string grpc_sockaddr_to_uri_unix_if_possible(
64
+ const grpc_resolved_address* /* addr */) {
65
+ return "";
66
+ }
67
+ #endif
42
68
 
43
69
  static const uint8_t kV4MappedPrefix[] = {0, 0, 0, 0, 0, 0,
44
70
  0, 0, 0, 0, 0xff, 0xff};
@@ -200,25 +226,6 @@ std::string grpc_sockaddr_to_string(const grpc_resolved_address* resolved_addr,
200
226
  return out;
201
227
  }
202
228
 
203
- grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out,
204
- const char* addr, int port) {
205
- memset(out, 0, sizeof(grpc_resolved_address));
206
- grpc_sockaddr_in6* addr6 = reinterpret_cast<grpc_sockaddr_in6*>(out->addr);
207
- grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(out->addr);
208
- if (grpc_inet_pton(GRPC_AF_INET6, addr, &addr6->sin6_addr) == 1) {
209
- addr6->sin6_family = GRPC_AF_INET6;
210
- out->len = sizeof(grpc_sockaddr_in6);
211
- } else if (grpc_inet_pton(GRPC_AF_INET, addr, &addr4->sin_addr) == 1) {
212
- addr4->sin_family = GRPC_AF_INET;
213
- out->len = sizeof(grpc_sockaddr_in);
214
- } else {
215
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
216
- absl::StrCat("Failed to parse address:", addr));
217
- }
218
- grpc_sockaddr_set_port(out, port);
219
- return GRPC_ERROR_NONE;
220
- }
221
-
222
229
  std::string grpc_sockaddr_to_uri(const grpc_resolved_address* resolved_addr) {
223
230
  if (resolved_addr->len == 0) return "";
224
231
  grpc_resolved_address addr_normalized;
@@ -269,10 +276,11 @@ int grpc_sockaddr_get_port(const grpc_resolved_address* resolved_addr) {
269
276
  case GRPC_AF_INET6:
270
277
  return grpc_ntohs(
271
278
  (reinterpret_cast<const grpc_sockaddr_in6*>(addr))->sin6_port);
279
+ #ifdef GRPC_HAVE_UNIX_SOCKET
280
+ case AF_UNIX:
281
+ return 1;
282
+ #endif
272
283
  default:
273
- if (grpc_is_unix_socket(resolved_addr)) {
274
- return 1;
275
- }
276
284
  gpr_log(GPR_ERROR, "Unknown socket family %d in grpc_sockaddr_get_port",
277
285
  addr->sa_family);
278
286
  return 0;
@@ -399,14 +407,3 @@ bool grpc_sockaddr_match_subnet(const grpc_resolved_address* address,
399
407
  }
400
408
  return false;
401
409
  }
402
-
403
- namespace grpc_event_engine {
404
- namespace experimental {
405
-
406
- std::string ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr) {
407
- auto gra = CreateGRPCResolvedAddress(addr);
408
- return grpc_sockaddr_to_uri(&gra);
409
- }
410
-
411
- } // namespace experimental
412
- } // namespace grpc_event_engine
@@ -23,9 +23,7 @@
23
23
 
24
24
  #include <string>
25
25
 
26
- #include <grpc/event_engine/event_engine.h>
27
-
28
- #include "src/core/lib/iomgr/resolve_address.h"
26
+ #include "src/core/lib/iomgr/resolved_address.h"
29
27
 
30
28
  /* Returns true if addr is an IPv4-mapped IPv6 address within the
31
29
  ::ffff:0.0.0.0/96 range, or false otherwise.
@@ -68,11 +66,6 @@ int grpc_sockaddr_set_port(grpc_resolved_address* addr, int port);
68
66
  std::string grpc_sockaddr_to_string(const grpc_resolved_address* addr,
69
67
  bool normalize) GRPC_MUST_USE_RESULT;
70
68
 
71
- // Newer form of grpc_string_to_sockaddr which returns an error instead of
72
- // crashing if \a addr is not IPv6/IPv6
73
- grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out,
74
- const char* addr, int port);
75
-
76
69
  /* Returns the URI string corresponding to \a addr */
77
70
  std::string grpc_sockaddr_to_uri(const grpc_resolved_address* addr);
78
71
 
@@ -99,12 +92,4 @@ bool grpc_sockaddr_match_subnet(const grpc_resolved_address* address,
99
92
  const grpc_resolved_address* subnet_address,
100
93
  uint32_t mask_bits);
101
94
 
102
- namespace grpc_event_engine {
103
- namespace experimental {
104
-
105
- std::string ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr);
106
-
107
- } // namespace experimental
108
- } // namespace grpc_event_engine
109
-
110
95
  #endif /* GRPC_CORE_LIB_ADDRESS_UTILS_SOCKADDR_UTILS_H */
@@ -26,31 +26,7 @@
26
26
 
27
27
  namespace grpc_core {
28
28
 
29
- namespace {
30
-
31
- /* Generate a random number between 0 and 1. We roll our own RNG because seeding
32
- * rand() modifies a global variable we have no control over. */
33
- double generate_uniform_random_number(uint32_t* rng_state) {
34
- constexpr uint32_t two_raise_31 = uint32_t(1) << 31;
35
- *rng_state = (1103515245 * *rng_state + 12345) % two_raise_31;
36
- return *rng_state / static_cast<double>(two_raise_31);
37
- }
38
-
39
- double generate_uniform_random_number_between(uint32_t* rng_state, double a,
40
- double b) {
41
- if (a == b) return a;
42
- if (a > b) std::swap(a, b); // make sure a < b
43
- const double range = b - a;
44
- return a + generate_uniform_random_number(rng_state) * range;
45
- }
46
-
47
- } // namespace
48
-
49
- BackOff::BackOff(const Options& options)
50
- : options_(options),
51
- rng_state_(static_cast<uint32_t>(gpr_now(GPR_CLOCK_REALTIME).tv_nsec)) {
52
- Reset();
53
- }
29
+ BackOff::BackOff(const Options& options) : options_(options) { Reset(); }
54
30
 
55
31
  grpc_millis BackOff::NextAttemptTime() {
56
32
  if (initial_) {
@@ -60,9 +36,9 @@ grpc_millis BackOff::NextAttemptTime() {
60
36
  current_backoff_ = static_cast<grpc_millis>(
61
37
  std::min(current_backoff_ * options_.multiplier(),
62
38
  static_cast<double>(options_.max_backoff())));
63
- const double jitter = generate_uniform_random_number_between(
64
- &rng_state_, -options_.jitter() * current_backoff_,
65
- options_.jitter() * current_backoff_);
39
+ const double jitter =
40
+ absl::Uniform(rand_gen_, -options_.jitter() * current_backoff_,
41
+ options_.jitter() * current_backoff_);
66
42
  const grpc_millis next_timeout =
67
43
  static_cast<grpc_millis>(current_backoff_ + jitter);
68
44
  return next_timeout + ExecCtx::Get()->Now();
@@ -73,6 +49,4 @@ void BackOff::Reset() {
73
49
  initial_ = true;
74
50
  }
75
51
 
76
- void BackOff::SetRandomSeed(uint32_t seed) { rng_state_ = seed; }
77
-
78
52
  } // namespace grpc_core
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include "absl/random/random.h"
25
+
24
26
  #include "src/core/lib/iomgr/exec_ctx.h"
25
27
 
26
28
  namespace grpc_core {
@@ -41,8 +43,6 @@ class BackOff {
41
43
  /// will be the time of the second attempt (rather than the Nth).
42
44
  void Reset();
43
45
 
44
- void SetRandomSeed(unsigned int seed);
45
-
46
46
  class Options {
47
47
  public:
48
48
  Options& set_initial_backoff(grpc_millis initial_backoff) {
@@ -79,7 +79,7 @@ class BackOff {
79
79
 
80
80
  private:
81
81
  const Options options_;
82
- uint32_t rng_state_;
82
+ absl::BitGen rand_gen_;
83
83
  bool initial_;
84
84
  /// current delay before retries
85
85
  grpc_millis current_backoff_;
@@ -30,7 +30,6 @@
30
30
  #include "absl/strings/str_join.h"
31
31
 
32
32
  #include <grpc/impl/codegen/grpc_types.h>
33
- #include <grpc/impl/codegen/log.h>
34
33
  #include <grpc/support/alloc.h>
35
34
  #include <grpc/support/log.h>
36
35
  #include <grpc/support/string_util.h>
@@ -29,6 +29,7 @@
29
29
  #include "src/core/lib/gpr/alloc.h"
30
30
 
31
31
  grpc_core::TraceFlag grpc_trace_channel(false, "channel");
32
+ grpc_core::TraceFlag grpc_trace_channel_stack(false, "channel_stack");
32
33
 
33
34
  /* Memory layouts.
34
35
 
@@ -105,6 +106,13 @@ grpc_error_handle grpc_channel_stack_init(
105
106
  const grpc_channel_filter** filters, size_t filter_count,
106
107
  const grpc_channel_args* channel_args, grpc_transport* optional_transport,
107
108
  const char* name, grpc_channel_stack* stack) {
109
+ if (grpc_trace_channel_stack.enabled()) {
110
+ gpr_log(GPR_INFO, "CHANNEL_STACK: init %s", name);
111
+ for (size_t i = 0; i < filter_count; i++) {
112
+ gpr_log(GPR_INFO, "CHANNEL_STACK: filter %s", filters[i]->name);
113
+ }
114
+ }
115
+
108
116
  size_t call_size =
109
117
  GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)) +
110
118
  GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_call_element));
@@ -54,9 +54,9 @@
54
54
 
55
55
  #include "src/core/lib/debug/trace.h"
56
56
  #include "src/core/lib/gpr/time_precise.h"
57
- #include "src/core/lib/gprpp/arena.h"
58
57
  #include "src/core/lib/iomgr/call_combiner.h"
59
58
  #include "src/core/lib/iomgr/polling_entity.h"
59
+ #include "src/core/lib/resource_quota/arena.h"
60
60
  #include "src/core/lib/transport/transport.h"
61
61
 
62
62
  typedef struct grpc_channel_element grpc_channel_element;
@@ -51,7 +51,8 @@ struct grpc_channel_stack_builder_iterator {
51
51
  filter_node* node;
52
52
  };
53
53
 
54
- grpc_channel_stack_builder* grpc_channel_stack_builder_create(void) {
54
+ grpc_channel_stack_builder* grpc_channel_stack_builder_create(
55
+ const char* name) {
55
56
  grpc_channel_stack_builder* b =
56
57
  grpc_core::Zalloc<grpc_channel_stack_builder>();
57
58
  b->begin.filter = nullptr;
@@ -60,6 +61,7 @@ grpc_channel_stack_builder* grpc_channel_stack_builder_create(void) {
60
61
  b->begin.prev = &b->end;
61
62
  b->end.next = &b->begin;
62
63
  b->end.prev = &b->begin;
64
+ b->name = name;
63
65
  return b;
64
66
  }
65
67
 
@@ -69,9 +71,9 @@ void grpc_channel_stack_builder_set_target(grpc_channel_stack_builder* b,
69
71
  b->target = gpr_strdup(target);
70
72
  }
71
73
 
72
- const char* grpc_channel_stack_builder_get_target(
74
+ std::string grpc_channel_stack_builder_get_target(
73
75
  grpc_channel_stack_builder* b) {
74
- return b->target;
76
+ return b->target == nullptr ? std::string("unknown") : std::string(b->target);
75
77
  }
76
78
 
77
79
  static grpc_channel_stack_builder_iterator* create_iterator_at_filter_node(
@@ -143,12 +145,6 @@ grpc_channel_stack_builder_iterator* grpc_channel_stack_builder_iterator_find(
143
145
  bool grpc_channel_stack_builder_move_prev(
144
146
  grpc_channel_stack_builder_iterator* iterator);
145
147
 
146
- void grpc_channel_stack_builder_set_name(grpc_channel_stack_builder* builder,
147
- const char* name) {
148
- GPR_ASSERT(builder->name == nullptr);
149
- builder->name = name;
150
- }
151
-
152
148
  void grpc_channel_stack_builder_set_channel_arguments(
153
149
  grpc_channel_stack_builder* builder, const grpc_channel_args* args) {
154
150
  if (builder->args != nullptr) {
@@ -32,18 +32,15 @@ typedef struct grpc_channel_stack_builder grpc_channel_stack_builder;
32
32
  typedef struct grpc_channel_stack_builder_iterator
33
33
  grpc_channel_stack_builder_iterator;
34
34
 
35
- /// Create a new channel stack builder
36
- grpc_channel_stack_builder* grpc_channel_stack_builder_create(void);
37
-
38
- /// Assign a name to the channel stack: \a name must be statically allocated
39
- void grpc_channel_stack_builder_set_name(grpc_channel_stack_builder* builder,
40
- const char* name);
35
+ /// Create a new channel stack builder.
36
+ /// \a name must be statically allocated.
37
+ grpc_channel_stack_builder* grpc_channel_stack_builder_create(const char* name);
41
38
 
42
39
  /// Set the target uri
43
40
  void grpc_channel_stack_builder_set_target(grpc_channel_stack_builder* b,
44
41
  const char* target);
45
42
 
46
- const char* grpc_channel_stack_builder_get_target(
43
+ std::string grpc_channel_stack_builder_get_target(
47
44
  grpc_channel_stack_builder* b);
48
45
 
49
46
  /// Attach \a transport to the builder (does not take ownership)
@@ -34,6 +34,7 @@
34
34
  #include <grpc/support/log.h>
35
35
  #include <grpc/support/string_util.h>
36
36
 
37
+ #include "src/core/lib/address_utils/parse_address.h"
37
38
  #include "src/core/lib/address_utils/sockaddr_utils.h"
38
39
  #include "src/core/lib/channel/channelz_registry.h"
39
40
  #include "src/core/lib/channel/status_util.h"
@@ -23,89 +23,47 @@
23
23
 
24
24
  #include <grpc/compression.h>
25
25
 
26
- #include "src/core/lib/compression/algorithm_metadata.h"
27
26
  #include "src/core/lib/compression/compression_internal.h"
28
27
  #include "src/core/lib/gpr/useful.h"
29
28
  #include "src/core/lib/slice/slice_utils.h"
30
29
  #include "src/core/lib/surface/api_trace.h"
31
- #include "src/core/lib/transport/static_metadata.h"
32
30
 
33
- int grpc_compression_algorithm_is_message(
34
- grpc_compression_algorithm algorithm) {
35
- return (algorithm >= GRPC_COMPRESS_DEFLATE && algorithm <= GRPC_COMPRESS_GZIP)
36
- ? 1
37
- : 0;
31
+ int grpc_compression_algorithm_is_message(grpc_compression_algorithm) {
32
+ return 1;
38
33
  }
39
34
 
40
- int grpc_compression_algorithm_is_stream(grpc_compression_algorithm algorithm) {
41
- return (algorithm == GRPC_COMPRESS_STREAM_GZIP) ? 1 : 0;
35
+ int grpc_compression_algorithm_is_stream(grpc_compression_algorithm) {
36
+ return 0;
42
37
  }
43
38
 
44
39
  int grpc_compression_algorithm_parse(grpc_slice name,
45
40
  grpc_compression_algorithm* algorithm) {
46
- if (grpc_slice_eq_static_interned(name, GRPC_MDSTR_IDENTITY)) {
47
- *algorithm = GRPC_COMPRESS_NONE;
48
- return 1;
49
- } else if (grpc_slice_eq_static_interned(name, GRPC_MDSTR_DEFLATE)) {
50
- *algorithm = GRPC_COMPRESS_DEFLATE;
41
+ absl::optional<grpc_compression_algorithm> alg =
42
+ grpc_core::ParseCompressionAlgorithm(
43
+ grpc_core::StringViewFromSlice(name));
44
+ if (alg.has_value()) {
45
+ *algorithm = alg.value();
51
46
  return 1;
52
- } else if (grpc_slice_eq_static_interned(name, GRPC_MDSTR_GZIP)) {
53
- *algorithm = GRPC_COMPRESS_GZIP;
54
- return 1;
55
- } else if (grpc_slice_eq_static_interned(name,
56
- GRPC_MDSTR_STREAM_SLASH_GZIP)) {
57
- *algorithm = GRPC_COMPRESS_STREAM_GZIP;
58
- return 1;
59
- } else {
60
- return 0;
61
47
  }
48
+ return 0;
62
49
  }
63
50
 
64
51
  int grpc_compression_algorithm_name(grpc_compression_algorithm algorithm,
65
52
  const char** name) {
66
53
  GRPC_API_TRACE("grpc_compression_algorithm_name(algorithm=%d, name=%p)", 2,
67
54
  ((int)algorithm, name));
68
- switch (algorithm) {
69
- case GRPC_COMPRESS_NONE:
70
- *name = "identity";
71
- return 1;
72
- case GRPC_COMPRESS_DEFLATE:
73
- *name = "deflate";
74
- return 1;
75
- case GRPC_COMPRESS_GZIP:
76
- *name = "gzip";
77
- return 1;
78
- case GRPC_COMPRESS_STREAM_GZIP:
79
- *name = "stream/gzip";
80
- return 1;
81
- case GRPC_COMPRESS_ALGORITHMS_COUNT:
82
- return 0;
55
+ const char* result = grpc_core::CompressionAlgorithmAsString(algorithm);
56
+ if (result != nullptr) {
57
+ *name = result;
58
+ return 1;
83
59
  }
84
60
  return 0;
85
61
  }
86
62
 
87
63
  grpc_compression_algorithm grpc_compression_algorithm_for_level(
88
64
  grpc_compression_level level, uint32_t accepted_encodings) {
89
- grpc_compression_algorithm algo;
90
- if (level == GRPC_COMPRESS_LEVEL_NONE) {
91
- return GRPC_COMPRESS_NONE;
92
- } else if (level <= GRPC_COMPRESS_LEVEL_HIGH) {
93
- // TODO(mxyan): Design algorithm to select from all algorithms, including
94
- // stream compression algorithm
95
- if (!grpc_compression_algorithm_from_message_stream_compression_algorithm(
96
- &algo,
97
- grpc_message_compression_algorithm_for_level(
98
- level,
99
- grpc_compression_bitset_to_message_bitset(accepted_encodings)),
100
- static_cast<grpc_stream_compression_algorithm>(0))) {
101
- gpr_log(GPR_ERROR, "Parse compression level error");
102
- return GRPC_COMPRESS_NONE;
103
- }
104
- return algo;
105
- } else {
106
- gpr_log(GPR_ERROR, "Unknown compression level: %d", level);
107
- return GRPC_COMPRESS_NONE;
108
- }
65
+ return grpc_core::CompressionAlgorithmSet::FromUint32(accepted_encodings)
66
+ .CompressionAlgorithmForLevel(level);
109
67
  }
110
68
 
111
69
  void grpc_compression_options_init(grpc_compression_options* opts) {
@@ -127,57 +85,7 @@ void grpc_compression_options_disable_algorithm(
127
85
  int grpc_compression_options_is_algorithm_enabled(
128
86
  const grpc_compression_options* opts,
129
87
  grpc_compression_algorithm algorithm) {
130
- return grpc_compression_options_is_algorithm_enabled_internal(opts,
131
- algorithm);
132
- }
133
-
134
- grpc_slice grpc_compression_algorithm_slice(
135
- grpc_compression_algorithm algorithm) {
136
- switch (algorithm) {
137
- case GRPC_COMPRESS_NONE:
138
- return GRPC_MDSTR_IDENTITY;
139
- case GRPC_COMPRESS_DEFLATE:
140
- return GRPC_MDSTR_DEFLATE;
141
- case GRPC_COMPRESS_GZIP:
142
- return GRPC_MDSTR_GZIP;
143
- case GRPC_COMPRESS_STREAM_GZIP:
144
- return GRPC_MDSTR_STREAM_SLASH_GZIP;
145
- case GRPC_COMPRESS_ALGORITHMS_COUNT:
146
- return grpc_empty_slice();
147
- }
148
- return grpc_empty_slice();
149
- }
150
-
151
- grpc_compression_algorithm grpc_compression_algorithm_from_slice(
152
- const grpc_slice& str) {
153
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_IDENTITY)) {
154
- return GRPC_COMPRESS_NONE;
155
- }
156
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_DEFLATE)) {
157
- return GRPC_COMPRESS_DEFLATE;
158
- }
159
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_GZIP)) {
160
- return GRPC_COMPRESS_GZIP;
161
- }
162
- if (grpc_slice_eq_static_interned(str, GRPC_MDSTR_STREAM_SLASH_GZIP)) {
163
- return GRPC_COMPRESS_STREAM_GZIP;
164
- }
165
- return GRPC_COMPRESS_ALGORITHMS_COUNT;
166
- }
167
-
168
- grpc_mdelem grpc_compression_encoding_mdelem(
169
- grpc_compression_algorithm algorithm) {
170
- switch (algorithm) {
171
- case GRPC_COMPRESS_NONE:
172
- return GRPC_MDELEM_GRPC_ENCODING_IDENTITY;
173
- case GRPC_COMPRESS_DEFLATE:
174
- return GRPC_MDELEM_GRPC_ENCODING_DEFLATE;
175
- case GRPC_COMPRESS_GZIP:
176
- return GRPC_MDELEM_GRPC_ENCODING_GZIP;
177
- case GRPC_COMPRESS_STREAM_GZIP:
178
- return GRPC_MDELEM_GRPC_ENCODING_GZIP;
179
- default:
180
- break;
181
- }
182
- return GRPC_MDNULL;
88
+ return grpc_core::CompressionAlgorithmSet::FromUint32(
89
+ opts->enabled_algorithms_bitset)
90
+ .IsSet(algorithm);
183
91
  }