From e9f980afc73965d746c6f7fb4ed019e3567c67b4 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 11 Feb 2008 07:50:35 +0000 Subject: [PATCH] 2008-02-11 Tatsuhiro Tsujikawa Added DHTMessageDispatcherImpl. Now DHTMessageDispatcher is pure virtual. * src/DHTMessageDispatcher.h * src/DHTMessageDispatcherImpl.{h, cc} * src/DHTSetup.cc --- ChangeLog | 8 ++ src/DHTMessageDispatcher.h | 32 +++----- ...patcher.cc => DHTMessageDispatcherImpl.cc} | 27 ++++--- src/DHTMessageDispatcherImpl.h | 77 +++++++++++++++++++ src/DHTSetup.cc | 4 +- src/Makefile.am | 2 +- src/Makefile.in | 8 +- 7 files changed, 118 insertions(+), 40 deletions(-) rename src/{DHTMessageDispatcher.cc => DHTMessageDispatcherImpl.cc} (78%) create mode 100644 src/DHTMessageDispatcherImpl.h diff --git a/ChangeLog b/ChangeLog index ec779398..b8a78a64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-02-11 Tatsuhiro Tsujikawa + + Added DHTMessageDispatcherImpl. Now DHTMessageDispatcher is pure + virtual. + * src/DHTMessageDispatcher.h + * src/DHTMessageDispatcherImpl.{h, cc} + * src/DHTSetup.cc + 2008-02-11 Tatsuhiro Tsujikawa Adding handling of DHT error message. Just log error message and diff --git a/src/DHTMessageDispatcher.h b/src/DHTMessageDispatcher.h index 85863c9e..fc8b98c9 100644 --- a/src/DHTMessageDispatcher.h +++ b/src/DHTMessageDispatcher.h @@ -37,40 +37,28 @@ #include "common.h" #include "SharedHandle.h" -#include namespace aria2 { -class DHTMessageTracker; class DHTMessageCallback; -class DHTMessageEntry; class DHTMessage; -class Logger; class DHTMessageDispatcher { -private: - SharedHandle _tracker; - - std::deque > _messageQueue; - - const Logger* _logger; - - void sendMessage(const SharedHandle& msg); public: - DHTMessageDispatcher(const SharedHandle& tracker); + virtual ~DHTMessageDispatcher() {} - ~DHTMessageDispatcher(); + virtual void + addMessageToQueue(const SharedHandle& message, + time_t timeout, + const SharedHandle& callback = 0) = 0; - void addMessageToQueue(const SharedHandle& message, - time_t timeout, - const SharedHandle& callback = 0); + virtual void + addMessageToQueue(const SharedHandle& message, + const SharedHandle& callback = 0) = 0; - void addMessageToQueue(const SharedHandle& message, - const SharedHandle& callback = 0); + virtual void sendMessages() = 0; - void sendMessages(); - - size_t countMessageInQueue() const; + virtual size_t countMessageInQueue() const = 0; }; } // namespace aria2 diff --git a/src/DHTMessageDispatcher.cc b/src/DHTMessageDispatcherImpl.cc similarity index 78% rename from src/DHTMessageDispatcher.cc rename to src/DHTMessageDispatcherImpl.cc index 68055e7c..ae0ec37a 100644 --- a/src/DHTMessageDispatcher.cc +++ b/src/DHTMessageDispatcherImpl.cc @@ -32,7 +32,7 @@ * files in the program, then also delete it here. */ /* copyright --> */ -#include "DHTMessageDispatcher.h" +#include "DHTMessageDispatcherImpl.h" #include "DHTMessage.h" #include "DHTMessageCallback.h" #include "DHTMessageEntry.h" @@ -44,24 +44,29 @@ namespace aria2 { -DHTMessageDispatcher::DHTMessageDispatcher(const SharedHandle& tracker):_tracker(tracker), _logger(LogFactory::getInstance()) {} +DHTMessageDispatcherImpl::DHTMessageDispatcherImpl(const SharedHandle& tracker): + _tracker(tracker), + _logger(LogFactory::getInstance()) {} -DHTMessageDispatcher::~DHTMessageDispatcher() {} +DHTMessageDispatcherImpl::~DHTMessageDispatcherImpl() {} -void DHTMessageDispatcher::addMessageToQueue(const SharedHandle& message, - time_t timeout, - const SharedHandle& callback) +void +DHTMessageDispatcherImpl::addMessageToQueue(const SharedHandle& message, + time_t timeout, + const SharedHandle& callback) { _messageQueue.push_back(new DHTMessageEntry(message, timeout, callback)); } -void DHTMessageDispatcher::addMessageToQueue(const SharedHandle& message, - const SharedHandle& callback) +void +DHTMessageDispatcherImpl::addMessageToQueue(const SharedHandle& message, + const SharedHandle& callback) { addMessageToQueue(message, DHT_MESSAGE_TIMEOUT, callback); } -void DHTMessageDispatcher::sendMessage(const SharedHandle& entry) +void +DHTMessageDispatcherImpl::sendMessage(const SharedHandle& entry) { try { entry->_message->send(); @@ -75,7 +80,7 @@ void DHTMessageDispatcher::sendMessage(const SharedHandle& entr } } -void DHTMessageDispatcher::sendMessages() +void DHTMessageDispatcherImpl::sendMessages() { // TODO I can't use bind1st and mem_fun here because bind1st cannot bind a // function which takes a reference as an argument.. @@ -85,7 +90,7 @@ void DHTMessageDispatcher::sendMessages() _messageQueue.clear(); } -size_t DHTMessageDispatcher::countMessageInQueue() const +size_t DHTMessageDispatcherImpl::countMessageInQueue() const { return _messageQueue.size(); } diff --git a/src/DHTMessageDispatcherImpl.h b/src/DHTMessageDispatcherImpl.h new file mode 100644 index 00000000..96ce72be --- /dev/null +++ b/src/DHTMessageDispatcherImpl.h @@ -0,0 +1,77 @@ +/* */ +#ifndef _D_DHT_MESSAGE_DISPATCHER_IMPL_H_ +#define _D_DHT_MESSAGE_DISPATCHER_IMPL_H_ + +#include "DHTMessageDispatcher.h" +#include + +namespace aria2 { + +class DHTMessageTracker; +class DHTMessageEntry; +class Logger; + +class DHTMessageDispatcherImpl:public DHTMessageDispatcher { +private: + SharedHandle _tracker; + + std::deque > _messageQueue; + + const Logger* _logger; + + void sendMessage(const SharedHandle& msg); +public: + DHTMessageDispatcherImpl(const SharedHandle& tracker); + + virtual ~DHTMessageDispatcherImpl(); + + virtual void + addMessageToQueue(const SharedHandle& message, + time_t timeout, + const SharedHandle& callback = 0); + + virtual void + addMessageToQueue(const SharedHandle& message, + const SharedHandle& callback = 0); + + virtual void sendMessages(); + + virtual size_t countMessageInQueue() const; +}; + +} // namespace aria2 + +#endif // _D_DHT_MESSAGE_DISPATCHER_IMPL_H_ diff --git a/src/DHTSetup.cc b/src/DHTSetup.cc index d98190ea..2f2ce801 100644 --- a/src/DHTSetup.cc +++ b/src/DHTSetup.cc @@ -42,7 +42,7 @@ #include "DHTRoutingTable.h" #include "DHTMessageFactoryImpl.h" #include "DHTMessageTracker.h" -#include "DHTMessageDispatcher.h" +#include "DHTMessageDispatcherImpl.h" #include "DHTMessageReceiver.h" #include "DHTTaskQueueImpl.h" #include "DHTTaskFactoryImpl.h" @@ -120,7 +120,7 @@ Commands DHTSetup::setup(DownloadEngine* e, const Option* option) SharedHandle tracker = new DHTMessageTracker(); - SharedHandle dispatcher = new DHTMessageDispatcher(tracker); + SharedHandle dispatcher = new DHTMessageDispatcherImpl(tracker); SharedHandle receiver = new DHTMessageReceiver(tracker); diff --git a/src/Makefile.am b/src/Makefile.am index a586223f..3d6770e2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -266,7 +266,7 @@ SRCS += MetaEntry.h\ DHTBucket.cc\ DHTRoutingTable.cc\ DHTMessageEntry.cc\ - DHTMessageDispatcher.cc\ + DHTMessageDispatcherImpl.cc\ DHTMessageReceiver.cc\ DHTMessageTracker.cc\ DHTMessageTrackerEntry.cc\ diff --git a/src/Makefile.in b/src/Makefile.in index 6609258f..9aa9c76a 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -144,7 +144,7 @@ bin_PROGRAMS = aria2c$(EXEEXT) @ENABLE_BITTORRENT_TRUE@ DHTBucket.cc\ @ENABLE_BITTORRENT_TRUE@ DHTRoutingTable.cc\ @ENABLE_BITTORRENT_TRUE@ DHTMessageEntry.cc\ -@ENABLE_BITTORRENT_TRUE@ DHTMessageDispatcher.cc\ +@ENABLE_BITTORRENT_TRUE@ DHTMessageDispatcherImpl.cc\ @ENABLE_BITTORRENT_TRUE@ DHTMessageReceiver.cc\ @ENABLE_BITTORRENT_TRUE@ DHTMessageTracker.cc\ @ENABLE_BITTORRENT_TRUE@ DHTMessageTrackerEntry.cc\ @@ -421,7 +421,7 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \ BtExtendedMessage.cc DefaultExtensionMessageFactory.cc \ HandshakeExtensionMessage.cc UTPexExtensionMessage.cc \ DHTNode.cc DHTUtil.cc DHTBucket.cc DHTRoutingTable.cc \ - DHTMessageEntry.cc DHTMessageDispatcher.cc \ + DHTMessageEntry.cc DHTMessageDispatcherImpl.cc \ DHTMessageReceiver.cc DHTMessageTracker.cc \ DHTMessageTrackerEntry.cc DHTMessage.cc DHTConnectionImpl.cc \ DHTAbstractMessage.cc DHTQueryMessage.cc DHTResponseMessage.cc \ @@ -527,7 +527,7 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \ @ENABLE_BITTORRENT_TRUE@ DHTBucket.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ DHTRoutingTable.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ DHTMessageEntry.$(OBJEXT) \ -@ENABLE_BITTORRENT_TRUE@ DHTMessageDispatcher.$(OBJEXT) \ +@ENABLE_BITTORRENT_TRUE@ DHTMessageDispatcherImpl.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ DHTMessageReceiver.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ DHTMessageTracker.$(OBJEXT) \ @ENABLE_BITTORRENT_TRUE@ DHTMessageTrackerEntry.$(OBJEXT) \ @@ -1172,7 +1172,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTInteractionCommand.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTMessage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTMessageCallbackImpl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTMessageDispatcher.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTMessageDispatcherImpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTMessageEntry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTMessageFactoryImpl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTMessageReceiver.Po@am__quote@