Add FilterDevicesByOnlineStatus to AgentHubSessionCache.

This commit is contained in:
Jared Goodwin 2023-06-24 12:12:50 -07:00
parent 402d5b020f
commit 65f61eec82
3 changed files with 16 additions and 2 deletions

View File

@ -123,7 +123,7 @@ namespace Remotely.Server.Components.Scripts
var filteredDevices = DataService.FilterDeviceIDsByUserPermission(deviceIds.ToArray(), User);
var onlineDevices = ServiceSessionCache.GetConnectionIdsByDeviceIds(filteredDevices);
var onlineDevices = ServiceSessionCache.FilterDevicesByOnlineStatus(filteredDevices, true);
var scriptRun = new ScriptRun()
{

View File

@ -9,6 +9,8 @@ namespace Remotely.Server.Services
public interface IAgentHubSessionCache
{
void AddOrUpdateByConnectionId(string connectionId, Device device);
IEnumerable<string> FilterDevicesByOnlineStatus(IEnumerable<string> deviceIds, bool isOnline);
ICollection<Device> GetAllDevices();
IEnumerable<string> GetConnectionIdsByDeviceIds(IEnumerable<string> deviceIds);
bool TryGetByDeviceId(string deviceId, out Device device);
@ -28,6 +30,18 @@ namespace Remotely.Server.Services
_deviceIdToConnectionIdLookup.AddOrUpdate(device.ID, connectionId, (k, v) => connectionId);
}
public IEnumerable<string> FilterDevicesByOnlineStatus(IEnumerable<string> deviceIds, bool isOnline)
{
foreach (var deviceId in deviceIds)
{
var result = TryGetConnectionId(deviceId, out _);
if (result == isOnline)
{
yield return deviceId;
}
}
}
public ICollection<Device> GetAllDevices() => _connectionIdToDeviceLookup.Values;
public IEnumerable<string> GetConnectionIdsByDeviceIds(IEnumerable<string> deviceIds)

View File

@ -85,7 +85,7 @@ namespace Remotely.Server.Services
.Distinct()
.ToArray();
var onlineDevices = _serviceSessionCache.GetConnectionIdsByDeviceIds(deviceIds);
var onlineDevices = _serviceSessionCache.FilterDevicesByOnlineStatus(deviceIds, true);
if (schedule.RunOnNextConnect)
{