Esempio n. 1
0
CFileItem* CServerItem::GetIdleChild(bool immediateOnly, enum TransferDirection direction)
{
	int i = 0;
	for (i = (PRIORITY_COUNT - 1); i >= 0; i--)
	{
		std::list<CFileItem*>& fileList = m_fileList[1][i];
		for (std::list<CFileItem*>::iterator iter = fileList.begin(); iter != fileList.end(); iter++)
		{
			CFileItem* item = *iter;
			if (item->IsActive())
				continue;

			if (direction == both)
				return item;

			if (direction == download)
			{
				if (item->Download())
					return item;
			}
			else if (!item->Download())
				return item;
		}
	}
	if (immediateOnly)
		return 0;

	for (i = (PRIORITY_COUNT - 1); i >= 0; i--)
	{
		std::list<CFileItem*>& fileList = m_fileList[0][i];
		for (std::list<CFileItem*>::iterator iter = fileList.begin(); iter != fileList.end(); iter++)
		{
			CFileItem* item = *iter;
			if (item->IsActive())
				continue;

			if (direction == both)
				return item;

			if (direction == download)
			{
				if (item->Download())
					return item;
			}
			else if (!item->Download())
				return item;
		}
	}

	return 0;
}
Esempio n. 2
0
void CServerItem::QueueImmediateFiles()
{
    for (int i = 0; i < static_cast<int>(QueuePriority::count); ++i) {
        std::deque<CFileItem*> activeList;
        std::deque<CFileItem*>& fileList = m_fileList[1][i];
        for (auto iter = fileList.rbegin(); iter != fileList.rend(); ++iter) {
            CFileItem* item = *iter;
            wxASSERT(!item->queued());
            if (item->IsActive())
                activeList.push_front(item);
            else {
                item->set_queued(true);
                m_fileList[0][i].push_front(item);
            }
        }
        std::swap(fileList, activeList);
    }
}
Esempio n. 3
0
void CServerItem::QueueImmediateFiles()
{
	for (int i = 0; i < PRIORITY_COUNT; i++)
	{
		std::list<CFileItem*> activeList;
		std::list<CFileItem*>& fileList = m_fileList[1][i];
		for (std::list<CFileItem*>::reverse_iterator iter = fileList.rbegin(); iter != fileList.rend(); iter++)
		{
			CFileItem* item = *iter;
			wxASSERT(!item->m_queued);
			if (item->IsActive())
				activeList.push_front(item);
			else
			{
				item->m_queued = true;
				m_fileList[0][i].push_front(item);
			}
		}
		fileList = activeList;
	}
}