if (Config->SingleInstance == true || QueueMode == QueueAccess)
return U.Access;
- string AccessSchema = U.Access + ':',
- FullQueueName = AccessSchema + U.Host;
+ string AccessSchema = U.Access + ':';
+ string FullQueueName;
+
+ if (U.Host.empty())
+ {
+ long randomQueue = random();
+#ifdef _SC_NPROCESSORS_ONLN
+ long cpuCount = sysconf(_SC_NPROCESSORS_ONLN) * 2;
+#else
+ long cpuCount = _config->FindI("Acquire::QueueHost::Limit",10);
+#endif
+ if (cpuCount > 0)
+ randomQueue %= cpuCount;
+
+ strprintf(FullQueueName, "%s%ld", AccessSchema.c_str(), randomQueue);
+ if (Debug) {
+ clog << "Chose random queue " << FullQueueName << " for " << Uri << endl;
+ }
+ } else
+ {
+ FullQueueName = AccessSchema + U.Host;
+ }
unsigned int Instances = 0, SchemaLength = AccessSchema.length();
Queue *I = Queues;
/* This is the total number of bytes needed */
APT_PURE unsigned long long pkgAcquire::TotalNeeded()
{
- return std::accumulate(ItemsBegin(), ItemsEnd(), 0,
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0llu,
[](unsigned long long const T, Item const * const I) {
return T + I->FileSize;
});
/* This is the number of bytes that is not local */
APT_PURE unsigned long long pkgAcquire::FetchNeeded()
{
- return std::accumulate(ItemsBegin(), ItemsEnd(), 0,
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0llu,
[](unsigned long long const T, Item const * const I) {
if (I->Local == false)
return T + I->FileSize;
/* This is the number of bytes that is not local */
APT_PURE unsigned long long pkgAcquire::PartialPresent()
{
- return std::accumulate(ItemsBegin(), ItemsEnd(), 0,
+ return std::accumulate(ItemsBegin(), ItemsEnd(), 0llu,
[](unsigned long long const T, Item const * const I) {
if (I->Local == false)
return T + I->PartialSize;