Changeset 7000


Ignore:
Timestamp:
Oct 31, 2008, 11:56:14 PM (12 years ago)
Author:
charles
Message:

(daemon) add more descriptive states for the --list feature for easy grepping

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/remote.c

    r6971 r7000  
    255255    "leftUntilDone",
    256256    "name",
     257    "peersGettingFromUs", "peersSendingToUs",
    257258    "rateDownload",
    258     "rateUpload",     "sizeWhenDone", "status", "uploadedEver"
     259    "rateUpload", "sizeWhenDone", "status", "uploadedEver"
    259260};
    260261
     
    615616}
    616617
    617 static const char*
    618 torrentStatusToString( int i )
    619 {
    620     switch( i )
    621     {
    622         case TR_STATUS_CHECK_WAIT:
    623             return "Will Verify";
    624 
    625         case TR_STATUS_CHECK:
    626             return "Verifying";
    627 
    628         case TR_STATUS_DOWNLOAD:
    629             return "Downloading";
    630 
    631         case TR_STATUS_SEED:
    632             return "Seeding";
    633 
    634         case TR_STATUS_STOPPED:
    635             return "Stopped";
    636 
    637         default:
    638             return "Error";
    639     }
    640 }
    641 
    642 static int
    643 isVerifying( int status )
    644 {
    645     return ( status == TR_STATUS_CHECK_WAIT )
    646            || ( status == TR_STATUS_CHECK );
     618static char*
     619getStatusString( tr_benc * t, char * buf, size_t buflen )
     620{
     621    int64_t i;
     622
     623    *buf = '\0';
     624
     625    if( tr_bencDictFindInt( t, "status", &i ) )
     626    {
     627        if( i==TR_STATUS_STOPPED )
     628        {
     629            tr_strlcpy( buf, "Stopped", buflen );
     630        }
     631        else if( i==TR_STATUS_CHECK_WAIT || i==TR_STATUS_CHECK )
     632        {
     633            const char * str = NULL;
     634            char percentBuf[32];
     635            if( tr_bencDictFindStr( t, "recheckProgress", &str ) )
     636                tr_snprintf( percentBuf, sizeof( percentBuf ), " (%.0f%%)", atof( str ) );
     637            else
     638                *percentBuf = '\0';
     639            tr_snprintf( buf, buflen, "%s%s",
     640                         ( i == TR_STATUS_CHECK_WAIT ) ? "Will Verify" : "Verifying",
     641                         percentBuf );
     642        }
     643        else if( i==TR_STATUS_DOWNLOAD || i==TR_STATUS_SEED )
     644        {
     645            int64_t j = 0;
     646            int64_t k = 0;
     647            tr_bencDictFindInt( t, "peersGettingFromUs", &j );
     648            tr_bencDictFindInt( t, "peersSendingToUs", &k );
     649            if( j && k )
     650                tr_strlcpy( buf, "Up & Down", buflen );
     651            else if( j )
     652                tr_strlcpy( buf, (i==TR_STATUS_SEED ? "Uploading" : "Seeding"), buflen );
     653            else if( j )
     654                tr_strlcpy( buf, "Downloading", buflen );
     655            else
     656                tr_strlcpy( buf, "Idle", buflen );
     657        }
     658    }
     659
     660    return buf;
    647661}
    648662
     
    676690
    677691            printf( "TRANSFER\n" );
    678             if( tr_bencDictFindInt( t, "status", &i ) )
    679             {
    680                 if( isVerifying( i )
    681                   && tr_bencDictFindStr( t, "recheckProgress", &str ) )
    682                     tr_snprintf( buf, sizeof( buf ), " (%.0f%% Done)",
    683                                 100.0 * atof(
    684                                     str ) );
    685                 else
    686                     *buf = '\0';
    687                 printf( "  State: %s%s\n", torrentStatusToString( i ), buf );
    688             }
     692            getStatusString( t, buf, sizeof( buf ) );
     693            printf( "  State: %s\n", buf );
    689694
    690695            if( tr_bencDictFindInt( t, "sizeWhenDone", &i )
     
    955960    {
    956961        int i, n;
    957         printf( "%-3s  %-4s  %-8s  %-6s  %-6s  %-5s  %-11s  %s\n",
     962        printf( "%-4s  %-4s  %-8s  %-6s  %-6s  %-5s  %-11s  %s\n",
    958963                "ID", "Done", "ETA", "Up", "Down", "Ratio", "Status",
    959964                "Name" );
     
    977982            {
    978983                char etaStr[16];
     984                char statusStr[64];
    979985                if( leftUntilDone )
    980986                    etaToString( etaStr, sizeof( etaStr ), eta );
     
    982988                    tr_snprintf( etaStr, sizeof( etaStr ), "Done" );
    983989                printf(
    984                     "%3d  %3d%%  %-8s  %6.1f  %6.1f  %5.1f  %-11s  %s\n",
     990                    "%4d  %3d%%  %-8s  %6.1f  %6.1f  %5.1f  %-11s  %s\n",
    985991                    (int)id,
    986992                    (int)( 100.0 *
     
    991997                    (double)( downEver ? ( (double)upEver /
    992998                                          downEver ) : 0.0 ),
    993                     torrentStatusToString( status ),
     999                    getStatusString( d, statusStr, sizeof( statusStr ) ),
    9941000                    name );
    9951001            }
Note: See TracChangeset for help on using the changeset viewer.