grpc 1.37.1 → 1.39.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 +96 -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 +334 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +91 -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 +28 -13
- data/include/grpc/impl/codegen/port_platform.h +22 -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 +630 -3103
- data/src/core/ext/filters/client_channel/client_channel.h +489 -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 +1 -1
- 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 +46 -43
- 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 +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +755 -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 +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 +46 -54
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +146 -155
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- 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 +60 -32
- 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 +2449 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +306 -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_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 +25 -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 +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 +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 +44 -45
- 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/chttp2_transport.cc +139 -120
- 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 +8 -8
- 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_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 +65 -58
- 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/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 +348 -199
- data/src/core/ext/xds/xds_api.h +21 -12
- data/src/core/ext/xds/xds_bootstrap.cc +97 -159
- 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 +310 -178
- data/src/core/ext/xds/xds_client.h +41 -27
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- 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/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +10 -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 +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/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- 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/slice_allocator.cc +89 -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/wrap_memcpy.cc +2 -1
- 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/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 +7 -9
- 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_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 +194 -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 +243 -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 +1 -1
- 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 +11 -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 +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 +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 +28 -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/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 +4 -4
- data/src/core/lib/matchers/matchers.cc +39 -39
- data/src/core/lib/matchers/matchers.h +28 -28
- 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 +19 -13
- 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 +56 -60
- 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 +33 -32
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
- 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/surface/call.cc +67 -46
- 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 +28 -22
- data/src/core/lib/surface/server.h +16 -15
- 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 +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
- metadata +94 -46
- 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,91 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_EVENT_ENGINE_SLICE_ALLOCATOR_H
|
15
|
+
#define GRPC_EVENT_ENGINE_SLICE_ALLOCATOR_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include <functional>
|
20
|
+
|
21
|
+
#include "absl/status/status.h"
|
22
|
+
|
23
|
+
// forward-declaring an internal struct, not used publicly.
|
24
|
+
struct grpc_resource_quota;
|
25
|
+
struct grpc_resource_user;
|
26
|
+
struct grpc_slice_buffer;
|
27
|
+
|
28
|
+
namespace grpc_event_engine {
|
29
|
+
namespace experimental {
|
30
|
+
|
31
|
+
// TODO(hork): stubbed out here, to be replaced with a real version in next PR.
|
32
|
+
class SliceBuffer {
|
33
|
+
public:
|
34
|
+
SliceBuffer() { abort(); }
|
35
|
+
explicit SliceBuffer(grpc_slice_buffer*) { abort(); }
|
36
|
+
};
|
37
|
+
|
38
|
+
class SliceAllocator {
|
39
|
+
public:
|
40
|
+
// gRPC-internal constructor
|
41
|
+
explicit SliceAllocator(grpc_resource_user* user);
|
42
|
+
// Not copyable
|
43
|
+
SliceAllocator(SliceAllocator& other) = delete;
|
44
|
+
SliceAllocator& operator=(const SliceAllocator& other) = delete;
|
45
|
+
// Moveable
|
46
|
+
SliceAllocator(SliceAllocator&& other) noexcept;
|
47
|
+
SliceAllocator& operator=(SliceAllocator&& other) noexcept;
|
48
|
+
~SliceAllocator();
|
49
|
+
|
50
|
+
using AllocateCallback =
|
51
|
+
std::function<void(absl::Status, SliceBuffer* buffer)>;
|
52
|
+
/// Requests \a size bytes from gRPC, and populates \a dest with the allocated
|
53
|
+
/// slices. Ownership of the \a SliceBuffer is not transferred.
|
54
|
+
///
|
55
|
+
/// gRPC provides a ResourceQuota system to cap the amount of memory used by
|
56
|
+
/// the library. When a memory limit has been reached, slice allocation is
|
57
|
+
/// interrupted to attempt to reclaim memory from participating gRPC
|
58
|
+
/// internals. When there is sufficient memory available, slice allocation
|
59
|
+
/// proceeds as normal.
|
60
|
+
absl::Status Allocate(size_t size, SliceBuffer* dest,
|
61
|
+
SliceAllocator::AllocateCallback cb);
|
62
|
+
|
63
|
+
private:
|
64
|
+
grpc_resource_user* resource_user_;
|
65
|
+
};
|
66
|
+
|
67
|
+
class SliceAllocatorFactory {
|
68
|
+
public:
|
69
|
+
// gRPC-internal constructor
|
70
|
+
explicit SliceAllocatorFactory(grpc_resource_quota* quota);
|
71
|
+
// Not copyable
|
72
|
+
SliceAllocatorFactory(SliceAllocatorFactory& other) = delete;
|
73
|
+
SliceAllocatorFactory& operator=(const SliceAllocatorFactory& other) = delete;
|
74
|
+
// Moveable
|
75
|
+
SliceAllocatorFactory(SliceAllocatorFactory&& other) noexcept;
|
76
|
+
SliceAllocatorFactory& operator=(SliceAllocatorFactory&& other) noexcept;
|
77
|
+
~SliceAllocatorFactory();
|
78
|
+
|
79
|
+
/// On Endpoint creation, call \a CreateSliceAllocator with the name of the
|
80
|
+
/// endpoint peer (a URI string, most likely). Note: \a peer_name must outlive
|
81
|
+
/// the Endpoint.
|
82
|
+
SliceAllocator CreateSliceAllocator(absl::string_view peer_name);
|
83
|
+
|
84
|
+
private:
|
85
|
+
grpc_resource_quota* resource_quota_;
|
86
|
+
};
|
87
|
+
|
88
|
+
} // namespace experimental
|
89
|
+
} // namespace grpc_event_engine
|
90
|
+
|
91
|
+
#endif // GRPC_EVENT_ENGINE_SLICE_ALLOCATOR_H
|
data/include/grpc/grpc.h
CHANGED
@@ -115,8 +115,7 @@ GRPCAPI grpc_completion_queue* grpc_completion_queue_create_for_pluck(
|
|
115
115
|
of GRPC_CQ_CALLBACK and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING.
|
116
116
|
This function is experimental. */
|
117
117
|
GRPCAPI grpc_completion_queue* grpc_completion_queue_create_for_callback(
|
118
|
-
|
119
|
-
void* reserved);
|
118
|
+
grpc_completion_queue_functor* shutdown_callback, void* reserved);
|
120
119
|
|
121
120
|
/** Create a completion queue */
|
122
121
|
GRPCAPI grpc_completion_queue* grpc_completion_queue_create(
|
@@ -414,7 +413,7 @@ GRPCAPI void grpc_server_register_completion_queue(grpc_server* server,
|
|
414
413
|
// There might be more methods added later, so users should take care to memset
|
415
414
|
// this to 0 before using it.
|
416
415
|
typedef struct {
|
417
|
-
void (*
|
416
|
+
void (*on_serving_status_update)(void* user_data, const char* uri,
|
418
417
|
grpc_status_code code,
|
419
418
|
const char* error_message);
|
420
419
|
void* user_data;
|
@@ -424,7 +423,7 @@ typedef struct grpc_server_config_fetcher grpc_server_config_fetcher;
|
|
424
423
|
|
425
424
|
/** EXPERIMENTAL. Creates an xDS config fetcher. */
|
426
425
|
GRPCAPI grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
|
427
|
-
grpc_server_xds_status_notifier notifier);
|
426
|
+
grpc_server_xds_status_notifier notifier, const grpc_channel_args* args);
|
428
427
|
|
429
428
|
/** EXPERIMENTAL. Destroys a config fetcher. */
|
430
429
|
GRPCAPI void grpc_server_config_fetcher_destroy(
|
@@ -555,6 +554,14 @@ GRPCAPI char* grpc_channelz_get_subchannel(intptr_t subchannel_id);
|
|
555
554
|
is allocated and must be freed by the application. */
|
556
555
|
GRPCAPI char* grpc_channelz_get_socket(intptr_t socket_id);
|
557
556
|
|
557
|
+
/**
|
558
|
+
* EXPERIMENTAL - Subject to change.
|
559
|
+
* Fetch a vtable for grpc_channel_arg that points to
|
560
|
+
* grpc_authorization_policy_provider.
|
561
|
+
*/
|
562
|
+
GRPCAPI const grpc_arg_pointer_vtable*
|
563
|
+
grpc_authorization_policy_provider_arg_vtable(void);
|
564
|
+
|
558
565
|
#ifdef __cplusplus
|
559
566
|
}
|
560
567
|
#endif
|
@@ -1085,6 +1085,38 @@ GRPCAPI grpc_channel_credentials* grpc_xds_credentials_create(
|
|
1085
1085
|
GRPCAPI grpc_server_credentials* grpc_xds_server_credentials_create(
|
1086
1086
|
grpc_server_credentials* fallback_credentials);
|
1087
1087
|
|
1088
|
+
/**
|
1089
|
+
* EXPERIMENTAL - Subject to change.
|
1090
|
+
* An opaque type that is responsible for providing authorization policies to
|
1091
|
+
* gRPC.
|
1092
|
+
*/
|
1093
|
+
typedef struct grpc_authorization_policy_provider
|
1094
|
+
grpc_authorization_policy_provider;
|
1095
|
+
|
1096
|
+
/**
|
1097
|
+
* EXPERIMENTAL - Subject to change.
|
1098
|
+
* Creates a grpc_authorization_policy_provider using SDK authorization policy
|
1099
|
+
* from static string.
|
1100
|
+
* - authz_policy is the input SDK authorization policy.
|
1101
|
+
* - code is the error status code on failure. On success, it equals
|
1102
|
+
* GRPC_STATUS_OK.
|
1103
|
+
* - error_details contains details about the error if any. If the
|
1104
|
+
* initialization is successful, it will be null. Caller must use gpr_free to
|
1105
|
+
* destroy this string.
|
1106
|
+
*/
|
1107
|
+
GRPCAPI grpc_authorization_policy_provider*
|
1108
|
+
grpc_authorization_policy_provider_static_data_create(
|
1109
|
+
const char* authz_policy, grpc_status_code* code,
|
1110
|
+
const char** error_details);
|
1111
|
+
|
1112
|
+
/**
|
1113
|
+
* EXPERIMENTAL - Subject to change.
|
1114
|
+
* Releases grpc_authorization_policy_provider object. The creator of
|
1115
|
+
* grpc_authorization_policy_provider is responsible for its release.
|
1116
|
+
*/
|
1117
|
+
GRPCAPI void grpc_authorization_policy_provider_release(
|
1118
|
+
grpc_authorization_policy_provider* provider);
|
1119
|
+
|
1088
1120
|
#ifdef __cplusplus
|
1089
1121
|
}
|
1090
1122
|
#endif
|
@@ -29,10 +29,25 @@ extern "C" {
|
|
29
29
|
#define GRPC_X509_CN_PROPERTY_NAME "x509_common_name"
|
30
30
|
#define GRPC_X509_SAN_PROPERTY_NAME "x509_subject_alternative_name"
|
31
31
|
#define GRPC_X509_PEM_CERT_PROPERTY_NAME "x509_pem_cert"
|
32
|
+
// Please note that internally, we just faithfully pass whatever value we got by
|
33
|
+
// calling SSL_get_peer_cert_chain() in OpenSSL/BoringSSL. This will mean in
|
34
|
+
// OpenSSL, the following conditions might apply:
|
35
|
+
// 1. On the client side, this property returns the full certificate chain. On
|
36
|
+
// the server side, this property will return the certificate chain without the
|
37
|
+
// leaf certificate. Application can use GRPC_X509_PEM_CERT_PROPERTY_NAME to
|
38
|
+
// get the peer leaf certificate.
|
39
|
+
// 2. If the session is resumed, this property could be empty for OpenSSL (but
|
40
|
+
// not for BoringSSL).
|
41
|
+
// For more, please refer to the official OpenSSL manual:
|
42
|
+
// https://www.openssl.org/docs/man1.1.0/man3/SSL_get_peer_cert_chain.html.
|
32
43
|
#define GRPC_X509_PEM_CERT_CHAIN_PROPERTY_NAME "x509_pem_cert_chain"
|
33
44
|
#define GRPC_SSL_SESSION_REUSED_PROPERTY "ssl_session_reused"
|
34
45
|
#define GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME "security_level"
|
46
|
+
#define GRPC_PEER_DNS_PROPERTY_NAME "peer_dns"
|
35
47
|
#define GRPC_PEER_SPIFFE_ID_PROPERTY_NAME "peer_spiffe_id"
|
48
|
+
#define GRPC_PEER_URI_PROPERTY_NAME "peer_uri"
|
49
|
+
#define GRPC_PEER_EMAIL_PROPERTY_NAME "peer_email"
|
50
|
+
#define GRPC_PEER_IP_PROPERTY_NAME "peer_ip"
|
36
51
|
|
37
52
|
/** Environment variable that points to the default SSL roots file. This file
|
38
53
|
must be a PEM encoded file with all the roots such as the one that can be
|
@@ -353,6 +353,17 @@ typedef struct {
|
|
353
353
|
/* Timeout in milliseconds to use for calls to the grpclb load balancer.
|
354
354
|
If 0 or unset, the balancer calls will have no deadline. */
|
355
355
|
#define GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS "grpc.grpclb_call_timeout_ms"
|
356
|
+
/* Specifies the xDS bootstrap config as a JSON string.
|
357
|
+
FOR TESTING PURPOSES ONLY -- DO NOT USE IN PRODUCTION.
|
358
|
+
This option allows controlling the bootstrap configuration on a
|
359
|
+
per-channel basis, which is useful in tests. However, this results
|
360
|
+
in having a separate xDS client instance per channel rather than
|
361
|
+
using the global instance, which is not the intended way to use xDS.
|
362
|
+
Currently, this will (a) add unnecessary load on the xDS server and
|
363
|
+
(b) break use of CSDS, and there may be additional side effects in
|
364
|
+
the future. */
|
365
|
+
#define GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_BOOTSTRAP_CONFIG \
|
366
|
+
"grpc.TEST_ONLY_DO_NOT_USE_IN_PROD.xds_bootstrap_config"
|
356
367
|
/* Timeout in milliseconds to wait for the serverlist from the grpclb load
|
357
368
|
balancer before using fallback backend addresses from the resolver.
|
358
369
|
If 0, enter fallback mode immediately. Default value is 10000. */
|
@@ -417,6 +428,10 @@ typedef struct {
|
|
417
428
|
#define GRPC_ARG_CHANNEL_POOL_DOMAIN "grpc.channel_pooling_domain"
|
418
429
|
/** gRPC Objective-C channel pooling id. */
|
419
430
|
#define GRPC_ARG_CHANNEL_ID "grpc.channel_id"
|
431
|
+
/** Channel argument for grpc_authorization_policy_provider. If present, enables
|
432
|
+
gRPC authorization check. */
|
433
|
+
#define GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER \
|
434
|
+
"grpc.authorization_policy_provider"
|
420
435
|
/** \} */
|
421
436
|
|
422
437
|
/** Result of a grpc call. If the caller satisfies the prerequisites of a
|
@@ -731,21 +746,20 @@ typedef enum {
|
|
731
746
|
/** Events are popped out by calling grpc_completion_queue_pluck() API ONLY*/
|
732
747
|
GRPC_CQ_PLUCK,
|
733
748
|
|
734
|
-
/**
|
749
|
+
/** Events trigger a callback specified as the tag */
|
735
750
|
GRPC_CQ_CALLBACK
|
736
751
|
} grpc_cq_completion_type;
|
737
752
|
|
738
|
-
/**
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
typedef struct grpc_experimental_completion_queue_functor {
|
753
|
+
/** Specifies an interface class to be used as a tag for callback-based
|
754
|
+
* completion queues. This can be used directly, as the first element of a
|
755
|
+
* struct in C, or as a base class in C++. Its "run" value should be assigned to
|
756
|
+
* some non-member function, such as a static method. */
|
757
|
+
typedef struct grpc_completion_queue_functor {
|
744
758
|
/** The run member specifies a function that will be called when this
|
745
759
|
tag is extracted from the completion queue. Its arguments will be a
|
746
760
|
pointer to this functor and a boolean that indicates whether the
|
747
761
|
operation succeeded (non-zero) or failed (zero) */
|
748
|
-
void (*functor_run)(struct
|
762
|
+
void (*functor_run)(struct grpc_completion_queue_functor*, int);
|
749
763
|
|
750
764
|
/** The inlineable member specifies whether this functor can be run inline.
|
751
765
|
This should only be used for trivial internally-defined functors. */
|
@@ -753,10 +767,11 @@ typedef struct grpc_experimental_completion_queue_functor {
|
|
753
767
|
|
754
768
|
/** The following fields are not API. They are meant for internal use. */
|
755
769
|
int internal_success;
|
756
|
-
struct
|
757
|
-
}
|
770
|
+
struct grpc_completion_queue_functor* internal_next;
|
771
|
+
} grpc_completion_queue_functor;
|
758
772
|
|
759
|
-
|
773
|
+
typedef grpc_completion_queue_functor
|
774
|
+
grpc_experimental_completion_queue_functor;
|
760
775
|
|
761
776
|
#define GRPC_CQ_CURRENT_VERSION 2
|
762
777
|
#define GRPC_CQ_VERSION_MINIMUM_FOR_CALLBACKABLE 2
|
@@ -771,10 +786,10 @@ typedef struct grpc_completion_queue_attributes {
|
|
771
786
|
|
772
787
|
/* END OF VERSION 1 CQ ATTRIBUTES */
|
773
788
|
|
774
|
-
/*
|
789
|
+
/* START OF VERSION 2 CQ ATTRIBUTES */
|
775
790
|
/** When creating a callbackable CQ, pass in a functor to get invoked when
|
776
791
|
* shutdown is complete */
|
777
|
-
|
792
|
+
grpc_completion_queue_functor* cq_shutdown_cb;
|
778
793
|
|
779
794
|
/* END OF VERSION 2 CQ ATTRIBUTES */
|
780
795
|
} grpc_completion_queue_attributes;
|
@@ -39,6 +39,11 @@
|
|
39
39
|
#endif
|
40
40
|
#endif // GPR_ABSEIL_SYNC
|
41
41
|
|
42
|
+
/*
|
43
|
+
* Defines GRPC_ERROR_IS_ABSEIL_STATUS to use absl::Status for grpc_error_handle
|
44
|
+
*/
|
45
|
+
// #define GRPC_ERROR_IS_ABSEIL_STATUS 1
|
46
|
+
|
42
47
|
/* Get windows.h included everywhere (we need it) */
|
43
48
|
#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
|
44
49
|
#ifndef WIN32_LEAN_AND_MEAN
|
@@ -659,4 +664,21 @@ typedef unsigned __int64 uint64_t;
|
|
659
664
|
#define __STDC_FORMAT_MACROS
|
660
665
|
#endif
|
661
666
|
|
667
|
+
/* Selectively enable EventEngine on specific platforms. This default can be
|
668
|
+
* overridden using the GRPC_USE_EVENT_ENGINE compiler flag.
|
669
|
+
*/
|
670
|
+
#ifndef GRPC_USE_EVENT_ENGINE
|
671
|
+
/* Not enabled by default on any platforms yet. (2021.06) */
|
672
|
+
#elif GRPC_USE_EVENT_ENGINE == 0
|
673
|
+
/* Building with `-DGRPC_USE_EVENT_ENGINE=0` will override the default. */
|
674
|
+
#undef GRPC_USE_EVENT_ENGINE
|
675
|
+
#endif /* GRPC_USE_EVENT_ENGINE */
|
676
|
+
|
677
|
+
#ifdef GRPC_USE_EVENT_ENGINE
|
678
|
+
#undef GPR_SUPPORT_CHANNELS_FROM_FD
|
679
|
+
#define GRPC_ARES 0
|
680
|
+
#endif /* GRPC_USE_EVENT_ENGINE */
|
681
|
+
|
682
|
+
#define GRPC_CALLBACK_API_NONEXPERIMENTAL
|
683
|
+
|
662
684
|
#endif /* GRPC_IMPL_CODEGEN_PORT_PLATFORM_H */
|
@@ -2,6 +2,15 @@
|
|
2
2
|
framework module grpc {
|
3
3
|
umbrella header "grpc.h"
|
4
4
|
|
5
|
+
header "byte_buffer.h"
|
6
|
+
header "byte_buffer_reader.h"
|
7
|
+
header "census.h"
|
8
|
+
header "compression.h"
|
9
|
+
header "fork.h"
|
10
|
+
header "grpc.h"
|
11
|
+
header "grpc_posix.h"
|
12
|
+
header "grpc_security.h"
|
13
|
+
header "grpc_security_constants.h"
|
5
14
|
header "impl/codegen/atm.h"
|
6
15
|
header "impl/codegen/byte_buffer.h"
|
7
16
|
header "impl/codegen/byte_buffer_reader.h"
|
@@ -19,6 +28,10 @@ framework module grpc {
|
|
19
28
|
header "impl/codegen/sync.h"
|
20
29
|
header "impl/codegen/sync_abseil.h"
|
21
30
|
header "impl/codegen/sync_generic.h"
|
31
|
+
header "load_reporting.h"
|
32
|
+
header "slice.h"
|
33
|
+
header "slice_buffer.h"
|
34
|
+
header "status.h"
|
22
35
|
header "support/alloc.h"
|
23
36
|
header "support/atm.h"
|
24
37
|
header "support/cpu.h"
|
@@ -31,22 +44,9 @@ framework module grpc {
|
|
31
44
|
header "support/sync_generic.h"
|
32
45
|
header "support/thd_id.h"
|
33
46
|
header "support/time.h"
|
34
|
-
header "byte_buffer.h"
|
35
|
-
header "byte_buffer_reader.h"
|
36
|
-
header "census.h"
|
37
|
-
header "compression.h"
|
38
|
-
header "fork.h"
|
39
|
-
header "grpc.h"
|
40
|
-
header "grpc_posix.h"
|
41
|
-
header "grpc_security.h"
|
42
|
-
header "grpc_security_constants.h"
|
43
|
-
header "load_reporting.h"
|
44
|
-
header "slice.h"
|
45
|
-
header "slice_buffer.h"
|
46
|
-
header "status.h"
|
47
47
|
header "support/workaround_list.h"
|
48
48
|
|
49
|
-
|
49
|
+
textual header "impl/codegen/atm_gcc_atomic.h"
|
50
50
|
textual header "impl/codegen/atm_gcc_sync.h"
|
51
51
|
textual header "impl/codegen/atm_windows.h"
|
52
52
|
textual header "impl/codegen/sync_custom.h"
|
@@ -89,7 +89,7 @@ static void backup_poller_shutdown_unref(backup_poller* p) {
|
|
89
89
|
}
|
90
90
|
}
|
91
91
|
|
92
|
-
static void done_poller(void* arg,
|
92
|
+
static void done_poller(void* arg, grpc_error_handle /*error*/) {
|
93
93
|
backup_poller_shutdown_unref(static_cast<backup_poller*>(arg));
|
94
94
|
}
|
95
95
|
|
@@ -112,7 +112,7 @@ static void g_poller_unref() {
|
|
112
112
|
}
|
113
113
|
}
|
114
114
|
|
115
|
-
static void run_poller(void* arg,
|
115
|
+
static void run_poller(void* arg, grpc_error_handle error) {
|
116
116
|
backup_poller* p = static_cast<backup_poller*>(arg);
|
117
117
|
if (error != GRPC_ERROR_NONE) {
|
118
118
|
if (error != GRPC_ERROR_CANCELLED) {
|
@@ -127,7 +127,7 @@ static void run_poller(void* arg, grpc_error* error) {
|
|
127
127
|
backup_poller_shutdown_unref(p);
|
128
128
|
return;
|
129
129
|
}
|
130
|
-
|
130
|
+
grpc_error_handle err =
|
131
131
|
grpc_pollset_work(p->pollset, nullptr, grpc_core::ExecCtx::Get()->Now());
|
132
132
|
gpr_mu_unlock(p->pollset_mu);
|
133
133
|
GRPC_LOG_IF_ERROR("Run client channel backup poller", err);
|
@@ -1,28 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
21
19
|
#include "src/core/lib/surface/channel.h"
|
22
20
|
|
23
|
-
#include <inttypes.h>
|
24
|
-
|
25
|
-
#include <grpc/support/alloc.h>
|
26
21
|
#include <grpc/support/log.h>
|
27
22
|
|
28
23
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
@@ -32,195 +27,205 @@
|
|
32
27
|
|
33
28
|
grpc_connectivity_state grpc_channel_check_connectivity_state(
|
34
29
|
grpc_channel* channel, int try_to_connect) {
|
35
|
-
/* forward through to the underlying client channel */
|
36
|
-
grpc_channel_element* client_channel_elem =
|
37
|
-
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
38
30
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
39
31
|
grpc_core::ExecCtx exec_ctx;
|
40
|
-
grpc_connectivity_state state;
|
41
32
|
GRPC_API_TRACE(
|
42
33
|
"grpc_channel_check_connectivity_state(channel=%p, try_to_connect=%d)", 2,
|
43
34
|
(channel, try_to_connect));
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
35
|
+
// Forward through to the underlying client channel.
|
36
|
+
grpc_core::ClientChannel* client_channel =
|
37
|
+
grpc_core::ClientChannel::GetFromChannel(channel);
|
38
|
+
if (GPR_UNLIKELY(client_channel == nullptr)) {
|
39
|
+
gpr_log(GPR_ERROR,
|
40
|
+
"grpc_channel_check_connectivity_state called on something that is "
|
41
|
+
"not a client channel");
|
42
|
+
return GRPC_CHANNEL_SHUTDOWN;
|
49
43
|
}
|
50
|
-
|
51
|
-
|
52
|
-
"not a client channel, but '%s'",
|
53
|
-
client_channel_elem->filter->name);
|
44
|
+
return client_channel->CheckConnectivityState(try_to_connect);
|
45
|
+
}
|
54
46
|
|
55
|
-
|
47
|
+
int grpc_channel_num_external_connectivity_watchers(grpc_channel* channel) {
|
48
|
+
grpc_core::ClientChannel* client_channel =
|
49
|
+
grpc_core::ClientChannel::GetFromChannel(channel);
|
50
|
+
if (client_channel == nullptr) {
|
51
|
+
gpr_log(GPR_ERROR,
|
52
|
+
"grpc_channel_num_external_connectivity_watchers called on "
|
53
|
+
"something that is not a client channel");
|
54
|
+
return 0;
|
55
|
+
}
|
56
|
+
return client_channel->NumExternalConnectivityWatchers();
|
56
57
|
}
|
57
58
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
CALLING_BACK_AND_FINISHED,
|
62
|
-
} callback_phase;
|
59
|
+
int grpc_channel_support_connectivity_watcher(grpc_channel* channel) {
|
60
|
+
return grpc_core::ClientChannel::GetFromChannel(channel) != nullptr;
|
61
|
+
}
|
63
62
|
|
63
|
+
namespace grpc_core {
|
64
64
|
namespace {
|
65
|
-
struct state_watcher {
|
66
|
-
gpr_mu mu;
|
67
|
-
callback_phase phase;
|
68
|
-
grpc_closure on_complete;
|
69
|
-
grpc_closure on_timeout;
|
70
|
-
grpc_closure watcher_timer_init;
|
71
|
-
grpc_timer alarm;
|
72
|
-
grpc_connectivity_state state;
|
73
|
-
grpc_completion_queue* cq;
|
74
|
-
grpc_cq_completion completion_storage;
|
75
|
-
grpc_channel* channel;
|
76
|
-
grpc_error* error;
|
77
|
-
void* tag;
|
78
|
-
};
|
79
|
-
} // namespace
|
80
|
-
|
81
|
-
static void delete_state_watcher(state_watcher* w) {
|
82
|
-
grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
|
83
|
-
grpc_channel_get_channel_stack(w->channel));
|
84
|
-
if (client_channel_elem->filter == &grpc_client_channel_filter) {
|
85
|
-
GRPC_CHANNEL_INTERNAL_UNREF(w->channel, "watch_channel_connectivity");
|
86
|
-
} else {
|
87
|
-
abort();
|
88
|
-
}
|
89
|
-
gpr_mu_destroy(&w->mu);
|
90
|
-
gpr_free(w);
|
91
|
-
}
|
92
65
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
66
|
+
class StateWatcher {
|
67
|
+
public:
|
68
|
+
StateWatcher(grpc_channel* channel, grpc_completion_queue* cq, void* tag,
|
69
|
+
grpc_connectivity_state last_observed_state,
|
70
|
+
gpr_timespec deadline)
|
71
|
+
: channel_(channel), cq_(cq), tag_(tag), state_(last_observed_state) {
|
72
|
+
GPR_ASSERT(grpc_cq_begin_op(cq, tag));
|
73
|
+
GRPC_CHANNEL_INTERNAL_REF(channel, "watch_channel_connectivity");
|
74
|
+
GRPC_CLOSURE_INIT(&on_complete_, WatchComplete, this, nullptr);
|
75
|
+
GRPC_CLOSURE_INIT(&on_timeout_, TimeoutComplete, this, nullptr);
|
76
|
+
auto* watcher_timer_init_state = new WatcherTimerInitState(
|
77
|
+
this, grpc_timespec_to_millis_round_up(deadline));
|
78
|
+
ClientChannel* client_channel = ClientChannel::GetFromChannel(channel);
|
79
|
+
GPR_ASSERT(client_channel != nullptr);
|
80
|
+
client_channel->AddExternalConnectivityWatcher(
|
81
|
+
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq)), &state_,
|
82
|
+
&on_complete_, watcher_timer_init_state->closure());
|
104
83
|
}
|
105
|
-
gpr_mu_unlock(&w->mu);
|
106
84
|
|
107
|
-
|
108
|
-
|
85
|
+
~StateWatcher() {
|
86
|
+
GRPC_CHANNEL_INTERNAL_UNREF(channel_, "watch_channel_connectivity");
|
109
87
|
}
|
110
|
-
}
|
111
|
-
|
112
|
-
static void partly_done(state_watcher* w, bool due_to_completion,
|
113
|
-
grpc_error* error) {
|
114
|
-
bool end_op = false;
|
115
|
-
void* end_op_tag = nullptr;
|
116
|
-
grpc_error* end_op_error = nullptr;
|
117
|
-
grpc_completion_queue* end_op_cq = nullptr;
|
118
|
-
grpc_cq_completion* end_op_completion_storage = nullptr;
|
119
88
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
}
|
89
|
+
private:
|
90
|
+
// A fire-and-forget object used to delay starting the timer until the
|
91
|
+
// ClientChannel actually starts the watch.
|
92
|
+
class WatcherTimerInitState {
|
93
|
+
public:
|
94
|
+
WatcherTimerInitState(StateWatcher* state_watcher, grpc_millis deadline)
|
95
|
+
: state_watcher_(state_watcher), deadline_(deadline) {
|
96
|
+
GRPC_CLOSURE_INIT(&closure_, WatcherTimerInit, this, nullptr);
|
97
|
+
}
|
130
98
|
|
131
|
-
|
99
|
+
grpc_closure* closure() { return &closure_; }
|
132
100
|
|
133
|
-
|
134
|
-
|
135
|
-
|
101
|
+
private:
|
102
|
+
static void WatcherTimerInit(void* arg, grpc_error_handle /*error*/) {
|
103
|
+
auto* self = static_cast<WatcherTimerInitState*>(arg);
|
104
|
+
grpc_timer_init(&self->state_watcher_->timer_, self->deadline_,
|
105
|
+
&self->state_watcher_->on_timeout_);
|
106
|
+
delete self;
|
136
107
|
}
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
108
|
+
|
109
|
+
StateWatcher* state_watcher_;
|
110
|
+
grpc_millis deadline_;
|
111
|
+
grpc_closure closure_;
|
112
|
+
};
|
113
|
+
|
114
|
+
enum CallbackPhase { kWaiting, kReadyToCallBack, kCallingBackAndFinished };
|
115
|
+
|
116
|
+
// Called when the completion is returned to the CQ.
|
117
|
+
static void FinishedCompletion(void* arg, grpc_cq_completion* /*ignored*/) {
|
118
|
+
auto* self = static_cast<StateWatcher*>(arg);
|
119
|
+
bool should_delete = false;
|
120
|
+
{
|
121
|
+
MutexLock lock(&self->mu_);
|
122
|
+
switch (self->phase_) {
|
123
|
+
case kWaiting:
|
124
|
+
case kReadyToCallBack:
|
125
|
+
GPR_UNREACHABLE_CODE(return );
|
126
|
+
case kCallingBackAndFinished:
|
127
|
+
should_delete = true;
|
128
|
+
}
|
145
129
|
}
|
130
|
+
if (should_delete) delete self;
|
146
131
|
}
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
132
|
+
|
133
|
+
void PartlyDone(bool due_to_completion, grpc_error_handle error) {
|
134
|
+
bool end_op = false;
|
135
|
+
void* end_op_tag = nullptr;
|
136
|
+
grpc_error_handle end_op_error = GRPC_ERROR_NONE;
|
137
|
+
grpc_completion_queue* end_op_cq = nullptr;
|
138
|
+
grpc_cq_completion* end_op_completion_storage = nullptr;
|
139
|
+
if (due_to_completion) {
|
140
|
+
grpc_timer_cancel(&timer_);
|
141
|
+
} else {
|
142
|
+
grpc_core::ClientChannel* client_channel =
|
143
|
+
grpc_core::ClientChannel::GetFromChannel(channel_);
|
144
|
+
GPR_ASSERT(client_channel != nullptr);
|
145
|
+
client_channel->CancelExternalConnectivityWatcher(&on_complete_);
|
146
|
+
}
|
147
|
+
{
|
148
|
+
MutexLock lock(&mu_);
|
149
|
+
if (due_to_completion) {
|
150
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
|
151
|
+
GRPC_LOG_IF_ERROR("watch_completion_error", GRPC_ERROR_REF(error));
|
152
|
+
}
|
153
|
+
GRPC_ERROR_UNREF(error);
|
154
|
+
error = GRPC_ERROR_NONE;
|
155
|
+
} else {
|
156
|
+
if (error == GRPC_ERROR_NONE) {
|
157
|
+
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
158
|
+
"Timed out waiting for connection state change");
|
159
|
+
} else if (error == GRPC_ERROR_CANCELLED) {
|
160
|
+
error = GRPC_ERROR_NONE;
|
161
|
+
}
|
162
|
+
}
|
163
|
+
switch (phase_) {
|
164
|
+
case kWaiting:
|
165
|
+
GRPC_ERROR_REF(error);
|
166
|
+
error_ = error;
|
167
|
+
phase_ = kReadyToCallBack;
|
168
|
+
break;
|
169
|
+
case kReadyToCallBack:
|
170
|
+
if (error != GRPC_ERROR_NONE) {
|
171
|
+
GPR_ASSERT(!due_to_completion);
|
172
|
+
GRPC_ERROR_UNREF(error_);
|
173
|
+
GRPC_ERROR_REF(error);
|
174
|
+
error_ = error;
|
175
|
+
}
|
176
|
+
phase_ = kCallingBackAndFinished;
|
177
|
+
end_op = true;
|
178
|
+
end_op_cq = cq_;
|
179
|
+
end_op_tag = tag_;
|
180
|
+
end_op_error = error_;
|
181
|
+
end_op_completion_storage = &completion_storage_;
|
182
|
+
break;
|
183
|
+
case kCallingBackAndFinished:
|
184
|
+
GPR_UNREACHABLE_CODE(return );
|
159
185
|
}
|
160
|
-
|
161
|
-
|
162
|
-
end_op_cq
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
break;
|
167
|
-
case CALLING_BACK_AND_FINISHED:
|
168
|
-
GPR_UNREACHABLE_CODE(return );
|
169
|
-
break;
|
186
|
+
}
|
187
|
+
if (end_op) {
|
188
|
+
grpc_cq_end_op(end_op_cq, end_op_tag, end_op_error, FinishedCompletion,
|
189
|
+
this, end_op_completion_storage);
|
190
|
+
}
|
191
|
+
GRPC_ERROR_UNREF(error);
|
170
192
|
}
|
171
|
-
gpr_mu_unlock(&w->mu);
|
172
193
|
|
173
|
-
|
174
|
-
|
175
|
-
|
194
|
+
static void WatchComplete(void* arg, grpc_error_handle error) {
|
195
|
+
auto* self = static_cast<StateWatcher*>(arg);
|
196
|
+
self->PartlyDone(/*due_to_completion=*/true, GRPC_ERROR_REF(error));
|
176
197
|
}
|
177
198
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
partly_done(static_cast<state_watcher*>(pw), true, GRPC_ERROR_REF(error));
|
183
|
-
}
|
199
|
+
static void TimeoutComplete(void* arg, grpc_error_handle error) {
|
200
|
+
auto* self = static_cast<StateWatcher*>(arg);
|
201
|
+
self->PartlyDone(/*due_to_completion=*/false, GRPC_ERROR_REF(error));
|
202
|
+
}
|
184
203
|
|
185
|
-
|
186
|
-
|
187
|
-
|
204
|
+
grpc_channel* channel_;
|
205
|
+
grpc_completion_queue* cq_;
|
206
|
+
void* tag_;
|
188
207
|
|
189
|
-
|
190
|
-
grpc_channel_element* client_channel_elem =
|
191
|
-
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
192
|
-
return grpc_client_channel_num_external_connectivity_watchers(
|
193
|
-
client_channel_elem);
|
194
|
-
}
|
208
|
+
grpc_connectivity_state state_;
|
195
209
|
|
196
|
-
|
197
|
-
state_watcher* w;
|
198
|
-
gpr_timespec deadline;
|
199
|
-
} watcher_timer_init_arg;
|
210
|
+
grpc_cq_completion completion_storage_;
|
200
211
|
|
201
|
-
|
202
|
-
|
212
|
+
grpc_closure on_complete_;
|
213
|
+
grpc_timer timer_;
|
214
|
+
grpc_closure on_timeout_;
|
203
215
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
}
|
216
|
+
Mutex mu_;
|
217
|
+
CallbackPhase phase_ ABSL_GUARDED_BY(mu_) = kWaiting;
|
218
|
+
grpc_error_handle error_ ABSL_GUARDED_BY(mu_) = GRPC_ERROR_NONE;
|
219
|
+
};
|
208
220
|
|
209
|
-
|
210
|
-
|
211
|
-
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
212
|
-
return client_channel_elem->filter != &grpc_client_channel_filter ? 0 : 1;
|
213
|
-
}
|
221
|
+
} // namespace
|
222
|
+
} // namespace grpc_core
|
214
223
|
|
215
224
|
void grpc_channel_watch_connectivity_state(
|
216
225
|
grpc_channel* channel, grpc_connectivity_state last_observed_state,
|
217
226
|
gpr_timespec deadline, grpc_completion_queue* cq, void* tag) {
|
218
|
-
grpc_channel_element* client_channel_elem =
|
219
|
-
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
220
227
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
221
228
|
grpc_core::ExecCtx exec_ctx;
|
222
|
-
state_watcher* w = static_cast<state_watcher*>(gpr_malloc(sizeof(*w)));
|
223
|
-
|
224
229
|
GRPC_API_TRACE(
|
225
230
|
"grpc_channel_watch_connectivity_state("
|
226
231
|
"channel=%p, last_observed_state=%d, "
|
@@ -230,35 +235,5 @@ void grpc_channel_watch_connectivity_state(
|
|
230
235
|
7,
|
231
236
|
(channel, (int)last_observed_state, deadline.tv_sec, deadline.tv_nsec,
|
232
237
|
(int)deadline.clock_type, cq, tag));
|
233
|
-
|
234
|
-
GPR_ASSERT(grpc_cq_begin_op(cq, tag));
|
235
|
-
|
236
|
-
gpr_mu_init(&w->mu);
|
237
|
-
GRPC_CLOSURE_INIT(&w->on_complete, watch_complete, w,
|
238
|
-
grpc_schedule_on_exec_ctx);
|
239
|
-
GRPC_CLOSURE_INIT(&w->on_timeout, timeout_complete, w,
|
240
|
-
grpc_schedule_on_exec_ctx);
|
241
|
-
w->phase = WAITING;
|
242
|
-
w->state = last_observed_state;
|
243
|
-
w->cq = cq;
|
244
|
-
w->tag = tag;
|
245
|
-
w->channel = channel;
|
246
|
-
w->error = nullptr;
|
247
|
-
|
248
|
-
watcher_timer_init_arg* wa = static_cast<watcher_timer_init_arg*>(
|
249
|
-
gpr_malloc(sizeof(watcher_timer_init_arg)));
|
250
|
-
wa->w = w;
|
251
|
-
wa->deadline = deadline;
|
252
|
-
GRPC_CLOSURE_INIT(&w->watcher_timer_init, watcher_timer_init, wa,
|
253
|
-
grpc_schedule_on_exec_ctx);
|
254
|
-
|
255
|
-
if (client_channel_elem->filter == &grpc_client_channel_filter) {
|
256
|
-
GRPC_CHANNEL_INTERNAL_REF(channel, "watch_channel_connectivity");
|
257
|
-
grpc_client_channel_watch_connectivity_state(
|
258
|
-
client_channel_elem,
|
259
|
-
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq)), &w->state,
|
260
|
-
&w->on_complete, &w->watcher_timer_init);
|
261
|
-
} else {
|
262
|
-
abort();
|
263
|
-
}
|
238
|
+
new grpc_core::StateWatcher(channel, cq, tag, last_observed_state, deadline);
|
264
239
|
}
|