// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
namespace Microsoft.AspNetCore.SignalR
{
///
/// An abstraction that provides access to client connections.
///
/// The client invoker type.
public interface IHubClients
{
///
/// Gets a that can be used to invoke methods on all clients connected to the hub.
///
/// A client caller.
T All { get; }
///
/// Gets a that can be used to invoke methods on all clients connected to the hub excluding the specified client connections.
///
/// A collection of connection IDs to exclude.
/// A client caller.
T AllExcept(IReadOnlyList excludedConnectionIds);
///
/// Gets a that can be used to invoke methods on the specified client connection.
///
/// The connection ID.
/// A client caller.
T Client(string connectionId);
///
/// Gets a that can be used to invoke methods on the specified client connections.
///
/// The connection IDs.
/// A client caller.
T Clients(IReadOnlyList connectionIds);
///
/// Gets a that can be used to invoke methods on all connections in the specified group.
///
/// The group name.
/// A client caller.
T Group(string groupName);
///
/// Gets a that can be used to invoke methods on all connections in all of the specified groups.
///
/// The group names.
/// A client caller.
T Groups(IReadOnlyList groupNames);
///
/// Gets a that can be used to invoke methods on all connections in the specified group excluding the specified connections.
///
/// The group name.
/// A collection of connection IDs to exclude.
/// A client caller.
T GroupExcept(string groupName, IReadOnlyList excludedConnectionIds);
///
/// Gets a that can be used to invoke methods on all connections associated with the specified user.
///
/// The user ID.
/// A client caller.
T User(string userId);
///
/// Gets a that can be used to invoke methods on all connections associated with all of the specified users.
///
/// The user IDs.
/// A client caller.
T Users(IReadOnlyList userIds);
}
}