Ignore:
Timestamp:
Jun 20, 2007, 12:54:05 AM (15 years ago)
Author:
livings124
Message:

simplify some of the repetitive queue code a bit

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/Controller.m

    r2168 r2169  
    13771377        seed = [fDefaults boolForKey: @"QueueSeed"];
    13781378   
    1379     //determine the number of downloads needed to start
    1380     int desiredDownloadActive = download ? [fDefaults integerForKey: @"QueueDownloadNumber"] : 0,
    1381         desiredSeedActive = seed ? [fDefaults integerForKey: @"QueueSeedNumber"] : 0;
    1382    
    1383     Torrent * torrent;
    1384     NSEnumerator * enumerator;
    1385     if (download || seed)
    1386     {
    1387         enumerator = [fTorrents objectEnumerator];
    1388         while ((torrent = [enumerator nextObject]))
    1389             if ([torrent isActive] && ![torrent isStalled] && ![torrent isError])
    1390             {
    1391                 if ([torrent allDownloaded])
    1392                     desiredSeedActive--;
    1393                 else
    1394                     desiredDownloadActive--;
    1395                
    1396                 if (desiredDownloadActive <= 0 && desiredSeedActive <= 0)
    1397                     break;
    1398             }
    1399     }
     1379    int desiredDownloadActive = [self numToStartFromQueue: YES],
     1380        desiredSeedActive = [self numToStartFromQueue: NO];
    14001381   
    14011382    //sort torrents by order value
     
    14131394        sortedTorrents = fTorrents;
    14141395
    1415     enumerator = [sortedTorrents objectEnumerator];
     1396    Torrent * torrent;
     1397    NSEnumerator * enumerator = [sortedTorrents objectEnumerator];
    14161398    while ((torrent = [enumerator nextObject]))
    14171399    {
     
    14461428}
    14471429
     1430- (int) numToStartFromQueue: (BOOL) downloadQueue
     1431{
     1432    if (![fDefaults boolForKey: downloadQueue ? @"Queue" : @"QueueSeed"])
     1433        return 0;
     1434   
     1435    int desired = [fDefaults integerForKey: downloadQueue ? @"QueueDownloadNumber" : @"QueueSeedNumber"];
     1436       
     1437    Torrent * torrent;
     1438    NSEnumerator * enumerator = [fTorrents objectEnumerator];
     1439    while ((torrent = [enumerator nextObject]))
     1440        if ([torrent isActive] && ![torrent isStalled] && ![torrent isError])
     1441        {
     1442            if ([torrent allDownloaded] != downloadQueue)
     1443            {
     1444                desired--;
     1445                if (desired <= 0)
     1446                    return 0;
     1447            }
     1448        }
     1449   
     1450    return desired;
     1451}
     1452
    14481453- (void) torrentFinishedDownloading: (NSNotification *) notification
    14491454{
     
    14681473        [fBadger incrementCompleted];
    14691474   
    1470     #warning make better
    1471     if ([fDefaults boolForKey: @"QueueSeed"])
     1475    if ([fDefaults boolForKey: @"QueueSeed"] && [self numToStartFromQueue: NO] <= 0)
    14721476    {
    14731477        [torrent stopTransfer];
     
    14841488    [fInfoController updateInfoStats];
    14851489   
    1486     #warning make better
    1487     if ([fDefaults boolForKey: @"Queue"])
     1490    if ([fDefaults boolForKey: @"Queue"] && [self numToStartFromQueue: YES] <= 0)
    14881491    {
    14891492        [torrent stopTransfer];
Note: See TracChangeset for help on using the changeset viewer.