/* */ #ifndef _D_BT_BITFIELD_MESSAGE_H_ #define _D_BT_BITFIELD_MESSAGE_H_ #include "SimpleBtMessage.h" namespace aria2 { class BtBitfieldMessage; typedef SharedHandle BtBitfieldMessageHandle; class BtBitfieldMessage : public SimpleBtMessage { private: unsigned char* bitfield; size_t bitfieldLength; void init() { bitfield = 0; bitfieldLength = 0; } public: BtBitfieldMessage():SimpleBtMessage(ID, NAME) { init(); } BtBitfieldMessage(const unsigned char* bitfield, size_t bitfieldLength):SimpleBtMessage(ID, NAME) { init(); setBitfield(bitfield, bitfieldLength); } virtual ~BtBitfieldMessage() { delete [] bitfield; } static const uint8_t ID = 5; static const std::string NAME; void setBitfield(const unsigned char* bitfield, size_t bitfieldLength); const unsigned char* getBitfield() const { return bitfield; } size_t getBitfieldLength() const { return bitfieldLength; } static BtBitfieldMessageHandle create(const unsigned char* data, size_t dataLength); virtual void doReceivedAction(); virtual unsigned char* createMessage(); virtual size_t getMessageLength(); virtual std::string toString() const; }; } // namespace aria2 #endif // _D_BT_BITFIELD_MESSAGE_H_