grpc 1.41.0 → 1.42.0.pre1

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 (519) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +57 -44
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/event_engine/event_engine.h +82 -42
  5. data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
  6. data/include/grpc/event_engine/memory_allocator.h +210 -0
  7. data/include/grpc/grpc.h +4 -0
  8. data/include/grpc/grpc_security.h +18 -0
  9. data/include/grpc/grpc_security_constants.h +1 -0
  10. data/include/grpc/impl/codegen/port_platform.h +7 -0
  11. data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
  12. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
  13. data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
  14. data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
  15. data/src/core/ext/filters/client_channel/client_channel.h +74 -27
  16. data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
  17. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
  19. data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
  20. data/src/core/ext/filters/client_channel/config_selector.h +4 -5
  21. data/src/core/ext/filters/client_channel/connector.h +18 -18
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
  23. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
  24. data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  26. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
  35. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
  43. data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
  44. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
  45. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
  50. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  51. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
  52. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
  53. data/src/core/ext/filters/client_channel/resolver.h +1 -1
  54. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
  55. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
  56. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
  57. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
  59. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  60. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
  61. data/src/core/ext/filters/client_channel/server_address.h +1 -1
  62. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
  63. data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
  64. data/src/core/ext/filters/client_channel/subchannel.h +29 -49
  65. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  66. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  67. data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
  68. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  69. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  70. data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
  71. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
  72. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
  73. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  74. data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
  75. data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
  76. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
  77. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
  78. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
  79. data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
  80. data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
  81. data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
  82. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  83. data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
  84. data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
  85. data/src/core/ext/service_config/service_config_call_data.h +72 -0
  86. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
  87. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
  89. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
  90. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
  91. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
  92. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
  93. data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
  94. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
  95. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  96. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  97. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
  98. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
  99. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  100. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
  102. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
  103. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
  104. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
  107. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
  108. data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
  109. data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
  110. data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
  111. data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
  112. data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
  113. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
  114. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
  121. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
  122. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
  123. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
  124. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
  125. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
  126. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
  127. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
  128. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
  129. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
  130. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
  131. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  132. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
  133. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  134. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  135. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  136. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  137. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
  138. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
  139. data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
  140. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
  141. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
  142. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
  143. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
  144. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
  145. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
  146. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
  147. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
  148. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
  149. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
  150. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
  151. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
  152. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
  153. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
  154. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
  155. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  156. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
  157. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
  158. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
  159. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
  160. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
  161. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
  162. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
  163. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  164. data/src/core/ext/xds/xds_api.cc +325 -362
  165. data/src/core/ext/xds/xds_api.h +134 -82
  166. data/src/core/ext/xds/xds_bootstrap.h +10 -0
  167. data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
  168. data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
  169. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  170. data/src/core/ext/xds/xds_client.cc +527 -314
  171. data/src/core/ext/xds/xds_client.h +42 -37
  172. data/src/core/ext/xds/xds_client_stats.h +1 -1
  173. data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
  174. data/src/core/lib/address_utils/parse_address.cc +2 -0
  175. data/src/core/lib/avl/avl.cc +5 -5
  176. data/src/core/lib/backoff/backoff.cc +1 -1
  177. data/src/core/lib/channel/channel_args.cc +24 -6
  178. data/src/core/lib/channel/channel_args.h +9 -0
  179. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  180. data/src/core/lib/channel/channel_trace.cc +1 -1
  181. data/src/core/lib/channel/channel_trace.h +1 -1
  182. data/src/core/lib/channel/channelz.cc +3 -3
  183. data/src/core/lib/channel/channelz.h +2 -2
  184. data/src/core/lib/channel/channelz_registry.cc +1 -1
  185. data/src/core/lib/channel/channelz_registry.h +1 -1
  186. data/src/core/lib/channel/connected_channel.cc +1 -3
  187. data/src/core/lib/channel/connected_channel.h +1 -2
  188. data/src/core/lib/compression/compression.cc +2 -2
  189. data/src/core/lib/compression/compression_args.cc +6 -4
  190. data/src/core/lib/compression/compression_internal.cc +2 -2
  191. data/src/core/lib/compression/compression_internal.h +1 -1
  192. data/src/core/lib/config/core_configuration.cc +44 -2
  193. data/src/core/lib/config/core_configuration.h +39 -1
  194. data/src/core/lib/debug/stats.cc +1 -1
  195. data/src/core/lib/debug/stats_data.cc +13 -13
  196. data/src/core/lib/gpr/atm.cc +1 -1
  197. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  198. data/src/core/lib/gpr/string.cc +2 -2
  199. data/src/core/lib/gpr/tls.h +1 -1
  200. data/src/core/lib/gpr/useful.h +79 -32
  201. data/src/core/lib/gprpp/arena.h +10 -0
  202. data/src/core/lib/gprpp/bitset.h +38 -16
  203. data/src/core/lib/gprpp/chunked_vector.h +211 -0
  204. data/src/core/lib/gprpp/construct_destruct.h +1 -1
  205. data/src/core/lib/gprpp/match.h +1 -1
  206. data/src/core/lib/gprpp/memory.h +6 -0
  207. data/src/core/lib/gprpp/overload.h +1 -1
  208. data/src/core/lib/gprpp/status_helper.cc +23 -3
  209. data/src/core/lib/gprpp/status_helper.h +12 -1
  210. data/src/core/lib/gprpp/table.h +411 -0
  211. data/src/core/lib/http/httpcli.cc +200 -182
  212. data/src/core/lib/http/parser.cc +2 -2
  213. data/src/core/lib/iomgr/call_combiner.cc +28 -10
  214. data/src/core/lib/iomgr/combiner.cc +6 -21
  215. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
  216. data/src/core/lib/iomgr/error.cc +113 -52
  217. data/src/core/lib/iomgr/error.h +50 -9
  218. data/src/core/lib/iomgr/error_cfstream.cc +5 -0
  219. data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
  220. data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
  221. data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
  222. data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
  223. data/src/core/lib/iomgr/event_engine/closure.h +10 -1
  224. data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
  225. data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
  226. data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
  227. data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
  228. data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
  229. data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
  230. data/src/core/lib/iomgr/exec_ctx.cc +1 -9
  231. data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
  232. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
  233. data/src/core/lib/iomgr/executor.cc +6 -20
  234. data/src/core/lib/iomgr/iomgr.cc +3 -1
  235. data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
  236. data/src/core/lib/iomgr/iomgr_internal.h +3 -2
  237. data/src/core/lib/iomgr/load_file.cc +2 -2
  238. data/src/core/lib/iomgr/lockfree_event.cc +18 -0
  239. data/src/core/lib/iomgr/pollset_custom.cc +1 -1
  240. data/src/core/lib/iomgr/pollset_custom.h +1 -1
  241. data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
  242. data/src/core/lib/iomgr/resource_quota.cc +13 -11
  243. data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
  244. data/src/core/lib/iomgr/socket_mutator.cc +2 -2
  245. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
  246. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
  247. data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
  248. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
  249. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  250. data/src/core/lib/iomgr/tcp_posix.cc +4 -5
  251. data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
  252. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
  253. data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
  254. data/src/core/lib/iomgr/tcp_windows.cc +2 -2
  255. data/src/core/lib/iomgr/timer_generic.cc +13 -13
  256. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  257. data/src/core/lib/json/json_util.cc +68 -0
  258. data/src/core/lib/json/json_util.h +57 -99
  259. data/src/core/lib/json/json_writer.cc +0 -3
  260. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  261. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  262. data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
  263. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
  264. data/src/core/lib/security/context/security_context.cc +4 -2
  265. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  266. data/src/core/lib/security/credentials/credentials.cc +4 -2
  267. data/src/core/lib/security/credentials/credentials.h +6 -1
  268. data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
  269. data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
  270. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
  271. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
  272. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
  273. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  274. data/src/core/lib/security/security_connector/security_connector.cc +9 -4
  275. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  276. data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
  277. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
  278. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
  279. data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
  280. data/src/core/lib/security/transport/security_handshaker.cc +73 -43
  281. data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
  282. data/src/core/lib/security/transport/tsi_error.cc +3 -5
  283. data/src/core/lib/slice/slice.cc +0 -16
  284. data/src/core/lib/slice/slice_api.cc +39 -0
  285. data/src/core/lib/slice/slice_buffer.cc +5 -5
  286. data/src/core/lib/slice/slice_intern.cc +8 -13
  287. data/src/core/lib/slice/slice_internal.h +1 -244
  288. data/src/core/lib/slice/slice_refcount.cc +17 -0
  289. data/src/core/lib/slice/slice_refcount.h +121 -0
  290. data/src/core/lib/slice/slice_refcount_base.h +173 -0
  291. data/src/core/lib/slice/slice_split.cc +100 -0
  292. data/src/core/lib/slice/slice_split.h +40 -0
  293. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  294. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  295. data/src/core/lib/slice/static_slice.cc +529 -0
  296. data/src/core/lib/slice/static_slice.h +331 -0
  297. data/src/core/lib/surface/builtins.cc +49 -0
  298. data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
  299. data/src/core/lib/surface/call.cc +103 -120
  300. data/src/core/lib/surface/call.h +0 -6
  301. data/src/core/lib/surface/channel.cc +19 -32
  302. data/src/core/lib/surface/channel.h +0 -9
  303. data/src/core/lib/surface/channel_init.cc +23 -76
  304. data/src/core/lib/surface/channel_init.h +52 -44
  305. data/src/core/lib/surface/completion_queue.cc +6 -5
  306. data/src/core/lib/surface/init.cc +0 -39
  307. data/src/core/lib/surface/init_secure.cc +17 -14
  308. data/src/core/lib/surface/lame_client.cc +18 -11
  309. data/src/core/lib/surface/lame_client.h +1 -1
  310. data/src/core/lib/surface/server.cc +25 -17
  311. data/src/core/lib/surface/server.h +17 -10
  312. data/src/core/lib/surface/validate_metadata.cc +5 -2
  313. data/src/core/lib/surface/version.cc +2 -2
  314. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  315. data/src/core/lib/transport/error_utils.cc +42 -17
  316. data/src/core/lib/transport/error_utils.h +1 -1
  317. data/src/core/lib/transport/metadata.cc +31 -10
  318. data/src/core/lib/transport/metadata.h +2 -1
  319. data/src/core/lib/transport/metadata_batch.cc +35 -371
  320. data/src/core/lib/transport/metadata_batch.h +905 -71
  321. data/src/core/lib/transport/parsed_metadata.h +263 -0
  322. data/src/core/lib/transport/pid_controller.cc +4 -4
  323. data/src/core/lib/transport/static_metadata.cc +714 -846
  324. data/src/core/lib/transport/static_metadata.h +115 -379
  325. data/src/core/lib/transport/status_metadata.cc +1 -0
  326. data/src/core/lib/transport/transport.cc +4 -5
  327. data/src/core/lib/transport/transport_op_string.cc +40 -20
  328. data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
  329. data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
  330. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  331. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  332. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
  333. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  335. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  336. data/src/core/tsi/fake_transport_security.cc +15 -7
  337. data/src/core/tsi/local_transport_security.cc +36 -73
  338. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
  339. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
  340. data/src/core/tsi/ssl_transport_security.cc +10 -2
  341. data/src/core/tsi/transport_security.cc +12 -0
  342. data/src/core/tsi/transport_security.h +16 -1
  343. data/src/core/tsi/transport_security_interface.h +26 -0
  344. data/src/ruby/ext/grpc/extconf.rb +12 -9
  345. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  346. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  347. data/src/ruby/lib/grpc/version.rb +1 -1
  348. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
  349. data/src/ruby/spec/client_server_spec.rb +1 -1
  350. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
  351. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
  352. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  353. data/third_party/boringssl-with-bazel/err_data.c +278 -272
  354. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
  355. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  356. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
  357. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
  358. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
  359. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  360. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
  361. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  362. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  363. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
  364. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  365. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  366. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
  367. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
  368. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
  369. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
  370. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
  371. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
  372. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
  373. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  374. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  375. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  376. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  377. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  378. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  379. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  380. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  381. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
  382. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  383. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
  384. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
  385. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
  395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  396. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
  398. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
  400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
  402. data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
  403. data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
  404. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  405. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  406. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  407. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  408. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  409. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  410. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
  411. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
  412. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  413. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  414. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  415. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
  416. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  417. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
  418. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
  419. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  420. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
  421. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
  422. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  423. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
  424. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
  425. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  426. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
  427. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
  428. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
  429. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
  430. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
  431. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  432. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
  433. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
  434. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
  435. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
  436. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
  437. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
  438. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
  439. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
  440. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  442. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  443. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
  444. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  445. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
  446. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
  447. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
  448. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
  449. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  450. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  451. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
  452. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
  453. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  454. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
  455. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  456. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
  457. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
  458. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
  459. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
  460. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
  461. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
  462. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
  463. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
  464. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
  465. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
  466. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
  467. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
  468. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
  469. data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
  470. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  471. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
  472. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
  473. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
  474. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
  475. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
  476. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
  477. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
  478. data/third_party/re2/re2/compile.cc +91 -109
  479. data/third_party/re2/re2/dfa.cc +27 -39
  480. data/third_party/re2/re2/filtered_re2.cc +18 -2
  481. data/third_party/re2/re2/filtered_re2.h +10 -5
  482. data/third_party/re2/re2/nfa.cc +1 -1
  483. data/third_party/re2/re2/parse.cc +42 -23
  484. data/third_party/re2/re2/perl_groups.cc +34 -34
  485. data/third_party/re2/re2/prefilter.cc +3 -2
  486. data/third_party/re2/re2/prog.cc +182 -4
  487. data/third_party/re2/re2/prog.h +28 -9
  488. data/third_party/re2/re2/re2.cc +87 -118
  489. data/third_party/re2/re2/re2.h +156 -141
  490. data/third_party/re2/re2/regexp.cc +12 -5
  491. data/third_party/re2/re2/regexp.h +8 -2
  492. data/third_party/re2/re2/set.cc +31 -9
  493. data/third_party/re2/re2/set.h +9 -4
  494. data/third_party/re2/re2/simplify.cc +11 -3
  495. data/third_party/re2/re2/tostring.cc +1 -1
  496. data/third_party/re2/re2/walker-inl.h +1 -1
  497. data/third_party/re2/util/mutex.h +2 -2
  498. data/third_party/re2/util/pcre.h +3 -3
  499. metadata +83 -70
  500. data/include/grpc/event_engine/slice_allocator.h +0 -71
  501. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
  502. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
  503. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  504. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  505. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  506. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  507. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
  508. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
  509. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  510. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  511. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  512. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
  513. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
  514. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  515. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  516. data/src/core/lib/iomgr/udp_server.cc +0 -747
  517. data/src/core/lib/iomgr/udp_server.h +0 -103
  518. data/src/core/lib/transport/authority_override.cc +0 -40
  519. data/src/core/lib/transport/authority_override.h +0 -37
@@ -24,8 +24,8 @@
24
24
  #include "absl/time/time.h"
25
25
 
26
26
  #include <grpc/event_engine/endpoint_config.h>
27
+ #include <grpc/event_engine/memory_allocator.h>
27
28
  #include <grpc/event_engine/port.h>
28
- #include <grpc/event_engine/slice_allocator.h>
29
29
 
30
30
  // TODO(hork): Define the Endpoint::Write metrics collection system
31
31
  namespace grpc_event_engine {
@@ -73,12 +73,27 @@ namespace experimental {
73
73
  ////////////////////////////////////////////////////////////////////////////////
74
74
  class EventEngine {
75
75
  public:
76
- /// Basic callable function. The first argument to all callbacks is an
77
- /// absl::Status indicating the status of the operation associated with this
78
- /// callback. Each EventEngine method that takes a callback parameter, defines
79
- /// the expected sets and meanings of statuses for that use case.
80
- using Callback = std::function<void(absl::Status)>;
81
- /// Callback handle, used to cancel a callback.
76
+ /// A custom closure type for EventEngine task execution.
77
+ ///
78
+ /// Throughout the EventEngine API, \a Closure ownership is retained by the
79
+ /// caller - the EventEngine will never delete a Closure, and upon
80
+ /// cancellation, the EventEngine will simply forget the Closure exists. The
81
+ /// caller is responsible for all necessary cleanup.
82
+ class Closure {
83
+ public:
84
+ Closure() = default;
85
+ // Closure's are an interface, and thus non-copyable.
86
+ Closure(const Closure&) = delete;
87
+ Closure& operator=(const Closure&) = delete;
88
+ // Polymorphic type => virtual destructor
89
+ virtual ~Closure() = default;
90
+ // Run the contained code.
91
+ virtual void Run() = 0;
92
+ };
93
+ /// Represents a scheduled task.
94
+ ///
95
+ /// \a TaskHandles are returned by \a Run* methods, and can be given to the
96
+ /// \a Cancel method.
82
97
  struct TaskHandle {
83
98
  intptr_t keys[2];
84
99
  };
@@ -108,7 +123,7 @@ class EventEngine {
108
123
  /// created when connections are established, and Endpoint operations are
109
124
  /// gRPC's primary means of communication.
110
125
  ///
111
- /// Endpoints must use the provided SliceAllocator for all data buffer memory
126
+ /// Endpoints must use the provided MemoryAllocator for all data buffer memory
112
127
  /// allocations. gRPC allows applications to set memory constraints per
113
128
  /// Channel or Server, and the implementation depends on all dynamic memory
114
129
  /// allocation being handled by the quota system.
@@ -134,7 +149,8 @@ class EventEngine {
134
149
  /// For failed read operations, implementations should pass the appropriate
135
150
  /// statuses to \a on_read. For example, callbacks might expect to receive
136
151
  /// CANCELLED on endpoint shutdown.
137
- virtual void Read(Callback on_read, SliceBuffer* buffer) = 0;
152
+ virtual void Read(std::function<void(absl::Status)> on_read,
153
+ SliceBuffer* buffer) = 0;
138
154
  /// Writes data out on the connection.
139
155
  ///
140
156
  /// \a on_writable is called when the connection is ready for more data. The
@@ -153,7 +169,8 @@ class EventEngine {
153
169
  /// For failed write operations, implementations should pass the appropriate
154
170
  /// statuses to \a on_writable. For example, callbacks might expect to
155
171
  /// receive CANCELLED on endpoint shutdown.
156
- virtual void Write(Callback on_writable, SliceBuffer* data) = 0;
172
+ virtual void Write(std::function<void(absl::Status)> on_writable,
173
+ SliceBuffer* data) = 0;
157
174
  /// Returns an address in the format described in DNSResolver. The returned
158
175
  /// values are expected to remain valid for the life of the Endpoint.
159
176
  virtual const ResolvedAddress& GetPeerAddress() const = 0;
@@ -175,7 +192,7 @@ class EventEngine {
175
192
  public:
176
193
  /// Called when the listener has accepted a new client connection.
177
194
  using AcceptCallback = std::function<void(
178
- std::unique_ptr<Endpoint>, const SliceAllocator& slice_allocator)>;
195
+ std::unique_ptr<Endpoint>, MemoryAllocator memory_allocator)>;
179
196
  virtual ~Listener() = default;
180
197
  /// Bind an address/port to this Listener.
181
198
  ///
@@ -198,12 +215,13 @@ class EventEngine {
198
215
  /// exactly once, when the Listener is shut down. The status passed to it will
199
216
  /// indicate if there was a problem during shutdown.
200
217
  ///
201
- /// The provided \a SliceAllocatorFactory is used to create \a SliceAllocators
202
- /// for Endpoint construction.
218
+ /// The provided \a MemoryAllocatorFactory is used to create \a
219
+ /// MemoryAllocators for Endpoint construction.
203
220
  virtual absl::StatusOr<std::unique_ptr<Listener>> CreateListener(
204
- Listener::AcceptCallback on_accept, Callback on_shutdown,
221
+ Listener::AcceptCallback on_accept,
222
+ std::function<void(absl::Status)> on_shutdown,
205
223
  const EndpointConfig& config,
206
- std::unique_ptr<SliceAllocatorFactory> slice_allocator_factory) = 0;
224
+ std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory) = 0;
207
225
  /// Creates a client network connection to a remote network listener.
208
226
  ///
209
227
  /// May return an error status immediately if there was a failure in the
@@ -212,15 +230,15 @@ class EventEngine {
212
230
  /// expected that the \a on_connect callback will be asynchronously executed
213
231
  /// exactly once by the EventEngine.
214
232
  ///
215
- /// Implementation Note: it is important that the \a slice_allocator be used
233
+ /// Implementation Note: it is important that the \a memory_allocator be used
216
234
  /// for all read/write buffer allocations in the EventEngine implementation.
217
235
  /// This allows gRPC's \a ResourceQuota system to monitor and control memory
218
236
  /// usage with graceful degradation mechanisms. Please see the \a
219
- /// SliceAllocator API for more information.
237
+ /// MemoryAllocator API for more information.
220
238
  virtual absl::Status Connect(OnConnectCallback on_connect,
221
239
  const ResolvedAddress& addr,
222
240
  const EndpointConfig& args,
223
- std::unique_ptr<SliceAllocator> slice_allocator,
241
+ MemoryAllocator memory_allocator,
224
242
  absl::Time deadline) = 0;
225
243
 
226
244
  /// Provides asynchronous resolution.
@@ -257,8 +275,10 @@ class EventEngine {
257
275
  /// When the lookup is complete, the \a on_resolve callback will be invoked
258
276
  /// with a status indicating the success or failure of the lookup.
259
277
  /// Implementations should pass the appropriate statuses to the callback.
260
- /// For example, callbacks might expect to receive DEADLINE_EXCEEDED when
261
- /// the deadline is exceeded or CANCELLED if the lookup was cancelled.
278
+ /// For example, callbacks might expect to receive DEADLINE_EXCEEDED or
279
+ /// NOT_FOUND.
280
+ ///
281
+ /// If cancelled, \a on_resolve will not be executed.
262
282
  virtual LookupTaskHandle LookupHostname(LookupHostnameCallback on_resolve,
263
283
  absl::string_view address,
264
284
  absl::string_view default_port,
@@ -278,7 +298,11 @@ class EventEngine {
278
298
  absl::string_view name,
279
299
  absl::Time deadline) = 0;
280
300
  /// Cancel an asynchronous lookup operation.
281
- virtual void TryCancelLookup(LookupTaskHandle handle) = 0;
301
+ ///
302
+ /// This shares the same semantics with \a EventEngine::Cancel: successfully
303
+ /// cancelled lookups will not have their callbacks executed, and this
304
+ /// method returns true.
305
+ virtual bool CancelLookup(LookupTaskHandle handle) = 0;
282
306
  };
283
307
 
284
308
  /// At time of destruction, the EventEngine must have no active
@@ -297,32 +321,48 @@ class EventEngine {
297
321
  /// Creates and returns an instance of a DNSResolver.
298
322
  virtual std::unique_ptr<DNSResolver> GetDNSResolver() = 0;
299
323
 
300
- /// Executes a callback as soon as possible.
324
+ /// Asynchronously executes a task as soon as possible.
301
325
  ///
302
- /// The \a fn callback's \a status argument is used to indicate whether it was
303
- /// executed normally. For example, the status may be CANCELLED if the
304
- /// EventEngine is being shut down. \a fn is guaranteed to be called exactly
305
- /// once.
306
- virtual void Run(Callback fn) = 0;
326
+ /// \a Closures scheduled with \a Run cannot be cancelled. The \a closure will
327
+ /// not be deleted after it has been run, ownership remains with the caller.
328
+ virtual void Run(Closure* closure) = 0;
329
+ /// Asynchronously executes a task as soon as possible.
330
+ ///
331
+ /// \a Closures scheduled with \a Run cannot be cancelled. Unlike the
332
+ /// overloaded \a Closure alternative, the std::function version's \a closure
333
+ /// will be deleted by the EventEngine after the closure has been run.
334
+ ///
335
+ /// This version of \a Run may be less performant than the \a Closure version
336
+ /// in some scenarios. This overload is useful in situations where performance
337
+ /// is not a critical concern.
338
+ virtual void Run(std::function<void()> closure) = 0;
307
339
  /// Synonymous with scheduling an alarm to run at time \a when.
308
340
  ///
309
- /// The callback \a fn will execute when either when time \a when arrives
310
- /// (receiving status OK), or when the \a fn is cancelled (receiving status
311
- /// CANCELLED). The callback is guaranteed to be called exactly once.
312
- virtual TaskHandle RunAt(absl::Time when, Callback fn) = 0;
313
- /// Attempts to cancel a callback.
314
- /// Note that this is a "best effort" cancellation. No guarantee is made that
315
- /// the callback will be cancelled, the call could be in any stage.
341
+ /// The \a closure will execute when time \a when arrives unless it has been
342
+ /// cancelled via the \a Cancel method. If cancelled, the closure will not be
343
+ /// run, nor will it be deleted. Ownership remains with the caller.
344
+ virtual TaskHandle RunAt(absl::Time when, Closure* closure) = 0;
345
+ /// Synonymous with scheduling an alarm to run at time \a when.
346
+ ///
347
+ /// The \a closure will execute when time \a when arrives unless it has been
348
+ /// cancelled via the \a Cancel method. If cancelled, the closure will not be
349
+ /// run. Unilke the overloaded \a Closure alternative, the std::function
350
+ /// version's \a closure will be deleted by the EventEngine after the closure
351
+ /// has been run, or upon cancellation.
352
+ ///
353
+ /// This version of \a RunAt may be less performant than the \a Closure
354
+ /// version in some scenarios. This overload is useful in situations where
355
+ /// performance is not a critical concern.
356
+ virtual TaskHandle RunAt(absl::Time when, std::function<void()> closure) = 0;
357
+ /// Request cancellation of a task.
316
358
  ///
317
- /// There are three scenarios in which we may cancel a scheduled task:
318
- /// 1. We cancel the execution before it has run.
319
- /// 2. The callback has already run.
320
- /// 3. We can't cancel it because it is "in flight".
359
+ /// If the associated closure has already been scheduled to run, it will not
360
+ /// be cancelled, and this function will return false.
321
361
  ///
322
- /// In all cases, the cancellation is still considered successful, the
323
- /// callback will be run exactly once from either cancellation or from its
324
- /// activation.
325
- virtual void TryCancel(TaskHandle handle) = 0;
362
+ /// If the associated callback has not been scheduled to run, it will be
363
+ /// cancelled, and the associated std::function or \a Closure* will not be
364
+ /// executed. In this case, Cancel will return true.
365
+ virtual bool Cancel(TaskHandle handle) = 0;
326
366
  };
327
367
 
328
368
  // TODO(hork): finalize the API and document it. We need to firm up the story
@@ -0,0 +1,98 @@
1
+ // Copyright 2021 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ #ifndef GRPC_EVENT_ENGINE_INTERNAL_MEMORY_ALLOCATOR_IMPL_H
15
+ #define GRPC_EVENT_ENGINE_INTERNAL_MEMORY_ALLOCATOR_IMPL_H
16
+
17
+ #include <grpc/impl/codegen/port_platform.h>
18
+
19
+ #include <algorithm>
20
+ #include <memory>
21
+ #include <type_traits>
22
+ #include <vector>
23
+
24
+ #include <grpc/slice.h>
25
+
26
+ // forward-declaring an internal struct, not used publicly.
27
+ struct grpc_slice_buffer;
28
+
29
+ namespace grpc_event_engine {
30
+ namespace experimental {
31
+
32
+ /// Reservation request - how much memory do we want to allocate?
33
+ class MemoryRequest {
34
+ public:
35
+ /// Request a fixed amount of memory.
36
+ // NOLINTNEXTLINE(google-explicit-constructor)
37
+ MemoryRequest(size_t n) : min_(n), max_(n) {}
38
+ /// Request a range of memory.
39
+ /// Requires: \a min <= \a max.
40
+ /// Requires: \a max <= max_size()
41
+ MemoryRequest(size_t min, size_t max) : min_(min), max_(max) {}
42
+
43
+ /// Maximum allowable request size - hard coded to 1GB.
44
+ static constexpr size_t max_allowed_size() { return 1024 * 1024 * 1024; }
45
+
46
+ /// Increase the size by \a amount.
47
+ /// Undefined behavior if min() + amount or max() + amount overflows.
48
+ MemoryRequest Increase(size_t amount) const {
49
+ return MemoryRequest(min_ + amount, max_ + amount);
50
+ }
51
+
52
+ size_t min() const { return min_; }
53
+ size_t max() const { return max_; }
54
+
55
+ private:
56
+ size_t min_;
57
+ size_t max_;
58
+ };
59
+
60
+ namespace internal {
61
+
62
+ /// Underlying memory allocation interface.
63
+ /// This is an internal interface, not intended to be used by users.
64
+ /// Its interface is subject to change at any time.
65
+ class MemoryAllocatorImpl
66
+ : public std::enable_shared_from_this<MemoryAllocatorImpl> {
67
+ public:
68
+ MemoryAllocatorImpl() {}
69
+ virtual ~MemoryAllocatorImpl() {}
70
+
71
+ MemoryAllocatorImpl(const MemoryAllocatorImpl&) = delete;
72
+ MemoryAllocatorImpl& operator=(const MemoryAllocatorImpl&) = delete;
73
+
74
+ /// Reserve bytes from the quota.
75
+ /// If we enter overcommit, reclamation will begin concurrently.
76
+ /// Returns the number of bytes reserved.
77
+ /// If MemoryRequest is invalid, this function will abort.
78
+ /// If MemoryRequest is valid, this function is infallible, and will always
79
+ /// succeed at reserving the some number of bytes between request.min() and
80
+ /// request.max() inclusively.
81
+ virtual size_t Reserve(MemoryRequest request) = 0;
82
+
83
+ /// Release some bytes that were previously reserved.
84
+ /// If more bytes are released than were reserved, we will have undefined
85
+ /// behavior.
86
+ virtual void Release(size_t n) = 0;
87
+
88
+ /// Shutdown this allocator.
89
+ /// Further usage of Reserve() is undefined behavior.
90
+ virtual void Shutdown() = 0;
91
+ };
92
+
93
+ } // namespace internal
94
+
95
+ } // namespace experimental
96
+ } // namespace grpc_event_engine
97
+
98
+ #endif // GRPC_EVENT_ENGINE_INTERNAL_MEMORY_ALLOCATOR_IMPL_H
@@ -0,0 +1,210 @@
1
+ // Copyright 2021 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ #ifndef GRPC_EVENT_ENGINE_MEMORY_ALLOCATOR_H
15
+ #define GRPC_EVENT_ENGINE_MEMORY_ALLOCATOR_H
16
+
17
+ #include <grpc/impl/codegen/port_platform.h>
18
+
19
+ #include <algorithm>
20
+ #include <memory>
21
+ #include <type_traits>
22
+ #include <vector>
23
+
24
+ #include <grpc/event_engine/internal/memory_allocator_impl.h>
25
+ #include <grpc/slice.h>
26
+
27
+ // forward-declaring an internal struct, not used publicly.
28
+ struct grpc_slice_buffer;
29
+
30
+ namespace grpc_event_engine {
31
+ namespace experimental {
32
+
33
+ // TODO(nnoble): needs implementation
34
+ class SliceBuffer {
35
+ public:
36
+ SliceBuffer() { abort(); }
37
+ explicit SliceBuffer(grpc_slice_buffer*) { abort(); }
38
+
39
+ grpc_slice_buffer* RawSliceBuffer() { return slice_buffer_; }
40
+
41
+ private:
42
+ grpc_slice_buffer* slice_buffer_;
43
+ };
44
+
45
+ class MemoryAllocator {
46
+ public:
47
+ /// Construct a MemoryAllocator given an internal::MemoryAllocatorImpl
48
+ /// implementation. The constructed MemoryAllocator will call
49
+ /// MemoryAllocatorImpl::Shutdown() upon destruction.
50
+ explicit MemoryAllocator(
51
+ std::shared_ptr<internal::MemoryAllocatorImpl> allocator)
52
+ : allocator_(std::move(allocator)) {}
53
+ ~MemoryAllocator() {
54
+ if (allocator_ != nullptr) allocator_->Shutdown();
55
+ }
56
+
57
+ MemoryAllocator(const MemoryAllocator&) = delete;
58
+ MemoryAllocator& operator=(const MemoryAllocator&) = delete;
59
+
60
+ MemoryAllocator(MemoryAllocator&&) = default;
61
+ MemoryAllocator& operator=(MemoryAllocator&&) = default;
62
+
63
+ /// Reserve bytes from the quota.
64
+ /// If we enter overcommit, reclamation will begin concurrently.
65
+ /// Returns the number of bytes reserved.
66
+ size_t Reserve(MemoryRequest request) { return allocator_->Reserve(request); }
67
+
68
+ /// Release some bytes that were previously reserved.
69
+ void Release(size_t n) { return allocator_->Release(n); }
70
+
71
+ /// Return a pointer to the underlying implementation.
72
+ /// Note that the interface of said implementatoin is unstable and likely to
73
+ /// change at any time.
74
+ internal::MemoryAllocatorImpl* get_internal_impl_ptr() {
75
+ return allocator_.get();
76
+ }
77
+
78
+ //
79
+ // The remainder of this type are helper functions implemented in terms of
80
+ // Reserve/Release.
81
+ //
82
+
83
+ /// An automatic releasing reservation of memory.
84
+ class Reservation {
85
+ public:
86
+ Reservation() = default;
87
+ Reservation(const Reservation&) = delete;
88
+ Reservation& operator=(const Reservation&) = delete;
89
+ Reservation(Reservation&&) = default;
90
+ Reservation& operator=(Reservation&&) = default;
91
+ ~Reservation() {
92
+ if (allocator_ != nullptr) allocator_->Release(size_);
93
+ }
94
+
95
+ private:
96
+ friend class MemoryAllocator;
97
+ Reservation(std::shared_ptr<internal::MemoryAllocatorImpl> allocator,
98
+ size_t size)
99
+ : allocator_(std::move(allocator)), size_(size) {}
100
+
101
+ std::shared_ptr<internal::MemoryAllocatorImpl> allocator_;
102
+ size_t size_ = 0;
103
+ };
104
+
105
+ /// Reserve bytes from the quota and automatically release them when
106
+ /// Reservation is destroyed.
107
+ Reservation MakeReservation(MemoryRequest request) {
108
+ return Reservation(allocator_, Reserve(request));
109
+ }
110
+
111
+ /// Allocate a new object of type T, with constructor arguments.
112
+ /// The returned type is wrapped, and upon destruction the reserved memory
113
+ /// will be released to the allocator automatically. As such, T must have a
114
+ /// virtual destructor so we can insert the necessary hook.
115
+ template <typename T, typename... Args>
116
+ typename std::enable_if<std::has_virtual_destructor<T>::value, T*>::type New(
117
+ Args&&... args) {
118
+ // Wrap T such that when it's destroyed, we can release memory back to the
119
+ // allocator.
120
+ class Wrapper final : public T {
121
+ public:
122
+ explicit Wrapper(std::shared_ptr<internal::MemoryAllocatorImpl> allocator,
123
+ Args&&... args)
124
+ : T(std::forward<Args>(args)...), allocator_(std::move(allocator)) {}
125
+ ~Wrapper() override { allocator_->Release(sizeof(*this)); }
126
+
127
+ private:
128
+ const std::shared_ptr<internal::MemoryAllocatorImpl> allocator_;
129
+ };
130
+ Reserve(sizeof(Wrapper));
131
+ return new Wrapper(allocator_, std::forward<Args>(args)...);
132
+ }
133
+
134
+ /// Construct a unique_ptr immediately.
135
+ template <typename T, typename... Args>
136
+ std::unique_ptr<T> MakeUnique(Args&&... args) {
137
+ return std::unique_ptr<T>(New<T>(std::forward<Args>(args)...));
138
+ }
139
+
140
+ /// Allocate a slice, using MemoryRequest to size the number of returned
141
+ /// bytes. For a variable length request, check the returned slice length to
142
+ /// verify how much memory was allocated. Takes care of reserving memory for
143
+ /// any relevant control structures also.
144
+ grpc_slice MakeSlice(MemoryRequest request);
145
+
146
+ /// A C++ allocator for containers of T.
147
+ template <typename T>
148
+ class Container {
149
+ public:
150
+ using value_type = T;
151
+
152
+ /// Construct the allocator: \a underlying_allocator is borrowed, and must
153
+ /// outlive this object.
154
+ explicit Container(MemoryAllocator* underlying_allocator)
155
+ : underlying_allocator_(underlying_allocator) {}
156
+ template <typename U>
157
+ explicit Container(const Container<U>& other)
158
+ : underlying_allocator_(other.underlying_allocator()) {}
159
+
160
+ MemoryAllocator* underlying_allocator() const {
161
+ return underlying_allocator_;
162
+ }
163
+
164
+ T* allocate(size_t n) {
165
+ underlying_allocator_->Reserve(n * sizeof(T));
166
+ return static_cast<T*>(::operator new(n * sizeof(T)));
167
+ }
168
+ void deallocate(T* p, size_t n) {
169
+ ::operator delete(p);
170
+ underlying_allocator_->Release(n * sizeof(T));
171
+ }
172
+
173
+ private:
174
+ MemoryAllocator* underlying_allocator_;
175
+ };
176
+
177
+ protected:
178
+ const std::shared_ptr<internal::MemoryAllocatorImpl>& allocator() {
179
+ return allocator_;
180
+ }
181
+
182
+ private:
183
+ std::shared_ptr<internal::MemoryAllocatorImpl> allocator_;
184
+ };
185
+
186
+ // Wrapper type around std::vector to make initialization against a
187
+ // MemoryAllocator based container allocator easy.
188
+ template <typename T>
189
+ class Vector : public std::vector<T, MemoryAllocator::Container<T>> {
190
+ public:
191
+ explicit Vector(MemoryAllocator* allocator)
192
+ : std::vector<T, MemoryAllocator::Container<T>>(
193
+ MemoryAllocator::Container<T>(allocator)) {}
194
+ };
195
+
196
+ class MemoryAllocatorFactory {
197
+ public:
198
+ virtual ~MemoryAllocatorFactory() = default;
199
+ /// On Endpoint creation, call \a CreateMemoryAllocator to create a new
200
+ /// allocator for the endpoint.
201
+ /// Typically we'll want to:
202
+ /// auto allocator = factory->CreateMemoryAllocator();
203
+ /// auto* endpoint = allocator->New<MyEndpoint>(std::move(allocator), ...);
204
+ virtual MemoryAllocator CreateMemoryAllocator() = 0;
205
+ };
206
+
207
+ } // namespace experimental
208
+ } // namespace grpc_event_engine
209
+
210
+ #endif // GRPC_EVENT_ENGINE_MEMORY_ALLOCATOR_H
data/include/grpc/grpc.h CHANGED
@@ -340,6 +340,10 @@ GRPCAPI grpc_call_error grpc_call_cancel_with_status(grpc_call* call,
340
340
  const char* description,
341
341
  void* reserved);
342
342
 
343
+ /* Returns whether or not the call's receive message operation failed because of
344
+ * an error (as opposed to a graceful end-of-stream) */
345
+ GRPCAPI int grpc_call_failed_before_recv_message(const grpc_call* c);
346
+
343
347
  /** Ref a call.
344
348
  THREAD SAFETY: grpc_call_ref is thread-compatible */
345
349
  GRPCAPI void grpc_call_ref(grpc_call* call);
@@ -1109,6 +1109,24 @@ grpc_authorization_policy_provider_static_data_create(
1109
1109
  const char* authz_policy, grpc_status_code* code,
1110
1110
  const char** error_details);
1111
1111
 
1112
+ /**
1113
+ * EXPERIMENTAL - Subject to change.
1114
+ * Creates a grpc_authorization_policy_provider by watching for SDK
1115
+ * authorization policy changes in filesystem.
1116
+ * - authz_policy is the file path of SDK authorization policy.
1117
+ * - refresh_interval_sec is the amount of time the internal thread would wait
1118
+ * before checking for file updates.
1119
+ * - code is the error status code on failure. On success, it equals
1120
+ * GRPC_STATUS_OK.
1121
+ * - error_details contains details about the error if any. If the
1122
+ * initialization is successful, it will be null. Caller must use gpr_free to
1123
+ * destroy this string.
1124
+ */
1125
+ GRPCAPI grpc_authorization_policy_provider*
1126
+ grpc_authorization_policy_provider_file_watcher_create(
1127
+ const char* authz_policy_path, unsigned int refresh_interval_sec,
1128
+ grpc_status_code* code, const char** error_details);
1129
+
1112
1130
  /**
1113
1131
  * EXPERIMENTAL - Subject to change.
1114
1132
  * Releases grpc_authorization_policy_provider object. The creator of
@@ -25,6 +25,7 @@ extern "C" {
25
25
 
26
26
  #define GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME "transport_security_type"
27
27
  #define GRPC_SSL_TRANSPORT_SECURITY_TYPE "ssl"
28
+ #define GRPC_TLS_TRANSPORT_SECURITY_TYPE "tls"
28
29
 
29
30
  #define GRPC_X509_CN_PROPERTY_NAME "x509_common_name"
30
31
  #define GRPC_X509_SAN_PROPERTY_NAME "x509_subject_alternative_name"
@@ -186,7 +186,14 @@
186
186
  #endif /* _LP64 */
187
187
  #ifdef __GLIBC__
188
188
  #define GPR_POSIX_CRASH_HANDLER 1
189
+ #ifdef __GLIBC_PREREQ
190
+ #if __GLIBC_PREREQ(2, 12)
189
191
  #define GPR_LINUX_PTHREAD_NAME 1
192
+ #endif
193
+ #else
194
+ // musl libc & others
195
+ #define GPR_LINUX_PTHREAD_NAME 1
196
+ #endif
190
197
  #include <linux/version.h>
191
198
  #else /* musl libc */
192
199
  #define GPR_MUSL_LIBC_COMPAT 1
@@ -19,8 +19,8 @@
19
19
  #include "src/core/ext/filters/client_channel/backend_metric.h"
20
20
 
21
21
  #include "absl/strings/string_view.h"
22
- #include "udpa/data/orca/v1/orca_load_report.upb.h"
23
22
  #include "upb/upb.hpp"
23
+ #include "xds/data/orca/v3/orca_load_report.upb.h"
24
24
 
25
25
  namespace grpc_core {
26
26
 
@@ -28,8 +28,8 @@ namespace {
28
28
 
29
29
  template <typename EntryType>
30
30
  std::map<absl::string_view, double> ParseMap(
31
- udpa_data_orca_v1_OrcaLoadReport* msg,
32
- const EntryType* (*entry_func)(const udpa_data_orca_v1_OrcaLoadReport*,
31
+ xds_data_orca_v3_OrcaLoadReport* msg,
32
+ const EntryType* (*entry_func)(const xds_data_orca_v3_OrcaLoadReport*,
33
33
  size_t*),
34
34
  upb_strview (*key_func)(const EntryType*),
35
35
  double (*value_func)(const EntryType*), Arena* arena) {
@@ -51,30 +51,29 @@ std::map<absl::string_view, double> ParseMap(
51
51
  const LoadBalancingPolicy::BackendMetricData* ParseBackendMetricData(
52
52
  const grpc_slice& serialized_load_report, Arena* arena) {
53
53
  upb::Arena upb_arena;
54
- udpa_data_orca_v1_OrcaLoadReport* msg =
55
- udpa_data_orca_v1_OrcaLoadReport_parse(
56
- reinterpret_cast<const char*>(
57
- GRPC_SLICE_START_PTR(serialized_load_report)),
58
- GRPC_SLICE_LENGTH(serialized_load_report), upb_arena.ptr());
54
+ xds_data_orca_v3_OrcaLoadReport* msg = xds_data_orca_v3_OrcaLoadReport_parse(
55
+ reinterpret_cast<const char*>(
56
+ GRPC_SLICE_START_PTR(serialized_load_report)),
57
+ GRPC_SLICE_LENGTH(serialized_load_report), upb_arena.ptr());
59
58
  if (msg == nullptr) return nullptr;
60
59
  LoadBalancingPolicy::BackendMetricData* backend_metric_data =
61
60
  arena->New<LoadBalancingPolicy::BackendMetricData>();
62
61
  backend_metric_data->cpu_utilization =
63
- udpa_data_orca_v1_OrcaLoadReport_cpu_utilization(msg);
62
+ xds_data_orca_v3_OrcaLoadReport_cpu_utilization(msg);
64
63
  backend_metric_data->mem_utilization =
65
- udpa_data_orca_v1_OrcaLoadReport_mem_utilization(msg);
64
+ xds_data_orca_v3_OrcaLoadReport_mem_utilization(msg);
66
65
  backend_metric_data->requests_per_second =
67
- udpa_data_orca_v1_OrcaLoadReport_rps(msg);
66
+ xds_data_orca_v3_OrcaLoadReport_rps(msg);
68
67
  backend_metric_data->request_cost =
69
- ParseMap<udpa_data_orca_v1_OrcaLoadReport_RequestCostEntry>(
70
- msg, udpa_data_orca_v1_OrcaLoadReport_request_cost_next,
71
- udpa_data_orca_v1_OrcaLoadReport_RequestCostEntry_key,
72
- udpa_data_orca_v1_OrcaLoadReport_RequestCostEntry_value, arena);
68
+ ParseMap<xds_data_orca_v3_OrcaLoadReport_RequestCostEntry>(
69
+ msg, xds_data_orca_v3_OrcaLoadReport_request_cost_next,
70
+ xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_key,
71
+ xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_value, arena);
73
72
  backend_metric_data->utilization =
74
- ParseMap<udpa_data_orca_v1_OrcaLoadReport_UtilizationEntry>(
75
- msg, udpa_data_orca_v1_OrcaLoadReport_utilization_next,
76
- udpa_data_orca_v1_OrcaLoadReport_UtilizationEntry_key,
77
- udpa_data_orca_v1_OrcaLoadReport_UtilizationEntry_value, arena);
73
+ ParseMap<xds_data_orca_v3_OrcaLoadReport_UtilizationEntry>(
74
+ msg, xds_data_orca_v3_OrcaLoadReport_utilization_next,
75
+ xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_key,
76
+ xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_value, arena);
78
77
  return backend_metric_data;
79
78
  }
80
79