summaryrefslogtreecommitdiff
path: root/src/BtHaveAllMessage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-03-12 15:54:43 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-03-12 15:54:43 +0000
commit15582ed8cdbfd58d86fc1d92e37c87d2664450cd (patch)
tree405e75ec596ae46ac889ae9b0ac8f611c538d0b1 /src/BtHaveAllMessage.cc
parent371ef954d5390ada5e9debd9652e982b1b225be7 (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/BtHaveAllMessage.cc')
-rw-r--r--src/BtHaveAllMessage.cc48
1 files changed, 10 insertions, 38 deletions
diff --git a/src/BtHaveAllMessage.cc b/src/BtHaveAllMessage.cc
index efdc6f9b..10f6cc3d 100644
--- a/src/BtHaveAllMessage.cc
+++ b/src/BtHaveAllMessage.cc
@@ -34,59 +34,31 @@
/* copyright --> */
#include "BtHaveAllMessage.h"
#include "DlAbortEx.h"
-#include "PeerMessageUtil.h"
-#include "message.h"
#include "Peer.h"
#include "StringFormat.h"
#include "PieceStorage.h"
namespace aria2 {
-BtHaveAllMessageHandle BtHaveAllMessage::create(const unsigned char* data, size_t dataLength) {
- if(dataLength != 1) {
- throw DlAbortEx
- (StringFormat(EX_INVALID_PAYLOAD_SIZE, "have all", dataLength, 1).str());
- }
- uint8_t id = PeerMessageUtil::getId(data);
- if(id != ID) {
- throw DlAbortEx
- (StringFormat(EX_INVALID_BT_MESSAGE_ID, id, "have all", ID).str());
- }
- BtHaveAllMessageHandle message(new BtHaveAllMessage());
- return message;
+const std::string BtHaveAllMessage::NAME("have all");
+
+SharedHandle<BtHaveAllMessage> BtHaveAllMessage::create
+(const unsigned char* data, size_t dataLength)
+{
+ return ZeroBtMessage::create<BtHaveAllMessage>(data, dataLength);
}
-void BtHaveAllMessage::doReceivedAction() {
+void BtHaveAllMessage::doReceivedAction()
+{
if(!peer->isFastExtensionEnabled()) {
throw DlAbortEx
(StringFormat("%s received while fast extension is disabled",
toString().c_str()).str());
}
- pieceStorage->subtractPieceStats(peer->getBitfield(), peer->getBitfieldLength());
+ pieceStorage->subtractPieceStats(peer->getBitfield(),
+ peer->getBitfieldLength());
peer->setAllBitfield();
pieceStorage->addPieceStats(peer->getBitfield(), peer->getBitfieldLength());
}
-const unsigned char* BtHaveAllMessage::getMessage() {
- if(!msg) {
- /**
- * len --- 1, 4bytes
- * id --- 14, 1byte
- * total: 5bytes
- */
- msg = new unsigned char[MESSAGE_LENGTH];
- PeerMessageUtil::createPeerMessageString(msg, MESSAGE_LENGTH, 1, ID);
- }
- return msg;
-}
-
-size_t BtHaveAllMessage::getMessageLength() {
- return MESSAGE_LENGTH;
-}
-
-std::string BtHaveAllMessage::toString() const {
- static const std::string HAVE_ALL("have all");
- return HAVE_ALL;
-}
-
} // namespace aria2