summaryrefslogtreecommitdiff
path: root/src/DHTMessageFactoryImpl.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-06-13 11:25:21 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-06-13 11:25:21 +0000
commit3dfbec0f9ff13c660252d20dce17c88041280019 (patch)
treef8197ebb95b99bb861e81236334d268e45d571a7 /src/DHTMessageFactoryImpl.cc
parent532fc3724d5ece7a7a02cbe3b8db24d85da69626 (diff)
2010-06-13 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten DHTMessageCallback using Visitor pattern. Eliminated dynamic_pointer_cast. * src/DHTMessageCallbackImpl.cc: Removed * src/DHTMessageReceiver.cc * src/DHTAbstractNodeLookupTask.h * src/DHTAnnouncePeerReplyMessage.h * src/DHTReplaceNodeTask.h * src/DHTFindNodeReplyMessage.cc * src/DHTGetPeersReplyMessage.h * src/DHTPeerLookupTask.h * src/DHTMessageCallbackImpl.h: Removed * src/DHTMessageFactory.h * src/DHTNodeLookupTaskCallback.h * src/DHTMessageTracker.h * src/DHTMessageCallbackListener.h: Removed * src/DHTGetPeersReplyMessage.cc * src/DHTMessageCallback.h * src/DHTAnnouncePeerReplyMessage.cc * src/DHTNodeLookupTask.h * src/DHTReplaceNodeTask.cc * src/DHTPeerLookupTaskCallback.cc * src/DHTMessageTracker.cc * src/DHTPingReplyMessage.cc * src/DHTPingTask.cc * src/DHTMessageFactoryImpl.h * src/Makefile.am * src/DHTNodeLookupTask.cc * src/DHTPeerLookupTaskCallback.h * src/DHTPeerLookupTask.cc * src/DHTMessageReceiver.h * src/DHTMessageFactoryImpl.cc * src/DHTResponseMessage.h * src/DHTFindNodeReplyMessage.h * src/DHTPingReplyMessageCallback.h * src/Makefile.in * src/DHTBucketRefreshTask.cc * src/DHTNodeLookupTaskCallback.cc * src/DHTPingTask.h * src/DHTPingReplyMessage.h * src/DHTAbstractNodeLookupTask.cc: Removed * test/DHTMessageTrackerTest.cc * test/DHTPingMessageTest.cc * test/DHTGetPeersMessageTest.cc * test/MockDHTMessage.h * test/MockDHTMessageFactory.h * test/DHTFindNodeMessageTest.cc * test/MockDHTMessageCallback.h * test/DHTAnnouncePeerMessageTest.cc
Diffstat (limited to 'src/DHTMessageFactoryImpl.cc')
-rw-r--r--src/DHTMessageFactoryImpl.cc127
1 files changed, 70 insertions, 57 deletions
diff --git a/src/DHTMessageFactoryImpl.cc b/src/DHTMessageFactoryImpl.cc
index b2a9a6ef..3db7e41d 100644
--- a/src/DHTMessageFactoryImpl.cc
+++ b/src/DHTMessageFactoryImpl.cc
@@ -71,7 +71,8 @@ DHTMessageFactoryImpl::DHTMessageFactoryImpl():
DHTMessageFactoryImpl::~DHTMessageFactoryImpl() {}
SharedHandle<DHTNode>
-DHTMessageFactoryImpl::getRemoteNode(const unsigned char* id, const std::string& ipaddr, uint16_t port) const
+DHTMessageFactoryImpl::getRemoteNode
+(const unsigned char* id, const std::string& ipaddr, uint16_t port) const
{
SharedHandle<DHTNode> node = _routingTable->getNode(id, ipaddr, port);
if(node.isNull()) {
@@ -184,10 +185,8 @@ static void setVersion(const SharedHandle<DHTMessage>& msg, const BDE& dict)
}
}
-SharedHandle<DHTMessage> DHTMessageFactoryImpl::createQueryMessage
-(const BDE& dict,
- const std::string& ipaddr,
- uint16_t port)
+SharedHandle<DHTQueryMessage> DHTMessageFactoryImpl::createQueryMessage
+(const BDE& dict, const std::string& ipaddr, uint16_t port)
{
const BDE& messageType = getString(dict, DHTQueryMessage::Q);
const BDE& transactionID = getString(dict, DHTMessage::T);
@@ -199,7 +198,7 @@ SharedHandle<DHTMessage> DHTMessageFactoryImpl::createQueryMessage
const BDE& id = getString(aDict, DHTMessage::ID);
validateID(id);
SharedHandle<DHTNode> remoteNode = getRemoteNode(id.uc(), ipaddr, port);
- SharedHandle<DHTMessage> msg;
+ SharedHandle<DHTQueryMessage> msg;
if(messageType.s() == DHTPingMessage::PING) {
msg = createPingMessage(remoteNode, transactionID.s());
} else if(messageType.s() == DHTFindNodeMessage::FIND_NODE) {
@@ -233,11 +232,12 @@ SharedHandle<DHTMessage> DHTMessageFactoryImpl::createQueryMessage
return msg;
}
-SharedHandle<DHTMessage>
-DHTMessageFactoryImpl::createResponseMessage(const std::string& messageType,
- const BDE& dict,
- const std::string& ipaddr,
- uint16_t port)
+SharedHandle<DHTResponseMessage>
+DHTMessageFactoryImpl::createResponseMessage
+(const std::string& messageType,
+ const BDE& dict,
+ const std::string& ipaddr,
+ uint16_t port)
{
const BDE& transactionID = getString(dict, DHTMessage::T);
const BDE& y = getString(dict, DHTMessage::Y);
@@ -265,7 +265,7 @@ DHTMessageFactoryImpl::createResponseMessage(const std::string& messageType,
const BDE& id = getString(rDict, DHTMessage::ID);
validateID(id);
SharedHandle<DHTNode> remoteNode = getRemoteNode(id.uc(), ipaddr, port);
- SharedHandle<DHTMessage> msg;
+ SharedHandle<DHTResponseMessage> msg;
if(messageType == DHTPingReplyMessage::PING) {
msg = createPingReplyMessage(remoteNode, id.uc(), transactionID.s());
} else if(messageType == DHTFindNodeReplyMessage::FIND_NODE) {
@@ -317,34 +317,38 @@ void DHTMessageFactoryImpl::setCommonProperty(const SharedHandle<DHTAbstractMess
m->setVersion(getDefaultVersion());
}
-SharedHandle<DHTMessage> DHTMessageFactoryImpl::createPingMessage(const SharedHandle<DHTNode>& remoteNode, const std::string& transactionID)
+SharedHandle<DHTQueryMessage> DHTMessageFactoryImpl::createPingMessage
+(const SharedHandle<DHTNode>& remoteNode, const std::string& transactionID)
{
SharedHandle<DHTPingMessage> m(new DHTPingMessage(_localNode, remoteNode, transactionID));
setCommonProperty(m);
return m;
}
-SharedHandle<DHTMessage>
-DHTMessageFactoryImpl::createPingReplyMessage(const SharedHandle<DHTNode>& remoteNode,
- const unsigned char* id,
- const std::string& transactionID)
+SharedHandle<DHTResponseMessage> DHTMessageFactoryImpl::createPingReplyMessage
+(const SharedHandle<DHTNode>& remoteNode,
+ const unsigned char* id,
+ const std::string& transactionID)
{
- SharedHandle<DHTPingReplyMessage> m(new DHTPingReplyMessage(_localNode, remoteNode, id, transactionID));
+ SharedHandle<DHTPingReplyMessage> m
+ (new DHTPingReplyMessage(_localNode, remoteNode, id, transactionID));
setCommonProperty(m);
return m;
}
-SharedHandle<DHTMessage>
-DHTMessageFactoryImpl::createFindNodeMessage(const SharedHandle<DHTNode>& remoteNode,
- const unsigned char* targetNodeID,
- const std::string& transactionID)
+SharedHandle<DHTQueryMessage> DHTMessageFactoryImpl::createFindNodeMessage
+(const SharedHandle<DHTNode>& remoteNode,
+ const unsigned char* targetNodeID,
+ const std::string& transactionID)
{
- SharedHandle<DHTFindNodeMessage> m(new DHTFindNodeMessage(_localNode, remoteNode, targetNodeID, transactionID));
+ SharedHandle<DHTFindNodeMessage> m
+ (new DHTFindNodeMessage
+ (_localNode, remoteNode, targetNodeID, transactionID));
setCommonProperty(m);
return m;
}
-SharedHandle<DHTMessage>
+SharedHandle<DHTResponseMessage>
DHTMessageFactoryImpl::createFindNodeReplyMessage
(const SharedHandle<DHTNode>& remoteNode,
const std::vector<SharedHandle<DHTNode> >& closestKNodes,
@@ -378,7 +382,7 @@ DHTMessageFactoryImpl::extractNodes(const unsigned char* src, size_t length)
return nodes;
}
-SharedHandle<DHTMessage>
+SharedHandle<DHTResponseMessage>
DHTMessageFactoryImpl::createFindNodeReplyMessage
(const SharedHandle<DHTNode>& remoteNode,
const BDE& dict,
@@ -392,22 +396,21 @@ DHTMessageFactoryImpl::createFindNodeReplyMessage
return createFindNodeReplyMessage(remoteNode, nodes, transactionID);
}
-SharedHandle<DHTMessage>
-DHTMessageFactoryImpl::createGetPeersMessage(const SharedHandle<DHTNode>& remoteNode,
- const unsigned char* infoHash,
- const std::string& transactionID)
-{
- SharedHandle<DHTGetPeersMessage> m(new DHTGetPeersMessage(_localNode,
- remoteNode,
- infoHash,
- transactionID));
+SharedHandle<DHTQueryMessage>
+DHTMessageFactoryImpl::createGetPeersMessage
+(const SharedHandle<DHTNode>& remoteNode,
+ const unsigned char* infoHash,
+ const std::string& transactionID)
+{
+ SharedHandle<DHTGetPeersMessage> m
+ (new DHTGetPeersMessage(_localNode, remoteNode, infoHash, transactionID));
m->setPeerAnnounceStorage(_peerAnnounceStorage);
m->setTokenTracker(_tokenTracker);
setCommonProperty(m);
return m;
}
-SharedHandle<DHTMessage>
+SharedHandle<DHTResponseMessage>
DHTMessageFactoryImpl::createGetPeersReplyMessageWithNodes
(const SharedHandle<DHTNode>& remoteNode,
const BDE& dict,
@@ -423,7 +426,7 @@ DHTMessageFactoryImpl::createGetPeersReplyMessageWithNodes
transactionID);
}
-SharedHandle<DHTMessage>
+SharedHandle<DHTResponseMessage>
DHTMessageFactoryImpl::createGetPeersReplyMessage
(const SharedHandle<DHTNode>& remoteNode,
const std::vector<SharedHandle<DHTNode> >& closestKNodes,
@@ -437,7 +440,7 @@ DHTMessageFactoryImpl::createGetPeersReplyMessage
return m;
}
-SharedHandle<DHTMessage>
+SharedHandle<DHTResponseMessage>
DHTMessageFactoryImpl::createGetPeersReplyMessageWithValues
(const SharedHandle<DHTNode>& remoteNode,
const BDE& dict,
@@ -462,37 +465,40 @@ DHTMessageFactoryImpl::createGetPeersReplyMessageWithValues
transactionID);
}
-SharedHandle<DHTMessage>
+SharedHandle<DHTResponseMessage>
DHTMessageFactoryImpl::createGetPeersReplyMessage
(const SharedHandle<DHTNode>& remoteNode,
const std::vector<SharedHandle<Peer> >& values,
const std::string& token,
const std::string& transactionID)
{
- SharedHandle<DHTGetPeersReplyMessage> m(new DHTGetPeersReplyMessage(_localNode, remoteNode, token, transactionID));
+ SharedHandle<DHTGetPeersReplyMessage> m
+ (new DHTGetPeersReplyMessage(_localNode, remoteNode, token, transactionID));
m->setValues(values);
setCommonProperty(m);
return m;
}
-SharedHandle<DHTMessage>
-DHTMessageFactoryImpl::createAnnouncePeerMessage(const SharedHandle<DHTNode>& remoteNode,
- const unsigned char* infoHash,
- uint16_t tcpPort,
- const std::string& token,
- const std::string& transactionID)
+SharedHandle<DHTQueryMessage>
+DHTMessageFactoryImpl::createAnnouncePeerMessage
+(const SharedHandle<DHTNode>& remoteNode,
+ const unsigned char* infoHash,
+ uint16_t tcpPort,
+ const std::string& token,
+ const std::string& transactionID)
{
SharedHandle<DHTAnnouncePeerMessage> m
- (new DHTAnnouncePeerMessage(_localNode, remoteNode, infoHash, tcpPort, token, transactionID));
+ (new DHTAnnouncePeerMessage
+ (_localNode, remoteNode, infoHash, tcpPort, token, transactionID));
m->setPeerAnnounceStorage(_peerAnnounceStorage);
m->setTokenTracker(_tokenTracker);
setCommonProperty(m);
return m;
}
-SharedHandle<DHTMessage>
-DHTMessageFactoryImpl::createAnnouncePeerReplyMessage(const SharedHandle<DHTNode>& remoteNode,
- const std::string& transactionID)
+SharedHandle<DHTResponseMessage>
+DHTMessageFactoryImpl::createAnnouncePeerReplyMessage
+(const SharedHandle<DHTNode>& remoteNode, const std::string& transactionID)
{
SharedHandle<DHTAnnouncePeerReplyMessage> m
(new DHTAnnouncePeerReplyMessage(_localNode, remoteNode, transactionID));
@@ -501,8 +507,9 @@ DHTMessageFactoryImpl::createAnnouncePeerReplyMessage(const SharedHandle<DHTNode
}
SharedHandle<DHTMessage>
-DHTMessageFactoryImpl::createUnknownMessage(const unsigned char* data, size_t length,
- const std::string& ipaddr, uint16_t port)
+DHTMessageFactoryImpl::createUnknownMessage
+(const unsigned char* data, size_t length,
+ const std::string& ipaddr, uint16_t port)
{
SharedHandle<DHTUnknownMessage> m
@@ -510,32 +517,38 @@ DHTMessageFactoryImpl::createUnknownMessage(const unsigned char* data, size_t le
return m;
}
-void DHTMessageFactoryImpl::setRoutingTable(const WeakHandle<DHTRoutingTable>& routingTable)
+void DHTMessageFactoryImpl::setRoutingTable
+(const WeakHandle<DHTRoutingTable>& routingTable)
{
_routingTable = routingTable;
}
-void DHTMessageFactoryImpl::setConnection(const WeakHandle<DHTConnection>& connection)
+void DHTMessageFactoryImpl::setConnection
+(const WeakHandle<DHTConnection>& connection)
{
_connection = connection;
}
-void DHTMessageFactoryImpl::setMessageDispatcher(const WeakHandle<DHTMessageDispatcher>& dispatcher)
+void DHTMessageFactoryImpl::setMessageDispatcher
+(const WeakHandle<DHTMessageDispatcher>& dispatcher)
{
_dispatcher = dispatcher;
}
-void DHTMessageFactoryImpl::setPeerAnnounceStorage(const WeakHandle<DHTPeerAnnounceStorage>& storage)
+void DHTMessageFactoryImpl::setPeerAnnounceStorage
+(const WeakHandle<DHTPeerAnnounceStorage>& storage)
{
_peerAnnounceStorage = storage;
}
-void DHTMessageFactoryImpl::setTokenTracker(const WeakHandle<DHTTokenTracker>& tokenTracker)
+void DHTMessageFactoryImpl::setTokenTracker
+(const WeakHandle<DHTTokenTracker>& tokenTracker)
{
_tokenTracker = tokenTracker;
}
-void DHTMessageFactoryImpl::setLocalNode(const SharedHandle<DHTNode>& localNode)
+void DHTMessageFactoryImpl::setLocalNode
+(const SharedHandle<DHTNode>& localNode)
{
_localNode = localNode;
}