Changeset 11174


Ignore:
Timestamp:
Aug 14, 2010, 3:30:43 PM (11 years ago)
Author:
livings124
Message:

add a stat for the eta of the seeding idle limit, and use it in the Mac eta display

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/torrent.c

    r11046 r11174  
    10571057    uint64_t                seedRatioBytesGoal;
    10581058    tr_bool                 seedRatioApplies;
     1059    uint16_t                seedIdleMinutes;
    10591060
    10601061    if( !tor )
     
    11421143                            s->downloadedEver ? s->downloadedEver : s->haveValid );
    11431144
    1144     #warning account for idle limit?
    11451145    seedRatioApplies = tr_torrentGetSeedRatioBytes( tor, &seedRatioBytesLeft,
    11461146                                                         &seedRatioBytesGoal );
     
    11671167            else
    11681168                s->eta = s->leftUntilDone / toSpeedBytes(tor->etaDLSpeed_KBps);
     1169
     1170            s->etaIdle = TR_ETA_NOT_AVAIL;
    11691171            break;
    11701172
    11711173        case TR_STATUS_SEED: {
    1172             #warning do something for idle?
    11731174            if( !seedRatioApplies )
    11741175                s->eta = TR_ETA_NOT_AVAIL;
     
    11851186                    s->eta = seedRatioBytesLeft / toSpeedBytes(tor->etaULSpeed_KBps);
    11861187            }
     1188
     1189            if( tr_torrentGetSeedIdle( tor, &seedIdleMinutes ) )
     1190                s->etaIdle = seedIdleMinutes * 60 - s->idleSecs;
     1191            else
     1192                s->etaIdle = TR_ETA_NOT_AVAIL;
    11871193            break;
    11881194        }
     
    11901196        default:
    11911197            s->eta = TR_ETA_NOT_AVAIL;
     1198            s->etaIdle = TR_ETA_NOT_AVAIL;
    11921199            break;
    11931200    }
  • trunk/libtransmission/transmission.h

    r11086 r11174  
    18181818        If seeding, estimated number of seconds left until seed ratio is reached. */
    18191819    int    eta;
     1820    /** If seeding, number of seconds left until the idle time limit is reached.. */
     1821    int    etaIdle;
    18201822
    18211823    /** Number of peers that the tracker says this torrent has */
  • trunk/macosx/Torrent.h

    r11046 r11174  
    9191- (NSString *) magnetLink;
    9292
     93- (BOOL) seedLimitSet;
     94
    9395- (CGFloat) ratio;
    9496- (tr_ratiolimit) ratioSetting;
     
    9698- (CGFloat) ratioLimit;
    9799- (void) setRatioLimit: (CGFloat) limit;
    98 - (BOOL) seedRatioSet;
    99100- (CGFloat) progressStopRatio;
    100101
     
    103104- (NSUInteger) idleLimitMinutes;
    104105- (void) setIdleLimitMinutes: (NSUInteger) limit;
    105 - (BOOL) seedIdleLimitSet;
    106106
    107107- (BOOL) usesSpeedLimit: (BOOL) upload;
     
    157157- (CGFloat) progressLeft;
    158158- (CGFloat) checkingProgress;
    159 
    160 - (NSInteger) eta;
    161159
    162160- (CGFloat) availableDesired;
  • trunk/macosx/Torrent.m

    r11046 r11174  
    358358}
    359359
     360- (BOOL) seedLimitSet
     361{
     362    return tr_torrentGetSeedRatio(fHandle, NULL) || tr_torrentGetSeedIdle(fHandle, NULL);
     363}
     364
    360365- (CGFloat) ratio
    361366{
     
    384389}
    385390
    386 - (BOOL) seedRatioSet
    387 {
    388     return tr_torrentGetSeedRatio(fHandle, NULL);
    389 }
    390 
    391391- (CGFloat) progressStopRatio
    392392{
     
    413413    NSAssert(limit > 0, @"Idle limit must be greater than zero");
    414414    tr_torrentSetIdleLimit(fHandle, limit);
    415 }
    416 
    417 - (BOOL) seedIdleLimitSet
    418 {
    419     return tr_torrentGetSeedIdle(fHandle, NULL);
    420415}
    421416
     
    822817}
    823818
    824 - (NSInteger) eta
    825 {
    826     return fStat->eta;
    827 }
    828 
    829819- (CGFloat) availableDesired
    830820{
     
    10141004   
    10151005    //add time when downloading or seed limit set
    1016     if (fStat->activity == TR_STATUS_DOWNLOAD || ([self isSeeding] && [self seedRatioSet]))
     1006    if (fStat->activity == TR_STATUS_DOWNLOAD || ([self isSeeding] && [self seedLimitSet]))
    10171007        string = [string stringByAppendingFormat: @" - %@", [self etaString]];
    10181008   
     
    11621152- (NSString *) remainingTimeString
    11631153{
    1164     #warning update?
    1165     if (fStat->activity == TR_STATUS_DOWNLOAD || ([self isSeeding] && [self seedRatioSet]))
     1154    if (fStat->activity == TR_STATUS_DOWNLOAD || ([self isSeeding] && [self seedLimitSet]))
    11661155        return [self etaString];
    11671156    else
     
    18201809}
    18211810
     1811#warning don't show idle minutes when very large
    18221812- (NSString *) etaString
    18231813{
    1824     const NSInteger eta = [self eta];
    1825     switch (eta)
    1826     {
    1827         case TR_ETA_NOT_AVAIL:
    1828         case TR_ETA_UNKNOWN:
    1829             return NSLocalizedString(@"remaining time unknown", "Torrent -> eta string");
    1830         default:
    1831             return [NSString stringWithFormat: NSLocalizedString(@"%@ remaining", "Torrent -> eta string"),
    1832                         [NSString timeString: eta showSeconds: YES maxFields: 2]];
    1833     }
     1814    const BOOL etaReg = fStat->eta != TR_ETA_NOT_AVAIL && fStat->eta != TR_ETA_UNKNOWN;
     1815    const BOOL etaIdelSeed = fStat->etaIdle != TR_ETA_NOT_AVAIL && fStat->etaIdle != TR_ETA_UNKNOWN;
     1816   
     1817    NSInteger eta;
     1818    if (etaReg && etaIdelSeed)
     1819        eta = MIN(fStat->eta, fStat->etaIdle);
     1820    else if (etaReg)
     1821        eta = fStat->eta;
     1822    else if (etaIdelSeed)
     1823        eta = fStat->etaIdle;
     1824    else
     1825        return NSLocalizedString(@"remaining time unknown", "Torrent -> eta string");
     1826   
     1827    return [NSString stringWithFormat: NSLocalizedString(@"%@ remaining", "Torrent -> eta string"),
     1828            [NSString timeString: eta showSeconds: YES maxFields: 2]];
    18341829}
    18351830
Note: See TracChangeset for help on using the changeset viewer.