diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-03-12 15:54:43 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-03-12 15:54:43 +0000 |
| commit | 15582ed8cdbfd58d86fc1d92e37c87d2664450cd (patch) | |
| tree | 405e75ec596ae46ac889ae9b0ac8f611c538d0b1 /src/BtRejectMessage.cc | |
| parent | 371ef954d5390ada5e9debd9652e982b1b225be7 (diff) | |
2009-03-13 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
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
Diffstat (limited to 'src/BtRejectMessage.cc')
| -rw-r--r-- | src/BtRejectMessage.cc | 58 |
1 files changed, 10 insertions, 48 deletions
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> BtRejectMessage::create +(const unsigned char* data, size_t dataLength) +{ + return RangeBtMessage::create<BtRejectMessage>(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 |
