/* */ #include "RangeBtMessage.h" #include "Util.h" #include "a2functional.h" #include "bittorrent_helper.h" namespace aria2 { RangeBtMessage::RangeBtMessage(uint8_t id, const std::string& name, size_t index, uint32_t begin, size_t length) :SimpleBtMessage(id, name), _index(index), _begin(begin), _length(length), _msg(0) {} RangeBtMessage::~RangeBtMessage() { delete [] _msg; } const unsigned char* RangeBtMessage::getMessage() { if(!_msg) { /** * len --- 13, 4bytes * id --- ?, 1byte * index --- index, 4bytes * begin --- begin, 4bytes * length -- length, 4bytes * total: 17bytes */ _msg = new unsigned char[MESSAGE_LENGTH]; bittorrent::createPeerMessageString(_msg, MESSAGE_LENGTH, 13, getId()); bittorrent::setIntParam(&_msg[5], _index); bittorrent::setIntParam(&_msg[9], _begin); bittorrent::setIntParam(&_msg[13], _length); } return _msg; } size_t RangeBtMessage::getMessageLength() { return MESSAGE_LENGTH; } std::string RangeBtMessage::toString() const { return strconcat(getName(), " index=", Util::uitos(_index), ", begin=", Util::uitos(_begin), ", length=", Util::uitos(_length)); } } // namespace aria2