/* */ #ifndef _D_DHT_ABSTRACT_MESSAGE_H_ #define _D_DHT_ABSTRACT_MESSAGE_H_ #include "DHTMessage.h" #include "A2STR.h" namespace aria2 { class BDE; class DHTConnection; class DHTMessageDispatcher; class DHTMessageFactory; class DHTRoutingTable; class DHTAbstractMessage:public DHTMessage { private: 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 bool send(); virtual const std::string& getType() const = 0; virtual void fillMessage(BDE& msgDict) = 0; std::string getBencodedMessage(); const WeakHandle& getConnection() const { return _connection; } void setConnection(const WeakHandle& connection); const WeakHandle& getMessageDispatcher() const { return _dispatcher; } void setMessageDispatcher(const WeakHandle& dispatcher); const WeakHandle& getMessageFactory() const { return _factory; } void setMessageFactory(const WeakHandle& factory); const WeakHandle& getRoutingTable() const { return _routingTable; } void setRoutingTable(const WeakHandle& routingTable); }; } // namespace aria2 #endif // _D_DHT_ABSTRACT_MESSAGE_H_