mirror of https://github.com/aria2/aria2
2009-04-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Removed ExtendedMessagingAware. Instead of using inheritance, added ExtensionMessageRegistry and it is passed to DefaultExtensionMessageFactory. * src/DefaultBtInteractive.cc * src/DefaultBtInteractive.h * src/DefaultExtensionMessageFactory.cc * src/DefaultExtensionMessageFactory.h * src/ExtendedMessagingAware.h: Removed. * src/ExtensionMessageFactory.h * src/ExtensionMessageRegistry.h: Added. * src/Makefile.am * src/PeerInteractionCommand.cc * test/DefaultExtensionMessageFactoryTest.ccpull/1/head
parent
3908d86213
commit
e385c68f52
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
|||
2009-04-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Removed ExtendedMessagingAware. Instead of using inheritance,
|
||||
added ExtensionMessageRegistry and it is passed to
|
||||
DefaultExtensionMessageFactory.
|
||||
* src/DefaultBtInteractive.cc
|
||||
* src/DefaultBtInteractive.h
|
||||
* src/DefaultExtensionMessageFactory.cc
|
||||
* src/DefaultExtensionMessageFactory.h
|
||||
* src/ExtendedMessagingAware.h: Removed.
|
||||
* src/ExtensionMessageFactory.h
|
||||
* src/ExtensionMessageRegistry.h: Added.
|
||||
* src/Makefile.am
|
||||
* src/PeerInteractionCommand.cc
|
||||
* test/DefaultExtensionMessageFactoryTest.cc
|
||||
|
||||
2009-04-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Fixed typo in log messages
|
||||
|
|
|
@ -50,6 +50,7 @@
|
|||
#include "HandshakeExtensionMessage.h"
|
||||
#include "UTPexExtensionMessage.h"
|
||||
#include "DefaultExtensionMessageFactory.h"
|
||||
#include "ExtensionMessageRegistry.h"
|
||||
#include "DHTNode.h"
|
||||
#include "Peer.h"
|
||||
#include "Piece.h"
|
||||
|
@ -115,7 +116,7 @@ BtMessageHandle DefaultBtInteractive::receiveHandshake(bool quickReply) {
|
|||
if(message->isExtendedMessagingEnabled()) {
|
||||
peer->setExtendedMessagingEnabled(true);
|
||||
if(!_utPexEnabled) {
|
||||
_extensionMessageFactory->removeExtension("ut_pex");
|
||||
_extensionMessageRegistry->removeExtension("ut_pex");
|
||||
}
|
||||
logger->info(MSG_EXTENDED_MESSAGING_ENABLED, cuid);
|
||||
}
|
||||
|
@ -162,7 +163,7 @@ void DefaultBtInteractive::addHandshakeExtendedMessageToQueue()
|
|||
HandshakeExtensionMessageHandle m(new HandshakeExtensionMessage());
|
||||
m->setClientVersion(CLIENT_ARIA2);
|
||||
m->setTCPPort(_btRuntime->getListenPort());
|
||||
m->setExtensions(_extensionMessageFactory->getExtensions());
|
||||
m->setExtensions(_extensionMessageRegistry->getExtensions());
|
||||
|
||||
SharedHandle<BtMessage> msg = messageFactory->createBtExtendedMessage(m);
|
||||
dispatcher->addMessageToQueue(msg);
|
||||
|
|
|
@ -55,6 +55,7 @@ class BtMessageFactory;
|
|||
class BtRequestFactory;
|
||||
class PeerConnection;
|
||||
class ExtensionMessageFactory;
|
||||
class ExtensionMessageRegistry;
|
||||
class DHTNode;
|
||||
class Logger;
|
||||
class RequestGroupMan;
|
||||
|
@ -112,6 +113,7 @@ private:
|
|||
SharedHandle<PeerConnection> peerConnection;
|
||||
SharedHandle<BtMessageFactory> messageFactory;
|
||||
SharedHandle<ExtensionMessageFactory> _extensionMessageFactory;
|
||||
SharedHandle<ExtensionMessageRegistry> _extensionMessageRegistry;
|
||||
|
||||
WeakHandle<DHTNode> _localNode;
|
||||
|
||||
|
@ -203,6 +205,12 @@ public:
|
|||
void setExtensionMessageFactory
|
||||
(const SharedHandle<ExtensionMessageFactory>& factory);
|
||||
|
||||
void setExtensionMessageRegistry
|
||||
(const SharedHandle<ExtensionMessageRegistry>& registry)
|
||||
{
|
||||
_extensionMessageRegistry = registry;
|
||||
}
|
||||
|
||||
void setKeepAliveInterval(time_t keepAliveInterval) {
|
||||
this->keepAliveInterval = keepAliveInterval;
|
||||
}
|
||||
|
|
|
@ -42,16 +42,20 @@
|
|||
#include "Logger.h"
|
||||
#include "StringFormat.h"
|
||||
#include "PeerStorage.h"
|
||||
#include "ExtensionMessageRegistry.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
DefaultExtensionMessageFactory::DefaultExtensionMessageFactory():
|
||||
_logger(LogFactory::getInstance()) {}
|
||||
|
||||
DefaultExtensionMessageFactory::DefaultExtensionMessageFactory(const BtContextHandle& btContext,
|
||||
const PeerHandle& peer):
|
||||
DefaultExtensionMessageFactory::DefaultExtensionMessageFactory
|
||||
(const BtContextHandle& btContext,
|
||||
const PeerHandle& peer,
|
||||
const SharedHandle<ExtensionMessageRegistry>& registry):
|
||||
_btContext(btContext),
|
||||
_peer(peer),
|
||||
_registry(registry),
|
||||
_logger(LogFactory::getInstance()) {}
|
||||
|
||||
DefaultExtensionMessageFactory::~DefaultExtensionMessageFactory() {}
|
||||
|
@ -67,7 +71,7 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t
|
|||
m->setPeer(_peer);
|
||||
return m;
|
||||
} else {
|
||||
std::string extensionName = getExtensionName(extensionMessageID);
|
||||
std::string extensionName = _registry->getExtensionName(extensionMessageID);
|
||||
if(extensionName.empty()) {
|
||||
throw DlAbortEx
|
||||
(StringFormat("No extension registered for extended message ID %u",
|
||||
|
|
|
@ -43,6 +43,7 @@ class BtContext;
|
|||
class PeerStorage;
|
||||
class Peer;
|
||||
class Logger;
|
||||
class ExtensionMessageRegistry;
|
||||
|
||||
class DefaultExtensionMessageFactory:public ExtensionMessageFactory {
|
||||
private:
|
||||
|
@ -52,13 +53,17 @@ private:
|
|||
|
||||
SharedHandle<Peer> _peer;
|
||||
|
||||
SharedHandle<ExtensionMessageRegistry> _registry;
|
||||
|
||||
Logger* _logger;
|
||||
|
||||
public:
|
||||
DefaultExtensionMessageFactory();
|
||||
|
||||
DefaultExtensionMessageFactory(const SharedHandle<BtContext>& btContext,
|
||||
const SharedHandle<Peer>& peer);
|
||||
DefaultExtensionMessageFactory
|
||||
(const SharedHandle<BtContext>& btContext,
|
||||
const SharedHandle<Peer>& peer,
|
||||
const SharedHandle<ExtensionMessageRegistry>& registry);
|
||||
|
||||
virtual ~DefaultExtensionMessageFactory();
|
||||
|
||||
|
@ -70,6 +75,12 @@ public:
|
|||
void setPeerStorage(const SharedHandle<PeerStorage>& peerStorage);
|
||||
|
||||
void setPeer(const SharedHandle<Peer>& peer);
|
||||
|
||||
void setExtensionMessageRegistry
|
||||
(const SharedHandle<ExtensionMessageRegistry>& registry)
|
||||
{
|
||||
_registry = registry;
|
||||
}
|
||||
};
|
||||
|
||||
typedef SharedHandle<DefaultExtensionMessageFactory> DefaultExtensionMessageFactoryHandle;
|
||||
|
|
|
@ -35,14 +35,14 @@
|
|||
#ifndef _D_EXTENSION_MESSAGE_FACTORY_H_
|
||||
#define _D_EXTENSION_MESSAGE_FACTORY_H_
|
||||
|
||||
#include "ExtendedMessagingAware.h"
|
||||
#include "common.h"
|
||||
#include "SharedHandle.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
class ExtensionMessage;
|
||||
|
||||
class ExtensionMessageFactory:public ExtendedMessagingAware {
|
||||
class ExtensionMessageFactory {
|
||||
public:
|
||||
virtual ~ExtensionMessageFactory() {}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/*
|
||||
* aria2 - The high speed download utility
|
||||
*
|
||||
* Copyright (C) 2006 Tatsuhiro Tsujikawa
|
||||
* Copyright (C) 2009 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
|
||||
|
@ -32,27 +32,27 @@
|
|||
* files in the program, then also delete it here.
|
||||
*/
|
||||
/* copyright --> */
|
||||
#ifndef _D_EXTENDED_MESSAGING_AWARE_H_
|
||||
#define _D_EXTENDED_MESSAGING_AWARE_H_
|
||||
#ifndef _D_EXTENSION_MESSAGE_REGISTRY_H_
|
||||
#define _D_EXTENSION_MESSAGE_REGISTRY_H_
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "BtConstants.h"
|
||||
#include "A2STR.h"
|
||||
#include <string>
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
class ExtendedMessagingAware {
|
||||
class ExtensionMessageRegistry {
|
||||
private:
|
||||
Extensions _extensions;
|
||||
public:
|
||||
ExtendedMessagingAware()
|
||||
ExtensionMessageRegistry()
|
||||
{
|
||||
_extensions["ut_pex"] = 8;
|
||||
}
|
||||
|
||||
virtual ~ExtendedMessagingAware() {}
|
||||
|
||||
const Extensions& getExtensions() const
|
||||
{
|
||||
return _extensions;
|
||||
|
@ -68,10 +68,10 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
std::string getExtensionName(uint8_t id) const
|
||||
const std::string& getExtensionName(uint8_t id) const
|
||||
{
|
||||
for(Extensions::const_iterator itr = _extensions.begin();
|
||||
itr != _extensions.end(); ++itr) {
|
||||
itr != _extensions.end(); ++itr) {
|
||||
const Extensions::value_type& p = *itr;
|
||||
if(p.second == id) {
|
||||
return p.first;
|
||||
|
@ -88,4 +88,4 @@ public:
|
|||
|
||||
} // namespace aria2
|
||||
|
||||
#endif // _D_EXTENDED_MESSAGING_AWARE_H_
|
||||
#endif // _D_EXTENSION_MESSAGE_REGISTRY_H_
|
|
@ -326,7 +326,6 @@ SRCS += PeerMessageUtil.cc PeerMessageUtil.h\
|
|||
DefaultExtensionMessageFactory.cc DefaultExtensionMessageFactory.h\
|
||||
HandshakeExtensionMessage.cc HandshakeExtensionMessage.h\
|
||||
UTPexExtensionMessage.cc UTPexExtensionMessage.h\
|
||||
ExtendedMessagingAware.h\
|
||||
DHTNode.cc DHTNode.h\
|
||||
DHTUtil.cc DHTUtil.h\
|
||||
DHTBucket.cc DHTBucket.h\
|
||||
|
@ -410,7 +409,8 @@ SRCS += PeerMessageUtil.cc PeerMessageUtil.h\
|
|||
IndexBtMessage.cc IndexBtMessage.h\
|
||||
ZeroBtMessage.cc ZeroBtMessage.h\
|
||||
RangeBtMessageValidator.h\
|
||||
IndexBtMessageValidator.h
|
||||
IndexBtMessageValidator.h\
|
||||
ExtensionMessageRegistry.h
|
||||
endif # ENABLE_BITTORRENT
|
||||
|
||||
if ENABLE_METALINK
|
||||
|
|
|
@ -127,7 +127,6 @@ bin_PROGRAMS = aria2c$(EXEEXT)
|
|||
@ENABLE_BITTORRENT_TRUE@ DefaultExtensionMessageFactory.cc DefaultExtensionMessageFactory.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ HandshakeExtensionMessage.cc HandshakeExtensionMessage.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ UTPexExtensionMessage.cc UTPexExtensionMessage.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ ExtendedMessagingAware.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ DHTNode.cc DHTNode.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ DHTUtil.cc DHTUtil.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ DHTBucket.cc DHTBucket.h\
|
||||
|
@ -211,7 +210,8 @@ bin_PROGRAMS = aria2c$(EXEEXT)
|
|||
@ENABLE_BITTORRENT_TRUE@ IndexBtMessage.cc IndexBtMessage.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ ZeroBtMessage.cc ZeroBtMessage.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ RangeBtMessageValidator.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ IndexBtMessageValidator.h
|
||||
@ENABLE_BITTORRENT_TRUE@ IndexBtMessageValidator.h\
|
||||
@ENABLE_BITTORRENT_TRUE@ ExtensionMessageRegistry.h
|
||||
|
||||
@ENABLE_METALINK_TRUE@am__append_11 = Metalinker.cc Metalinker.h\
|
||||
@ENABLE_METALINK_TRUE@ MetalinkEntry.cc MetalinkEntry.h\
|
||||
|
@ -475,13 +475,12 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
|||
ExtensionMessageFactory.h DefaultExtensionMessageFactory.cc \
|
||||
DefaultExtensionMessageFactory.h HandshakeExtensionMessage.cc \
|
||||
HandshakeExtensionMessage.h UTPexExtensionMessage.cc \
|
||||
UTPexExtensionMessage.h ExtendedMessagingAware.h DHTNode.cc \
|
||||
DHTNode.h DHTUtil.cc DHTUtil.h DHTBucket.cc DHTBucket.h \
|
||||
DHTRoutingTable.cc DHTRoutingTable.h DHTMessageEntry.cc \
|
||||
DHTMessageEntry.h DHTMessageDispatcher.h \
|
||||
DHTMessageDispatcherImpl.cc DHTMessageDispatcherImpl.h \
|
||||
DHTMessageReceiver.cc DHTMessageReceiver.h \
|
||||
DHTMessageTracker.cc DHTMessageTracker.h \
|
||||
UTPexExtensionMessage.h DHTNode.cc DHTNode.h DHTUtil.cc \
|
||||
DHTUtil.h DHTBucket.cc DHTBucket.h DHTRoutingTable.cc \
|
||||
DHTRoutingTable.h DHTMessageEntry.cc DHTMessageEntry.h \
|
||||
DHTMessageDispatcher.h DHTMessageDispatcherImpl.cc \
|
||||
DHTMessageDispatcherImpl.h DHTMessageReceiver.cc \
|
||||
DHTMessageReceiver.h DHTMessageTracker.cc DHTMessageTracker.h \
|
||||
DHTMessageTrackerEntry.cc DHTMessageTrackerEntry.h \
|
||||
DHTMessage.cc DHTMessage.h DHTConnection.h \
|
||||
DHTConnectionImpl.cc DHTConnectionImpl.h DHTAbstractMessage.cc \
|
||||
|
@ -533,9 +532,9 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
|||
BtSeederStateChoke.h RangeBtMessage.cc RangeBtMessage.h \
|
||||
IndexBtMessage.cc IndexBtMessage.h ZeroBtMessage.cc \
|
||||
ZeroBtMessage.h RangeBtMessageValidator.h \
|
||||
IndexBtMessageValidator.h Metalinker.cc Metalinker.h \
|
||||
MetalinkEntry.cc MetalinkEntry.h MetalinkResource.cc \
|
||||
MetalinkResource.h MetalinkProcessor.h \
|
||||
IndexBtMessageValidator.h ExtensionMessageRegistry.h \
|
||||
Metalinker.cc Metalinker.h MetalinkEntry.cc MetalinkEntry.h \
|
||||
MetalinkResource.cc MetalinkResource.h MetalinkProcessor.h \
|
||||
MetalinkProcessorFactory.cc MetalinkProcessorFactory.h \
|
||||
MetalinkParserController.cc MetalinkParserController.h \
|
||||
MetalinkParserStateMachine.cc MetalinkParserStateMachine.h \
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
#include "BtProgressInfoFile.h"
|
||||
#include "DefaultExtensionMessageFactory.h"
|
||||
#include "RequestGroupMan.h"
|
||||
#include "ExtensionMessageRegistry.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
|
@ -102,8 +103,11 @@ PeerInteractionCommand::PeerInteractionCommand
|
|||
SharedHandle<PeerStorage> peerStorage =
|
||||
btRegistry->getPeerStorage(_btContext->getInfoHashAsString());
|
||||
|
||||
SharedHandle<ExtensionMessageRegistry> exMsgRegistry
|
||||
(new ExtensionMessageRegistry());
|
||||
|
||||
SharedHandle<DefaultExtensionMessageFactory> extensionMessageFactory
|
||||
(new DefaultExtensionMessageFactory(_btContext, peer));
|
||||
(new DefaultExtensionMessageFactory(_btContext, peer, exMsgRegistry));
|
||||
extensionMessageFactory->setPeerStorage(peerStorage);
|
||||
|
||||
SharedHandle<DefaultBtMessageFactory> factory(new DefaultBtMessageFactory());
|
||||
|
@ -164,6 +168,7 @@ PeerInteractionCommand::PeerInteractionCommand
|
|||
btInteractive->setBtRequestFactory(reqFactory);
|
||||
btInteractive->setPeerConnection(peerConnection);
|
||||
btInteractive->setExtensionMessageFactory(extensionMessageFactory);
|
||||
btInteractive->setExtensionMessageRegistry(exMsgRegistry);
|
||||
btInteractive->setKeepAliveInterval
|
||||
(e->option->getAsInt(PREF_BT_KEEP_ALIVE_INTERVAL));
|
||||
btInteractive->setRequestGroupMan(e->_requestGroupMan);
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "UTPexExtensionMessage.h"
|
||||
#include "Exception.h"
|
||||
#include "FileEntry.h"
|
||||
#include "ExtensionMessageRegistry.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
|
@ -27,6 +28,7 @@ private:
|
|||
SharedHandle<MockPeerStorage> _peerStorage;
|
||||
SharedHandle<Peer> _peer;
|
||||
SharedHandle<DefaultExtensionMessageFactory> _factory;
|
||||
SharedHandle<ExtensionMessageRegistry> _registry;
|
||||
public:
|
||||
void setUp()
|
||||
{
|
||||
|
@ -41,10 +43,13 @@ public:
|
|||
_peer->allocateSessionResource(1024, 1024*1024);
|
||||
_peer->setExtension("ut_pex", 1);
|
||||
|
||||
_registry.reset(new ExtensionMessageRegistry());
|
||||
|
||||
_factory.reset(new DefaultExtensionMessageFactory());
|
||||
_factory->setBtContext(_btContext);
|
||||
_factory->setPeerStorage(_peerStorage);
|
||||
_factory->setPeer(_peer);
|
||||
_factory->setExtensionMessageRegistry(_registry);
|
||||
}
|
||||
|
||||
void testCreateMessage_unknown();
|
||||
|
@ -95,7 +100,7 @@ void DefaultExtensionMessageFactoryTest::testCreateMessage_UTPex()
|
|||
PeerMessageUtil::createcompact(c3, "192.168.0.2", 6882);
|
||||
PeerMessageUtil::createcompact(c4, "10.1.1.3",10000);
|
||||
|
||||
char id[1] = { _factory->getExtensionMessageID("ut_pex") };
|
||||
char id[1] = { _registry->getExtensionMessageID("ut_pex") };
|
||||
|
||||
std::string data = std::string(&id[0], &id[1])+"d5:added12:"+
|
||||
std::string(&c1[0], &c1[6])+std::string(&c2[0], &c2[6])+
|
||||
|
@ -107,7 +112,7 @@ void DefaultExtensionMessageFactoryTest::testCreateMessage_UTPex()
|
|||
(dynamic_pointer_cast<UTPexExtensionMessage>
|
||||
(_factory->createMessage
|
||||
(reinterpret_cast<const unsigned char*>(data.c_str()), data.size())));
|
||||
CPPUNIT_ASSERT_EQUAL(_factory->getExtensionMessageID("ut_pex"),
|
||||
CPPUNIT_ASSERT_EQUAL(_registry->getExtensionMessageID("ut_pex"),
|
||||
m->getExtensionMessageID());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue