diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-07-22 00:41:45 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-07-22 00:41:45 +0900 |
| commit | a6b7ef5f0764e07b54bd638ba0ee73dc7ff83e6f (patch) | |
| tree | 578a753379ef5c9db02b700781d3a6c179050fdd /src | |
| parent | 97f76b7cf467cbd0a77140df9d892de6b8c34e8d (diff) | |
Eliminated static variable from LpdReceiveMessageCommand.
BtRegistry now holds LpdMessageReceiver.
Diffstat (limited to 'src')
| -rw-r--r-- | src/BtRegistry.cc | 7 | ||||
| -rw-r--r-- | src/BtRegistry.h | 8 | ||||
| -rw-r--r-- | src/BtSetup.cc | 14 | ||||
| -rw-r--r-- | src/LpdReceiveMessageCommand.cc | 28 | ||||
| -rw-r--r-- | src/LpdReceiveMessageCommand.h | 23 |
5 files changed, 24 insertions, 56 deletions
diff --git a/src/BtRegistry.cc b/src/BtRegistry.cc index 883ff4bf..360b86f6 100644 --- a/src/BtRegistry.cc +++ b/src/BtRegistry.cc @@ -41,6 +41,7 @@ #include "BtRuntime.h" #include "BtProgressInfoFile.h" #include "bittorrent_helper.h" +#include "LpdMessageReceiver.h" namespace aria2 { @@ -95,6 +96,12 @@ void BtRegistry::removeAll() { pool_.clear(); } +void BtRegistry::setLpdMessageReceiver +(const SharedHandle<LpdMessageReceiver>& receiver) +{ + lpdMessageReceiver_ = receiver; +} + BtObject::BtObject (const SharedHandle<DownloadContext>& downloadContext, const SharedHandle<PieceStorage>& pieceStorage, diff --git a/src/BtRegistry.h b/src/BtRegistry.h index afc000b2..1ea9f44f 100644 --- a/src/BtRegistry.h +++ b/src/BtRegistry.h @@ -50,6 +50,7 @@ class BtAnnounce; class BtRuntime; class BtProgressInfoFile; class DownloadContext; +class LpdMessageReceiver; struct BtObject { SharedHandle<DownloadContext> downloadContext_; @@ -81,6 +82,7 @@ class BtRegistry { private: std::map<a2_gid_t, BtObject> pool_; uint16_t tcpPort_; + SharedHandle<LpdMessageReceiver> lpdMessageReceiver_; public: BtRegistry(); ~BtRegistry(); @@ -117,6 +119,12 @@ public: { return tcpPort_; } + + void setLpdMessageReceiver(const SharedHandle<LpdMessageReceiver>& receiver); + const SharedHandle<LpdMessageReceiver>& getLpdMessageReceiver() const + { + return lpdMessageReceiver_; + } }; } // namespace aria2 diff --git a/src/BtSetup.cc b/src/BtSetup.cc index 65ede7e4..7c696670 100644 --- a/src/BtSetup.cc +++ b/src/BtSetup.cc @@ -217,7 +217,7 @@ void BtSetup::setup(std::vector<Command*>& commands, if(option->getAsBool(PREF_BT_ENABLE_LPD) && btReg->getTcpPort() && (metadataGetMode || !torrentAttrs->privateTorrent)) { - if(LpdReceiveMessageCommand::getNumInstance() == 0) { + if(!btReg->getLpdMessageReceiver()) { A2_LOG_INFO("Initializing LpdMessageReceiver."); SharedHandle<LpdMessageReceiver> receiver (new LpdMessageReceiver(LPD_MULTICAST_ADDR, LPD_MULTICAST_PORT)); @@ -242,30 +242,30 @@ void BtSetup::setup(std::vector<Command*>& commands, } } if(initialized) { + btReg->setLpdMessageReceiver(receiver); A2_LOG_INFO(fmt("LpdMessageReceiver initialized. multicastAddr=%s:%u," " localAddr=%s", LPD_MULTICAST_ADDR, LPD_MULTICAST_PORT, receiver->getLocalAddress().c_str())); LpdReceiveMessageCommand* cmd = - LpdReceiveMessageCommand::getInstance(e, receiver); + new LpdReceiveMessageCommand(e->newCUID(), receiver, e); e->addCommand(cmd); } else { A2_LOG_INFO("LpdMessageReceiver not initialized."); } } - if(LpdReceiveMessageCommand::getNumInstance()) { + if(btReg->getLpdMessageReceiver()) { const unsigned char* infoHash = bittorrent::getInfoHash(requestGroup->getDownloadContext()); - SharedHandle<LpdMessageReceiver> receiver = - LpdReceiveMessageCommand::getInstance()->getLpdMessageReceiver(); A2_LOG_INFO("Initializing LpdMessageDispatcher."); SharedHandle<LpdMessageDispatcher> dispatcher (new LpdMessageDispatcher (std::string(&infoHash[0], &infoHash[INFO_HASH_LENGTH]), btReg->getTcpPort(), LPD_MULTICAST_ADDR, LPD_MULTICAST_PORT)); - if(dispatcher->init(receiver->getLocalAddress(), /*ttl*/1, /*loop*/0)) { - A2_LOG_INFO("LpdMessageDispatcher initialized."); + if(dispatcher->init(btReg->getLpdMessageReceiver()->getLocalAddress(), + /*ttl*/1, /*loop*/0)) { + A2_LOG_INFO("LpdMessageDispatcher initialized."); LpdDispatchMessageCommand* cmd = new LpdDispatchMessageCommand(e->newCUID(), dispatcher, e); cmd->setBtRuntime(btRuntime); diff --git a/src/LpdReceiveMessageCommand.cc b/src/LpdReceiveMessageCommand.cc index 741c6033..166abd89 100644 --- a/src/LpdReceiveMessageCommand.cc +++ b/src/LpdReceiveMessageCommand.cc @@ -51,10 +51,6 @@ namespace aria2 { -unsigned int LpdReceiveMessageCommand::numInstance_ = 0; - -LpdReceiveMessageCommand* LpdReceiveMessageCommand::instance_ = 0; - LpdReceiveMessageCommand::LpdReceiveMessageCommand (cuid_t cuid, const SharedHandle<LpdMessageReceiver>& receiver, @@ -64,16 +60,11 @@ LpdReceiveMessageCommand::LpdReceiveMessageCommand e_(e) { e_->addSocketForReadCheck(receiver_->getSocket(), this); - ++numInstance_; } LpdReceiveMessageCommand::~LpdReceiveMessageCommand() { e_->deleteSocketForReadCheck(receiver_->getSocket(), this); - --numInstance_; - if(numInstance_ == 0) { - instance_ = 0; - } } bool LpdReceiveMessageCommand::execute() @@ -123,23 +114,4 @@ bool LpdReceiveMessageCommand::execute() return false; } -LpdReceiveMessageCommand* -LpdReceiveMessageCommand::getInstance -(DownloadEngine* e, const SharedHandle<LpdMessageReceiver>& receiver) -{ - if(numInstance_ == 0) { - instance_ = new LpdReceiveMessageCommand(e->newCUID(), receiver, e); - } - return instance_; -} - -LpdReceiveMessageCommand* LpdReceiveMessageCommand::getInstance() -{ - if(numInstance_ == 0) { - return 0; - } else { - return instance_; - } -} - } // namespace aria2 diff --git a/src/LpdReceiveMessageCommand.h b/src/LpdReceiveMessageCommand.h index 23f7bfef..dea604a2 100644 --- a/src/LpdReceiveMessageCommand.h +++ b/src/LpdReceiveMessageCommand.h @@ -47,17 +47,11 @@ class SocketCore; class LpdReceiveMessageCommand:public Command { private: SharedHandle<LpdMessageReceiver> receiver_; - - static unsigned int numInstance_; - - static LpdReceiveMessageCommand* instance_; - + DownloadEngine* e_; +public: LpdReceiveMessageCommand (cuid_t cuid, const SharedHandle<LpdMessageReceiver>& receiver, DownloadEngine* e); - - DownloadEngine* e_; -public: virtual ~LpdReceiveMessageCommand(); virtual bool execute(); @@ -66,19 +60,6 @@ public: { return receiver_; } - - static LpdReceiveMessageCommand* - getInstance - (DownloadEngine* e, const SharedHandle<LpdMessageReceiver>& receiver); - - // If numInstance_ is 0, then return 0. If numInstance_ > 0, it - // returns instance_ - static LpdReceiveMessageCommand* getInstance(); - - static unsigned int getNumInstance() - { - return numInstance_; - } }; } // namespace aria2 |
