(trunk) #2096 "magnet links": in libT, cleanup. in GTK+ client, add different status text in the main window for magnet torrents: "downloading .torrent data"
This commit is contained in:
parent
68f853cdb5
commit
d5ae900e4e
|
@ -129,15 +129,17 @@ getProgressString( const tr_torrent * tor,
|
|||
}
|
||||
|
||||
static char*
|
||||
getShortTransferString( const tr_stat * torStat,
|
||||
double uploadSpeed,
|
||||
double downloadSpeed,
|
||||
char * buf,
|
||||
size_t buflen )
|
||||
getShortTransferString( const tr_torrent * tor,
|
||||
const tr_stat * torStat,
|
||||
double uploadSpeed,
|
||||
double downloadSpeed,
|
||||
char * buf,
|
||||
size_t buflen )
|
||||
{
|
||||
char downStr[32], upStr[32];
|
||||
const int haveDown = torStat->peersSendingToUs > 0;
|
||||
const int haveUp = torStat->peersGettingFromUs > 0;
|
||||
char downStr[32], upStr[32];
|
||||
const int haveMeta = tr_torrentHasMetadata( tor );
|
||||
const int haveDown = haveMeta && torStat->peersSendingToUs > 0;
|
||||
const int haveUp = haveMeta && torStat->peersGettingFromUs > 0;
|
||||
|
||||
if( haveDown )
|
||||
tr_strlspeed( downStr, downloadSpeed, sizeof( downStr ) );
|
||||
|
@ -145,28 +147,31 @@ getShortTransferString( const tr_stat * torStat,
|
|||
tr_strlspeed( upStr, uploadSpeed, sizeof( upStr ) );
|
||||
|
||||
if( haveDown && haveUp )
|
||||
/* Translators: "speed|" is here for disambiguation. Please remove it from your translation.
|
||||
%1$s is the download speed
|
||||
/* Translators: "speed|" is here for disambiguation.
|
||||
* Please remove it from your translation.
|
||||
* %1$s is the download speed
|
||||
%2$s is the upload speed */
|
||||
g_snprintf( buf, buflen, Q_(
|
||||
"speed|Down: %1$s, Up: %2$s" ), downStr, upStr );
|
||||
g_snprintf( buf, buflen, Q_( "speed|Down: %1$s, Up: %2$s" ), downStr, upStr );
|
||||
else if( haveDown )
|
||||
/* download speed */
|
||||
g_snprintf( buf, buflen, _( "Down: %s" ), downStr );
|
||||
else if( haveUp )
|
||||
/* upload speed */
|
||||
g_snprintf( buf, buflen, _( "Up: %s" ), upStr );
|
||||
else
|
||||
else if( tr_torrentHasMetadata( tor ) )
|
||||
/* the torrent isn't uploading or downloading */
|
||||
g_strlcpy( buf, _( "Idle" ), buflen );
|
||||
else
|
||||
*buf = '\0';
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
static char*
|
||||
getShortStatusString( const tr_stat * torStat,
|
||||
double uploadSpeed,
|
||||
double downloadSpeed )
|
||||
getShortStatusString( const tr_torrent * tor,
|
||||
const tr_stat * torStat,
|
||||
double uploadSpeed,
|
||||
double downloadSpeed )
|
||||
{
|
||||
GString * gstr = g_string_new( NULL );
|
||||
|
||||
|
@ -196,7 +201,7 @@ getShortStatusString( const tr_stat * torStat,
|
|||
g_string_append_printf( gstr, _( "Ratio: %s" ), buf );
|
||||
g_string_append( gstr, ", " );
|
||||
}
|
||||
getShortTransferString( torStat, uploadSpeed, downloadSpeed, buf, sizeof( buf ) );
|
||||
getShortTransferString( tor, torStat, uploadSpeed, downloadSpeed, buf, sizeof( buf ) );
|
||||
g_string_append( gstr, buf );
|
||||
break;
|
||||
}
|
||||
|
@ -209,9 +214,10 @@ getShortStatusString( const tr_stat * torStat,
|
|||
}
|
||||
|
||||
static char*
|
||||
getStatusString( const tr_stat * torStat,
|
||||
const double uploadSpeed,
|
||||
const double downloadSpeed )
|
||||
getStatusString( const tr_torrent * tor,
|
||||
const tr_stat * torStat,
|
||||
const double uploadSpeed,
|
||||
const double downloadSpeed )
|
||||
{
|
||||
const int isActive = torStat->activity != TR_STATUS_STOPPED;
|
||||
const int isChecking = torStat->activity == TR_STATUS_CHECK
|
||||
|
@ -227,18 +233,21 @@ getStatusString( const tr_stat * torStat,
|
|||
g_string_append_printf( gstr, _( fmt[torStat->error] ), torStat->errorString );
|
||||
}
|
||||
else switch( torStat->activity )
|
||||
{
|
||||
case TR_STATUS_STOPPED:
|
||||
case TR_STATUS_CHECK_WAIT:
|
||||
case TR_STATUS_CHECK:
|
||||
{
|
||||
case TR_STATUS_STOPPED:
|
||||
case TR_STATUS_CHECK_WAIT:
|
||||
case TR_STATUS_CHECK:
|
||||
{
|
||||
char * pch = getShortStatusString( torStat, uploadSpeed, downloadSpeed );
|
||||
g_string_assign( gstr, pch );
|
||||
g_free( pch );
|
||||
break;
|
||||
}
|
||||
char * pch = getShortStatusString( tor, torStat, uploadSpeed, downloadSpeed );
|
||||
g_string_assign( gstr, pch );
|
||||
g_free( pch );
|
||||
break;
|
||||
}
|
||||
|
||||
case TR_STATUS_DOWNLOAD:
|
||||
case TR_STATUS_DOWNLOAD:
|
||||
{
|
||||
if( tr_torrentHasMetadata( tor ) )
|
||||
{
|
||||
g_string_append_printf( gstr,
|
||||
ngettext( "Downloading from %1$'d of %2$'d connected peer",
|
||||
"Downloading from %1$'d of %2$'d connected peers",
|
||||
|
@ -247,23 +256,35 @@ getStatusString( const tr_stat * torStat,
|
|||
torStat->webseedsSendingToUs,
|
||||
torStat->peersConnected +
|
||||
torStat->webseedsSendingToUs );
|
||||
break;
|
||||
|
||||
case TR_STATUS_SEED:
|
||||
}
|
||||
else
|
||||
{
|
||||
g_string_append_printf( gstr,
|
||||
ngettext( "Seeding to %1$'d of %2$'d connected peer",
|
||||
"Seeding to %1$'d of %2$'d connected peers",
|
||||
ngettext( "Downloading .torrent data from %1$'d peer",
|
||||
"Downloading .torrent data from %1$'d peers",
|
||||
torStat->peersConnected ),
|
||||
torStat->peersGettingFromUs,
|
||||
torStat->peersConnected );
|
||||
break;
|
||||
torStat->peersConnected +
|
||||
torStat->webseedsSendingToUs );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case TR_STATUS_SEED:
|
||||
g_string_append_printf( gstr,
|
||||
ngettext( "Seeding to %1$'d of %2$'d connected peer",
|
||||
"Seeding to %1$'d of %2$'d connected peers",
|
||||
torStat->peersConnected ),
|
||||
torStat->peersGettingFromUs,
|
||||
torStat->peersConnected );
|
||||
break;
|
||||
}
|
||||
|
||||
if( isActive && !isChecking )
|
||||
{
|
||||
char buf[256];
|
||||
getShortTransferString( torStat, uploadSpeed, downloadSpeed, buf, sizeof( buf ) );
|
||||
g_string_append_printf( gstr, " - %s", buf );
|
||||
getShortTransferString( tor, torStat, uploadSpeed, downloadSpeed, buf, sizeof( buf ) );
|
||||
if( *buf )
|
||||
g_string_append_printf( gstr, " - %s", buf );
|
||||
}
|
||||
|
||||
return g_string_free( gstr, FALSE );
|
||||
|
@ -347,7 +368,7 @@ get_size_minimal( TorrentCellRenderer * cell,
|
|||
|
||||
icon = get_icon( tor, MINIMAL_ICON_SIZE, widget );
|
||||
name = tr_torrentInfo( tor )->name;
|
||||
status = getShortStatusString( st, p->upload_speed, p->download_speed );
|
||||
status = getShortStatusString( tor, st, p->upload_speed, p->download_speed );
|
||||
|
||||
/* get the idealized cell dimensions */
|
||||
g_object_set( p->icon_renderer, "pixbuf", icon, NULL );
|
||||
|
@ -404,7 +425,7 @@ get_size_full( TorrentCellRenderer * cell,
|
|||
|
||||
icon = get_icon( tor, FULL_ICON_SIZE, widget );
|
||||
name = inf->name;
|
||||
status = getStatusString( st, p->upload_speed, p->download_speed );
|
||||
status = getStatusString( tor, st, p->upload_speed, p->download_speed );
|
||||
progress = getProgressString( tor, inf, st );
|
||||
|
||||
/* get the idealized cell dimensions */
|
||||
|
@ -508,7 +529,7 @@ render_minimal( TorrentCellRenderer * cell,
|
|||
|
||||
icon = get_icon( tor, MINIMAL_ICON_SIZE, widget );
|
||||
name = tr_torrentInfo( tor )->name;
|
||||
status = getShortStatusString( st, p->upload_speed, p->download_speed );
|
||||
status = getShortStatusString( tor, st, p->upload_speed, p->download_speed );
|
||||
|
||||
/* get the cell dimensions */
|
||||
g_object_set( p->icon_renderer, "pixbuf", icon, NULL );
|
||||
|
@ -604,7 +625,7 @@ render_full( TorrentCellRenderer * cell,
|
|||
|
||||
icon = get_icon( tor, FULL_ICON_SIZE, widget );
|
||||
name = inf->name;
|
||||
status = getStatusString( st, p->upload_speed, p->download_speed );
|
||||
status = getStatusString( tor, st, p->upload_speed, p->download_speed );
|
||||
progress = getProgressString( tor, inf, st );
|
||||
|
||||
/* get the idealized cell dimensions */
|
||||
|
|
|
@ -513,8 +513,11 @@ tr_peerMgrFree( tr_peerMgr * manager )
|
|||
}
|
||||
|
||||
static int
|
||||
clientIsDownloadingFrom( const tr_peer * peer )
|
||||
clientIsDownloadingFrom( const tr_torrent * tor, const tr_peer * peer )
|
||||
{
|
||||
if( !tr_torrentHasMetadata( tor ) )
|
||||
return TRUE;
|
||||
|
||||
return peer->clientIsInterested && !peer->clientIsChoked;
|
||||
}
|
||||
|
||||
|
@ -2013,7 +2016,7 @@ tr_peerMgrTorrentStats( tr_torrent * tor,
|
|||
|
||||
++setmePeersFrom[atom->from];
|
||||
|
||||
if( clientIsDownloadingFrom( peer ) )
|
||||
if( clientIsDownloadingFrom( tor, peer ) )
|
||||
++*setmePeersSendingToUs;
|
||||
|
||||
if( clientIsUploadingTo( peer ) )
|
||||
|
@ -2124,7 +2127,7 @@ tr_peerMgrPeerStats( const tr_torrent * tor,
|
|||
stat->clientIsChoked = peer->clientIsChoked;
|
||||
stat->clientIsInterested = peer->clientIsInterested;
|
||||
stat->isIncoming = tr_peerIoIsIncoming( peer->io );
|
||||
stat->isDownloadingFrom = clientIsDownloadingFrom( peer );
|
||||
stat->isDownloadingFrom = clientIsDownloadingFrom( tor, peer );
|
||||
stat->isUploadingTo = clientIsUploadingTo( peer );
|
||||
stat->isSeed = ( atom->uploadOnly == UPLOAD_ONLY_YES ) || ( peer->progress >= 1.0 );
|
||||
|
||||
|
|
|
@ -177,7 +177,6 @@ struct tr_peermsgs
|
|||
tr_bool peerSupportsMetadataXfer;
|
||||
tr_bool clientSentLtepHandshake;
|
||||
tr_bool peerSentLtepHandshake;
|
||||
tr_bool requestingMetadataFromPeer;
|
||||
|
||||
/*tr_bool haveFastSet;*/
|
||||
|
||||
|
@ -749,9 +748,8 @@ popNextMetadataRequest( tr_peermsgs * msgs, int * piece )
|
|||
|
||||
*piece = msgs->peerAskedForMetadata[0];
|
||||
|
||||
memmove( msgs->peerAskedForMetadata,
|
||||
msgs->peerAskedForMetadata + 1,
|
||||
sizeof( int ) * --msgs->peerAskedForMetadataCount );
|
||||
tr_removeElementFromArray( msgs->peerAskedForMetadata, 0, sizeof( int ),
|
||||
msgs->peerAskedForMetadataCount-- );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -764,9 +762,8 @@ popNextRequest( tr_peermsgs * msgs, struct peer_request * setme )
|
|||
|
||||
*setme = msgs->peerAskedFor[0];
|
||||
|
||||
memmove( msgs->peerAskedFor,
|
||||
msgs->peerAskedFor + 1,
|
||||
sizeof( struct peer_request ) * --msgs->peerAskedForCount );
|
||||
tr_removeElementFromArray( msgs->peerAskedFor, 0, sizeof( struct peer_request ),
|
||||
msgs->peerAskedForCount-- );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1040,8 +1037,6 @@ parseUtMetadata( tr_peermsgs * msgs, int msglen, struct evbuffer * inbuf )
|
|||
&& ( piece * METADATA_PIECE_SIZE + (msg_end - benc_end) <= total_size ) )
|
||||
{
|
||||
const int pieceLen = msg_end - benc_end;
|
||||
dbgmsg( msgs, "got a metadata piece... calling tr_torrentSetMetadataPiece" );
|
||||
msgs->requestingMetadataFromPeer = FALSE;
|
||||
tr_torrentSetMetadataPiece( msgs->torrent, piece, benc_end, pieceLen );
|
||||
}
|
||||
|
||||
|
@ -1142,9 +1137,7 @@ parseUtPex( tr_peermsgs * msgs, int msglen, struct evbuffer * inbuf )
|
|||
static void sendPex( tr_peermsgs * msgs );
|
||||
|
||||
static void
|
||||
parseLtep( tr_peermsgs * msgs,
|
||||
int msglen,
|
||||
struct evbuffer * inbuf )
|
||||
parseLtep( tr_peermsgs * msgs, int msglen, struct evbuffer * inbuf )
|
||||
{
|
||||
uint8_t ltep_msgid;
|
||||
|
||||
|
@ -1203,14 +1196,12 @@ readBtLength( tr_peermsgs * msgs,
|
|||
return READ_NOW;
|
||||
}
|
||||
|
||||
static int readBtMessage( tr_peermsgs * msgs,
|
||||
static int readBtMessage( tr_peermsgs * msgs,
|
||||
struct evbuffer * inbuf,
|
||||
size_t inlen );
|
||||
|
||||
static int
|
||||
readBtId( tr_peermsgs * msgs,
|
||||
struct evbuffer * inbuf,
|
||||
size_t inlen )
|
||||
readBtId( tr_peermsgs * msgs, struct evbuffer * inbuf, size_t inlen )
|
||||
{
|
||||
uint8_t id;
|
||||
|
||||
|
@ -1477,9 +1468,8 @@ readBtMessage( tr_peermsgs * msgs, struct evbuffer * inbuf, size_t inlen )
|
|||
}
|
||||
|
||||
if( i < msgs->peerAskedForCount )
|
||||
memmove( msgs->peerAskedFor+i,
|
||||
msgs->peerAskedFor+i+1,
|
||||
sizeof(struct peer_request) *( --msgs->peerAskedForCount-i) );
|
||||
tr_removeElementFromArray( msgs->peerAskedFor, i, sizeof( struct peer_request ),
|
||||
msgs->peerAskedForCount-- );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1746,7 +1736,6 @@ updateMetadataRequests( tr_peermsgs * msgs, time_t now )
|
|||
int piece;
|
||||
|
||||
if( msgs->peerSupportsMetadataXfer
|
||||
&& !msgs->requestingMetadataFromPeer
|
||||
&& tr_torrentGetNextMetadataRequest( msgs->torrent, now, &piece ) )
|
||||
{
|
||||
tr_benc tmp;
|
||||
|
@ -1772,8 +1761,6 @@ updateMetadataRequests( tr_peermsgs * msgs, time_t now )
|
|||
pokeBatchPeriod( msgs, HIGH_PRIORITY_INTERVAL_SECS );
|
||||
dbgOutMessageLen( msgs );
|
||||
|
||||
msgs->requestingMetadataFromPeer = TRUE;
|
||||
|
||||
tr_free( payload );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,12 +93,6 @@ tr_torrentSetMetadataSizeHint( tr_torrent * tor, int size )
|
|||
}
|
||||
}
|
||||
|
||||
tr_bool
|
||||
tr_torrentHasMetadata( const tr_torrent * tor )
|
||||
{
|
||||
return tor->info.fileCount > 0;
|
||||
}
|
||||
|
||||
void*
|
||||
tr_torrentGetMetadataPiece( const tr_torrent * tor, int piece, int * len )
|
||||
{
|
||||
|
|
|
@ -25,8 +25,6 @@ enum
|
|||
METADATA_PIECE_SIZE = ( 1024 * 16 )
|
||||
};
|
||||
|
||||
tr_bool tr_torrentHasMetadata( const tr_torrent * tor );
|
||||
|
||||
void* tr_torrentGetMetadataPiece( const tr_torrent * tor, int piece, int * len );
|
||||
|
||||
void tr_torrentSetMetadataPiece( tr_torrent * tor, int piece, const void * data, int len );
|
||||
|
|
|
@ -1552,6 +1552,11 @@ struct tr_info
|
|||
tr_bool isMultifile;
|
||||
};
|
||||
|
||||
static TR_INLINE tr_bool tr_torrentHasMetadata( const tr_torrent * tor )
|
||||
{
|
||||
return tr_torrentInfo( tor )->fileCount > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* What the torrent is doing right now.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue