瀏覽代碼

2008-02-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Added DHTMessageDispatcherImpl. Now DHTMessageDispatcher is pure
	virtual.
	* src/DHTMessageDispatcher.h
	* src/DHTMessageDispatcherImpl.{h, cc}
	* src/DHTSetup.cc
Tatsuhiro Tsujikawa 17 年之前
父節點
當前提交
e9f980afc7
共有 7 個文件被更改,包括 118 次插入40 次删除
  1. 8 0
      ChangeLog
  2. 10 22
      src/DHTMessageDispatcher.h
  3. 16 11
      src/DHTMessageDispatcherImpl.cc
  4. 77 0
      src/DHTMessageDispatcherImpl.h
  5. 2 2
      src/DHTSetup.cc
  6. 1 1
      src/Makefile.am
  7. 4 4
      src/Makefile.in

+ 8 - 0
ChangeLog

@@ -1,3 +1,11 @@
+2008-02-11  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Added DHTMessageDispatcherImpl. Now DHTMessageDispatcher is pure
+	virtual.
+	* src/DHTMessageDispatcher.h
+	* src/DHTMessageDispatcherImpl.{h, cc}
+	* src/DHTSetup.cc
+
 2008-02-11  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Adding handling of DHT error message. Just log error message and

+ 10 - 22
src/DHTMessageDispatcher.h

@@ -37,40 +37,28 @@
 
 #include "common.h"
 #include "SharedHandle.h"
-#include <deque>
 
 namespace aria2 {
 
-class DHTMessageTracker;
 class DHTMessageCallback;
-class DHTMessageEntry;
 class DHTMessage;
-class Logger;
 
 class DHTMessageDispatcher {
-private:
-  SharedHandle<DHTMessageTracker> _tracker;
-
-  std::deque<SharedHandle<DHTMessageEntry> > _messageQueue;
-
-  const Logger* _logger;
-
-  void sendMessage(const SharedHandle<DHTMessageEntry>& msg);
 public:
-  DHTMessageDispatcher(const SharedHandle<DHTMessageTracker>& tracker);
-
-  ~DHTMessageDispatcher();
+  virtual ~DHTMessageDispatcher() {}
 
-  void addMessageToQueue(const SharedHandle<DHTMessage>& message,
-			 time_t timeout,
-			 const SharedHandle<DHTMessageCallback>& callback = 0);
+  virtual void
+  addMessageToQueue(const SharedHandle<DHTMessage>& message,
+		    time_t timeout,
+		    const SharedHandle<DHTMessageCallback>& callback = 0) = 0;
 
-  void addMessageToQueue(const SharedHandle<DHTMessage>& message,
-			 const SharedHandle<DHTMessageCallback>& callback = 0);
+  virtual void
+  addMessageToQueue(const SharedHandle<DHTMessage>& message,
+		    const SharedHandle<DHTMessageCallback>& callback = 0) = 0;
 
-  void sendMessages();
+  virtual void sendMessages() = 0;
 
-  size_t countMessageInQueue() const;
+  virtual size_t countMessageInQueue() const = 0;
 };
 
 } // namespace aria2

+ 16 - 11
src/DHTMessageDispatcher.cc → 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<DHTMessageTracker>& tracker):_tracker(tracker), _logger(LogFactory::getInstance()) {}
+DHTMessageDispatcherImpl::DHTMessageDispatcherImpl(const SharedHandle<DHTMessageTracker>& tracker):
+  _tracker(tracker),
+  _logger(LogFactory::getInstance()) {}
 
-DHTMessageDispatcher::~DHTMessageDispatcher() {}
+DHTMessageDispatcherImpl::~DHTMessageDispatcherImpl() {}
 
-void DHTMessageDispatcher::addMessageToQueue(const SharedHandle<DHTMessage>& message,
-					     time_t timeout,
-					     const SharedHandle<DHTMessageCallback>& callback)
+void
+DHTMessageDispatcherImpl::addMessageToQueue(const SharedHandle<DHTMessage>& message,
+					    time_t timeout,
+					    const SharedHandle<DHTMessageCallback>& callback)
 {
   _messageQueue.push_back(new DHTMessageEntry(message, timeout, callback));
 }
 
-void DHTMessageDispatcher::addMessageToQueue(const SharedHandle<DHTMessage>& message,
-					     const SharedHandle<DHTMessageCallback>& callback)
+void
+DHTMessageDispatcherImpl::addMessageToQueue(const SharedHandle<DHTMessage>& message,
+					    const SharedHandle<DHTMessageCallback>& callback)
 {
   addMessageToQueue(message, DHT_MESSAGE_TIMEOUT, callback);
 }
 
-void DHTMessageDispatcher::sendMessage(const SharedHandle<DHTMessageEntry>& entry)
+void
+DHTMessageDispatcherImpl::sendMessage(const SharedHandle<DHTMessageEntry>& entry)
 {
   try {
     entry->_message->send();
@@ -75,7 +80,7 @@ void DHTMessageDispatcher::sendMessage(const SharedHandle<DHTMessageEntry>& 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();
 }

+ 77 - 0
src/DHTMessageDispatcherImpl.h

@@ -0,0 +1,77 @@
+/* <!-- copyright */
+/*
+ * aria2 - The high speed download utility
+ *
+ * Copyright (C) 2006 Tatsuhiro Tsujikawa
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * In addition, as a special exception, the copyright holders give
+ * permission to link the code of portions of this program with the
+ * OpenSSL library under certain conditions as described in each
+ * individual source file, and distribute linked combinations
+ * including the two.
+ * You must obey the GNU General Public License in all respects
+ * for all of the code used other than OpenSSL.  If you modify
+ * file(s) with this exception, you may extend this exception to your
+ * version of the file(s), but you are not obligated to do so.  If you
+ * do not wish to do so, delete this exception statement from your
+ * version.  If you delete this exception statement from all source
+ * files in the program, then also delete it here.
+ */
+/* copyright --> */
+#ifndef _D_DHT_MESSAGE_DISPATCHER_IMPL_H_
+#define _D_DHT_MESSAGE_DISPATCHER_IMPL_H_
+
+#include "DHTMessageDispatcher.h"
+#include <deque>
+
+namespace aria2 {
+
+class DHTMessageTracker;
+class DHTMessageEntry;
+class Logger;
+
+class DHTMessageDispatcherImpl:public DHTMessageDispatcher {
+private:
+  SharedHandle<DHTMessageTracker> _tracker;
+
+  std::deque<SharedHandle<DHTMessageEntry> > _messageQueue;
+
+  const Logger* _logger;
+
+  void sendMessage(const SharedHandle<DHTMessageEntry>& msg);
+public:
+  DHTMessageDispatcherImpl(const SharedHandle<DHTMessageTracker>& tracker);
+
+  virtual ~DHTMessageDispatcherImpl();
+
+  virtual void
+  addMessageToQueue(const SharedHandle<DHTMessage>& message,
+		    time_t timeout,
+		    const SharedHandle<DHTMessageCallback>& callback = 0);
+
+  virtual void
+  addMessageToQueue(const SharedHandle<DHTMessage>& message,
+		    const SharedHandle<DHTMessageCallback>& callback = 0);
+
+  virtual void sendMessages();
+
+  virtual size_t countMessageInQueue() const;
+};
+
+} // namespace aria2
+
+#endif // _D_DHT_MESSAGE_DISPATCHER_IMPL_H_

+ 2 - 2
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<DHTMessageTracker> tracker = new DHTMessageTracker();
 
-    SharedHandle<DHTMessageDispatcher> dispatcher = new DHTMessageDispatcher(tracker);
+    SharedHandle<DHTMessageDispatcherImpl> dispatcher = new DHTMessageDispatcherImpl(tracker);
 
     SharedHandle<DHTMessageReceiver> receiver = new DHTMessageReceiver(tracker);
 

+ 1 - 1
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\

+ 4 - 4
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@