Browse Source

[2218] Add DomainTree::getLargestNode()

Mukund Sivaraman 12 years ago
parent
commit
4c9e89ec99
1 changed files with 23 additions and 0 deletions
  1. 23 0
      src/lib/datasrc/memory/domaintree.h

+ 23 - 0
src/lib/datasrc/memory/domaintree.h

@@ -1214,6 +1214,14 @@ public:
     }
     }
     //@}
     //@}
 
 
+    /// \brief return the largest node (right-most last node) in the
+    /// tree.
+    ///
+    /// \return A \c DomainTreeNode that is largest in the tree. If the
+    /// tree has no nodes, NULL will be returned.
+    const DomainTreeNode<T>*
+    getLargestNode() const;
+
     /// \brief return the next bigger node in DNSSEC order from a given node
     /// \brief return the next bigger node in DNSSEC order from a given node
     /// chain.
     /// chain.
     ///
     ///
@@ -1710,6 +1718,21 @@ DomainTree<T>::previousNode(DomainTreeNodeChain<T>& node_path) const {
 }
 }
 
 
 template <typename T>
 template <typename T>
+const DomainTreeNode<T>*
+DomainTree<T>::getLargestNode() const {
+    const DomainTreeNode<T>* node = root_.get();
+    if (root_ == NULL) {
+        return (NULL);
+    }
+
+    while (node->getRight() != NULL) {
+        node = node->getRight();
+    }
+
+    return (node);
+}
+
+template <typename T>
 typename DomainTree<T>::Result
 typename DomainTree<T>::Result
 DomainTree<T>::insert(util::MemorySegment& mem_sgmt,
 DomainTree<T>::insert(util::MemorySegment& mem_sgmt,
                       const isc::dns::Name& target_name,
                       const isc::dns::Name& target_name,