threads. gotta love 'em.
This commit is contained in:
parent
af686b3297
commit
6ed2d25af7
|
@ -75,19 +75,32 @@ didWriteWrapper( struct bufferevent * e, void * userData )
|
|||
static void
|
||||
canReadWrapper( struct bufferevent * e, void * userData )
|
||||
{
|
||||
int done = 0;
|
||||
tr_peerIo * c = (tr_peerIo *) userData;
|
||||
tr_handle * handle = c->handle;
|
||||
|
||||
if( c->canRead == NULL )
|
||||
return;
|
||||
|
||||
for( ;; ) {
|
||||
tr_globalLock( handle );
|
||||
|
||||
while( !done )
|
||||
{
|
||||
const int ret = (*c->canRead)( e, c->userData );
|
||||
switch( ret ) {
|
||||
case READ_AGAIN: if( EVBUFFER_LENGTH( e->input ) ) continue; /* note fall-through */
|
||||
case READ_MORE: tr_peerIoSetIOMode( c, EV_READ, 0 ); return; break;
|
||||
case READ_DONE: return;
|
||||
|
||||
switch( ret )
|
||||
{
|
||||
case READ_AGAIN:
|
||||
if( EVBUFFER_LENGTH( e->input ) )
|
||||
continue;
|
||||
case READ_MORE:
|
||||
tr_peerIoSetIOMode( c, EV_READ, 0 );
|
||||
case READ_DONE:
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
|
||||
tr_globalUnlock( handle );
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -1044,10 +1044,10 @@ freeWhenStopped( void * vtor )
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
tr_torrentStopImpl( void * vtor )
|
||||
void
|
||||
tr_torrentStop( tr_torrent * tor )
|
||||
{
|
||||
tr_torrent * tor = vtor;
|
||||
tr_globalLock( tor->handle );
|
||||
|
||||
switch( tor->runStatus )
|
||||
{
|
||||
|
@ -1069,21 +1069,21 @@ tr_torrentStopImpl( void * vtor )
|
|||
case TR_RUN_STOPPED:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
tr_torrentStop( tr_torrent * tor )
|
||||
{
|
||||
tr_torrentStopImpl( tor );
|
||||
tr_globalUnlock( tor->handle );
|
||||
}
|
||||
|
||||
void
|
||||
tr_torrentClose( tr_torrent * tor )
|
||||
{
|
||||
tr_globalLock( tor->handle );
|
||||
|
||||
tor->runStatusToSave = tor->runStatus;
|
||||
tor->runStatusToSaveIsSet = TRUE;
|
||||
tr_torrentStop( tor );
|
||||
tr_timerNew( tor->handle, freeWhenStopped, tor, 250 );
|
||||
|
||||
tr_globalUnlock( tor->handle );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue