(1) add a doneDate to tr_torrent and tr_stat. (2) save tr_torrent.doneDate and tr_torrent.activityDate between sessions in the .resume file.

This commit is contained in:
Charles Kerr 2008-06-03 19:16:12 +00:00
parent 32ddfbe98a
commit e1a23350d4
5 changed files with 59 additions and 30 deletions

View File

@ -24,18 +24,20 @@
#include "torrent.h"
#include "utils.h" /* tr_buildPath */
#define KEY_CORRUPT "corrupt"
#define KEY_DOWNLOAD_DIR "destination"
#define KEY_DND "dnd"
#define KEY_DOWNLOADED "downloaded"
#define KEY_MAX_PEERS "max-peers"
#define KEY_PAUSED "paused"
#define KEY_PEERS "peers"
#define KEY_PRIORITY "priority"
#define KEY_PROGRESS "progress"
#define KEY_SPEEDLIMIT "speed-limit"
#define KEY_UPLOADED "uploaded"
#define KEY_ADDED_DATE "added-date"
#define KEY_ACTIVITY_DATE "activity-date"
#define KEY_ADDED_DATE "added-date"
#define KEY_CORRUPT "corrupt"
#define KEY_DONE_DATE "done-date"
#define KEY_DOWNLOAD_DIR "destination"
#define KEY_DND "dnd"
#define KEY_DOWNLOADED "downloaded"
#define KEY_MAX_PEERS "max-peers"
#define KEY_PAUSED "paused"
#define KEY_PEERS "peers"
#define KEY_PRIORITY "priority"
#define KEY_PROGRESS "progress"
#define KEY_SPEEDLIMIT "speed-limit"
#define KEY_UPLOADED "uploaded"
#define KEY_SPEEDLIMIT_DOWN_SPEED "down-speed"
#define KEY_SPEEDLIMIT_DOWN_MODE "down-mode"
@ -347,9 +349,15 @@ tr_torrentSaveResume( const tr_torrent * tor )
tr_benc top;
char filename[MAX_PATH_LENGTH];
tr_bencInitDict( &top, 12 );
tr_bencInitDict( &top, 14 );
tr_bencDictAddInt( &top, KEY_ACTIVITY_DATE,
tor->activityDate );
tr_bencDictAddInt( &top, KEY_ADDED_DATE,
tor->addedDate );
tr_bencDictAddInt( &top, KEY_CORRUPT,
tor->corruptPrev + tor->corruptCur );
tr_bencDictAddInt( &top, KEY_DONE_DATE,
tor->doneDate );
tr_bencDictAddStr( &top, KEY_DOWNLOAD_DIR,
tor->downloadDir );
tr_bencDictAddInt( &top, KEY_DOWNLOADED,
@ -360,8 +368,6 @@ tr_torrentSaveResume( const tr_torrent * tor )
tor->maxConnectedPeers );
tr_bencDictAddInt( &top, KEY_PAUSED,
tor->isRunning ? 0 : 1 );
tr_bencDictAddInt( &top, KEY_ADDED_DATE,
tor->addedDate );
savePeers( &top, tor );
savePriorities( &top, tor );
saveDND( &top, tor );
@ -446,6 +452,18 @@ loadFromFile( tr_torrent * tor,
fieldsLoaded |= TR_FR_ADDED_DATE;
}
if( ( fieldsToLoad & TR_FR_DONE_DATE )
&& tr_bencDictFindInt( &top, KEY_DONE_DATE, &i ) ) {
tor->doneDate = i;
fieldsLoaded |= TR_FR_DONE_DATE;
}
if( ( fieldsToLoad & TR_FR_ACTIVITY_DATE )
&& tr_bencDictFindInt( &top, KEY_ACTIVITY_DATE, &i ) ) {
tor->activityDate = i;
fieldsLoaded |= TR_FR_ACTIVITY_DATE;
}
if( fieldsToLoad & TR_FR_PEERS )
fieldsLoaded |= loadPeers( &top, tor );

View File

@ -15,18 +15,20 @@
enum
{
TR_FR_DOWNLOADED = (1<<0),
TR_FR_UPLOADED = (1<<1),
TR_FR_CORRUPT = (1<<2),
TR_FR_PEERS = (1<<3),
TR_FR_PROGRESS = (1<<4),
TR_FR_DND = (1<<5),
TR_FR_PRIORITY = (1<<6),
TR_FR_SPEEDLIMIT = (1<<7),
TR_FR_RUN = (1<<8),
TR_FR_DOWNLOAD_DIR = (1<<9),
TR_FR_MAX_PEERS = (1<<10),
TR_FR_ADDED_DATE = (1<<11)
TR_FR_DOWNLOADED = (1<<0),
TR_FR_UPLOADED = (1<<1),
TR_FR_CORRUPT = (1<<2),
TR_FR_PEERS = (1<<3),
TR_FR_PROGRESS = (1<<4),
TR_FR_DND = (1<<5),
TR_FR_PRIORITY = (1<<6),
TR_FR_SPEEDLIMIT = (1<<7),
TR_FR_RUN = (1<<8),
TR_FR_DOWNLOAD_DIR = (1<<9),
TR_FR_MAX_PEERS = (1<<10),
TR_FR_ADDED_DATE = (1<<11),
TR_FR_DONE_DATE = (1<<12),
TR_FR_ACTIVITY_DATE = (1<<13)
};
/**

View File

@ -737,9 +737,10 @@ tr_torrentStat( tr_torrent * tor )
s->swarmSpeed = tr_rcRate( tor->swarmSpeed );
s->startDate = tor->startDate;
s->activityDate = tor->activityDate;
s->addedDate = tor->addedDate;
s->addedDate = tor->addedDate;
s->doneDate = tor->doneDate;
s->startDate = tor->startDate;
s->corruptEver = tor->corruptCur + tor->corruptPrev;
s->downloadedEver = tor->downloadedCur + tor->downloadedPrev;
@ -1190,8 +1191,12 @@ tr_torrentRecheckCompleteness( tr_torrent * tor )
fireStatusChange( tor, cpStatus );
if( recentChange && ( cpStatus == TR_CP_COMPLETE ) )
{
tr_trackerCompleted( tor->tracker );
tor->doneDate = time( NULL );
}
tr_torrentSaveResume( tor );
}

View File

@ -160,8 +160,9 @@ struct tr_torrent
uint64_t corruptPrev;
time_t addedDate;
time_t startDate;
time_t activityDate;
time_t doneDate;
time_t startDate;
tr_torrent_status_func * status_func;
void * status_func_user_data;

View File

@ -1220,6 +1220,9 @@ typedef struct tr_stat
/** When the torrent was first added. */
time_t addedDate;
/** When the torrent finished downloading. */
time_t doneDate;
/** When the torrent was last started. */
time_t startDate;