1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-03-05 19:18:19 +00:00

(libT RPC server): poll more frequently for new commands after we've received the first one.

This commit is contained in:
Charles Kerr 2008-06-05 02:07:17 +00:00
parent b92e88b29c
commit 32f71e1725
2 changed files with 15 additions and 4 deletions

View file

@ -27,11 +27,13 @@
#define MY_NAME "RPC Server" #define MY_NAME "RPC Server"
#define BUSY_INTERVAL_MSEC 30 #define BUSY_INTERVAL_MSEC 30
#define IDLE_INTERVAL_MSEC 1000 #define IDLE_INTERVAL_MSEC 100
#define UNUSED_INTERVAL_MSEC 1000
struct tr_rpc_server struct tr_rpc_server
{ {
int port; int port;
time_t lastRequestTime;
struct shttpd_ctx * ctx; struct shttpd_ctx * ctx;
tr_handle * session; tr_handle * session;
struct evbuffer * in; struct evbuffer * in;
@ -96,16 +98,21 @@ rpcPulse( int socket UNUSED, short action UNUSED, void * vserver )
int interval; int interval;
struct timeval tv; struct timeval tv;
tr_rpc_server * server = vserver; tr_rpc_server * server = vserver;
const time_t now = time( NULL );
assert( server ); assert( server );
shttpd_poll( server->ctx, 1 ); shttpd_poll( server->ctx, 1 );
/* set a timer for the next pulse */ /* set a timer for the next pulse */
if( EVBUFFER_LENGTH( server->in ) || EVBUFFER_LENGTH( server->out ) ) if( EVBUFFER_LENGTH( server->in ) || EVBUFFER_LENGTH( server->out ) ) {
interval = BUSY_INTERVAL_MSEC; interval = BUSY_INTERVAL_MSEC;
else server->lastRequestTime = now;
} else if( now - server->lastRequestTime < 300 ) {
interval = IDLE_INTERVAL_MSEC; interval = IDLE_INTERVAL_MSEC;
} else {
interval = UNUSED_INTERVAL_MSEC;
}
tv = tr_timevalMsec( interval ); tv = tr_timevalMsec( interval );
evtimer_add( &server->timer, &tv ); evtimer_add( &server->timer, &tv );
} }
@ -116,7 +123,7 @@ startServer( tr_rpc_server * server )
if( !server->ctx ) if( !server->ctx )
{ {
char ports[128]; char ports[128];
struct timeval tv = tr_timevalMsec( IDLE_INTERVAL_MSEC ); struct timeval tv = tr_timevalMsec( UNUSED_INTERVAL_MSEC );
server->ctx = shttpd_init( ); server->ctx = shttpd_init( );
snprintf( ports, sizeof( ports ), "%d", server->port ); snprintf( ports, sizeof( ports ), "%d", server->port );

View file

@ -36,6 +36,10 @@ int tr_rpcSetTest ( const tr_rpc_server * server,
const char * acl, const char * acl,
char ** allocme_errmsg ); char ** allocme_errmsg );
int tr_rpcTestACL ( const tr_rpc_server * server,
const char * acl,
char ** allocme_errmsg );
int tr_rpcSetACL ( tr_rpc_server * server, int tr_rpcSetACL ( tr_rpc_server * server,
const char * acl, const char * acl,
char ** allocme_errmsg ); char ** allocme_errmsg );