From 311733b11383492ffe1372b28430cf655623dc4a Mon Sep 17 00:00:00 2001 From: SteveSandersonMS Date: Wed, 1 Jun 2016 18:04:40 +0100 Subject: [PATCH] Fix references to socket APIs, and target the lowest net standard versions possible --- src/Microsoft.AspNetCore.AngularServices/project.json | 2 +- .../PhysicalConnections/NamedPipeConnection.cs | 6 ++++++ .../PhysicalConnections/StreamConnection.cs | 8 ++++++-- .../PhysicalConnections/UnixDomainSocketConnection.cs | 11 +++++++++++ .../PhysicalConnections/UnixDomainSocketEndPoint.cs | 4 ++++ .../VirtualConnections/VirtualConnection.cs | 7 ++++++- src/Microsoft.AspNetCore.NodeServices/project.json | 10 ++++++++-- src/Microsoft.AspNetCore.ReactServices/project.json | 2 +- src/Microsoft.AspNetCore.SpaServices/project.json | 4 ++-- 9 files changed, 45 insertions(+), 9 deletions(-) diff --git a/src/Microsoft.AspNetCore.AngularServices/project.json b/src/Microsoft.AspNetCore.AngularServices/project.json index 493962a..60be12c 100644 --- a/src/Microsoft.AspNetCore.AngularServices/project.json +++ b/src/Microsoft.AspNetCore.AngularServices/project.json @@ -15,7 +15,7 @@ "frameworks": { "net451": { }, - "netstandard1.5": { + "netstandard1.0": { "imports": [ "dotnet5.6", "dnxcore50", diff --git a/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/NamedPipeConnection.cs b/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/NamedPipeConnection.cs index ea2159a..0d0d79b 100644 --- a/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/NamedPipeConnection.cs +++ b/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/NamedPipeConnection.cs @@ -9,12 +9,18 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections private bool _disposedValue = false; private NamedPipeClientStream _namedPipeClientStream; +#pragma warning disable 1998 // Because in the NET451 code path, there's nothing to await public override async Task Open(string address) { _namedPipeClientStream = new NamedPipeClientStream(".", address, PipeDirection.InOut); +#if NET451 + _namedPipeClientStream.Connect(); +#else await _namedPipeClientStream.ConnectAsync().ConfigureAwait(false); +#endif return _namedPipeClientStream; } +#pragma warning restore 1998 public override void Dispose() { diff --git a/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/StreamConnection.cs b/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/StreamConnection.cs index 6e90324..45a5353 100644 --- a/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/StreamConnection.cs +++ b/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/StreamConnection.cs @@ -1,6 +1,5 @@ using System; using System.IO; -using System.Runtime.InteropServices; using System.Threading.Tasks; namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections @@ -12,7 +11,11 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections public static StreamConnection Create() { - var useNamedPipes = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); +#if NET451 + return new NamedPipeConnection(); +#else + var useNamedPipes = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform( + System.Runtime.InteropServices.OSPlatform.Windows); if (useNamedPipes) { return new NamedPipeConnection(); @@ -21,6 +24,7 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections { return new UnixDomainSocketConnection(); } +#endif } } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/UnixDomainSocketConnection.cs b/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/UnixDomainSocketConnection.cs index 93d3a44..bd0240b 100644 --- a/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/UnixDomainSocketConnection.cs +++ b/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/UnixDomainSocketConnection.cs @@ -10,6 +10,16 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections private NetworkStream _networkStream; private Socket _socket; +#if NET451 + public override Task Open(string address) + { + // The 'null' assignments avoid the compiler warnings about unassigned fields. + // Note that this whole class isn't supported on .NET 4.5.1, since that's not cross-platform. + _networkStream = null; + _socket = null; + throw new System.PlatformNotSupportedException(); + } +#else public override async Task Open(string address) { var endPoint = new UnixDomainSocketEndPoint("/tmp/" + address); @@ -18,6 +28,7 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections _networkStream = new NetworkStream(_socket); return _networkStream; } +#endif public override void Dispose() { diff --git a/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/UnixDomainSocketEndPoint.cs b/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/UnixDomainSocketEndPoint.cs index 8937a0d..6276a08 100644 --- a/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/UnixDomainSocketEndPoint.cs +++ b/src/Microsoft.AspNetCore.NodeServices/HostingModels/PhysicalConnections/UnixDomainSocketEndPoint.cs @@ -59,7 +59,11 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections } else { +#if NET451 + _encodedPath = new byte[0]; +#else _encodedPath = Array.Empty(); +#endif _path = string.Empty; } } diff --git a/src/Microsoft.AspNetCore.NodeServices/HostingModels/VirtualConnections/VirtualConnection.cs b/src/Microsoft.AspNetCore.NodeServices/HostingModels/VirtualConnections/VirtualConnection.cs index 2a2d148..afc543c 100644 --- a/src/Microsoft.AspNetCore.NodeServices/HostingModels/VirtualConnections/VirtualConnection.cs +++ b/src/Microsoft.AspNetCore.NodeServices/HostingModels/VirtualConnections/VirtualConnection.cs @@ -12,6 +12,11 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels.VirtualConnections /// internal class VirtualConnection : Stream { +#if NET451 + private readonly static Task CompletedTask = Task.FromResult((object)null); +#else + private readonly static Task CompletedTask = Task.CompletedTask; +#endif private VirtualConnectionClient _host; private readonly BufferBlock _receivedDataQueue = new BufferBlock(); private ArraySegment _receivedDataNotYetUsed; @@ -109,7 +114,7 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels.VirtualConnections throw new InvalidOperationException("The connection was already closed by the remote party"); } - return count > 0 ? _host.WriteAsync(Id, buffer, offset, count, cancellationToken) : Task.CompletedTask; + return count > 0 ? _host.WriteAsync(Id, buffer, offset, count, cancellationToken) : CompletedTask; } public override int Read(byte[] buffer, int offset, int count) diff --git a/src/Microsoft.AspNetCore.NodeServices/project.json b/src/Microsoft.AspNetCore.NodeServices/project.json index 5f8cbe7..b5b8897 100644 --- a/src/Microsoft.AspNetCore.NodeServices/project.json +++ b/src/Microsoft.AspNetCore.NodeServices/project.json @@ -15,7 +15,10 @@ "frameworks": { "net451": { "frameworkAssemblies": { - "System.Net.Http": "4.0.0.0" + "System.Net.Http": "4.0.0-*" + }, + "dependencies": { + "Microsoft.Tpl.Dataflow": "4.5.24" } }, "netstandard1.3": { @@ -27,8 +30,11 @@ "dependencies": { "System.Console": "4.0.0-*", "System.Diagnostics.Process": "4.1.0-*", + "System.IO.Pipes": "4.0.0-*", "System.Net.Http": "4.0.1-*", - "System.Text.RegularExpressions": "4.0.12-*" + "System.Net.Sockets": "4.1.0-*", + "System.Text.RegularExpressions": "4.0.12-*", + "System.Threading.Tasks.Dataflow": "4.5.25-*" } } }, diff --git a/src/Microsoft.AspNetCore.ReactServices/project.json b/src/Microsoft.AspNetCore.ReactServices/project.json index aed2855..79b2eb7 100644 --- a/src/Microsoft.AspNetCore.ReactServices/project.json +++ b/src/Microsoft.AspNetCore.ReactServices/project.json @@ -15,7 +15,7 @@ "frameworks": { "net451": { }, - "netstandard1.5": { + "netstandard1.0": { "imports": [ "dotnet5.6", "dnxcore50", diff --git a/src/Microsoft.AspNetCore.SpaServices/project.json b/src/Microsoft.AspNetCore.SpaServices/project.json index 8b4f253..64011be 100644 --- a/src/Microsoft.AspNetCore.SpaServices/project.json +++ b/src/Microsoft.AspNetCore.SpaServices/project.json @@ -14,7 +14,7 @@ "frameworks": { "net451": { }, - "netstandard1.5": { + "netstandard1.0": { "imports": [ "dotnet5.6", "dnxcore50", @@ -26,5 +26,5 @@ "embed": [ "Content/**/*" ] - } + } }