mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-25 23:49:35 -05:00
changed insertion in queue for cache files: these are always placed before the first non cache file, hence giving cache files a higher priority over normal downloads.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3502 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
f080fb22a0
commit
301b7daa88
@ -69,6 +69,9 @@ static const uint32_t SAVE_TRANSFERS_DELAY = 61 ; // save transfer progress e
|
||||
static const uint32_t INACTIVE_CHUNKS_CHECK_DELAY = 60 ; // time after which an inactive chunk is released
|
||||
static const uint32_t MAX_TIME_INACTIVE_REQUEUED = 60 ; // time after which an inactive ftFileControl is bt-queued
|
||||
|
||||
static const uint32_t FT_FILECONTROL_QUEUE_ADD_END = 0 ;
|
||||
static const uint32_t FT_FILECONTROL_QUEUE_ADD_AFTER_CACHE = 1 ;
|
||||
|
||||
ftFileControl::ftFileControl()
|
||||
:mTransfer(NULL), mCreator(NULL),
|
||||
mState(DOWNLOADING), mSize(0), mFlags(0),
|
||||
@ -437,13 +440,40 @@ void ftController::checkDownloadQueue()
|
||||
}
|
||||
}
|
||||
|
||||
void ftController::locked_addToQueue(ftFileControl* ftfc)
|
||||
void ftController::locked_addToQueue(ftFileControl* ftfc,int add_strategy)
|
||||
{
|
||||
#ifdef DEBUG_DWLQUEUE
|
||||
std::cerr << "Queueing ftfileControl " << (void*)ftfc << ", name=" << ftfc->mName << std::endl ;
|
||||
#endif
|
||||
_queue.push_back(ftfc) ;
|
||||
locked_checkQueueElement(_queue.size()-1) ;
|
||||
|
||||
switch(add_strategy)
|
||||
{
|
||||
case FT_FILECONTROL_QUEUE_ADD_END: _queue.push_back(ftfc) ;
|
||||
locked_checkQueueElement(_queue.size()-1) ;
|
||||
break ;
|
||||
case FT_FILECONTROL_QUEUE_ADD_AFTER_CACHE:
|
||||
{
|
||||
// We add the transfer just before the first non cache transfer.
|
||||
//
|
||||
uint32_t pos =0;
|
||||
while(pos < _queue.size() && (_queue[pos]->mFlags & RS_FILE_HINTS_CACHE)>0)
|
||||
++pos ;
|
||||
|
||||
_queue.push_back(NULL) ;
|
||||
|
||||
for(int i=int(_queue.size())-1;i>pos;--i)
|
||||
{
|
||||
_queue[i] = _queue[i-1] ;
|
||||
locked_checkQueueElement(i) ;
|
||||
}
|
||||
|
||||
_queue[pos] = ftfc ;
|
||||
locked_checkQueueElement(pos) ;
|
||||
|
||||
std::cerr << "!!!!!!!!!!!!!! Added cache transfer at position " << pos << std::endl ;
|
||||
}
|
||||
break ;
|
||||
}
|
||||
}
|
||||
|
||||
void ftController::locked_queueRemove(uint32_t pos)
|
||||
@ -1248,7 +1278,7 @@ bool ftController::FileRequest(const std::string& fname, const std::string& has
|
||||
/* add structures into the accessible data. Needs to be locked */
|
||||
{
|
||||
RsStackMutex stack(ctrlMutex); /******* LOCKED ********/
|
||||
locked_addToQueue(ftfc) ;
|
||||
locked_addToQueue(ftfc, (flags & RS_FILE_HINTS_CACHE)?FT_FILECONTROL_QUEUE_ADD_AFTER_CACHE : FT_FILECONTROL_QUEUE_ADD_END ) ;
|
||||
|
||||
#ifdef CONTROL_DEBUG
|
||||
std::cerr << "ftController::FileRequest() Created ftFileCreator @: " << fc;
|
||||
|
@ -217,7 +217,7 @@ class ftController: public CacheTransfer, public RsThread, public pqiMonitor, pu
|
||||
/* RunTime Functions */
|
||||
void checkDownloadQueue(); // check the whole queue for inactive files
|
||||
|
||||
void locked_addToQueue(ftFileControl*) ; // insert this one into the queue
|
||||
void locked_addToQueue(ftFileControl*,int strategy) ;// insert this one into the queue
|
||||
void locked_bottomQueue(uint32_t pos) ; // bottom queue file which is at this position
|
||||
void locked_topQueue(uint32_t pos) ; // top queue file which is at this position
|
||||
void locked_checkQueueElement(uint32_t pos) ; // check the state of this element in the queue
|
||||
|
Loading…
Reference in New Issue
Block a user