// Retrieves all the existing resources for a GDG and puts them in a // sorted dictionary with the generation numbers as keys. private SortedDictionary <int, IResource> GetResourcesDictionary(GdgPath path) { var result = new SortedDictionary <int, IResource>(); foreach (var resource in GetResources(path)) { result[GetGenerationNumber(resource)] = resource; } return(result); }
// Retrieves a resource from its GDG path and number private IResource GetResource(GdgPath path, int currentNumber) { var number = currentNumber + path.N; if (number < 0) { number += Max; } if (number >= Max) { number -= Max; } return(GetResource(string.Format("file://{0}G{1:0000}V00{2}", path.FullPath, number, path.Extension ?? ""))); }
private IEnumerable <IResource> GetResourcesToDelete(GdgPath path, GdgOptions options, IEnumerable <IResource> resources) { var toDelete = new HashSet <IResource>(); var startingResources = _startingResources[path]; var newResources = resources.Except(startingResources.Values).ToList(); foreach (var resource in newResources) { var numberToDelete = GetGenerationNumber(resource) - options.Limit; if (numberToDelete < 0) { numberToDelete += Max; } if (startingResources.ContainsKey(numberToDelete)) { toDelete.Add(startingResources[numberToDelete]); } } return(toDelete); }
// Gets a resource from a GDG path private IResource GetGdgResource(GdgPath path) { var number = GetGenerationNumber(path.FullPath); if (number == int.MinValue) { var resources = GetResourcesDictionary(path); number = GetGenerationNumber(resources); _startingResources[path] = resources; SaveGenerationNumber(path.FullPath, number); } var resource = GetResource(path, number); if (path.N <= 0 && !resource.Exists()) { Logger.Warn("GDG resource accessed with negative reference does not exist: {0}({1}){2}", path.FullPath, path.N, path.Extension); } return(resource); }
// Retrieves existing resources for a GDG path. private IEnumerable <IResource> GetResources(GdgPath path) { return(base.DoGetResources(string.Format("file://{0}G*V*{1}", path.FullPath, (path.Extension ?? "")))); }
private IEnumerable<IResource> GetResourcesToDelete(GdgPath path, GdgOptions options, IEnumerable<IResource> resources) { var toDelete = new HashSet<IResource>(); var startingResources = _startingResources[path]; var newResources = resources.Except(startingResources.Values).ToList(); foreach (var resource in newResources) { var numberToDelete = GetGenerationNumber(resource) - options.Limit; if (numberToDelete < 0) { numberToDelete += Max; } if (startingResources.ContainsKey(numberToDelete)) { toDelete.Add(startingResources[numberToDelete]); } } return toDelete; }
// Retrieves existing resources for a GDG path. private IEnumerable<IResource> GetResources(GdgPath path) { return base.DoGetResources(string.Format("file://{0}G*V*{1}", path.FullPath, (path.Extension ?? ""))); }
// Retrieves all the existing resources for a GDG and puts them in a // sorted dictionary with the generation numbers as keys. private SortedDictionary<int, IResource> GetResourcesDictionary(GdgPath path) { var result = new SortedDictionary<int, IResource>(); foreach (var resource in GetResources(path)) { result[GetGenerationNumber(resource)] = resource; } return result; }
// Retrieves a resource from its GDG path and number private IResource GetResource(GdgPath path, int currentNumber) { var number = currentNumber + path.N; if (number < 0) { number += Max; } if (number >= Max) { number -= Max; } return GetResource(string.Format("file://{0}G{1:0000}V00{2}", path.FullPath, number, path.Extension ?? "")); }
// Gets a resource from a GDG path private IResource GetGdgResource(GdgPath path) { var number = GetGenerationNumber(path.FullPath); if (number == int.MinValue) { var resources = GetResourcesDictionary(path); number = GetGenerationNumber(resources); _startingResources[path] = resources; SaveGenerationNumber(path.FullPath, number); } var resource = GetResource(path, number); if (path.N <= 0 && !resource.Exists()) { Logger.Warn("GDG resource accessed with negative reference does not exist: {0}({1}){2}", path.FullPath, path.N, path.Extension); } return resource; }