From b3a90116980d02a30e8ca1704689e2bac813b156 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Mon, 16 Apr 2018 15:54:42 +1200 Subject: [PATCH] API review changes for Microsoft.AspNetCore.SignalR (#2033) --- .../BroadcastBenchmark.cs | 2 +- .../DefaultHubActivatorBenchmark.cs | 1 + .../DefaultHubLifetimeManagerBenchmark.cs | 2 +- .../RedisHubLifetimeManagerBenchmark.cs | 6 ++-- .../ChatSample/PresenceHubLifetimeManager.cs | 8 ++--- samples/SignalRSamples/Hubs/Chat.cs | 4 +-- samples/SignalRSamples/Hubs/DynamicChat.cs | 4 +-- samples/SignalRSamples/Hubs/HubTChat.cs | 4 +-- ...Extensions.cs => ClientProxyExtensions.cs} | 2 +- .../DefaultHubLifetimeManager.cs | 4 +-- .../HubConnectionContext.cs | 3 +- .../HubLifetimeManager.cs | 4 +-- .../IGroupManager.cs | 4 +-- .../IHubClients`T.cs | 4 +-- .../{ => Internal}/DefaultHubActivator.cs | 6 ++-- .../{ => Internal}/DefaultHubCallerContext.cs | 2 +- .../Internal/HubCallerClients.cs | 8 ++--- .../Internal/HubClients.cs | 8 ++--- .../Internal/HubClients`T.cs | 8 ++--- .../{ => Internal}/HubConnectionStore.cs | 2 +- .../Internal/Proxies.cs | 8 ++--- .../TypedHubClients.cs | 6 ++-- .../RedisHubLifetimeManager.cs | 6 ++-- .../HubRouteBuilder.cs | 5 --- .../EchoHub.cs | 8 ++--- .../RedisHubLifetimeManagerTests.cs | 32 +++++++++---------- .../DefaultHubActivatorTests.cs | 1 + .../DefaultHubLifetimeManagerTests.cs | 10 +++--- .../HubConnectionHandlerTestUtils/Hubs.cs | 8 ++--- 29 files changed, 84 insertions(+), 86 deletions(-) rename src/Microsoft.AspNetCore.SignalR.Core/{IClientProxyExtensions.cs => ClientProxyExtensions.cs} (99%) rename src/Microsoft.AspNetCore.SignalR.Core/{ => Internal}/DefaultHubActivator.cs (92%) rename src/Microsoft.AspNetCore.SignalR.Core/{ => Internal}/DefaultHubCallerContext.cs (96%) rename src/Microsoft.AspNetCore.SignalR.Core/{ => Internal}/HubConnectionStore.cs (97%) diff --git a/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/BroadcastBenchmark.cs b/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/BroadcastBenchmark.cs index 9b09dd80174f..8028bbb06c1a 100644 --- a/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/BroadcastBenchmark.cs +++ b/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/BroadcastBenchmark.cs @@ -49,7 +49,7 @@ public void GlobalSetup() var hubConnection = new HubConnectionContext(connection, Timeout.InfiniteTimeSpan, NullLoggerFactory.Instance); hubConnection.Protocol = protocol; _hubLifetimeManager.OnConnectedAsync(hubConnection).GetAwaiter().GetResult(); - _hubLifetimeManager.AddGroupAsync(connection.ConnectionId, TestGroupName).GetAwaiter().GetResult(); + _hubLifetimeManager.AddToGroupAsync(connection.ConnectionId, TestGroupName).GetAwaiter().GetResult(); _ = ConsumeAsync(connection.Application); } diff --git a/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/DefaultHubActivatorBenchmark.cs b/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/DefaultHubActivatorBenchmark.cs index d8e38f9ade4f..a18034c71e72 100644 --- a/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/DefaultHubActivatorBenchmark.cs +++ b/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/DefaultHubActivatorBenchmark.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using BenchmarkDotNet.Attributes; +using Microsoft.AspNetCore.SignalR.Internal; using Microsoft.Extensions.DependencyInjection; namespace Microsoft.AspNetCore.SignalR.Microbenchmarks diff --git a/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/DefaultHubLifetimeManagerBenchmark.cs b/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/DefaultHubLifetimeManagerBenchmark.cs index 43c164902aa2..72506c86c020 100644 --- a/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/DefaultHubLifetimeManagerBenchmark.cs +++ b/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/DefaultHubLifetimeManagerBenchmark.cs @@ -56,7 +56,7 @@ public void GlobalSetup() hubConnectionContext.Protocol = jsonHubProtocol; _hubLifetimeManager.OnConnectedAsync(hubConnectionContext).GetAwaiter().GetResult(); - _hubLifetimeManager.AddGroupAsync(connectionId, groupName); + _hubLifetimeManager.AddToGroupAsync(connectionId, groupName); } } diff --git a/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/RedisHubLifetimeManagerBenchmark.cs b/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/RedisHubLifetimeManagerBenchmark.cs index 38d0e187828f..bc6e151aefd1 100644 --- a/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/RedisHubLifetimeManagerBenchmark.cs +++ b/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/RedisHubLifetimeManagerBenchmark.cs @@ -49,11 +49,11 @@ public void GlobalSetup() _manager1 = new RedisHubLifetimeManager(logger, options, resolver); _manager2 = new RedisHubLifetimeManager(logger, options, resolver); - async Task ConnectClient(TestClient client, IHubProtocol protocol, string userId, string group) + async Task ConnectClient(TestClient client, IHubProtocol protocol, string userId, string groupName) { await _manager2.OnConnectedAsync(HubConnectionContextUtils.Create(client.Connection, protocol, userId)); - await _manager2.AddGroupAsync(client.Connection.ConnectionId, "Everyone"); - await _manager2.AddGroupAsync(client.Connection.ConnectionId, group); + await _manager2.AddToGroupAsync(client.Connection.ConnectionId, "Everyone"); + await _manager2.AddToGroupAsync(client.Connection.ConnectionId, groupName); } // Connect clients diff --git a/samples/ChatSample/PresenceHubLifetimeManager.cs b/samples/ChatSample/PresenceHubLifetimeManager.cs index 87d8bc3a277d..5d587827d6fa 100644 --- a/samples/ChatSample/PresenceHubLifetimeManager.cs +++ b/samples/ChatSample/PresenceHubLifetimeManager.cs @@ -173,14 +173,14 @@ public override Task SendUserAsync(string userId, string methodName, object[] ar return _wrappedHubLifetimeManager.SendUserAsync(userId, methodName, args); } - public override Task AddGroupAsync(string connectionId, string groupName) + public override Task AddToGroupAsync(string connectionId, string groupName) { - return _wrappedHubLifetimeManager.AddGroupAsync(connectionId, groupName); + return _wrappedHubLifetimeManager.AddToGroupAsync(connectionId, groupName); } - public override Task RemoveGroupAsync(string connectionId, string groupName) + public override Task RemoveFromGroupAsync(string connectionId, string groupName) { - return _wrappedHubLifetimeManager.RemoveGroupAsync(connectionId, groupName); + return _wrappedHubLifetimeManager.RemoveFromGroupAsync(connectionId, groupName); } public override Task SendGroupExceptAsync(string groupName, string methodName, object[] args, IReadOnlyList excludedIds) diff --git a/samples/SignalRSamples/Hubs/Chat.cs b/samples/SignalRSamples/Hubs/Chat.cs index 373bfad78bdb..cabbd4a39116 100644 --- a/samples/SignalRSamples/Hubs/Chat.cs +++ b/samples/SignalRSamples/Hubs/Chat.cs @@ -46,7 +46,7 @@ public Task SendToOthersInGroup(string groupName, string message) public async Task JoinGroup(string groupName) { - await Groups.AddAsync(Context.ConnectionId, groupName); + await Groups.AddToGroupAsync(Context.ConnectionId, groupName); await Clients.Group(groupName).SendAsync("Send", $"{Context.ConnectionId} joined {groupName}"); } @@ -55,7 +55,7 @@ public async Task LeaveGroup(string groupName) { await Clients.Group(groupName).SendAsync("Send", $"{Context.ConnectionId} left {groupName}"); - await Groups.RemoveAsync(Context.ConnectionId, groupName); + await Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); } public Task Echo(string message) diff --git a/samples/SignalRSamples/Hubs/DynamicChat.cs b/samples/SignalRSamples/Hubs/DynamicChat.cs index c6d7a105d9de..30d715435149 100644 --- a/samples/SignalRSamples/Hubs/DynamicChat.cs +++ b/samples/SignalRSamples/Hubs/DynamicChat.cs @@ -41,7 +41,7 @@ public Task SendToOthersInGroup(string groupName, string message) public async Task JoinGroup(string groupName) { - await Groups.AddAsync(Context.ConnectionId, groupName); + await Groups.AddToGroupAsync(Context.ConnectionId, groupName); await Clients.Group(groupName).Send($"{Context.ConnectionId} joined {groupName}"); } @@ -50,7 +50,7 @@ public async Task LeaveGroup(string groupName) { await Clients.Group(groupName).Send($"{Context.ConnectionId} left {groupName}"); - await Groups.RemoveAsync(Context.ConnectionId, groupName); + await Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); } public Task Echo(string message) diff --git a/samples/SignalRSamples/Hubs/HubTChat.cs b/samples/SignalRSamples/Hubs/HubTChat.cs index 79bd59a2e39f..3acb04f3231a 100644 --- a/samples/SignalRSamples/Hubs/HubTChat.cs +++ b/samples/SignalRSamples/Hubs/HubTChat.cs @@ -41,7 +41,7 @@ public Task SendToOthersInGroup(string groupName, string message) public async Task JoinGroup(string groupName) { - await Groups.AddAsync(Context.ConnectionId, groupName); + await Groups.AddToGroupAsync(Context.ConnectionId, groupName); await Clients.Group(groupName).Send($"{Context.ConnectionId} joined {groupName}"); } @@ -50,7 +50,7 @@ public async Task LeaveGroup(string groupName) { await Clients.Group(groupName).Send($"{Context.ConnectionId} left {groupName}"); - await Groups.RemoveAsync(Context.ConnectionId, groupName); + await Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); } public Task Echo(string message) diff --git a/src/Microsoft.AspNetCore.SignalR.Core/IClientProxyExtensions.cs b/src/Microsoft.AspNetCore.SignalR.Core/ClientProxyExtensions.cs similarity index 99% rename from src/Microsoft.AspNetCore.SignalR.Core/IClientProxyExtensions.cs rename to src/Microsoft.AspNetCore.SignalR.Core/ClientProxyExtensions.cs index 4fd087890cd3..18c1deda51a0 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/IClientProxyExtensions.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/ClientProxyExtensions.cs @@ -5,7 +5,7 @@ namespace Microsoft.AspNetCore.SignalR { - public static class IClientProxyExtensions + public static class ClientProxyExtensions { /// /// Invokes a method on the connection(s) represented by the instance. diff --git a/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubLifetimeManager.cs b/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubLifetimeManager.cs index 299f9aef437a..fd66a2385772 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubLifetimeManager.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubLifetimeManager.cs @@ -23,7 +23,7 @@ public DefaultHubLifetimeManager(ILogger> logger _logger = logger; } - public override Task AddGroupAsync(string connectionId, string groupName) + public override Task AddToGroupAsync(string connectionId, string groupName) { if (connectionId == null) { @@ -46,7 +46,7 @@ public override Task AddGroupAsync(string connectionId, string groupName) return Task.CompletedTask; } - public override Task RemoveGroupAsync(string connectionId, string groupName) + public override Task RemoveFromGroupAsync(string connectionId, string groupName) { if (connectionId == null) { diff --git a/src/Microsoft.AspNetCore.SignalR.Core/HubConnectionContext.cs b/src/Microsoft.AspNetCore.SignalR.Core/HubConnectionContext.cs index 3e909ce3d034..5e368719a7d6 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/HubConnectionContext.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/HubConnectionContext.cs @@ -52,7 +52,8 @@ public HubConnectionContext(ConnectionContext connectionContext, TimeSpan keepAl public virtual IDictionary Items => _connectionContext.Items; - public virtual PipeReader Input => _connectionContext.Transport.Input; + // Used by HubConnectionHandler + internal PipeReader Input => _connectionContext.Transport.Input; public string UserIdentifier { get; set; } diff --git a/src/Microsoft.AspNetCore.SignalR.Core/HubLifetimeManager.cs b/src/Microsoft.AspNetCore.SignalR.Core/HubLifetimeManager.cs index e22080d3469e..07c94367db7e 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/HubLifetimeManager.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/HubLifetimeManager.cs @@ -30,9 +30,9 @@ public abstract class HubLifetimeManager where THub : Hub public abstract Task SendUsersAsync(IReadOnlyList userIds, string methodName, object[] args); - public abstract Task AddGroupAsync(string connectionId, string groupName); + public abstract Task AddToGroupAsync(string connectionId, string groupName); - public abstract Task RemoveGroupAsync(string connectionId, string groupName); + public abstract Task RemoveFromGroupAsync(string connectionId, string groupName); } } diff --git a/src/Microsoft.AspNetCore.SignalR.Core/IGroupManager.cs b/src/Microsoft.AspNetCore.SignalR.Core/IGroupManager.cs index 71b22289fd7d..b96f4f10df7e 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/IGroupManager.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/IGroupManager.cs @@ -7,7 +7,7 @@ namespace Microsoft.AspNetCore.SignalR { public interface IGroupManager { - Task AddAsync(string connectionId, string groupName); - Task RemoveAsync(string connectionId, string groupName); + Task AddToGroupAsync(string connectionId, string groupName); + Task RemoveFromGroupAsync(string connectionId, string groupName); } } diff --git a/src/Microsoft.AspNetCore.SignalR.Core/IHubClients`T.cs b/src/Microsoft.AspNetCore.SignalR.Core/IHubClients`T.cs index 3b4c4ded9a78..76e9bb12f193 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/IHubClients`T.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/IHubClients`T.cs @@ -9,7 +9,7 @@ public interface IHubClients { T All { get; } - T AllExcept(IReadOnlyList excludedIds); + T AllExcept(IReadOnlyList excludedConnectionIds); T Client(string connectionId); @@ -19,7 +19,7 @@ public interface IHubClients T Groups(IReadOnlyList groupNames); - T GroupExcept(string groupName, IReadOnlyList excludeIds); + T GroupExcept(string groupName, IReadOnlyList excludedConnectionIds); T User(string userId); diff --git a/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubActivator.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubActivator.cs similarity index 92% rename from src/Microsoft.AspNetCore.SignalR.Core/DefaultHubActivator.cs rename to src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubActivator.cs index 7fd3ff10d6f9..3bb8278b1dac 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubActivator.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubActivator.cs @@ -5,7 +5,7 @@ using System.Diagnostics; using Microsoft.Extensions.DependencyInjection; -namespace Microsoft.AspNetCore.SignalR +namespace Microsoft.AspNetCore.SignalR.Internal { public class DefaultHubActivator : IHubActivator where THub: Hub { @@ -19,7 +19,7 @@ public DefaultHubActivator(IServiceProvider serviceProvider) _serviceProvider = serviceProvider; } - public THub Create() + public virtual THub Create() { Debug.Assert(!_created.HasValue, "hub activators must not be reused."); @@ -34,7 +34,7 @@ public THub Create() return hub; } - public void Release(THub hub) + public virtual void Release(THub hub) { if (hub == null) { diff --git a/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubCallerContext.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubCallerContext.cs similarity index 96% rename from src/Microsoft.AspNetCore.SignalR.Core/DefaultHubCallerContext.cs rename to src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubCallerContext.cs index 9a22ef1bd6e2..ead0dc6f9e19 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/DefaultHubCallerContext.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubCallerContext.cs @@ -8,7 +8,7 @@ using System.Threading; using Microsoft.AspNetCore.Http.Features; -namespace Microsoft.AspNetCore.SignalR +namespace Microsoft.AspNetCore.SignalR.Internal { public class DefaultHubCallerContext : HubCallerContext { diff --git a/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubCallerClients.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubCallerClients.cs index b24d60af48f6..d2694b17b3e9 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubCallerClients.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubCallerClients.cs @@ -24,9 +24,9 @@ public HubCallerClients(IHubClients hubClients, string connectionId) public IClientProxy All => _hubClients.All; - public IClientProxy AllExcept(IReadOnlyList excludedIds) + public IClientProxy AllExcept(IReadOnlyList excludedConnectionIds) { - return _hubClients.AllExcept(excludedIds); + return _hubClients.AllExcept(excludedConnectionIds); } public IClientProxy Client(string connectionId) @@ -49,9 +49,9 @@ public IClientProxy OthersInGroup(string groupName) return _hubClients.GroupExcept(groupName, _currentConnectionId); } - public IClientProxy GroupExcept(string groupName, IReadOnlyList excludeIds) + public IClientProxy GroupExcept(string groupName, IReadOnlyList excludedConnectionIds) { - return _hubClients.GroupExcept(groupName, excludeIds); + return _hubClients.GroupExcept(groupName, excludedConnectionIds); } public IClientProxy User(string userId) diff --git a/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubClients.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubClients.cs index a5e95319834e..d5e958965291 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubClients.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubClients.cs @@ -17,9 +17,9 @@ public HubClients(HubLifetimeManager lifetimeManager) public IClientProxy All { get; } - public IClientProxy AllExcept(IReadOnlyList excludedIds) + public IClientProxy AllExcept(IReadOnlyList excludedConnectionIds) { - return new AllClientsExceptProxy(_lifetimeManager, excludedIds); + return new AllClientsExceptProxy(_lifetimeManager, excludedConnectionIds); } public IClientProxy Client(string connectionId) @@ -32,9 +32,9 @@ public IClientProxy Group(string groupName) return new GroupProxy(_lifetimeManager, groupName); } - public IClientProxy GroupExcept(string groupName, IReadOnlyList excludeIds) + public IClientProxy GroupExcept(string groupName, IReadOnlyList excludedConnectionIds) { - return new GroupExceptProxy(_lifetimeManager, groupName, excludeIds); + return new GroupExceptProxy(_lifetimeManager, groupName, excludedConnectionIds); } public IClientProxy Clients(IReadOnlyList connectionIds) diff --git a/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubClients`T.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubClients`T.cs index c232e15d32b9..69926e969564 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubClients`T.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubClients`T.cs @@ -17,9 +17,9 @@ public HubClients(HubLifetimeManager lifetimeManager) public T All { get; } - public T AllExcept(IReadOnlyList excludedIds) + public T AllExcept(IReadOnlyList excludedConnectionIds) { - return TypedClientBuilder.Build(new AllClientsExceptProxy(_lifetimeManager, excludedIds)); + return TypedClientBuilder.Build(new AllClientsExceptProxy(_lifetimeManager, excludedConnectionIds)); } public virtual T Client(string connectionId) @@ -37,9 +37,9 @@ public virtual T Group(string groupName) return TypedClientBuilder.Build(new GroupProxy(_lifetimeManager, groupName)); } - public T GroupExcept(string groupName, IReadOnlyList excludeIds) + public T GroupExcept(string groupName, IReadOnlyList excludedConnectionIds) { - return TypedClientBuilder.Build(new GroupExceptProxy(_lifetimeManager, groupName, excludeIds)); + return TypedClientBuilder.Build(new GroupExceptProxy(_lifetimeManager, groupName, excludedConnectionIds)); } public T Groups(IReadOnlyList groupNames) diff --git a/src/Microsoft.AspNetCore.SignalR.Core/HubConnectionStore.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubConnectionStore.cs similarity index 97% rename from src/Microsoft.AspNetCore.SignalR.Core/HubConnectionStore.cs rename to src/Microsoft.AspNetCore.SignalR.Core/Internal/HubConnectionStore.cs index a94ccda60178..57d369b41157 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/HubConnectionStore.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/HubConnectionStore.cs @@ -6,7 +6,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; -namespace Microsoft.AspNetCore.SignalR +namespace Microsoft.AspNetCore.SignalR.Internal { public class HubConnectionStore { diff --git a/src/Microsoft.AspNetCore.SignalR.Core/Internal/Proxies.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/Proxies.cs index e85633fa28b1..402b146afe7a 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/Internal/Proxies.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/Proxies.cs @@ -168,14 +168,14 @@ public GroupManager(HubLifetimeManager lifetimeManager) _lifetimeManager = lifetimeManager; } - public Task AddAsync(string connectionId, string groupName) + public Task AddToGroupAsync(string connectionId, string groupName) { - return _lifetimeManager.AddGroupAsync(connectionId, groupName); + return _lifetimeManager.AddToGroupAsync(connectionId, groupName); } - public Task RemoveAsync(string connectionId, string groupName) + public Task RemoveFromGroupAsync(string connectionId, string groupName) { - return _lifetimeManager.RemoveGroupAsync(connectionId, groupName); + return _lifetimeManager.RemoveFromGroupAsync(connectionId, groupName); } } } diff --git a/src/Microsoft.AspNetCore.SignalR.Core/TypedHubClients.cs b/src/Microsoft.AspNetCore.SignalR.Core/TypedHubClients.cs index d984dbd99e76..00ac573fbed8 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/TypedHubClients.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/TypedHubClients.cs @@ -20,7 +20,7 @@ public TypedHubClients(IHubCallerClients dynamicContext) public T Others => TypedClientBuilder.Build(_hubClients.Others); - public T AllExcept(IReadOnlyList excludedIds) => TypedClientBuilder.Build(_hubClients.AllExcept(excludedIds)); + public T AllExcept(IReadOnlyList excludedConnectionIds) => TypedClientBuilder.Build(_hubClients.AllExcept(excludedConnectionIds)); public T Client(string connectionId) { @@ -32,9 +32,9 @@ public T Group(string groupName) return TypedClientBuilder.Build(_hubClients.Group(groupName)); } - public T GroupExcept(string groupName, IReadOnlyList excludeIds) + public T GroupExcept(string groupName, IReadOnlyList excludedConnectionIds) { - return TypedClientBuilder.Build(_hubClients.GroupExcept(groupName, excludeIds)); + return TypedClientBuilder.Build(_hubClients.GroupExcept(groupName, excludedConnectionIds)); } public T Clients(IReadOnlyList connectionIds) diff --git a/src/Microsoft.AspNetCore.SignalR.Redis/RedisHubLifetimeManager.cs b/src/Microsoft.AspNetCore.SignalR.Redis/RedisHubLifetimeManager.cs index 2dfd5125c0ee..679bc6382c1f 100644 --- a/src/Microsoft.AspNetCore.SignalR.Redis/RedisHubLifetimeManager.cs +++ b/src/Microsoft.AspNetCore.SignalR.Redis/RedisHubLifetimeManager.cs @@ -94,7 +94,7 @@ public override Task OnDisconnectedAsync(HubConnectionContext connection) if (groupNames != null) { // Copy the groups to an array here because they get removed from this collection - // in RemoveGroupAsync + // in RemoveFromGroupAsync foreach (var group in groupNames.ToArray()) { // Use RemoveGroupAsyncCore because the connection is local and we don't want to @@ -165,7 +165,7 @@ public override Task SendUserAsync(string userId, string methodName, object[] ar return PublishAsync(_channels.User(userId), message); } - public override async Task AddGroupAsync(string connectionId, string groupName) + public override async Task AddToGroupAsync(string connectionId, string groupName) { if (connectionId == null) { @@ -188,7 +188,7 @@ public override async Task AddGroupAsync(string connectionId, string groupName) await SendGroupActionAndWaitForAck(connectionId, groupName, GroupAction.Add); } - public override async Task RemoveGroupAsync(string connectionId, string groupName) + public override async Task RemoveFromGroupAsync(string connectionId, string groupName) { if (connectionId == null) { diff --git a/src/Microsoft.AspNetCore.SignalR/HubRouteBuilder.cs b/src/Microsoft.AspNetCore.SignalR/HubRouteBuilder.cs index 4d9a79865918..573bfec6202d 100644 --- a/src/Microsoft.AspNetCore.SignalR/HubRouteBuilder.cs +++ b/src/Microsoft.AspNetCore.SignalR/HubRouteBuilder.cs @@ -18,11 +18,6 @@ public HubRouteBuilder(ConnectionsRouteBuilder routes) _routes = routes; } - public void MapHub(string path) where THub : Hub - { - MapHub(new PathString(path), configureOptions: null); - } - public void MapHub(PathString path) where THub : Hub { MapHub(path, configureOptions: null); diff --git a/test/Microsoft.AspNetCore.SignalR.Redis.Tests/EchoHub.cs b/test/Microsoft.AspNetCore.SignalR.Redis.Tests/EchoHub.cs index 2ce692906e86..ab8000903f4c 100644 --- a/test/Microsoft.AspNetCore.SignalR.Redis.Tests/EchoHub.cs +++ b/test/Microsoft.AspNetCore.SignalR.Redis.Tests/EchoHub.cs @@ -13,14 +13,14 @@ public string Echo(string message) return message; } - public Task EchoGroup(string group, string message) + public Task EchoGroup(string groupName, string message) { - return Clients.Group(group).SendAsync("Echo", message); + return Clients.Group(groupName).SendAsync("Echo", message); } - public Task AddSelfToGroup(string group) + public Task AddSelfToGroup(string groupName) { - return Groups.AddAsync(Context.ConnectionId, group); + return Groups.AddToGroupAsync(Context.ConnectionId, groupName); } } } diff --git a/test/Microsoft.AspNetCore.SignalR.Redis.Tests/RedisHubLifetimeManagerTests.cs b/test/Microsoft.AspNetCore.SignalR.Redis.Tests/RedisHubLifetimeManagerTests.cs index 72f2bf9a1852..594b55f5fc03 100644 --- a/test/Microsoft.AspNetCore.SignalR.Redis.Tests/RedisHubLifetimeManagerTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Redis.Tests/RedisHubLifetimeManagerTests.cs @@ -110,7 +110,7 @@ public async Task InvokeGroupAsyncWritesToAllConnectionsInGroupOutput() await manager.OnConnectedAsync(connection1).OrTimeout(); await manager.OnConnectedAsync(connection2).OrTimeout(); - await manager.AddGroupAsync(connection1.ConnectionId, "gunit").OrTimeout(); + await manager.AddToGroupAsync(connection1.ConnectionId, "gunit").OrTimeout(); await manager.SendGroupAsync("gunit", "Hello", new object[] { "World" }).OrTimeout(); @@ -134,8 +134,8 @@ public async Task InvokeGroupExceptAsyncWritesToAllValidConnectionsInGroupOutput await manager.OnConnectedAsync(connection1).OrTimeout(); await manager.OnConnectedAsync(connection2).OrTimeout(); - await manager.AddGroupAsync(connection1.ConnectionId, "gunit").OrTimeout(); - await manager.AddGroupAsync(connection2.ConnectionId, "gunit").OrTimeout(); + await manager.AddToGroupAsync(connection1.ConnectionId, "gunit").OrTimeout(); + await manager.AddToGroupAsync(connection2.ConnectionId, "gunit").OrTimeout(); var excludedIds = new List { client2.Connection.ConnectionId }; await manager.SendGroupExceptAsync("gunit", "Hello", new object[] { "World" }, excludedIds).OrTimeout(); @@ -257,7 +257,7 @@ public async Task InvokeGroupAsyncOnServerWithoutConnectionWritesOutputToGroupCo await manager1.OnConnectedAsync(connection).OrTimeout(); - await manager1.AddGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager1.AddToGroupAsync(connection.ConnectionId, "name").OrTimeout(); await manager2.SendGroupAsync("name", "Hello", new object[] { "World" }).OrTimeout(); @@ -278,7 +278,7 @@ public async Task DisconnectConnectionRemovesConnectionFromGroup() await manager.OnConnectedAsync(connection).OrTimeout(); - await manager.AddGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager.AddToGroupAsync(connection.ConnectionId, "name").OrTimeout(); await manager.OnDisconnectedAsync(connection).OrTimeout(); @@ -301,7 +301,7 @@ public async Task RemoveGroupFromLocalConnectionNotInGroupDoesNothing() await manager.OnConnectedAsync(connection).OrTimeout(); - await manager.RemoveGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager.RemoveFromGroupAsync(connection.ConnectionId, "name").OrTimeout(); } } @@ -319,7 +319,7 @@ public async Task RemoveGroupFromConnectionOnDifferentServerNotInGroupDoesNothin await manager1.OnConnectedAsync(connection).OrTimeout(); - await manager2.RemoveGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager2.RemoveFromGroupAsync(connection.ConnectionId, "name").OrTimeout(); } } @@ -337,7 +337,7 @@ public async Task AddGroupAsyncForConnectionOnDifferentServerWorks() await manager1.OnConnectedAsync(connection).OrTimeout(); - await manager2.AddGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager2.AddToGroupAsync(connection.ConnectionId, "name").OrTimeout(); await manager2.SendGroupAsync("name", "Hello", new object[] { "World" }).OrTimeout(); @@ -358,8 +358,8 @@ public async Task AddGroupAsyncForLocalConnectionAlreadyInGroupDoesNothing() await manager.OnConnectedAsync(connection).OrTimeout(); - await manager.AddGroupAsync(connection.ConnectionId, "name").OrTimeout(); - await manager.AddGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager.AddToGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager.AddToGroupAsync(connection.ConnectionId, "name").OrTimeout(); await manager.SendGroupAsync("name", "Hello", new object[] { "World" }).OrTimeout(); @@ -382,8 +382,8 @@ public async Task AddGroupAsyncForConnectionOnDifferentServerAlreadyInGroupDoesN await manager1.OnConnectedAsync(connection).OrTimeout(); - await manager1.AddGroupAsync(connection.ConnectionId, "name").OrTimeout(); - await manager2.AddGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager1.AddToGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager2.AddToGroupAsync(connection.ConnectionId, "name").OrTimeout(); await manager2.SendGroupAsync("name", "Hello", new object[] { "World" }).OrTimeout(); @@ -406,13 +406,13 @@ public async Task RemoveGroupAsyncForConnectionOnDifferentServerWorks() await manager1.OnConnectedAsync(connection).OrTimeout(); - await manager1.AddGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager1.AddToGroupAsync(connection.ConnectionId, "name").OrTimeout(); await manager2.SendGroupAsync("name", "Hello", new object[] { "World" }).OrTimeout(); await AssertMessageAsync(client); - await manager2.RemoveGroupAsync(connection.ConnectionId, "name").OrTimeout(); + await manager2.RemoveFromGroupAsync(connection.ConnectionId, "name").OrTimeout(); await manager2.SendGroupAsync("name", "Hello", new object[] { "World" }).OrTimeout(); @@ -484,9 +484,9 @@ public async Task WritingToGroupWithOneConnectionFailingSecondConnectionStillRec var connection2 = HubConnectionContextUtils.Create(client2.Connection); await manager.OnConnectedAsync(connection1).OrTimeout(); - await manager.AddGroupAsync(connection1.ConnectionId, "group"); + await manager.AddToGroupAsync(connection1.ConnectionId, "group"); await manager.OnConnectedAsync(connection2).OrTimeout(); - await manager.AddGroupAsync(connection2.ConnectionId, "group"); + await manager.AddToGroupAsync(connection2.ConnectionId, "group"); await manager.SendGroupAsync("group", "Hello", new object[] { "World" }).OrTimeout(); // connection1 will throw when receiving a group message, we are making sure other connections diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/DefaultHubActivatorTests.cs b/test/Microsoft.AspNetCore.SignalR.Tests/DefaultHubActivatorTests.cs index e0917698d241..dd75dd3d516a 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/DefaultHubActivatorTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/DefaultHubActivatorTests.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using Microsoft.AspNetCore.SignalR.Internal; using Moq; using Moq.Protected; using Xunit; diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/DefaultHubLifetimeManagerTests.cs b/test/Microsoft.AspNetCore.SignalR.Tests/DefaultHubLifetimeManagerTests.cs index 8eda3df60740..6fcce1872dbd 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/DefaultHubLifetimeManagerTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/DefaultHubLifetimeManagerTests.cs @@ -75,7 +75,7 @@ public async Task SendGroupAsyncWritesToAllConnectionsInGroupOutput() await manager.OnConnectedAsync(connection1).OrTimeout(); await manager.OnConnectedAsync(connection2).OrTimeout(); - await manager.AddGroupAsync(connection1.ConnectionId, "gunit").OrTimeout(); + await manager.AddToGroupAsync(connection1.ConnectionId, "gunit").OrTimeout(); await manager.SendGroupAsync("gunit", "Hello", new object[] { "World" }).OrTimeout(); @@ -101,8 +101,8 @@ public async Task SendGroupExceptAsyncDoesNotWriteToExcludedConnections() await manager.OnConnectedAsync(connection1).OrTimeout(); await manager.OnConnectedAsync(connection2).OrTimeout(); - await manager.AddGroupAsync(connection1.ConnectionId, "gunit").OrTimeout(); - await manager.AddGroupAsync(connection2.ConnectionId, "gunit").OrTimeout(); + await manager.AddToGroupAsync(connection1.ConnectionId, "gunit").OrTimeout(); + await manager.AddToGroupAsync(connection2.ConnectionId, "gunit").OrTimeout(); await manager.SendGroupExceptAsync("gunit", "Hello", new object[] { "World" }, new []{ connection2.ConnectionId }).OrTimeout(); @@ -145,14 +145,14 @@ public async Task SendConnectionAsyncOnNonExistentConnectionNoops() public async Task AddGroupOnNonExistentConnectionNoops() { var manager = new DefaultHubLifetimeManager(new Logger>(NullLoggerFactory.Instance)); - await manager.AddGroupAsync("NotARealConnectionId", "MyGroup").OrTimeout(); + await manager.AddToGroupAsync("NotARealConnectionId", "MyGroup").OrTimeout(); } [Fact] public async Task RemoveGroupOnNonExistentConnectionNoops() { var manager = new DefaultHubLifetimeManager(new Logger>(NullLoggerFactory.Instance)); - await manager.RemoveGroupAsync("NotARealConnectionId", "MyGroup").OrTimeout(); + await manager.RemoveFromGroupAsync("NotARealConnectionId", "MyGroup").OrTimeout(); } private class MyHub : Hub diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTestUtils/Hubs.cs b/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTestUtils/Hubs.cs index c25070cead4e..ecfac7d3793e 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTestUtils/Hubs.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTestUtils/Hubs.cs @@ -15,7 +15,7 @@ public class MethodHub : TestHub { public Task GroupRemoveMethod(string groupName) { - return Groups.RemoveAsync(Context.ConnectionId, groupName); + return Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); } public Task ClientSendMethod(string userId, string message) @@ -40,7 +40,7 @@ public Task SendToMultipleClients(string message, IReadOnlyList connecti public Task GroupAddMethod(string groupName) { - return Groups.AddAsync(Context.ConnectionId, groupName); + return Groups.AddToGroupAsync(Context.ConnectionId, groupName); } public Task GroupSendMethod(string groupName, string message) @@ -204,7 +204,7 @@ public Task SendToMultipleClients(string message, IReadOnlyList connecti public Task GroupAddMethod(string groupName) { - return Groups.AddAsync(Context.ConnectionId, groupName); + return Groups.AddToGroupAsync(Context.ConnectionId, groupName); } public Task GroupSendMethod(string groupName, string message) @@ -290,7 +290,7 @@ public async Task DelayedSend(string connectionId, string message) public Task GroupAddMethod(string groupName) { - return Groups.AddAsync(Context.ConnectionId, groupName); + return Groups.AddToGroupAsync(Context.ConnectionId, groupName); } public Task GroupSendMethod(string groupName, string message)