Changeset 10800
- Timestamp:
- Jun 19, 2010, 2:33:10 PM (12 years ago)
- Location:
- trunk/libtransmission
- Files:
-
- 2 deleted
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/Makefile.am
r10798 r10800 45 45 port-forwarding.c \ 46 46 ptrarray.c \ 47 publish.c \48 47 ratecontrol.c \ 49 48 resume.c \ … … 97 96 port-forwarding.h \ 98 97 ptrarray.h \ 99 publish.h \100 98 ratecontrol.h \ 101 99 resume.h \ -
trunk/libtransmission/announcer.c
r10741 r10800 22 22 #include "net.h" 23 23 #include "ptrarray.h" 24 #include "publish.h"25 24 #include "session.h" 26 25 #include "tr-dht.h" … … 531 530 { 532 531 tr_ptrArray tiers; 533 tr_publisher publisher; 532 tr_tracker_callback * callback; 533 void * callbackData; 534 534 } 535 535 tr_torrent_tiers; … … 540 540 tr_torrent_tiers * tiers = tr_new0( tr_torrent_tiers, 1 ); 541 541 tiers->tiers = TR_PTR_ARRAY_INIT; 542 tiers->publisher = TR_PUBLISHER_INIT;543 542 return tiers; 544 543 } … … 547 546 tiersFree( tr_torrent_tiers * tiers ) 548 547 { 549 tr_publisherDestruct( &tiers->publisher );550 548 tr_ptrArrayDestruct( &tiers->tiers, tierFree ); 551 549 tr_free( tiers ); … … 594 592 event.text = msg; 595 593 event.tracker = tier->currentTracker ? tier->currentTracker->announce : NULL; 596 tr_publisherPublish( &tiers->publisher, tier, &event ); 594 595 if( tiers->callback != NULL ) 596 tiers->callback( tier->tor, &event, tiers->callbackData ); 597 597 } 598 598 } … … 641 641 e.compactLen = compactLen; 642 642 643 tr_publisherPublish( &tier->tor->tiers->publisher, tier, &e ); 643 if( tier->tor->tiers->callback != NULL ) 644 tier->tor->tiers->callback( tier->tor, &e, NULL ); 644 645 645 646 return compactLen / 6; … … 845 846 846 847 tr_torrent_tiers * 847 tr_announcerAddTorrent( tr_announcer * announcer, tr_torrent * tor ) 848 tr_announcerAddTorrent( tr_announcer * announcer, tr_torrent * tor, 849 tr_tracker_callback * callback, void * callbackData ) 848 850 { 849 851 tr_torrent_tiers * tiers; … … 853 855 854 856 tiers = tiersNew( ); 857 tiers->callback = callback; 858 tiers->callbackData = callbackData; 855 859 856 860 addTorrentToTier( announcer, tiers, tor ); … … 928 932 /* cleanup */ 929 933 tr_ptrArrayDestruct( &oldTiers, tierFree ); 930 }931 932 tr_publisher_tag933 tr_announcerSubscribe( struct tr_torrent_tiers * tiers,934 tr_delivery_func func,935 void * userData )936 {937 return tr_publisherSubscribe( &tiers->publisher, func, userData );938 }939 940 void941 tr_announcerUnsubscribe( struct tr_torrent_tiers * tiers,942 tr_publisher_tag tag )943 {944 if( tiers )945 tr_publisherUnsubscribe( &tiers->publisher, tag );946 934 } 947 935 -
trunk/libtransmission/announcer.h
r10664 r10800 19 19 20 20 #include "transmission.h" 21 #include "publish.h"22 21 23 22 struct tr_announcer; … … 56 55 tr_tracker_event; 57 56 57 typedef void tr_tracker_callback ( tr_torrent * tor, 58 const tr_tracker_event * event, 59 void * client_data ); 60 58 61 /** 59 62 *** Session ctor/dtor … … 68 71 **/ 69 72 70 struct tr_torrent_tiers * tr_announcerAddTorrent( struct tr_announcer *, 71 tr_torrent * ); 73 struct tr_torrent_tiers * tr_announcerAddTorrent( struct tr_announcer *, 74 tr_torrent * torrent, 75 tr_tracker_callback * cb, 76 void * cbdata ); 72 77 73 78 tr_bool tr_announcerHasBacklog( const struct tr_announcer * ); 74 79 75 80 void tr_announcerResetTorrent( struct tr_announcer*, tr_torrent* ); 76 77 tr_publisher_tag tr_announcerSubscribe( struct tr_torrent_tiers * tiers,78 tr_delivery_func func,79 void * userData );80 81 void tr_announcerUnsubscribe( struct tr_torrent_tiers * tiers,82 tr_publisher_tag tag );83 81 84 82 void tr_announcerRemoveTorrent( struct tr_announcer * , -
trunk/libtransmission/peer-common.h
r10694 r10800 85 85 tr_peer_event; 86 86 87 struct tr_peer; 88 89 typedef void tr_peer_callback( struct tr_peer * peer, 90 const tr_peer_event * event, 91 void * client_data ); 92 87 93 #ifdef WIN32 88 94 #define EMSGSIZE WSAEMSGSIZE -
trunk/libtransmission/peer-mgr.c
r10798 r10800 393 393 394 394 if( peer->msgs != NULL ) 395 {396 tr_peerMsgsUnsubscribe( peer->msgs, peer->msgsTag );397 395 tr_peerMsgsFree( peer->msgs ); 398 }399 396 400 397 tr_peerIoClear( peer->io ); … … 458 455 } 459 456 460 static void peerCallbackFunc( void * vpeer, void * vevent, void * vt);457 static void peerCallbackFunc( tr_peer *, const tr_peer_event *, void * ); 461 458 462 459 static Torrent* … … 1339 1336 1340 1337 static void 1341 peerCallbackFunc( void * vpeer, void * vevent, void * vt ) 1342 { 1343 tr_peer * peer = vpeer; /* may be NULL if peer is a webseed */ 1338 peerCallbackFunc( tr_peer * peer, const tr_peer_event * e, void * vt ) 1339 { 1344 1340 Torrent * t = vt; 1345 const tr_peer_event * e = vevent;1346 1341 1347 1342 torrentLock( t ); … … 1707 1702 balanced by our unref in peerDestructor() */ 1708 1703 tr_peerIoSetParent( peer->io, t->tor->bandwidth ); 1709 tr_peerMsgsNew( t->tor, peer, peerCallbackFunc, t , &peer->msgsTag);1704 tr_peerMsgsNew( t->tor, peer, peerCallbackFunc, t ); 1710 1705 1711 1706 success = TRUE; -
trunk/libtransmission/peer-mgr.h
r10751 r10800 29 29 #include "net.h" 30 30 #include "peer-common.h" /* struct peer_request */ 31 #include "publish.h" /* tr_publisher_tag */32 31 33 32 /** … … 125 124 126 125 struct tr_peermsgs * msgs; 127 tr_publisher_tag msgsTag;128 126 } 129 127 tr_peer; -
trunk/libtransmission/peer-msgs.c
r10798 r10800 202 202 tr_torrent * torrent; 203 203 204 tr_publisher publisher; 204 tr_peer_callback * callback; 205 void * callbackData; 205 206 206 207 struct evbuffer * outMessages; /* all the non-piece messages */ … … 471 472 assert( msgs->peer->msgs == msgs ); 472 473 473 tr_publisherPublish( &msgs->publisher, msgs->peer, e ); 474 if( msgs->callback != NULL ) 475 msgs->callback( msgs->peer, e, msgs->callbackData ); 474 476 } 475 477 … … 2316 2318 2317 2319 tr_peermsgs* 2318 tr_peerMsgsNew( struct tr_torrent * torrent, 2319 struct tr_peer * peer, 2320 tr_delivery_func func, 2321 void * userData, 2322 tr_publisher_tag * setme ) 2320 tr_peerMsgsNew( struct tr_torrent * torrent, 2321 struct tr_peer * peer, 2322 tr_peer_callback * callback, 2323 void * callbackData ) 2323 2324 { 2324 2325 tr_peermsgs * m; … … 2328 2329 2329 2330 m = tr_new0( tr_peermsgs, 1 ); 2330 m->publisher = TR_PUBLISHER_INIT; 2331 m->callback = callback; 2332 m->callbackData = callbackData; 2331 2333 m->peer = peer; 2332 2334 m->torrent = torrent; … … 2344 2346 peer->msgs = m; 2345 2347 2346 *setme = tr_publisherSubscribe( &m->publisher, func, userData );2347 2348 2348 if( tr_peerIoSupportsLTEP( peer->io ) ) 2349 2349 sendLtepHandshake( m ); … … 2372 2372 { 2373 2373 evtimer_del( &msgs->pexTimer ); 2374 tr_publisherDestruct( &msgs->publisher );2375 2374 2376 2375 evbuffer_free( msgs->incoming.block ); … … 2383 2382 } 2384 2383 } 2385 2386 void2387 tr_peerMsgsUnsubscribe( tr_peermsgs * peer,2388 tr_publisher_tag tag )2389 {2390 tr_publisherUnsubscribe( &peer->publisher, tag );2391 } -
trunk/libtransmission/peer-msgs.h
r10332 r10800 20 20 #include <inttypes.h> 21 21 #include "peer-common.h" 22 #include "publish.h"23 22 24 23 struct tr_torrent; … … 33 32 typedef struct tr_peermsgs tr_peermsgs; 34 33 35 tr_peermsgs* tr_peerMsgsNew( struct tr_torrent * torrent, 36 struct tr_peer * peer, 37 tr_delivery_func func, 38 void * user, 39 tr_publisher_tag * setme ); 40 34 tr_peermsgs* tr_peerMsgsNew( struct tr_torrent * torrent, 35 struct tr_peer * peer, 36 tr_peer_callback * callback, 37 void * callback_data ); 41 38 42 39 void tr_peerMsgsSetChoke( tr_peermsgs *, int doChoke ); … … 56 53 void tr_peerMsgsFree( tr_peermsgs* ); 57 54 58 void tr_peerMsgsUnsubscribe( tr_peermsgs * peer,59 tr_publisher_tag tag );60 61 55 size_t tr_generateAllowedSet( tr_piece_index_t * setmePieces, 62 56 size_t desiredSetSize, -
trunk/libtransmission/torrent.c
r10798 r10800 361 361 362 362 static void 363 onTrackerResponse( void * tracker UNUSED, 364 void * vevent, 365 void * user_data ) 366 { 367 tr_torrent * tor = user_data; 368 tr_tracker_event * event = vevent; 369 363 onTrackerResponse( tr_torrent * tor, const tr_tracker_event * event, void * unused UNUSED ) 364 { 370 365 switch( event->messageType ) 371 366 { … … 728 723 } 729 724 730 tor->tiers = tr_announcerAddTorrent( tor->session->announcer, tor ); 731 tor->tiersSubscription = tr_announcerSubscribe( tor->tiers, onTrackerResponse, tor ); 725 tor->tiers = tr_announcerAddTorrent( tor->session->announcer, tor, onTrackerResponse, NULL ); 732 726 733 727 if( doStart ) … … 1315 1309 tr_cpDestruct( &tor->completion ); 1316 1310 1317 tr_announcerUnsubscribe( tor->tiers, tor->tiersSubscription );1318 1311 tr_announcerRemoveTorrent( session->announcer, tor ); 1319 1312 -
trunk/libtransmission/torrent.h
r10774 r10800 195 195 196 196 struct tr_torrent_tiers * tiers; 197 struct tr_publisher_tag * tiersSubscription;198 197 199 198 time_t dhtAnnounceAt; -
trunk/libtransmission/webseed.c
r10500 r10800 32 32 char * url; 33 33 34 tr_ delivery_func* callback;35 void * callback_userdata;34 tr_peer_callback * callback; 35 void * callback_data; 36 36 37 37 tr_piece_index_t pieceIndex; … … 53 53 54 54 static void 55 publish( tr_webseed * w, 56 tr_peer_event * e ) 57 { 58 if( w->callback ) 59 w->callback( NULL, e, w->callback_userdata ); 55 publish( tr_webseed * w, tr_peer_event * e ) 56 { 57 if( w->callback != NULL ) 58 w->callback( NULL, e, w->callback_data ); 60 59 } 61 60 … … 237 236 tr_webseed* 238 237 tr_webseedNew( struct tr_torrent * torrent, 239 const char *url,240 tr_ delivery_funccallback,241 void * callback_userdata )238 const char * url, 239 tr_peer_callback * callback, 240 void * callback_data ) 242 241 { 243 242 tr_webseed * w = tr_new0( tr_webseed, 1 ); … … 248 247 w->url = tr_strdup( url ); 249 248 w->callback = callback; 250 w->callback_ userdata = callback_userdata;249 w->callback_data = callback_data; 251 250 tr_rcConstruct( &w->rateDown ); 252 /*fprintf( stderr, "w->callback_userdata is %p\n", w->callback_userdata );*/253 251 return w; 254 252 } -
trunk/libtransmission/webseed.h
r9868 r10800 21 21 22 22 #include "peer-common.h" 23 #include "publish.h"24 23 25 24 tr_webseed* tr_webseedNew( struct tr_torrent * torrent, 26 const char *url,27 tr_ delivery_func delivery_func,28 void * delivery_userdata );25 const char * url, 26 tr_peer_callback * callback, 27 void * callback_data ); 29 28 30 29 void tr_webseedFree( tr_webseed * );
Note: See TracChangeset
for help on using the changeset viewer.