using RobotNet10.FleetManager.Services.TrafficControl.Models;
namespace RobotNet10.FleetManager.Services.TrafficControl.Services;
///
/// Service for managing active robot routes storage
///
public class RouteStorageService : IRouteStorageService
{
// In-memory storage for active routes
private readonly Dictionary _activeRoutes = [];
private readonly Lock _routesLock = new();
public Task> GetAllActiveRoutesAsync()
{
lock (_routesLock)
{
return Task.FromResult(new Dictionary(_activeRoutes));
}
}
public Task GetRobotRouteAsync(string robotId)
{
lock (_routesLock)
{
_activeRoutes.TryGetValue(robotId, out var route);
return Task.FromResult(route);
}
}
public Task UpdateRobotRouteAsync(string robotId, RobotRoute route)
{
try
{
lock (_routesLock)
{
_activeRoutes[robotId] = route;
}
return Task.FromResult(true);
}
catch (Exception)
{
return Task.FromResult(false);
}
}
}