From 3e7cc3d27b6363fa3b23c2d5ec789d4d3b7fc2b1 Mon Sep 17 00:00:00 2001 From: ManickaP Date: Mon, 10 Jun 2024 10:08:09 +0200 Subject: [PATCH] Add platform guard to IsSupported --- 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 96a53e2bceb155..158671bcd56773 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 e32239db6d5682..1c286a580fa739 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 3316fc8050d334..1e82a14b03ad98 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 71f83a2abac790..5bcc6b614d0c17 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 249f7571519131..9f63e1c85962a3 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; ///