/* */ #ifndef D_DHT_PING_REPLY_MESSAGE_CALLBACK_H #define D_DHT_PING_REPLY_MESSAGE_CALLBACK_H #include "DHTMessageCallback.h" #include "DHTAnnouncePeerReplyMessage.h" #include "DHTFindNodeReplyMessage.h" #include "DHTGetPeersReplyMessage.h" #include "Peer.h" namespace aria2 { template class DHTPingReplyMessageCallback:public DHTMessageCallback { private: Task* task_; public: DHTPingReplyMessageCallback(Task* task):task_(task) {} virtual void visit(const DHTAnnouncePeerReplyMessage* message) { onTimeout(message->getRemoteNode()); } virtual void visit(const DHTFindNodeReplyMessage* message) { onTimeout(message->getRemoteNode()); } virtual void visit(const DHTGetPeersReplyMessage* message) { onTimeout(message->getRemoteNode()); } virtual void visit(const DHTPingReplyMessage* message) { task_->onReceived(message); } virtual void onTimeout(const SharedHandle& remoteNode) { task_->onTimeout(remoteNode); } }; } // namespace aria2 #endif // D_DHT_PING_REPLY_MESSAGE_CALLBACK_H