grpc 1.35.0 → 1.38.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.
- checksums.yaml +4 -4
- data/Makefile +168 -131
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security.h +16 -11
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +740 -3185
- data/src/core/ext/filters/client_channel/client_channel.h +488 -56
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +10 -2
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +26 -23
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +49 -48
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +22 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +318 -193
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +316 -171
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +3 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +59 -60
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +67 -74
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +33 -23
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +38 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +379 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +346 -178
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +10 -1
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +86 -162
- data/src/core/ext/filters/client_channel/subchannel.h +68 -99
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +47 -42
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +507 -196
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +64 -21
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +2179 -688
- data/src/core/ext/xds/xds_api.h +326 -124
- data/src/core/ext/xds/xds_bootstrap.cc +115 -142
- data/src/core/ext/xds/xds_bootstrap.h +24 -17
- data/src/core/ext/xds/xds_certificate_provider.cc +184 -78
- data/src/core/ext/xds/xds_certificate_provider.h +84 -45
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +462 -183
- data/src/core/ext/xds/xds_client.h +65 -22
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +444 -29
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +108 -5
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
- data/src/core/lib/channel/channel_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +17 -9
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +108 -12
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +9 -50
- data/src/core/lib/channel/handshaker.h +6 -23
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +29 -15
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +13 -9
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +7 -9
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +218 -107
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +16 -13
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
- data/src/core/lib/iomgr/ev_epollex_linux.cc +52 -49
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +10 -6
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -3
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +12 -11
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +23 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +16 -18
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +41 -42
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +27 -25
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +8 -8
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +4 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -14
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +17 -14
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +9 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +16 -15
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -8
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +130 -61
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +31 -8
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +88 -74
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +66 -37
- data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice_intern.cc +5 -6
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +6 -5
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/lame_client.cc +43 -24
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +71 -58
- data/src/core/lib/surface/server.h +91 -28
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/lib/transport/metadata_batch.cc +64 -37
- data/src/core/lib/transport/metadata_batch.h +33 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -28
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +11 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +32 -17
- data/src/core/tsi/ssl_transport_security.h +3 -7
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +742 -724
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +4 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +161 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +121 -71
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +71 -41
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → rand_extra/passive.c} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +737 -551
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +13 -40
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +239 -37
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +702 -219
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +141 -36
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +47 -15
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +159 -13
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +253 -58
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +90 -25
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +450 -104
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +232 -85
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +174 -95
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -78,7 +78,7 @@ struct HandshakerArgs {
|
|
78
78
|
class Handshaker : public RefCounted<Handshaker> {
|
79
79
|
public:
|
80
80
|
~Handshaker() override = default;
|
81
|
-
virtual void Shutdown(
|
81
|
+
virtual void Shutdown(grpc_error_handle why) = 0;
|
82
82
|
virtual void DoHandshake(grpc_tcp_server_acceptor* acceptor,
|
83
83
|
grpc_closure* on_handshake_done,
|
84
84
|
HandshakerArgs* args) = 0;
|
@@ -94,26 +94,13 @@ class HandshakeManager : public RefCounted<HandshakeManager> {
|
|
94
94
|
HandshakeManager();
|
95
95
|
~HandshakeManager() override;
|
96
96
|
|
97
|
-
/// Add \a mgr to the server side list of all pending handshake managers, the
|
98
|
-
/// list starts with \a *head.
|
99
|
-
// Not thread-safe. Caller needs to synchronize.
|
100
|
-
void AddToPendingMgrList(HandshakeManager** head);
|
101
|
-
|
102
|
-
/// Remove \a mgr from the server side list of all pending handshake managers.
|
103
|
-
// Not thread-safe. Caller needs to synchronize.
|
104
|
-
void RemoveFromPendingMgrList(HandshakeManager** head);
|
105
|
-
|
106
|
-
/// Shutdown all pending handshake managers starting at head on the server
|
107
|
-
/// side. Not thread-safe. Caller needs to synchronize.
|
108
|
-
void ShutdownAllPending(grpc_error* why);
|
109
|
-
|
110
97
|
/// Adds a handshaker to the handshake manager.
|
111
98
|
/// Takes ownership of \a handshaker.
|
112
99
|
void Add(RefCountedPtr<Handshaker> handshaker);
|
113
100
|
|
114
101
|
/// Shuts down the handshake manager (e.g., to clean up when the operation is
|
115
102
|
/// aborted in the middle).
|
116
|
-
void Shutdown(
|
103
|
+
void Shutdown(grpc_error_handle why);
|
117
104
|
|
118
105
|
/// Invokes handshakers in the order they were added.
|
119
106
|
/// Takes ownership of \a endpoint, and then passes that ownership to
|
@@ -133,18 +120,18 @@ class HandshakeManager : public RefCounted<HandshakeManager> {
|
|
133
120
|
grpc_iomgr_cb_func on_handshake_done, void* user_data);
|
134
121
|
|
135
122
|
private:
|
136
|
-
bool CallNextHandshakerLocked(
|
123
|
+
bool CallNextHandshakerLocked(grpc_error_handle error);
|
137
124
|
|
138
125
|
// A function used as the handshaker-done callback when chaining
|
139
126
|
// handshakers together.
|
140
|
-
static void CallNextHandshakerFn(void* arg,
|
127
|
+
static void CallNextHandshakerFn(void* arg, grpc_error_handle error);
|
141
128
|
|
142
129
|
// Callback invoked when deadline is exceeded.
|
143
|
-
static void OnTimeoutFn(void* arg,
|
130
|
+
static void OnTimeoutFn(void* arg, grpc_error_handle error);
|
144
131
|
|
145
132
|
static const size_t HANDSHAKERS_INIT_SIZE = 2;
|
146
133
|
|
147
|
-
|
134
|
+
Mutex mu_;
|
148
135
|
bool is_shutdown_ = false;
|
149
136
|
// An array of handshakers added via grpc_handshake_manager_add().
|
150
137
|
absl::InlinedVector<RefCountedPtr<Handshaker>, HANDSHAKERS_INIT_SIZE>
|
@@ -161,10 +148,6 @@ class HandshakeManager : public RefCounted<HandshakeManager> {
|
|
161
148
|
grpc_closure on_handshake_done_;
|
162
149
|
// Handshaker args.
|
163
150
|
HandshakerArgs args_;
|
164
|
-
// Links to the previous and next managers in a list of all pending handshakes
|
165
|
-
// Used at server side only.
|
166
|
-
HandshakeManager* prev_ = nullptr;
|
167
|
-
HandshakeManager* next_ = nullptr;
|
168
151
|
};
|
169
152
|
|
170
153
|
} // namespace grpc_core
|
@@ -75,8 +75,6 @@ const char* grpc_status_code_to_string(grpc_status_code status) {
|
|
75
75
|
return "ALREADY_EXISTS";
|
76
76
|
case GRPC_STATUS_PERMISSION_DENIED:
|
77
77
|
return "PERMISSION_DENIED";
|
78
|
-
case GRPC_STATUS_UNAUTHENTICATED:
|
79
|
-
return "UNAUTHENTICATED";
|
80
78
|
case GRPC_STATUS_RESOURCE_EXHAUSTED:
|
81
79
|
return "RESOURCE_EXHAUSTED";
|
82
80
|
case GRPC_STATUS_FAILED_PRECONDITION:
|
@@ -93,7 +91,19 @@ const char* grpc_status_code_to_string(grpc_status_code status) {
|
|
93
91
|
return "UNAVAILABLE";
|
94
92
|
case GRPC_STATUS_DATA_LOSS:
|
95
93
|
return "DATA_LOSS";
|
94
|
+
case GRPC_STATUS_UNAUTHENTICATED:
|
95
|
+
return "UNAUTHENTICATED";
|
96
96
|
default:
|
97
97
|
return "UNKNOWN";
|
98
98
|
}
|
99
99
|
}
|
100
|
+
|
101
|
+
bool grpc_status_code_from_int(int status_int, grpc_status_code* status) {
|
102
|
+
// The range of status code enum is [0, 16], 0 is OK, 16 is UNAUTHENTICATED.
|
103
|
+
if (status_int < GRPC_STATUS_OK || status_int > GRPC_STATUS_UNAUTHENTICATED) {
|
104
|
+
*status = GRPC_STATUS_UNKNOWN;
|
105
|
+
return false;
|
106
|
+
}
|
107
|
+
*status = static_cast<grpc_status_code>(status_int);
|
108
|
+
return true;
|
109
|
+
}
|
@@ -34,6 +34,11 @@ bool grpc_status_code_from_string(const char* status_str,
|
|
34
34
|
/// Returns the string form of \a status, or "UNKNOWN" if invalid.
|
35
35
|
const char* grpc_status_code_to_string(grpc_status_code status);
|
36
36
|
|
37
|
+
// Converts an int to grpc_status_code. If the int is not a valid status code,
|
38
|
+
// sets the code to GRPC_STATUS_UNKNOWN and returns false. Otherwise, returns
|
39
|
+
// true.
|
40
|
+
bool grpc_status_code_from_int(int status_int, grpc_status_code* status);
|
41
|
+
|
37
42
|
namespace grpc_core {
|
38
43
|
namespace internal {
|
39
44
|
|
@@ -0,0 +1,59 @@
|
|
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
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#include "grpc/event_engine/slice_allocator.h"
|
17
|
+
|
18
|
+
#include <functional>
|
19
|
+
|
20
|
+
#include "absl/status/status.h"
|
21
|
+
|
22
|
+
#include "src/core/lib/iomgr/resource_quota.h"
|
23
|
+
|
24
|
+
namespace grpc_event_engine {
|
25
|
+
namespace experimental {
|
26
|
+
|
27
|
+
SliceAllocator::SliceAllocator(grpc_resource_user* user)
|
28
|
+
: resource_user_(user) {
|
29
|
+
grpc_resource_user_ref(resource_user_);
|
30
|
+
};
|
31
|
+
|
32
|
+
SliceAllocator::~SliceAllocator() { grpc_resource_user_unref(resource_user_); };
|
33
|
+
|
34
|
+
absl::Status SliceAllocator::Allocate(size_t size, SliceBuffer* dest,
|
35
|
+
SliceAllocator::AllocateCallback cb) {
|
36
|
+
// TODO(hork): implement
|
37
|
+
(void)size;
|
38
|
+
(void)dest;
|
39
|
+
(void)cb;
|
40
|
+
return absl::OkStatus();
|
41
|
+
};
|
42
|
+
|
43
|
+
SliceAllocatorFactory::SliceAllocatorFactory(grpc_resource_quota* quota)
|
44
|
+
: resource_quota_(quota) {
|
45
|
+
grpc_resource_quota_ref_internal(resource_quota_);
|
46
|
+
};
|
47
|
+
|
48
|
+
SliceAllocatorFactory::~SliceAllocatorFactory() {
|
49
|
+
grpc_resource_quota_unref_internal(resource_quota_);
|
50
|
+
}
|
51
|
+
|
52
|
+
SliceAllocator SliceAllocatorFactory::CreateSliceAllocator(
|
53
|
+
absl::string_view peer_name) {
|
54
|
+
return SliceAllocator(
|
55
|
+
grpc_resource_user_create(resource_quota_, peer_name.data()));
|
56
|
+
}
|
57
|
+
|
58
|
+
} // namespace experimental
|
59
|
+
} // namespace grpc_event_engine
|
@@ -0,0 +1,38 @@
|
|
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
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#include <string.h>
|
17
|
+
|
18
|
+
#include "grpc/event_engine/event_engine.h"
|
19
|
+
#include "grpc/event_engine/port.h"
|
20
|
+
#include "grpc/support/log.h"
|
21
|
+
|
22
|
+
namespace grpc_event_engine {
|
23
|
+
namespace experimental {
|
24
|
+
|
25
|
+
EventEngine::ResolvedAddress::ResolvedAddress(const sockaddr* address,
|
26
|
+
socklen_t size) {
|
27
|
+
GPR_ASSERT(size <= sizeof(address_));
|
28
|
+
memcpy(&address_, address, size);
|
29
|
+
}
|
30
|
+
|
31
|
+
const struct sockaddr* EventEngine::ResolvedAddress::address() const {
|
32
|
+
return reinterpret_cast<const struct sockaddr*>(address_);
|
33
|
+
}
|
34
|
+
|
35
|
+
socklen_t EventEngine::ResolvedAddress::size() const { return size_; }
|
36
|
+
|
37
|
+
} // namespace experimental
|
38
|
+
} // namespace grpc_event_engine
|
data/src/core/lib/gpr/log.cc
CHANGED
@@ -28,7 +28,12 @@
|
|
28
28
|
#include <stdio.h>
|
29
29
|
#include <string.h>
|
30
30
|
|
31
|
-
|
31
|
+
#ifndef GPR_DEFAULT_LOG_VERBOSITY_STRING
|
32
|
+
#define GPR_DEFAULT_LOG_VERBOSITY_STRING "ERROR"
|
33
|
+
#endif // !GPR_DEFAULT_LOG_VERBOSITY_STRING
|
34
|
+
|
35
|
+
GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_verbosity,
|
36
|
+
GPR_DEFAULT_LOG_VERBOSITY_STRING,
|
32
37
|
"Default gRPC logging verbosity")
|
33
38
|
GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_stacktrace_minloglevel, "",
|
34
39
|
"Messages logged at the same or higher level "
|
@@ -62,8 +62,7 @@ void gpr_mu_unlock(gpr_mu* mu) ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
|
62
62
|
|
63
63
|
int gpr_mu_trylock(gpr_mu* mu) {
|
64
64
|
GPR_TIMER_SCOPE("gpr_mu_trylock", 0);
|
65
|
-
|
66
|
-
return ret;
|
65
|
+
return reinterpret_cast<absl::Mutex*>(mu)->TryLock();
|
67
66
|
}
|
68
67
|
|
69
68
|
/*----------------------------------------*/
|
@@ -89,10 +88,8 @@ int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline) {
|
|
89
88
|
abs_deadline = gpr_convert_clock_type(abs_deadline, GPR_CLOCK_REALTIME);
|
90
89
|
timespec ts = {static_cast<decltype(ts.tv_sec)>(abs_deadline.tv_sec),
|
91
90
|
static_cast<decltype(ts.tv_nsec)>(abs_deadline.tv_nsec)};
|
92
|
-
|
93
|
-
|
94
|
-
absl::TimeFromTimespec(ts)) == true;
|
95
|
-
return ret;
|
91
|
+
return reinterpret_cast<absl::CondVar*>(cv)->WaitWithDeadline(
|
92
|
+
reinterpret_cast<absl::Mutex*>(mu), absl::TimeFromTimespec(ts));
|
96
93
|
}
|
97
94
|
|
98
95
|
void gpr_cv_signal(gpr_cv* cv) {
|
@@ -100,7 +100,7 @@ void gpr_cv_broadcast(gpr_cv* cv) { WakeAllConditionVariable(cv); }
|
|
100
100
|
|
101
101
|
/*----------------------------------------*/
|
102
102
|
|
103
|
-
static void*
|
103
|
+
static void* phony;
|
104
104
|
struct run_once_func_arg {
|
105
105
|
void (*init_function)(void);
|
106
106
|
};
|
@@ -113,7 +113,7 @@ static BOOL CALLBACK run_once_func(gpr_once* once, void* v, void** pv) {
|
|
113
113
|
void gpr_once_init(gpr_once* once, void (*init_function)(void)) {
|
114
114
|
struct run_once_func_arg arg;
|
115
115
|
arg.init_function = init_function;
|
116
|
-
InitOnceExecuteOnce(once, run_once_func, &arg, &
|
116
|
+
InitOnceExecuteOnce(once, run_once_func, &arg, &phony);
|
117
117
|
}
|
118
118
|
|
119
119
|
#endif /* defined(GPR_WINDOWS) && !defined(GPR_ABSEIL_SYNC) && \
|
data/src/core/lib/gprpp/atomic.h
CHANGED
@@ -81,8 +81,8 @@ class Atomic {
|
|
81
81
|
|
82
82
|
// Atomically increment a counter only if the counter value is not zero.
|
83
83
|
// Returns true if increment took place; false if counter is zero.
|
84
|
-
bool IncrementIfNonzero(
|
85
|
-
T count = storage_.load(
|
84
|
+
bool IncrementIfNonzero() {
|
85
|
+
T count = storage_.load(std::memory_order_acquire);
|
86
86
|
do {
|
87
87
|
// If zero, we are done (without an increment). If not, we must do a CAS
|
88
88
|
// to maintain the contract: do not increment the counter if it is already
|
@@ -91,7 +91,7 @@ class Atomic {
|
|
91
91
|
return false;
|
92
92
|
}
|
93
93
|
} while (!CompareExchangeWeak(&count, count + 1, MemoryOrder::ACQ_REL,
|
94
|
-
|
94
|
+
MemoryOrder::ACQUIRE));
|
95
95
|
return true;
|
96
96
|
}
|
97
97
|
|
@@ -170,8 +170,8 @@ class DualRefCounted : public Orphanable {
|
|
170
170
|
#endif
|
171
171
|
const uint64_t prev_ref_pair =
|
172
172
|
refs_.FetchSub(MakeRefPair(0, 1), MemoryOrder::ACQ_REL);
|
173
|
-
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
174
173
|
#ifndef NDEBUG
|
174
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
175
175
|
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
176
176
|
if (trace != nullptr) {
|
177
177
|
gpr_log(GPR_INFO, "%s:%p weak_unref %d -> %d (refs=%d)", trace, this,
|
@@ -192,10 +192,10 @@ class DualRefCounted : public Orphanable {
|
|
192
192
|
#endif
|
193
193
|
const uint64_t prev_ref_pair =
|
194
194
|
refs_.FetchSub(MakeRefPair(0, 1), MemoryOrder::ACQ_REL);
|
195
|
-
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
196
195
|
#ifndef NDEBUG
|
196
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
197
197
|
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
198
|
-
if (
|
198
|
+
if (trace != nullptr) {
|
199
199
|
gpr_log(GPR_INFO, "%s:%p %s:%d weak_unref %d -> %d (refs=%d) %s", trace,
|
200
200
|
this, location.file(), location.line(), weak_refs, weak_refs - 1,
|
201
201
|
strong_refs, reason);
|
data/src/core/lib/gprpp/mpscq.cc
CHANGED
@@ -86,9 +86,9 @@ bool LockedMultiProducerSingleConsumerQueue::Push(Node* node) {
|
|
86
86
|
|
87
87
|
LockedMultiProducerSingleConsumerQueue::Node*
|
88
88
|
LockedMultiProducerSingleConsumerQueue::TryPop() {
|
89
|
-
if (
|
89
|
+
if (mu_.TryLock()) {
|
90
90
|
Node* node = queue_.Pop();
|
91
|
-
|
91
|
+
mu_.Unlock();
|
92
92
|
return node;
|
93
93
|
}
|
94
94
|
return nullptr;
|
@@ -215,31 +215,45 @@ class NonPolymorphicRefCount {
|
|
215
215
|
~NonPolymorphicRefCount() = default;
|
216
216
|
};
|
217
217
|
|
218
|
+
// Behavior of RefCounted<> upon ref count reaching 0.
|
219
|
+
enum UnrefBehavior {
|
220
|
+
// Default behavior: Delete the object.
|
221
|
+
kUnrefDelete,
|
222
|
+
// Do not delete the object upon unref. This is useful in cases where all
|
223
|
+
// existing objects must be tracked in a registry but the object's entry in
|
224
|
+
// the registry cannot be removed from the object's dtor due to
|
225
|
+
// synchronization issues. In this case, the registry can be cleaned up
|
226
|
+
// later by identifying entries for which RefIfNonZero() returns null.
|
227
|
+
kUnrefNoDelete,
|
228
|
+
// Call the object's dtor but do not delete it. This is useful for cases
|
229
|
+
// where the object is stored in memory allocated elsewhere (e.g., the call
|
230
|
+
// arena).
|
231
|
+
kUnrefCallDtor,
|
232
|
+
};
|
233
|
+
|
218
234
|
namespace internal {
|
219
|
-
template <typename T,
|
235
|
+
template <typename T, UnrefBehavior UnrefBehaviorArg>
|
220
236
|
class Delete;
|
221
237
|
template <typename T>
|
222
|
-
class Delete<T,
|
238
|
+
class Delete<T, kUnrefDelete> {
|
223
239
|
public:
|
224
240
|
explicit Delete(T* t) { delete t; }
|
225
241
|
};
|
226
242
|
template <typename T>
|
227
|
-
class Delete<T,
|
243
|
+
class Delete<T, kUnrefNoDelete> {
|
244
|
+
public:
|
245
|
+
explicit Delete(T* /*t*/) {}
|
246
|
+
};
|
247
|
+
template <typename T>
|
248
|
+
class Delete<T, kUnrefCallDtor> {
|
228
249
|
public:
|
229
|
-
explicit Delete(T* t) {}
|
250
|
+
explicit Delete(T* t) { t->~T(); }
|
230
251
|
};
|
231
252
|
} // namespace internal
|
232
253
|
|
233
254
|
// A base class for reference-counted objects.
|
234
255
|
// New objects should be created via new and start with a refcount of 1.
|
235
|
-
// When the refcount reaches 0, the
|
236
|
-
//
|
237
|
-
// If DeleteUponUnref is false, deletion will not occur when the ref
|
238
|
-
// count reaches 0. This is useful in cases where all existing objects
|
239
|
-
// must be tracked in a registry but the object's entry in the registry
|
240
|
-
// cannot be removed from the object's dtor due to synchronization issues.
|
241
|
-
// In this case, the registry can be cleaned up later by identifying
|
242
|
-
// entries for which RefIfNonZero() returns null.
|
256
|
+
// When the refcount reaches 0, executes the specified UnrefBehavior.
|
243
257
|
//
|
244
258
|
// This will commonly be used by CRTP (curiously-recurring template pattern)
|
245
259
|
// e.g., class MyClass : public RefCounted<MyClass>
|
@@ -264,7 +278,7 @@ class Delete<T, false> {
|
|
264
278
|
// ch->Unref();
|
265
279
|
//
|
266
280
|
template <typename Child, typename Impl = PolymorphicRefCount,
|
267
|
-
|
281
|
+
UnrefBehavior UnrefBehaviorArg = kUnrefDelete>
|
268
282
|
class RefCounted : public Impl {
|
269
283
|
public:
|
270
284
|
// Note: Depending on the Impl used, this dtor can be implicitly virtual.
|
@@ -287,12 +301,12 @@ class RefCounted : public Impl {
|
|
287
301
|
// friend of this class.
|
288
302
|
void Unref() {
|
289
303
|
if (GPR_UNLIKELY(refs_.Unref())) {
|
290
|
-
internal::Delete<Child,
|
304
|
+
internal::Delete<Child, UnrefBehaviorArg>(static_cast<Child*>(this));
|
291
305
|
}
|
292
306
|
}
|
293
307
|
void Unref(const DebugLocation& location, const char* reason) {
|
294
308
|
if (GPR_UNLIKELY(refs_.Unref(location, reason))) {
|
295
|
-
internal::Delete<Child,
|
309
|
+
internal::Delete<Child, UnrefBehaviorArg>(static_cast<Child*>(this));
|
296
310
|
}
|
297
311
|
}
|
298
312
|
|
@@ -83,6 +83,7 @@ class RefCountedPtr {
|
|
83
83
|
}
|
84
84
|
|
85
85
|
// Copy assignment.
|
86
|
+
// NOLINTNEXTLINE(bugprone-unhandled-self-assignment)
|
86
87
|
RefCountedPtr& operator=(const RefCountedPtr& other) {
|
87
88
|
// Note: Order of reffing and unreffing is important here in case value_
|
88
89
|
// and other.value_ are the same object.
|
@@ -235,6 +236,7 @@ class WeakRefCountedPtr {
|
|
235
236
|
}
|
236
237
|
|
237
238
|
// Copy assignment.
|
239
|
+
// NOLINTNEXTLINE(bugprone-unhandled-self-assignment)
|
238
240
|
WeakRefCountedPtr& operator=(const WeakRefCountedPtr& other) {
|
239
241
|
// Note: Order of reffing and unreffing is important here in case value_
|
240
242
|
// and other.value_ are the same object.
|
@@ -0,0 +1,407 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2021 the gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
|
+
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
21
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
22
|
+
#include "src/core/lib/gprpp/time_util.h"
|
23
|
+
|
24
|
+
#include <grpc/support/log.h>
|
25
|
+
|
26
|
+
#include "absl/strings/cord.h"
|
27
|
+
#include "absl/strings/escaping.h"
|
28
|
+
#include "absl/strings/match.h"
|
29
|
+
#include "absl/strings/str_format.h"
|
30
|
+
#include "absl/strings/str_join.h"
|
31
|
+
#include "absl/time/clock.h"
|
32
|
+
|
33
|
+
#include "google/protobuf/any.upb.h"
|
34
|
+
#include "google/rpc/status.upb.h"
|
35
|
+
#include "upb/upb.hpp"
|
36
|
+
|
37
|
+
namespace grpc_core {
|
38
|
+
|
39
|
+
namespace {
|
40
|
+
|
41
|
+
#define TYPE_URL_PREFIX "type.googleapis.com/grpc.status."
|
42
|
+
#define TYPE_INT_TAG "int."
|
43
|
+
#define TYPE_STR_TAG "str."
|
44
|
+
#define TYPE_TIME_TAG "time."
|
45
|
+
#define TYPE_CHILDREN_TAG "children"
|
46
|
+
#define TYPE_URL(name) (TYPE_URL_PREFIX name)
|
47
|
+
const absl::string_view kTypeUrlPrefix = TYPE_URL_PREFIX;
|
48
|
+
const absl::string_view kTypeIntTag = TYPE_INT_TAG;
|
49
|
+
const absl::string_view kTypeStrTag = TYPE_STR_TAG;
|
50
|
+
const absl::string_view kTypeTimeTag = TYPE_TIME_TAG;
|
51
|
+
const absl::string_view kTypeChildrenTag = TYPE_CHILDREN_TAG;
|
52
|
+
const absl::string_view kChildrenPropertyUrl = TYPE_URL(TYPE_CHILDREN_TAG);
|
53
|
+
|
54
|
+
const char* GetStatusIntPropertyUrl(StatusIntProperty key) {
|
55
|
+
switch (key) {
|
56
|
+
case StatusIntProperty::kErrorNo:
|
57
|
+
return TYPE_URL(TYPE_INT_TAG "errno");
|
58
|
+
case StatusIntProperty::kFileLine:
|
59
|
+
return TYPE_URL(TYPE_INT_TAG "file_line");
|
60
|
+
case StatusIntProperty::kStreamId:
|
61
|
+
return TYPE_URL(TYPE_INT_TAG "stream_id");
|
62
|
+
case StatusIntProperty::kRpcStatus:
|
63
|
+
return TYPE_URL(TYPE_INT_TAG "grpc_status");
|
64
|
+
case StatusIntProperty::kOffset:
|
65
|
+
return TYPE_URL(TYPE_INT_TAG "offset");
|
66
|
+
case StatusIntProperty::kIndex:
|
67
|
+
return TYPE_URL(TYPE_INT_TAG "index");
|
68
|
+
case StatusIntProperty::kSize:
|
69
|
+
return TYPE_URL(TYPE_INT_TAG "size");
|
70
|
+
case StatusIntProperty::kHttp2Error:
|
71
|
+
return TYPE_URL(TYPE_INT_TAG "http2_error");
|
72
|
+
case StatusIntProperty::kTsiCode:
|
73
|
+
return TYPE_URL(TYPE_INT_TAG "tsi_code");
|
74
|
+
case StatusIntProperty::kWsaError:
|
75
|
+
return TYPE_URL(TYPE_INT_TAG "wsa_error");
|
76
|
+
case StatusIntProperty::kFd:
|
77
|
+
return TYPE_URL(TYPE_INT_TAG "fd");
|
78
|
+
case StatusIntProperty::kHttpStatus:
|
79
|
+
return TYPE_URL(TYPE_INT_TAG "http_status");
|
80
|
+
case StatusIntProperty::kOccurredDuringWrite:
|
81
|
+
return TYPE_URL(TYPE_INT_TAG "occurred_during_write");
|
82
|
+
case StatusIntProperty::ChannelConnectivityState:
|
83
|
+
return TYPE_URL(TYPE_INT_TAG "channel_connectivity_state");
|
84
|
+
case StatusIntProperty::kLbPolicyDrop:
|
85
|
+
return TYPE_URL(TYPE_INT_TAG "lb_policy_drop");
|
86
|
+
}
|
87
|
+
GPR_UNREACHABLE_CODE(return "unknown");
|
88
|
+
}
|
89
|
+
|
90
|
+
const char* GetStatusStrPropertyUrl(StatusStrProperty key) {
|
91
|
+
switch (key) {
|
92
|
+
case StatusStrProperty::kDescription:
|
93
|
+
return TYPE_URL(TYPE_STR_TAG "description");
|
94
|
+
case StatusStrProperty::kFile:
|
95
|
+
return TYPE_URL(TYPE_STR_TAG "file");
|
96
|
+
case StatusStrProperty::kOsError:
|
97
|
+
return TYPE_URL(TYPE_STR_TAG "os_error");
|
98
|
+
case StatusStrProperty::kSyscall:
|
99
|
+
return TYPE_URL(TYPE_STR_TAG "syscall");
|
100
|
+
case StatusStrProperty::kTargetAddress:
|
101
|
+
return TYPE_URL(TYPE_STR_TAG "target_address");
|
102
|
+
case StatusStrProperty::kGrpcMessage:
|
103
|
+
return TYPE_URL(TYPE_STR_TAG "grpc_message");
|
104
|
+
case StatusStrProperty::kRawBytes:
|
105
|
+
return TYPE_URL(TYPE_STR_TAG "raw_bytes");
|
106
|
+
case StatusStrProperty::kTsiError:
|
107
|
+
return TYPE_URL(TYPE_STR_TAG "tsi_error");
|
108
|
+
case StatusStrProperty::kFilename:
|
109
|
+
return TYPE_URL(TYPE_STR_TAG "filename");
|
110
|
+
case StatusStrProperty::kKey:
|
111
|
+
return TYPE_URL(TYPE_STR_TAG "key");
|
112
|
+
case StatusStrProperty::kValue:
|
113
|
+
return TYPE_URL(TYPE_STR_TAG "value");
|
114
|
+
}
|
115
|
+
GPR_UNREACHABLE_CODE(return "unknown");
|
116
|
+
}
|
117
|
+
|
118
|
+
const char* GetStatusTimePropertyUrl(StatusTimeProperty key) {
|
119
|
+
switch (key) {
|
120
|
+
case StatusTimeProperty::kCreated:
|
121
|
+
return TYPE_URL(TYPE_TIME_TAG "created_time");
|
122
|
+
}
|
123
|
+
GPR_UNREACHABLE_CODE(return "unknown");
|
124
|
+
}
|
125
|
+
|
126
|
+
void EncodeUInt32ToBytes(uint32_t v, char* buf) {
|
127
|
+
buf[0] = v & 0xFF;
|
128
|
+
buf[1] = (v >> 8) & 0xFF;
|
129
|
+
buf[2] = (v >> 16) & 0xFF;
|
130
|
+
buf[3] = (v >> 24) & 0xFF;
|
131
|
+
}
|
132
|
+
|
133
|
+
uint32_t DecodeUInt32FromBytes(const char* buf) {
|
134
|
+
return buf[0] | (uint32_t(buf[1]) << 8) | (uint32_t(buf[2]) << 16) |
|
135
|
+
(uint32_t(buf[3]) << 24);
|
136
|
+
}
|
137
|
+
|
138
|
+
std::vector<absl::Status> ParseChildren(absl::Cord children) {
|
139
|
+
std::vector<absl::Status> result;
|
140
|
+
upb::Arena arena;
|
141
|
+
// Cord is flattened to iterate the buffer easily at the cost of memory copy.
|
142
|
+
// TODO(veblush): Optimize this once CordReader is introduced.
|
143
|
+
absl::string_view buf = children.Flatten();
|
144
|
+
size_t cur = 0;
|
145
|
+
while (buf.size() - cur >= sizeof(uint32_t)) {
|
146
|
+
size_t msg_size = DecodeUInt32FromBytes(buf.data() + cur);
|
147
|
+
cur += sizeof(uint32_t);
|
148
|
+
GPR_ASSERT(buf.size() - cur >= msg_size);
|
149
|
+
google_rpc_Status* msg =
|
150
|
+
google_rpc_Status_parse(buf.data() + cur, msg_size, arena.ptr());
|
151
|
+
cur += msg_size;
|
152
|
+
result.push_back(internal::StatusFromProto(msg));
|
153
|
+
}
|
154
|
+
return result;
|
155
|
+
}
|
156
|
+
|
157
|
+
} // namespace
|
158
|
+
|
159
|
+
absl::Status StatusCreate(absl::StatusCode code, absl::string_view msg,
|
160
|
+
const DebugLocation& location,
|
161
|
+
std::initializer_list<absl::Status> children) {
|
162
|
+
absl::Status s(code, msg);
|
163
|
+
if (location.file() != nullptr) {
|
164
|
+
StatusSetStr(&s, StatusStrProperty::kFile, location.file());
|
165
|
+
}
|
166
|
+
if (location.line() != -1) {
|
167
|
+
StatusSetInt(&s, StatusIntProperty::kFileLine, location.line());
|
168
|
+
}
|
169
|
+
StatusSetTime(&s, StatusTimeProperty::kCreated, absl::Now());
|
170
|
+
for (const absl::Status& child : children) {
|
171
|
+
if (!child.ok()) {
|
172
|
+
StatusAddChild(&s, child);
|
173
|
+
}
|
174
|
+
}
|
175
|
+
return s;
|
176
|
+
}
|
177
|
+
|
178
|
+
void StatusSetInt(absl::Status* status, StatusIntProperty key, intptr_t value) {
|
179
|
+
status->SetPayload(GetStatusIntPropertyUrl(key),
|
180
|
+
absl::Cord(std::to_string(value)));
|
181
|
+
}
|
182
|
+
|
183
|
+
absl::optional<intptr_t> StatusGetInt(const absl::Status& status,
|
184
|
+
StatusIntProperty key) {
|
185
|
+
absl::optional<absl::Cord> p =
|
186
|
+
status.GetPayload(GetStatusIntPropertyUrl(key));
|
187
|
+
if (p.has_value()) {
|
188
|
+
absl::optional<absl::string_view> sv = p->TryFlat();
|
189
|
+
intptr_t value;
|
190
|
+
if (sv.has_value()) {
|
191
|
+
if (absl::SimpleAtoi(*sv, &value)) {
|
192
|
+
return value;
|
193
|
+
}
|
194
|
+
} else {
|
195
|
+
if (absl::SimpleAtoi(std::string(*p), &value)) {
|
196
|
+
return value;
|
197
|
+
}
|
198
|
+
}
|
199
|
+
}
|
200
|
+
return {};
|
201
|
+
}
|
202
|
+
|
203
|
+
void StatusSetStr(absl::Status* status, StatusStrProperty key,
|
204
|
+
absl::string_view value) {
|
205
|
+
status->SetPayload(GetStatusStrPropertyUrl(key), absl::Cord(value));
|
206
|
+
}
|
207
|
+
|
208
|
+
absl::optional<std::string> StatusGetStr(const absl::Status& status,
|
209
|
+
StatusStrProperty key) {
|
210
|
+
absl::optional<absl::Cord> p =
|
211
|
+
status.GetPayload(GetStatusStrPropertyUrl(key));
|
212
|
+
if (p.has_value()) {
|
213
|
+
return std::string(*p);
|
214
|
+
}
|
215
|
+
return {};
|
216
|
+
}
|
217
|
+
|
218
|
+
void StatusSetTime(absl::Status* status, StatusTimeProperty key,
|
219
|
+
absl::Time time) {
|
220
|
+
status->SetPayload(GetStatusTimePropertyUrl(key),
|
221
|
+
absl::Cord(absl::string_view(
|
222
|
+
reinterpret_cast<const char*>(&time), sizeof(time))));
|
223
|
+
}
|
224
|
+
|
225
|
+
absl::optional<absl::Time> StatusGetTime(const absl::Status& status,
|
226
|
+
StatusTimeProperty key) {
|
227
|
+
absl::optional<absl::Cord> p =
|
228
|
+
status.GetPayload(GetStatusTimePropertyUrl(key));
|
229
|
+
if (p.has_value()) {
|
230
|
+
absl::optional<absl::string_view> sv = p->TryFlat();
|
231
|
+
if (sv.has_value()) {
|
232
|
+
return *reinterpret_cast<const absl::Time*>(sv->data());
|
233
|
+
} else {
|
234
|
+
std::string s = std::string(*p);
|
235
|
+
return *reinterpret_cast<const absl::Time*>(s.c_str());
|
236
|
+
}
|
237
|
+
}
|
238
|
+
return {};
|
239
|
+
}
|
240
|
+
|
241
|
+
void StatusAddChild(absl::Status* status, absl::Status child) {
|
242
|
+
upb::Arena arena;
|
243
|
+
// Serialize msg to buf
|
244
|
+
google_rpc_Status* msg = internal::StatusToProto(child, arena.ptr());
|
245
|
+
size_t buf_len = 0;
|
246
|
+
char* buf = google_rpc_Status_serialize(msg, arena.ptr(), &buf_len);
|
247
|
+
// Append (msg-length and msg) to children payload
|
248
|
+
absl::optional<absl::Cord> old_children =
|
249
|
+
status->GetPayload(kChildrenPropertyUrl);
|
250
|
+
absl::Cord children;
|
251
|
+
if (old_children.has_value()) {
|
252
|
+
children = *old_children;
|
253
|
+
}
|
254
|
+
char head_buf[sizeof(uint32_t)];
|
255
|
+
EncodeUInt32ToBytes(buf_len, head_buf);
|
256
|
+
children.Append(absl::string_view(head_buf, sizeof(uint32_t)));
|
257
|
+
children.Append(absl::string_view(buf, buf_len));
|
258
|
+
status->SetPayload(kChildrenPropertyUrl, std::move(children));
|
259
|
+
}
|
260
|
+
|
261
|
+
std::vector<absl::Status> StatusGetChildren(absl::Status status) {
|
262
|
+
absl::optional<absl::Cord> children = status.GetPayload(kChildrenPropertyUrl);
|
263
|
+
return children.has_value() ? ParseChildren(*children)
|
264
|
+
: std::vector<absl::Status>();
|
265
|
+
}
|
266
|
+
|
267
|
+
std::string StatusToString(const absl::Status& status) {
|
268
|
+
if (status.ok()) {
|
269
|
+
return "OK";
|
270
|
+
}
|
271
|
+
std::string head;
|
272
|
+
absl::StrAppend(&head, absl::StatusCodeToString(status.code()));
|
273
|
+
if (!status.message().empty()) {
|
274
|
+
absl::StrAppend(&head, ":", status.message());
|
275
|
+
}
|
276
|
+
std::vector<std::string> kvs;
|
277
|
+
absl::optional<absl::Cord> children;
|
278
|
+
status.ForEachPayload([&](absl::string_view type_url,
|
279
|
+
const absl::Cord& payload) {
|
280
|
+
if (absl::StartsWith(type_url, kTypeUrlPrefix)) {
|
281
|
+
type_url.remove_prefix(kTypeUrlPrefix.size());
|
282
|
+
if (type_url == kTypeChildrenTag) {
|
283
|
+
children = payload;
|
284
|
+
return;
|
285
|
+
}
|
286
|
+
absl::string_view payload_view;
|
287
|
+
std::string payload_storage;
|
288
|
+
if (payload.TryFlat().has_value()) {
|
289
|
+
payload_view = payload.TryFlat().value();
|
290
|
+
} else {
|
291
|
+
payload_storage = std::string(payload);
|
292
|
+
payload_view = payload_storage;
|
293
|
+
}
|
294
|
+
if (absl::StartsWith(type_url, kTypeIntTag)) {
|
295
|
+
type_url.remove_prefix(kTypeIntTag.size());
|
296
|
+
kvs.push_back(absl::StrCat(type_url, ":", payload_view));
|
297
|
+
} else if (absl::StartsWith(type_url, kTypeStrTag)) {
|
298
|
+
type_url.remove_prefix(kTypeStrTag.size());
|
299
|
+
kvs.push_back(absl::StrCat(type_url, ":\"",
|
300
|
+
absl::CHexEscape(payload_view), "\""));
|
301
|
+
} else if (absl::StartsWith(type_url, kTypeTimeTag)) {
|
302
|
+
type_url.remove_prefix(kTypeTimeTag.size());
|
303
|
+
absl::Time t =
|
304
|
+
*reinterpret_cast<const absl::Time*>(payload_view.data());
|
305
|
+
kvs.push_back(absl::StrCat(type_url, ":\"", absl::FormatTime(t), "\""));
|
306
|
+
} else {
|
307
|
+
kvs.push_back(absl::StrCat(type_url, ":\"",
|
308
|
+
absl::CHexEscape(payload_view), "\""));
|
309
|
+
}
|
310
|
+
} else {
|
311
|
+
absl::optional<absl::string_view> payload_view = payload.TryFlat();
|
312
|
+
std::string payload_str = absl::CHexEscape(
|
313
|
+
payload_view.has_value() ? *payload_view : std::string(payload));
|
314
|
+
kvs.push_back(absl::StrCat(type_url, ":\"", payload_str, "\""));
|
315
|
+
}
|
316
|
+
});
|
317
|
+
if (children.has_value()) {
|
318
|
+
std::vector<absl::Status> children_status = ParseChildren(*children);
|
319
|
+
std::vector<std::string> children_text;
|
320
|
+
children_text.reserve(children_status.size());
|
321
|
+
for (const absl::Status& child_status : children_status) {
|
322
|
+
children_text.push_back(StatusToString(child_status));
|
323
|
+
}
|
324
|
+
kvs.push_back(
|
325
|
+
absl::StrCat("children:[", absl::StrJoin(children_text, ", "), "]"));
|
326
|
+
}
|
327
|
+
return kvs.empty() ? head
|
328
|
+
: absl::StrCat(head, " {", absl::StrJoin(kvs, ", "), "}");
|
329
|
+
}
|
330
|
+
|
331
|
+
namespace internal {
|
332
|
+
|
333
|
+
google_rpc_Status* StatusToProto(absl::Status status, upb_arena* arena) {
|
334
|
+
google_rpc_Status* msg = google_rpc_Status_new(arena);
|
335
|
+
google_rpc_Status_set_code(msg, int32_t(status.code()));
|
336
|
+
google_rpc_Status_set_message(
|
337
|
+
msg, upb_strview_make(status.message().data(), status.message().size()));
|
338
|
+
status.ForEachPayload([&](absl::string_view type_url,
|
339
|
+
const absl::Cord& payload) {
|
340
|
+
google_protobuf_Any* any = google_rpc_Status_add_details(msg, arena);
|
341
|
+
char* type_url_buf =
|
342
|
+
reinterpret_cast<char*>(upb_arena_malloc(arena, type_url.size()));
|
343
|
+
memcpy(type_url_buf, type_url.data(), type_url.size());
|
344
|
+
google_protobuf_Any_set_type_url(
|
345
|
+
any, upb_strview_make(type_url_buf, type_url.size()));
|
346
|
+
absl::optional<absl::string_view> v_view = payload.TryFlat();
|
347
|
+
if (v_view.has_value()) {
|
348
|
+
google_protobuf_Any_set_value(
|
349
|
+
any, upb_strview_make(v_view->data(), v_view->size()));
|
350
|
+
} else {
|
351
|
+
char* buf =
|
352
|
+
reinterpret_cast<char*>(upb_arena_malloc(arena, payload.size()));
|
353
|
+
char* cur = buf;
|
354
|
+
for (absl::string_view chunk : payload.Chunks()) {
|
355
|
+
memcpy(cur, chunk.data(), chunk.size());
|
356
|
+
cur += chunk.size();
|
357
|
+
}
|
358
|
+
google_protobuf_Any_set_value(any, upb_strview_make(buf, payload.size()));
|
359
|
+
}
|
360
|
+
});
|
361
|
+
return msg;
|
362
|
+
}
|
363
|
+
|
364
|
+
absl::Status StatusFromProto(google_rpc_Status* msg) {
|
365
|
+
int32_t code = google_rpc_Status_code(msg);
|
366
|
+
upb_strview message = google_rpc_Status_message(msg);
|
367
|
+
absl::Status status(static_cast<absl::StatusCode>(code),
|
368
|
+
absl::string_view(message.data, message.size));
|
369
|
+
size_t detail_len;
|
370
|
+
const google_protobuf_Any* const* details =
|
371
|
+
google_rpc_Status_details(msg, &detail_len);
|
372
|
+
for (size_t i = 0; i < detail_len; i++) {
|
373
|
+
upb_strview type_url = google_protobuf_Any_type_url(details[i]);
|
374
|
+
upb_strview value = google_protobuf_Any_value(details[i]);
|
375
|
+
status.SetPayload(absl::string_view(type_url.data, type_url.size),
|
376
|
+
absl::Cord(absl::string_view(value.data, value.size)));
|
377
|
+
}
|
378
|
+
return status;
|
379
|
+
}
|
380
|
+
|
381
|
+
uintptr_t StatusAllocPtr(absl::Status s) {
|
382
|
+
// This relies the fact that absl::Status has only one member, StatusRep*
|
383
|
+
// so the sizeof(absl::Status) has the same size of intptr_t and StatusRep*
|
384
|
+
// can be stolen using placement allocation.
|
385
|
+
static_assert(sizeof(intptr_t) == sizeof(absl::Status),
|
386
|
+
"absl::Status should be as big as intptr_t");
|
387
|
+
// This does two things;
|
388
|
+
// 1. Copies StatusRep* of absl::Status to ptr
|
389
|
+
// 2. Increases the counter of StatusRep if it's not inlined
|
390
|
+
uintptr_t ptr;
|
391
|
+
new (&ptr) absl::Status(s);
|
392
|
+
return ptr;
|
393
|
+
}
|
394
|
+
|
395
|
+
void StatusFreePtr(uintptr_t ptr) {
|
396
|
+
// Decreases the counter of StatusRep if it's not inlined.
|
397
|
+
reinterpret_cast<absl::Status*>(&ptr)->~Status();
|
398
|
+
}
|
399
|
+
|
400
|
+
absl::Status StatusGetFromPtr(uintptr_t ptr) {
|
401
|
+
// Constructs Status from ptr having the address of StatusRep.
|
402
|
+
return *reinterpret_cast<absl::Status*>(&ptr);
|
403
|
+
}
|
404
|
+
|
405
|
+
} // namespace internal
|
406
|
+
|
407
|
+
} // namespace grpc_core
|