1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- namespace OASystem.API.OAMethodLib.SignalR.Hubs
- {
- /// <summary>
- /// 分组
- /// </summary>
- public static class GroupStore
- {
- public static Dictionary<string, List<string>> Groups = new Dictionary<string, List<string>>();
- public static void Add(string groupname, string Id)
- {
- if (Groups.ContainsKey(groupname))
- {
- if (Groups.TryGetValue(groupname, out var values))
- {
- if (values.Contains(Id))
- return;
- values.Add(Id);
- }
- else
- {
- throw new Exception("Add group Error");
- }
- }
- else
- {
- var newvalues = new List<string>() { Id };
- Groups.Add(groupname, newvalues);
- }
- }
- public static void Remove(string groupname, string Id)
- {
- if (Groups.ContainsKey(groupname))
- {
- if (Groups.TryGetValue(groupname, out var values))
- {
- if (!values.Contains(Id))
- return;
- values.Remove(Id);
- if (!(values.Count > 0))
- Groups.Remove(groupname);
- }
- else
- {
- throw new Exception("Remove group Error");
- }
- }
- }
- /// <summary>
- /// 连接断开时删除
- /// </summary>
- /// <param name="Id"></param>
- public static void UnConnection(string Id)
- {
- Groups.Where(x => x.Value.Contains(Id)).AsParallel().ForAll(x => x.Value.Remove(Id));
- }
- }
- }
|