Changeset 10095
- Timestamp:
- Feb 5, 2010, 1:16:30 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/announcer.c
r10090 r10095 57 57 KEYLEN = 8, 58 58 59 /* how many scrapes we allow at one time */ 60 MAX_CONCURRENT_SCRAPES = 48, 61 62 /* how many announces we allow at one time */ 63 MAX_CONCURRENT_ANNOUNCES = 48, 59 /* how many web tasks we allow at one time */ 60 MAX_CONCURRENT_TASKS = 48, 64 61 65 62 /* if a tracker takes more than this long to respond, … … 206 203 tr_session * session; 207 204 struct event * upkeepTimer; 208 int announceSlotsAvailable; 209 int scrapeSlotsAvailable; 205 int slotsAvailable; 210 206 } 211 207 tr_announcer; … … 214 210 tr_announcerHasBacklog( const struct tr_announcer * announcer ) 215 211 { 216 return ( announcer->scrapeSlotsAvailable < 1 ) 217 || ( announcer->announceSlotsAvailable < 1 ); 212 return announcer->slotsAvailable < 1; 218 213 } 219 214 … … 249 244 a->stops = TR_PTR_ARRAY_INIT; 250 245 a->session = session; 251 a->announceSlotsAvailable = MAX_CONCURRENT_ANNOUNCES; 252 a->scrapeSlotsAvailable = MAX_CONCURRENT_SCRAPES; 246 a->slotsAvailable = MAX_CONCURRENT_TASKS; 253 247 a->upkeepTimer = tr_new0( struct event, 1 ); 254 248 evtimer_set( a->upkeepTimer, onUpkeepTimer, a ); … … 1336 1330 if( announcer != NULL ) 1337 1331 { 1338 ++announcer-> announceSlotsAvailable;1332 ++announcer->slotsAvailable; 1339 1333 } 1340 1334 … … 1385 1379 tier->isAnnouncing = TRUE; 1386 1380 tier->lastAnnounceStartTime = now; 1387 --announcer-> announceSlotsAvailable;1381 --announcer->slotsAvailable; 1388 1382 tr_webRun( announcer->session, url, NULL, onAnnounceDone, data ); 1389 1383 … … 1471 1465 1472 1466 if( announcer ) 1473 ++announcer->s crapeSlotsAvailable;1467 ++announcer->slotsAvailable; 1474 1468 1475 1469 if( announcer && tier ) … … 1563 1557 tier->isScraping = TRUE; 1564 1558 tier->lastScrapeStartTime = now; 1565 --announcer->s crapeSlotsAvailable;1559 --announcer->slotsAvailable; 1566 1560 dbgmsg( tier, "scraping \"%s\"", url ); 1567 1561 tr_webRun( announcer->session, url, NULL, onScrapeDone, data ); … … 1598 1592 tierNeedsToScrape( const tr_tier * tier, const time_t now ) 1599 1593 { 1600 return tier->isRunning 1601 && !tier->isScraping 1594 return ( !tier->isScraping ) 1602 1595 && ( tier->scrapeAt != 0 ) 1603 1596 && ( tier->scrapeAt <= now ) … … 1609 1602 announceMore( tr_announcer * announcer ) 1610 1603 { 1611 const tr_bool canAnnounce = announcer->announceSlotsAvailable > 0;1612 const tr_bool canScrape = announcer->scrapeSlotsAvailable > 0;1613 1604 tr_torrent * tor = NULL; 1614 1605 const time_t now = tr_time( ); 1615 1606 1616 if( announcer-> announceSlotsAvailable > 0 )1607 if( announcer->slotsAvailable > 0 ) 1617 1608 { 1618 1609 int i; … … 1627 1618 for( i=0; i<n; ++i ) { 1628 1619 tr_tier * tier = tr_ptrArrayNth( &tor->tiers->tiers, i ); 1629 if( canAnnounce &&tierNeedsToAnnounce( tier, now ) )1620 if( tierNeedsToAnnounce( tier, now ) ) 1630 1621 tr_ptrArrayAppend( &announceMe, tier ); 1631 else if( canScrape &&tierNeedsToScrape( tier, now ) )1622 else if( tierNeedsToScrape( tier, now ) ) 1632 1623 tr_ptrArrayAppend( &scrapeMe, tier ); 1633 1624 } … … 1637 1628 /* if there are more tiers than slots available, prioritize */ 1638 1629 n = tr_ptrArraySize( &announceMe ); 1639 if( n > announcer-> announceSlotsAvailable )1630 if( n > announcer->slotsAvailable ) 1640 1631 qsort( tr_ptrArrayBase( &announceMe ), n, sizeof( tr_tier * ), compareTiers ); 1641 1632 1642 1633 /* announce some */ 1643 n = MIN( tr_ptrArraySize( &announceMe ), announcer-> announceSlotsAvailable );1634 n = MIN( tr_ptrArraySize( &announceMe ), announcer->slotsAvailable ); 1644 1635 for( i=0; i<n; ++i ) { 1645 1636 tr_tier * tier = tr_ptrArrayNth( &announceMe, i ); … … 1648 1639 } 1649 1640 1650 1651 1641 /* scrape some */ 1652 n = MIN( tr_ptrArraySize( &scrapeMe ), announcer->s crapeSlotsAvailable );1642 n = MIN( tr_ptrArraySize( &scrapeMe ), announcer->slotsAvailable ); 1653 1643 for( i=0; i<n; ++i ) { 1654 1644 tr_tier * tier = tr_ptrArrayNth( &scrapeMe, i );
Note: See TracChangeset
for help on using the changeset viewer.