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

View File

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