bool UploadManager::getAutoSlot() { /** A 0 in settings means disable */ if(SETTING(MIN_UPLOAD_SPEED) == 0) return false; /** Only grant one slot per 30 sec */ if(GET_TICK() < getLastGrant() + 30*1000) return false; /** Grant if upload speed is less than the threshold speed */ return getRunningAverage() < (SETTING(MIN_UPLOAD_SPEED)*1024); }
bool DownloadManager::startDownload(QueueItem::Priority prio) { size_t downloadCount = getDownloadCount(); bool full = (SETTING(DOWNLOAD_SLOTS) != 0) && (downloadCount >= (size_t)SETTING(DOWNLOAD_SLOTS)); full = full || ((SETTING(MAX_DOWNLOAD_SPEED) != 0) && (getRunningAverage() >= (SETTING(MAX_DOWNLOAD_SPEED)*1024))); if(full) { bool extraFull = (SETTING(DOWNLOAD_SLOTS) != 0) && (getDownloadCount() >= (size_t)(SETTING(DOWNLOAD_SLOTS)+3)); if(extraFull) { return false; } return prio == QueueItem::HIGHEST; } if(downloadCount > 0) { return prio != QueueItem::LOWEST; } return true; }