/* */ #ifndef _D_UT_PEX_EXTENSION_MESSAGE_H_ #define _D_UT_PEX_EXTENSION_MESSAGE_H_ #include "ExtensionMessage.h" #include #include namespace aria2 { class BtContext; class Peer; class UTPexExtensionMessage; typedef SharedHandle UTPexExtensionMessageHandle; class UTPexExtensionMessage:public ExtensionMessage { private: uint8_t _extensionMessageID; std::deque > _freshPeers; std::deque > _droppedPeers; SharedHandle _btContext; std::pair createCompactPeerListAndFlag(const std::deque >& peers); public: UTPexExtensionMessage(uint8_t extensionMessageID); virtual ~UTPexExtensionMessage(); virtual std::string getBencodedData(); virtual uint8_t getExtensionMessageID() { return _extensionMessageID; } virtual const std::string& getExtensionName() const { return EXTENSION_NAME; } static const std::string EXTENSION_NAME; virtual std::string toString() const; virtual void doReceivedAction(); void addFreshPeer(const SharedHandle& peer); const std::deque >& getFreshPeers() const; void addDroppedPeer(const SharedHandle& peer); const std::deque >& getDroppedPeers() const; void setBtContext(const SharedHandle& btContext); static UTPexExtensionMessageHandle create(const SharedHandle& btContext, const unsigned char* data, size_t len); }; typedef SharedHandle UTPexExtensionMessageHandle; } // namespace aria2 #endif // _D_UT_PEX_EXTENSION_MESSAGE_H_