summaryrefslogtreecommitdiff
path: root/src/DHTBucket.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-04-01 12:28:39 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-04-01 12:28:39 +0000
commit5541477dce46b1b0126ddcf0d4ba6451c664c2c2 (patch)
tree8be8c5dc69e13e5a6f1856c0739637807f0f99ee /src/DHTBucket.cc
parent752fb34bbb9c4e3d270af3322a84140fee427dbe (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.cc29
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)