grpc 1.37.1 → 1.40.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +112 -59
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +48 -0
- data/include/grpc/event_engine/event_engine.h +330 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +66 -0
- data/include/grpc/grpc.h +11 -4
- data/include/grpc/grpc_security.h +32 -0
- data/include/grpc/grpc_security_constants.h +15 -0
- data/include/grpc/impl/codegen/grpc_types.h +44 -19
- data/include/grpc/impl/codegen/port_platform.h +46 -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 +975 -3282
- data/src/core/ext/filters/client_channel/client_channel.h +513 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +20 -7
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
- 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 +53 -51
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- 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 +14 -23
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +16 -16
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -17
- 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 +17 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +53 -65
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +36 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +33 -55
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +151 -163
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +70 -46
- 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/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
- 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_event_engine.cc +31 -0
- 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 +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- 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_event_engine.cc +28 -0
- 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 +18 -12
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- 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 +20 -13
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +158 -102
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- 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 +2598 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/server_address.cc +1 -1
- 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_call_data.h +45 -5
- 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 +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- 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 +19 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +33 -23
- 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 +12 -10
- 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 +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -46
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +141 -126
- 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 +9 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -16
- 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 +11 -10
- 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_parser.cc +652 -736
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
- 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 +33 -28
- data/src/core/ext/transport/chttp2/transport/parsing.cc +129 -106
- data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +56 -35
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -76
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +97 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +45 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +67 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +66 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +227 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +32 -24
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -73
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +27 -19
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +57 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +29 -17
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +15 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +85 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +274 -91
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +11 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +1 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +82 -66
- data/src/core/ext/upb-generated/validate/validate.upb.h +220 -124
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +53 -52
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +318 -277
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +437 -410
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +198 -170
- 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 +9 -8
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +219 -163
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +29 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +135 -125
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +131 -123
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +32 -24
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -55
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +684 -664
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +441 -375
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +122 -114
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +112 -79
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -160
- 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 +665 -317
- data/src/core/ext/xds/xds_api.h +52 -14
- data/src/core/ext/xds/xds_bootstrap.cc +101 -160
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +370 -215
- data/src/core/ext/xds/xds_client.h +38 -28
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_http_filters.cc +3 -2
- data/src/core/ext/xds/xds_http_filters.h +3 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- 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 +16 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +11 -10
- 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 +21 -13
- data/src/core/lib/channel/channelz.h +3 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/context.h +3 -0
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- data/src/core/lib/channel/status_util.h +4 -0
- data/src/core/lib/compression/stream_compression.h +1 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/debug/stats.h +1 -1
- data/src/core/lib/event_engine/endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -2
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +183 -0
- data/src/core/lib/gprpp/sync.h +2 -30
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- 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 +8 -10
- data/src/core/lib/iomgr/buffer_list.h +4 -5
- 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 +3 -3
- 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_event_engine.cc +33 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +168 -61
- data/src/core/lib/iomgr/error.h +217 -106
- 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 +5 -5
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
- data/src/core/lib/iomgr/event_engine/closure.h +33 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
- data/src/core/lib/iomgr/exec_ctx.cc +12 -4
- data/src/core/lib/iomgr/exec_ctx.h +4 -5
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
- data/src/core/lib/iomgr/executor/threadpool.h +2 -2
- 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 +2 -2
- 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 +3 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
- 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 +7 -7
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_uv.cc +3 -1
- data/src/core/lib/iomgr/pollset_uv.h +5 -1
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +7 -5
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -4
- data/src/core/lib/iomgr/resolve_address.h +12 -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 +13 -10
- data/src/core/lib/iomgr/sockaddr.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +15 -2
- data/src/core/lib/iomgr/socket_mutator.h +26 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
- 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 +22 -19
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +7 -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 +78 -73
- data/src/core/lib/iomgr/tcp_posix.h +8 -0
- 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 +26 -25
- data/src/core/lib/iomgr/tcp_server_posix.cc +29 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
- 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 +25 -23
- 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.h +6 -1
- 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 +6 -6
- 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_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 +5 -6
- data/src/core/lib/matchers/matchers.cc +46 -58
- data/src/core/lib/matchers/matchers.h +30 -29
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- 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 +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- 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 +15 -12
- 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 +5 -4
- 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 +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
- 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/jwt/json_token.cc +2 -2
- 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 -5
- 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/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 +68 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +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 +2 -2
- 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 +22 -9
- 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 +27 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +60 -76
- 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 +45 -36
- data/src/core/lib/security/transport/server_auth_filter.cc +17 -18
- 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_internal.h +1 -0
- data/src/core/lib/surface/call.cc +72 -52
- data/src/core/lib/surface/call.h +13 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +68 -69
- data/src/core/lib/surface/completion_queue.h +3 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -2
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/init.h +10 -1
- data/src/core/lib/surface/lame_client.cc +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +31 -23
- data/src/core/lib/surface/server.h +19 -18
- 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 +2 -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 +21 -10
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +6 -4
- data/src/core/lib/transport/transport_op_string.cc +6 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/crypt/gsec.h +6 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -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/test_services_pb.rb +6 -6
- 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/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 +483 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
- 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 +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
- 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 +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- 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 +52 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
- 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 +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
- 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 +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
- 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 +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -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 +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- 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 +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -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 +20 -49
- 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/hpke.h +325 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- 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 +51 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +77 -195
- metadata +116 -51
- data/src/core/lib/gpr/arena.h +0 -47
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -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
|
@@ -0,0 +1,183 @@
|
|
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
|
+
#ifndef GRPC_CORE_LIB_GPRPP_STATUS_HELPER_H
|
20
|
+
#define GRPC_CORE_LIB_GPRPP_STATUS_HELPER_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#include <vector>
|
25
|
+
|
26
|
+
#include "absl/status/status.h"
|
27
|
+
#include "absl/time/time.h"
|
28
|
+
#include "absl/types/optional.h"
|
29
|
+
|
30
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
31
|
+
|
32
|
+
extern "C" {
|
33
|
+
struct google_rpc_Status;
|
34
|
+
struct upb_arena;
|
35
|
+
}
|
36
|
+
|
37
|
+
namespace grpc_core {
|
38
|
+
|
39
|
+
/// This enum should have the same value of grpc_error_ints
|
40
|
+
// TODO(veblush): Use camel-case names once migration to absl::Status is done.
|
41
|
+
enum class StatusIntProperty {
|
42
|
+
/// 'errno' from the operating system
|
43
|
+
kErrorNo,
|
44
|
+
/// __LINE__ from the call site creating the error
|
45
|
+
kFileLine,
|
46
|
+
/// stream identifier: for errors that are associated with an individual
|
47
|
+
/// wire stream
|
48
|
+
kStreamId,
|
49
|
+
/// grpc status code representing this error
|
50
|
+
// TODO(veblush): Remove this after grpc_error is replaced with absl::Status
|
51
|
+
kRpcStatus,
|
52
|
+
/// offset into some binary blob (usually represented by
|
53
|
+
/// RAW_BYTES) where the error occurred
|
54
|
+
kOffset,
|
55
|
+
/// context sensitive index associated with the error
|
56
|
+
kIndex,
|
57
|
+
/// context sensitive size associated with the error
|
58
|
+
kSize,
|
59
|
+
/// http2 error code associated with the error (see the HTTP2 RFC)
|
60
|
+
kHttp2Error,
|
61
|
+
/// TSI status code associated with the error
|
62
|
+
kTsiCode,
|
63
|
+
/// WSAGetLastError() reported when this error occurred
|
64
|
+
kWsaError,
|
65
|
+
/// File descriptor associated with this error
|
66
|
+
kFd,
|
67
|
+
/// HTTP status (i.e. 404)
|
68
|
+
kHttpStatus,
|
69
|
+
/// chttp2: did the error occur while a write was in progress
|
70
|
+
kOccurredDuringWrite,
|
71
|
+
/// channel connectivity state associated with the error
|
72
|
+
ChannelConnectivityState,
|
73
|
+
/// LB policy drop
|
74
|
+
kLbPolicyDrop,
|
75
|
+
};
|
76
|
+
|
77
|
+
/// This enum should have the same value of grpc_error_strs
|
78
|
+
// TODO(veblush): Use camel-case names once migration to absl::Status is done.
|
79
|
+
enum class StatusStrProperty {
|
80
|
+
/// top-level textual description of this error
|
81
|
+
kDescription,
|
82
|
+
/// source file in which this error occurred
|
83
|
+
kFile,
|
84
|
+
/// operating system description of this error
|
85
|
+
kOsError,
|
86
|
+
/// syscall that generated this error
|
87
|
+
kSyscall,
|
88
|
+
/// peer that we were trying to communicate when this error occurred
|
89
|
+
kTargetAddress,
|
90
|
+
/// grpc status message associated with this error
|
91
|
+
kGrpcMessage,
|
92
|
+
/// hex dump (or similar) with the data that generated this error
|
93
|
+
kRawBytes,
|
94
|
+
/// tsi error string associated with this error
|
95
|
+
kTsiError,
|
96
|
+
/// filename that we were trying to read/write when this error occurred
|
97
|
+
kFilename,
|
98
|
+
/// key associated with the error
|
99
|
+
kKey,
|
100
|
+
/// value associated with the error
|
101
|
+
kValue,
|
102
|
+
};
|
103
|
+
|
104
|
+
/// This enum should have the same value of grpc_error_times
|
105
|
+
enum class StatusTimeProperty {
|
106
|
+
/// timestamp of error creation
|
107
|
+
kCreated,
|
108
|
+
};
|
109
|
+
|
110
|
+
/// Creates a status with given additional information
|
111
|
+
absl::Status StatusCreate(
|
112
|
+
absl::StatusCode code, absl::string_view msg, const DebugLocation& location,
|
113
|
+
std::initializer_list<absl::Status> children) GRPC_MUST_USE_RESULT;
|
114
|
+
|
115
|
+
/// Sets the int property to the status
|
116
|
+
void StatusSetInt(absl::Status* status, StatusIntProperty key, intptr_t value);
|
117
|
+
|
118
|
+
/// Gets the int property from the status
|
119
|
+
absl::optional<intptr_t> StatusGetInt(
|
120
|
+
const absl::Status& status, StatusIntProperty key) GRPC_MUST_USE_RESULT;
|
121
|
+
|
122
|
+
/// Sets the str property to the status
|
123
|
+
void StatusSetStr(absl::Status* status, StatusStrProperty key,
|
124
|
+
absl::string_view value);
|
125
|
+
|
126
|
+
/// Gets the str property from the status
|
127
|
+
absl::optional<std::string> StatusGetStr(
|
128
|
+
const absl::Status& status, StatusStrProperty key) GRPC_MUST_USE_RESULT;
|
129
|
+
|
130
|
+
/// Sets the time property to the status
|
131
|
+
void StatusSetTime(absl::Status* status, StatusTimeProperty key,
|
132
|
+
absl::Time time);
|
133
|
+
|
134
|
+
/// Gets the time property from the status
|
135
|
+
absl::optional<absl::Time> StatusGetTime(
|
136
|
+
const absl::Status& status, StatusTimeProperty key) GRPC_MUST_USE_RESULT;
|
137
|
+
|
138
|
+
/// Adds a child status to status
|
139
|
+
void StatusAddChild(absl::Status* status, absl::Status child);
|
140
|
+
|
141
|
+
/// Returns all children status from a status
|
142
|
+
std::vector<absl::Status> StatusGetChildren(absl::Status status)
|
143
|
+
GRPC_MUST_USE_RESULT;
|
144
|
+
|
145
|
+
/// Returns a string representation from status
|
146
|
+
/// Error status will be like
|
147
|
+
/// STATUS[:MESSAGE] [{PAYLOADS[, children:[CHILDREN-STATUS-LISTS]]}]
|
148
|
+
/// e.g.
|
149
|
+
/// CANCELLATION:SampleMessage {errno:'2021', line:'54', children:[ABORTED]}
|
150
|
+
std::string StatusToString(const absl::Status& status) GRPC_MUST_USE_RESULT;
|
151
|
+
|
152
|
+
namespace internal {
|
153
|
+
|
154
|
+
/// Builds a upb message, google_rpc_Status from a status
|
155
|
+
/// This is for internal implementation & test only
|
156
|
+
google_rpc_Status* StatusToProto(absl::Status status,
|
157
|
+
upb_arena* arena) GRPC_MUST_USE_RESULT;
|
158
|
+
|
159
|
+
/// Builds a status from a upb message, google_rpc_Status
|
160
|
+
/// This is for internal implementation & test only
|
161
|
+
absl::Status StatusFromProto(google_rpc_Status* msg) GRPC_MUST_USE_RESULT;
|
162
|
+
|
163
|
+
/// The same value of grpc_core::internal::StatusAllocPtr(absl::OkStatus())
|
164
|
+
static constexpr uintptr_t kOkStatusPtr = 0;
|
165
|
+
|
166
|
+
/// Returns ptr where the given status is copied into.
|
167
|
+
/// This ptr can be used to get Status later and should be freed by
|
168
|
+
/// StatusFreePtr. This shouldn't be used except migration purpose.
|
169
|
+
uintptr_t StatusAllocPtr(absl::Status s);
|
170
|
+
|
171
|
+
/// Frees the allocated status at ptr.
|
172
|
+
/// This shouldn't be used except migration purpose.
|
173
|
+
void StatusFreePtr(uintptr_t ptr);
|
174
|
+
|
175
|
+
/// Get the status from ptr.
|
176
|
+
/// This shouldn't be used except migration purpose.
|
177
|
+
absl::Status StatusGetFromPtr(uintptr_t ptr);
|
178
|
+
|
179
|
+
} // namespace internal
|
180
|
+
|
181
|
+
} // namespace grpc_core
|
182
|
+
|
183
|
+
#endif // GRPC_CORE_LIB_GPRPP_STATUS_HELPER_H
|