/* */ #include "BtHaveNoneMessage.h" #include "DlAbortEx.h" #include "PeerMessageUtil.h" #include "message.h" #include "Peer.h" namespace aria2 { BtHaveNoneMessageHandle BtHaveNoneMessage::create(const unsigned char* data, size_t dataLength) { if(dataLength != 1) { throw new DlAbortEx(EX_INVALID_PAYLOAD_SIZE, "have none", dataLength, 1); } uint8_t id = PeerMessageUtil::getId(data); if(id != ID) { throw new DlAbortEx(EX_INVALID_BT_MESSAGE_ID, id, "have none", ID); } BtHaveNoneMessageHandle message = new BtHaveNoneMessage(); return message; } void BtHaveNoneMessage::doReceivedAction() { if(!peer->isFastExtensionEnabled()) { throw new DlAbortEx("%s received while fast extension is disabled", toString().c_str()); } } size_t BtHaveNoneMessage::MESSAGE_LENGTH = 5; const unsigned char* BtHaveNoneMessage::getMessage() { if(!msg) { /** * len --- 1, 4bytes * id --- 15, 1byte * total: 5bytes */ msg = new unsigned char[MESSAGE_LENGTH]; PeerMessageUtil::createPeerMessageString(msg, MESSAGE_LENGTH, 1, ID); } return msg; } size_t BtHaveNoneMessage::getMessageLength() { return MESSAGE_LENGTH; } std::string BtHaveNoneMessage::toString() const { return "have none"; } } // namespace aria2