QUIC: Change constructor overloads for passing QuicImplementationProvider (dotnet...
authorGeoff Kizer <geoffrek@microsoft.com>
Tue, 12 Nov 2019 20:00:52 +0000 (12:00 -0800)
committerGitHub <noreply@github.com>
Tue, 12 Nov 2019 20:00:52 +0000 (12:00 -0800)
* 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 <stoub@microsoft.com>
Commit migrated from https://github.com/dotnet/corefx/commit/460c422dc82f2a80cba8f1a900000e199f1bf02a

src/libraries/System.Net.Quic/ref/System.Net.Quic.Temporary.cs
src/libraries/System.Net.Quic/src/System/Net/Quic/QuicConnection.cs
src/libraries/System.Net.Quic/src/System/Net/Quic/QuicImplementationProviders.cs
src/libraries/System.Net.Quic/src/System/Net/Quic/QuicListener.cs
src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs

index 4cb50b8..f9735f4 100644 (file)
@@ -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
index 0832867..4348696 100644 (file)
@@ -20,12 +20,12 @@ namespace System.Net.Quic
         /// <param name="sslClientAuthenticationOptions">TLS options</param>
         /// <param name="localEndPoint">The local endpoint to connect from.</param>
         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);
         }
index 7cc5ef2..adb7cd2 100644 (file)
@@ -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;
     }
 }
index 7a3348b..809bf01 100644 (file)
@@ -19,12 +19,12 @@ namespace System.Net.Quic
         /// <param name="listenEndPoint">The local endpoint to listen on.</param>
         /// <param name="sslServerAuthenticationOptions">TLS options for the listener.</param>
         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);
         }
index c049fa8..d05324e 100644 (file)
@@ -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);