summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-07-22 00:41:45 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-07-22 00:41:45 +0900
commita6b7ef5f0764e07b54bd638ba0ee73dc7ff83e6f (patch)
tree578a753379ef5c9db02b700781d3a6c179050fdd /src
parent97f76b7cf467cbd0a77140df9d892de6b8c34e8d (diff)
Eliminated static variable from LpdReceiveMessageCommand.
BtRegistry now holds LpdMessageReceiver.
Diffstat (limited to 'src')
-rw-r--r--src/BtRegistry.cc7
-rw-r--r--src/BtRegistry.h8
-rw-r--r--src/BtSetup.cc14
-rw-r--r--src/LpdReceiveMessageCommand.cc28
-rw-r--r--src/LpdReceiveMessageCommand.h23
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