From 89e6a480f31cdc9011f1ba135b56418793f050ce Mon Sep 17 00:00:00 2001 From: Geoff Kizer Date: Tue, 12 Nov 2019 12:00:52 -0800 Subject: [PATCH] QUIC: Change constructor overloads for passing QuicImplementationProvider (dotnet/corefx#42542) * change constructor overloads for passing QuicImplementationProvider * add and use QuicImplementationProviders.Default * Update src/System.Net.Quic/src/System/Net/Quic/QuicImplementationProviders.cs Co-Authored-By: Stephen Toub Commit migrated from https://github.com/dotnet/corefx/commit/460c422dc82f2a80cba8f1a900000e199f1bf02a --- src/libraries/System.Net.Quic/ref/System.Net.Quic.Temporary.cs | 6 ++++-- .../System.Net.Quic/src/System/Net/Quic/QuicConnection.cs | 4 ++-- .../src/System/Net/Quic/QuicImplementationProviders.cs | 2 ++ src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs | 4 ++-- .../System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs | 8 ++++---- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/libraries/System.Net.Quic/ref/System.Net.Quic.Temporary.cs b/src/libraries/System.Net.Quic/ref/System.Net.Quic.Temporary.cs index 4cb50b8..f9735f4 100644 --- a/src/libraries/System.Net.Quic/ref/System.Net.Quic.Temporary.cs +++ b/src/libraries/System.Net.Quic/ref/System.Net.Quic.Temporary.cs @@ -11,15 +11,17 @@ namespace System.Net.Quic { public sealed partial class QuicConnection : System.IDisposable { - public QuicConnection(IPEndPoint remoteEndPoint, System.Net.Security.SslClientAuthenticationOptions sslClientAuthenticationOptions, IPEndPoint localEndPoint = null, System.Net.Quic.Implementations.QuicImplementationProvider implementationProvider = null) { } + public QuicConnection(System.Net.Quic.Implementations.QuicImplementationProvider implementationProvider, IPEndPoint remoteEndPoint, System.Net.Security.SslClientAuthenticationOptions sslClientAuthenticationOptions, IPEndPoint localEndPoint = null) { } } public sealed partial class QuicListener : IDisposable { - public QuicListener(IPEndPoint listenEndPoint, System.Net.Security.SslServerAuthenticationOptions sslServerAuthenticationOptions, System.Net.Quic.Implementations.QuicImplementationProvider implementationProvider = null) { } + public QuicListener(System.Net.Quic.Implementations.QuicImplementationProvider implementationProvider, IPEndPoint listenEndPoint, System.Net.Security.SslServerAuthenticationOptions sslServerAuthenticationOptions) { } } public static class QuicImplementationProviders { public static System.Net.Quic.Implementations.QuicImplementationProvider Mock { get { throw null; } } + + public static System.Net.Quic.Implementations.QuicImplementationProvider Default { get { throw null; } } } } namespace System.Net.Quic.Implementations 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 0832867..4348696 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 @@ -20,12 +20,12 @@ namespace System.Net.Quic /// TLS options /// The local endpoint to connect from. public QuicConnection(IPEndPoint remoteEndPoint, SslClientAuthenticationOptions sslClientAuthenticationOptions, IPEndPoint localEndPoint = null) - : this(remoteEndPoint, sslClientAuthenticationOptions, localEndPoint, implementationProvider: null) + : this(QuicImplementationProviders.Default, remoteEndPoint, sslClientAuthenticationOptions, localEndPoint) { } // !!! TEMPORARY: Remove "implementationProvider" before shipping - public QuicConnection(IPEndPoint remoteEndPoint, SslClientAuthenticationOptions sslClientAuthenticationOptions, IPEndPoint localEndPoint = null, QuicImplementationProvider implementationProvider = null) + public QuicConnection(QuicImplementationProvider implementationProvider, IPEndPoint remoteEndPoint, SslClientAuthenticationOptions sslClientAuthenticationOptions, IPEndPoint localEndPoint = null) { _provider = implementationProvider.CreateConnection(remoteEndPoint, sslClientAuthenticationOptions, localEndPoint); } diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicImplementationProviders.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicImplementationProviders.cs index 7cc5ef2..adb7cd2 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicImplementationProviders.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicImplementationProviders.cs @@ -7,5 +7,7 @@ namespace System.Net.Quic public static class QuicImplementationProviders { public static Implementations.QuicImplementationProvider Mock { get; } = new Implementations.Mock.MockImplementationProvider(); + + public static Implementations.QuicImplementationProvider Default => Mock; } } 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 7a3348b..809bf01 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 @@ -19,12 +19,12 @@ namespace System.Net.Quic /// The local endpoint to listen on. /// TLS options for the listener. public QuicListener(IPEndPoint listenEndPoint, SslServerAuthenticationOptions sslServerAuthenticationOptions) - : this(listenEndPoint, sslServerAuthenticationOptions, implementationProvider: null) + : this(QuicImplementationProviders.Default, listenEndPoint, sslServerAuthenticationOptions) { } // !!! TEMPORARY: Remove "implementationProvider" before shipping - public QuicListener(IPEndPoint listenEndPoint, SslServerAuthenticationOptions sslServerAuthenticationOptions, QuicImplementationProvider implementationProvider = null) + public QuicListener(QuicImplementationProvider implementationProvider, IPEndPoint listenEndPoint, SslServerAuthenticationOptions sslServerAuthenticationOptions) { _provider = implementationProvider.CreateListener(listenEndPoint, sslServerAuthenticationOptions); } diff --git a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs index c049fa8..d05324e 100644 --- a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs +++ b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs @@ -18,7 +18,7 @@ namespace System.Net.Quic.Tests [Fact] public async Task BasicTest() { - using (QuicListener listener = new QuicListener(new IPEndPoint(IPAddress.Loopback, 0), sslServerAuthenticationOptions: null, implementationProvider: QuicImplementationProviders.Mock)) + using (QuicListener listener = new QuicListener(QuicImplementationProviders.Mock, new IPEndPoint(IPAddress.Loopback, 0), sslServerAuthenticationOptions: null)) { IPEndPoint listenEndPoint = listener.ListenEndPoint; @@ -26,7 +26,7 @@ namespace System.Net.Quic.Tests Task.Run(async () => { // Client code - using (QuicConnection connection = new QuicConnection(listenEndPoint, sslClientAuthenticationOptions: null, implementationProvider: QuicImplementationProviders.Mock)) + using (QuicConnection connection = new QuicConnection(QuicImplementationProviders.Mock, listenEndPoint, sslClientAuthenticationOptions: null)) { await connection.ConnectAsync(); using (QuicStream stream = connection.OpenBidirectionalStream()) @@ -55,11 +55,11 @@ namespace System.Net.Quic.Tests [Fact] public async Task TestStreams() { - using (QuicListener listener = new QuicListener(new IPEndPoint(IPAddress.Loopback, 0), sslServerAuthenticationOptions: null, implementationProvider: QuicImplementationProviders.Mock)) + using (QuicListener listener = new QuicListener(QuicImplementationProviders.Mock, new IPEndPoint(IPAddress.Loopback, 0), sslServerAuthenticationOptions: null)) { IPEndPoint listenEndPoint = listener.ListenEndPoint; - using (QuicConnection clientConnection = new QuicConnection(listenEndPoint, sslClientAuthenticationOptions: null, implementationProvider: QuicImplementationProviders.Mock)) + using (QuicConnection clientConnection = new QuicConnection(QuicImplementationProviders.Mock, listenEndPoint, sslClientAuthenticationOptions: null)) { Assert.False(clientConnection.Connected); Assert.Equal(listenEndPoint, clientConnection.RemoteEndPoint); -- 2.7.4