📄 uploadqueue.h
字号:
//this file is part of eMule
//Copyright (C)2002 Merkur ( merkur-@users.sourceforge.net / http://www.emule-project.net )
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either
//version 2 of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#pragma once
#include "types.h"
#include "opcodes.h"
#include "updownclient.h"
#include "preferences.h"
class CUploadQueue{
public:
CUploadQueue(CPreferences* in_prefs);
~CUploadQueue();
void Process();
void AddClientToQueue(CUpDownClient* client,bool bIgnoreTimelimit = false);
bool RemoveFromUploadQueue(CUpDownClient* client,bool updatewindow = true);
bool RemoveFromWaitingQueue(CUpDownClient* client,bool updatewindow = true);
bool IsOnUploadQueue(CUpDownClient* client) const {return (waitinglist.Find(client) != 0);}
bool IsDownloading(CUpDownClient* client) const {return (uploadinglist.Find(client) != 0);}
uint32 GetDatarate() {return datarate;}
bool CheckForTimeOver(CUpDownClient* client);
int GetWaitingUserCount() {return waitinglist.GetCount();}
int GetUploadQueueLength() {return uploadinglist.GetCount();}
POSITION GetFirstFromUploadList() {return uploadinglist.GetHeadPosition();}
CUpDownClient* GetNextFromUploadList(POSITION &curpos) {return uploadinglist.GetNext(curpos);}
CUpDownClient* GetQueueClientAt(POSITION &curpos) {return uploadinglist.GetAt(curpos);}
POSITION GetFirstFromWaitingList() {return waitinglist.GetHeadPosition();}
CUpDownClient* GetNextFromWaitingList(POSITION &curpos) {return waitinglist.GetNext(curpos);}
CUpDownClient* GetWaitClientAt(POSITION &curpos) {return waitinglist.GetAt(curpos);}
void UpdateBanCount();
CUpDownClient* GetWaitingClientByIP_UDP(uint32 dwIP, uint16 dwPort);
CUpDownClient* GetNextClient(CUpDownClient* update);
void DeleteAll();
uint16 GetWaitingPosition(CUpDownClient* client);
void SetBanCount(uint32 in_count) {bannedcount = in_count;}
uint32 GetBanCount() {return bannedcount;}
uint32 GetSuccessfullUpCount() {return successfullupcount;}
uint32 GetFailedUpCount() {return failedupcount;}
uint32 GetAverageUpTime();
void FindSourcesForFileById(CTypedPtrList<CPtrList, CUpDownClient*>* srclist, uchar* filehash);
void AddUpDataOverheadSourceExchange(uint32 data) { m_nUpDataRateMSOverhead += data;
m_nUpDataOverheadSourceExchange += data;
m_nUpDataOverheadSourceExchangePackets++;}
void AddUpDataOverheadFileRequest(uint32 data) { m_nUpDataRateMSOverhead += data;
m_nUpDataOverheadFileRequest += data;
m_nUpDataOverheadFileRequestPackets++;}
void AddUpDataOverheadServer(uint32 data) { m_nUpDataRateMSOverhead += data;
m_nUpDataOverheadServer += data;
m_nUpDataOverheadServerPackets++;}
void AddUpDataOverheadOther(uint32 data) { m_nUpDataRateMSOverhead += data;
m_nUpDataOverheadOther += data;
m_nUpDataOverheadOtherPackets++;}
uint32 GetUpDatarateOverhead() {return m_nUpDatarateOverhead;}
uint64 GetUpDataOverheadSourceExchange() {return m_nUpDataOverheadSourceExchange;}
uint64 GetUpDataOverheadFileRequest() {return m_nUpDataOverheadFileRequest;}
uint64 GetUpDataOverheadServer() {return m_nUpDataOverheadServer;}
uint64 GetUpDataOverheadOther() {return m_nUpDataOverheadOther;}
uint64 GetUpDataOverheadSourceExchangePackets() {return m_nUpDataOverheadSourceExchangePackets;}
uint64 GetUpDataOverheadFileRequestPackets() {return m_nUpDataOverheadFileRequestPackets;}
uint64 GetUpDataOverheadServerPackets() {return m_nUpDataOverheadServerPackets;}
uint64 GetUpDataOverheadOtherPackets() {return m_nUpDataOverheadOtherPackets;}
void CompUpDatarateOverhead();
protected:
void RemoveFromWaitingQueue(POSITION pos, bool updatewindow);
// POSITION GetWaitingClient(CUpDownClient* client);
// POSITION GetWaitingClientByID(CUpDownClient* client);
// POSITION GetDownloadingClient(CUpDownClient* client);
bool AcceptNewClient();
void AddUpNextClient(CUpDownClient* directadd = 0);
private:
CList<int,int> avarage_dr_list;
CTypedPtrList<CPtrList, CUpDownClient*> waitinglist;
CTypedPtrList<CPtrList, CUpDownClient*> uploadinglist;
uint32 datarate; //datarate
uint32 dataratems; // datarate last 100ms
uint32 datarateave; //datarage average (since progstart) *unused*
sint32 estadatarate; // esta. max datarate
CPreferences* app_prefs;
UINT_PTR h_timer;
uint32 bannedcount;
uint32 successfullupcount;
uint32 failedupcount;
uint32 totaluploadtime;
uint32 m_nLastStartUpload;
uint32 m_nUpDatarateOverhead;
uint32 m_nUpDataRateMSOverhead;
uint64 m_nUpDataOverheadSourceExchange;
uint64 m_nUpDataOverheadFileRequest;
uint64 m_nUpDataOverheadServer;
uint64 m_nUpDataOverheadOther;
uint64 m_nUpDataOverheadSourceExchangePackets;
uint64 m_nUpDataOverheadFileRequestPackets;
uint64 m_nUpDataOverheadServerPackets;
uint64 m_nUpDataOverheadOtherPackets;
uint32 m_nSumForAvgDataRate;
CList<int,int> m_AvarageUDRO_list;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -