1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-02-01 03:43:43 +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 BUSY_INTERVAL_MSEC 30
#define IDLE_INTERVAL_MSEC 1000
#define IDLE_INTERVAL_MSEC 100
#define UNUSED_INTERVAL_MSEC 1000
struct tr_rpc_server
{
int port;
time_t lastRequestTime;
struct shttpd_ctx * ctx;
tr_handle * session;
struct evbuffer * in;
@ -96,16 +98,21 @@ rpcPulse( int socket UNUSED, short action UNUSED, void * vserver )
int interval;
struct timeval tv;
tr_rpc_server * server = vserver;
const time_t now = time( NULL );
assert( server );
shttpd_poll( server->ctx, 1 );
/* 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;
else
server->lastRequestTime = now;
} else if( now - server->lastRequestTime < 300 ) {
interval = IDLE_INTERVAL_MSEC;
} else {
interval = UNUSED_INTERVAL_MSEC;
}
tv = tr_timevalMsec( interval );
evtimer_add( &server->timer, &tv );
}
@ -116,7 +123,7 @@ startServer( tr_rpc_server * server )
if( !server->ctx )
{
char ports[128];
struct timeval tv = tr_timevalMsec( IDLE_INTERVAL_MSEC );
struct timeval tv = tr_timevalMsec( UNUSED_INTERVAL_MSEC );
server->ctx = shttpd_init( );
snprintf( ports, sizeof( ports ), "%d", server->port );

View file

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