Ejemplo n.º 1
0
        // 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);
        }
Ejemplo n.º 2
0
        // 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 ?? "")));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        // 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);
        }
Ejemplo n.º 5
0
 // 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 ?? ""))));
 }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
 // 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 ?? "")));
 }
Ejemplo n.º 8
0
 // 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;
 }
Ejemplo n.º 9
0
 // 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 ?? ""));
 }
Ejemplo n.º 10
0
 // 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;
 }