Changeset 5587
- Timestamp:
- Apr 11, 2008, 11:05:14 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gtk/torrent-cell-renderer.c
r5539 r5587 53 53 _("%1$s of %2$s (%3$.2f%%)"), 54 54 tr_strlsize( buf1, haveTotal, sizeof(buf1) ), 55 tr_strlsize( buf2, torStat-> desiredSize, sizeof(buf2) ),55 tr_strlsize( buf2, torStat->sizeWhenDone, sizeof(buf2) ), 56 56 torStat->percentDone * 100.0 ); 57 57 else if( !isSeed ) -
trunk/libtransmission/peer-mgr.c
r5485 r5587 1418 1418 } 1419 1419 1420 /* Returns the pieces that we and/or a connected peer has */1420 /* Returns the pieces that are available from peers */ 1421 1421 tr_bitfield* 1422 1422 tr_peerMgrGetAvailable( const tr_peerMgr * manager, … … 1424 1424 { 1425 1425 int i, size; 1426 constTorrent * t;1427 consttr_peer ** peers;1426 Torrent * t; 1427 tr_peer ** peers; 1428 1428 tr_bitfield * pieces; 1429 1430 1429 managerLock( (tr_peerMgr*)manager ); 1431 1430 1432 1431 t = getExistingTorrent( (tr_peerMgr*)manager, torrentHash ); 1433 p eers = (const tr_peer **) tr_ptrArrayPeek( t->peers, &size);1434 p ieces = tr_bitfieldDup( tr_cpPieceBitfield( t->tor->completion ));1432 pieces = tr_bitfieldNew( t->tor->info.pieceCount ); 1433 peers = getConnectedPeers( t, &size ); 1435 1434 for( i=0; i<size; ++i ) 1436 if( peers[i]->io != NULL ) 1437 tr_bitfieldOr( pieces, peers[i]->have ); 1435 tr_bitfieldOr( pieces, peers[i]->have ); 1438 1436 1439 1437 managerUnlock( (tr_peerMgr*)manager ); 1438 tr_free( peers ); 1440 1439 return pieces; 1441 1440 } -
trunk/libtransmission/torrent.c
r5556 r5587 639 639 { 640 640 tr_piece_index_t i; 641 tr_bitfield * availablePieces = tr_peerMgrGetAvailable( tor->handle->peerMgr,642 643 s-> desiredSize = 0;641 tr_bitfield * peerPieces = tr_peerMgrGetAvailable( tor->handle->peerMgr, 642 tor->info.hash ); 643 s->sizeWhenDone = 0; 644 644 s->desiredAvailable = 0; 645 645 646 646 for( i=0; i<tor->info.pieceCount; ++i ) { 647 647 if( !tor->info.pieces[i].dnd ) { 648 const uint64_t byteCount = tr_torPieceCountBytes( tor, i ); 649 s->desiredSize += byteCount; 650 if( tr_bitfieldHas( availablePieces, i ) ) 651 s->desiredAvailable += byteCount; 648 s->sizeWhenDone += tor->info.pieceSize; 649 if( tr_bitfieldHas( peerPieces, i ) ) 650 s->desiredAvailable += tr_cpMissingBlocksInPiece( tor->completion, i ); 652 651 } 653 652 } 654 653 655 /* "availablePieces" can miss our unverified blocks... */ 656 if( s->desiredAvailable < s->haveValid + s->haveUnchecked ) 657 s->desiredAvailable = s->haveValid + s->haveUnchecked; 658 659 tr_bitfieldFree( availablePieces ); 660 } 661 662 if( s->desiredSize > s->desiredAvailable ) 654 s->desiredAvailable *= tor->blockSize; 655 tr_bitfieldFree( peerPieces ); 656 } 657 658 if( s->leftUntilDone > s->desiredAvailable ) 663 659 s->eta = TR_ETA_NOT_AVAIL; 664 660 else if( s->rateDownload < 0.1 ) -
trunk/libtransmission/transmission.h
r5585 r5587 896 896 uint64_t haveUnchecked; 897 897 898 /* Byte count of all the non-DND piece data that either we already have, 899 * or that a peer we're connected to has. [0...desiredSize] */ 898 /* Byte count of all the piece data we'll have downloaded when we're done. 899 * whether or not we have it yet. [0...tr_info.totalSize] */ 900 uint64_t sizeWhenDone; 901 902 /* Byte count of all the piece data we want and don't have yet, 903 * but that a connected peer does have. [0...sizeWhenDone] */ 900 904 uint64_t desiredAvailable; 901 902 /* Byte count of all the piece data we want, whether we currently903 * have it nor not. [0...tr_info.totalSize] */904 uint64_t desiredSize;905 905 906 906 float swarmspeed; -
trunk/macosx/Torrent.m
r5582 r5587 890 890 - (float) notAvailableDesired 891 891 { 892 return (float)(fStat-> desiredSize - fStat->desiredAvailable) / [self size];892 return (float)(fStat->sizeWhenDone - fStat->desiredAvailable) / [self size]; 893 893 } 894 894
Note: See TracChangeset
for help on using the changeset viewer.