XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension

【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等

公开
关注 0 Fork 0 Star 0
UTF-8
namespace XFEExtension.NetCore.CyberComm;

/// <summary>
/// 通信群组控制器
/// </summary>
public class CyberCommGroupController
{
    private readonly List<CyberCommGroup> _commGroups;
    /// <summary>
    /// 刷新
    /// </summary>
    public void Refresh()
    {
        for (var i = _commGroups.Count - 1; i >= 0; i--)
        {
            if (_commGroups[i].Count == 0)
            {
                _commGroups.Remove(_commGroups[i]);
            }
        }
    }
    /// <summary>
    /// 添加群组
    /// </summary>
    /// <param name="commGroup"></param>
    public void AddGroup(CyberCommGroup commGroup)
    {
        _commGroups.Add(commGroup);
    }
    /// <summary>
    /// 移除群组
    /// </summary>
    /// <param name="commGroup"></param>
    public void RemoveGroup(CyberCommGroup commGroup)
    {
        _commGroups.Remove(commGroup);
    }
    /// <summary>
    /// 移除指定索引的群组
    /// </summary>
    /// <param name="index"></param>
    public void RemoveGroupAt(int index)
    {
        _commGroups.RemoveAt(index);
    }
    /// <summary>
    /// 清空群组
    /// </summary>
    public void Clear()
    {
        _commGroups.Clear();
    }
    /// <summary>
    /// 群组数量
    /// </summary>
    public int Count
    {
        get
        {
            return _commGroups.Count;
        }
    }
    /// <summary>
    /// 索引器
    /// </summary>
    /// <param name="index"></param>
    /// <returns></returns>
    public CyberCommGroup this[int index]
    {
        get
        {
            return _commGroups[index];
        }
    }
    /// <summary>
    /// 索引器
    /// </summary>
    /// <param name="groupId"></param>
    /// <returns></returns>
    public CyberCommGroup? this[string groupId]
    {
        get
        {
            foreach (var commGroup in _commGroups)
            {
                if (commGroup.GroupId == groupId)
                {
                    return commGroup;
                }
            }
            return null;
        }
    }
    /// <summary>
    /// 通信群组控制器发送文本消息
    /// </summary>
    /// <param name="groupId">目标群组的ID</param>
    /// <param name="message">发送的文本消息</param>
    public async Task SendGroupTextMessage(string groupId, string message)
    {
        var commGroup = this[groupId];
        if (commGroup is not null)
        {
            await commGroup.SendGroupTextMessage(message);
        }
    }
    /// <summary>
    /// 通信群组控制器发送二进制消息
    /// </summary>
    /// <param name="groupId">目标群组的ID</param>
    /// <param name="bytes">发送的二进制消息</param>
    public async Task SendGroupBinaryMessage(string groupId, byte[] bytes)
    {
        var commGroup = this[groupId];
        if (commGroup is not null)
        {
            await commGroup.SendGroupBinaryMessage(bytes);
        }
    }
    /// <summary>
    /// 通信群组控制器
    /// </summary>
    public CyberCommGroupController()
    {
        _commGroups = [];
    }
}