| 549 | } |
| 550 | |
| 551 | Status MutableGraphView::UpdateNodeName(absl::string_view from_node_name, |
| 552 | absl::string_view to_node_name, |
| 553 | bool update_fanouts) { |
| 554 | auto error_status = [from_node_name, to_node_name, |
| 555 | update_fanouts](absl::string_view msg) { |
| 556 | string params = absl::Substitute( |
| 557 | "from_node_name='$0', to_node_name='$1', update_fanouts=$2", |
| 558 | from_node_name, to_node_name, update_fanouts); |
| 559 | return MutationError("UpdateNodeName", params, msg); |
| 560 | }; |
| 561 | |
| 562 | NodeDef* node = GetNode(from_node_name); |
| 563 | TF_RETURN_IF_ERROR(CheckNodeExists(from_node_name, node, error_status)); |
| 564 | |
| 565 | if (node->name() == to_node_name) { |
| 566 | return Status::OK(); |
| 567 | } |
| 568 | if (HasNode(to_node_name)) { |
| 569 | return error_status( |
| 570 | "can't update node name because new node name is in use"); |
| 571 | } |
| 572 | auto max_output_port = max_regular_output_port().find(node); |
| 573 | const bool has_max_output_port = |
| 574 | max_output_port != max_regular_output_port().end(); |
| 575 | auto control_fanouts = fanouts().find({node, Graph::kControlSlot}); |
| 576 | |
| 577 | if (update_fanouts) { |
| 578 | SwapControlledFanoutInputs(*this, control_fanouts, to_node_name); |
| 579 | if (has_max_output_port) { |
| 580 | SwapRegularFanoutInputs(&fanouts(), node, to_node_name, |
| 581 | max_output_port->second); |
| 582 | } |
| 583 | } else if (has_max_output_port || |
| 584 | HasFanoutValue(fanouts(), control_fanouts)) { |
| 585 | return error_status("can't update node name because node has fanouts"); |
| 586 | } |
| 587 | |
| 588 | nodes().erase(node->name()); |
| 589 | node->set_name(string(to_node_name)); |
| 590 | nodes().emplace(node->name(), node); |
| 591 | return Status::OK(); |
| 592 | } |
| 593 | |
| 594 | Status MutableGraphView::SwapNodeNames(absl::string_view from_node_name, |
| 595 | absl::string_view to_node_name, |
nothing calls this directly
no test coverage detected