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
@@ -270,7 +270,7 @@ void grpc_fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
|
|
270
270
|
g_event_engine->fd_orphan(fd, on_done, release_fd, reason);
|
271
271
|
}
|
272
272
|
|
273
|
-
void grpc_fd_shutdown(grpc_fd* fd,
|
273
|
+
void grpc_fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
|
274
274
|
GRPC_POLLING_API_TRACE("fd_shutdown(%d)", grpc_fd_wrapped_fd(fd));
|
275
275
|
GRPC_FD_TRACE("fd_shutdown(%d)", grpc_fd_wrapped_fd(fd));
|
276
276
|
g_event_engine->fd_shutdown(fd, why);
|
@@ -315,19 +315,20 @@ static void pollset_destroy(grpc_pollset* pollset) {
|
|
315
315
|
g_event_engine->pollset_destroy(pollset);
|
316
316
|
}
|
317
317
|
|
318
|
-
static
|
319
|
-
|
320
|
-
|
318
|
+
static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
319
|
+
grpc_pollset_worker** worker,
|
320
|
+
grpc_millis deadline) {
|
321
321
|
GRPC_POLLING_API_TRACE("pollset_work(%p, %" PRId64 ") begin", pollset,
|
322
322
|
deadline);
|
323
|
-
|
323
|
+
grpc_error_handle err =
|
324
|
+
g_event_engine->pollset_work(pollset, worker, deadline);
|
324
325
|
GRPC_POLLING_API_TRACE("pollset_work(%p, %" PRId64 ") end", pollset,
|
325
326
|
deadline);
|
326
327
|
return err;
|
327
328
|
}
|
328
329
|
|
329
|
-
static
|
330
|
-
|
330
|
+
static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
331
|
+
grpc_pollset_worker* specific_worker) {
|
331
332
|
GRPC_POLLING_API_TRACE("pollset_kick(%p, %p)", pollset, specific_worker);
|
332
333
|
return g_event_engine->pollset_kick(pollset, specific_worker);
|
333
334
|
}
|
@@ -406,7 +407,7 @@ bool grpc_is_any_background_poller_thread(void) {
|
|
406
407
|
}
|
407
408
|
|
408
409
|
bool grpc_add_closure_to_background_poller(grpc_closure* closure,
|
409
|
-
|
410
|
+
grpc_error_handle error) {
|
410
411
|
return g_event_engine->add_closure_to_background_poller(closure, error);
|
411
412
|
}
|
412
413
|
|
@@ -52,7 +52,7 @@ typedef struct grpc_event_engine_vtable {
|
|
52
52
|
int (*fd_wrapped_fd)(grpc_fd* fd);
|
53
53
|
void (*fd_orphan)(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
|
54
54
|
const char* reason);
|
55
|
-
void (*fd_shutdown)(grpc_fd* fd,
|
55
|
+
void (*fd_shutdown)(grpc_fd* fd, grpc_error_handle why);
|
56
56
|
void (*fd_notify_on_read)(grpc_fd* fd, grpc_closure* closure);
|
57
57
|
void (*fd_notify_on_write)(grpc_fd* fd, grpc_closure* closure);
|
58
58
|
void (*fd_notify_on_error)(grpc_fd* fd, grpc_closure* closure);
|
@@ -64,11 +64,11 @@ typedef struct grpc_event_engine_vtable {
|
|
64
64
|
void (*pollset_init)(grpc_pollset* pollset, gpr_mu** mu);
|
65
65
|
void (*pollset_shutdown)(grpc_pollset* pollset, grpc_closure* closure);
|
66
66
|
void (*pollset_destroy)(grpc_pollset* pollset);
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
67
|
+
grpc_error_handle (*pollset_work)(grpc_pollset* pollset,
|
68
|
+
grpc_pollset_worker** worker,
|
69
|
+
grpc_millis deadline);
|
70
|
+
grpc_error_handle (*pollset_kick)(grpc_pollset* pollset,
|
71
|
+
grpc_pollset_worker* specific_worker);
|
72
72
|
void (*pollset_add_fd)(grpc_pollset* pollset, struct grpc_fd* fd);
|
73
73
|
|
74
74
|
grpc_pollset_set* (*pollset_set_create)(void);
|
@@ -88,7 +88,7 @@ typedef struct grpc_event_engine_vtable {
|
|
88
88
|
void (*shutdown_background_closure)(void);
|
89
89
|
void (*shutdown_engine)(void);
|
90
90
|
bool (*add_closure_to_background_poller)(grpc_closure* closure,
|
91
|
-
|
91
|
+
grpc_error_handle error);
|
92
92
|
} grpc_event_engine_vtable;
|
93
93
|
|
94
94
|
/* register a new event engine factory */
|
@@ -139,7 +139,7 @@ void grpc_fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
|
|
139
139
|
bool grpc_fd_is_shutdown(grpc_fd* fd);
|
140
140
|
|
141
141
|
/* Cause any current and future callbacks to fail. */
|
142
|
-
void grpc_fd_shutdown(grpc_fd* fd,
|
142
|
+
void grpc_fd_shutdown(grpc_fd* fd, grpc_error_handle why);
|
143
143
|
|
144
144
|
/* Register read interest, causing read_cb to be called once when fd becomes
|
145
145
|
readable, on deadline specified by deadline, or on shutdown triggered by
|
@@ -195,7 +195,7 @@ bool grpc_is_any_background_poller_thread();
|
|
195
195
|
* that the closure may or may not run yet when this function returns, and the
|
196
196
|
* closure should not be blocking or long-running. */
|
197
197
|
bool grpc_add_closure_to_background_poller(grpc_closure* closure,
|
198
|
-
|
198
|
+
grpc_error_handle error);
|
199
199
|
|
200
200
|
/* Shut down all the closures registered in the background poller. */
|
201
201
|
void grpc_shutdown_background_closure();
|
@@ -0,0 +1,54 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#ifdef GRPC_USE_EVENT_ENGINE
|
17
|
+
#include <grpc/event_engine/event_engine.h>
|
18
|
+
|
19
|
+
#include "src/core/lib/iomgr/closure.h"
|
20
|
+
#include "src/core/lib/iomgr/event_engine/pollset.h"
|
21
|
+
#include "src/core/lib/transport/error_utils.h"
|
22
|
+
|
23
|
+
namespace grpc_event_engine {
|
24
|
+
namespace experimental {
|
25
|
+
|
26
|
+
EventEngine::Callback GrpcClosureToCallback(grpc_closure* closure,
|
27
|
+
grpc_error_handle error) {
|
28
|
+
return [closure, error](absl::Status status) {
|
29
|
+
grpc_error_handle new_error =
|
30
|
+
grpc_error_add_child(error, absl_status_to_grpc_error(status));
|
31
|
+
#ifndef NDEBUG
|
32
|
+
closure->scheduled = false;
|
33
|
+
if (grpc_trace_closure.enabled()) {
|
34
|
+
gpr_log(GPR_DEBUG,
|
35
|
+
"EventEngine: running closure %p: created [%s:%d]: %s [%s:%d]",
|
36
|
+
closure, closure->file_created, closure->line_created,
|
37
|
+
closure->run ? "run" : "scheduled", closure->file_initiated,
|
38
|
+
closure->line_initiated);
|
39
|
+
}
|
40
|
+
#endif
|
41
|
+
closure->cb(closure->cb_arg, new_error);
|
42
|
+
#ifndef NDEBUG
|
43
|
+
if (grpc_trace_closure.enabled()) {
|
44
|
+
gpr_log(GPR_DEBUG, "EventEngine: closure %p finished", closure);
|
45
|
+
}
|
46
|
+
#endif
|
47
|
+
GRPC_ERROR_UNREF(error);
|
48
|
+
grpc_pollset_ee_broadcast_event();
|
49
|
+
};
|
50
|
+
}
|
51
|
+
|
52
|
+
} // namespace experimental
|
53
|
+
} // namespace grpc_event_engine
|
54
|
+
#endif // GRPC_USE_EVENT_ENGINE
|
@@ -0,0 +1,33 @@
|
|
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_CORE_LIB_IOMGR_EVENT_ENGINE_CLOSURE_H
|
15
|
+
#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_CLOSURE_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include <grpc/event_engine/event_engine.h>
|
20
|
+
|
21
|
+
#include "src/core/lib/iomgr/closure.h"
|
22
|
+
#include "src/core/lib/iomgr/error.h"
|
23
|
+
|
24
|
+
namespace grpc_event_engine {
|
25
|
+
namespace experimental {
|
26
|
+
|
27
|
+
EventEngine::Callback GrpcClosureToCallback(grpc_closure* closure,
|
28
|
+
grpc_error_handle error);
|
29
|
+
|
30
|
+
} // namespace experimental
|
31
|
+
} // namespace grpc_event_engine
|
32
|
+
|
33
|
+
#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_CLOSURE_H
|
@@ -0,0 +1,194 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#ifdef GRPC_USE_EVENT_ENGINE
|
17
|
+
#include "src/core/lib/iomgr/event_engine/endpoint.h"
|
18
|
+
|
19
|
+
#include <grpc/event_engine/event_engine.h>
|
20
|
+
#include <grpc/slice.h>
|
21
|
+
#include <grpc/slice_buffer.h>
|
22
|
+
#include <grpc/support/time.h>
|
23
|
+
#include "absl/strings/string_view.h"
|
24
|
+
|
25
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
26
|
+
#include "src/core/lib/channel/channel_args.h"
|
27
|
+
#include "src/core/lib/iomgr/endpoint.h"
|
28
|
+
#include "src/core/lib/iomgr/error.h"
|
29
|
+
#include "src/core/lib/iomgr/event_engine/closure.h"
|
30
|
+
#include "src/core/lib/iomgr/event_engine/pollset.h"
|
31
|
+
#include "src/core/lib/iomgr/pollset.h"
|
32
|
+
#include "src/core/lib/iomgr/pollset_set.h"
|
33
|
+
#include "src/core/lib/iomgr/resource_quota.h"
|
34
|
+
#include "src/core/lib/transport/error_utils.h"
|
35
|
+
|
36
|
+
extern grpc_core::TraceFlag grpc_tcp_trace;
|
37
|
+
|
38
|
+
namespace {
|
39
|
+
|
40
|
+
using ::grpc_event_engine::experimental::EventEngine;
|
41
|
+
using ::grpc_event_engine::experimental::ResolvedAddressToURI;
|
42
|
+
using ::grpc_event_engine::experimental::SliceBuffer;
|
43
|
+
|
44
|
+
void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
45
|
+
grpc_closure* cb, bool /* urgent */) {
|
46
|
+
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
47
|
+
if (eeep->endpoint == nullptr) {
|
48
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, GRPC_ERROR_CANCELLED);
|
49
|
+
return;
|
50
|
+
}
|
51
|
+
SliceBuffer* read_buffer = new (&eeep->read_buffer) SliceBuffer(slices);
|
52
|
+
eeep->endpoint->Read(
|
53
|
+
[eeep, cb](absl::Status status) {
|
54
|
+
auto* read_buffer = reinterpret_cast<SliceBuffer*>(&eeep->read_buffer);
|
55
|
+
read_buffer->~SliceBuffer();
|
56
|
+
grpc_core::ExecCtx exec_ctx;
|
57
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb,
|
58
|
+
absl_status_to_grpc_error(status));
|
59
|
+
exec_ctx.Flush();
|
60
|
+
grpc_pollset_ee_broadcast_event();
|
61
|
+
},
|
62
|
+
read_buffer, absl::InfiniteFuture());
|
63
|
+
}
|
64
|
+
|
65
|
+
void endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
66
|
+
grpc_closure* cb, void* arg) {
|
67
|
+
// TODO(hork): adapt arg to some metrics collection mechanism.
|
68
|
+
(void)arg;
|
69
|
+
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
70
|
+
if (eeep->endpoint == nullptr) {
|
71
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, GRPC_ERROR_CANCELLED);
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
SliceBuffer* write_buffer = new (&eeep->write_buffer) SliceBuffer(slices);
|
75
|
+
eeep->endpoint->Write(
|
76
|
+
[eeep, cb](absl::Status status) {
|
77
|
+
auto* write_buffer =
|
78
|
+
reinterpret_cast<SliceBuffer*>(&eeep->write_buffer);
|
79
|
+
write_buffer->~SliceBuffer();
|
80
|
+
grpc_core::ExecCtx exec_ctx;
|
81
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb,
|
82
|
+
absl_status_to_grpc_error(status));
|
83
|
+
exec_ctx.Flush();
|
84
|
+
grpc_pollset_ee_broadcast_event();
|
85
|
+
},
|
86
|
+
write_buffer, absl::InfiniteFuture());
|
87
|
+
}
|
88
|
+
void endpoint_add_to_pollset(grpc_endpoint* /* ep */,
|
89
|
+
grpc_pollset* /* pollset */) {}
|
90
|
+
void endpoint_add_to_pollset_set(grpc_endpoint* /* ep */,
|
91
|
+
grpc_pollset_set* /* pollset */) {}
|
92
|
+
void endpoint_delete_from_pollset_set(grpc_endpoint* /* ep */,
|
93
|
+
grpc_pollset_set* /* pollset */) {}
|
94
|
+
/// After shutdown, all endpoint operations except destroy are no-op,
|
95
|
+
/// and will return some kind of sane default (empty strings, nullptrs, etc). It
|
96
|
+
/// is the caller's responsibility to ensure that calls to endpoint_shutdown are
|
97
|
+
/// synchronized.
|
98
|
+
void endpoint_shutdown(grpc_endpoint* ep, grpc_error* why) {
|
99
|
+
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
100
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
101
|
+
const char* str = grpc_error_string(why);
|
102
|
+
gpr_log(GPR_INFO, "TCP Endpoint %p shutdown why=%s", eeep->endpoint.get(),
|
103
|
+
str);
|
104
|
+
}
|
105
|
+
grpc_resource_user_shutdown(eeep->ru);
|
106
|
+
eeep->endpoint.reset();
|
107
|
+
}
|
108
|
+
|
109
|
+
void endpoint_destroy(grpc_endpoint* ep) {
|
110
|
+
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
111
|
+
grpc_resource_user_unref(eeep->ru);
|
112
|
+
delete eeep;
|
113
|
+
}
|
114
|
+
|
115
|
+
grpc_resource_user* endpoint_get_resource_user(grpc_endpoint* ep) {
|
116
|
+
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
117
|
+
return eeep->ru;
|
118
|
+
}
|
119
|
+
|
120
|
+
absl::string_view endpoint_get_peer(grpc_endpoint* ep) {
|
121
|
+
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
122
|
+
if (eeep->endpoint == nullptr) {
|
123
|
+
return "";
|
124
|
+
}
|
125
|
+
if (eeep->peer_address.empty()) {
|
126
|
+
const EventEngine::ResolvedAddress* addr = eeep->endpoint->GetPeerAddress();
|
127
|
+
GPR_ASSERT(addr != nullptr);
|
128
|
+
eeep->peer_address = ResolvedAddressToURI(*addr);
|
129
|
+
}
|
130
|
+
return eeep->peer_address;
|
131
|
+
}
|
132
|
+
|
133
|
+
absl::string_view endpoint_get_local_address(grpc_endpoint* ep) {
|
134
|
+
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
135
|
+
if (eeep->endpoint == nullptr) {
|
136
|
+
return "";
|
137
|
+
}
|
138
|
+
if (eeep->local_address.empty()) {
|
139
|
+
const EventEngine::ResolvedAddress* addr =
|
140
|
+
eeep->endpoint->GetLocalAddress();
|
141
|
+
GPR_ASSERT(addr != nullptr);
|
142
|
+
eeep->local_address = ResolvedAddressToURI(*addr);
|
143
|
+
}
|
144
|
+
return eeep->local_address;
|
145
|
+
}
|
146
|
+
|
147
|
+
int endpoint_get_fd(grpc_endpoint* /* ep */) { return -1; }
|
148
|
+
|
149
|
+
bool endpoint_can_track_err(grpc_endpoint* /* ep */) { return false; }
|
150
|
+
|
151
|
+
grpc_endpoint_vtable grpc_event_engine_endpoint_vtable = {
|
152
|
+
endpoint_read,
|
153
|
+
endpoint_write,
|
154
|
+
endpoint_add_to_pollset,
|
155
|
+
endpoint_add_to_pollset_set,
|
156
|
+
endpoint_delete_from_pollset_set,
|
157
|
+
endpoint_shutdown,
|
158
|
+
endpoint_destroy,
|
159
|
+
endpoint_get_resource_user,
|
160
|
+
endpoint_get_peer,
|
161
|
+
endpoint_get_local_address,
|
162
|
+
endpoint_get_fd,
|
163
|
+
endpoint_can_track_err};
|
164
|
+
|
165
|
+
} // namespace
|
166
|
+
|
167
|
+
grpc_event_engine_endpoint* grpc_tcp_server_endpoint_create(
|
168
|
+
std::unique_ptr<EventEngine::Endpoint> ee_endpoint) {
|
169
|
+
auto endpoint = new grpc_event_engine_endpoint;
|
170
|
+
endpoint->base.vtable = &grpc_event_engine_endpoint_vtable;
|
171
|
+
// TODO(hork): populate endpoint->ru from the uvEngine's subclass
|
172
|
+
endpoint->endpoint = std::move(ee_endpoint);
|
173
|
+
return endpoint;
|
174
|
+
}
|
175
|
+
|
176
|
+
grpc_endpoint* grpc_tcp_create(const grpc_channel_args* channel_args,
|
177
|
+
absl::string_view peer_address) {
|
178
|
+
auto endpoint = new grpc_event_engine_endpoint;
|
179
|
+
endpoint->base.vtable = &grpc_event_engine_endpoint_vtable;
|
180
|
+
grpc_resource_quota* resource_quota =
|
181
|
+
grpc_channel_args_find_pointer<grpc_resource_quota>(
|
182
|
+
channel_args, GRPC_ARG_RESOURCE_QUOTA);
|
183
|
+
if (resource_quota != nullptr) {
|
184
|
+
grpc_resource_quota_ref_internal(resource_quota);
|
185
|
+
} else {
|
186
|
+
resource_quota = grpc_resource_quota_create(nullptr);
|
187
|
+
}
|
188
|
+
endpoint->ru = grpc_resource_user_create(resource_quota,
|
189
|
+
std::string(peer_address).c_str());
|
190
|
+
grpc_resource_quota_unref_internal(resource_quota);
|
191
|
+
return &endpoint->base;
|
192
|
+
}
|
193
|
+
|
194
|
+
#endif // GRPC_USE_EVENT_ENGINE
|
@@ -0,0 +1,53 @@
|
|
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_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H
|
15
|
+
#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#ifdef GRPC_USE_EVENT_ENGINE
|
20
|
+
#include <grpc/event_engine/event_engine.h>
|
21
|
+
|
22
|
+
#include "src/core/lib/iomgr/endpoint.h"
|
23
|
+
#include "src/core/lib/iomgr/resource_quota.h"
|
24
|
+
|
25
|
+
struct grpc_event_engine_endpoint {
|
26
|
+
grpc_endpoint base;
|
27
|
+
std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
|
28
|
+
endpoint;
|
29
|
+
std::string peer_address;
|
30
|
+
std::string local_address;
|
31
|
+
grpc_resource_user* ru = nullptr;
|
32
|
+
std::aligned_storage<
|
33
|
+
sizeof(grpc_event_engine::experimental::SliceBuffer),
|
34
|
+
alignof(grpc_event_engine::experimental::SliceBuffer)>::type read_buffer;
|
35
|
+
std::aligned_storage<
|
36
|
+
sizeof(grpc_event_engine::experimental::SliceBuffer),
|
37
|
+
alignof(grpc_event_engine::experimental::SliceBuffer)>::type write_buffer;
|
38
|
+
};
|
39
|
+
|
40
|
+
/// Creates an internal grpc_endpoint struct from an EventEngine Endpoint.
|
41
|
+
/// Server code needs to create grpc_endpoints after the EventEngine has made
|
42
|
+
/// connections.
|
43
|
+
grpc_event_engine_endpoint* grpc_tcp_server_endpoint_create(
|
44
|
+
std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint> ee);
|
45
|
+
|
46
|
+
/// Creates a new internal grpc_endpoint struct, when no EventEngine Endpoint
|
47
|
+
/// has yet been created. This is used in client code before connections are
|
48
|
+
/// established.
|
49
|
+
grpc_endpoint* grpc_tcp_create(const grpc_channel_args* channel_args,
|
50
|
+
absl::string_view peer_address);
|
51
|
+
|
52
|
+
#endif
|
53
|
+
#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H
|
@@ -0,0 +1,105 @@
|
|
1
|
+
// Copyright 2021 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
15
|
+
|
16
|
+
#ifdef GRPC_USE_EVENT_ENGINE
|
17
|
+
#include "src/core/lib/iomgr/event_engine/iomgr.h"
|
18
|
+
|
19
|
+
#include <grpc/event_engine/event_engine.h>
|
20
|
+
|
21
|
+
#include "src/core/lib/debug/trace.h"
|
22
|
+
#include "src/core/lib/iomgr/closure.h"
|
23
|
+
#include "src/core/lib/iomgr/event_engine/promise.h"
|
24
|
+
#include "src/core/lib/iomgr/iomgr_internal.h"
|
25
|
+
#include "src/core/lib/iomgr/tcp_client.h"
|
26
|
+
#include "src/core/lib/iomgr/tcp_server.h"
|
27
|
+
#include "src/core/lib/iomgr/timer.h"
|
28
|
+
#include "src/core/lib/surface/init.h"
|
29
|
+
|
30
|
+
extern grpc_tcp_client_vtable grpc_event_engine_tcp_client_vtable;
|
31
|
+
extern grpc_tcp_server_vtable grpc_event_engine_tcp_server_vtable;
|
32
|
+
extern grpc_timer_vtable grpc_event_engine_timer_vtable;
|
33
|
+
extern grpc_pollset_vtable grpc_event_engine_pollset_vtable;
|
34
|
+
extern grpc_pollset_set_vtable grpc_event_engine_pollset_set_vtable;
|
35
|
+
extern grpc_address_resolver_vtable grpc_event_engine_resolver_vtable;
|
36
|
+
|
37
|
+
// Disabled by default. grpc_polling_trace must be defined in all iomgr
|
38
|
+
// implementations due to its usage in lockfree_event.
|
39
|
+
grpc_core::DebugOnlyTraceFlag grpc_polling_trace(false, "polling");
|
40
|
+
|
41
|
+
namespace {
|
42
|
+
|
43
|
+
using ::grpc_event_engine::experimental::DefaultEventEngineFactory;
|
44
|
+
using ::grpc_event_engine::experimental::EventEngine;
|
45
|
+
using ::grpc_event_engine::experimental::Promise;
|
46
|
+
|
47
|
+
// Note: This is a pointer to a shared_ptr, so it's trivially destructible.
|
48
|
+
std::shared_ptr<EventEngine>* g_event_engine;
|
49
|
+
|
50
|
+
void iomgr_platform_init(void) {
|
51
|
+
g_event_engine =
|
52
|
+
new std::shared_ptr<EventEngine>(DefaultEventEngineFactory());
|
53
|
+
}
|
54
|
+
|
55
|
+
void iomgr_platform_flush(void) {}
|
56
|
+
|
57
|
+
void iomgr_platform_shutdown(void) {
|
58
|
+
Promise<absl::Status> shutdown_status_promise;
|
59
|
+
(*g_event_engine)->Shutdown([&shutdown_status_promise](absl::Status status) {
|
60
|
+
shutdown_status_promise.Set(std::move(status));
|
61
|
+
});
|
62
|
+
auto shutdown_status = shutdown_status_promise.Get();
|
63
|
+
GPR_ASSERT(shutdown_status.ok());
|
64
|
+
delete g_event_engine;
|
65
|
+
g_event_engine = nullptr;
|
66
|
+
}
|
67
|
+
|
68
|
+
void iomgr_platform_shutdown_background_closure(void) {}
|
69
|
+
|
70
|
+
bool iomgr_platform_is_any_background_poller_thread(void) {
|
71
|
+
return (*g_event_engine)->IsWorkerThread();
|
72
|
+
}
|
73
|
+
|
74
|
+
bool iomgr_platform_add_closure_to_background_poller(
|
75
|
+
grpc_closure* /* closure */, grpc_error* /* error */) {
|
76
|
+
return false;
|
77
|
+
}
|
78
|
+
|
79
|
+
grpc_iomgr_platform_vtable vtable = {
|
80
|
+
iomgr_platform_init,
|
81
|
+
iomgr_platform_flush,
|
82
|
+
iomgr_platform_shutdown,
|
83
|
+
iomgr_platform_shutdown_background_closure,
|
84
|
+
iomgr_platform_is_any_background_poller_thread,
|
85
|
+
iomgr_platform_add_closure_to_background_poller};
|
86
|
+
|
87
|
+
} // namespace
|
88
|
+
|
89
|
+
void grpc_set_default_iomgr_platform() {
|
90
|
+
grpc_set_tcp_client_impl(&grpc_event_engine_tcp_client_vtable);
|
91
|
+
grpc_set_tcp_server_impl(&grpc_event_engine_tcp_server_vtable);
|
92
|
+
grpc_set_timer_impl(&grpc_event_engine_timer_vtable);
|
93
|
+
grpc_set_pollset_vtable(&grpc_event_engine_pollset_vtable);
|
94
|
+
grpc_set_pollset_set_vtable(&grpc_event_engine_pollset_set_vtable);
|
95
|
+
grpc_set_resolver_impl(&grpc_event_engine_resolver_vtable);
|
96
|
+
grpc_set_iomgr_platform_vtable(&vtable);
|
97
|
+
}
|
98
|
+
|
99
|
+
bool grpc_iomgr_run_in_background() { return false; }
|
100
|
+
|
101
|
+
grpc_event_engine::experimental::EventEngine* grpc_iomgr_event_engine() {
|
102
|
+
return g_event_engine->get();
|
103
|
+
}
|
104
|
+
|
105
|
+
#endif // GRPC_USE_EVENT_ENGINE
|