DeviceManager.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. namespace EEMSServerCore.Managers;
  2. internal class DeviceManager
  3. {
  4. private readonly ConcurrentDictionary<string, DeviceInfo> DevicesFromConnectionID = [];
  5. private readonly ConcurrentDictionary<Guid, DeviceInfo> DevicesFromGuid = [];
  6. public bool LoginDevice(string connectionID, DeviceInfo deviceInfo)
  7. {
  8. if (!deviceInfo.Guid.HasValue)
  9. return false;
  10. DevicesFromGuid[deviceInfo.Guid.Value] = deviceInfo;
  11. DevicesFromConnectionID[connectionID] = deviceInfo;
  12. return true;
  13. }
  14. public void RemoveDevice(string connectionID, out DeviceInfo? device)
  15. {
  16. DevicesFromConnectionID.TryRemove(connectionID, out device);
  17. if (device is null || !device.Guid.HasValue)
  18. return;
  19. DevicesFromGuid.TryRemove(device.Guid.Value, out _);
  20. }
  21. public bool TryGetDevice(string connectionID, out DeviceInfo? device)
  22. {
  23. device = default;
  24. if (string.IsNullOrEmpty(connectionID))
  25. return false;
  26. return DevicesFromConnectionID.TryGetValue(connectionID, out device);
  27. }
  28. public bool TryGetDevice(Guid guid, out DeviceInfo? device)
  29. {
  30. return DevicesFromGuid.TryGetValue(guid, out device);
  31. }
  32. }