Changeset 11686


Ignore:
Timestamp:
Jan 15, 2011, 6:12:45 PM (11 years ago)
Author:
jordan
Message:

#3686 "add rpc command to cleanly shutdown daemon" -- added for libT, tr-daemon, tr-gtk, tr-remote, and the rpc spec

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/daemon.c

    r11682 r11686  
    330330}
    331331
     332static tr_rpc_callback_status
     333on_rpc_callback( tr_session            * session UNUSED,
     334                 tr_rpc_callback_type    type,
     335                 struct tr_torrent     * tor UNUSED,
     336                 void                  * user_data UNUSED )
     337{
     338    if( type == TR_RPC_SESSION_CLOSE )
     339        closing = TRUE;
     340    return TR_RPC_OK;
     341}
     342
    332343int
    333344main( int argc, char ** argv )
     
    484495    tr_formatter_speed_init( SPEED_K, SPEED_K_STR, SPEED_M_STR, SPEED_G_STR, SPEED_T_STR );
    485496    mySession = tr_sessionInit( "daemon", configDir, TRUE, &settings );
     497    tr_sessionSetRPCCallback( mySession, on_rpc_callback, NULL );
    486498    tr_ninf( NULL, "Using settings from \"%s\"", configDir );
    487499    tr_sessionSaveSettings( mySession, configDir, &settings );
  • trunk/daemon/remote.c

    r11627 r11686  
    242242    { 910, "encryption-required",    "Encrypt all peer connections", "er", 0, NULL },
    243243    { 911, "encryption-preferred",   "Prefer encrypted peer connections", "ep", 0, NULL },
    244     { 912, "encryption-tolerated",   "Prefer unencrypted peer connections", "et", 0, NULL },
     244    { 850, "exit",                   "Tell the transmission session to shut down", NULL, 0, NULL },
    245245    { 940, "files",                  "List the current torrent(s)' files", "f",  0, NULL },
    246246    { 'g', "get",                    "Mark files for download", "g",  1, "<files>" },
     
    342342    MODE_SESSION_GET           = (1<<10),
    343343    MODE_SESSION_STATS         = (1<<11),
    344     MODE_BLOCKLIST_UPDATE      = (1<<12),
    345     MODE_PORT_TEST             = (1<<13)
     344    MODE_SESSION_CLOSE         = (1<<12),
     345    MODE_BLOCKLIST_UPDATE      = (1<<13),
     346    MODE_PORT_TEST             = (1<<14)
    346347};
    347348
     
    445446        case 'w': /* download-dir */
    446447            return MODE_SESSION_SET | MODE_TORRENT_ADD;
     448
     449        case 850: /* session-close */
     450            return MODE_SESSION_CLOSE;
    447451
    448452        case 963: /* blocklist-update */
     
    21822186                break;
    21832187            }
     2188            case 850:
     2189            {
     2190                tr_benc * top = tr_new0( tr_benc, 1 );
     2191                tr_bencInitDict( top, 1 );
     2192                tr_bencDictAddStr( top, "method", "session-close" );
     2193                status |= flush( rpcurl, &top );
     2194                break;
     2195            }
    21842196            case 963:
    21852197            {
  • trunk/daemon/transmission-remote.1

    r11626 r11686  
    2424.Op Fl e Ar size
    2525.Op Fl er | ep | et
     26.Op Fl -exit
    2627.Op Fl f
    2728.Op Fl g Ar files
     
    135136.It Fl et Fl -encryption-tolerated
    136137Prefer unencrypted peer connections.
     138.It Fl -exit
     139Tell the Transmission to initiate a shutdown.
    137140.It Fl f Fl -files
    138141Get a file list for the current torrent(s)
  • trunk/extras/rpc-spec.txt

    r11627 r11686  
    527527   Response arguments: a bool, "port-is-open"
    528528
     5294.5.  Session shutdown
     530
     531   This method tells the transmission session to shut down.
     532
     533   Method-name: "session-close"
     534   Request arguments: none
     535   Response arguments: none
     536
    5295375.0.  Protocol Versions
    530538
     
    646654   ------+---------+-----------+----------------+-------------------------------
    647655   12    | 2.20    | yes       | session-get    | new arg "download-dir-free-space"
     656         |         | yes       | session-close  | new method
  • trunk/gtk/main.c

    r11626 r11686  
    482482    switch( type )
    483483    {
     484        case TR_RPC_SESSION_CLOSE:
     485            gtr_action_activate( "quit" );
     486            break;
     487
    484488        case TR_RPC_TORRENT_ADDED:
    485489            tr_core_add_torrent( cbdata->core, tr_torrent_new_preexisting( tor ), TRUE );
  • trunk/libtransmission/rpcimpl.c

    r11636 r11686  
    16251625***/
    16261626
     1627static const char*
     1628sessionClose( tr_session               * session,
     1629              tr_benc                  * args_in UNUSED,
     1630              tr_benc                  * args_out UNUSED,
     1631              struct tr_rpc_idle_data  * idle_data UNUSED )
     1632{
     1633    notify( session, TR_RPC_SESSION_CLOSE, NULL );
     1634    return NULL;
     1635}
     1636
     1637/***
     1638****
     1639***/
     1640
    16271641typedef const char* ( *handler )( tr_session*, tr_benc*, tr_benc*, struct tr_rpc_idle_data * );
    16281642
     
    16371651    { "port-test",             FALSE, portTest            },
    16381652    { "blocklist-update",      FALSE, blocklistUpdate     },
     1653    { "session-close",         TRUE,  sessionClose        },
    16391654    { "session-get",           TRUE,  sessionGet          },
    16401655    { "session-set",           TRUE,  sessionSet          },
  • trunk/libtransmission/transmission.h

    r11681 r11686  
    499499    TR_RPC_TORRENT_CHANGED, /* catch-all for the "torrent-set" rpc method */
    500500    TR_RPC_TORRENT_MOVED,
    501     TR_RPC_SESSION_CHANGED
     501    TR_RPC_SESSION_CHANGED,
     502    TR_RPC_SESSION_CLOSE
    502503}
    503504tr_rpc_callback_type;
Note: See TracChangeset for help on using the changeset viewer.