/* */ #ifndef _D_BITFIELD_MESSAGE_H_ #define _D_BITFIELD_MESSAGE_H_ #include "SimplePeerMessage.h" class BitfieldMessage : public SimplePeerMessage { private: unsigned char* bitfield; int bitfieldLength; // for check int pieces; char* msg; int msgLength; void init() { bitfield = 0; bitfieldLength = 0; pieces = 0; msg = 0; msgLength = 0; } public: BitfieldMessage() :SimplePeerMessage() { init(); } BitfieldMessage(const unsigned char* bitfield, int bitfieldLength) :SimplePeerMessage() { init(); setBitfield(bitfield, bitfieldLength); } virtual ~BitfieldMessage() { if(bitfield != NULL) { delete [] bitfield; } if(msg != NULL) { delete [] msg; } } enum ID_t { ID = 5 }; void setBitfield(const unsigned char* bitfield, int bitfieldLength); const unsigned char* getBitfield() const { return bitfield; } int getBitfieldLength() const { return bitfieldLength; } void setPieces(int pieces) { this->pieces = pieces; } int getPieces() const { return pieces;} static BitfieldMessage* create(const char* data, int dataLength); virtual int getId() const { return ID; } virtual void receivedAction(); virtual const char* getMessage(); virtual int getMessageLength(); virtual void check() const; virtual string toString() const; }; #endif // _D_BITFIELD_MESSAGE_H_