]> git.kaiwu.me - nginx.git/commitdiff
ngx_rbtree_insert_value()
authorIgor Sysoev <igor@sysoev.ru>
Mon, 20 Nov 2006 17:13:21 +0000 (17:13 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 20 Nov 2006 17:13:21 +0000 (17:13 +0000)
src/core/ngx_rbtree.c
src/core/ngx_rbtree.h

index ae973e5b06e7ad61026332414ec9482dac988e68..a9d630520888f68fe851530a2c81ab417963fed4 100644 (file)
@@ -99,6 +99,39 @@ ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
 }
 
 
+void
+ngx_rbtree_insert_value(ngx_rbtree_node_t *temp, ngx_rbtree_node_t *node,
+    ngx_rbtree_node_t *sentinel)
+{
+    for ( ;; ) {
+
+        if (node->key < temp->key) {
+
+            if (temp->left == sentinel) {
+                temp->left = node;
+                break;
+            }
+
+            temp = temp->left;
+
+        } else {
+
+            if (temp->right == sentinel) {
+                temp->right = node;
+                break;
+            }
+
+            temp = temp->right;
+        }
+    }
+
+    node->parent = temp;
+    node->left = sentinel;
+    node->right = sentinel;
+    ngx_rbt_red(node);
+}
+
+
 void
 ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *temp, ngx_rbtree_node_t *node,
     ngx_rbtree_node_t *sentinel)
index c03703dc213467aa71e25bc49023448c6af57dff..008db2a25e62a913c3ae00a97f701717927e0a57 100644 (file)
@@ -44,6 +44,8 @@ void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
     ngx_rbtree_node_t *node);
 void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree,
     ngx_rbtree_node_t *node);
+void ngx_rbtree_insert_value(ngx_rbtree_node_t *root, ngx_rbtree_node_t *node,
+    ngx_rbtree_node_t *sentinel);
 void ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *root,
     ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);