MCPcopy Create free account
hub / github.com/apache/trafficserver / _change_parent

Method _change_parent

include/proxy/http2/Http2DependencyTree.h:457–500  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

455// Change node's parent to new_parent
456template <typename T>
457void
458Tree<T>::_change_parent(Node *node, Node *new_parent, bool exclusive)
459{
460 ink_release_assert(node->parent != nullptr);
461 node->parent->children.remove(node);
462 if (node->queued) {
463 node->parent->queue->erase(node->entry);
464 node->queued = false;
465
466 Node *current = node->parent;
467 while (current->queue->empty() && !current->active && current->parent != nullptr) {
468 current->parent->queue->erase(current->entry);
469 current->queued = false;
470 current = current->parent;
471 }
472 }
473
474 node->parent = nullptr;
475 if (exclusive) {
476 while (Node *child = new_parent->children.pop()) {
477 if (child->queued) {
478 child->parent->queue->erase(child->entry);
479 node->queue->push(child->entry);
480 }
481
482 node->children.push(child);
483 ink_release_assert(child != node);
484 child->parent = node;
485 }
486 }
487
488 new_parent->children.push(node);
489 ink_release_assert(node != new_parent);
490 node->parent = new_parent;
491
492 if (node->active || !node->queue->empty()) {
493 Node *current = node;
494 while (current->parent != nullptr && !current->queued) {
495 current->parent->queue->push(current->entry);
496 current->queued = true;
497 current = current->parent;
498 }
499 }
500}
501
502template <typename T>
503Node *

Callers

nothing calls this directly

Calls 5

removeMethod · 0.45
eraseMethod · 0.45
emptyMethod · 0.45
popMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected