(trunk libT) #3836 "libevent2 support" -- finish moving to the libevent2 API mode. don't include the backwards-compatable API headers.

This commit is contained in:
Charles Kerr 2010-12-24 08:58:41 +00:00
parent 7ffca5e709
commit ae84dc70dd
17 changed files with 70 additions and 80 deletions

View File

@ -69,7 +69,7 @@ SOFTWARE.
#include <locale.h>
#include <stdarg.h> /* some 1.4.x versions of evutil.h need this */
#include <evutil.h> /* evutil_strtoll() */
#include <event2/util.h> /* evutil_strtoll() */
#include "JSON_parser.h"

View File

@ -264,7 +264,7 @@ tr_announcerInit( tr_session * session )
a->session = session;
a->slotsAvailable = MAX_CONCURRENT_TASKS;
a->lpdHouseKeepingAt = relaxUntil;
a->upkeepTimer = evtimer_new( NULL, onUpkeepTimer, a );
a->upkeepTimer = evtimer_new( session->event_base, onUpkeepTimer, a );
tr_timerAdd( a->upkeepTimer, UPKEEP_INTERVAL_SECS, 0 );
session->announcer = a;

View File

@ -1165,12 +1165,13 @@ handshakeTimeout( int foo UNUSED, short bar UNUSED, void * handshake )
}
tr_handshake*
tr_handshakeNew( tr_peerIo * io,
tr_encryption_mode encryptionMode,
handshakeDoneCB doneCB,
void * doneUserData )
tr_handshakeNew( tr_peerIo * io,
tr_encryption_mode encryptionMode,
handshakeDoneCB doneCB,
void * doneUserData )
{
tr_handshake * handshake;
tr_session * session = tr_peerIoGetSession( io );
handshake = tr_new0( tr_handshake, 1 );
handshake->io = io;
@ -1178,8 +1179,8 @@ tr_handshakeNew( tr_peerIo * io,
handshake->encryptionMode = encryptionMode;
handshake->doneCB = doneCB;
handshake->doneUserData = doneUserData;
handshake->session = tr_peerIoGetSession( io );
handshake->timeout_timer = evtimer_new( NULL, handshakeTimeout, handshake );
handshake->session = session;
handshake->timeout_timer = evtimer_new( session->event_base, handshakeTimeout, handshake );
tr_timerAdd( handshake->timeout_timer, HANDSHAKE_TIMEOUT_SEC, 0 );
tr_peerIoRef( io ); /* balanced by the unref in tr_handshakeFree */

View File

@ -44,8 +44,7 @@
#endif
#include <unistd.h>
#include <stdarg.h> /* some 1.4.x versions of evutil.h need this */
#include <evutil.h>
#include <event2/util.h>
#include "transmission.h"
#include "fdlimit.h"

View File

@ -394,8 +394,8 @@ tr_peerIoNew( tr_session * session,
io->timeCreated = tr_time( );
io->inbuf = evbuffer_new( );
io->outbuf = evbuffer_new( );
io->event_read = event_new( NULL, io->socket, EV_READ, event_read_cb, io );
io->event_write = event_new( NULL, io->socket, EV_WRITE, event_write_cb, io );
io->event_read = event_new( session->event_base, io->socket, EV_READ, event_read_cb, io );
io->event_write = event_new( session->event_base, io->socket, EV_WRITE, event_write_cb, io );
tr_bandwidthConstruct( &io->bandwidth, session, parent );
tr_bandwidthSetPeer( &io->bandwidth, io );
dbgmsg( io, "bandwidth is %p; its parent is %p", &io->bandwidth, parent );
@ -644,8 +644,8 @@ tr_peerIoReconnect( tr_peerIo * io )
event_del( io->event_read );
event_del( io->event_write );
io->socket = tr_netOpenPeerSocket( session, &io->addr, io->port, io->isSeed );
io->event_read = event_new( NULL, io->socket, EV_READ, event_read_cb, io );
io->event_write = event_new( NULL, io->socket, EV_WRITE, event_write_cb, io );
io->event_read = event_new( session->event_base, io->socket, EV_READ, event_read_cb, io );
io->event_write = event_new( session->event_base, io->socket, EV_WRITE, event_write_cb, io );
if( io->socket >= 0 )
{

View File

@ -16,7 +16,7 @@
#include <string.h> /* memcpy, memcmp, strstr */
#include <stdlib.h> /* qsort */
#include <event.h>
#include <event2/event.h>
#include "transmission.h"
#include "announcer.h"
@ -503,8 +503,7 @@ deleteTimer( struct event ** t )
{
if( *t != NULL )
{
evtimer_del( *t );
tr_free( *t );
event_free( *t );
*t = NULL;
}
}
@ -2042,10 +2041,9 @@ static void rechokePulse ( int, short, void * );
static void reconnectPulse ( int, short, void * );
static struct event *
createTimer( int msec, void (*callback)(int, short, void *), void * cbdata )
createTimer( tr_session * session, int msec, void (*callback)(int, short, void *), void * cbdata )
{
struct event * timer = tr_new0( struct event, 1 );
evtimer_set( timer, callback, cbdata );
struct event * timer = evtimer_new( session->event_base, callback, cbdata );
tr_timerAddMsec( timer, msec );
return timer;
}
@ -2054,16 +2052,16 @@ static void
ensureMgrTimersExist( struct tr_peerMgr * m )
{
if( m->atomTimer == NULL )
m->atomTimer = createTimer( ATOM_PERIOD_MSEC, atomPulse, m );
m->atomTimer = createTimer( m->session, ATOM_PERIOD_MSEC, atomPulse, m );
if( m->bandwidthTimer == NULL )
m->bandwidthTimer = createTimer( BANDWIDTH_PERIOD_MSEC, bandwidthPulse, m );
m->bandwidthTimer = createTimer( m->session, BANDWIDTH_PERIOD_MSEC, bandwidthPulse, m );
if( m->rechokeTimer == NULL )
m->rechokeTimer = createTimer( RECHOKE_PERIOD_MSEC, rechokePulse, m );
m->rechokeTimer = createTimer( m->session, RECHOKE_PERIOD_MSEC, rechokePulse, m );
if( m->refillUpkeepTimer == NULL )
m->refillUpkeepTimer = createTimer( REFILL_UPKEEP_PERIOD_MSEC, refillUpkeep, m );
if( m->refillUpkeepTimer == NULL )
m->refillUpkeepTimer = createTimer( m->session, REFILL_UPKEEP_PERIOD_MSEC, refillUpkeep, m );
}
void

View File

@ -2334,7 +2334,7 @@ tr_peerMsgsNew( struct tr_torrent * torrent,
m->outMessagesBatchedAt = 0;
m->outMessagesBatchPeriod = LOW_PRIORITY_INTERVAL_SECS;
m->incoming.block = evbuffer_new( );
m->pexTimer = evtimer_new( NULL, pexPulse, m );
m->pexTimer = evtimer_new( torrent->session->event_base, pexPulse, m );
peer->msgs = m;
tr_timerAdd( m->pexTimer, PEX_INTERVAL_SECS, 0 );

View File

@ -16,7 +16,7 @@
#include <sys/types.h>
#include <event.h>
#include <event2/event.h>
#include "transmission.h"
#include "natpmp.h"
@ -172,8 +172,7 @@ stop_timer( tr_shared * s )
{
if( s->timer != NULL )
{
evtimer_del( s->timer );
tr_free( s->timer );
event_free( s->timer );
s->timer = NULL;
}
}
@ -209,8 +208,7 @@ tr_sharedClose( tr_session * session )
static void
start_timer( tr_shared * s )
{
s->timer = tr_new0( struct event, 1 );
evtimer_set( s->timer, onTimer, s );
s->timer = evtimer_new( s->session->event_base, onTimer, s );
set_evtimer_from_status( s );
}

View File

@ -24,8 +24,10 @@
#include <zlib.h>
#endif
#include <event.h>
#include <evhttp.h>
#include <event2/buffer.h>
#include <event2/event.h>
#include <event2/http.h>
#include <event2/http_struct.h> /* TODO: eventually remove this */
#include "transmission.h"
#include "bencode.h"
@ -37,6 +39,7 @@
#include "ptrarray.h"
#include "rpcimpl.h"
#include "rpc-server.h"
#include "session.h"
#include "trevent.h"
#include "utils.h"
#include "web.h"
@ -160,7 +163,7 @@ extract_parts_from_multipart( const struct evkeyvalq * headers,
tr_ptrArray * setme_parts )
{
const char * content_type = evhttp_find_header( headers, "Content-Type" );
const char * in = (const char*) EVBUFFER_DATA( body );
const char * in = (const char*) evbuffer_pullup( body, -1 );
size_t inlen = evbuffer_get_length( body );
const char * boundary_key = "boundary=";
@ -277,7 +280,7 @@ handle_upload( struct evhttp_request * req,
struct evbuffer * json = evbuffer_new( );
tr_bencToBuf( &top, TR_FMT_JSON, json );
tr_rpc_request_exec_json( server->session,
EVBUFFER_DATA( json ),
evbuffer_pullup( json, -1 ),
evbuffer_get_length( json ),
NULL, NULL );
evbuffer_free( json );
@ -550,7 +553,7 @@ handle_rpc( struct evhttp_request * req,
else if( req->type == EVHTTP_REQ_POST )
{
tr_rpc_request_exec_json( server->session,
EVBUFFER_DATA( req->input_buffer ),
evbuffer_pullup( req->input_buffer, -1 ),
evbuffer_get_length( req->input_buffer ),
rpc_response_func, data );
}
@ -686,9 +689,8 @@ startServer( void * vserver )
{
addr.type = TR_AF_INET;
addr.addr.addr4 = server->bindAddress;
server->httpd = evhttp_new( tr_eventGetBase( server->session ) );
evhttp_bind_socket( server->httpd, tr_ntop_non_ts( &addr ),
server->port );
server->httpd = evhttp_new( server->session->event_base );
evhttp_bind_socket( server->httpd, tr_ntop_non_ts( &addr ), server->port );
evhttp_set_gencb( server->httpd, handle_request, server );
}

View File

@ -21,7 +21,7 @@
#include <zlib.h>
#endif
#include <event.h> /* evbuffer */
#include <event2/buffer.h>
#include "transmission.h"
#include "bencode.h"

View File

@ -21,7 +21,7 @@
#include <unistd.h> /* stat */
#include <dirent.h> /* opendir */
#include <event.h>
#include <event2/event.h>
//#define TR_SHOW_DEPRECATED
#include "transmission.h"
@ -143,7 +143,7 @@ struct tr_bindinfo
{
int socket;
tr_address addr;
struct event ev;
struct event * ev;
};
@ -152,7 +152,8 @@ close_bindinfo( struct tr_bindinfo * b )
{
if( ( b != NULL ) && ( b->socket >=0 ) )
{
event_del( &b->ev );
event_free( b->ev );
b->ev = NULL;
tr_netCloseSocket( b->socket );
}
}
@ -201,8 +202,8 @@ open_incoming_peer_port( tr_session * session )
b = session->public_ipv4;
b->socket = tr_netBindTCP( &b->addr, session->private_peer_port, FALSE );
if( b->socket >= 0 ) {
event_set( &b->ev, b->socket, EV_READ | EV_PERSIST, accept_incoming_peer, session );
event_add( &b->ev, NULL );
b->ev = event_new( session->event_base, b->socket, EV_READ | EV_PERSIST, accept_incoming_peer, session );
event_add( b->ev, NULL );
}
/* and do the exact same thing for ipv6, if it's supported... */
@ -210,8 +211,8 @@ open_incoming_peer_port( tr_session * session )
b = session->public_ipv6;
b->socket = tr_netBindTCP( &b->addr, session->private_peer_port, FALSE );
if( b->socket >= 0 ) {
event_set( &b->ev, b->socket, EV_READ | EV_PERSIST, accept_incoming_peer, session );
event_add( &b->ev, NULL );
b->ev = event_new( session->event_base, b->socket, EV_READ | EV_PERSIST, accept_incoming_peer, session );
event_add( b->ev, NULL );
}
}
}
@ -603,8 +604,8 @@ tr_sessionInitImpl( void * vdata )
tr_sessionGetDefaultSettings( data->configDir, &settings );
tr_bencMergeDicts( &settings, clientSettings );
session->nowTimer = tr_new0( struct event, 1 );
evtimer_set( session->nowTimer, onNowTimer, session );
assert( session->event_base != NULL );
session->nowTimer = evtimer_new( session->event_base, onNowTimer, session );
onNowTimer( 0, 0, session );
#ifndef WIN32
@ -633,8 +634,7 @@ tr_sessionInitImpl( void * vdata )
assert( tr_isSession( session ) );
session->saveTimer = tr_new0( struct event, 1 );
evtimer_set( session->saveTimer, onSaveTimer, session );
session->saveTimer = evtimer_new( session->event_base, onSaveTimer, session );
tr_timerAdd( session->saveTimer, SAVE_INTERVAL_SECS, 0 );
tr_announcerInit( session );
@ -1666,12 +1666,10 @@ sessionCloseImpl( void * vsession )
if( session->isDHTEnabled )
tr_dhtUninit( session );
evtimer_del( session->saveTimer );
tr_free( session->saveTimer );
event_free( session->saveTimer );
session->saveTimer = NULL;
evtimer_del( session->nowTimer );
tr_free( session->nowTimer );
event_free( session->nowTimer );
session->nowTimer = NULL;
tr_verifyClose( session );
@ -1755,7 +1753,7 @@ tr_sessionClose( tr_session * session )
{
dbgmsg( "calling event_loopbreak()" );
forced = TRUE;
event_loopbreak( );
event_base_loopbreak( session->event_base );
}
if( deadlineReached( deadline+3 ) )
{

View File

@ -37,6 +37,7 @@ uint8_t* tr_peerIdNew( void );
const uint8_t* tr_getPeerId( void );
struct event_base;
struct tr_address;
struct tr_announcer;
struct tr_bandwidth;
@ -117,7 +118,8 @@ struct tr_session
tr_preallocation_mode preallocationMode;
struct tr_event_handle * events;
struct event_base * event_base;
struct tr_event_handle * events;
uint16_t peerLimitPerTorrent;

View File

@ -23,8 +23,7 @@
#include <string.h> /* memcmp */
#include <stdlib.h> /* qsort */
#include <stdarg.h> /* some 1.4.x versions of evutil.h need this */
#include <evutil.h> /* evutil_vsnprintf() */
#include <event2/util.h> /* evutil_vsnprintf() */
#include "transmission.h"
#include "announcer.h"

View File

@ -400,12 +400,12 @@ tr_dhtInit(tr_session *ss, const tr_address * tr_addr)
cl->len6 = len6;
tr_threadNew( dht_bootstrap, cl );
dht_event = event_new( NULL, dht_socket, EV_READ, event_callback, NULL );
dht_event = event_new( session->event_base, dht_socket, EV_READ, event_callback, NULL );
tr_timerAdd( dht_event, 0, tr_cryptoWeakRandInt( 1000000 ) );
if( dht6_socket >= 0 )
{
dht6_event = event_new( NULL, dht6_socket, EV_READ, event_callback, NULL );
dht6_event = event_new( session->event_base, dht6_socket, EV_READ, event_callback, NULL );
tr_timerAdd( dht6_event, 0, tr_cryptoWeakRandInt( 1000000 ) );
}

View File

@ -338,7 +338,7 @@ int tr_lpdInit( tr_session* ss, tr_address* tr_addr UNUSED )
/* Note: lpd_unsolicitedMsgCounter remains 0 until the first timeout event, thus
* any announcement received during the initial interval will be discarded. */
lpd_event = event_new( NULL, lpd_socket, EV_READ | EV_PERSIST, event_callback, NULL );
lpd_event = event_new( ss->event_base, lpd_socket, EV_READ | EV_PERSIST, event_callback, NULL );
event_add( lpd_event, NULL );
tr_ndbg( "LPD", "Local Peer Discovery initialised" );

View File

@ -18,7 +18,7 @@
#include <signal.h>
#include <event.h>
#include <event2/event.h>
#include "transmission.h"
#include "net.h"
@ -143,7 +143,7 @@ typedef struct tr_event_handle
tr_session * session;
tr_thread * thread;
struct event_base * base;
struct event pipeEvent;
struct event * pipeEvent;
}
tr_event_handle;
@ -198,7 +198,7 @@ readFromPipe( int fd,
case '\0': /* eof */
{
dbgmsg( "pipe eof reached... removing event listener" );
event_del( &eh->pipeEvent );
event_free( eh->pipeEvent );
break;
}
@ -222,6 +222,7 @@ logFunc( int severity, const char * message )
static void
libeventThreadFunc( void * veh )
{
struct event_base * base;
tr_event_handle * eh = veh;
#ifndef WIN32
@ -229,21 +230,23 @@ libeventThreadFunc( void * veh )
signal( SIGPIPE, SIG_IGN );
#endif
eh->base = event_init( );
base = event_base_new( );
eh->base = base;
eh->session->event_base = base;
eh->session->events = eh;
/* listen to the pipe's read fd */
event_set( &eh->pipeEvent, eh->fds[0], EV_READ | EV_PERSIST, readFromPipe, veh );
event_add( &eh->pipeEvent, NULL );
eh->pipeEvent = event_new( base, eh->fds[0], EV_READ | EV_PERSIST, readFromPipe, veh );
event_add( eh->pipeEvent, NULL );
event_set_log_callback( logFunc );
/* loop until all the events are done */
while( !eh->die )
event_dispatch( );
event_base_dispatch( base );
/* shut down the thread */
tr_lockFree( eh->lock );
event_base_free( eh->base );
event_base_free( base );
eh->session->events = NULL;
tr_free( eh );
tr_dbg( "Closing libevent thread" );
@ -320,11 +323,3 @@ tr_runInEventThread( tr_session * session,
tr_lockUnlock( lock );
}
}
struct event_base *
tr_eventGetBase( tr_session * session )
{
assert( tr_isSession( session ) );
return session->events->base;
}

View File

@ -31,6 +31,4 @@ tr_bool tr_amInEventThread( const tr_session * );
void tr_runInEventThread( tr_session *, void func( void* ), void * user_data );
struct event_base * tr_eventGetBase( tr_session * );
#endif