mirror of https://github.com/aria2/aria2
AbstractBtMessage: Use std::unique_ptr for validator
parent
a18bba7c66
commit
23086b6e21
|
@ -68,8 +68,10 @@ void AbstractBtMessage::validate()
|
|||
}
|
||||
|
||||
void
|
||||
AbstractBtMessage::setBtMessageValidator(const std::shared_ptr<BtMessageValidator>& validator) {
|
||||
validator_ = validator;
|
||||
AbstractBtMessage::setBtMessageValidator
|
||||
(std::unique_ptr<BtMessageValidator> validator)
|
||||
{
|
||||
validator_ = std::move(validator);
|
||||
}
|
||||
|
||||
void AbstractBtMessage::setPieceStorage(PieceStorage* pieceStorage)
|
||||
|
|
|
@ -68,7 +68,7 @@ private:
|
|||
|
||||
PeerConnection* peerConnection_;
|
||||
|
||||
std::shared_ptr<BtMessageValidator> validator_;
|
||||
std::unique_ptr<BtMessageValidator> validator_;
|
||||
|
||||
bool metadataGetMode_;
|
||||
protected:
|
||||
|
@ -151,7 +151,7 @@ public:
|
|||
|
||||
virtual void onChokingEvent(const BtChokingEvent& event) {}
|
||||
|
||||
void setBtMessageValidator(const std::shared_ptr<BtMessageValidator>& validator);
|
||||
void setBtMessageValidator(std::unique_ptr<BtMessageValidator> validator);
|
||||
|
||||
void setPieceStorage(PieceStorage* pieceStorage);
|
||||
|
||||
|
|
|
@ -123,31 +123,27 @@ DefaultBtMessageFactory::createBtMessage
|
|||
case BtHaveMessage::ID:
|
||||
msg.reset(BtHaveMessage::create(data, dataLength));
|
||||
if(!metadataGetMode_) {
|
||||
std::shared_ptr<BtMessageValidator> v
|
||||
(new IndexBtMessageValidator(static_cast<BtHaveMessage*>(msg.get()),
|
||||
downloadContext_->getNumPieces()));
|
||||
msg->setBtMessageValidator(v);
|
||||
msg->setBtMessageValidator(make_unique<IndexBtMessageValidator>
|
||||
(static_cast<BtHaveMessage*>(msg.get()),
|
||||
downloadContext_->getNumPieces()));
|
||||
}
|
||||
break;
|
||||
case BtBitfieldMessage::ID:
|
||||
msg.reset(BtBitfieldMessage::create(data, dataLength));
|
||||
if(!metadataGetMode_) {
|
||||
std::shared_ptr<BtMessageValidator> v
|
||||
(new BtBitfieldMessageValidator
|
||||
(static_cast<BtBitfieldMessage*>(msg.get()),
|
||||
downloadContext_->getNumPieces()));
|
||||
msg->setBtMessageValidator(v);
|
||||
msg->setBtMessageValidator(make_unique<BtBitfieldMessageValidator>
|
||||
(static_cast<BtBitfieldMessage*>(msg.get()),
|
||||
downloadContext_->getNumPieces()));
|
||||
}
|
||||
break;
|
||||
case BtRequestMessage::ID: {
|
||||
BtRequestMessage* m = BtRequestMessage::create(data, dataLength);
|
||||
if(!metadataGetMode_) {
|
||||
std::shared_ptr<BtMessageValidator> validator
|
||||
(new RangeBtMessageValidator
|
||||
m->setBtMessageValidator
|
||||
(make_unique<RangeBtMessageValidator>
|
||||
(m,
|
||||
downloadContext_->getNumPieces(),
|
||||
pieceStorage_->getPieceLength(m->getIndex())));
|
||||
m->setBtMessageValidator(validator);
|
||||
}
|
||||
msg.reset(m);
|
||||
break;
|
||||
|
@ -155,12 +151,11 @@ DefaultBtMessageFactory::createBtMessage
|
|||
case BtCancelMessage::ID: {
|
||||
BtCancelMessage* m = BtCancelMessage::create(data, dataLength);
|
||||
if(!metadataGetMode_) {
|
||||
std::shared_ptr<BtMessageValidator> validator
|
||||
(new RangeBtMessageValidator
|
||||
m->setBtMessageValidator
|
||||
(make_unique<RangeBtMessageValidator>
|
||||
(m,
|
||||
downloadContext_->getNumPieces(),
|
||||
pieceStorage_->getPieceLength(m->getIndex())));
|
||||
m->setBtMessageValidator(validator);
|
||||
}
|
||||
msg.reset(m);
|
||||
break;
|
||||
|
@ -168,12 +163,11 @@ DefaultBtMessageFactory::createBtMessage
|
|||
case BtPieceMessage::ID: {
|
||||
BtPieceMessage* m = BtPieceMessage::create(data, dataLength);
|
||||
if(!metadataGetMode_) {
|
||||
std::shared_ptr<BtMessageValidator> validator
|
||||
(new BtPieceMessageValidator
|
||||
m->setBtMessageValidator
|
||||
(make_unique<BtPieceMessageValidator>
|
||||
(m,
|
||||
downloadContext_->getNumPieces(),
|
||||
pieceStorage_->getPieceLength(m->getIndex())));
|
||||
m->setBtMessageValidator(validator);
|
||||
}
|
||||
m->setDownloadContext(downloadContext_);
|
||||
m->setPeerStorage(peerStorage_);
|
||||
|
@ -189,12 +183,11 @@ DefaultBtMessageFactory::createBtMessage
|
|||
case BtRejectMessage::ID: {
|
||||
BtRejectMessage* m = BtRejectMessage::create(data, dataLength);
|
||||
if(!metadataGetMode_) {
|
||||
std::shared_ptr<BtMessageValidator> validator
|
||||
(new RangeBtMessageValidator
|
||||
m->setBtMessageValidator
|
||||
(make_unique<RangeBtMessageValidator>
|
||||
(m,
|
||||
downloadContext_->getNumPieces(),
|
||||
pieceStorage_->getPieceLength(m->getIndex())));
|
||||
m->setBtMessageValidator(validator);
|
||||
}
|
||||
msg.reset(m);
|
||||
break;
|
||||
|
@ -203,9 +196,8 @@ DefaultBtMessageFactory::createBtMessage
|
|||
BtSuggestPieceMessage* m =
|
||||
BtSuggestPieceMessage::create(data, dataLength);
|
||||
if(!metadataGetMode_) {
|
||||
std::shared_ptr<BtMessageValidator> validator
|
||||
(new IndexBtMessageValidator(m, downloadContext_->getNumPieces()));
|
||||
m->setBtMessageValidator(validator);
|
||||
m->setBtMessageValidator(make_unique<IndexBtMessageValidator>
|
||||
(m, downloadContext_->getNumPieces()));
|
||||
}
|
||||
msg.reset(m);
|
||||
break;
|
||||
|
@ -215,7 +207,8 @@ DefaultBtMessageFactory::createBtMessage
|
|||
if(!metadataGetMode_) {
|
||||
std::shared_ptr<BtMessageValidator> validator
|
||||
(new IndexBtMessageValidator(m, downloadContext_->getNumPieces()));
|
||||
m->setBtMessageValidator(validator);
|
||||
m->setBtMessageValidator(make_unique<IndexBtMessageValidator>
|
||||
(m, downloadContext_->getNumPieces()));
|
||||
}
|
||||
msg.reset(m);
|
||||
break;
|
||||
|
@ -267,10 +260,9 @@ DefaultBtMessageFactory::createHandshakeMessage
|
|||
{
|
||||
std::shared_ptr<BtHandshakeMessage> msg =
|
||||
BtHandshakeMessage::create(data, dataLength);
|
||||
std::shared_ptr<BtMessageValidator> validator
|
||||
(new BtHandshakeMessageValidator
|
||||
(msg.get(), bittorrent::getInfoHash(downloadContext_)));
|
||||
msg->setBtMessageValidator(validator);
|
||||
msg->setBtMessageValidator(make_unique<BtHandshakeMessageValidator>
|
||||
(msg.get(),
|
||||
bittorrent::getInfoHash(downloadContext_)));
|
||||
setCommonProperty(msg.get());
|
||||
return msg;
|
||||
}
|
||||
|
|
|
@ -256,16 +256,14 @@ void BtRequestMessageTest::testToString() {
|
|||
void BtRequestMessageTest::testValidate() {
|
||||
BtRequestMessage msg(0, 0, 16*1024);
|
||||
msg.setBtMessageValidator
|
||||
(std::shared_ptr<BtMessageValidator>
|
||||
(new RangeBtMessageValidator(&msg, 1024, 256*1024)));
|
||||
(make_unique<RangeBtMessageValidator>(&msg, 1024, 256*1024));
|
||||
msg.validate();
|
||||
}
|
||||
|
||||
void BtRequestMessageTest::testValidate_lengthTooLong() {
|
||||
BtRequestMessage msg(0, 0, 16*1024+1);
|
||||
msg.setBtMessageValidator
|
||||
(std::shared_ptr<BtMessageValidator>
|
||||
(new RangeBtMessageValidator(&msg, 1024, 256*1024)));
|
||||
(make_unique<RangeBtMessageValidator>(&msg, 1024, 256*1024));
|
||||
try {
|
||||
msg.validate();
|
||||
CPPUNIT_FAIL("exception must be thrown.");
|
||||
|
|
Loading…
Reference in New Issue