GroupStore.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. namespace OASystem.API.OAMethodLib.SignalR.Hubs
  2. {
  3. /// <summary>
  4. /// 分组
  5. /// </summary>
  6. public static class GroupStore
  7. {
  8. public static Dictionary<string, List<string>> Groups = new Dictionary<string, List<string>>();
  9. public static void Add(string groupname, string Id)
  10. {
  11. if (Groups.ContainsKey(groupname))
  12. {
  13. if (Groups.TryGetValue(groupname, out var values))
  14. {
  15. if (values.Contains(Id))
  16. return;
  17. values.Add(Id);
  18. }
  19. else
  20. {
  21. throw new Exception("Add group Error");
  22. }
  23. }
  24. else
  25. {
  26. var newvalues = new List<string>() { Id };
  27. Groups.Add(groupname, newvalues);
  28. }
  29. }
  30. public static void Remove(string groupname, string Id)
  31. {
  32. if (Groups.ContainsKey(groupname))
  33. {
  34. if (Groups.TryGetValue(groupname, out var values))
  35. {
  36. if (!values.Contains(Id))
  37. return;
  38. values.Remove(Id);
  39. if (!(values.Count > 0))
  40. Groups.Remove(groupname);
  41. }
  42. else
  43. {
  44. throw new Exception("Remove group Error");
  45. }
  46. }
  47. }
  48. /// <summary>
  49. /// 连接断开时删除
  50. /// </summary>
  51. /// <param name="Id"></param>
  52. public static void UnConnection(string Id)
  53. {
  54. Groups.Where(x => x.Value.Contains(Id)).AsParallel().ForAll(x => x.Value.Remove(Id));
  55. }
  56. }
  57. }