diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-03-07 12:05:50 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-03-07 12:05:50 +0000 |
| commit | fc0fa4203a0295e69f5101838dded603fc48b9e4 (patch) | |
| tree | fea885ef0bd8b2b526bab5c5420cdfa3c5a9fd1e /src/DHTMessageFactoryImpl.cc | |
| parent | 7578d5fb2299a7b818728c040bf91c4d076406db (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.cc | 36 |
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) { |
