From d00f1f93b2676706203f0ce65251a68bea9cfcbe Mon Sep 17 00:00:00 2001 From: David Fowler Date: Mon, 7 Nov 2016 21:39:19 -0800 Subject: [PATCH] Added support for net451 and netstandard1.3 - Replaced Task.CompletedTask with TaskCache.CompletedTask - Updated tests and src --- .../DefaultHubLifetimeManager.cs | 9 +++++---- src/Microsoft.AspNetCore.SignalR/Hub.cs | 5 +++-- src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs | 3 ++- src/Microsoft.AspNetCore.SignalR/project.json | 8 ++++++-- src/Microsoft.AspNetCore.Sockets/WebSockets.cs | 1 - src/Microsoft.AspNetCore.Sockets/project.json | 2 +- .../IWebSocketConnection.cs | 5 +++-- .../project.json | 7 ++++++- test/Microsoft.AspNetCore.Sockets.Tests/project.json | 2 +- .../project.json | 5 +++-- .../WebSocketConnectionTests.ConnectionLifecycle.cs | 3 ++- .../WebSocketConnectionTests.SendAsync.cs | 3 ++- .../project.json | 6 +++++- 13 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/Microsoft.AspNetCore.SignalR/DefaultHubLifetimeManager.cs b/src/Microsoft.AspNetCore.SignalR/DefaultHubLifetimeManager.cs index 791e715382..34fbe1d4aa 100644 --- a/src/Microsoft.AspNetCore.SignalR/DefaultHubLifetimeManager.cs +++ b/src/Microsoft.AspNetCore.SignalR/DefaultHubLifetimeManager.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Threading.Tasks; using Channels; using Microsoft.AspNetCore.Sockets; +using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.SignalR { @@ -29,7 +30,7 @@ namespace Microsoft.AspNetCore.SignalR groups.Add(groupName); } - return Task.CompletedTask; + return TaskCache.CompletedTask; } public override Task RemoveGroupAsync(Connection connection, string groupName) @@ -41,7 +42,7 @@ namespace Microsoft.AspNetCore.SignalR groups.Remove(groupName); } - return Task.CompletedTask; + return TaskCache.CompletedTask; } public override Task InvokeAllAsync(string methodName, object[] args) @@ -109,13 +110,13 @@ namespace Microsoft.AspNetCore.SignalR public override Task OnConnectedAsync(Connection connection) { _connections.Add(connection); - return Task.CompletedTask; + return TaskCache.CompletedTask; } public override Task OnDisconnectedAsync(Connection connection) { _connections.Remove(connection); - return Task.CompletedTask; + return TaskCache.CompletedTask; } } diff --git a/src/Microsoft.AspNetCore.SignalR/Hub.cs b/src/Microsoft.AspNetCore.SignalR/Hub.cs index 07932d1263..20566502c4 100644 --- a/src/Microsoft.AspNetCore.SignalR/Hub.cs +++ b/src/Microsoft.AspNetCore.SignalR/Hub.cs @@ -3,6 +3,7 @@ using System; using System.Threading.Tasks; +using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.SignalR { @@ -62,12 +63,12 @@ namespace Microsoft.AspNetCore.SignalR public virtual Task OnConnectedAsync() { - return Task.CompletedTask; + return TaskCache.CompletedTask; } public virtual Task OnDisconnectedAsync() { - return Task.CompletedTask; + return TaskCache.CompletedTask; } protected virtual void Dispose(bool disposing) diff --git a/src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs b/src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs index 58245f9f43..a92f6a0586 100644 --- a/src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs +++ b/src/Microsoft.AspNetCore.SignalR/HubEndPoint.cs @@ -30,6 +30,7 @@ namespace Microsoft.AspNetCore.SignalR private readonly Dictionary>> _callbacks = new Dictionary>>(StringComparer.OrdinalIgnoreCase); private readonly Dictionary _paramTypes = new Dictionary(); + private static object[] EmptyArray = new object[0]; private readonly HubLifetimeManager _lifetimeManager; private readonly IHubContext _hubContext; @@ -183,7 +184,7 @@ namespace Microsoft.AspNetCore.SignalR try { - var arguments = invocationDescriptor.Arguments ?? Array.Empty(); + var arguments = invocationDescriptor.Arguments ?? EmptyArray; var args = arguments .Zip(parameters, (a, p) => Convert.ChangeType(a, p.ParameterType)) diff --git a/src/Microsoft.AspNetCore.SignalR/project.json b/src/Microsoft.AspNetCore.SignalR/project.json index ff5dd81364..781f5100e5 100644 --- a/src/Microsoft.AspNetCore.SignalR/project.json +++ b/src/Microsoft.AspNetCore.SignalR/project.json @@ -25,12 +25,16 @@ "Microsoft.AspNetCore.Sockets": { "target": "project" }, + "Microsoft.Extensions.TaskCache.Sources": { + "version": "1.1.0-*", + "type": "build" + }, "NETStandard.Library": "1.6.1-*", "Newtonsoft.Json": "9.0.1" }, "frameworks": { - "netstandard1.6": { - } + "netstandard1.3": {}, + "net451": {} } } diff --git a/src/Microsoft.AspNetCore.Sockets/WebSockets.cs b/src/Microsoft.AspNetCore.Sockets/WebSockets.cs index 77a4c930c4..7507603b59 100644 --- a/src/Microsoft.AspNetCore.Sockets/WebSockets.cs +++ b/src/Microsoft.AspNetCore.Sockets/WebSockets.cs @@ -27,7 +27,6 @@ namespace Microsoft.AspNetCore.Sockets { if (!context.WebSockets.IsWebSocketRequest) { - await Task.CompletedTask; return; } diff --git a/src/Microsoft.AspNetCore.Sockets/project.json b/src/Microsoft.AspNetCore.Sockets/project.json index 47264d75dd..3cba3e216a 100644 --- a/src/Microsoft.AspNetCore.Sockets/project.json +++ b/src/Microsoft.AspNetCore.Sockets/project.json @@ -30,6 +30,6 @@ }, "frameworks": { "netstandard1.3": {}, - "net46": {} + "net451": {} } } diff --git a/src/Microsoft.Extensions.WebSockets.Internal/IWebSocketConnection.cs b/src/Microsoft.Extensions.WebSockets.Internal/IWebSocketConnection.cs index 7f7d1b4d26..9f74bc95c4 100644 --- a/src/Microsoft.Extensions.WebSockets.Internal/IWebSocketConnection.cs +++ b/src/Microsoft.Extensions.WebSockets.Internal/IWebSocketConnection.cs @@ -4,6 +4,7 @@ using System; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Internal; namespace Microsoft.Extensions.WebSockets.Internal { @@ -129,7 +130,7 @@ namespace Microsoft.Extensions.WebSockets.Internal connection.ExecuteAsync((frame, _) => { messageHandler(frame); - return Task.CompletedTask; + return TaskCache.CompletedTask; }, null); /// @@ -143,7 +144,7 @@ namespace Microsoft.Extensions.WebSockets.Internal connection.ExecuteAsync((frame, s) => { messageHandler(frame, s); - return Task.CompletedTask; + return TaskCache.CompletedTask; }, state); /// diff --git a/src/Microsoft.Extensions.WebSockets.Internal/project.json b/src/Microsoft.Extensions.WebSockets.Internal/project.json index 8af2e39b1f..b57ffe8ed5 100644 --- a/src/Microsoft.Extensions.WebSockets.Internal/project.json +++ b/src/Microsoft.Extensions.WebSockets.Internal/project.json @@ -25,10 +25,15 @@ "dependencies": { "Channels": "0.2.0-beta-*", "Channels.Text.Primitives": "0.2.0-beta-*", + "Microsoft.Extensions.TaskCache.Sources": { + "version": "1.1.0-*", + "type": "build" + }, "NETStandard.Library": "1.6.1-*" }, "frameworks": { - "netstandard1.3": {} + "netstandard1.3": {}, + "net451": {} } } diff --git a/test/Microsoft.AspNetCore.Sockets.Tests/project.json b/test/Microsoft.AspNetCore.Sockets.Tests/project.json index e99e32ef0c..a93546a651 100644 --- a/test/Microsoft.AspNetCore.Sockets.Tests/project.json +++ b/test/Microsoft.AspNetCore.Sockets.Tests/project.json @@ -20,7 +20,7 @@ } } }, - "net46": {} + "net451": {} }, "testRunner": "xunit" } diff --git a/test/Microsoft.AspNetCore.WebSockets.Internal.ConformanceTest/project.json b/test/Microsoft.AspNetCore.WebSockets.Internal.ConformanceTest/project.json index f167b5bc56..f58f6da195 100644 --- a/test/Microsoft.AspNetCore.WebSockets.Internal.ConformanceTest/project.json +++ b/test/Microsoft.AspNetCore.WebSockets.Internal.ConformanceTest/project.json @@ -10,18 +10,19 @@ "Microsoft.Extensions.Logging": "1.1.0-*", "Microsoft.Extensions.Logging.Console": "1.1.0-*", "Microsoft.Extensions.PlatformAbstractions": "1.1.0-*", - "System.Diagnostics.FileVersionInfo": "4.3.0-*", "xunit": "2.2.0-*" }, "testRunner": "xunit", "frameworks": { "netcoreapp1.1": { "dependencies": { + "System.Diagnostics.FileVersionInfo": "4.3.0-*", "Microsoft.NETCore.App": { "version": "1.1.0-*", "type": "platform" } } - } + }, + "net451": { } } } diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ConnectionLifecycle.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ConnectionLifecycle.cs index 4eae600cd8..f2a89dd24c 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ConnectionLifecycle.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ConnectionLifecycle.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Channels; +using Microsoft.Extensions.Internal; using Xunit; namespace Microsoft.Extensions.WebSockets.Internal.Tests @@ -22,7 +23,7 @@ namespace Microsoft.Extensions.WebSockets.Internal.Tests var client = pair.ClientSocket.ExecuteAsync(_ => { Assert.False(true, "did not expect the client to receive any frames!"); - return Task.CompletedTask; + return TaskCache.CompletedTask; }); // Send Frames diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs index f376183124..a2b9e5efc0 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs @@ -5,6 +5,7 @@ using System; using System.Text; using System.Threading.Tasks; using Channels; +using Microsoft.Extensions.Internal; using Xunit; namespace Microsoft.Extensions.WebSockets.Internal.Tests @@ -182,7 +183,7 @@ namespace Microsoft.Extensions.WebSockets.Internal.Tests executeTask = connection.ExecuteAsync(f => { Assert.False(true, "Did not expect to receive any messages"); - return Task.CompletedTask; + return TaskCache.CompletedTask; }); await producer(connection).OrTimeout(); inbound.CompleteWriter(); diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/project.json b/test/Microsoft.Extensions.WebSockets.Internal.Tests/project.json index 2e70ec8a06..0f507e3b19 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/project.json +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/project.json @@ -5,6 +5,10 @@ "dependencies": { "dotnet-test-xunit": "2.2.0-*", + "Microsoft.Extensions.TaskCache.Sources": { + "version": "1.1.0-*", + "type": "build" + }, "Microsoft.Extensions.WebSockets.Internal": "0.1.0-*", "xunit": "2.2.0-*" }, @@ -22,7 +26,7 @@ "portable-net451+win8" ] }, - "net46": { + "net451": { "dependencies": { "xunit.runner.console": "2.1.0" }