void NetworkManager::cleanUpLinks(Links & links, Assignment * assignment) { for ( Links::iterator l = links.begin(); l != links.end(); l++ ) { NetPath path = assignment->GetAssignment(*l); if ( !path.empty() ) removeAssignment(*l, path); assignment->RemoveAssignment(*l); } }
void DijkstraRouter::printPath(const NetPath & path) const { if ( path.empty() ) return; for ( NetPath::const_iterator i = path.begin(); i != path.end(); i++) { Element * element = *i; printf("%s:%lu", element->getName().c_str(), element->getID()); if ( i + 1 != path.end() ) printf(" -> "); } printf("\n"); }
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; }