DefaultBtMessageDispatcher: Use raw pointers for non-owning objects

pull/103/head
Tatsuhiro Tsujikawa 2013-06-23 12:25:58 +09:00
parent 9db01bed71
commit 85f5134626
4 changed files with 36 additions and 37 deletions

View File

@ -62,6 +62,10 @@ namespace aria2 {
DefaultBtMessageDispatcher::DefaultBtMessageDispatcher() DefaultBtMessageDispatcher::DefaultBtMessageDispatcher()
: cuid_(0), : cuid_(0),
downloadContext_{0},
peerStorage_{0},
pieceStorage_{0},
peerConnection_{0},
messageFactory_(0), messageFactory_(0),
requestGroupMan_(0), requestGroupMan_(0),
requestTimeout_(0) requestTimeout_(0)
@ -188,12 +192,10 @@ class ProcessChokedRequestSlot {
private: private:
cuid_t cuid_; cuid_t cuid_;
std::shared_ptr<Peer> peer_; std::shared_ptr<Peer> peer_;
std::shared_ptr<PieceStorage> pieceStorage_; PieceStorage* pieceStorage_;
public: public:
ProcessChokedRequestSlot ProcessChokedRequestSlot
(cuid_t cuid, (cuid_t cuid, const std::shared_ptr<Peer>& peer, PieceStorage* pieceStorage)
const std::shared_ptr<Peer>& peer,
const std::shared_ptr<PieceStorage>& pieceStorage)
: cuid_(cuid), : cuid_(cuid),
peer_(peer), peer_(peer),
pieceStorage_(pieceStorage) pieceStorage_(pieceStorage)
@ -258,14 +260,14 @@ class ProcessStaleRequestSlot {
private: private:
cuid_t cuid_; cuid_t cuid_;
std::shared_ptr<Peer> peer_; std::shared_ptr<Peer> peer_;
std::shared_ptr<PieceStorage> pieceStorage_; PieceStorage* pieceStorage_;
BtMessageDispatcher* messageDispatcher_; BtMessageDispatcher* messageDispatcher_;
BtMessageFactory* messageFactory_; BtMessageFactory* messageFactory_;
time_t requestTimeout_; time_t requestTimeout_;
public: public:
ProcessStaleRequestSlot ProcessStaleRequestSlot
(cuid_t cuid, const std::shared_ptr<Peer>& peer, (cuid_t cuid, const std::shared_ptr<Peer>& peer,
const std::shared_ptr<PieceStorage>& pieceStorage, PieceStorage* pieceStorage,
BtMessageDispatcher* dispatcher, BtMessageDispatcher* dispatcher,
BtMessageFactory* factory, BtMessageFactory* factory,
time_t requestTimeout) time_t requestTimeout)
@ -305,13 +307,12 @@ public:
namespace { namespace {
class FindStaleRequestSlot { class FindStaleRequestSlot {
private: private:
std::shared_ptr<PieceStorage> pieceStorage_; PieceStorage* pieceStorage_;
time_t requestTimeout_; time_t requestTimeout_;
public: public:
FindStaleRequestSlot(const std::shared_ptr<PieceStorage>& pieceStorage, FindStaleRequestSlot(PieceStorage* pieceStorage, time_t requestTimeout)
time_t requestTimeout): : pieceStorage_(pieceStorage),
pieceStorage_(pieceStorage), requestTimeout_(requestTimeout) {}
requestTimeout_(requestTimeout) {}
bool operator()(const RequestSlot& slot) bool operator()(const RequestSlot& slot)
{ {
@ -419,19 +420,17 @@ void DefaultBtMessageDispatcher::setPeer(const std::shared_ptr<Peer>& peer)
} }
void DefaultBtMessageDispatcher::setDownloadContext void DefaultBtMessageDispatcher::setDownloadContext
(const std::shared_ptr<DownloadContext>& downloadContext) (DownloadContext* downloadContext)
{ {
downloadContext_ = downloadContext; downloadContext_ = downloadContext;
} }
void DefaultBtMessageDispatcher::setPieceStorage void DefaultBtMessageDispatcher::setPieceStorage(PieceStorage* pieceStorage)
(const std::shared_ptr<PieceStorage>& pieceStorage)
{ {
pieceStorage_ = pieceStorage; pieceStorage_ = pieceStorage;
} }
void DefaultBtMessageDispatcher::setPeerStorage void DefaultBtMessageDispatcher::setPeerStorage(PeerStorage* peerStorage)
(const std::shared_ptr<PeerStorage>& peerStorage)
{ {
peerStorage_ = peerStorage; peerStorage_ = peerStorage;
} }

View File

@ -59,10 +59,10 @@ private:
cuid_t cuid_; cuid_t cuid_;
std::deque<std::shared_ptr<BtMessage> > messageQueue_; std::deque<std::shared_ptr<BtMessage> > messageQueue_;
std::deque<RequestSlot> requestSlots_; std::deque<RequestSlot> requestSlots_;
std::shared_ptr<DownloadContext> downloadContext_; DownloadContext* downloadContext_;
std::shared_ptr<PeerStorage> peerStorage_; PeerStorage* peerStorage_;
std::shared_ptr<PieceStorage> pieceStorage_; PieceStorage* pieceStorage_;
std::shared_ptr<PeerConnection> peerConnection_; PeerConnection* peerConnection_;
BtMessageFactory* messageFactory_; BtMessageFactory* messageFactory_;
std::shared_ptr<Peer> peer_; std::shared_ptr<Peer> peer_;
RequestGroupMan* requestGroupMan_; RequestGroupMan* requestGroupMan_;
@ -129,11 +129,11 @@ public:
void setPeer(const std::shared_ptr<Peer>& peer); void setPeer(const std::shared_ptr<Peer>& peer);
void setDownloadContext(const std::shared_ptr<DownloadContext>& downloadContext); void setDownloadContext(DownloadContext* downloadContext);
void setPieceStorage(const std::shared_ptr<PieceStorage>& pieceStorage); void setPieceStorage(PieceStorage* pieceStorage);
void setPeerStorage(const std::shared_ptr<PeerStorage>& peerStorage); void setPeerStorage(PeerStorage* peerStorage);
void setBtMessageFactory(BtMessageFactory* factory); void setBtMessageFactory(BtMessageFactory* factory);
@ -149,7 +149,7 @@ public:
requestTimeout_ = requestTimeout; requestTimeout_ = requestTimeout;
} }
void setPeerConnection(const std::shared_ptr<PeerConnection>& peerConnection) void setPeerConnection(PeerConnection* peerConnection)
{ {
peerConnection_ = peerConnection; peerConnection_ = peerConnection;
} }

View File

@ -192,15 +192,15 @@ PeerInteractionCommand::PeerInteractionCommand
DefaultBtMessageDispatcher* dispatcherPtr(new DefaultBtMessageDispatcher()); DefaultBtMessageDispatcher* dispatcherPtr(new DefaultBtMessageDispatcher());
dispatcherPtr->setCuid(cuid); dispatcherPtr->setCuid(cuid);
dispatcherPtr->setPeer(getPeer()); dispatcherPtr->setPeer(getPeer());
dispatcherPtr->setDownloadContext(requestGroup_->getDownloadContext()); dispatcherPtr->setDownloadContext(requestGroup_->getDownloadContext().get());
dispatcherPtr->setPieceStorage(pieceStorage); dispatcherPtr->setPieceStorage(pieceStorage.get());
dispatcherPtr->setPeerStorage(peerStorage); dispatcherPtr->setPeerStorage(peerStorage.get());
dispatcherPtr->setRequestTimeout(getOption()-> dispatcherPtr->setRequestTimeout(getOption()->
getAsInt(PREF_BT_REQUEST_TIMEOUT)); getAsInt(PREF_BT_REQUEST_TIMEOUT));
dispatcherPtr->setBtMessageFactory(factoryPtr); dispatcherPtr->setBtMessageFactory(factoryPtr);
dispatcherPtr->setRequestGroupMan dispatcherPtr->setRequestGroupMan
(getDownloadEngine()->getRequestGroupMan().get()); (getDownloadEngine()->getRequestGroupMan().get());
dispatcherPtr->setPeerConnection(peerConnection); dispatcherPtr->setPeerConnection(peerConnection.get());
std::shared_ptr<BtMessageDispatcher> dispatcher(dispatcherPtr); std::shared_ptr<BtMessageDispatcher> dispatcher(dispatcherPtr);
DefaultBtMessageReceiver* receiverPtr(new DefaultBtMessageReceiver()); DefaultBtMessageReceiver* receiverPtr(new DefaultBtMessageReceiver());

View File

@ -155,9 +155,9 @@ public:
btMessageDispatcher.reset(new DefaultBtMessageDispatcher()); btMessageDispatcher.reset(new DefaultBtMessageDispatcher());
btMessageDispatcher->setPeer(peer); btMessageDispatcher->setPeer(peer);
btMessageDispatcher->setDownloadContext(dctx_); btMessageDispatcher->setDownloadContext(dctx_.get());
btMessageDispatcher->setPieceStorage(pieceStorage); btMessageDispatcher->setPieceStorage(pieceStorage.get());
btMessageDispatcher->setPeerStorage(peerStorage); btMessageDispatcher->setPeerStorage(peerStorage.get());
btMessageDispatcher->setBtMessageFactory(messageFactory_.get()); btMessageDispatcher->setBtMessageFactory(messageFactory_.get());
btMessageDispatcher->setCuid(1); btMessageDispatcher->setCuid(1);
btMessageDispatcher->setRequestGroupMan(rgman_.get()); btMessageDispatcher->setRequestGroupMan(rgman_.get());
@ -255,11 +255,11 @@ void DefaultBtMessageDispatcherTest::testCheckRequestSlotAndDoNecessaryThing() {
CPPUNIT_ASSERT(piece->getMissingUnusedBlockIndex(index)); CPPUNIT_ASSERT(piece->getMissingUnusedBlockIndex(index));
CPPUNIT_ASSERT_EQUAL((size_t)0, index); CPPUNIT_ASSERT_EQUAL((size_t)0, index);
std::shared_ptr<MockPieceStorage2> pieceStorage(new MockPieceStorage2()); auto pieceStorage = make_unique<MockPieceStorage2>();
pieceStorage->setPiece(piece); pieceStorage->setPiece(piece);
btMessageDispatcher->setRequestTimeout(60); btMessageDispatcher->setRequestTimeout(60);
btMessageDispatcher->setPieceStorage(pieceStorage); btMessageDispatcher->setPieceStorage(pieceStorage.get());
btMessageDispatcher->addOutstandingRequest(slot); btMessageDispatcher->addOutstandingRequest(slot);
btMessageDispatcher->checkRequestSlotAndDoNecessaryThing(); btMessageDispatcher->checkRequestSlotAndDoNecessaryThing();
@ -280,11 +280,11 @@ void DefaultBtMessageDispatcherTest::testCheckRequestSlotAndDoNecessaryThing_tim
CPPUNIT_ASSERT(piece->getMissingUnusedBlockIndex(index)); CPPUNIT_ASSERT(piece->getMissingUnusedBlockIndex(index));
CPPUNIT_ASSERT_EQUAL((size_t)0, index); CPPUNIT_ASSERT_EQUAL((size_t)0, index);
std::shared_ptr<MockPieceStorage2> pieceStorage(new MockPieceStorage2()); auto pieceStorage = make_unique<MockPieceStorage2>();
pieceStorage->setPiece(piece); pieceStorage->setPiece(piece);
btMessageDispatcher->setRequestTimeout(60); btMessageDispatcher->setRequestTimeout(60);
btMessageDispatcher->setPieceStorage(pieceStorage); btMessageDispatcher->setPieceStorage(pieceStorage.get());
btMessageDispatcher->addOutstandingRequest(slot); btMessageDispatcher->addOutstandingRequest(slot);
btMessageDispatcher->checkRequestSlotAndDoNecessaryThing(); btMessageDispatcher->checkRequestSlotAndDoNecessaryThing();
@ -303,11 +303,11 @@ void DefaultBtMessageDispatcherTest::testCheckRequestSlotAndDoNecessaryThing_com
RequestSlot slot(0, 0, MY_PIECE_LENGTH, 0, piece); RequestSlot slot(0, 0, MY_PIECE_LENGTH, 0, piece);
std::shared_ptr<MockPieceStorage2> pieceStorage(new MockPieceStorage2()); auto pieceStorage = make_unique<MockPieceStorage2>();
pieceStorage->setPiece(piece); pieceStorage->setPiece(piece);
btMessageDispatcher->setRequestTimeout(60); btMessageDispatcher->setRequestTimeout(60);
btMessageDispatcher->setPieceStorage(pieceStorage); btMessageDispatcher->setPieceStorage(pieceStorage.get());
btMessageDispatcher->addOutstandingRequest(slot); btMessageDispatcher->addOutstandingRequest(slot);
btMessageDispatcher->checkRequestSlotAndDoNecessaryThing(); btMessageDispatcher->checkRequestSlotAndDoNecessaryThing();