From 362029499db798dce8c5a495df61e75634b32b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marie=20P=C3=ADchov=C3=A1?= <11718369+ManickaP@users.noreply.github.com> Date: Tue, 18 Jun 2024 10:21:24 +0200 Subject: [PATCH] Add platform guard to IsSupported (#103342) --- src/libraries/System.Net.Quic/ref/System.Net.Quic.cs | 6 ++++++ .../src/System/Net/Quic/QuicConnection.Unsupported.cs | 5 +++++ .../System.Net.Quic/src/System/Net/Quic/QuicConnection.cs | 4 ++++ .../src/System/Net/Quic/QuicListener.Unsupported.cs | 5 +++++ .../System.Net.Quic/src/System/Net/Quic/QuicListener.cs | 4 ++++ 5 files changed, 24 insertions(+) diff --git a/src/libraries/System.Net.Quic/ref/System.Net.Quic.cs b/src/libraries/System.Net.Quic/ref/System.Net.Quic.cs index 96a53e2bceb15..158671bcd5677 100644 --- a/src/libraries/System.Net.Quic/ref/System.Net.Quic.cs +++ b/src/libraries/System.Net.Quic/ref/System.Net.Quic.cs @@ -23,6 +23,9 @@ public QuicClientConnectionOptions() { } public sealed partial class QuicConnection : System.IAsyncDisposable { internal QuicConnection() { } + [Runtime.Versioning.SupportedOSPlatformGuard("windows")] + [Runtime.Versioning.SupportedOSPlatformGuard("linux")] + [Runtime.Versioning.SupportedOSPlatformGuard("osx")] public static bool IsSupported { get { throw null; } } public System.Net.IPEndPoint LocalEndPoint { get { throw null; } } public System.Net.Security.SslApplicationProtocol NegotiatedApplicationProtocol { get { throw null; } } @@ -73,6 +76,9 @@ public QuicException(System.Net.Quic.QuicError error, long? applicationErrorCode public sealed partial class QuicListener : System.IAsyncDisposable { internal QuicListener() { } + [Runtime.Versioning.SupportedOSPlatformGuard("windows")] + [Runtime.Versioning.SupportedOSPlatformGuard("linux")] + [Runtime.Versioning.SupportedOSPlatformGuard("osx")] public static bool IsSupported { get { throw null; } } public System.Net.IPEndPoint LocalEndPoint { get { throw null; } } public System.Threading.Tasks.ValueTask AcceptConnectionAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; } diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.Unsupported.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.Unsupported.cs index e32239db6d568..1c286a580fa73 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.Unsupported.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.Unsupported.cs @@ -1,9 +1,14 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Runtime.Versioning; + namespace System.Net.Quic; public sealed partial class QuicConnection { + [SupportedOSPlatformGuard("windows")] + [SupportedOSPlatformGuard("linux")] + [SupportedOSPlatformGuard("osx")] public static bool IsSupported => false; } diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs index 3316fc8050d33..1e82a14b03ad9 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs @@ -7,6 +7,7 @@ using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; +using System.Runtime.Versioning; using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Channels; @@ -44,6 +45,9 @@ public sealed partial class QuicConnection : IAsyncDisposable /// The current implementation depends on MsQuic native library, this property checks its presence (Linux machines). /// It also checks whether TLS 1.3, requirement for QUIC protocol, is available and enabled (Windows machines). /// + [SupportedOSPlatformGuard("windows")] + [SupportedOSPlatformGuard("linux")] + [SupportedOSPlatformGuard("osx")] public static bool IsSupported => MsQuicApi.IsQuicSupported; /// diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.Unsupported.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.Unsupported.cs index 71f83a2abac79..5bcc6b614d0c1 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.Unsupported.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.Unsupported.cs @@ -1,9 +1,14 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Runtime.Versioning; + namespace System.Net.Quic; public sealed partial class QuicListener { + [SupportedOSPlatformGuard("windows")] + [SupportedOSPlatformGuard("linux")] + [SupportedOSPlatformGuard("osx")] public static bool IsSupported => false; } diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs index 249f757151913..9f63e1c85962a 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs @@ -6,6 +6,7 @@ using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; +using System.Runtime.Versioning; using System.Security.Authentication; using System.Threading; using System.Threading.Channels; @@ -36,6 +37,9 @@ public sealed partial class QuicListener : IAsyncDisposable /// The current implementation depends on MsQuic native library, this property checks its presence (Linux machines). /// It also checks whether TLS 1.3, requirement for QUIC protocol, is available and enabled (Windows machines). /// + [SupportedOSPlatformGuard("windows")] + [SupportedOSPlatformGuard("linux")] + [SupportedOSPlatformGuard("osx")] public static bool IsSupported => MsQuicApi.IsQuicSupported; ///