Virtlab:Řídící server/Mapping.php.inc

Z VirtlabWiki

Přejít na: navigace, hledání

Tato třída (virtlabMapping) implementuje vlastní namapování laboratorních prvků na prvky v logické topologii, tak aby byly splněny všechny podmínky.

Obsah

Proměnné

equipment 
odkaz na objekt virtlabParserEquipment, který poskytuje data o laboratorních prvcích
topology 
odkaz na objekt virtlabParserTopology, který poskytuje data o logické topologii

Metody

function __construct(virtlabParserEquipment $equip, virtlabParserTopology $topol) 
konstruktor třídy v PHP5. Jako parametry očekává objekty jednotlivých parseru - virtuální topologie a vybavení
public function Evaluate($device) 
vrátí vypočtenou hodnotu (tu ovlivnňuje typ laboratorního prvku, počet rozhrani, ...) zadaného lab. prvku. Nastavení konstant třídy virtlabValues ovlivní výslednou hodnotu.
public function DevicesValue() 
vrátí pole všech laboratorních prvků s jejich vypočtenou hodnotou
public function Availability($device, $vertex) 
zjistí, zda-li může být zadaný laboratorní prvek, zařízením v logické topologii. Pokud ano, vrátí pole s určením, která rozhraní mohou být použita, na kterých linkách logické topologie. Pokud ne, vrátí číslo chyby - definováno ve třídě virtlabValues.
private function Mapping($map2, &$vysledek) 
rekurzivní funkce, která se snaží mapovat. Ve dvojrozměrné poli $map2 je uloženo, který vertex může být realizován jakými device. Případný vysledek mapovaní je uložen do proměnné $vysledek. (viz příklady) Pozn.: tato funkce je psána obecně, takže je ve druhém kroku je znovu použita na mapovaní LINKA-ROZHRANÍ. Podrobnější informace k algoritmu rekuzivní funkce jsou zde.
public function Map() 
funkce obstarávající celý algoritmus mapování.

Příklady

Výsledný výstup:

$mapper->Map();
r21:s0/0 r11:s0/0 
r21:s0/1 r10:s0/0 
r42:gi7 r21:fa3 
r41:gi7 r21:fa2 
r41:gi6 r11:gi1 
r42:gi6 r10:gi1 
r42:gi5 r11:gi0 
r41:gi5 r10:gi0 

Poznámka: podrobné výpisy z průběhu algoritmu, jsou zde.

Zdrojový kód

Aktuální verze se nachází zde

Osobní nástroje