diff --git a/src/BtExtendedMessage.cc b/src/BtExtendedMessage.cc index 901d72f3e..6ecf47900 100644 --- a/src/BtExtendedMessage.cc +++ b/src/BtExtendedMessage.cc @@ -51,14 +51,12 @@ namespace aria2 { const char BtExtendedMessage::NAME[] = "extended"; BtExtendedMessage::BtExtendedMessage -(const std::shared_ptr& extensionMessage): +(std::unique_ptr extensionMessage): SimpleBtMessage(ID, NAME), - extensionMessage_(extensionMessage), + extensionMessage_(std::move(extensionMessage)), msgLength_(0) {} -BtExtendedMessage::~BtExtendedMessage() {} - unsigned char* BtExtendedMessage::createMessage() { /** @@ -97,16 +95,15 @@ std::string BtExtendedMessage::toString() const { } std::unique_ptr -BtExtendedMessage::create(const std::shared_ptr& factory, +BtExtendedMessage::create(ExtensionMessageFactory* factory, const std::shared_ptr& peer, const unsigned char* data, size_t dataLength) { bittorrent::assertPayloadLengthGreater(1, dataLength, NAME); bittorrent::assertID(ID, data, NAME); assert(factory); - std::shared_ptr extmsg = factory->createMessage(data+1, - dataLength-1); - return make_unique(extmsg); + return make_unique + (factory->createMessage(data+1, dataLength-1)); } void BtExtendedMessage::doReceivedAction() @@ -116,4 +113,10 @@ void BtExtendedMessage::doReceivedAction() } } +const std::unique_ptr& +BtExtendedMessage::getExtensionMessage() const +{ + return extensionMessage_; +} + } // namespace aria2 diff --git a/src/BtExtendedMessage.h b/src/BtExtendedMessage.h index 584287e93..1238c96a4 100644 --- a/src/BtExtendedMessage.h +++ b/src/BtExtendedMessage.h @@ -44,20 +44,19 @@ class ExtensionMessageFactory; class BtExtendedMessage:public SimpleBtMessage { private: - std::shared_ptr extensionMessage_; + std::unique_ptr extensionMessage_; size_t msgLength_; public: - BtExtendedMessage(const std::shared_ptr& extensionMessage = - std::shared_ptr()); - virtual ~BtExtendedMessage(); + BtExtendedMessage(std::unique_ptr extensionMessage = + std::unique_ptr{}); static const uint8_t ID = 20; static const char NAME[]; static std::unique_ptr create - (const std::shared_ptr& factory, + (ExtensionMessageFactory* factory, const std::shared_ptr& peer, const unsigned char* data, size_t dataLength); @@ -72,11 +71,7 @@ public: virtual std::string toString() const; - const std::shared_ptr& getExtensionMessage() const - { - return extensionMessage_; - } - + const std::unique_ptr& getExtensionMessage() const; }; } // namespace aria2 diff --git a/src/BtMessageFactory.h b/src/BtMessageFactory.h index a664828a0..fb9e41fd5 100644 --- a/src/BtMessageFactory.h +++ b/src/BtMessageFactory.h @@ -114,7 +114,7 @@ public: virtual std::unique_ptr createPortMessage(uint16_t port) = 0; virtual std::unique_ptr - createBtExtendedMessage(const std::shared_ptr& msg) = 0; + createBtExtendedMessage(std::unique_ptr msg) = 0; }; } // namespace aria2 diff --git a/src/DefaultBtInteractive.cc b/src/DefaultBtInteractive.cc index 16c9149ed..59a2d8bf1 100644 --- a/src/DefaultBtInteractive.cc +++ b/src/DefaultBtInteractive.cc @@ -199,7 +199,7 @@ void DefaultBtInteractive::addPortMessageToQueue() void DefaultBtInteractive::addHandshakeExtendedMessageToQueue() { - std::shared_ptr m(new HandshakeExtensionMessage()); + auto m = make_unique(); m->setClientVersion("aria2/" PACKAGE_VERSION); m->setTCPPort(tcpPort_); m->setExtensions(extensionMessageRegistry_->getExtensions()); @@ -207,7 +207,8 @@ void DefaultBtInteractive::addHandshakeExtendedMessageToQueue() if(!attrs->metadata.empty()) { m->setMetadataSize(attrs->metadataSize); } - dispatcher_->addMessageToQueue(messageFactory_->createBtExtendedMessage(m)); + dispatcher_->addMessageToQueue + (messageFactory_->createBtExtendedMessage(std::move(m))); } void DefaultBtInteractive::addBitfieldMessageToQueue() { @@ -479,32 +480,26 @@ void DefaultBtInteractive::checkActiveInteraction() void DefaultBtInteractive::addPeerExchangeMessage() { - if(pexTimer_. - difference(global::wallclock()) >= UTPexExtensionMessage::DEFAULT_INTERVAL) { - std::shared_ptr m - (new UTPexExtensionMessage(peer_->getExtensionMessageID - (ExtensionMessageRegistry::UT_PEX))); - - const PeerSet& usedPeers = peerStorage_->getUsedPeers(); - for(PeerSet::const_iterator i = usedPeers.begin(), eoi = usedPeers.end(); + if(pexTimer_.difference(global::wallclock()) >= + UTPexExtensionMessage::DEFAULT_INTERVAL) { + auto m = make_unique + (peer_->getExtensionMessageID(ExtensionMessageRegistry::UT_PEX)); + auto& usedPeers = peerStorage_->getUsedPeers(); + for(auto i = std::begin(usedPeers), eoi = std::end(usedPeers); i != eoi && !m->freshPeersAreFull(); ++i) { if((*i)->isActive() && peer_->getIPAddress() != (*i)->getIPAddress()) { m->addFreshPeer(*i); } } - const std::deque >& droppedPeers = - peerStorage_->getDroppedPeers(); - for(std::deque >::const_iterator i = - droppedPeers.begin(), eoi = droppedPeers.end(); - i != eoi && !m->droppedPeersAreFull(); - ++i) { + auto& droppedPeers = peerStorage_->getDroppedPeers(); + for(auto i = std::begin(droppedPeers), eoi = std::end(droppedPeers); + i != eoi && !m->droppedPeersAreFull(); ++i) { if(peer_->getIPAddress() != (*i)->getIPAddress()) { m->addDroppedPeer(*i); } } - dispatcher_->addMessageToQueue - (messageFactory_->createBtExtendedMessage(m)); + (messageFactory_->createBtExtendedMessage(std::move(m))); pexTimer_ = global::wallclock(); } } @@ -522,7 +517,7 @@ void DefaultBtInteractive::doInteractionProcessing() { size_t num = utMetadataRequestTracker_->avail(); if(num > 0) { auto requests = - utMetadataRequestFactory_->create(num, pieceStorage_); + utMetadataRequestFactory_->create(num, pieceStorage_.get()); for(auto& i : requests) { dispatcher_->addMessageToQueue(std::move(i)); } @@ -531,11 +526,9 @@ void DefaultBtInteractive::doInteractionProcessing() { perSecTimer_ = global::wallclock(); // Drop timeout request after queuing message to give a chance // to other connection to request piece. - std::vector indexes = - utMetadataRequestTracker_->removeTimeoutEntry(); - for(std::vector::const_iterator i = indexes.begin(), - eoi = indexes.end(); i != eoi; ++i) { - pieceStorage_->cancelPiece(pieceStorage_->getPiece(*i), cuid_); + auto indexes = utMetadataRequestTracker_->removeTimeoutEntry(); + for(auto idx : indexes) { + pieceStorage_->cancelPiece(pieceStorage_->getPiece(idx), cuid_); } } if(pieceStorage_->downloadFinished()) { @@ -645,9 +638,9 @@ void DefaultBtInteractive::setPeerConnection } void DefaultBtInteractive::setExtensionMessageFactory -(const std::shared_ptr& factory) +(std::unique_ptr factory) { - extensionMessageFactory_ = factory; + extensionMessageFactory_ = std::move(factory); } void DefaultBtInteractive::setBtMessageFactory diff --git a/src/DefaultBtInteractive.h b/src/DefaultBtInteractive.h index b26d5e81e..51a23acc3 100644 --- a/src/DefaultBtInteractive.h +++ b/src/DefaultBtInteractive.h @@ -117,7 +117,7 @@ private: // holds the reference so that peerConnection_ is not deleted. std::shared_ptr peerConnection_; std::shared_ptr messageFactory_; - std::shared_ptr extensionMessageFactory_; + std::unique_ptr extensionMessageFactory_; std::shared_ptr extensionMessageRegistry_; std::shared_ptr utMetadataRequestFactory_; std::shared_ptr utMetadataRequestTracker_; @@ -219,7 +219,7 @@ public: void setBtMessageFactory(const std::shared_ptr& factory); void setExtensionMessageFactory - (const std::shared_ptr& factory); + (std::unique_ptr factory); void setExtensionMessageRegistry (const std::shared_ptr& registry) diff --git a/src/DefaultBtMessageFactory.cc b/src/DefaultBtMessageFactory.cc index 978b5c8df..297bf82b5 100644 --- a/src/DefaultBtMessageFactory.cc +++ b/src/DefaultBtMessageFactory.cc @@ -79,6 +79,7 @@ DefaultBtMessageFactory::DefaultBtMessageFactory() dispatcher_{nullptr}, requestFactory_{nullptr}, peerConnection_{nullptr}, + extensionMessageFactory_{nullptr}, localNode_{nullptr}, routingTable_{nullptr}, taskQueue_{nullptr}, @@ -402,9 +403,9 @@ DefaultBtMessageFactory::createPortMessage(uint16_t port) std::unique_ptr DefaultBtMessageFactory::createBtExtendedMessage -(const std::shared_ptr& exmsg) +(std::unique_ptr exmsg) { - auto msg = make_unique(exmsg); + auto msg = make_unique(std::move(exmsg)); setCommonProperty(msg.get()); return msg; } @@ -447,7 +448,7 @@ void DefaultBtMessageFactory::setBtMessageDispatcher } void DefaultBtMessageFactory::setExtensionMessageFactory -(const std::shared_ptr& factory) +(ExtensionMessageFactory* factory) { extensionMessageFactory_ = factory; } diff --git a/src/DefaultBtMessageFactory.h b/src/DefaultBtMessageFactory.h index 28299efb2..761ad4a0d 100644 --- a/src/DefaultBtMessageFactory.h +++ b/src/DefaultBtMessageFactory.h @@ -70,7 +70,7 @@ private: PeerConnection* peerConnection_; - std::shared_ptr extensionMessageFactory_; + ExtensionMessageFactory* extensionMessageFactory_; DHTNode* localNode_; @@ -133,7 +133,7 @@ public: virtual std::unique_ptr createPortMessage(uint16_t port); virtual std::unique_ptr - createBtExtendedMessage(const std::shared_ptr& msg); + createBtExtendedMessage(std::unique_ptr msg); void setPeer(const std::shared_ptr& peer); @@ -159,8 +159,7 @@ public: void setPeerConnection(PeerConnection* connection); - void setExtensionMessageFactory - (const std::shared_ptr& factory); + void setExtensionMessageFactory(ExtensionMessageFactory* factory); void setLocalNode(DHTNode* localNode); diff --git a/src/DefaultExtensionMessageFactory.cc b/src/DefaultExtensionMessageFactory.cc index 202b1ca48..98b400070 100644 --- a/src/DefaultExtensionMessageFactory.cc +++ b/src/DefaultExtensionMessageFactory.cc @@ -58,34 +58,31 @@ namespace aria2 { DefaultExtensionMessageFactory::DefaultExtensionMessageFactory() - : messageFactory_(0), - dispatcher_(0), - tracker_(0) + : DefaultExtensionMessageFactory{std::shared_ptr{}, nullptr} {} DefaultExtensionMessageFactory::DefaultExtensionMessageFactory -(const std::shared_ptr& peer, - const std::shared_ptr& registry) - : peer_(peer), - registry_(registry), - messageFactory_(0), - dispatcher_(0), - tracker_(0) +(const std::shared_ptr& peer, ExtensionMessageRegistry* registry) + : peerStorage_{nullptr}, + peer_{peer}, + registry_{registry}, + dctx_{nullptr}, + messageFactory_{nullptr}, + dispatcher_{nullptr}, + tracker_{nullptr} {} -DefaultExtensionMessageFactory::~DefaultExtensionMessageFactory() {} - -std::shared_ptr -DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t length) +std::unique_ptr +DefaultExtensionMessageFactory::createMessage +(const unsigned char* data, size_t length) { uint8_t extensionMessageID = *data; if(extensionMessageID == 0) { // handshake - HandshakeExtensionMessage* m = - HandshakeExtensionMessage::create(data, length); + auto m = HandshakeExtensionMessage::create(data, length); m->setPeer(peer_); m->setDownloadContext(dctx_); - return std::shared_ptr(m); + return std::move(m); } else { const char* extensionName = registry_->getExtensionName(extensionMessageID); if(!extensionName) { @@ -95,9 +92,9 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t } if(strcmp(extensionName, "ut_pex") == 0) { // uTorrent compatible Peer-Exchange - UTPexExtensionMessage* m = UTPexExtensionMessage::create(data, length); + auto m = UTPexExtensionMessage::create(data, length); m->setPeerStorage(peerStorage_); - return std::shared_ptr(m); + return std::move(m); } else if(strcmp(extensionName, "ut_metadata") == 0) { if(length == 0) { throw DL_ABORT_EX @@ -106,8 +103,7 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t static_cast(length))); } size_t end; - std::shared_ptr decoded = - bencode2::decode(data+1, length - 1, end); + auto decoded = bencode2::decode(data+1, length - 1, end); const Dict* dict = downcast(decoded); if(!dict) { throw DL_ABORT_EX("Bad ut_metadata: dictionary not found"); @@ -122,14 +118,14 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t } switch(msgType->i()) { case 0: { - UTMetadataRequestExtensionMessage* m - (new UTMetadataRequestExtensionMessage(extensionMessageID)); + auto m = make_unique + (extensionMessageID); m->setIndex(index->i()); m->setDownloadContext(dctx_); m->setPeer(peer_); m->setBtMessageFactory(messageFactory_); m->setBtMessageDispatcher(dispatcher_); - return std::shared_ptr(m); + return std::move(m); } case 1: { if(end == length) { @@ -139,22 +135,23 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t if(!totalSize) { throw DL_ABORT_EX("Bad ut_metadata data: total_size not found"); } - UTMetadataDataExtensionMessage* m - (new UTMetadataDataExtensionMessage(extensionMessageID)); + auto m = make_unique + (extensionMessageID); m->setIndex(index->i()); m->setTotalSize(totalSize->i()); m->setData(&data[1+end], &data[length]); m->setUTMetadataRequestTracker(tracker_); - m->setPieceStorage(dctx_->getOwnerRequestGroup()->getPieceStorage()); + m->setPieceStorage + (dctx_->getOwnerRequestGroup()->getPieceStorage().get()); m->setDownloadContext(dctx_); - return std::shared_ptr(m); + return std::move(m); } case 2: { - UTMetadataRejectExtensionMessage* m - (new UTMetadataRejectExtensionMessage(extensionMessageID)); + auto m = make_unique + (extensionMessageID); m->setIndex(index->i()); // No need to inject tracker because peer will be disconnected. - return std::shared_ptr(m); + return std::move(m); } default: throw DL_ABORT_EX @@ -170,8 +167,7 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t } } -void DefaultExtensionMessageFactory::setPeerStorage -(const std::shared_ptr& peerStorage) +void DefaultExtensionMessageFactory::setPeerStorage(PeerStorage* peerStorage) { peerStorage_ = peerStorage; } @@ -181,4 +177,33 @@ void DefaultExtensionMessageFactory::setPeer(const std::shared_ptr& peer) peer_ = peer; } +void DefaultExtensionMessageFactory::setExtensionMessageRegistry +(ExtensionMessageRegistry* registry) +{ + registry_ = registry; +} + +void DefaultExtensionMessageFactory::setDownloadContext(DownloadContext* dctx) +{ + dctx_ = dctx; +} + +void DefaultExtensionMessageFactory::setBtMessageFactory +(BtMessageFactory* factory) +{ + messageFactory_ = factory; +} + +void DefaultExtensionMessageFactory::setBtMessageDispatcher +(BtMessageDispatcher* disp) +{ + dispatcher_ = disp; +} + +void DefaultExtensionMessageFactory::setUTMetadataRequestTracker +(UTMetadataRequestTracker* tracker) +{ + tracker_ = tracker; +} + } // namespace aria2 diff --git a/src/DefaultExtensionMessageFactory.h b/src/DefaultExtensionMessageFactory.h index ab56d33dc..7be897e23 100644 --- a/src/DefaultExtensionMessageFactory.h +++ b/src/DefaultExtensionMessageFactory.h @@ -49,13 +49,13 @@ class UTMetadataRequestTracker; class DefaultExtensionMessageFactory:public ExtensionMessageFactory { private: - std::shared_ptr peerStorage_; + PeerStorage* peerStorage_; std::shared_ptr peer_; - std::shared_ptr registry_; + ExtensionMessageRegistry* registry_; - std::shared_ptr dctx_; + DownloadContext* dctx_; BtMessageFactory* messageFactory_; @@ -66,43 +66,24 @@ public: DefaultExtensionMessageFactory(); DefaultExtensionMessageFactory - (const std::shared_ptr& peer, - const std::shared_ptr& registry); + (const std::shared_ptr& peer, ExtensionMessageRegistry* registry); - virtual ~DefaultExtensionMessageFactory(); - - virtual std::shared_ptr + virtual std::unique_ptr createMessage(const unsigned char* data, size_t length); - void setPeerStorage(const std::shared_ptr& peerStorage); + void setPeerStorage(PeerStorage* peerStorage); void setPeer(const std::shared_ptr& peer); - void setExtensionMessageRegistry - (const std::shared_ptr& registry) - { - registry_ = registry; - } + void setExtensionMessageRegistry(ExtensionMessageRegistry* registry); - void setDownloadContext(const std::shared_ptr& dctx) - { - dctx_ = dctx; - } + void setDownloadContext(DownloadContext* dctx); - void setBtMessageFactory(BtMessageFactory* factory) - { - messageFactory_ = factory; - } + void setBtMessageFactory(BtMessageFactory* factory); - void setBtMessageDispatcher(BtMessageDispatcher* disp) - { - dispatcher_ = disp; - } + void setBtMessageDispatcher(BtMessageDispatcher* disp); - void setUTMetadataRequestTracker(UTMetadataRequestTracker* tracker) - { - tracker_ = tracker; - } + void setUTMetadataRequestTracker(UTMetadataRequestTracker* tracker); }; } // namespace aria2 diff --git a/src/ExtensionMessageFactory.h b/src/ExtensionMessageFactory.h index 6cde20419..557ef4bd1 100644 --- a/src/ExtensionMessageFactory.h +++ b/src/ExtensionMessageFactory.h @@ -47,7 +47,7 @@ class ExtensionMessageFactory { public: virtual ~ExtensionMessageFactory() {} - virtual std::shared_ptr + virtual std::unique_ptr createMessage(const unsigned char* data, size_t length) = 0; }; diff --git a/src/HandshakeExtensionMessage.cc b/src/HandshakeExtensionMessage.cc index f37526f11..b31ef4187 100644 --- a/src/HandshakeExtensionMessage.cc +++ b/src/HandshakeExtensionMessage.cc @@ -52,12 +52,9 @@ namespace aria2 { const char HandshakeExtensionMessage::EXTENSION_NAME[] = "handshake"; HandshakeExtensionMessage::HandshakeExtensionMessage() - : tcpPort_(0), - metadataSize_(0) + : tcpPort_{0}, metadataSize_{0}, dctx_{nullptr} {} -HandshakeExtensionMessage::~HandshakeExtensionMessage() {} - std::string HandshakeExtensionMessage::getPayload() { Dict dict; @@ -127,12 +124,9 @@ void HandshakeExtensionMessage::doReceivedAction() dctx_->getFirstFileEntry()->setLength(metadataSize_); dctx_->markTotalLengthIsKnown(); dctx_->getOwnerRequestGroup()->initPieceStorage(); - - std::shared_ptr pieceStorage = - dctx_->getOwnerRequestGroup()->getPieceStorage(); // We enter 'end game' mode from the start to get metadata // quickly. - pieceStorage->enterEndGame(); + dctx_->getOwnerRequestGroup()->getPieceStorage()->enterEndGame(); } peer_->reconfigureSessionResource(dctx_->getPieceLength(), dctx_->getTotalLength()); @@ -164,7 +158,7 @@ uint8_t HandshakeExtensionMessage::getExtensionMessageID(int key) const return extreg_.getExtensionMessageID(key); } -HandshakeExtensionMessage* +std::unique_ptr HandshakeExtensionMessage::create(const unsigned char* data, size_t length) { if(length < 1) { @@ -174,13 +168,13 @@ HandshakeExtensionMessage::create(const unsigned char* data, size_t length) } A2_LOG_DEBUG(fmt("Creating HandshakeExtensionMessage from %s", util::percentEncode(data, length).c_str())); - std::shared_ptr decoded = bencode2::decode(data+1, length - 1); + auto decoded = bencode2::decode(data+1, length - 1); const Dict* dict = downcast(decoded); if(!dict) { throw DL_ABORT_EX ("Unexpected payload format for extended message handshake"); } - HandshakeExtensionMessage* msg(new HandshakeExtensionMessage()); + auto msg = make_unique(); const Integer* port = downcast(dict->get("p")); if(port && 0 < port->i() && port->i() < 65536) { msg->tcpPort_ = port->i(); diff --git a/src/HandshakeExtensionMessage.h b/src/HandshakeExtensionMessage.h index 7690a485b..33821dcf1 100644 --- a/src/HandshakeExtensionMessage.h +++ b/src/HandshakeExtensionMessage.h @@ -57,14 +57,12 @@ private: ExtensionMessageRegistry extreg_; - std::shared_ptr dctx_; + DownloadContext* dctx_; std::shared_ptr peer_; public: HandshakeExtensionMessage(); - virtual ~HandshakeExtensionMessage(); - virtual std::string getPayload(); virtual uint8_t getExtensionMessageID() const @@ -113,7 +111,7 @@ public: metadataSize_ = size; } - void setDownloadContext(const std::shared_ptr& dctx) + void setDownloadContext(DownloadContext* dctx) { dctx_ = dctx; } @@ -126,7 +124,7 @@ public: void setPeer(const std::shared_ptr& peer); - static HandshakeExtensionMessage* + static std::unique_ptr create(const unsigned char* data, size_t dataLength); }; diff --git a/src/PeerInteractionCommand.cc b/src/PeerInteractionCommand.cc index f49404354..bddd81d52 100644 --- a/src/PeerInteractionCommand.cc +++ b/src/PeerInteractionCommand.cc @@ -132,25 +132,22 @@ PeerInteractionCommand::PeerInteractionCommand utMetadataRequestTracker.reset(new UTMetadataRequestTracker()); } - DefaultExtensionMessageFactory* extensionMessageFactoryPtr - (new DefaultExtensionMessageFactory(getPeer(), exMsgRegistry)); - extensionMessageFactoryPtr->setPeerStorage(peerStorage); - extensionMessageFactoryPtr->setDownloadContext - (requestGroup_->getDownloadContext()); - extensionMessageFactoryPtr->setUTMetadataRequestTracker + auto extensionMessageFactory = + make_unique(getPeer(), + exMsgRegistry.get()); + extensionMessageFactory->setPeerStorage(peerStorage.get()); + extensionMessageFactory->setDownloadContext + (requestGroup_->getDownloadContext().get()); + extensionMessageFactory->setUTMetadataRequestTracker (utMetadataRequestTracker.get()); // PieceStorage will be set later. - std::shared_ptr extensionMessageFactory - (extensionMessageFactoryPtr); - - DefaultBtMessageFactory* factoryPtr(new DefaultBtMessageFactory()); factoryPtr->setCuid(cuid); factoryPtr->setDownloadContext(requestGroup_->getDownloadContext().get()); factoryPtr->setPieceStorage(pieceStorage.get()); factoryPtr->setPeerStorage(peerStorage.get()); - factoryPtr->setExtensionMessageFactory(extensionMessageFactory); + factoryPtr->setExtensionMessageFactory(extensionMessageFactory.get()); factoryPtr->setPeer(getPeer()); if(family == AF_INET) { factoryPtr->setLocalNode(DHTRegistry::getData().localNode.get()); @@ -218,6 +215,30 @@ PeerInteractionCommand::PeerInteractionCommand reqFactoryPtr->setCuid(cuid); std::shared_ptr reqFactory(reqFactoryPtr); + // reverse depends + factoryPtr->setBtMessageDispatcher(dispatcherPtr); + factoryPtr->setBtRequestFactory(reqFactoryPtr); + factoryPtr->setPeerConnection(peerConnection.get()); + + extensionMessageFactory->setBtMessageDispatcher(dispatcherPtr); + extensionMessageFactory->setBtMessageFactory(factoryPtr); + + if(metadataGetMode) { + utMetadataRequestFactory->setCuid(cuid); + utMetadataRequestFactory->setDownloadContext + (requestGroup_->getDownloadContext().get()); + utMetadataRequestFactory->setBtMessageDispatcher(dispatcherPtr); + utMetadataRequestFactory->setBtMessageFactory(factoryPtr); + utMetadataRequestFactory->setPeer(getPeer()); + utMetadataRequestFactory->setUTMetadataRequestTracker + (utMetadataRequestTracker.get()); + } + + getPeer()->allocateSessionResource + (requestGroup_->getDownloadContext()->getPieceLength(), + requestGroup_->getDownloadContext()->getTotalLength()); + getPeer()->setBtMessageDispatcher(dispatcherPtr); + DefaultBtInteractive* btInteractivePtr (new DefaultBtInteractive(requestGroup_->getDownloadContext(), getPeer())); btInteractivePtr->setBtRuntime(btRuntime_); @@ -228,7 +249,8 @@ PeerInteractionCommand::PeerInteractionCommand btInteractivePtr->setDispatcher(dispatcher); btInteractivePtr->setBtRequestFactory(reqFactory); btInteractivePtr->setPeerConnection(peerConnection); - btInteractivePtr->setExtensionMessageFactory(extensionMessageFactory); + btInteractivePtr->setExtensionMessageFactory + (std::move(extensionMessageFactory)); btInteractivePtr->setExtensionMessageRegistry(exMsgRegistry); btInteractivePtr->setKeepAliveInterval (getOption()->getAsInt(PREF_BT_KEEP_ALIVE_INTERVAL)); @@ -264,29 +286,6 @@ PeerInteractionCommand::PeerInteractionCommand btInteractive_ = btInteractive; - // reverse depends - factoryPtr->setBtMessageDispatcher(dispatcherPtr); - factoryPtr->setBtRequestFactory(reqFactoryPtr); - factoryPtr->setPeerConnection(peerConnection.get()); - - extensionMessageFactoryPtr->setBtMessageDispatcher(dispatcherPtr); - extensionMessageFactoryPtr->setBtMessageFactory(factoryPtr); - - if(metadataGetMode) { - utMetadataRequestFactory->setCuid(cuid); - utMetadataRequestFactory->setDownloadContext - (requestGroup_->getDownloadContext()); - utMetadataRequestFactory->setBtMessageDispatcher(dispatcherPtr); - utMetadataRequestFactory->setBtMessageFactory(factoryPtr); - utMetadataRequestFactory->setPeer(getPeer()); - utMetadataRequestFactory->setUTMetadataRequestTracker - (utMetadataRequestTracker.get()); - } - - getPeer()->allocateSessionResource - (requestGroup_->getDownloadContext()->getPieceLength(), - requestGroup_->getDownloadContext()->getTotalLength()); - getPeer()->setBtMessageDispatcher(dispatcherPtr); btRuntime_->increaseConnections(); requestGroup_->increaseNumCommand(); diff --git a/src/UTMetadataDataExtensionMessage.cc b/src/UTMetadataDataExtensionMessage.cc index 88d78d716..208749c06 100644 --- a/src/UTMetadataDataExtensionMessage.cc +++ b/src/UTMetadataDataExtensionMessage.cc @@ -54,13 +54,13 @@ namespace aria2 { UTMetadataDataExtensionMessage::UTMetadataDataExtensionMessage (uint8_t extensionMessageID) - : UTMetadataExtensionMessage(extensionMessageID), - totalSize_(0), - tracker_(0) + : UTMetadataExtensionMessage{extensionMessageID}, + totalSize_{0}, + dctx_{nullptr}, + pieceStorage_{nullptr}, + tracker_{nullptr} {} -UTMetadataDataExtensionMessage::~UTMetadataDataExtensionMessage() {} - std::string UTMetadataDataExtensionMessage::getPayload() { Dict dict; @@ -109,19 +109,39 @@ void UTMetadataDataExtensionMessage::doReceivedAction() } } +void UTMetadataDataExtensionMessage::setTotalSize(size_t totalSize) +{ + totalSize_ = totalSize; +} + +size_t UTMetadataDataExtensionMessage::getTotalSize() const +{ + return totalSize_; +} + void UTMetadataDataExtensionMessage::setData(const std::string& data) { data_ = data; } +const std::string& UTMetadataDataExtensionMessage::getData() const +{ + return data_; +} + void UTMetadataDataExtensionMessage::setPieceStorage -(const std::shared_ptr& pieceStorage) +(PieceStorage* pieceStorage) { pieceStorage_ = pieceStorage; } -void UTMetadataDataExtensionMessage::setDownloadContext -(const std::shared_ptr& dctx) +void UTMetadataDataExtensionMessage::setUTMetadataRequestTracker +(UTMetadataRequestTracker* tracker) +{ + tracker_ = tracker; +} + +void UTMetadataDataExtensionMessage::setDownloadContext(DownloadContext* dctx) { dctx_ = dctx; } diff --git a/src/UTMetadataDataExtensionMessage.h b/src/UTMetadataDataExtensionMessage.h index ca8ff59e9..873d3f901 100644 --- a/src/UTMetadataDataExtensionMessage.h +++ b/src/UTMetadataDataExtensionMessage.h @@ -51,31 +51,23 @@ private: std::string data_; - std::shared_ptr dctx_; + DownloadContext* dctx_; - std::shared_ptr pieceStorage_; + PieceStorage* pieceStorage_; UTMetadataRequestTracker* tracker_; public: UTMetadataDataExtensionMessage(uint8_t extensionMessageID); - ~UTMetadataDataExtensionMessage(); - virtual std::string getPayload(); virtual std::string toString() const; virtual void doReceivedAction(); - void setTotalSize(size_t totalSize) - { - totalSize_ = totalSize; - } + void setTotalSize(size_t totalSize); - size_t getTotalSize() const - { - return totalSize_; - } + size_t getTotalSize() const; void setData(const std::string& data); @@ -85,19 +77,13 @@ public: data_.assign(first, last); } - const std::string& getData() const - { - return data_; - } + const std::string& getData() const; - void setPieceStorage(const std::shared_ptr& pieceStorage); + void setPieceStorage(PieceStorage* pieceStorage); - void setUTMetadataRequestTracker(UTMetadataRequestTracker* tracker) - { - tracker_ = tracker; - } + void setUTMetadataRequestTracker(UTMetadataRequestTracker* tracker); - void setDownloadContext(const std::shared_ptr& dctx); + void setDownloadContext(DownloadContext* dctx); }; } // namespace aria2 diff --git a/src/UTMetadataRejectExtensionMessage.cc b/src/UTMetadataRejectExtensionMessage.cc index 887b44af2..b23ae57a4 100644 --- a/src/UTMetadataRejectExtensionMessage.cc +++ b/src/UTMetadataRejectExtensionMessage.cc @@ -41,8 +41,9 @@ namespace aria2 { UTMetadataRejectExtensionMessage::UTMetadataRejectExtensionMessage -(uint8_t extensionMessageID): - UTMetadataExtensionMessage(extensionMessageID) {} +(uint8_t extensionMessageID) + : UTMetadataExtensionMessage{extensionMessageID} +{} std::string UTMetadataRejectExtensionMessage::getPayload() { diff --git a/src/UTMetadataRequestExtensionMessage.cc b/src/UTMetadataRequestExtensionMessage.cc index 21795929e..42b9a8872 100644 --- a/src/UTMetadataRequestExtensionMessage.cc +++ b/src/UTMetadataRequestExtensionMessage.cc @@ -54,13 +54,13 @@ namespace aria2 { UTMetadataRequestExtensionMessage::UTMetadataRequestExtensionMessage -(uint8_t extensionMessageID):UTMetadataExtensionMessage(extensionMessageID), - dispatcher_(0), - messageFactory_(0) +(uint8_t extensionMessageID) + : UTMetadataExtensionMessage{extensionMessageID}, + dctx_{nullptr}, + dispatcher_{nullptr}, + messageFactory_{nullptr} {} -UTMetadataRequestExtensionMessage::~UTMetadataRequestExtensionMessage() {} - std::string UTMetadataRequestExtensionMessage::getPayload() { Dict dict; @@ -81,25 +81,22 @@ void UTMetadataRequestExtensionMessage::doReceivedAction() uint8_t id = peer_->getExtensionMessageID (ExtensionMessageRegistry::UT_METADATA); if(attrs->metadata.empty()) { - std::shared_ptr m - (new UTMetadataRejectExtensionMessage(id)); + auto m = make_unique(id); m->setIndex(getIndex()); dispatcher_->addMessageToQueue - (messageFactory_->createBtExtendedMessage(m)); + (messageFactory_->createBtExtendedMessage(std::move(m))); }else if(getIndex()*METADATA_PIECE_SIZE < attrs->metadataSize) { - std::shared_ptr m - (new UTMetadataDataExtensionMessage(id)); + auto m = make_unique(id); m->setIndex(getIndex()); m->setTotalSize(attrs->metadataSize); - std::string::const_iterator begin = - attrs->metadata.begin()+getIndex()*METADATA_PIECE_SIZE; - std::string::const_iterator end = + auto begin = std::begin(attrs->metadata)+getIndex()*METADATA_PIECE_SIZE; + auto end = (getIndex()+1)*METADATA_PIECE_SIZE <= attrs->metadata.size()? - attrs->metadata.begin()+(getIndex()+1)*METADATA_PIECE_SIZE: - attrs->metadata.end(); + std::begin(attrs->metadata)+(getIndex()+1)*METADATA_PIECE_SIZE: + std::end(attrs->metadata); m->setData(begin, end); dispatcher_->addMessageToQueue - (messageFactory_->createBtExtendedMessage(m)); + (messageFactory_->createBtExtendedMessage(std::move(m))); } else { throw DL_ABORT_EX (fmt("Metadata piece index is too big. piece=%lu", @@ -108,14 +105,27 @@ void UTMetadataRequestExtensionMessage::doReceivedAction() } void UTMetadataRequestExtensionMessage::setDownloadContext -(const std::shared_ptr& dctx) +(DownloadContext* dctx) { dctx_ = dctx; } -void UTMetadataRequestExtensionMessage::setPeer(const std::shared_ptr& peer) +void UTMetadataRequestExtensionMessage::setPeer +(const std::shared_ptr& peer) { peer_ = peer; } +void UTMetadataRequestExtensionMessage::setBtMessageDispatcher +(BtMessageDispatcher* disp) +{ + dispatcher_ = disp; +} + +void UTMetadataRequestExtensionMessage::setBtMessageFactory +(BtMessageFactory* factory) +{ + messageFactory_ = factory; +} + } // namespace aria2 diff --git a/src/UTMetadataRequestExtensionMessage.h b/src/UTMetadataRequestExtensionMessage.h index f7896f131..eaba6b3c0 100644 --- a/src/UTMetadataRequestExtensionMessage.h +++ b/src/UTMetadataRequestExtensionMessage.h @@ -48,7 +48,7 @@ class Peer; class UTMetadataRequestExtensionMessage:public UTMetadataExtensionMessage { private: - std::shared_ptr dctx_; + DownloadContext* dctx_; std::shared_ptr peer_; @@ -58,25 +58,17 @@ private: public: UTMetadataRequestExtensionMessage(uint8_t extensionMessageID); - ~UTMetadataRequestExtensionMessage(); - virtual std::string getPayload(); virtual std::string toString() const; virtual void doReceivedAction(); - void setDownloadContext(const std::shared_ptr& dctx); + void setDownloadContext(DownloadContext* dctx); - void setBtMessageDispatcher(BtMessageDispatcher* disp) - { - dispatcher_ = disp; - } + void setBtMessageDispatcher(BtMessageDispatcher* disp); - void setBtMessageFactory(BtMessageFactory* factory) - { - messageFactory_ = factory; - } + void setBtMessageFactory(BtMessageFactory* factory); void setPeer(const std::shared_ptr& peer); }; diff --git a/src/UTMetadataRequestFactory.cc b/src/UTMetadataRequestFactory.cc index fe895bfef..3824ec4cd 100644 --- a/src/UTMetadataRequestFactory.cc +++ b/src/UTMetadataRequestFactory.cc @@ -50,14 +50,15 @@ namespace aria2 { UTMetadataRequestFactory::UTMetadataRequestFactory() - : dispatcher_{nullptr}, + : dctx_{nullptr}, + dispatcher_{nullptr}, messageFactory_{nullptr}, tracker_{nullptr}, - cuid_(0) + cuid_{0} {} std::vector> UTMetadataRequestFactory::create -(size_t num, const std::shared_ptr& pieceStorage) +(size_t num, PieceStorage* pieceStorage) { auto msgs = std::vector>{}; while(num) { @@ -70,16 +71,15 @@ std::vector> UTMetadataRequestFactory::create --num; A2_LOG_DEBUG(fmt("Creating ut_metadata request index=%lu", static_cast(p->getIndex()))); - std::shared_ptr m - (new UTMetadataRequestExtensionMessage - (peer_->getExtensionMessageID(ExtensionMessageRegistry::UT_METADATA))); + auto m = make_unique + (peer_->getExtensionMessageID(ExtensionMessageRegistry::UT_METADATA)); m->setIndex(p->getIndex()); m->setDownloadContext(dctx_); m->setBtMessageDispatcher(dispatcher_); m->setBtMessageFactory(messageFactory_); m->setPeer(peer_); - msgs.push_back(messageFactory_->createBtExtendedMessage(m)); + msgs.push_back(messageFactory_->createBtExtendedMessage(std::move(m))); tracker_->add(p->getIndex()); } return msgs; diff --git a/src/UTMetadataRequestFactory.h b/src/UTMetadataRequestFactory.h index e8de1e67b..7e5688d85 100644 --- a/src/UTMetadataRequestFactory.h +++ b/src/UTMetadataRequestFactory.h @@ -54,7 +54,7 @@ class BtMessage; class UTMetadataRequestFactory { private: - std::shared_ptr dctx_; + DownloadContext* dctx_; std::shared_ptr peer_; @@ -70,9 +70,9 @@ public: // Creates and returns at most num of ut_metadata request // message. pieceStorage is used to identify missing piece. std::vector> create - (size_t num, const std::shared_ptr& pieceStorage); + (size_t num, PieceStorage* pieceStorage); - void setDownloadContext(const std::shared_ptr& dctx) + void setDownloadContext(DownloadContext* dctx) { dctx_ = dctx; } diff --git a/src/UTPexExtensionMessage.cc b/src/UTPexExtensionMessage.cc index 4def037f5..f005d307c 100644 --- a/src/UTPexExtensionMessage.cc +++ b/src/UTPexExtensionMessage.cc @@ -57,23 +57,18 @@ const size_t DEFAULT_MAX_DROPPED_PEER = 50; const char UTPexExtensionMessage::EXTENSION_NAME[] = "ut_pex"; -UTPexExtensionMessage::UTPexExtensionMessage(uint8_t extensionMessageID): - extensionMessageID_(extensionMessageID), - interval_(DEFAULT_INTERVAL), - maxFreshPeer_(DEFAULT_MAX_FRESH_PEER), - maxDroppedPeer_(DEFAULT_MAX_DROPPED_PEER) {} - -UTPexExtensionMessage::~UTPexExtensionMessage() {} +UTPexExtensionMessage::UTPexExtensionMessage(uint8_t extensionMessageID) + : extensionMessageID_{extensionMessageID}, + peerStorage_{nullptr}, + interval_{DEFAULT_INTERVAL}, + maxFreshPeer_{DEFAULT_MAX_FRESH_PEER}, + maxDroppedPeer_{DEFAULT_MAX_DROPPED_PEER} + {} std::string UTPexExtensionMessage::getPayload() { - std::pair, - std::pair > freshPeerPair = - createCompactPeerListAndFlag(freshPeers_); - std::pair, - std::pair > droppedPeerPair = - createCompactPeerListAndFlag(droppedPeers_); - + auto freshPeerPair = createCompactPeerListAndFlag(freshPeers_); + auto droppedPeerPair = createCompactPeerListAndFlag(droppedPeers_); Dict dict; if(!freshPeerPair.first.first.empty()) { dict.put("added", freshPeerPair.first.first); @@ -102,8 +97,7 @@ UTPexExtensionMessage::createCompactPeerListAndFlag std::string flagstring; std::string addrstring6; std::string flagstring6; - for(std::vector >::const_iterator itr = peers.begin(), - eoi = peers.end(); itr != eoi; ++itr) { + for(auto itr = std::begin(peers), eoi = std::end(peers); itr != eoi; ++itr) { unsigned char compact[COMPACT_LEN_IPV6]; int compactlen = bittorrent::packcompact (compact, (*itr)->getIPAddress(), (*itr)->getPort()); @@ -115,8 +109,10 @@ UTPexExtensionMessage::createCompactPeerListAndFlag flagstring6 += (*itr)->isSeeder() ? 0x02u : 0x00u; } } - return std::make_pair(std::make_pair(addrstring, flagstring), - std::make_pair(addrstring6, flagstring6)); + return std::make_pair(std::make_pair(std::move(addrstring), + std::move(flagstring)), + std::make_pair(std::move(addrstring6), + std::move(flagstring6))); } std::string UTPexExtensionMessage::toString() const @@ -143,6 +139,12 @@ bool UTPexExtensionMessage::addFreshPeer(const std::shared_ptr& peer) } } +const std::vector>& +UTPexExtensionMessage::getFreshPeers() const +{ + return freshPeers_; +} + bool UTPexExtensionMessage::freshPeersAreFull() const { return freshPeers_.size() >= maxFreshPeer_; @@ -159,6 +161,12 @@ bool UTPexExtensionMessage::addDroppedPeer(const std::shared_ptr& peer) } } +const std::vector>& +UTPexExtensionMessage::getDroppedPeers() const +{ + return droppedPeers_; +} + bool UTPexExtensionMessage::droppedPeersAreFull() const { return droppedPeers_.size() >= maxDroppedPeer_; @@ -174,13 +182,12 @@ void UTPexExtensionMessage::setMaxDroppedPeer(size_t maxDroppedPeer) maxDroppedPeer_ = maxDroppedPeer; } -void UTPexExtensionMessage::setPeerStorage -(const std::shared_ptr& peerStorage) +void UTPexExtensionMessage::setPeerStorage(PeerStorage* peerStorage) { peerStorage_ = peerStorage; } -UTPexExtensionMessage* +std::unique_ptr UTPexExtensionMessage::create(const unsigned char* data, size_t len) { if(len < 1) { @@ -188,9 +195,9 @@ UTPexExtensionMessage::create(const unsigned char* data, size_t len) EXTENSION_NAME, static_cast(len))); } - UTPexExtensionMessage* msg(new UTPexExtensionMessage(*data)); + auto msg = make_unique(*data); - std::shared_ptr decoded = bencode2::decode(data+1, len - 1); + auto decoded = bencode2::decode(data+1, len - 1); const Dict* dict = downcast(decoded); if(dict) { const String* added = downcast(dict->get("added")); diff --git a/src/UTPexExtensionMessage.h b/src/UTPexExtensionMessage.h index 6bbcd302e..e977f9f65 100644 --- a/src/UTPexExtensionMessage.h +++ b/src/UTPexExtensionMessage.h @@ -56,7 +56,7 @@ private: std::vector > droppedPeers_; - std::shared_ptr peerStorage_; + PeerStorage* peerStorage_; time_t interval_; @@ -65,14 +65,12 @@ private: size_t maxDroppedPeer_; std::pair, - std::pair > - createCompactPeerListAndFlag(const std::vector >& peers); + std::pair> + createCompactPeerListAndFlag(const std::vector>& peers); public: UTPexExtensionMessage(uint8_t extensionMessageID); - virtual ~UTPexExtensionMessage(); - virtual std::string getPayload(); virtual uint8_t getExtensionMessageID() const @@ -93,25 +91,19 @@ public: bool addFreshPeer(const std::shared_ptr& peer); - const std::vector >& getFreshPeers() const - { - return freshPeers_; - } + const std::vector>& getFreshPeers() const; bool freshPeersAreFull() const; bool addDroppedPeer(const std::shared_ptr& peer); - const std::vector >& getDroppedPeers() const - { - return droppedPeers_; - } + const std::vector>& getDroppedPeers() const; bool droppedPeersAreFull() const; - void setPeerStorage(const std::shared_ptr& peerStorage); + void setPeerStorage(PeerStorage* peerStorage); - static UTPexExtensionMessage* + static std::unique_ptr create(const unsigned char* data, size_t len); void setMaxFreshPeer(size_t maxFreshPeer); diff --git a/test/BtExtendedMessageTest.cc b/test/BtExtendedMessageTest.cc index a459e2871..642b9a2ce 100644 --- a/test/BtExtendedMessageTest.cc +++ b/test/BtExtendedMessageTest.cc @@ -33,11 +33,9 @@ public: CPPUNIT_TEST_SUITE_REGISTRATION(BtExtendedMessageTest); void BtExtendedMessageTest::testCreate() { - std::shared_ptr peer(new Peer("192.168.0.1", 6969)); + auto peer = std::make_shared("192.168.0.1", 6969); peer->allocateSessionResource(1024, 1024*1024); - - std::shared_ptr exmsgFactory - (new MockExtensionMessageFactory()); + auto exmsgFactory = MockExtensionMessageFactory{}; // payload:{4:name3:foo}->11bytes std::string payload = "4:name3:foo"; @@ -45,16 +43,14 @@ void BtExtendedMessageTest::testCreate() { bittorrent::createPeerMessageString((unsigned char*)msg, sizeof(msg), 13, 20); msg[5] = 1; // Set dummy extended message ID 1 memcpy(msg+6, payload.c_str(), payload.size()); - std::shared_ptr pm(BtExtendedMessage::create(exmsgFactory, - peer, - &msg[4], 13)); + auto pm = BtExtendedMessage::create(&exmsgFactory, peer, &msg[4], 13); CPPUNIT_ASSERT_EQUAL((uint8_t)20, pm->getId()); // case: payload size is wrong try { unsigned char msg[5]; bittorrent::createPeerMessageString(msg, sizeof(msg), 1, 20); - BtExtendedMessage::create(exmsgFactory, peer, &msg[4], 1); + BtExtendedMessage::create(&exmsgFactory, peer, &msg[4], 1); CPPUNIT_FAIL("exception must be thrown."); } catch(Exception& e) { std::cerr << e.stackTrace() << std::endl; @@ -63,7 +59,7 @@ void BtExtendedMessageTest::testCreate() { try { unsigned char msg[6]; bittorrent::createPeerMessageString(msg, sizeof(msg), 2, 21); - BtExtendedMessage::create(exmsgFactory, peer, &msg[4], 2); + BtExtendedMessage::create(&exmsgFactory, peer, &msg[4], 2); CPPUNIT_FAIL("exception must be thrown."); } catch(Exception& e) { std::cerr << e.stackTrace() << std::endl; @@ -73,10 +69,8 @@ void BtExtendedMessageTest::testCreate() { void BtExtendedMessageTest::testCreateMessage() { std::string payload = "4:name3:foo"; uint8_t extendedMessageID = 1; - std::shared_ptr exmsg - (new MockExtensionMessage("charlie", extendedMessageID, payload)); - BtExtendedMessage msg(exmsg); - + BtExtendedMessage msg{make_unique + ("charlie", extendedMessageID, payload, nullptr)}; unsigned char data[17]; bittorrent::createPeerMessageString(data, sizeof(data), 13, 20); *(data+5) = extendedMessageID; @@ -88,19 +82,18 @@ void BtExtendedMessageTest::testCreateMessage() { } void BtExtendedMessageTest::testDoReceivedAction() { - std::shared_ptr exmsg - (new MockExtensionMessage("charlie", 1, "")); - BtExtendedMessage msg(exmsg); + auto evcheck = MockExtensionMessageEventCheck{}; + BtExtendedMessage msg{make_unique + ("charlie", 1, "", &evcheck)}; msg.doReceivedAction(); - CPPUNIT_ASSERT(exmsg->doReceivedActionCalled_); + CPPUNIT_ASSERT(evcheck.doReceivedActionCalled); } void BtExtendedMessageTest::testToString() { std::string payload = "4:name3:foo"; uint8_t extendedMessageID = 1; - std::shared_ptr exmsg - (new MockExtensionMessage("charlie", extendedMessageID, payload)); - BtExtendedMessage msg(exmsg); + BtExtendedMessage msg{make_unique + ("charlie", extendedMessageID, payload, nullptr)}; CPPUNIT_ASSERT_EQUAL(std::string("extended charlie"), msg.toString()); } diff --git a/test/DefaultBtMessageFactoryTest.cc b/test/DefaultBtMessageFactoryTest.cc index 048744f09..76e18f859 100644 --- a/test/DefaultBtMessageFactoryTest.cc +++ b/test/DefaultBtMessageFactoryTest.cc @@ -42,7 +42,7 @@ public: factory_ = make_unique(); factory_->setDownloadContext(dctx_.get()); factory_->setPeer(peer_); - factory_->setExtensionMessageFactory(exmsgFactory_); + factory_->setExtensionMessageFactory(exmsgFactory_.get()); } void testCreateBtMessage_BtExtendedMessage(); diff --git a/test/DefaultExtensionMessageFactoryTest.cc b/test/DefaultExtensionMessageFactoryTest.cc index 82acb8a1e..d5fe00a39 100644 --- a/test/DefaultExtensionMessageFactoryTest.cc +++ b/test/DefaultExtensionMessageFactoryTest.cc @@ -38,42 +38,38 @@ class DefaultExtensionMessageFactoryTest:public CppUnit::TestFixture { CPPUNIT_TEST(testCreateMessage_UTMetadataReject); CPPUNIT_TEST_SUITE_END(); private: - std::shared_ptr peerStorage_; + std::unique_ptr peerStorage_; std::shared_ptr peer_; - std::shared_ptr factory_; - std::shared_ptr registry_; - std::shared_ptr dispatcher_; - std::shared_ptr messageFactory_; + std::unique_ptr factory_; + std::unique_ptr registry_; + std::unique_ptr dispatcher_; + std::unique_ptr messageFactory_; std::shared_ptr dctx_; - std::shared_ptr requestGroup_; + std::unique_ptr requestGroup_; public: void setUp() { - peerStorage_.reset(new MockPeerStorage()); + peerStorage_ = make_unique(); - peer_.reset(new Peer("192.168.0.1", 6969)); + peer_ = std::make_shared("192.168.0.1", 6969); peer_->allocateSessionResource(1024, 1024*1024); peer_->setExtension(ExtensionMessageRegistry::UT_PEX, 1); - registry_.reset(new ExtensionMessageRegistry()); - - dispatcher_.reset(new MockBtMessageDispatcher()); - - messageFactory_.reset(new MockBtMessageFactory()); - - dctx_.reset(new DownloadContext()); - - std::shared_ptr