diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2014-09-13 00:49:08 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2014-09-13 00:49:08 +0900 |
| commit | f55c16c7edeb319a82217a91a87a35cddfd606b0 (patch) | |
| tree | 0973b217496afba7762ea103621ca133c80853c1 /src/DHTBucketTree.cc | |
| parent | e18e8aeeaa2c24591b0ebb89984cbdc30a0f25a8 (diff) | |
Use std::unique_ptr for DHTBucketTree's left and right pointers
Diffstat (limited to 'src/DHTBucketTree.cc')
| -rw-r--r-- | src/DHTBucketTree.cc | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/DHTBucketTree.cc b/src/DHTBucketTree.cc index 05a67723..92243c67 100644 --- a/src/DHTBucketTree.cc +++ b/src/DHTBucketTree.cc @@ -39,34 +39,30 @@ #include "DHTBucket.h" #include "DHTNode.h" +#include "a2functional.h" namespace aria2 { DHTBucketTreeNode::DHTBucketTreeNode -(DHTBucketTreeNode* left, - DHTBucketTreeNode* right) +(std::unique_ptr<DHTBucketTreeNode> left, + std::unique_ptr<DHTBucketTreeNode> right) : parent_(nullptr), - left_(left), - right_(right) + left_(std::move(left)), + right_(std::move(right)) { resetRelation(); } -DHTBucketTreeNode::DHTBucketTreeNode(const std::shared_ptr<DHTBucket>& bucket) +DHTBucketTreeNode::DHTBucketTreeNode(std::shared_ptr<DHTBucket> bucket) : parent_(nullptr), - left_(nullptr), - right_(nullptr), - bucket_(bucket) + bucket_(std::move(bucket)) { memcpy(minId_, bucket_->getMinID(), DHT_ID_LENGTH); memcpy(maxId_, bucket_->getMaxID(), DHT_ID_LENGTH); } DHTBucketTreeNode::~DHTBucketTreeNode() -{ - delete left_; - delete right_; -} +{} void DHTBucketTreeNode::resetRelation() { @@ -82,9 +78,9 @@ DHTBucketTreeNode* DHTBucketTreeNode::dig(const unsigned char* key) return nullptr; } if(left_->isInRange(key)) { - return left_; + return left_.get(); } else { - return right_; + return right_.get(); } } @@ -99,9 +95,8 @@ bool DHTBucketTreeNode::isInRange(const unsigned char* key) const void DHTBucketTreeNode::split() { - std::shared_ptr<DHTBucket> leftBucket = bucket_->split(); - left_ = new DHTBucketTreeNode(leftBucket); - right_ = new DHTBucketTreeNode(bucket_); + left_ = make_unique<DHTBucketTreeNode>(bucket_->split()); + right_ = make_unique<DHTBucketTreeNode>(bucket_); bucket_.reset(); resetRelation(); } |
