/* */ #ifndef _D_DHT_PEER_ANNOUNCE_ENTRY_H_ #define _D_DHT_PEER_ANNOUNCE_ENTRY_H_ #include "common.h" #include #include "SharedHandle.h" #include "DHTConstants.h" #include "PeerAddrEntry.h" #include "TimerA2.h" namespace aria2 { class Peer; class DHTPeerAnnounceEntry { private: unsigned char _infoHash[DHT_ID_LENGTH]; std::vector _peerAddrEntries; Timer _lastUpdated; public: DHTPeerAnnounceEntry(const unsigned char* infoHash); ~DHTPeerAnnounceEntry(); // add peer addr entry. // if it already exists, update "Last Updated" property. void addPeerAddrEntry(const PeerAddrEntry& entry); size_t countPeerAddrEntry() const; const std::vector& getPeerAddrEntries() const { return _peerAddrEntries; } void removeStalePeerAddrEntry(time_t timeout); bool empty() const; const Timer& getLastUpdated() const { return _lastUpdated; } void notifyUpdate(); const unsigned char* getInfoHash() const { return _infoHash; } void getPeers(std::vector >& peers) const; }; } // namespace aria2 #endif // _D_DHT_PEER_ANNOUNCE_ENTRY_H_