#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"
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;
}
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;
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 */
#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"
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 );
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 )
{
#include <string.h> /* memcpy, memcmp, strstr */
#include <stdlib.h> /* qsort */
-#include <event.h>
+#include <event2/event.h>
#include "transmission.h"
#include "announcer.h"
{
if( *t != NULL )
{
- evtimer_del( *t );
- tr_free( *t );
+ event_free( *t );
*t = NULL;
}
}
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;
}
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
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 );
#include <sys/types.h>
-#include <event.h>
+#include <event2/event.h>
#include "transmission.h"
#include "natpmp.h"
{
if( s->timer != NULL )
{
- evtimer_del( s->timer );
- tr_free( s->timer );
+ event_free( s->timer );
s->timer = NULL;
}
}
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 );
}
#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"
#include "ptrarray.h"
#include "rpcimpl.h"
#include "rpc-server.h"
+#include "session.h"
#include "trevent.h"
#include "utils.h"
#include "web.h"
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=";
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 );
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 );
}
{
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 );
}
#include <zlib.h>
#endif
-#include <event.h> /* evbuffer */
+#include <event2/buffer.h>
#include "transmission.h"
#include "bencode.h"
#include <unistd.h> /* stat */
#include <dirent.h> /* opendir */
-#include <event.h>
+#include <event2/event.h>
//#define TR_SHOW_DEPRECATED
#include "transmission.h"
{
int socket;
tr_address addr;
- struct event ev;
+ struct event * ev;
};
{
if( ( b != NULL ) && ( b->socket >=0 ) )
{
- event_del( &b->ev );
+ event_free( b->ev );
+ b->ev = NULL;
tr_netCloseSocket( b->socket );
}
}
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... */
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 );
}
}
}
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
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 );
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 );
{
dbgmsg( "calling event_loopbreak()" );
forced = TRUE;
- event_loopbreak( );
+ event_base_loopbreak( session->event_base );
}
if( deadlineReached( deadline+3 ) )
{
const uint8_t* tr_getPeerId( void );
+struct event_base;
struct tr_address;
struct tr_announcer;
struct tr_bandwidth;
tr_preallocation_mode preallocationMode;
- struct tr_event_handle * events;
+ struct event_base * event_base;
+ struct tr_event_handle * events;
uint16_t peerLimitPerTorrent;
#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"
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 ) );
}
/* 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" );
#include <signal.h>
-#include <event.h>
+#include <event2/event.h>
#include "transmission.h"
#include "net.h"
tr_session * session;
tr_thread * thread;
struct event_base * base;
- struct event pipeEvent;
+ struct event * pipeEvent;
}
tr_event_handle;
case '\0': /* eof */
{
dbgmsg( "pipe eof reached... removing event listener" );
- event_del( &eh->pipeEvent );
+ event_free( eh->pipeEvent );
break;
}
static void
libeventThreadFunc( void * veh )
{
+ struct event_base * base;
tr_event_handle * eh = veh;
#ifndef WIN32
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" );
tr_lockUnlock( lock );
}
}
-
-struct event_base *
-tr_eventGetBase( tr_session * session )
-{
- assert( tr_isSession( session ) );
-
- return session->events->base;
-}
void tr_runInEventThread( tr_session *, void func( void* ), void * user_data );
-struct event_base * tr_eventGetBase( tr_session * );
-
#endif