1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-03-10 14:13:23 +00:00

another tweak for calculating tr_stat.desiredAvailable faster, suggested by BentMyWookie

This commit is contained in:
Charles Kerr 2008-05-31 05:22:10 +00:00
parent d4618ef74d
commit cdf5cb87d6
3 changed files with 17 additions and 2 deletions

View file

@ -1382,6 +1382,7 @@ tr_peerMgrTorrentStats( const tr_peerMgr * manager,
const uint8_t * torrentHash, const uint8_t * torrentHash,
int * setmePeersKnown, int * setmePeersKnown,
int * setmePeersConnected, int * setmePeersConnected,
int * setmeSeedsConnected,
int * setmePeersSendingToUs, int * setmePeersSendingToUs,
int * setmePeersGettingFromUs, int * setmePeersGettingFromUs,
int * setmePeersFrom ) int * setmePeersFrom )
@ -1397,6 +1398,7 @@ tr_peerMgrTorrentStats( const tr_peerMgr * manager,
*setmePeersKnown = tr_ptrArraySize( t->pool ); *setmePeersKnown = tr_ptrArraySize( t->pool );
*setmePeersConnected = 0; *setmePeersConnected = 0;
*setmeSeedsConnected = 0;
*setmePeersSendingToUs = 0; *setmePeersSendingToUs = 0;
*setmePeersGettingFromUs = 0; *setmePeersGettingFromUs = 0;
@ -1420,6 +1422,9 @@ tr_peerMgrTorrentStats( const tr_peerMgr * manager,
if( clientIsUploadingTo( peer ) ) if( clientIsUploadingTo( peer ) )
++*setmePeersGettingFromUs; ++*setmePeersGettingFromUs;
if( atom->flags & ADDED_F_SEED_FLAG )
++*setmeSeedsConnected;
} }
managerUnlock( (tr_peerMgr*)manager ); managerUnlock( (tr_peerMgr*)manager );

View file

@ -105,6 +105,7 @@ void tr_peerMgrTorrentStats( const tr_peerMgr * manager,
const uint8_t * torrentHash, const uint8_t * torrentHash,
int * setmePeersKnown, int * setmePeersKnown,
int * setmePeersConnected, int * setmePeersConnected,
int * setmeSeedsConnected,
int * setmePeersSendingToUs, int * setmePeersSendingToUs,
int * setmePeersGettingFromUs, int * setmePeersGettingFromUs,
int * setmePeersFrom ); /* <-- array of TR_PEER_FROM__MAX */ int * setmePeersFrom ); /* <-- array of TR_PEER_FROM__MAX */

View file

@ -687,6 +687,7 @@ tr_torrentStat( tr_torrent * tor )
tr_stat * s; tr_stat * s;
struct tr_tracker * tc; struct tr_tracker * tc;
const tr_tracker_info * ti; const tr_tracker_info * ti;
int seedsConnected = 0;
if( !tor ) if( !tor )
return NULL; return NULL;
@ -714,6 +715,7 @@ tr_torrentStat( tr_torrent * tor )
tor->info.hash, tor->info.hash,
&s->peersKnown, &s->peersKnown,
&s->peersConnected, &s->peersConnected,
&seedsConnected,
&s->peersSendingToUs, &s->peersSendingToUs,
&s->peersGettingFromUs, &s->peersGettingFromUs,
s->peersFrom ); s->peersFrom );
@ -741,9 +743,16 @@ tr_torrentStat( tr_torrent * tor )
s->haveUnchecked = tr_cpHaveTotal( tor->completion ) - s->haveValid; s->haveUnchecked = tr_cpHaveTotal( tor->completion ) - s->haveValid;
if( !s->leftUntilDone || !tor->isRunning || !s->peersConnected ) if( seedsConnected > 0 )
{
s->desiredAvailable = s->leftUntilDone;
}
if( !s->leftUntilDone || !s->peersConnected )
{
s->desiredAvailable = 0; s->desiredAvailable = 0;
else { }
else
{
tr_piece_index_t i; tr_piece_index_t i;
tr_bitfield * peerPieces = tr_peerMgrGetAvailable( tor->handle->peerMgr, tr_bitfield * peerPieces = tr_peerMgrGetAvailable( tor->handle->peerMgr,
tor->info.hash ); tor->info.hash );