From 15582ed8cdbfd58d86fc1d92e37c87d2664450cd Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 12 Mar 2009 15:54:43 +0000 Subject: 2009-03-13 Tatsuhiro Tsujikawa Refactored BtMessage subclasses. BtCancelMessage, BtRequestMessage and BtRejectMessage are derived from RangeBtMessage class. BtAllowedFastMessage, BtHaveMessage and BtSuggestPieceMessage are derived from IndexBtMessage class. BtChokeMessage, BtHaveAllMessage, BtHaveNoneMessage, BtInterestedMessage, BtNotInterestedMessage and BtUnchokeMessage are derived from ZeroBtMessage class. * src/AbstractBtMessage.cc * src/AbstractBtMessage.h * src/BtAllowedFastMessage.cc * src/BtAllowedFastMessage.h * src/BtAllowedFastMessageValidator.h: Removed * src/BtBitfieldMessage.cc * src/BtBitfieldMessage.h * src/BtCancelMessage.cc * src/BtCancelMessage.h * src/BtCancelMessageValidator.h: Removed * src/BtChokeMessage.cc * src/BtChokeMessage.h * src/BtExtendedMessage.cc * src/BtExtendedMessage.h * src/BtHandshakeMessage.cc * src/BtHandshakeMessage.h * src/BtHaveAllMessage.cc * src/BtHaveAllMessage.h * src/BtHaveMessage.cc * src/BtHaveMessage.h * src/BtHaveMessageValidator.h: Removed * src/BtHaveNoneMessage.cc * src/BtHaveNoneMessage.h * src/BtInterestedMessage.cc * src/BtInterestedMessage.h * src/BtKeepAliveMessage.cc * src/BtKeepAliveMessage.h * src/BtNotInterestedMessage.cc * src/BtNotInterestedMessage.h * src/BtPieceMessage.cc * src/BtPieceMessage.h * src/BtPortMessage.cc * src/BtPortMessage.h * src/BtRejectMessage.cc * src/BtRejectMessage.h * src/BtRejectMessageValidator.h: Removed * src/BtRequestMessage.cc * src/BtRequestMessage.h * src/BtRequestMessageValidator.h: Removed * src/BtSuggestPieceMessage.cc * src/BtSuggestPieceMessage.h * src/BtSuggestPieceMessageValidator.h: Removed * src/BtUnchokeMessage.cc * src/BtUnchokeMessage.h * src/DefaultBtMessageFactory.cc * src/IndexBtMessage.cc * src/IndexBtMessage.h * src/IndexBtMessageValidator.h * src/Makefile.am * src/PeerMessageUtil.cc * src/PeerMessageUtil.h * src/RangeBtMessage.cc * src/RangeBtMessage.h * src/RangeBtMessageValidator.h * src/SimpleBtMessage.cc * src/SimpleBtMessage.h * src/ZeroBtMessage.cc * src/ZeroBtMessage.h * test/BtRequestMessageTest.cc --- src/BtRejectMessage.cc | 58 +++++++++----------------------------------------- 1 file changed, 10 insertions(+), 48 deletions(-) (limited to 'src/BtRejectMessage.cc') diff --git a/src/BtRejectMessage.cc b/src/BtRejectMessage.cc index 51f796a9..fce49979 100644 --- a/src/BtRejectMessage.cc +++ b/src/BtRejectMessage.cc @@ -33,10 +33,7 @@ */ /* copyright --> */ #include "BtRejectMessage.h" -#include "PeerMessageUtil.h" -#include "Util.h" #include "DlAbortEx.h" -#include "message.h" #include "Peer.h" #include "RequestSlot.h" #include "BtMessageDispatcher.h" @@ -44,24 +41,16 @@ namespace aria2 { -BtRejectMessageHandle BtRejectMessage::create(const unsigned char* data, size_t dataLength) { - if(dataLength != 13) { - throw DlAbortEx - (StringFormat(EX_INVALID_PAYLOAD_SIZE, "reject", dataLength, 13).str()); - } - uint8_t id = PeerMessageUtil::getId(data); - if(id != ID) { - throw DlAbortEx - (StringFormat(EX_INVALID_BT_MESSAGE_ID, id, "reject", ID).str()); - } - BtRejectMessageHandle message(new BtRejectMessage()); - message->setIndex(PeerMessageUtil::getIntParam(data, 1)); - message->setBegin(PeerMessageUtil::getIntParam(data, 5)); - message->setLength(PeerMessageUtil::getIntParam(data, 9)); - return message; +const std::string BtRejectMessage::NAME("reject"); + +SharedHandle BtRejectMessage::create +(const unsigned char* data, size_t dataLength) +{ + return RangeBtMessage::create(data, dataLength); } -void BtRejectMessage::doReceivedAction() { +void BtRejectMessage::doReceivedAction() +{ if(!peer->isFastExtensionEnabled()) { throw DlAbortEx (StringFormat("%s received while fast extension is disabled.", @@ -69,7 +58,8 @@ void BtRejectMessage::doReceivedAction() { } // TODO Current implementation does not close a connection even if // a request for this reject message has never sent. - RequestSlot slot = dispatcher->getOutstandingRequest(index, begin, length); + RequestSlot slot = + dispatcher->getOutstandingRequest(getIndex(), getBegin(), getLength()); if(RequestSlot::isNull(slot)) { //throw DlAbortEx("reject recieved, but it is not in the request slots."); } else { @@ -78,32 +68,4 @@ void BtRejectMessage::doReceivedAction() { } -const unsigned char* BtRejectMessage::getMessage() { - if(!msg) { - /** - * len --- 13, 4bytes - * id --- 16, 1byte - * index --- index, 4bytes - * begin --- begin, 4bytes - * length -- length, 4bytes - * total: 17bytes - */ - msg = new unsigned char[MESSAGE_LENGTH]; - PeerMessageUtil::createPeerMessageString(msg, MESSAGE_LENGTH, 13, ID); - PeerMessageUtil::setIntParam(&msg[5], index); - PeerMessageUtil::setIntParam(&msg[9], begin); - PeerMessageUtil::setIntParam(&msg[13], length); - } - return msg; -} - -size_t BtRejectMessage::getMessageLength() { - return MESSAGE_LENGTH; -} - -std::string BtRejectMessage::toString() const { - return "reject index="+Util::uitos(index)+", begin="+Util::uitos(begin)+ - ", length="+Util::uitos(length); -} - } // namespace aria2 -- cgit