/* */ #ifndef _D_DHT_ABSTRACT_MESSAGE_H_ #define _D_DHT_ABSTRACT_MESSAGE_H_ #include "DHTMessage.h" #include "A2STR.h" namespace aria2 { class Dictionary; class DHTConnection; class DHTMessageDispatcher; class DHTMessageFactory; class DHTRoutingTable; class DHTAbstractMessage:public DHTMessage { protected: WeakHandle _connection; WeakHandle _dispatcher; WeakHandle _factory; WeakHandle _routingTable; public: DHTAbstractMessage(const SharedHandle& localNode, const SharedHandle& remoteNode, const std::string& transactionID = A2STR::NIL); virtual ~DHTAbstractMessage(); virtual void send(); virtual std::string getType() const = 0; virtual void fillMessage(Dictionary* message) = 0; std::string getBencodedMessage(); void setConnection(const WeakHandle& connection); void setMessageDispatcher(const WeakHandle& dispatcher); void setMessageFactory(const WeakHandle& factory); void setRoutingTable(const WeakHandle& routingTable); }; } // namespace aria2 #endif // _D_DHT_ABSTRACT_MESSAGE_H_