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