summaryrefslogtreecommitdiff
path: root/src/DHTMessageFactoryImpl.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-03-07 12:05:50 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-03-07 12:05:50 +0000
commitfc0fa4203a0295e69f5101838dded603fc48b9e4 (patch)
treefea885ef0bd8b2b526bab5c5420cdfa3c5a9fd1e /src/DHTMessageFactoryImpl.cc
parent7578d5fb2299a7b818728c040bf91c4d076406db (diff)
2008-03-07 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Use unsigned char for data store.
Diffstat (limited to 'src/DHTMessageFactoryImpl.cc')
-rw-r--r--src/DHTMessageFactoryImpl.cc36
1 files changed, 17 insertions, 19 deletions
diff --git a/src/DHTMessageFactoryImpl.cc b/src/DHTMessageFactoryImpl.cc
index 001eeae7..d3fd88cb 100644
--- a/src/DHTMessageFactoryImpl.cc
+++ b/src/DHTMessageFactoryImpl.cc
@@ -160,7 +160,7 @@ SharedHandle<DHTMessage> DHTMessageFactoryImpl::createQueryMessage(const Diction
}
const Data* id = getData(getDictionary(d, "a"), "id");
validateID(id);
- SharedHandle<DHTNode> remoteNode = getRemoteNode((const unsigned char*)id->toString().c_str(), ipaddr, port);
+ SharedHandle<DHTNode> remoteNode = getRemoteNode(id->getData(), ipaddr, port);
std::string messageType = q->toString();
std::string transactionID = t->toString();
if(messageType == "ping") {
@@ -168,34 +168,31 @@ SharedHandle<DHTMessage> DHTMessageFactoryImpl::createQueryMessage(const Diction
} else if(messageType == "find_node") {
const Data* targetNodeID = getData(a, "target");
validateID(targetNodeID);
- return createFindNodeMessage(remoteNode,
- (const unsigned char*)targetNodeID->getData(),
+ return createFindNodeMessage(remoteNode, targetNodeID->getData(),
transactionID);
} else if(messageType == "get_peers") {
const Data* infoHash = getData(a, "info_hash");
validateID(infoHash);
return createGetPeersMessage(remoteNode,
- (const unsigned char*)infoHash->getData(),
- transactionID);
+ infoHash->getData(), transactionID);
} else if(messageType == "announce_peer") {
const Data* infoHash = getData(a, "info_hash");
validateID(infoHash);
const Data* port = getData(a, "port");
validatePort(port);
const Data* token = getData(a, "token");
- return createAnnouncePeerMessage(remoteNode,
- (const unsigned char*)infoHash->getData(),
- (uint16_t)port->toInt(),
- token->toString(),
- transactionID);
+ return createAnnouncePeerMessage(remoteNode, infoHash->getData(),
+ static_cast<uint16_t>(port->toInt()),
+ token->toString(), transactionID);
} else {
throw new DlAbortEx("Unsupported message type: %s", messageType.c_str());
}
}
-SharedHandle<DHTMessage> DHTMessageFactoryImpl::createResponseMessage(const std::string& messageType,
- const Dictionary* d,
- const SharedHandle<DHTNode>& remoteNode)
+SharedHandle<DHTMessage>
+DHTMessageFactoryImpl::createResponseMessage(const std::string& messageType,
+ const Dictionary* d,
+ const SharedHandle<DHTNode>& remoteNode)
{
const Data* t = getData(d, "t");
const Data* y = getData(d, "y");
@@ -217,11 +214,11 @@ SharedHandle<DHTMessage> DHTMessageFactoryImpl::createResponseMessage(const std:
const Dictionary* r = getDictionary(d, "r");
const Data* id = getData(r, "id");
validateID(id);
- validateIDMatch(remoteNode->getID(),
- (const unsigned char*)id->toString().c_str());
+ validateIDMatch(remoteNode->getID(), id->getData());
std::string transactionID = t->toString();
if(messageType == "ping") {
- return createPingReplyMessage(remoteNode, (const unsigned char*)id->getData(), transactionID);
+ return createPingReplyMessage(remoteNode,
+ id->getData(), transactionID);
} else if(messageType == "find_node") {
return createFindNodeReplyMessage(remoteNode, d, transactionID);
} else if(messageType == "get_peers") {
@@ -289,14 +286,15 @@ DHTMessageFactoryImpl::createFindNodeReplyMessage(const SharedHandle<DHTNode>& r
return m;
}
-std::deque<SharedHandle<DHTNode> > DHTMessageFactoryImpl::extractNodes(const char* src, size_t length)
+std::deque<SharedHandle<DHTNode> >
+DHTMessageFactoryImpl::extractNodes(const unsigned char* src, size_t length)
{
if(length%26 != 0) {
throw new DlAbortEx("Nodes length is not multiple of 26");
}
std::deque<SharedHandle<DHTNode> > nodes;
for(size_t offset = 0; offset < length; offset += 26) {
- SharedHandle<DHTNode> node = new DHTNode(reinterpret_cast<const unsigned char*>(src+offset));
+ SharedHandle<DHTNode> node = new DHTNode(src+offset);
std::pair<std::string, uint16_t> addr =
PeerMessageUtil::unpackcompact(src+offset+DHT_ID_LENGTH);
if(addr.first.empty()) {
@@ -419,7 +417,7 @@ DHTMessageFactoryImpl::createAnnouncePeerReplyMessage(const SharedHandle<DHTNode
}
SharedHandle<DHTMessage>
-DHTMessageFactoryImpl::createUnknownMessage(const char* data, size_t length,
+DHTMessageFactoryImpl::createUnknownMessage(const unsigned char* data, size_t length,
const std::string& ipaddr, uint16_t port)
{