Link * FirstFitAlgorithm::createDummyLink(Link * virtualLink, Assignment * assignment) { if ( virtualLink == 0 ) return 0; Element * first = getCastedAssignment(virtualLink->getFirst(), assignment); Element * second = getCastedAssignment(virtualLink->getSecond(), assignment); if ( first == 0 || second == 0 ) return 0; Link * dummyLink = new Link("dummy_link", virtualLink->getCapacity(), virtualLink->getMaxCapacity()); dummyLink->bindElements(first, second); return dummyLink; }
Algorithm::Result NetworkManager::buildPath(Element * from, Element * to, Link * vlink, Assignment * assignment) { if ( from == to ) return Algorithm::SUCCESS; cerr << "[NM]\tBuilding path" << endl; Link * dummy = new Link("dummy", vlink->getCapacity(), vlink->getMaxCapacity()); dummy->bindElements(from, to); NetPath path = VirtualLinkRouter::routeDejkstra(dummy, &network); delete dummy; if ( path.empty() ) return Algorithm::FAILURE; addAssignment(vlink, path); assignment->AddAssignment(vlink, path); cerr << "[NM]\tPath building succedeed" << endl; return Algorithm::SUCCESS; }