/* */ #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