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

📄 queryhit.h

📁 p2p软件
💻 H
字号:
//
// QueryHit.h
//
// Copyright (c) Shareaza Development Team, 2002-2004.
// This file is part of SHAREAZA (www.shareaza.com)
//
// Shareaza 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.
//
// Shareaza 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 Shareaza; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//

#if !defined(AFX_QUERYHIT_H__275CD566_6CDF_4C59_B78D_7082E49C6E15__INCLUDED_)
#define AFX_QUERYHIT_H__275CD566_6CDF_4C59_B78D_7082E49C6E15__INCLUDED_

#pragma once

class CVendor;
class CMatchFile;
class CXMLElement;
class CQuerySearch;
class CG1Packet;
class CG2Packet;
class CEDPacket;


class CQueryHit
{
// Construction
public:
	CQueryHit(PROTOCOLID nProtocol, GGUID* pSearchID = NULL);
	virtual ~CQueryHit();
	
// Attributes
public:
	CQueryHit*	m_pNext;
	GGUID		m_pSearchID;
public:
	PROTOCOLID	m_nProtocol;
	GGUID		m_pClientID;
	IN_ADDR		m_pAddress;
	WORD		m_nPort;
	DWORD		m_nSpeed;
	CString		m_sSpeed;
	CVendor*	m_pVendor;
	TRISTATE	m_bPush;
	TRISTATE	m_bBusy;
	TRISTATE	m_bStable;
	TRISTATE	m_bMeasured;
	BOOL		m_bChat;
	BOOL		m_bBrowseHost;
	CString		m_sNick;
public:
	int			m_nGroup;
	BOOL		m_bSHA1;
	SHA1		m_pSHA1;
	BOOL		m_bTiger;
	TIGEROOT	m_pTiger;
	BOOL		m_bED2K;
	MD4			m_pED2K;
	BOOL		m_bBTH;
	SHA1		m_pBTH;
	CString		m_sURL;
	CString		m_sName;
	DWORD		m_nIndex;
	BOOL		m_bSize;
	QWORD		m_nSize;
	DWORD		m_nSources;
	DWORD		m_nPartial;
	BOOL		m_bPreview;
	CString		m_sPreview;
	int			m_nUpSlots;
	int			m_nUpQueue;
	BOOL		m_bCollection;
public:
	CString			m_sSchemaURI;
	CString			m_sSchemaPlural;
	CXMLElement*	m_pXML;
	int				m_nRating;
	CString			m_sComments;
public:
	BOOL		m_bBogus;
	BOOL		m_bMatched;
	BOOL		m_bFiltered;
	BOOL		m_bDownload;
	BOOL		m_bNew;
	BOOL		m_bSelected;
protected:
	BOOL		m_bResolveURL;

// Static Decode Operations
public:
	static CQueryHit*	FromPacket(CG1Packet* pPacket, int* pnHops = NULL);
	static CQueryHit*	FromPacket(CG2Packet* pPacket, int* pnHops = NULL);
	static CQueryHit*	FromPacket(CEDPacket* pPacket, SOCKADDR_IN* pServer, GGUID* pSearchID = NULL);
protected:
	static BOOL			CheckBogus(CQueryHit* pFirstHit);
	static CXMLElement*	ReadXML(CG1Packet* pPacket, int nSize);
	static BOOL			ReadGGEP(CG1Packet* pPacket, BOOL* pbBrowseHost);

// Operations
public:
	void		Copy(CQueryHit* pOther);
	void		Delete();
	int			GetRating();
	void		Serialize(CArchive& ar, int nVersion);
protected:
	void		ReadG1Packet(CG1Packet* pPacket);
	void		ParseAttributes(GGUID* pClientID, CVendor* pVendor, BYTE* nFlags, BOOL bChat, BOOL bBrowseHost);
	void		ReadG2Packet(CG2Packet* pPacket, DWORD nLength);
	BOOL		ReadEDPacket(CEDPacket* pPacket, SOCKADDR_IN* pServer);
	void		ReadEDAddress(CEDPacket* pPacket, SOCKADDR_IN* pServer);
	BOOL		ParseXML(CXMLElement* pXML, DWORD nRealIndex);
	void		Resolve();
	BOOL		AutoDetectSchema(LPCTSTR pszInfo);
	BOOL		AutoDetectAudio(LPCTSTR pszInfo);
	
// Inlines
public:
	inline int GetSources() const
	{
		return ( m_nProtocol == PROTOCOL_ED2K )
			? m_nSources : ( m_nSources ? 1 : 0 );
	}
};

#define HITEQUALS_NOT		0
#define HITEQUALS_SIMILAR	1
#define HITEQUALS_IDENTICAL	2

#endif // !defined(AFX_QUERYHIT_H__275CD566_6CDF_4C59_B78D_7082E49C6E15__INCLUDED_)

⌨️ 快捷键说明

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