Virtlab:Řídící server/Mapovací algoritmus
Z VirtlabWiki
(Rozdíly mezi verzemi)
Verze z 22:41, 15. 1. 2007 Vav166 (Diskuse | příspěvky) ← Předchozí porovnání |
Verze z 17:08, 22. 2. 2007 Vav166 (Diskuse | příspěvky) Následující porovnání → |
||
Řádka 1: | Řádka 1: | ||
- | Nástin postupu algoritmy: | + | Celkový postup mapovacího algoritmu: |
- | # srovnání typů zařízení ve vybavení a virtuální topologii => když je třeba mít v topologii typ zařízení, které nemáme, tak je celé mapování na nic :-) | + | # '''rychlé ověřění jednoduchých podmínek''', jestli má mapování šanci na úspěch |
- | # srovnání "speciálních" vlastností zařízení v topologii a vybavení | + | ## '''srovnání typů zařízení''' ve vybavení a virtuální topologii. Pokud je třeba mít v topologii typ zařízení, které nemáme mezi vybavením, tak není třeba s mapováním pokračovat - nepovede se. |
- | # srovnání "speciálních" vlastností jednotlivých linek a interfaců zařízení ve vybavení | + | ##* použijí se funkce <tt>[[Virtlab:ParserTopology.php.inc|virtlabParserTopology]]::getVertexesTypes()</tt> a <tt>[[Virtlab:ParserEquipment.php.inc|virtlabParserEquipment]]::getDevicesTypes()</tt>, jejiž výstupy se jednoduše porovnají pomocí funkce <tt>[http://www.php.net/array_diff array_diff]</tt> |
+ | ## '''srovnání ''speciálních'' vlastností zařízení''' v topologii a vybavení. Pokud v topologii požaduji po zařízení určitou speciální vlastnost, která se v celém vybavení vůbec nevyskytuje - mapování se nepovede. | ||
+ | ##* použijí se funkce <tt>[[Virtlab:ParserTopology.php.inc|virtlabParserTopology]]::getVertexesFeatures()</tt> a <tt>[[Virtlab:ParserEquipment.php.inc|virtlabParserEquipment]]::getDevicesFeatures()</tt>, jejiž výstupy se jednoduše porovnají pomocí funkce <tt>[http://www.php.net/array_diff array_diff]</tt> | ||
+ | ## '''srovnání ''speciálních'' vlastností jednotlivých linek''' a rozhraní zařízení ve vybavení. Pokud je v topologii po některé lince požadována speciální vlastnost, musí tuto vlastnost mít obě rozhraní, které tvoří konce této linky. Takže na každou vlastnost linky musí připadat alespoň dvě vlastnosti rozhraní. | ||
+ | ##* použije se funkce <tt>[[Virtlab:ParserTopology.php.inc|virtlabParserTopology]]::getEdgesFeatures()</tt>, jejíž výstupní seznam se zdvojí funkcí <tt>[[Virtlab:SupportFunctions.php.inc|DoubleArrayItems]]</tt>. Teto seznam se poravná funkcí <tt>[[Virtlab:SupportFunctions.php.inc|array_porovnej]]</tt> (kvůli duplicitním hodnotám nejde použít <tt>[http://www.php.net/array_diff array_diff]</tt>) s výstupem funkce <tt>[[Virtlab:ParserEquipment.php.inc|virtlabParserEquipment]]::getDevicesInterfacesFeatures()</tt>. array_diff] | ||
... | ... | ||
+ | |||
+ | [[Kategorie:Diplomová práce]] | ||
+ | [[Kategorie:Jan Vavříček]] |
Verze z 17:08, 22. 2. 2007
Celkový postup mapovacího algoritmu:
- rychlé ověřění jednoduchých podmínek, jestli má mapování šanci na úspěch
- srovnání typů zařízení ve vybavení a virtuální topologii. Pokud je třeba mít v topologii typ zařízení, které nemáme mezi vybavením, tak není třeba s mapováním pokračovat - nepovede se.
- použijí se funkce virtlabParserTopology::getVertexesTypes() a virtlabParserEquipment::getDevicesTypes(), jejiž výstupy se jednoduše porovnají pomocí funkce array_diff
- srovnání speciálních vlastností zařízení v topologii a vybavení. Pokud v topologii požaduji po zařízení určitou speciální vlastnost, která se v celém vybavení vůbec nevyskytuje - mapování se nepovede.
- použijí se funkce virtlabParserTopology::getVertexesFeatures() a virtlabParserEquipment::getDevicesFeatures(), jejiž výstupy se jednoduše porovnají pomocí funkce array_diff
- srovnání speciálních vlastností jednotlivých linek a rozhraní zařízení ve vybavení. Pokud je v topologii po některé lince požadována speciální vlastnost, musí tuto vlastnost mít obě rozhraní, které tvoří konce této linky. Takže na každou vlastnost linky musí připadat alespoň dvě vlastnosti rozhraní.
- použije se funkce virtlabParserTopology::getEdgesFeatures(), jejíž výstupní seznam se zdvojí funkcí DoubleArrayItems. Teto seznam se poravná funkcí array_porovnej (kvůli duplicitním hodnotám nejde použít array_diff) s výstupem funkce virtlabParserEquipment::getDevicesInterfacesFeatures(). array_diff]
- srovnání typů zařízení ve vybavení a virtuální topologii. Pokud je třeba mít v topologii typ zařízení, které nemáme mezi vybavením, tak není třeba s mapováním pokračovat - nepovede se.
...