Changeset 5143


Ignore:
Timestamp:
Feb 27, 2008, 5:38:39 PM (14 years ago)
Author:
charles
Message:

add `verify' command to ipc.

Location:
trunk
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/cli/transmissioncli.c

    r5114 r5143  
    289289        {
    290290            recheckData = 0;
    291             tr_torrentRecheck( tor );
     291            tr_torrentVerify( tor );
    292292        }
    293293
  • trunk/daemon/client.c

    r5142 r5143  
    556556client_start( size_t len, const int * list )
    557557{
    558     enum ipc_msg id;
    559 
    560     id = ( NULL == list ? IPC_MSG_STARTALL : IPC_MSG_START );
    561 
     558    const enum ipc_msg id = list ? IPC_MSG_START : IPC_MSG_STARTALL;
    562559    return addintlistreq( id, len, list );
    563560}
     
    566563client_stop( size_t len, const int * list )
    567564{
    568     enum ipc_msg id;
    569 
    570     id = ( NULL == list ? IPC_MSG_STOPALL : IPC_MSG_STOP );
    571 
     565    const enum ipc_msg id = list ? IPC_MSG_STOP : IPC_MSG_STOPALL;
    572566    return addintlistreq( id, len, list );
    573567}
     
    576570client_remove( size_t len, const int * list )
    577571{
    578     enum ipc_msg id;
    579 
    580     id = ( NULL == list ? IPC_MSG_REMOVEALL : IPC_MSG_REMOVE );
    581 
     572    const enum ipc_msg id = list ? IPC_MSG_REMOVE : IPC_MSG_REMOVEALL;
    582573    return addintlistreq( id, len, list );
     574}
     575
     576int
     577client_verify( size_t len, const int * list )
     578{
     579    return list ? addintlistreq( IPC_MSG_VERIFY, len, list ) : -1;
    583580}
    584581
  • trunk/daemon/client.h

    r3578 r5143  
    6969int  client_stop     ( size_t, const int * );
    7070int  client_remove   ( size_t, const int * );
     71int  client_verify   ( size_t, const int * );
    7172int  client_list     ( cl_infofunc );
    7273int  client_info     ( cl_infofunc );
  • trunk/daemon/remote.c

    r5137 r5143  
    6565    int               listquick;
    6666    int               listfull;
     67    struct strlist    verify;
    6768    int               startall;
    6869    struct strlist    start;
     
    130131static struct strlist * gl_stophashes   = NULL;
    131132static struct strlist * gl_removehashes = NULL;
     133static struct strlist * gl_verifyhashes = NULL;
    132134static struct torhashes gl_hashids      = RB_INITIALIZER( &gl_hashids );
    133135static int              gl_gotlistinfo  = 0;
     
    192194    }
    193195
    194     if( ( !o.startall  && !SLIST_EMPTY( &o.start  ) ) ||
    195         ( !o.stopall   && !SLIST_EMPTY( &o.stop   ) ) ||
    196         ( !o.removeall && !SLIST_EMPTY( &o.remove ) ) )
     196    if( ( !o.startall   && !SLIST_EMPTY( &o.start  ) ) ||
     197        ( !o.stopall    && !SLIST_EMPTY( &o.stop   ) ) ||
     198        (                  !SLIST_EMPTY( &o.verify ) ) ||
     199        ( !o.removeall  && !SLIST_EMPTY( &o.remove ) ) )
    197200    {
    198201        if( 0 > client_hashids( hashmsg ) )
     
    203206        gl_stophashes   = ( o.stopall   ? NULL : &o.stop   );
    204207        gl_removehashes = ( o.removeall ? NULL : &o.remove );
     208        gl_verifyhashes = ( &o.verify );
    205209    }
    206210
     
    289293        { "upload-limit",       required_argument, NULL, 'u' },
    290294        { "upload-unlimited",   no_argument,       NULL, 'U' },
     295        { "verify",             required_argument, NULL, 'v' },
    291296        { "proxy",              no_argument,       NULL, 'x' },
    292297        { NULL, 0, NULL, 0 }
     
    411416                opts->up        = -1;
    412417                break;
     418            case 'v':
     419                if( 0 > hasharg( optarg, &opts->verify, NULL ) )
     420                {
     421                    return -1;
     422                }
     423                break;
    413424            case 'x':
    414425                opts->proxy     = 1;
     
    467478    if( 0 == strcasecmp( "all", arg ) )
    468479    {
    469         *all = 1;
     480        if( all )
     481            *all = 1;
    470482        return 0;
    471483    }
     
    850862        { gl_stophashes,   client_stop   },
    851863        { gl_removehashes, client_remove },
     864        { gl_verifyhashes, client_verify },
    852865    };
    853866    struct stritem * jj;
  • trunk/daemon/server.c

    r5142 r5143  
    133133    ipc_addmsg( gl_tree, IPC_MSG_STOPALL,      tormsg  );
    134134    ipc_addmsg( gl_tree, IPC_MSG_UPLIMIT,      intmsg  );
     135    ipc_addmsg( gl_tree, IPC_MSG_VERIFY,       tormsg  );
    135136
    136137    ipc_setdefmsg( gl_tree, defmsg );
     
    810811        case IPC_MSG_STOP:
    811812            func = torrent_stop;
     813            break;
     814        case IPC_MSG_VERIFY:
     815            all = 0;
     816            func = torrent_verify;
    812817            break;
    813818        default:
  • trunk/daemon/torrents.c

    r5137 r5143  
    7474static int          toridcmp   ( struct tor *, struct tor * );
    7575static int          torhashcmp ( struct tor *, struct tor * );
    76 static struct tor * idlookup   ( int );
    7776static struct tor * hashlookup ( const uint8_t * );
    7877static struct tor * iterate    ( struct tor * );
     
    174173}
    175174
     175static struct tor *
     176idlookup( int id )
     177{
     178    struct tor * found = NULL;
     179
     180    if( gl_handle && !gl_exiting )
     181    {
     182        struct tor key;
     183        memset( &key, 0, sizeof key );
     184        key.id = id;
     185        found = RB_FIND( tortree, &gl_tree, &key );
     186    }
     187
     188    return found;
     189}
     190
    176191void
    177192torrent_start( int id )
    178193{
    179     struct tor * tor;
    180 
    181     assert( NULL != gl_handle );
    182     assert( !gl_exiting );
    183 
    184     tor = idlookup( id );
    185     if( tor != NULL )
    186     {
    187         const tr_stat  * st = tr_torrentStat( tor->tor );
    188 
    189         if( !TR_STATUS_IS_ACTIVE( st->status ) )
    190         {
    191             tr_torrentStart( tor->tor );
    192             savestate();
    193         }
     194    struct tor * tor = idlookup( id );
     195    if( tor && !TR_STATUS_IS_ACTIVE( tr_torrentStat( tor->tor )->status ) ) {
     196        tr_torrentStart( tor->tor );
     197        savestate();
    194198    }
    195199
     
    199203torrent_stop( int id )
    200204{
    201     struct tor * tor;
    202 
    203     assert( NULL != gl_handle );
    204     assert( !gl_exiting );
    205 
    206     tor = idlookup( id );
    207     if( tor != NULL )
    208     {
    209         const tr_stat  * st = tr_torrentStat( tor->tor );
    210 
    211         if( TR_STATUS_IS_ACTIVE( st->status ) )
    212         {
    213             tr_torrentStop( tor->tor );
    214             savestate();
    215         }
    216     }
     205    struct tor * tor = idlookup( id );
     206    if( tor && TR_STATUS_IS_ACTIVE( tr_torrentStat( tor->tor )->status ) ) {
     207        tr_torrentStop( tor->tor );
     208        savestate( );
     209    }
     210}
     211
     212void
     213torrent_verify( int id )
     214{
     215    struct tor * tor = idlookup( id );
     216    if( tor )
     217        tr_torrentVerify( tor->tor );
    217218}
    218219
     
    220221torrent_remove( int id )
    221222{
    222     struct tor * tor;
    223 
    224     assert( NULL != gl_handle );
    225     assert( !gl_exiting );
    226 
    227     tor = idlookup( id );
    228     if( tor != NULL )
    229     {
     223    struct tor * tor = idlookup( id );
     224    if( tor ) {
    230225        closetor( tor, 1 );
    231226        savestate();
     
    236231torrent_info( int id )
    237232{
    238     struct tor * tor;
    239 
    240     assert( NULL != gl_handle );
    241     assert( !gl_exiting );
    242 
    243     tor = idlookup( id );
    244     if( NULL == tor )
    245     {
    246         return NULL;
    247     }
    248 
    249     return tr_torrentInfo( tor->tor );
     233    const struct tor * tor = idlookup( id );
     234    return tor ? tr_torrentInfo( tor->tor ) : NULL;
    250235}
    251236
     
    253238torrent_stat( int id )
    254239{
    255     struct tor * tor;
    256 
    257     assert( NULL != gl_handle );
    258     assert( !gl_exiting );
    259 
    260     tor = idlookup( id );
    261     if( NULL == tor )
    262     {
    263         return NULL;
    264     }
    265 
    266     return tr_torrentStat( tor->tor );
     240    struct tor * tor = idlookup( id );
     241    return tor ? tr_torrentStat( tor->tor ) : NULL;
    267242}
    268243
     
    882857
    883858struct tor *
    884 idlookup( int id )
    885 {
    886     struct tor key, * found;
    887 
    888     memset( &key, 0, sizeof key );
    889     key.id = id;
    890     found = RB_FIND( tortree, &gl_tree, &key );
    891 
    892     return found;
    893 }
    894 
    895 struct tor *
    896859hashlookup( const uint8_t * hash )
    897860{
  • trunk/daemon/torrents.h

    r3578 r5143  
    3737void         torrent_start               ( int );
    3838void         torrent_stop                ( int );
     39void         torrent_verify              ( int );
    3940void         torrent_remove              ( int );
    4041const tr_info  * torrent_info          ( int );
  • trunk/doc/ipcproto.txt

    r4305 r5143  
    471471Details: Set the server's upload limit in kilobytes per second.
    472472         Negative values are interpreted as no limit.
     473
     474Key:     "verify"
     475Version: 2
     476Format:  list of torrent ID ints
     477Replies: "succeeded", "failed", "not-supported", "bad-format"
     478Example: 7:verifyli3ei8ei6ee
     479         "verify", (3, 8, 6)
     480Details: List of torrent IDs to stop.
     481
    473482
    474483
  • trunk/gtk/ipc.c

    r5142 r5143  
    883883            case IPC_MSG_STOP:
    884884                tr_torrent_stop( tor );
     885                break;
     886            case IPC_MSG_VERIFY:
     887                tr_torrentVerify( tr_torrent_handle( tor ) );
    885888                break;
    886889            default:
     
    11821185  ipc_addmsg( con->msgs, IPC_MSG_SUP,          smsg_sup );
    11831186  ipc_addmsg( con->msgs, IPC_MSG_UPLIMIT,      smsg_int );
     1187  ipc_addmsg( con->msgs, IPC_MSG_VERIFY,       smsg_tor );
    11841188
    11851189  ipc_setdefmsg( con->msgs, all_default );
  • trunk/gtk/main.c

    r5122 r5143  
    994994    TrTorrent * gtor = NULL;
    995995    gtk_tree_model_get( model, iter, MC_TORRENT, &gtor, -1 );
    996     tr_torrentRecheck( tr_torrent_handle( gtor ) );
     996    tr_torrentVerify( tr_torrent_handle( gtor ) );
    997997    g_object_unref( G_OBJECT( gtor ) );
    998998}
  • trunk/gtk/open-dialog.c

    r5126 r5143  
    108108    struct OpenData * data = gdata;
    109109    if( data->gtor )
    110         tr_torrentRecheck( tr_torrent_handle( data->gtor ) );
     110        tr_torrentVerify( tr_torrent_handle( data->gtor ) );
    111111}
    112112
  • trunk/libtransmission/ipcparse.c

    r5142 r5143  
    143143    { "supported",           2, IPC_MSG_SUP           },
    144144    { "uplimit",             2, IPC_MSG_UPLIMIT       },
     145    { "verify",              2, IPC_MSG_VERIFY        },
    145146    { "version",             1, IPC_MSG_VERSION       }
    146147};
  • trunk/libtransmission/ipcparse.h

    r5142 r5143  
    7474    IPC_MSG_SUP,
    7575    IPC_MSG_UPLIMIT,
     76    IPC_MSG_VERIFY,
    7677    IPC_MSG_VERSION,
    7778    IPC__MSG_COUNT,
  • trunk/libtransmission/torrent.c

    r5127 r5143  
    963963}
    964964void
    965 tr_torrentRecheck( tr_torrent * tor )
     965tr_torrentVerify( tr_torrent * tor )
    966966{
    967967    tr_globalLock( tor->handle );
  • trunk/libtransmission/transmission.h

    r5127 r5143  
    591591void tr_torrentRemoveSaved( tr_torrent * );
    592592
    593 void tr_torrentRecheck( tr_torrent * );
     593void tr_torrentVerify( tr_torrent * );
    594594
    595595/**
  • trunk/macosx/Controller.m

    r5078 r5143  
    10601060    [self applyFilter: nil];
    10611061    [self updateTorrentHistory];
     1062}
     1063
     1064- (void) verifyTorrents: (NSArray *) torrents
     1065{
     1066    // FIXME BentMyWookie
    10621067}
    10631068
     
    40794084}
    40804085
     4086- (BOOL) ipcVerifyTorrents: (NSArray *) torrents
     4087{
     4088    if (!torrents)
     4089        return NO;
     4090
     4091    [self startTorrents: torrents];
     4092    return YES;
     4093}
     4094
    40814095- (BOOL) ipcRemoveTorrents: (NSArray *) torrents
    40824096{
  • trunk/macosx/IPCController.h

    r4423 r5143  
    4545- (BOOL)           ipcStartTorrents: (NSArray *) torrents;
    4646- (BOOL)            ipcStopTorrents: (NSArray *) torrents;
     47- (BOOL)          ipcVerifyTorrents: (NSArray *) torrents;
    4748- (BOOL)          ipcRemoveTorrents: (NSArray *) torrents;
    4849/* XXX how to get and set prefs nicely? */
  • trunk/macosx/IPCController.m

    r5137 r5143  
    184184    ipc_addmsg( _funcs, IPC_MSG_SUP,          msg_sup       );
    185185    ipc_addmsg( _funcs, IPC_MSG_UPLIMIT,      msg_setint    );
     186    ipc_addmsg( _funcs, IPC_MSG_VERIFY,       msg_action    );
    186187    ipc_setdefmsg( _funcs, msg_default );
    187188
     
    642643        case IPC_MSG_STOP:
    643644            res = [delegate ipcStopTorrents: tors];
     645            break;
     646        case IPC_MSG_VERIFY:
     647            res = [delegate ipcVerifyTorrents: tors];
    644648            break;
    645649        default:
  • trunk/macosx/Torrent.m

    r5139 r5143  
    341341- (void) resetCache
    342342{
    343     tr_torrentRecheck(fHandle);
     343    tr_torrentVerify(fHandle);
    344344    [self update];
    345345}
Note: See TracChangeset for help on using the changeset viewer.