| File: DynamicHubClients.cs | Web Access |
| Project: src\aspnetcore\src\SignalR\server\Core\src\Microsoft.AspNetCore.SignalR.Core.csproj (Microsoft.AspNetCore.SignalR.Core) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.SignalR.Internal; namespace Microsoft.AspNetCore.SignalR; /// <summary> /// A class that provides <c>dynamic</c> access to connections, including the one that sent the current invocation. /// </summary> [RequiresDynamicCodeAttribute("DynamicHubClients requires dynamic code generation to construct a call site.")] public class DynamicHubClients { private readonly IHubCallerClients _clients; /// <summary> /// Initializes a new instance of the <see cref="DynamicHubClients"/> class. /// </summary> /// <param name="clients">A wrapped <see cref="IHubCallerClients"/> that is used to invoke methods.</param> public DynamicHubClients(IHubCallerClients clients) { _clients = clients; } /// <summary> /// Gets an object that can be used to invoke methods on all clients connected to the hub. /// </summary> /// <returns>An object that can be used to invoke methods on the specified user.</returns> public dynamic All => new DynamicClientProxy(_clients.All); /// <summary> /// Gets an object that can be used to invoke methods on all clients connected to the hub excluding the specified connections. /// </summary> /// <param name="excludedConnectionIds">A collection of connection IDs to exclude.</param> /// <returns>An object that can be used to invoke methods on the specified user.</returns> public dynamic AllExcept(IReadOnlyList<string> excludedConnectionIds) => new DynamicClientProxy(_clients.AllExcept(excludedConnectionIds)); /// <summary> /// Gets an object that can be used to invoke methods on the connection which triggered the current invocation. /// </summary> public dynamic Caller => new DynamicClientProxy(_clients.Caller); /// <summary> /// Gets an object that can be used to invoke methods on the specified connection. /// </summary> /// <param name="connectionId">The connection ID.</param> /// <returns>An object that can be used to invoke methods.</returns> public dynamic Client(string connectionId) => new DynamicClientProxy(_clients.Client(connectionId)); /// <summary> /// Gets an object that can be used to invoke methods on the specified connections. /// </summary> /// <param name="connectionIds">The connection IDs.</param> /// <returns>An object that can be used to invoke methods.</returns> public dynamic Clients(IReadOnlyList<string> connectionIds) => new DynamicClientProxy(_clients.Clients(connectionIds)); /// <summary> /// Gets an object that can be used to invoke methods on all connections in the specified group. /// </summary> /// <param name="groupName">The group name.</param> /// <returns>An object that can be used to invoke methods.</returns> public dynamic Group(string groupName) => new DynamicClientProxy(_clients.Group(groupName)); /// <summary> /// Gets an object that can be used to invoke methods on all connections in all of the specified groups. /// </summary> /// <param name="groupNames">The group names.</param> /// <returns>An object that can be used to invoke methods on the specified user.</returns> public dynamic Groups(IReadOnlyList<string> groupNames) => new DynamicClientProxy(_clients.Groups(groupNames)); /// <summary> /// Gets an object that can be used to invoke methods on all connections in the specified group excluding the specified connections. /// </summary> /// <param name="groupName">The group name.</param> /// <param name="excludedConnectionIds">A collection of connection IDs to exclude.</param> /// <returns>An object that can be used to invoke methods.</returns> public dynamic GroupExcept(string groupName, IReadOnlyList<string> excludedConnectionIds) => new DynamicClientProxy(_clients.GroupExcept(groupName, excludedConnectionIds)); /// <summary> /// Gets an object that can be used to invoke methods on connections in a group other than the caller. /// </summary> /// <returns>An object that can be used to invoke methods.</returns> public dynamic OthersInGroup(string groupName) => new DynamicClientProxy(_clients.OthersInGroup(groupName)); /// <summary> /// Gets an object that can be used to invoke methods on connections other than the caller. /// </summary> public dynamic Others => new DynamicClientProxy(_clients.Others); /// <summary> /// Gets an object that can be used to invoke methods on all connections associated with the specified user. /// </summary> /// <param name="userId">The user ID.</param> /// <returns>An object that can be used to invoke methods.</returns> public dynamic User(string userId) => new DynamicClientProxy(_clients.User(userId)); /// <summary> /// Gets an object that can be used to invoke methods on all connections associated with all of the specified users. /// </summary> /// <param name="userIds">The user IDs.</param> /// <returns>An object that can be used to invoke methods.</returns> public dynamic Users(IReadOnlyList<string> userIds) => new DynamicClientProxy(_clients.Users(userIds)); }