mirror of
https://github.com/transmission/transmission
synced 2025-03-04 02:28:03 +00:00
(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:
parent
32ddfbe98a
commit
e1a23350d4
5 changed files with 59 additions and 30 deletions
|
@ -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 );
|
||||
|
||||
|
|
|
@ -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)
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue