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 FRIEND_H 27#define FRIEND_H 28 29 30#include <ec/cpp/ECID.h> // Needed for CECID 31#include "MD4Hash.h" 32#include "ClientRef.h" // Needed for CClientRef 33 34class CFile; 35class CFileDataIO; 36 37#define FF_NAME 0x01 38 39class CFriend : public CECID 40{ 41friend class CFriendListRem; 42public: 43 CFriend() { Init(); } 44 ~CFriend() {}; 45 46 CFriend(CClientRef client); 47 CFriend( const CMD4Hash& userhash, uint32 tm_dwLastSeen, uint32 tm_dwLastUsedIP, uint32 tm_nLastUsedPort, uint32 tm_dwLastChatted, const wxString& tm_strName); 48 CFriend(uint32 ecid) : CECID(ecid) { Init(); } 49 50 void SetUserHash(const CMD4Hash& userhash) { m_UserHash = userhash;} 51 bool HasHash() const { return !m_UserHash.IsEmpty(); } 52 const CMD4Hash& GetUserHash() const { return m_UserHash; } 53 54 void SetName(const wxString& name) { m_strName = name; } 55 56 void LinkClient(CClientRef client); 57 const CClientRef& GetLinkedClient() const { return m_LinkedClient; } 58 void UnLinkClient(bool notify = true); 59 60 bool HasFriendSlot(); 61 62 const wxString& GetName() const { return m_strName; } 63 uint16 GetPort() const { return m_nLastUsedPort; } 64 uint32 GetIP() const { return m_dwLastUsedIP; } 65 66 void LoadFromFile(CFileDataIO* file); 67 void WriteToFile(CFileDataIO* file); 68 69private: 70 void Init(); 71 72 CClientRef m_LinkedClient; 73 74 CMD4Hash m_UserHash; 75 uint32 m_dwLastUsedIP; 76 uint16 m_nLastUsedPort; 77 wxString m_strName; 78 79 // write-only info, never used (kept in order not to break the save file) 80 uint32 m_dwLastSeen; 81 uint32 m_dwLastChatted; 82}; 83 84#endif 85// File_checked_for_headers 86