(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:
parent
7ffca5e709
commit
ae84dc70dd
|
@ -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"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 )
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 );
|
||||
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
||||
|
|
|
@ -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 );
|
||||
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include <zlib.h>
|
||||
#endif
|
||||
|
||||
#include <event.h> /* evbuffer */
|
||||
#include <event2/buffer.h>
|
||||
|
||||
#include "transmission.h"
|
||||
#include "bencode.h"
|
||||
|
|
|
@ -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 ) )
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 ) );
|
||||
}
|
||||
|
||||
|
|
|
@ -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" );
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue