diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-04-01 12:28:39 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-04-01 12:28:39 +0000 |
| commit | 5541477dce46b1b0126ddcf0d4ba6451c664c2c2 (patch) | |
| tree | 8be8c5dc69e13e5a6f1856c0739637807f0f99ee /src/DHTBucket.cc | |
| parent | 752fb34bbb9c4e3d270af3322a84140fee427dbe (diff) | |
2009-04-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten isInRange()
* src/DHTBucket.cc
* test/DHTBucketTest.cc
Diffstat (limited to 'src/DHTBucket.cc')
| -rw-r--r-- | src/DHTBucket.cc | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/src/DHTBucket.cc b/src/DHTBucket.cc index d4ce7da1..0dccf509 100644 --- a/src/DHTBucket.cc +++ b/src/DHTBucket.cc @@ -33,6 +33,11 @@ */ /* copyright --> */ #include "DHTBucket.h" + +#include <cstring> +#include <cassert> +#include <algorithm> + #include "DHTUtil.h" #include "DHTNode.h" #include "LogFactory.h" @@ -40,9 +45,6 @@ #include "Util.h" #include "DHTConstants.h" #include "a2functional.h" -#include <cstring> -#include <cassert> -#include <algorithm> namespace aria2 { @@ -89,25 +91,16 @@ bool DHTBucket::isInRange(const unsigned char* nodeID) const return isInRange(nodeID, _max, _min); } +// Returns true if nodeID is in [min, max] (inclusive). bool DHTBucket::isInRange(const unsigned char* nodeID, const unsigned char* max, const unsigned char* min) const { - for(size_t i = 0; i < DHT_ID_LENGTH; ++i) { - if(nodeID[i] < min[i]) { - return false; - } else if(min[i] < nodeID[i]) { - break; - } - } - for(size_t i = 0; i < DHT_ID_LENGTH; ++i) { - if(max[i] < nodeID[i]) { - return false; - } else if(nodeID[i] < max[i]) { - break; - } - } - return true; + return + !std::lexicographical_compare(&nodeID[0], &nodeID[DHT_ID_LENGTH], + &min[0], &min[DHT_ID_LENGTH]) && + !std::lexicographical_compare(&max[0], &max[DHT_ID_LENGTH], + &nodeID[0], &nodeID[DHT_ID_LENGTH]); } bool DHTBucket::addNode(const SharedHandle<DHTNode>& node) |
