1// 2// This file is part of the aMule Project. 3// 4// Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) 5// Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) 6// 7// Any parts of this program derived from the xMule, lMule or eMule project, 8// or contributed by third-party developers are copyrighted by their 9// respective authors. 10// 11// This program is free software; you can redistribute it and/or modify 12// it under the terms of the GNU General Public License as published by 13// the Free Software Foundation; either version 2 of the License, or 14// (at your option) any later version. 15// 16// This program is distributed in the hope that it will be useful, 17// but WITHOUT ANY WARRANTY; without even the implied warranty of 18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19// GNU General Public License for more details. 20// 21// You should have received a copy of the GNU General Public License 22// along with this program; if not, write to the Free Software 23// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 24// 25 26#ifndef KNOWNFILELIST_H 27#define KNOWNFILELIST_H 28 29 30#include "SharedFileList.h" // CKnownFileMap 31 32 33class CKnownFile; 34class CPath; 35 36class CKnownFileList 37{ 38public: 39 CKnownFileList(); 40 ~CKnownFileList(); 41 bool SafeAddKFile(CKnownFile* toadd, bool afterHashing = false); 42 bool Init(); 43 void Save(); 44 void Clear(); 45 CKnownFile* FindKnownFile( 46 const CPath& filename, 47 time_t in_date, 48 uint64 in_size); 49 CKnownFile* FindKnownFileByID(const CMD4Hash& hash); 50 void PrepareIndex(); 51 void ReleaseIndex(); 52 53 uint16 requested; 54 uint32 transferred; 55 uint16 accepted; 56 57private: 58 wxMutex list_mut; 59 60 bool Append(CKnownFile*, bool afterHashing = false); 61 62 CKnownFile *IsOnDuplicates( 63 const CPath& filename, 64 uint32 in_date, 65 uint64 in_size) const; 66 67 bool KnownFileMatches( 68 CKnownFile *knownFile, 69 const CPath& filename, 70 uint32 in_date, 71 uint64 in_size) const; 72 73 typedef std::list<CKnownFile*> KnownFileList; 74 KnownFileList m_duplicateFileList; 75 CKnownFileMap m_knownFileMap; 76 // The filename "known.met" 77 wxString m_filename; 78 // Speed up shared files reload 79 typedef std::multimap<uint32, CKnownFile*> KnownFileSizeMap; 80 KnownFileSizeMap * m_knownSizeMap; 81 KnownFileSizeMap * m_duplicateSizeMap; 82}; 83 84#endif // KNOWNFILELIST_H 85// File_checked_for_headers 86