]> git.saurik.com Git - apt.git/commitdiff
For speed, you *need* multiple downloads per host.
authorJay Freeman (saurik) <saurik@saurik.com>
Wed, 30 Nov 2016 08:51:55 +0000 (00:51 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Wed, 30 Nov 2016 08:51:55 +0000 (00:51 -0800)
apt-pkg/acquire.cc

index 9ceb507f6a3aebf90b9fb6735b1b6398c53baabf..4ccfa26052a5a2488a072c143674801f393d7f96 100644 (file)
@@ -429,6 +429,24 @@ string pkgAcquire::QueueName(string Uri,MethodConfig const *&Config)
    } else
    {
       FullQueueName = AccessSchema + U.Host;
    } else
    {
       FullQueueName = AccessSchema + U.Host;
+
+      int parallel(_config->FindI("Acquire::"+U.Access+"::MaxParallel",8));
+      if (parallel > 0) {
+        typedef map<string, int> indexmap;
+        static indexmap indices;
+
+        pair<indexmap::iterator, bool> cache(indices.insert(indexmap::value_type(FullQueueName, -1)));
+        if (cache.second || cache.first->second == -1) {
+           int &index(indices[U.Access]);
+           if (index >= parallel)
+              index = 0;
+           cache.first->second = index++;
+        }
+
+        ostringstream value;
+        value << U.Access << "::" << cache.first->second;
+        FullQueueName = value.str();
+      }
    }
    unsigned int Instances = 0, SchemaLength = AccessSchema.length();
 
    }
    unsigned int Instances = 0, SchemaLength = AccessSchema.length();