/* */ #ifndef D_DHT_GET_PEERS_MESSAGE_H #define D_DHT_GET_PEERS_MESSAGE_H #include "DHTQueryMessage.h" #include #include "DHTConstants.h" #include "A2STR.h" namespace aria2 { class DHTPeerAnnounceStorage; class DHTTokenTracker; class BtRegistry; class Peer; class DHTGetPeersMessage : public DHTQueryMessage { private: unsigned char infoHash_[DHT_ID_LENGTH]; DHTPeerAnnounceStorage* peerAnnounceStorage_; DHTTokenTracker* tokenTracker_; BtRegistry* btRegistry_; int family_; void addLocalPeer(std::vector>& peers); protected: virtual std::string toStringOptional() const CXX11_OVERRIDE; public: DHTGetPeersMessage(const std::shared_ptr& localNode, const std::shared_ptr& remoteNode, const unsigned char* infoHash, const std::string& transactionID = A2STR::NIL); virtual void doReceivedAction() CXX11_OVERRIDE; virtual std::unique_ptr getArgument() CXX11_OVERRIDE; virtual const std::string& getMessageType() const CXX11_OVERRIDE; const unsigned char* getInfoHash() const { return infoHash_; } void setPeerAnnounceStorage(DHTPeerAnnounceStorage* storage); void setTokenTracker(DHTTokenTracker* tokenTracker); void setBtRegistry(BtRegistry* btRegistry); void setFamily(int family); static const std::string GET_PEERS; static const std::string INFO_HASH; }; } // namespace aria2 #endif // D_DHT_GET_PEERS_MESSAGE_H