| 1336 | // --------------------------------------------------------------------------- |
| 1337 | |
| 1338 | PJ::Status DerivedEngine::replaceSisoTransform(PJ::NodeId node_id, std::unique_ptr<ISISOTransform> op) { |
| 1339 | if (!op) { |
| 1340 | return PJ::unexpected("replace_siso_transform: null transform op"); |
| 1341 | } |
| 1342 | auto it = impl_->nodes.find(node_id); |
| 1343 | if (it == impl_->nodes.end()) { |
| 1344 | return PJ::unexpected(fmt::format("replace_siso_transform: node {} not found", node_id)); |
| 1345 | } |
| 1346 | DerivedNode& node = it.value(); |
| 1347 | if (node.is_mimo) { |
| 1348 | return PJ::unexpected(fmt::format("replace_siso_transform: node {} is not a SISO node", node_id)); |
| 1349 | } |
| 1350 | node.siso_op = std::move(op); |
| 1351 | // recomputeBatch clears the (same) output topic, resets state, and replays. |
| 1352 | return recomputeBatch(node_id); |
| 1353 | } |
| 1354 | |
| 1355 | } // namespace PJ |