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
pull/1/head
Tatsuhiro Tsujikawa 2008-02-11 07:50:35 +00:00
parent 413cbe192b
commit e9f980afc7
7 changed files with 118 additions and 40 deletions

View File

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

View File

@ -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);
virtual ~DHTMessageDispatcher() {}
~DHTMessageDispatcher();
virtual void
addMessageToQueue(const SharedHandle<DHTMessage>& message,
time_t timeout,
const SharedHandle<DHTMessageCallback>& callback = 0) = 0;
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) = 0;
void addMessageToQueue(const SharedHandle<DHTMessage>& message,
const SharedHandle<DHTMessageCallback>& callback = 0);
virtual void sendMessages() = 0;
void sendMessages();
size_t countMessageInQueue() const;
virtual size_t countMessageInQueue() const = 0;
};
} // namespace aria2

View File

@ -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();
}

View File

@ -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_

View File

@ -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);

View File

@ -266,7 +266,7 @@ SRCS += MetaEntry.h\
DHTBucket.cc\
DHTRoutingTable.cc\
DHTMessageEntry.cc\
DHTMessageDispatcher.cc\
DHTMessageDispatcherImpl.cc\
DHTMessageReceiver.cc\
DHTMessageTracker.cc\
DHTMessageTrackerEntry.cc\

View File

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