grpc 1.28.0 → 1.30.0

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 (497) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +7694 -11190
  3. data/include/grpc/grpc.h +2 -2
  4. data/include/grpc/grpc_security.h +22 -9
  5. data/include/grpc/grpc_security_constants.h +1 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +19 -21
  7. data/include/grpc/impl/codegen/port_platform.h +6 -2
  8. data/include/grpc/module.modulemap +24 -39
  9. data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +203 -236
  11. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
  13. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  14. data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
  15. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
  16. data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
  17. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
  28. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  34. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
  35. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  36. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  37. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  38. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
  48. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
  49. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
  50. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  51. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
  52. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
  53. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  54. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
  55. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  56. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
  57. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
  58. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
  59. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
  60. data/src/core/ext/filters/client_channel/server_address.cc +6 -9
  61. data/src/core/ext/filters/client_channel/server_address.h +6 -12
  62. data/src/core/ext/filters/client_channel/service_config.cc +104 -144
  63. data/src/core/ext/filters/client_channel/service_config.h +28 -98
  64. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  65. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  66. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  67. data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
  68. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  69. data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
  70. data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
  71. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
  72. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
  73. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
  74. data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
  75. data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
  76. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
  77. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
  78. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
  79. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  80. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  83. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  84. data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
  86. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
  89. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  90. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  92. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  93. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  94. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  96. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  97. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  98. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  99. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  100. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  101. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  102. data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
  103. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  104. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
  105. data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
  106. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
  107. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
  108. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  109. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  110. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  111. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  112. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  113. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  114. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
  115. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
  116. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
  117. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
  118. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  119. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  120. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
  121. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  122. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  123. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
  124. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
  125. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
  126. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  127. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  128. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
  129. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
  130. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
  131. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
  133. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
  134. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  135. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  136. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
  137. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
  138. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
  139. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
  140. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
  141. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
  142. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  143. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
  144. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
  145. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
  146. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
  147. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
  148. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
  150. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
  151. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
  152. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
  153. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
  154. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
  155. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
  156. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
  157. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
  158. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
  159. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
  160. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  161. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  162. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  163. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  164. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
  165. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  166. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
  167. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
  168. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
  169. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
  170. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  171. data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
  172. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
  173. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
  174. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
  175. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
  176. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  177. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  178. data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
  179. data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
  180. data/src/core/lib/channel/channel_args.cc +15 -14
  181. data/src/core/lib/channel/channel_args.h +3 -1
  182. data/src/core/lib/channel/channel_stack.h +20 -13
  183. data/src/core/lib/channel/channelz.cc +5 -6
  184. data/src/core/lib/channel/channelz.h +3 -2
  185. data/src/core/lib/channel/channelz_registry.cc +5 -3
  186. data/src/core/lib/channel/connected_channel.cc +7 -5
  187. data/src/core/lib/channel/context.h +1 -1
  188. data/src/core/lib/channel/handshaker.cc +11 -13
  189. data/src/core/lib/channel/handshaker.h +4 -2
  190. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  191. data/src/core/lib/channel/status_util.cc +2 -3
  192. data/src/core/lib/compression/message_compress.cc +5 -1
  193. data/src/core/lib/debug/stats.cc +21 -27
  194. data/src/core/lib/debug/stats.h +3 -1
  195. data/src/core/lib/gpr/spinlock.h +2 -3
  196. data/src/core/lib/gpr/string.cc +2 -26
  197. data/src/core/lib/gpr/string.h +0 -16
  198. data/src/core/lib/gpr/sync_abseil.cc +2 -0
  199. data/src/core/lib/gpr/time.cc +4 -0
  200. data/src/core/lib/gpr/time_posix.cc +1 -1
  201. data/src/core/lib/gprpp/atomic.h +6 -6
  202. data/src/core/lib/gprpp/fork.cc +1 -1
  203. data/src/core/lib/gprpp/host_port.cc +29 -35
  204. data/src/core/lib/gprpp/host_port.h +14 -17
  205. data/src/core/lib/gprpp/map.h +5 -11
  206. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  207. data/src/core/lib/http/format_request.cc +46 -65
  208. data/src/core/lib/http/httpcli.cc +2 -3
  209. data/src/core/lib/http/httpcli.h +2 -3
  210. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  211. data/src/core/lib/http/parser.h +2 -3
  212. data/src/core/lib/iomgr/buffer_list.h +22 -21
  213. data/src/core/lib/iomgr/call_combiner.h +3 -2
  214. data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
  215. data/src/core/lib/iomgr/closure.h +2 -3
  216. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  217. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  218. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  219. data/src/core/lib/iomgr/error.cc +6 -9
  220. data/src/core/lib/iomgr/error.h +0 -1
  221. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  222. data/src/core/lib/iomgr/ev_apple.h +43 -0
  223. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
  224. data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
  225. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  226. data/src/core/lib/iomgr/ev_posix.cc +2 -3
  227. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  228. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  229. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  230. data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
  231. data/src/core/lib/iomgr/port.h +1 -0
  232. data/src/core/lib/iomgr/python_util.h +46 -0
  233. data/src/core/lib/iomgr/resolve_address.h +4 -6
  234. data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
  235. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  236. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  237. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
  238. data/src/core/lib/iomgr/resource_quota.cc +4 -6
  239. data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
  240. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  241. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  242. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  243. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
  244. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  245. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  246. data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
  247. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  248. data/src/core/lib/iomgr/tcp_custom.cc +2 -3
  249. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
  250. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
  251. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
  252. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  253. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  254. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  255. data/src/core/lib/iomgr/timer_generic.cc +2 -3
  256. data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
  257. data/src/core/lib/iomgr/timer_heap.h +2 -3
  258. data/src/core/lib/iomgr/udp_server.cc +9 -14
  259. data/src/core/lib/json/json.h +3 -2
  260. data/src/core/lib/json/json_reader.cc +5 -5
  261. data/src/core/lib/json/json_writer.cc +13 -12
  262. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  263. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  264. data/src/core/lib/security/credentials/credentials.cc +0 -84
  265. data/src/core/lib/security/credentials/credentials.h +8 -59
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  271. data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
  274. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
  276. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
  278. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  279. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
  280. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
  281. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
  282. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
  283. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  284. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  285. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  286. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
  287. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
  288. data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
  289. data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
  290. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
  291. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
  292. data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
  293. data/src/core/lib/slice/slice_intern.cc +2 -3
  294. data/src/core/lib/slice/slice_internal.h +14 -0
  295. data/src/core/lib/slice/slice_utils.h +9 -0
  296. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  297. data/src/core/lib/surface/call.cc +2 -3
  298. data/src/core/lib/surface/call_log_batch.cc +50 -58
  299. data/src/core/lib/surface/channel.cc +53 -31
  300. data/src/core/lib/surface/channel.h +35 -4
  301. data/src/core/lib/surface/channel_ping.cc +2 -3
  302. data/src/core/lib/surface/completion_queue.cc +33 -33
  303. data/src/core/lib/surface/event_string.cc +18 -25
  304. data/src/core/lib/surface/event_string.h +3 -1
  305. data/src/core/lib/surface/init_secure.cc +1 -4
  306. data/src/core/lib/surface/server.cc +570 -369
  307. data/src/core/lib/surface/server.h +32 -0
  308. data/src/core/lib/surface/version.cc +2 -2
  309. data/src/core/lib/transport/byte_stream.h +7 -2
  310. data/src/core/lib/transport/connectivity_state.cc +7 -6
  311. data/src/core/lib/transport/connectivity_state.h +5 -3
  312. data/src/core/lib/transport/metadata.cc +3 -3
  313. data/src/core/lib/transport/metadata_batch.h +2 -3
  314. data/src/core/lib/transport/static_metadata.h +1 -1
  315. data/src/core/lib/transport/status_conversion.cc +6 -14
  316. data/src/core/lib/transport/transport.cc +2 -3
  317. data/src/core/lib/transport/transport.h +3 -2
  318. data/src/core/lib/transport/transport_op_string.cc +61 -102
  319. data/src/core/lib/uri/uri_parser.h +2 -3
  320. data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
  321. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  322. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
  323. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  324. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
  325. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  326. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  327. data/src/core/tsi/fake_transport_security.cc +10 -15
  328. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  329. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  330. data/src/core/tsi/ssl_transport_security.cc +52 -39
  331. data/src/core/tsi/ssl_transport_security.h +8 -8
  332. data/src/core/tsi/ssl_types.h +0 -2
  333. data/src/core/tsi/transport_security.h +6 -9
  334. data/src/core/tsi/transport_security_grpc.h +2 -3
  335. data/src/core/tsi/transport_security_interface.h +3 -3
  336. data/src/ruby/ext/grpc/rb_call.c +9 -1
  337. data/src/ruby/lib/grpc/errors.rb +103 -42
  338. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  339. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  340. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  341. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  342. data/src/ruby/lib/grpc/structs.rb +1 -1
  343. data/src/ruby/lib/grpc/version.rb +1 -1
  344. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  345. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
  346. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  347. data/src/ruby/spec/debug_message_spec.rb +134 -0
  348. data/src/ruby/spec/generic/service_spec.rb +2 -0
  349. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
  350. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
  351. data/src/ruby/spec/testdata/ca.pem +18 -13
  352. data/src/ruby/spec/testdata/client.key +26 -14
  353. data/src/ruby/spec/testdata/client.pem +18 -12
  354. data/src/ruby/spec/testdata/server1.key +26 -14
  355. data/src/ruby/spec/testdata/server1.pem +20 -14
  356. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  357. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  358. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  359. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  360. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  361. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  362. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  363. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  364. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  365. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  366. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  367. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  368. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  369. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  370. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  371. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  372. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  373. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  374. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  375. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  376. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  377. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  378. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  379. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  380. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  381. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  382. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  383. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  384. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  385. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  386. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  387. data/third_party/boringssl-with-bazel/err_data.c +329 -297
  388. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
  389. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
  390. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
  391. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
  392. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
  393. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
  394. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
  395. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
  396. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
  397. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
  398. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  399. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  400. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
  401. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
  403. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
  405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
  407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
  437. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
  438. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
  439. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
  440. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
  442. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
  443. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  444. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  445. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  446. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
  447. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
  448. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
  449. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
  450. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
  451. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
  452. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  453. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
  454. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
  455. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
  456. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
  457. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
  458. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
  459. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
  460. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
  461. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  462. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  463. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
  464. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
  465. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
  466. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
  467. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
  468. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
  469. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
  470. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
  471. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
  472. data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
  473. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
  474. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  475. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
  476. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
  477. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
  478. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
  479. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
  480. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
  481. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
  482. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
  483. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
  484. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
  485. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
  486. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
  487. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
  488. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
  489. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
  490. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
  491. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
  492. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
  493. metadata +111 -37
  494. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
  495. data/src/core/lib/gprpp/string_view.h +0 -60
  496. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
  497. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -64,4 +64,36 @@ int grpc_server_has_open_connections(grpc_server* server);
64
64
  void grpc_server_get_pollsets(grpc_server* server, grpc_pollset*** pollsets,
65
65
  size_t* pollset_count);
66
66
 
67
+ namespace grpc_core {
68
+
69
+ // An object to represent the most relevant characteristics of a newly-allocated
70
+ // call object when using an AllocatingRequestMatcherBatch
71
+ struct ServerBatchCallAllocation {
72
+ grpc_experimental_completion_queue_functor* tag;
73
+ grpc_call** call;
74
+ grpc_metadata_array* initial_metadata;
75
+ grpc_call_details* details;
76
+ };
77
+
78
+ // An object to represent the most relevant characteristics of a newly-allocated
79
+ // call object when using an AllocatingRequestMatcherRegistered
80
+ struct ServerRegisteredCallAllocation {
81
+ grpc_experimental_completion_queue_functor* tag;
82
+ grpc_call** call;
83
+ grpc_metadata_array* initial_metadata;
84
+ gpr_timespec* deadline;
85
+ grpc_byte_buffer** optional_payload;
86
+ };
87
+
88
+ // Functions to specify that a specific registered method or the unregistered
89
+ // collection should use a specific allocator for request matching.
90
+ void SetServerRegisteredMethodAllocator(
91
+ grpc_server* server, grpc_completion_queue* cq, void* method_tag,
92
+ std::function<ServerRegisteredCallAllocation()> allocator);
93
+ void SetServerBatchMethodAllocator(
94
+ grpc_server* server, grpc_completion_queue* cq,
95
+ std::function<ServerBatchCallAllocation()> allocator);
96
+
97
+ } // namespace grpc_core
98
+
67
99
  #endif /* GRPC_CORE_LIB_SURFACE_SERVER_H */
@@ -23,6 +23,6 @@
23
23
 
24
24
  #include <grpc/grpc.h>
25
25
 
26
- const char* grpc_version_string(void) { return "9.0.0"; }
26
+ const char* grpc_version_string(void) { return "10.0.0"; }
27
27
 
28
- const char* grpc_g_stands_for(void) { return "galactic"; }
28
+ const char* grpc_g_stands_for(void) { return "gradius"; }
@@ -26,10 +26,15 @@
26
26
  #include "src/core/lib/iomgr/closure.h"
27
27
 
28
28
  /** Internal bit flag for grpc_begin_message's \a flags signaling the use of
29
- * compression for the message */
29
+ * compression for the message. (Does not apply for stream compression.) */
30
30
  #define GRPC_WRITE_INTERNAL_COMPRESS (0x80000000u)
31
+ /** Internal bit flag for determining whether the message was compressed and had
32
+ * to be decompressed by the message_decompress filter. (Does not apply for
33
+ * stream compression.) */
34
+ #define GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED (0x40000000u)
31
35
  /** Mask of all valid internal flags. */
32
- #define GRPC_WRITE_INTERNAL_USED_MASK (GRPC_WRITE_INTERNAL_COMPRESS)
36
+ #define GRPC_WRITE_INTERNAL_USED_MASK \
37
+ (GRPC_WRITE_INTERNAL_COMPRESS | GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED)
33
38
 
34
39
  namespace grpc_core {
35
40
 
@@ -58,12 +58,13 @@ const char* ConnectivityStateName(grpc_connectivity_state state) {
58
58
  class AsyncConnectivityStateWatcherInterface::Notifier {
59
59
  public:
60
60
  Notifier(RefCountedPtr<AsyncConnectivityStateWatcherInterface> watcher,
61
- grpc_connectivity_state state, Combiner* combiner)
61
+ grpc_connectivity_state state,
62
+ const std::shared_ptr<WorkSerializer>& work_serializer)
62
63
  : watcher_(std::move(watcher)), state_(state) {
63
- if (combiner != nullptr) {
64
- combiner->Run(
65
- GRPC_CLOSURE_INIT(&closure_, SendNotification, this, nullptr),
66
- GRPC_ERROR_NONE);
64
+ if (work_serializer != nullptr) {
65
+ work_serializer->Run(
66
+ [this]() { SendNotification(this, GRPC_ERROR_NONE); },
67
+ DEBUG_LOCATION);
67
68
  } else {
68
69
  GRPC_CLOSURE_INIT(&closure_, SendNotification, this,
69
70
  grpc_schedule_on_exec_ctx);
@@ -89,7 +90,7 @@ class AsyncConnectivityStateWatcherInterface::Notifier {
89
90
 
90
91
  void AsyncConnectivityStateWatcherInterface::Notify(
91
92
  grpc_connectivity_state state) {
92
- new Notifier(Ref(), state, combiner_); // Deletes itself when done.
93
+ new Notifier(Ref(), state, work_serializer_); // Deletes itself when done.
93
94
  }
94
95
 
95
96
  //
@@ -29,6 +29,7 @@
29
29
  #include "src/core/lib/gprpp/orphanable.h"
30
30
  #include "src/core/lib/iomgr/closure.h"
31
31
  #include "src/core/lib/iomgr/exec_ctx.h"
32
+ #include "src/core/lib/iomgr/work_serializer.h"
32
33
 
33
34
  namespace grpc_core {
34
35
 
@@ -70,14 +71,15 @@ class AsyncConnectivityStateWatcherInterface
70
71
 
71
72
  // If \a combiner is nullptr, then the notification will be scheduled on the
72
73
  // ExecCtx.
73
- explicit AsyncConnectivityStateWatcherInterface(Combiner* combiner = nullptr)
74
- : combiner_(combiner) {}
74
+ explicit AsyncConnectivityStateWatcherInterface(
75
+ std::shared_ptr<WorkSerializer> work_serializer = nullptr)
76
+ : work_serializer_(std::move(work_serializer)) {}
75
77
 
76
78
  // Invoked asynchronously when Notify() is called.
77
79
  virtual void OnConnectivityStateChange(grpc_connectivity_state new_state) = 0;
78
80
 
79
81
  private:
80
- Combiner* combiner_;
82
+ std::shared_ptr<WorkSerializer> work_serializer_;
81
83
  };
82
84
 
83
85
  // Tracks connectivity state. Maintains a list of watchers that are
@@ -256,9 +256,9 @@ void grpc_mdctx_global_shutdown() {
256
256
  abort();
257
257
  }
258
258
  }
259
- // For ASAN builds, we don't want to crash here, because that will
260
- // prevent ASAN from providing leak detection information, which is
261
- // far more useful than this simple assertion.
259
+ // For ASAN builds, we don't want to crash here, because that will
260
+ // prevent ASAN from providing leak detection information, which is
261
+ // far more useful than this simple assertion.
262
262
  #ifndef GRPC_ASAN_ENABLED
263
263
  GPR_DEBUG_ASSERT(shard->count == 0);
264
264
  #endif
@@ -154,11 +154,10 @@ inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail(
154
154
 
155
155
  grpc_error* grpc_attach_md_to_error(grpc_error* src, grpc_mdelem md);
156
156
 
157
- typedef struct {
157
+ struct grpc_filtered_mdelem {
158
158
  grpc_error* error;
159
159
  grpc_mdelem md;
160
- } grpc_filtered_mdelem;
161
-
160
+ };
162
161
  #define GRPC_FILTERED_ERROR(error) \
163
162
  { (error), GRPC_MDNULL }
164
163
  #define GRPC_FILTERED_MDELEM(md) \
@@ -46,7 +46,7 @@ constexpr uint64_t kGrpcStaticMetadataInitCanary = 0xCAFEF00DC0FFEE11L;
46
46
  uint64_t StaticMetadataInitCanary();
47
47
  #endif
48
48
  extern const StaticMetadataSlice* g_static_metadata_slice_table;
49
- }
49
+ } // namespace grpc_core
50
50
  inline const grpc_core::StaticMetadataSlice* grpc_static_slice_table() {
51
51
  GPR_DEBUG_ASSERT(grpc_core::StaticMetadataInitCanary() ==
52
52
  grpc_core::kGrpcStaticMetadataInitCanary);
@@ -68,29 +68,21 @@ grpc_status_code grpc_http2_status_to_grpc_status(int status) {
68
68
  case 200:
69
69
  return GRPC_STATUS_OK;
70
70
  case 400:
71
- return GRPC_STATUS_INVALID_ARGUMENT;
71
+ return GRPC_STATUS_INTERNAL;
72
72
  case 401:
73
73
  return GRPC_STATUS_UNAUTHENTICATED;
74
74
  case 403:
75
75
  return GRPC_STATUS_PERMISSION_DENIED;
76
76
  case 404:
77
- return GRPC_STATUS_NOT_FOUND;
78
- case 409:
79
- return GRPC_STATUS_ABORTED;
80
- case 412:
81
- return GRPC_STATUS_FAILED_PRECONDITION;
82
- case 429:
83
- return GRPC_STATUS_RESOURCE_EXHAUSTED;
84
- case 499:
85
- return GRPC_STATUS_CANCELLED;
86
- case 500:
87
- return GRPC_STATUS_UNKNOWN;
88
- case 501:
89
77
  return GRPC_STATUS_UNIMPLEMENTED;
78
+ case 429:
79
+ return GRPC_STATUS_UNAVAILABLE;
80
+ case 502:
81
+ return GRPC_STATUS_UNAVAILABLE;
90
82
  case 503:
91
83
  return GRPC_STATUS_UNAVAILABLE;
92
84
  case 504:
93
- return GRPC_STATUS_DEADLINE_EXCEEDED;
85
+ return GRPC_STATUS_UNAVAILABLE;
94
86
  /* everything else is unknown */
95
87
  default:
96
88
  return GRPC_STATUS_UNKNOWN;
@@ -233,13 +233,12 @@ grpc_transport_op* grpc_make_transport_op(grpc_closure* on_complete) {
233
233
  return &op->op;
234
234
  }
235
235
 
236
- typedef struct {
236
+ struct made_transport_stream_op {
237
237
  grpc_closure outer_on_complete;
238
238
  grpc_closure* inner_on_complete;
239
239
  grpc_transport_stream_op_batch op;
240
240
  grpc_transport_stream_op_batch_payload payload;
241
- } made_transport_stream_op;
242
-
241
+ };
243
242
  static void destroy_made_transport_stream_op(void* arg, grpc_error* error) {
244
243
  made_transport_stream_op* op = static_cast<made_transport_stream_op*>(arg);
245
244
  grpc_closure* c = op->inner_on_complete;
@@ -408,8 +408,9 @@ void grpc_transport_stream_op_batch_finish_with_failure(
408
408
  grpc_transport_stream_op_batch* op, grpc_error* error,
409
409
  grpc_core::CallCombiner* call_combiner);
410
410
 
411
- char* grpc_transport_stream_op_batch_string(grpc_transport_stream_op_batch* op);
412
- char* grpc_transport_op_string(grpc_transport_op* op);
411
+ std::string grpc_transport_stream_op_batch_string(
412
+ grpc_transport_stream_op_batch* op);
413
+ std::string grpc_transport_op_string(grpc_transport_op* op);
413
414
 
414
415
  /* Send a batch of operations on a transport
415
416
 
@@ -25,6 +25,12 @@
25
25
  #include <stdio.h>
26
26
  #include <string.h>
27
27
 
28
+ #include <vector>
29
+
30
+ #include "absl/strings/str_cat.h"
31
+ #include "absl/strings/str_format.h"
32
+ #include "absl/strings/str_join.h"
33
+
28
34
  #include <grpc/support/alloc.h>
29
35
  #include <grpc/support/string_util.h>
30
36
  #include "src/core/lib/gpr/string.h"
@@ -34,177 +40,130 @@
34
40
  /* These routines are here to facilitate debugging - they produce string
35
41
  representations of various transport data structures */
36
42
 
37
- static void put_metadata(gpr_strvec* b, grpc_mdelem md) {
38
- gpr_strvec_add(b, gpr_strdup("key="));
39
- gpr_strvec_add(
40
- b, grpc_dump_slice(GRPC_MDKEY(md), GPR_DUMP_HEX | GPR_DUMP_ASCII));
41
-
42
- gpr_strvec_add(b, gpr_strdup(" value="));
43
- gpr_strvec_add(
44
- b, grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII));
43
+ static void put_metadata(grpc_mdelem md, std::vector<std::string>* out) {
44
+ out->push_back("key=");
45
+ char* dump = grpc_dump_slice(GRPC_MDKEY(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
46
+ out->push_back(dump);
47
+ gpr_free(dump);
48
+ out->push_back(" value=");
49
+ dump = grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
50
+ out->push_back(dump);
51
+ gpr_free(dump);
45
52
  }
46
53
 
47
- static void put_metadata_list(gpr_strvec* b, grpc_metadata_batch md) {
54
+ static void put_metadata_list(grpc_metadata_batch md,
55
+ std::vector<std::string>* out) {
48
56
  grpc_linked_mdelem* m;
49
57
  for (m = md.list.head; m != nullptr; m = m->next) {
50
- if (m != md.list.head) gpr_strvec_add(b, gpr_strdup(", "));
51
- put_metadata(b, m->md);
58
+ if (m != md.list.head) out->push_back(", ");
59
+ put_metadata(m->md, out);
52
60
  }
53
61
  if (md.deadline != GRPC_MILLIS_INF_FUTURE) {
54
- char* tmp;
55
- gpr_asprintf(&tmp, " deadline=%" PRId64, md.deadline);
56
- gpr_strvec_add(b, tmp);
62
+ out->push_back(absl::StrFormat(" deadline=%" PRId64, md.deadline));
57
63
  }
58
64
  }
59
65
 
60
- char* grpc_transport_stream_op_batch_string(
66
+ std::string grpc_transport_stream_op_batch_string(
61
67
  grpc_transport_stream_op_batch* op) {
62
- char* tmp;
63
- char* out;
64
-
65
- gpr_strvec b;
66
- gpr_strvec_init(&b);
68
+ std::vector<std::string> out;
67
69
 
68
70
  if (op->send_initial_metadata) {
69
- gpr_strvec_add(&b, gpr_strdup(" "));
70
- gpr_strvec_add(&b, gpr_strdup("SEND_INITIAL_METADATA{"));
71
- put_metadata_list(
72
- &b, *op->payload->send_initial_metadata.send_initial_metadata);
73
- gpr_strvec_add(&b, gpr_strdup("}"));
71
+ out.push_back(" SEND_INITIAL_METADATA{");
72
+ put_metadata_list(*op->payload->send_initial_metadata.send_initial_metadata,
73
+ &out);
74
+ out.push_back("}");
74
75
  }
75
76
 
76
77
  if (op->send_message) {
77
- gpr_strvec_add(&b, gpr_strdup(" "));
78
78
  if (op->payload->send_message.send_message != nullptr) {
79
- gpr_asprintf(&tmp, "SEND_MESSAGE:flags=0x%08x:len=%d",
80
- op->payload->send_message.send_message->flags(),
81
- op->payload->send_message.send_message->length());
79
+ out.push_back(
80
+ absl::StrFormat(" SEND_MESSAGE:flags=0x%08x:len=%d",
81
+ op->payload->send_message.send_message->flags(),
82
+ op->payload->send_message.send_message->length()));
82
83
  } else {
83
84
  // This can happen when we check a batch after the transport has
84
85
  // processed and cleared the send_message op.
85
- tmp =
86
- gpr_strdup("SEND_MESSAGE(flag and length unknown, already orphaned)");
86
+ out.push_back(" SEND_MESSAGE(flag and length unknown, already orphaned)");
87
87
  }
88
- gpr_strvec_add(&b, tmp);
89
88
  }
90
89
 
91
90
  if (op->send_trailing_metadata) {
92
- gpr_strvec_add(&b, gpr_strdup(" "));
93
- gpr_strvec_add(&b, gpr_strdup("SEND_TRAILING_METADATA{"));
91
+ out.push_back(" SEND_TRAILING_METADATA{");
94
92
  put_metadata_list(
95
- &b, *op->payload->send_trailing_metadata.send_trailing_metadata);
96
- gpr_strvec_add(&b, gpr_strdup("}"));
93
+ *op->payload->send_trailing_metadata.send_trailing_metadata, &out);
94
+ out.push_back("}");
97
95
  }
98
96
 
99
97
  if (op->recv_initial_metadata) {
100
- gpr_strvec_add(&b, gpr_strdup(" "));
101
- gpr_strvec_add(&b, gpr_strdup("RECV_INITIAL_METADATA"));
98
+ out.push_back(" RECV_INITIAL_METADATA");
102
99
  }
103
100
 
104
101
  if (op->recv_message) {
105
- gpr_strvec_add(&b, gpr_strdup(" "));
106
- gpr_strvec_add(&b, gpr_strdup("RECV_MESSAGE"));
102
+ out.push_back(" RECV_MESSAGE");
107
103
  }
108
104
 
109
105
  if (op->recv_trailing_metadata) {
110
- gpr_strvec_add(&b, gpr_strdup(" "));
111
- gpr_strvec_add(&b, gpr_strdup("RECV_TRAILING_METADATA"));
106
+ out.push_back(" RECV_TRAILING_METADATA");
112
107
  }
113
108
 
114
109
  if (op->cancel_stream) {
115
- gpr_strvec_add(&b, gpr_strdup(" "));
116
- const char* msg =
117
- grpc_error_string(op->payload->cancel_stream.cancel_error);
118
- gpr_asprintf(&tmp, "CANCEL:%s", msg);
119
-
120
- gpr_strvec_add(&b, tmp);
110
+ out.push_back(absl::StrCat(
111
+ " CANCEL:",
112
+ grpc_error_string(op->payload->cancel_stream.cancel_error)));
121
113
  }
122
114
 
123
- out = gpr_strvec_flatten(&b, nullptr);
124
- gpr_strvec_destroy(&b);
125
-
126
- return out;
115
+ return absl::StrJoin(out, "");
127
116
  }
128
117
 
129
- char* grpc_transport_op_string(grpc_transport_op* op) {
130
- char* tmp;
131
- char* out;
132
- bool first = true;
133
-
134
- gpr_strvec b;
135
- gpr_strvec_init(&b);
118
+ std::string grpc_transport_op_string(grpc_transport_op* op) {
119
+ std::vector<std::string> out;
136
120
 
137
121
  if (op->start_connectivity_watch != nullptr) {
138
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
139
- first = false;
140
- gpr_asprintf(
141
- &tmp, "START_CONNECTIVITY_WATCH:watcher=%p:from=%s",
122
+ out.push_back(absl::StrFormat(
123
+ " START_CONNECTIVITY_WATCH:watcher=%p:from=%s",
142
124
  op->start_connectivity_watch.get(),
143
- grpc_core::ConnectivityStateName(op->start_connectivity_watch_state));
144
- gpr_strvec_add(&b, tmp);
125
+ grpc_core::ConnectivityStateName(op->start_connectivity_watch_state)));
145
126
  }
146
127
 
147
128
  if (op->stop_connectivity_watch != nullptr) {
148
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
149
- first = false;
150
- gpr_asprintf(&tmp, "STOP_CONNECTIVITY_WATCH:watcher=%p",
151
- op->stop_connectivity_watch);
152
- gpr_strvec_add(&b, tmp);
129
+ out.push_back(absl::StrFormat(" STOP_CONNECTIVITY_WATCH:watcher=%p",
130
+ op->stop_connectivity_watch));
153
131
  }
154
132
 
155
133
  if (op->disconnect_with_error != GRPC_ERROR_NONE) {
156
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
157
- first = false;
158
- const char* err = grpc_error_string(op->disconnect_with_error);
159
- gpr_asprintf(&tmp, "DISCONNECT:%s", err);
160
- gpr_strvec_add(&b, tmp);
134
+ out.push_back(absl::StrCat(" DISCONNECT:",
135
+ grpc_error_string(op->disconnect_with_error)));
161
136
  }
162
137
 
163
138
  if (op->goaway_error) {
164
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
165
- first = false;
166
- const char* msg = grpc_error_string(op->goaway_error);
167
- gpr_asprintf(&tmp, "SEND_GOAWAY:%s", msg);
168
-
169
- gpr_strvec_add(&b, tmp);
139
+ out.push_back(
140
+ absl::StrCat(" SEND_GOAWAY:%s", grpc_error_string(op->goaway_error)));
170
141
  }
171
142
 
172
143
  if (op->set_accept_stream) {
173
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
174
- first = false;
175
- gpr_asprintf(&tmp, "SET_ACCEPT_STREAM:%p(%p,...)", op->set_accept_stream_fn,
176
- op->set_accept_stream_user_data);
177
- gpr_strvec_add(&b, tmp);
144
+ out.push_back(absl::StrFormat(" SET_ACCEPT_STREAM:%p(%p,...)",
145
+ op->set_accept_stream_fn,
146
+ op->set_accept_stream_user_data));
178
147
  }
179
148
 
180
149
  if (op->bind_pollset != nullptr) {
181
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
182
- first = false;
183
- gpr_strvec_add(&b, gpr_strdup("BIND_POLLSET"));
150
+ out.push_back(" BIND_POLLSET");
184
151
  }
185
152
 
186
153
  if (op->bind_pollset_set != nullptr) {
187
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
188
- first = false;
189
- gpr_strvec_add(&b, gpr_strdup("BIND_POLLSET_SET"));
154
+ out.push_back(" BIND_POLLSET_SET");
190
155
  }
191
156
 
192
157
  if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
193
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
194
- // first = false;
195
- gpr_strvec_add(&b, gpr_strdup("SEND_PING"));
158
+ out.push_back(" SEND_PING");
196
159
  }
197
160
 
198
- out = gpr_strvec_flatten(&b, nullptr);
199
- gpr_strvec_destroy(&b);
200
-
201
- return out;
161
+ return absl::StrJoin(out, "");
202
162
  }
203
163
 
204
164
  void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
205
165
  grpc_call_element* elem,
206
166
  grpc_transport_stream_op_batch* op) {
207
- char* str = grpc_transport_stream_op_batch_string(op);
208
- gpr_log(file, line, severity, "OP[%s:%p]: %s", elem->filter->name, elem, str);
209
- gpr_free(str);
167
+ gpr_log(file, line, severity, "OP[%s:%p]: %s", elem->filter->name, elem,
168
+ grpc_transport_stream_op_batch_string(op).c_str());
210
169
  }