Changeset 7992


Ignore:
Timestamp:
Mar 2, 2009, 5:48:32 AM (13 years ago)
Author:
charles
Message:

(trunk) #1608: Completed pieces bitfield in rpc

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/remote.c

    r7970 r7992  
    268268    "totalSize",
    269269    "uploadedEver",
     270    "pieces",
    270271    "webseeds",
    271272    "webseedsSendingToUs"
     
    848849            tr_benc *    t = tr_bencListChild( torrents, ti );
    849850            tr_benc *    l;
     851            const uint8_t * raw;
     852            size_t       rawlen;
    850853            const char * str;
    851854            char         buf[512];
     
    10071010            if( tr_bencDictFindInt( t, "pieceSize", &i ) )
    10081011                printf( "  Piece Size: %" PRId64 "\n", i );
     1012            printf( "\n" );
     1013
     1014            printf("PIECES\n  ");
     1015            if( tr_bencDictFindRaw( t, "pieces", &raw, &rawlen ) && tr_bencDictFindInt( t, "pieceCount", &j ) ) {
     1016                int len;
     1017                char * str = tr_base64_decode( raw, rawlen, &len );
     1018                for( i=k=0; k<len; ++k ) {
     1019                    int e;
     1020                    for( e=0; i<j && e<8; ++e, ++i )
     1021                        printf( str[k] & (1<<(7-e)) ? "1" : "0" );
     1022                    printf( " " );
     1023                    if( !(i%64) )
     1024                        printf( "\n  " );
     1025                }
     1026                tr_free( str );
     1027            }
     1028            printf( "\n" );
    10091029        }
    10101030    }
     
    12041224        }
    12051225
    1206         printf( "Sum:         %9s             %6.1f  %6.1f\n",
     1226        printf( "Sum:         %9s            %6.1f  %6.1f\n",
    12071227                strlsize( haveStr, total_size, sizeof( haveStr ) ),
    12081228                total_up / 1024.0,
  • trunk/doc/rpc-spec.txt

    r7867 r7992  
    168168   peersKnown             | number                               | tr_stat
    169169   peersSendingToUs       | number                               | tr_stat
     170   pieces                 | string (see below)                   | tr_torrent
    170171   pieceCount             | tnumber                              | tr_info
    171172   pieceSize              | tnumber                              | tr_info
     
    225226                          | fromTracker             | number     | tr_stat
    226227   -----------------------+--------------------------------------+
     228   pieces                 | A bitfield holding pieceCount flags  | tr_torrent
     229                          | which are set to 'true' if we have   |
     230                          | the piece matching that position.    |
     231                          | JSON doesn't allow raw binary data,  |
     232                          | so this is a base64-encoded string.  |
     233   -----------------------+--------------------------------------+
    227234   priorities             | an array of tr_info.filecount        | tr_info
    228235                          | numbers. each is the tr_priority_t   |
     
    411418         |         |           | torrent-get    | new arg "downloadDir"
    412419   ------+---------+-----------+----------------+-------------------------------
    413 
     420   6     | 1.60    | yes       | torrent-get    | new arg "pieces"
     421   ------+---------+-----------+----------------+-------------------------------
     422
     423
  • trunk/libtransmission/rpcimpl.c

    r7888 r7992  
    2525#include "stats.h"
    2626#include "torrent.h"
     27#include "completion.h"
    2728#include "utils.h"
    2829#include "web.h"
     
    425426    else if( !strcmp( key, "peersSendingToUs" ) )
    426427        tr_bencDictAddInt( d, key, st->peersSendingToUs );
     428    else if( !strcmp( key, "pieces" ) ) {
     429        const tr_bitfield * pieces = tr_cpPieceBitfield( &tor->completion );
     430        char * str = tr_base64_encode( pieces->bits, pieces->byteCount, NULL );
     431        tr_bencDictAddStr( d, key, str );
     432        tr_free( str );
     433    }
    427434    else if( !strcmp( key, "pieceCount" ) )
    428435        tr_bencDictAddInt( d, key, inf->pieceCount );
Note: See TracChangeset for help on using the changeset viewer.