XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
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 = [];
}
}
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 = [];
}
}