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

📄 packettracking.h

📁 电驴的MAC源代码
💻 H
字号:
//								-*- C++ -*-// This file is part of the aMule Project.//// Copyright (c) 2008 Dévai Tamás ( gonosztopi@amule.org )// Copyright (c) 2008 aMule Team ( admin@amule.org / http://www.amule.org )// Copyright (c) 2002-2008 Merkur ( strEmail.Format("%s@%s", "devteam", "emule-project.net") / http://www.emule-project.net )//// Any parts of this program derived from the xMule, lMule or eMule project,// or contributed by third-party developers are copyrighted by their// respective authors.//// 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA//#ifndef KADEMLIA_NET_PACKETTRACKING_H#define KADEMLIA_NET_PACKETTRACKING_H#include <map>#include <list>#include "../utils/UInt128.h"#include "../../Types.h"namespace Kademlia{struct TrackPackets_Struct {	uint32_t ip;	uint32_t inserted;	uint8_t  opcode;};struct TrackChallenge_Struct {	uint32_t	ip;	uint32_t	inserted;	uint8_t		opcode;	CUInt128	contactID;	CUInt128	challenge;};struct TrackPacketsIn_Struct {	struct TrackedRequestIn_Struct {		uint32_t m_count;		uint32_t m_firstAdded;		uint8_t	 m_opcode;		bool	 m_dbgLogged;	};	TrackPacketsIn_Struct()	{		m_lastExpire = 0;		m_ip = 0;	}	uint32_t m_ip;	uint32_t m_lastExpire;	typedef std::list<TrackedRequestIn_Struct>	TrackedRequestList;	TrackedRequestList	m_trackedRequests;};class CPacketTracking{      public:	CPacketTracking() throw() { lastTrackInCleanup = 0; }	virtual ~CPacketTracking();      protected:	void AddTrackedOutPacket(uint32_t ip, uint8_t opcode);	bool IsOnOutTrackList(uint32_t ip, uint8_t opcode, bool dontRemove = false);	bool InTrackListIsAllowedPacket(uint32_t ip, uint8_t opcode, bool validReceiverkey);	void InTrackListCleanup();	void AddLegacyChallenge(const CUInt128& contactID, const CUInt128& challengeID, uint32_t ip, uint8_t opcode);	bool IsLegacyChallenge(const CUInt128& challengeID, uint32_t ip, uint8_t opcode, CUInt128& contactID);	bool HasActiveLegacyChallenge(uint32_t ip) const;      private:	static bool IsTrackedOutListRequestPacket(uint8_t opcode) throw();	typedef std::list<TrackPackets_Struct>		TrackedPacketList;	typedef std::list<TrackChallenge_Struct>	TrackChallengeList;	typedef std::map<uint32_t, TrackPacketsIn_Struct*>	TrackedPacketInMap;	TrackedPacketList	listTrackedRequests;	TrackChallengeList	listChallengeRequests;	TrackedPacketInMap	m_mapTrackPacketsIn;	uint32_t		lastTrackInCleanup;};} // namespace Kademlia#endif /* KADEMLIA_NET_PACKETTRACKING_H */

⌨️ 快捷键说明

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