⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evafiledownloader.h

📁 linux 下最好用的 QQ 客房端。支持传文件
💻 H
📖 第 1 页 / 共 2 页
字号:
};class EvaFTAgentPacket;class EvaFTAgentCreateReply;class EvaFTAgentLoginReply;class EvaFTAgentAskReady;class EvaFTAgentStartReply;class EvaFTAgentTransferReply;class EvaAgentThread : public EvaFileThread{	Q_OBJECTpublic:	EvaAgentThread(QObject *receiver, const int id, const QValueList<QString> &dirList,			const QValueList<QString> &filenameList,			const QValueList<unsigned int> sizeList, const bool isSender);	virtual ~EvaAgentThread();	// user must call following 3 methods before running the thread	void setFileAgentToken(const unsigned char *token, const int len);	void setFileAgentKey(const unsigned char *key);	void setServerAddress(const unsigned int ip, const unsigned short port);	void setProxySettings(const QHostAddress addr, const short port, const QCString &param);protected:	enum AgentState { ENone, EDnsQuery, EDnsReady, ENetworkReady, ECreatingReady,			ENotifyBuddyReady, ENotifyReady, EInfoReady, EAskForStart, ETransfer, 			ETransfering, EDataReply, EFinished, EError};	AgentState m_State;	unsigned char m_FileAgentKey[16];	unsigned char *m_Token;	int m_TokenLength;	QValueList<QHostAddress> m_HostAddresses;	unsigned short m_ServerPort;	void doCreateConnection();	void send(EvaFTAgentPacket *packet);	virtual void processAgentPacket( unsigned char * data, int len );private:	// for receiving data		unsigned char m_Buffer[65535];	unsigned int m_BufferLength;	unsigned short m_PacketLength;	bool m_UsingProxy;	QHostAddress m_ProxyServer;	short m_ProxyPort;	QCString m_ProxyAuthParam;private slots:	void slotNetworkReady();	void slotDataComming(int);	void slotNetworkException(int);};class EvaAgentUploader : public EvaAgentThread{	Q_OBJECTpublic:	EvaAgentUploader(QObject *receiver, const int id,const QValueList<QString> &dirList,			const QValueList<QString> &filenameList);	~EvaAgentUploader();	// user must call this method before running the thread	void setBuddyIp(const unsigned int ip) { m_BuddyIp = ip; }private:	unsigned int m_BuddyIp;	unsigned int m_AgentSession;	bool m_IsSendingStart;	unsigned char *m_OutBuffer;	unsigned int m_OutBufferLength;	unsigned int m_OutBytesSent;	unsigned int m_NumPackets;	QDns *m_Dns;	void doDnsRequest();	void run();	void doCreateRequest();	void doNotifyBuddy();	void doReadyReply();	void doStartRequest();	void doSendInfo();	void doDataTransfering();	void doFinishProcessing();	void doErrorProcessing();	void processAgentPacket( unsigned char * data, int len );	void processCreateReply(EvaFTAgentCreateReply *packet);	void processNotifyReady(EvaFTAgentAskReady *packet);	void processStartReply(EvaFTAgentStartReply *packet);	void processTransferStart(EvaFTAgentTransferReply *packet);	void processTransferReply(EvaFTAgentTransferReply *packet);private slots:	void slotDnsReady();	void slotWriteReady();};typedef struct {unsigned int no;unsigned int len;unsigned char data[EVA_FILE_BUFFER_UNIT];} FileItem;class EvaAgentDownloader : public EvaAgentThread{	Q_OBJECTpublic:	EvaAgentDownloader(QObject *receiver, const int id, const QValueList<QString> &dirList,			const QValueList<QString> &filenameList,			const QValueList<unsigned int> sizeList);	~EvaAgentDownloader();	/** 	* @param factor the times of 50 * EVA_FILE_BUFFER_UNIT, default buffer size is 1, which	*                 is 50 * EVA_FILE_BUFFER_UNIT(0x800).	*/		void setBufferSize(const unsigned int factor);	void askResumeLastDownload( const bool rec = false);private:	bool m_IsRecovery;	unsigned int m_MaxBufferSize;	unsigned int m_BufferSize;	std::map<unsigned int, FileItem> m_ItemBuffer;	bool m_IsSendingStart;	unsigned short m_StartSequence;		void run();	void processAgentPacket( unsigned char * data, int len );	void doLoginRequest();	void doReadyReply();	void doStartRequest();	void doDataReply();	void doFinishProcessing();	void doErrorProcessing();	void processLoginReply( EvaFTAgentLoginReply  *packet);	void processNotifyReady( EvaFTAgentAskReady *packet);	void processStartReply(EvaFTAgentStartReply *packet);	void processTransferInfo( EvaFTAgentTransferReply *packet);	void processTransferData( EvaFTAgentTransferReply *packet);	void processDataBuffer(const unsigned short seq, const unsigned char *data, const unsigned int len);	void checkBuffer(const unsigned short seq);	const bool parsePacket(EvaFTAgentPacket *packet);};class EvaFTSynPacket;class EvaUDPThread : public EvaFileThread{	Q_OBJECTpublic:	EvaUDPThread(QObject *receiver, const int id, const QValueList<QString> &dirList,			const QValueList<QString> &filenameList,			const QValueList<unsigned int> sizeList, const bool isSender);	virtual ~EvaUDPThread();	// user must call following 3 methods before running the thread	void setFileAgentToken(const unsigned char *token, const int len);	void setFileAgentKey(const unsigned char *key);	void setServerAddress(const unsigned int ip, const unsigned short port);protected:	enum AgentState { ENone, EDnsQuery, EDnsReady, ENetworkReady, ECreatingReady, EFinished, EError};	AgentState m_State;	unsigned char m_FileAgentKey[16];	unsigned char *m_Token;	int m_TokenLength;	QValueList<QHostAddress> m_HostAddresses;	unsigned short m_ServerPort;	void doCreateConnection();	void sendSynPacket(EvaFTSynPacket *packet);	virtual void processSynPacket( unsigned char * data, int len );private slots:	void slotNetworkReady();	void slotDataComming(int);	void slotNetworkException(int);};class EvaFTSynCreateReply;class EvaUdpUploader : public EvaUDPThread{	Q_OBJECTpublic:	EvaUdpUploader(QObject *receiver, const int id, const QValueList<QString> &dirList,			const QValueList<QString> &filenameList);	~EvaUdpUploader();private:	QDns *m_Dns;	void doDnsRequest();	void run();	void doCreateRequest();	void doNotifyBuddy(const unsigned int session, const unsigned int ip, const unsigned short port);	void doFinishProcessing();	void doErrorProcessing();	void processSynPacket( unsigned char * data, int len );	void processCreateReply(EvaFTSynCreateReply *packet);	//void processRegisterReply(EvaFTAgentAskReady *packet);	const bool parsePacket(EvaFTSynPacket *packet);private slots:	void slotDnsReady();};class EvaUdpDownloader : public EvaUDPThread{	Q_OBJECTpublic:	EvaUdpDownloader(QObject *receiver, const int id, const QValueList<QString> &dirList, 			const QValueList<QString> &filenameList, const QValueList<unsigned int> sizeList)		: EvaUDPThread(receiver, id, dirList, filenameList, sizeList, false) {};	~EvaUdpDownloader() {};private:	void run() {};};#endif // EVAFILEDOWNLOADER_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -