Don't instantiate SharedHandle for DHT{Query, Response}Message subclass

pull/28/head
Tatsuhiro Tsujikawa 2012-09-28 00:13:08 +09:00
parent 5323afa5b2
commit c6b76f1d32
2 changed files with 30 additions and 34 deletions

View File

@ -303,8 +303,7 @@ const std::string& getDefaultVersion()
} }
} // namespace } // namespace
void DHTMessageFactoryImpl::setCommonProperty void DHTMessageFactoryImpl::setCommonProperty(DHTAbstractMessage* m)
(const SharedHandle<DHTAbstractMessage>& m)
{ {
m->setConnection(connection_); m->setConnection(connection_);
m->setMessageDispatcher(dispatcher_); m->setMessageDispatcher(dispatcher_);
@ -316,10 +315,9 @@ void DHTMessageFactoryImpl::setCommonProperty
SharedHandle<DHTQueryMessage> DHTMessageFactoryImpl::createPingMessage SharedHandle<DHTQueryMessage> DHTMessageFactoryImpl::createPingMessage
(const SharedHandle<DHTNode>& remoteNode, const std::string& transactionID) (const SharedHandle<DHTNode>& remoteNode, const std::string& transactionID)
{ {
SharedHandle<DHTPingMessage> m DHTPingMessage* m(new DHTPingMessage(localNode_, remoteNode, transactionID));
(new DHTPingMessage(localNode_, remoteNode, transactionID));
setCommonProperty(m); setCommonProperty(m);
return m; return SharedHandle<DHTQueryMessage>(m);
} }
SharedHandle<DHTResponseMessage> DHTMessageFactoryImpl::createPingReplyMessage SharedHandle<DHTResponseMessage> DHTMessageFactoryImpl::createPingReplyMessage
@ -327,10 +325,10 @@ SharedHandle<DHTResponseMessage> DHTMessageFactoryImpl::createPingReplyMessage
const unsigned char* id, const unsigned char* id,
const std::string& transactionID) const std::string& transactionID)
{ {
SharedHandle<DHTPingReplyMessage> m DHTPingReplyMessage* m
(new DHTPingReplyMessage(localNode_, remoteNode, id, transactionID)); (new DHTPingReplyMessage(localNode_, remoteNode, id, transactionID));
setCommonProperty(m); setCommonProperty(m);
return m; return SharedHandle<DHTResponseMessage>(m);
} }
SharedHandle<DHTQueryMessage> DHTMessageFactoryImpl::createFindNodeMessage SharedHandle<DHTQueryMessage> DHTMessageFactoryImpl::createFindNodeMessage
@ -338,11 +336,10 @@ SharedHandle<DHTQueryMessage> DHTMessageFactoryImpl::createFindNodeMessage
const unsigned char* targetNodeID, const unsigned char* targetNodeID,
const std::string& transactionID) const std::string& transactionID)
{ {
SharedHandle<DHTFindNodeMessage> m DHTFindNodeMessage* m(new DHTFindNodeMessage
(new DHTFindNodeMessage (localNode_, remoteNode, targetNodeID, transactionID));
(localNode_, remoteNode, targetNodeID, transactionID));
setCommonProperty(m); setCommonProperty(m);
return m; return SharedHandle<DHTQueryMessage>(m);
} }
SharedHandle<DHTResponseMessage> SharedHandle<DHTResponseMessage>
@ -351,12 +348,11 @@ DHTMessageFactoryImpl::createFindNodeReplyMessage
const std::vector<SharedHandle<DHTNode> >& closestKNodes, const std::vector<SharedHandle<DHTNode> >& closestKNodes,
const std::string& transactionID) const std::string& transactionID)
{ {
SharedHandle<DHTFindNodeReplyMessage> m DHTFindNodeReplyMessage* m(new DHTFindNodeReplyMessage
(new DHTFindNodeReplyMessage (family_, localNode_, remoteNode, transactionID));
(family_, localNode_, remoteNode, transactionID));
m->setClosestKNodes(closestKNodes); m->setClosestKNodes(closestKNodes);
setCommonProperty(m); setCommonProperty(m);
return m; return SharedHandle<DHTResponseMessage>(m);
} }
void DHTMessageFactoryImpl::extractNodes void DHTMessageFactoryImpl::extractNodes
@ -404,12 +400,12 @@ DHTMessageFactoryImpl::createGetPeersMessage
const unsigned char* infoHash, const unsigned char* infoHash,
const std::string& transactionID) const std::string& transactionID)
{ {
SharedHandle<DHTGetPeersMessage> m DHTGetPeersMessage* m
(new DHTGetPeersMessage(localNode_, remoteNode, infoHash, transactionID)); (new DHTGetPeersMessage(localNode_, remoteNode, infoHash, transactionID));
m->setPeerAnnounceStorage(peerAnnounceStorage_); m->setPeerAnnounceStorage(peerAnnounceStorage_);
m->setTokenTracker(tokenTracker_); m->setTokenTracker(tokenTracker_);
setCommonProperty(m); setCommonProperty(m);
return m; return SharedHandle<DHTQueryMessage>(m);
} }
SharedHandle<DHTResponseMessage> SharedHandle<DHTResponseMessage>
@ -444,7 +440,7 @@ DHTMessageFactoryImpl::createGetPeersReplyMessage
peers.push_back(peer); peers.push_back(peer);
} }
} }
} }
const String* token = getString(rDict, DHTGetPeersReplyMessage::TOKEN); const String* token = getString(rDict, DHTGetPeersReplyMessage::TOKEN);
return createGetPeersReplyMessage return createGetPeersReplyMessage
(remoteNode, nodes, peers, token->s(), transactionID); (remoteNode, nodes, peers, token->s(), transactionID);
@ -458,13 +454,13 @@ DHTMessageFactoryImpl::createGetPeersReplyMessage
const std::string& token, const std::string& token,
const std::string& transactionID) const std::string& transactionID)
{ {
SharedHandle<DHTGetPeersReplyMessage> m DHTGetPeersReplyMessage* m(new DHTGetPeersReplyMessage
(new DHTGetPeersReplyMessage (family_, localNode_, remoteNode, token,
(family_, localNode_, remoteNode, token, transactionID)); transactionID));
m->setClosestKNodes(closestKNodes); m->setClosestKNodes(closestKNodes);
m->setValues(values); m->setValues(values);
setCommonProperty(m); setCommonProperty(m);
return m; return SharedHandle<DHTResponseMessage>(m);
} }
SharedHandle<DHTQueryMessage> SharedHandle<DHTQueryMessage>
@ -475,23 +471,23 @@ DHTMessageFactoryImpl::createAnnouncePeerMessage
const std::string& token, const std::string& token,
const std::string& transactionID) const std::string& transactionID)
{ {
SharedHandle<DHTAnnouncePeerMessage> m DHTAnnouncePeerMessage* m(new DHTAnnouncePeerMessage
(new DHTAnnouncePeerMessage (localNode_, remoteNode, infoHash, tcpPort, token,
(localNode_, remoteNode, infoHash, tcpPort, token, transactionID)); transactionID));
m->setPeerAnnounceStorage(peerAnnounceStorage_); m->setPeerAnnounceStorage(peerAnnounceStorage_);
m->setTokenTracker(tokenTracker_); m->setTokenTracker(tokenTracker_);
setCommonProperty(m); setCommonProperty(m);
return m; return SharedHandle<DHTQueryMessage>(m);
} }
SharedHandle<DHTResponseMessage> SharedHandle<DHTResponseMessage>
DHTMessageFactoryImpl::createAnnouncePeerReplyMessage DHTMessageFactoryImpl::createAnnouncePeerReplyMessage
(const SharedHandle<DHTNode>& remoteNode, const std::string& transactionID) (const SharedHandle<DHTNode>& remoteNode, const std::string& transactionID)
{ {
SharedHandle<DHTAnnouncePeerReplyMessage> m DHTAnnouncePeerReplyMessage* m
(new DHTAnnouncePeerReplyMessage(localNode_, remoteNode, transactionID)); (new DHTAnnouncePeerReplyMessage(localNode_, remoteNode, transactionID));
setCommonProperty(m); setCommonProperty(m);
return m; return SharedHandle<DHTResponseMessage>(m);
} }
SharedHandle<DHTMessage> SharedHandle<DHTMessage>
@ -500,9 +496,9 @@ DHTMessageFactoryImpl::createUnknownMessage
const std::string& ipaddr, uint16_t port) const std::string& ipaddr, uint16_t port)
{ {
SharedHandle<DHTUnknownMessage> m DHTUnknownMessage* m
(new DHTUnknownMessage(localNode_, data, length, ipaddr, port)); (new DHTUnknownMessage(localNode_, data, length, ipaddr, port));
return m; return SharedHandle<DHTMessage>(m);
} }
void DHTMessageFactoryImpl::setRoutingTable(DHTRoutingTable* routingTable) void DHTMessageFactoryImpl::setRoutingTable(DHTRoutingTable* routingTable)
@ -520,7 +516,7 @@ void DHTMessageFactoryImpl::setMessageDispatcher
{ {
dispatcher_ = dispatcher; dispatcher_ = dispatcher;
} }
void DHTMessageFactoryImpl::setPeerAnnounceStorage void DHTMessageFactoryImpl::setPeerAnnounceStorage
(DHTPeerAnnounceStorage* storage) (DHTPeerAnnounceStorage* storage)
{ {

View File

@ -59,11 +59,11 @@ private:
DHTMessageDispatcher* dispatcher_; DHTMessageDispatcher* dispatcher_;
DHTRoutingTable* routingTable_; DHTRoutingTable* routingTable_;
DHTPeerAnnounceStorage* peerAnnounceStorage_; DHTPeerAnnounceStorage* peerAnnounceStorage_;
DHTTokenTracker* tokenTracker_; DHTTokenTracker* tokenTracker_;
// search node in routingTable. If it is not found, create new one. // search node in routingTable. If it is not found, create new one.
SharedHandle<DHTNode> getRemoteNode SharedHandle<DHTNode> getRemoteNode
(const unsigned char* id, const std::string& ipaddr, uint16_t port) const; (const unsigned char* id, const std::string& ipaddr, uint16_t port) const;
@ -76,7 +76,7 @@ private:
(std::vector<SharedHandle<DHTNode> >& nodes, (std::vector<SharedHandle<DHTNode> >& nodes,
const unsigned char* src, size_t length); const unsigned char* src, size_t length);
void setCommonProperty(const SharedHandle<DHTAbstractMessage>& m); void setCommonProperty(DHTAbstractMessage* m);
public: public:
DHTMessageFactoryImpl(int family); DHTMessageFactoryImpl(int family);