diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-06-13 11:25:21 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-06-13 11:25:21 +0000 |
| commit | 3dfbec0f9ff13c660252d20dce17c88041280019 (patch) | |
| tree | f8197ebb95b99bb861e81236334d268e45d571a7 /src/DHTMessageFactoryImpl.cc | |
| parent | 532fc3724d5ece7a7a02cbe3b8db24d85da69626 (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.cc | 127 |
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; } |
